PNDSD ROOT SET -SOURCE- 2040 15 JAN 81 22-2362 IP  02145-18002 2040 S C0122 #ANS PRIMARY SYS ANSWER FILE             H0101 S* * PRIMARY SYSTEM GENERATION ANSWER FILE * * * 02145-18002 REV 2040 800730 * LINK,CPAGE, OPTION CURRENT- PAGE * MSIZ,32 * REL,%EXEC * REL,%SAM * REL,%TIME * REL,%SCHED * REL,%STRNG * REL,%LOCK * REL,%ERLOG * REL,%OPMSG * REL,%XCMND * REL,%SYCOM * REL,%STAT * REL,%LOAD * REL,%ID.50 * REL,%RTIOL * REL,%CLASS * REL,%ID.00 * REL,%DD.00 * REL,%SWAP * REL,%ID.37 * REL,%DD.30 * REL,%DD.20 * * REL,%DD.12 * REL,%ID.43 * MS,$SYS.. * MS,$MXLB * MS,$MLIB2 * END * * CLAS,10 * RESN,10 * * * ASIC FOR 2621A/P SYSTEM CONSOLE WITH VCP * IFT,%ID.00,SC:20B * DVT,%DD.00,M2621,LU:1 * * ASIC FOR 2635A AUXILIARY CONSOLE/PRINTER * IFT,%ID.00,SC:21B DVT,%DD.00,M2635:0,LU:2 DVT,%DD.00,M2635:1,LU:7 * * ASIC FOR 2645A AUXILIARY CONSOLE WITH DUAL MINI-CARTRIDGE * IFT,%ID.00,SC:22B DVT,%DD.00,M2645,LU:3 DVT,%DD.20,M2645:1,LU:4 DVT,%DD.20,M2645:2,LU:5 * * HP-IB #1 * IFT,%ID.37,SC:27B * *HP-IB #1 DISC CONTROLLER * DVT,,,LU:9,TO:50,DT:77B,TX:0,DX:1,DP:1:36B,PR:0 * * * 8" FLEXIBLE DISC * DVT,%DD.30,M7902:0,LU:10,DP:1:2 DVT,%DD.30,M7902:1,LU:11,DP:1:2 * * 7906H HARD DISC * DVT,%DD.30,M7906:0,LU:12,DP:1:1 DVT,%DD.30,M7906:1,LU:13,DP:1:1 DVT,%DD.30,M7906:2,LU:14,DP:1:1 DVT,%DD.30,M7906:3,LU:15,DP:1:1 * * 7910H FIXED DISC * DVT,%DD.30,M7910:0,LU:16,DP:1:3 DVT,%DD.30,M7910:1,LU:17,DP:1:3 DVT,%DD.30,M7910:2,LU:18,DP:1:3 DVT,%DD.30,M7910:3,LU:19,DP:1:3 * * HP-IB LINE PRINTER * DVT,%DD.12,,LU:6,DT:12B,DP:1:6 * * * PARALLEL INTERFACE CARD * IFT,%ID.50,SC:24B DVT,,,LU:20,TO:5000,DX:2,DP:1:0:2,DT:45B * * * HP-IB #2: INSTRUMENT BUS * IFT,%ID.37,SC:25B * * HP-IB #2 CONTROLLER * DVT,,,LU:21,TO:50,DT:77B,DX:1,DP:1:36B * * EIGHT DEVICES * DVT,,,LU:22,TO:500,DT:77B,DX:1,DP:1:1 DVT,,,LU:23,TO:500,DT:77B,DX:1,DP:1:2 DVT,,,LU:24,TO:500,DT:77B,DX:1,DP:1:3 DVT,,,LU:25,TO:500,DT:77B,DX:1,DP:1:4    DVT,,,LU:26,TO:500,DT:77B,DX:1,DP:1:5 DVT,,,LU:27,TO:500,DT:77B,DX:1,DP:1:6 DVT,,,LU:28,TO:500,DT:77B,DX:1,DP:1:7 DVT,,,LU:29,TO:500,DT:77B,DX:1,DP:1:8 * * * END * END * NODE,3,4,5 * NODE,2,7 * NODE,10,11 * NODE,12,13,14,15 * NODE,16,17,18,19 * END * * END * ID,10 * SA,1200 * CD,10 * MC,0 * SS,0 * RE,%D.RTR * * * BASIC TRAP LIBRARY. USED FOR HPIB INTERRUPT PROCESSING * RE,$ABLIB * MS,$MXLB MS,$SYSLB MS,$MLIB2 * * END * END * COM,30 * LIB,$MLIB1 LIB,$FMP LIB,$SYSLB LIB,$MLIB2 LIB,$MXLB LIB,$CLIBL END * END * STARTUP,SW,FM,WE * REL,%START * END t   02145-18003 2040 S C0122 #FORMT FORMAT SYS ANSWER FILE             H0101 6$* * PRIMARY SYSTEM GENERATION ANSWER FILE * * * 02145-18003 REV 2040 800730 * LINK,CPAGE, OPTION CURRENT- PAGE * MSIZ,32 * REL,%EXEC * REL,%SAM * REL,%TIME * REL,%SCHED * REL,%STRNG * REL,%LOCK * REL,%ERLOG * REL,%OPMSG * REL,%XCMND * REL,%SYCOM * REL,%STAT * REL,%LOAD * REL,%ID.50 * REL,%RTIOL * REL,%CLASS * REL,%ID.00 * REL,%DD.00 * REL,%SWAP * REL,%ID.37 * REL,%DD.30 * REL,%DD.20 * * REL,%DD.12 * REL,%ID.43 * MS,$SYS.. * MS,$MXLB * MS,$MLIB2 * END * * CLAS,10 * RESN,10 * * * ASIC FOR 2621A/P SYSTEM CONSOLE WITH VCP * IFT,%ID.00,SC:20B * DVT,%DD.00,M2621,LU:1 * * ASIC FOR 2635A AUXILIARY CONSOLE/PRINTER * IFT,%ID.00,SC:21B DVT,%DD.00,M2635:0,LU:2 DVT,%DD.00,M2635:1,LU:7 * * ASIC FOR 2645A AUXILIARY CONSOLE WITH DUAL MINI-CARTRIDGE * IFT,%ID.00,SC:22B DVT,%DD.00,M2645,LU:3 DVT,%DD.20,M2645:1,LU:4 DVT,%DD.20,M2645:2,LU:5 * * HP-IB #1 * IFT,%ID.37,SC:27B * *HP-IB #1 DISC CONTROLLER * DVT,,,LU:9,TO:50,DT:77B,TX:0,DX:1,DP:1:36B,PR:0 * * * 8" FLEXIBLE DISC * DVT,%DD.30,M7902:0,LU:10,DP:1:2 DVT,%DD.30,M7902:1,LU:11,DP:1:2 * * 7906H HARD DISC * DVT,%DD.30,M7906:0,LU:12,DP:1:1 DVT,%DD.30,M7906:1,LU:13,DP:1:1 DVT,%DD.30,M7906:2,LU:14,DP:1:1 DVT,%DD.30,M7906:3,LU:15,DP:1:1 * * 7910H FIXED DISC * DVT,%DD.30,M7910:0,LU:16,DP:1:3 DVT,%DD.30,M7910:1,LU:17,DP:1:3 DVT,%DD.30,M7910:2,LU:18,DP:1:3 DVT,%DD.30,M7910:3,LU:19,DP:1:3 * * HP-IB LINE PRINTER * DVT,%DD.12,,LU:6,DT:12B,DP:1:6 * * * PARALLEL INTERFACE CARD * IFT,%ID.50,SC:24B DVT,,,LU:20,TO:5000,DX:2,DP:1:0:2,DT:45B * * * HP-IB #2: INSTRUMENT BUS * IFT,%ID.37,SC:25B * * HP-IB #2 CONTROLLER * DVT,,,LU:21,TO:50,DT:77B,DX:1,DP:1:36B * * EIGHT DEVICES * DVT,,,LU:22,TO:500,DT:77B,DX:1,DP:1:1 DVT,,,LU:23,TO:500,DT:77B,DX:1,DP:1:2 DVT,,,LU:24,TO:500,DT:77B,DX:1,DP:1:3 DVT,,,LU:25,TO:500,DT:77B,DX:1,DP:1:4    DVT,,,LU:26,TO:500,DT:77B,DX:1,DP:1:5 DVT,,,LU:27,TO:500,DT:77B,DX:1,DP:1:6 DVT,,,LU:28,TO:500,DT:77B,DX:1,DP:1:7 DVT,,,LU:29,TO:500,DT:77B,DX:1,DP:1:8 * * * * END * END * NODE,3,4,5 * NODE,2,7 * NODE,10,11 * NODE,12,13,14,15 * NODE,16,17,18,19 * END * * END * ID,1 * SA,1200 * CD,10 * MC,0 * SS,0 * RE,%D.RTR * RE,$ABLIB * MS,$MXLB MS,$SYSLB MS,$MLIB2 * * END * END * COM,30 * LIB,$MLIB1 LIB,$FMP LIB,$SYSLB LIB,$MLIB2 LIB,$MXLB LIB,$CLIBL END * END * STARTUP * REL,%FORMT SE,$DKLIB * * END    02145-18004 2013 S 0122 WELCOM WELCOM FILE             H0101 f<:SV,1,,IH :* :* SYSTEM WELCOM FILE :* 02145-18004 REV 2013 :* :RP,COMND :RP,AUTOR :PR,COMND,35 :TR,*SYSLU :DU,"MESS,0G :SV,1000 ::   02145-18005 2013 S 0122 *SYSLU TRANSFER FILE             H0101 _:* :* TRANSFER FILE *SYSLU :* 02145-18005 REV 2013 :* :DN,2 :DN,3 :DN,4 :DN,5 :DN,6 :DN,7 :DN,11 :DN,12 :DN,13 :DN,14 :DN,15 :DN,20 :DN,21 :DN,22 :DN,23 :DN,24 :DN,25 :DN,26 :DN,27 :DN,28 :DN,29 6_  02145-18006 2013 S 0122 "MESS MESSAGE FILE             H0101 H- H H HHHHHH H HHHHHH HHHHHH HHHHHH H H H H H H H H H H H HHHHHH HHHHHH H H H H H H H H H H H H H H H H H H H H H HHHHHH HHHHHH HHHHHH H HHHHHH HHHHHH HHHHHH H HHHHHH HHHHHH H H H H H H H H H HH HHHHHH HHHHHH HHHHHH H HHHHHH HHHHHH H H H H H H H H HHHHHH HHHHHH HHHHHH H H H HHHHHH HHHHHH **************************************************************** * * * TYPE THE FOLLOWING COMMAND FOR A DESCRIPTION OF THIS SYSTEM: * * * * DU,"HELP,1 * * * ****************************************************************   02145-18007 2040 S C0122 "HELP              H0101 sQ HELP FILE 02145-18007 REV 2040 THIS PRIMARY SYSTEM IS A PRECONFIGURED RTE-L OPERATING SYSTEM THAT INCLUDES POWER FAIL/AUTO RESTART AND THE FOLLOWING PROGRAMS: 1) FMGR 7) LOADR 2) EDITR 8) RTLGN 3) MERGE 9) FORMT 4) ASMB 10) INSTL 5) XREF 11) AB2MI 6) FTN4 12) MI2AB IF BASIC/1000L WAS ORDERED WITH THE SYSTEM, IT IS ALSO CONFIGURED INTO THE PRIMARY SYSTEM. REFER TO THE APPROPRIATE MANUAL FOR INFORMATION PERTAINING TO THE USE OF THESE PROGRAMS. A GOOD PLACE TO BEGIN IS THE RTE-L GETTING STARTED MANUAL: 92070-90001. THIS PRIMARY SYSTEM ALSO INCLUDES A SYSTEM VERIFICATION PROGRAM CALLED FTEST WHICH ATTEMPTS TO TEST ALL CONFIGURED DEVICES. IT PRINTS A LISTING OF THE TEST RESULTS ON THE TERMINAL. THIS SYSTEM VERIFICATION PROGRAM CAN BE RUN BY TYPING THE FOLLOWING COMMAND: RU,FTEST. ADDITIONALLY, THIS PRIMARY INCLUDES THE FORMAT UTILITY FORMT CONFIGURED AS A SPECIAL SYSTEM. FOR EXECUTION, YOU WILL HAVE TO BOOT-UP FORMT. IT WILL NOT EXECUTE UNDER FMGR. REFER TO THE RTE-L UTILITIES MANUAL (92070-90004) FOR OPERATING DETAILS OF 'FORMT'.   02145-18008 2013 S 0122 *PUBAS PURGES BASIC             H0101 ):* :* TRANSFER FILE *PUBAS :* 02145-18008 REV 2013 800422 :* :* TO RUN THIS TRANSFER FILE :*PUBAS,1G,2G,3G,4G,5G WHERE: :* :* 1G= NOT USED :* :* 2G= CRN/-LU OF OUTPUT OR FINAL PRIMARY FLEXIBLE DISC :* :* 3G= FILE SECURITY CODE IF WANTED :* :* 4G= NOT USED :* :* 5G= NOT USED :* :SV,0 :PU,BASIC:3G:2G :PU,BATBL:3G:2G :PU,$BSLBL:3G:2G :PU,BTBL :3G:2G :PU,MTBL :3G:2G :PU,BSA00:3G:2G :PU,BSA01:3G:2G :PU,BSA02:3G:2G :PU,BSA03:3G:2G :PU,BSA04:3G:2G :PU,BSA05:3G:2G :PU,SRV.L:3G:2G :PK,2G ::   02145-18009 2001 S 0122 &FTEST FTEST SOURCE             H0101 ojFTN4,L,Q C C DATE: SEPTEMBER 10,1979 C NAME: FTEST C SOURCE: 02145-18009 C RELOC: 02145-16009 C PGMR: D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT C THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY C******************************************************************** C C PROGRAM FTEST(3,89), 02145-16009 REV.2001 800304 C THIS IS A FUNCTIONAL TEST OF THE L-SERIES COMPUTER SYSTEM. IT TESTS C THE STATUS OF THE PERIPHERALS ON THE SYSTEM AND INDICATES WHICH C DEVICES ARE OPERATIONAL. IMPLICIT INTEGER(A-Z) C VARIABLE MEANINGS: C ESCSQ IS A BUFFER TO HOLD ESCAPE SEQUENCES TO SEND TO THE TERMINALS C PTYPE IS AN ARRAY WHICH HOLDS THE TYPE OF DEVICE FOR EACH LU # C STRES IS A BUFFER TO HOLD SELF TEST RESULTS C VALUS HOLDS THE ALL THE INFORMATION NECESSARY FOR THE OUTPUT FORMATTING C ROUTINE (FTSMT) TO PRINT THE RESULTS TO THE LOG DEVICE C INTEGER ESCSQ(2) INTEGER PTYPE(64) INTEGER ITYPE(64) INTEGER STRES(20) INTEGER LUARY(1) INTEGER TUFT(20) INTEGER FTC(20) INTEGER PUFT(20) INTEGER IDCB(144) INTEGER STARS(12) INTEGER BR(40) INTEGER NAME(6) INTEGER VALUS(64,8) LOGICAL IFTTY LOGICAL IFBRK DATA TUFT/2H T,2HHI,2HS ,2HTE,2HRM,2HIN,2HAL,2H U,2HND,2HER, 12H F,2HUN,2HCT,2HIO,2HNA,2HL ,2HTE,2HST/ DATA FTC/2H F,2HUN,2HCT,2HIO,2HNA,2HL ,2HTE,2HST,2H C,2HOM, 12HPL,2HET,2HE ,2H P,2HAS,2HS ,2H# / DATA PUFT/2H T,2HHI,2HS ,2HPR,2HIN,2HTE,2HR ,2HUN,2HDE,2HR , 12HFU,2HNC,2HTI,2HON,2HAL,2H T,2HES,2HT / C RETRIEVE RUN PARAMETERS NEXT=1 OPTION=1 CALL EXEC(14,1,STRES,-40) CALL ABREG(A,B) CALL NAMR(NAME,STRES,B,NEXT) CALL NAMR(NAME,STRES,B,NJEXT) CALL NAMR(NAME,STRES,B,NEXT) IF((NAME(4).AND.3B).EQ.0) NAME(1)=LOGLU(NAME(1)) 2 CALL OPENF(IDCB,IERR,NAME,OPTION,NAME(5),NAME(6)) IF(IERR.EQ.-32) 5,10 5 NAME(1)=LOGLU(NAME(1)) NAME(4)=1 CALL REIO(2,NAME(1),32H OUTFILE CARTRIDGE NOT MOUNTED,-32) GOTO 2 C 10 IF(IERR.EQ.-6) 15,20 15 CALL CREAT(IDCB,IERR,NAME,8,4,NAME(5),NAME(6)) IF(IERR.LT.0) 20,2 C 20 IF(IERR.LT.0) 25,30 25 NAME(1)=LOGLU(NAME(1)) NAME(4)=1 GOTO 2 C 30 IF ((NAME(4).AND.3B).NE.3B) GOTO 35 CALL POSNT(IDCB,IERR,30000,1,1) 35 CALL NAMR(NAME,STRES,B,NEXT) INDEV=NAME(1) IF((INDEV.LT.0).OR.(INDEV.GT.63)) INDEV=0 IF(.NOT.(IFTTY(INDEV))) INDEV=0 CALL NAMR(NAME,STRES,B,NEXT) LOOPS=NAME(1) IF((LOOPS.LE.0).OR.(NAME(4).NE.1)) LOOPS=1 CALL NAMR(NAME,STRES,B,NEXT) LEVEL=NAME(1) IF(LEVEL.NE.2) LEVEL=1 ONCE=2 CALL NAMR(NAME,STRES,B,NEXT) TESLU=NAME(1) IF((TESLU.LE.0).OR.(TESLU.GT.63)) ONCE=1 C LOOP NUMBER OF TIMES SPECIFIED IN RUN PARAMATER. DEFAULT IS ONE DO 4000 TIMES=1,LOOPS C INITIALIZE ARRAYS DO 51 I=1,64 PTYPE(I)=999 VALUS(I,2)=-2 51 CONTINUE LOCK=140001B DOWN=-98 VDOWN=4 BUSY=-99 VBUSY=6 UNASG=-100 VPASD=3 VFAIL=5 VIFAL=7 VALUS(64,1)=TIMES VALUS(64,2)=LOOPS C C CHECK TIME BASE GENERATOR. IF IT IS NOT WORKING, ABORT PROGRAM CALL EXEC(11,STRES) TEMP=STRES(1) DO 55 M=1,3000 CALL EXEC(11,STRES) IF(STRES(1).EQ.TEMP) 55,56 55 CONTINUE CALL WRITF(IDCB,IERR,STARS,12,0) CALL WRITF(IDCB,IERR,36H NO TIME BASE GENERATOR ,18,0) CALL WRITF(IDCB,IERR,36H FUNCTIONAL TEST ABORTED ,18,0) CALL WRITF(IDCB,IERR,STARS,12,0) GOTO 5000 C IF ONLY ONE LU BEING TESTED KLUGE AROUND THE LOOP TO TEST ONLY ONCE 56 IF (ONCE.NE.2) GOTO 58 DO 57 I=1,63 VALUS(I,2)=-2 57 PTYPE(I)=20B PTYPE(TESLU)=999 LUNO=TESLU GOTO 59 C FOR EACH LU # CALL FOR STATUS TO DETERMINE TYPE. IDENTIFY DEVICE C AND INITIATE APPROPRIATE SELF TEST 58 DO 1000 LUNO=1,63 C CHECK IF LU IS UNASSIGNED. IF SO, FLAG IT AND GO ON TO THE NEXT LU # 59 TEMP=IFBIT(LUNO) IF(TEMP.NE.-1) GOTO 60 PTYPE(LUNO)=UNASG VALUS(LUNO,1)=UNASG VALUS(LUNO,2)=UNASG GOTO 990 C CALL FOR STATUS/TYPE 60 CALL EXEC(13+100000B,LUNO,STAT1,STAT2,STAT3,STAT4) GOTO 990 C C MASK AND SHIFT STATUS TO GET DRIVER NUMBER 65 STAT=STAT1 70 STAT1=(STAT1.AND.037400B)/256 ITYPE(LUNO)=(STAT2.AND.037400B)/256 VALUS(LUNO,1)=STAT1 VALUS(LUNO,2)=0 VALUS(LUNO,8)=ITYPE(LUNO) C C IF DEVICE IS HP-IB BUS LU, MARK IT NOW C IF((ITYPE(LUNO).EQ.37B).AND.(STAT3.EQ.36B)) VALUS(LUNO,1)=11B C SKIP LU IF DEVICE HAS ALREADY BEEN TESTED UNDER DIFFERENT LU # C IE SEVERAL DISC LU #'S ON ONE 7910 DRIVE IF(PTYPE(LUNO).LT.0) GOTO 990 PTYPE(LUNO)=0 C CHECK IF DEVICE IS DOWN, IF SO FLAG IT AND GO TO NEXT DEVICE IF((STAT.AND.40000B).NE.40000B) GOTO 80 PTYPE(LUNO)=DOWN VALUS(LUNO,2)=VDOWN GOTO 990 C CHECK IF DEVICE IS BUSY, IF SO FLAG IT AND GO TO NEXT DEVICE 80 IF((STAT.AND.100000B).NE.100000B) GOTO 82 PTYPE(LUNO)=BUSY VALUS(LUNO,2)=VBUSY GOTO 990 C LOCK LU TO PREVENT INTERFERENCE FROM OTHER PROGRAMS. LU'S WILL BE RELEASED C AT TERMINATION OF PROGRAM 82 LUARY(1)=LUNO IF(IFTTY(LUNO)) GOTO 85 IF(LEVEL.NE.2) GOTO 85 CALL LURQ(LOCK,LUARY,1) GOTO 990 84 CALL ABREG(A,B) IF(A.EQ.0) GOTO 85 C IF A.NE.0=>LU NOT LOCKED, SOMEONE ELSE ALREADY HAS IT LOCKED FLAG BUSY PTYPE(LUNO)=BUSY VALUS(LUNO,1)=VBUSY GOTO 990 C RESET TIME OUT SO REQUESTS DON'T GO INTO INDEFINITE SUSPENSION, RESTORE C THE TIME OUT AT LINE #1000 85 CALL ILUTA(ADDR) LUADR=ADDR+LUNO-1 LULOC=IGET(LUADR) TOADR=LULOC+12 TMOUT=IGET(TOADR) CALL IPUT(TOADR,-76) PTYPE(LUNO)=STAT1 C C LEVEL 2 IS SELF TEST LEVEL, IF NOT LEVEL 2 BYPASS THE SELF TESTS IF(LEVEL.NE.2) GOTO 984 C DETERMINE DRIVER TYPE AND INITIATE APPROPRIATE SELF TEST C STAT1 EQUAL TO 5B => LU IS AN INTERACTIVE TERMINAL IF ((STAT1.NE.5B).AND.(STAT1.NE.0B)) GOTO 110 ESCSQ(1)=15572B ESCSQ(2)=10400B CALL REIO(100002B,122000B+LUNO,ESCSQ,-3) GOTO 990 101 GOTO 980 C STAT1 EQUAL TO 12B => LU IS A PRINTER 110 IF(STAT1.NE.12B) GOTO 210 ESCSQ(1)=33B ESCSQ(2)=75021B CALL REIO(100002B,122000B+LUNO,ESCSQ,-4) GOTO 990 201 GOTO 980 C STAT1 EQUAL TO 20B=> LU IS A TAPE DRIVE ON A TERMINAL BYPASS IT AND C TEST THE TERMINAL, BUT FLAG THE TAPE DRIVE TO BE TESTED LATER IF C OPERATOR HAS A SCRATCH TAPE 210 IF(STAT1.NE.20B) GOTO 300 VALUS(LUNO,2)=0 GOTO 984 C STAT1 EQUAL TO 30B => LU IS A FLOPPY DISC 300 IF(STAT1.NE.30B) GOTO 310 CALL EXEC( 2+100000B,120100B+LUNO,0B,-2,177B,0) GOTO 990 301 GOTO 980 C STAT1.EQ.31B=> LU IS A HARD DISC (7910) C STAT1.EQ.32B=> LU IS A HARD DISC (7906) 310 IF((STAT1.NE.32B).AND.(STAT1.NE.31B)) GOTO 980 CALL EXEC(2+100000B,120100B+LUNO,0,-1,177B,0) GOTO 990 315 CALL EXEC(2+100000B,120100B+LUNO,0,0,0,0) GOTO 990 320 GOTO 980 980 CONTINUE C CHECK FOR OTHER LU'S ON THE SAME DEVICE AND SET THEIR PTYPE C TO ZERO SO AS NOT TO DUPLICATE SELF TEST ON ONE DEVICE CALL ILUTA(ADDR) ADDR=ADDR.AND.77777B ADDR=IGET(ADDR+LUNO-1) ADDR=ADDR.AND.77777B ADDR=ADDR+2 C ADDR NOW CONTAINS THE ADDRESS OF THE NODE LIST ENTRY FOR LUNO ADCHK=IGET(ADDR) ADCHK=ADCHK.AND.77777B COUNT=1 FLAG=0 981 IF(ADDR.EQ.ADCHK) GOTO 984 COUNT=COUNT+1 IF(COUNT.GE.32) GOTO 984 IF(FLAG.EQ.1) GOTO 984 FLAG=1 C CYCLE THROUGH THE LU #S LOOKING FOR THE LU WITH THE NODE ADDRESS C "ADCHK", SET IT'S PTYPE TO NEGATIVE OF LUNO DO 983 LUCHK=1,32 IF(FLAG.EQ.0) GOTO 983 CALL ILUTA(ADTEM) ADTEM=ADTEM.AND.77777B ADTEM=IGET(ADTEM+LUCHK-1) ADTEM=ADTEM.AND.77777B ADTEM=ADTEM+2 IF(ADTEM.EQ.ADCHK) 982,983 C SET FLAG TO STOP LOOKING FOR MATCH, IF THIS IS NOT LUNO, FLAG IT (NEG) C IF IT IS LUNO LEAVE IT ALONE 982 FLAG=0 IF(ADCHK.EQ.ADDR) GOTO 983 ADCHK=IGET(ADTEM) ADCHK=ADCHK.AND.77777B PTYPE(LUCHK)=0-LUNO IF(IFTTY(LUCHK)) GOTO 983 LUARY(1)=LUCHK CALL LURQ(LOCK,LUARY,1) GOTO 983 8888 CONTINUE 983 CONTINUE C MATCH THE NEW ADDRESS NOW JUMP TO 984 WHEN THE CYCLE IS COMPLETE GOTO 981 984 CONTINUE 990 CONTINUE C RESTORE TIME OUT FOR LUNO CALL IPUT(TOADR,TMOUT) IF (ONCE.EQ.2) GOTO 1001 1000 CONTINUE C C******************************************************* C ALL DEVICES NOW SELF TESTING C SUSPEND FOR 10 SECONDS THEN CHECK SELF TEST RESULTS C PROGRAM SUSPENDED ONLY FOR LEVEL 2 C******************************************************* C 1001 IF(LEVEL.NE.2) GOTO 1020 CALL EXEC(12+100000B,0,2,0,-10) GOTO 2000 C CYCLE THROUGH THE LU'S NOW PICKING UP AND REPORTING RESULTS 1020 DO 2000 LUNO=1,63 CALL EXEC(100000B+13,LUNO,TEMP1,TEMP2) GOTO 2000 C IF DEVICE IS BUSY, WRITE BUSY MESSAGE AND GOTO NEXT DEVICE 1022 IF(PTYPE(LUNO).NE.BUSY) GOTO 1033 VALUS(LUNO,2)=VBUSY GOTO 1995 C IF DEVICE IS DOWN, WRITE DOWN MESSAGE AND GOTO NEXT DEVICE 1033 IF(PTYPE(LUNO).NE.DOWN) GOTO 1035 VALUS(LUNO,2)=VDOWN GOTO 1995 C C IF DEVICE IS UNASSIGNED, WRITE UNASG MESSAGE AND GOTO NEXT 1035 IF(PTYPE(LUNO).NE.UNASG) GOTO 1040 GOTO 1995 C 1040 IF(PTYPE(LUNO).LT.0) GOTO 2000 IF(LUNO.NE.OTDEV) GOTO 1050 CALL EXEC(12+100000B,0,2,0,-2) GOTO 1990 1050 DO 1080 I=1,5 1080 STRES(I)=177777B C STORE THE TIME-OUT FOR LUNO AND REPLACE IT WITH .5 SECONDS. IF THE C DEVICE IS NOT THERE OR HAS A HAREWARE PROBLEM IT WILL TIME OUT C QUICKLY. RESTORE THE TIME-OUT AFTER CHECKING SELF TEST RESULTS CALL ILUTA(ADDR) LUADR=ADDR+LUNO-1 LULOC=IGET(LUADR) TOADR=LULOC+12 TMOUT=IGET(TOADR) CALL IPUT(TOADR,-76) C PTYPE=5=>2645I75 TERMINAL 0=>2621 TERMINAL IF((PTYPE(LUNO).NE.5).AND.(PTYPE(LUNO).NE.0)) GOTO 1206 ESCSQ(1)=15536B ESCSQ(2)=10400B IF(LEVEL.EQ.1) 1150,1190 1150 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1204 1151 CALL REIO(100002B,20000B+LUNO,TUFT,-36) GOTO 1204 1155 CALL CNUMD(TIMES,FTC(18)) 1160 CALL REIO(100002B,20000B+LUNO,FTC,-40) GOTO 1204 1165 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1204 1170 CALL EXEC(12,0,2,0,-1) C CALL FOR TEST RESULTS 1190 CALL EXEC(100002B,120100B+LUNO,ESCSQ,-2,0) GOTO 1990 1191 CALL EXEC(100001B,120000B+LUNO,STRES,-10,0,ESCSQ(2)) GOTO 1990 1192 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1990 C CHECK TO SEE THAT FIRST WORD IS "CR/", REMAINING BYTES BEGIN WITH "0011" 1201 IF(STRES(1).NE.15534B) GOTO 1204 DO 1202 I=2,4 IF((STRES(I).AND.170360B).NE.30060B) GOTO 1204 1202 CONTINUE IF((STRES(5).AND.170000B).NE.30000B) GOTO 1204 C SELF TEST RESULT IS BIT 1 OF WORD 4 AND SHOULD BE SET IF(((STRES(4).AND.13B).NE.2B).AND.(LEVEL.EQ.2)) GOTO 1204 VALUS(LUNO,2)=VPASD GOTO 1995 C 1204 VALUS(LUNO,2)=VFAIL 1203 GOTO 1600 C C PTYPE.EQ.12=>PRINTER ITYPE.EQ.00=>ASIC INTERFACE 1206 IF((PTYPE(LUNO).NE.12B).OR.(ITYPE(LUNO).NE.0B)) GOTO 1210 ESCSQ(1)=33B ESCSQ(2)=57021B IF(LEVEL.EQ.1) 1207,1208 1207 CCALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1240 8000 CALL REIO(100002B,20000B+LUNO,PUFT,-36) GOTO 1240 8001 CALL REIO(100002B,20000B+LUNO,FTC,-26) GOTO 1240 8002 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1240 C CALL FOR TEST RESULTS 1208 CALL EXEC(100001B,32000B+LUNO,STRES,-10,ESCSQ,-4) GOTO 1990 C JUMP TO PRINTER VERIFY IN HP-IB PRINTER TEST SECTION 8003 GOTO 1216 C C PTYPE.EQ.12=>PRINTER ITYPE.EQ.37=>HP-IB INTERFACE C SAME EVENTS AS FOR TERMINAL, SAME RESULTS RETURNED 1210 IF((PTYPE(LUNO).NE.12B).OR.(ITYPE(LUNO).NE.37B)) GOTO 1260 IF(LEVEL.EQ.1) 1211,1214 1211 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1240 8004 CALL REIO(100002B,20000B+LUNO,PUFT,-36) GOTO 1240 8005 CALL REIO(100002B,20000B+LUNO,FTC,-26) GOTO 1240 8006 CALL REIO(100002B,20000B+LUNO,2H ,-2) GOTO 1240 8007 CALL EXEC(12+100000B,0,2,0,-1) GOTO 1990 1214 CALL EXEC(100002B,122000B+LUNO,3000B,-1,142B) GOTO 1990 1215 CALL EXEC(100001B,122000B+LUNO,STRES,-10,140B) GOTO 1990 1216 DO 1220 I=2,4 IF((STRES(I).AND.170360B).NE.30060B) GOTO 1240 1220 CONTINUE IF(STRES(5).NE.6400B) GOTO 1240 IF(((STRES(4).AND.2B).NE.2B).AND.(LEVEL.EQ.2)) GOTO 1204 VALUS(LUNO,2)=VPASD DO 1230 LUTEM=1,32 IF(PTYPE(LUTEM).NE.(0-LUNO)) GOTO 1230 VALUS(LUTEM,2)=VPASD VALUS(LUTEM,1)=VALUS(LUNO,1) LUARY(1)=LUTEM CALL LURQ(40000B,LUARY,1) GOTO 1230 8889 CONTINUE 1230 CONTINUE GOTO 1995 C 1240 VALUS(LUNO,2)=VFAIL 1250 GOTO 1600 C 1260 IF(PTYPE(LUNO).EQ.20B) GOTO 2000 C C PTYPE.EQ.30=>FLOPPY DISC 1310 IF(PTYPE(LUNO).NE.30B) GOTO 1410 IF(LEVEL.EQ.1)1311,1312 1311 CALL TXDSC(LUNO,ERR,VALUS) GOTO 1995 C 1316 GOTO 1313 C CALL FOR SELF TEST RESULTS, THEN CLEAR DEVICE 1312 CALL EXEC(100001B,120100B+LUNO,STRES,-2,177B,0) GOTO 1316 C CHECK FOR TWO BYTES SENT, BOTH 0 1313 CALL ABREG(A,B) 1315 CALL EXEC(100001B,120000B+LUNO,TEMP,-1,160B,0) GOTO 1990 1320 IF(B.NE.2) GOTO 1340 IF(STRES(1).NE.0) GOTO 1340 VALUS(LUNO,2)=VPASD DO 1330 LUTEM=1,32 IF(PTYPE(LUTEM).NE.(0-LUNO)) GOTO 1330 VALUS(LUTEM,2)=VPASD VALUS(LUTEM,1)=VALUS(LUNO,1) LUARY(1)=LUTEM CALL LURQ(40000B,LUARY,1) GOTO 1330 8890 CONTINUE 1330 CONTINUE GOTO 1995 C 1340 VALUS(LUNO,2)=VFAIL DO 1347 LUTEM=1,32 IF(PTYPE(LUTEM).NE.(0-LUNO)) GOTO 1347 VALUS(LUTEM,2)=VFAIL VALUS(LUTEM,1)=VALUS(LUNO,1) LUARY(1)=LUTEM CALL LURQ(40000B,LUARY,1) GOTO 1347 8891 CONTINUE 1347 CONTINUE 1350 GOTO 1995 C C PTYPE.EQ.31B=> LU IS A HARD DISC (7910) C PTYPE.EQ.32B=> LU IS A HARD DISC (7906) 1410 IF((PTYPE(LUNO).NE.32B).AND.(PTYPE(LUNO).NE.31B)) GOTO 1500 IF(LEVEL.EQ.1)1411,1415 1411 CALL TXDSC(LUNO,ERR,VALUS) GOTO 1995 C C READ SELF TEST RESULTS 1415 CALL EXEC(100001B,120100B+LUNO,STRES,-1,177B,0) GOTO 1990 C CHECK TRANSMISSION LOG, B REGISTER SHOULD BE 1 1420 CALL ABREG(A,B) IF(B.NE.1) GOTO 1440 C CHECK RETURNED RESULTS, SHOULD BE 0 IF SELF TEST PASSED IF(STRES(1).NE.0) GOTO 1440 VALUS(LUNO,2)=VPASD DO 1430 LUTEM=1,32 IF(PTYPE(LUTEM).NE.(0-LUNO)) GOTO 1430 VALUS(LUTEM,2)=VPASD VALUS(LUTEM,1)=VALUS(LUNO,1) LUARY(1)=LUTEM CALL LURQ(40000B,LUARY,1) GOTO 1430 8892 CONTINUE 1430 CONTINUE GOTO 1995 C 1440 VALUS(LUNO,2)=VFAIL DO 1447 LUTEM=1,32 IF(PTYPE(LUTEM).NE.(0-LUNO)) GOTO 1447 VALUS(LUTEM,2)=VFAIL VALUS(LUTEM,1)=VALUS(LUNO,1). LUARY(1)=LUTEM CALL LURQ(40000B,LUARY,1) GOTO 1447 8893 CONTINUE 1447 CONTINUE 1450 GOTO 1995 C C IF ITYPE IS 37, CALL STATUS, CHECK IF STAT3.EQ.36=>LU IS HP-IB BUS LU 1500 IF(ITYPE(LUNO).NE.37B) GOTO 1580 CALL EXEC(100000B+13,LUNO,STAT1,STAT2,STAT3,STAT4) GOTO 1990 1505 IF((STAT3.AND.37B).NE.36B) GOTO 1580 VALUS(LUNO,1)=11B C LU IS THE HP-IB BUS. CHECK THAT IT HAS A NON-ZERO STATUS CALL ILUTA(ADDR) ADDR=IGET(ADDR+LUNO-1) CALL EXEC(100003B,120600B+LUNO) GOTO 1990 1510 STATS=IGET(ADDR+17) IF(STATS.EQ.0) GOTO 1560 VALUS(LUNO,2)=VPASD GOTO 1995 C 1560 VALUS(LUNO,2)=VFAIL GOTO 1995 C AT THIS POINT THE DEVICE IS UNDEFINED, THEREFORE UNTESTED 1580 CONTINUE C C TEST INTERFACE CARD IF LU IS AN ASIC DEVICE OR A GPIO DEVICE 1600 IF(ITYPE(LUNO).EQ.37B) GOTO 1995 IF(ITYPE(LUNO).EQ.50B) 1700,1800 C C GPIO TEST SECTION 1700 CALL ILUTA(ADDR) ADDR=IGET(ADDR+LUNO-1) CALL EXEC(100003B,120600B+LUNO) GOTO 1990 1710 RSLT1=IGET(ADDR+17) C RSLT1 SHOULD BE NON-ZERO. A ZERO STATUS IMPLIES THERE IS NO CARD IN C THE CARD CAGE. NO DEVICE IS NECESSARY TO PERFORM THIS TEST IF (RSLT1 .EQ. 0B) 1720,1730 1720 VALUS(LUNO,2)=VIFAL GOTO 1995 C 1730 VALUS(LUNO,2)=VFAIL GOTO 1995 C C ASIC TEST SECTION 1800 CALL ILUTA(ADDR) ADDR=IGET(ADDR+LUNO-1) STATS=IGET(ADDR+17) IF((STATS.AND.177774B).EQ.0B) GOTO 1890 VALUS(LUNO,2)=VFAIL GOTO 1995 C 1890 VALUS(LUNO,2)=VIFAL GOTO 1995 C 1985 GOTO 2000 1990 CONTINUE C 1995 LUARY(1)=LUNO CALL LURQ(40000B,LUARY,1) GOTO 1985 2000 CALL IPUT(TOADR,TMOUT) C C CALL TAPE TEST IF OPERATOR WANTS TO. 3000 IF(INDEV.EQ.0) GOTO 3900 CALL STV (BR ,1,36H INITIATE TAPE TEST? REQUIRES SC ,1,18) CALL STV(BR,19,38HRATCH TAPE WHICH WILL ~i<:6BE WRITTEN OVE,1,19) CALL STV (BR ,38,8HR (Y/N) ,1,4) CALL REIO(100002B,INDEV+20000B,BR,-52) GOTO 3900 3005 CALL REIO(100002B,INDEV+20000B,BR(27),-30) GOTO 3900 3010 CALL REIO(100001B,INDEV+400B,STRES,-4) GOTO 3900 3011 STRES(1)=STRES(1).AND.177400B IF(STRES(1).EQ.(2HY .AND.177400B))3020,3030 3020 CALL TXCTU(INDEV) GOTO 3900 C 3030 IF(STRES(1).EQ.(2HN .AND.177400B))3900,3040 3040 CALL REIO(100002B,INDEV+20000B,4H ,-4) GOTO 3010 3041 GOTO 3010 C 3900 CALL FTSMT(IDCB,VALUS) C C IF BREAK BIT IS SET, JUMP OUT OF OUTER LOOP AND QUIT PROGRAM IF(IFBRK(IDUMY)) GOTO 5000 C 4000 CONTINUE 5000 CONTINUE CALL CLOSE(IDCB) CALL EXEC(6) END p<  02145-18012 2001 S 0122 &FTSMT FTEST SUBROUTINE             H0101 FTN4,L,Q C C C DATE: SEPTEMBER 10,1979 C NAME: FTSMT C SOURCE: 02145-18012 C RELOC: 02145-16009 C PGMR: D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE C WITHOUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C******************************************************************** C SUBROUTINE FTSMT(IDCB,VALUS), 02145-1X012 REV. 2001 800304 C THIS IS THE OUTPUT FORMATTING ROUTINE FOR FTEST, THE L-SERIES FUNCTIONAL C TEST. IDCB CONTAINS THE FILE INFORMATION FOR THE OUTPUT FILE, VALUS C CONTAINS THE VALUES WHICH ARE TO BE OUTPUT. C BUFR IS THE TEMPORARY BUFFER IN WHICH EACH OUTPUT STRING IS BUILT UP C TEMP IS A TEMPORARY BUFFER FOR HOLDING INTERMEDIATE STRINGS C IMPLICIT INTEGER (A-Z) INTEGER IDCB(144) INTEGER VALUS(64,8) INTEGER BUFR(40) INTEGER TEMP(6) C C PRINT THE HEADER, LINE BY LINE DO 10 IJ=1,40 10 BUFR(IJ)=20040B CALL LOCF(IDCB,IERR,IREC,ERB,IOFF) CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL STV(BUFR,15,26H L-SERIES FUNCTIONAL TEST ,1,13) CALL WRITF(IDCB,IERR,BUFR(3),36,0) DO 20 IJ=1,40 20 BUFR(IJ)=20040B CALL STV(BUFR,19,12H REV. 800304,1,6) CALL WRITF(IDCB,IERR,BUFR(3),36,0) DO 25 IJ=1,40 25 BUFR(IJ)=20040B CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL FTIME(BUFR(14)) CALL WRITF(IDCB,IERR,BUFR(3),36,0) DO 30 IJ=1,40 30 BUFR(IJ)=20040B CALL STV(BUFR,15,24H PASS # $$$$$$ OF $$$$$$,1,12) CALL CNUMD(VALUS(64,1),BUFR(19)) CALL CNUMD(VALUS(64,2),BUFR(24)) CALL WRITF(IDCB,IERR,BUFR(3),36,0) DO 40 IJ=1,40 40 BUFR(I.J)=20040B CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL STV(BUFR,7,32H DEVICE STATUS AT PASSES ,1,16) CALL STV(BUFR,23,32HPASSES PASSES PASSES PASSES ,1,16) CALL WRITF(IDCB,IERR,BUFR(3),36,0) CALL STV(BUFR,3,30H LU TYPE LAST PASS,1,15) CALL STV(BUFR,18,30H PASSED DOWN FAILED BUS,1,15) CALL STV(BUFR,33,14HY IFC FAIL ,1,7) CALL WRITF(IDCB,IERR,BUFR(3),36,0) DO 50 IJ=1,40 50 BUFR(IJ)=20040B CALL WRITF(IDCB,IERR,BUFR(3),36,0) C FOR EACH LU IDENTIFY ITS TYPE, STATUS, ETC. AND FORMAT AND PRINT THAT C INFORMATION. C DO 1000 I=1,63 C IF TYPE IS -2 THEN THE LU IS NOT CONFIGURED, SKIP ENTIRELY IF(VALUS(I,2).EQ.-2) 1000,105 105 DO 110 IJ=1,40 110 BUFR(IJ)=20040B C PUT THE LU NUMBER IN THE FIRST FIELD CALL CNUMD(I,BUFR(2)) IF((VALUS(I,2).GE.3).AND.(VALUS(I,2).LE.7))114,117 114 TEMP=VALUS(I,2) VALUS(I,TEMP)=VALUS(I,TEMP)+1 117 IF((VALUS(I,1).EQ.0B).OR.(VALUS(I,1).EQ.5B)) 120,140 120 CALL STV(BUFR,6,12HKEYBD CTL DV,1,6) GOTO 600 140 IF(VALUS(I,1).EQ.12B) 160,180 160 CALL STV(BUFR,6,12HLINE PRINTER,1,6) GOTO 600 180 IF(VALUS(I,1).EQ.20B) 200,220 200 CALL STV(BUFR,6,12HSER RECORDNG,1,6) IF(VALUS(I,2).EQ.4)600,696 220 IF(VALUS(I,1).EQ.30B)240,260 240 CALL STV(BUFR,6,12HFLEXBLE DISC,1,6) GOTO 600 260 IF((VALUS(I,1).EQ.31B).OR.(VALUS(I,1).EQ.32B)) 280,300 280 CALL STV(BUFR,6,12HMOV HD DISC ,1,6) GOTO 600 300 IF (VALUS(I,1).EQ.-100) 320,340 320 DO 330 IJ=6,40 330 BUFR(IJ)=2H-- CALL STV(BUFR,20,16H LU UNASSIGNED -,1,8) GOTO 900 340 IF(VALUS(I,8).EQ.0B)360,370 360 CALL STV(BUFR,6,12HUNSPORTD SER,1,6) GOTO 600 370 IF(VALUS(I,1).EQ.11B)375,380 375 CALL STV(BUFR,6,12HHP-IB BUS LU,1,6) GOTO 600 380 IF(VALUS(I,8).EQ.37B)400,420 400 CALL STV(BUFR,6,12HUNSPORTD HPB,1,6) GOTO 696 420 IF(VALUS(I,8).EQ.50B)440,600 440 CALL STV(BUFR,6,12HUNS PORTD PAR,1,6) GOTO 600 600 GOTO (900,900,620,640,660,680,690,900,695,900)VALUS(I,2) 620 CALL STV(BUFR,14,6HPASSED,1,3) GOTO 700 640 CALL STV(BUFR,14,6HDOWN ,1,3) GOTO 700 660 CALL STV(BUFR,14,6HFAILED,1,3) GOTO 700 680 CALL STV(BUFR,14,6HBUSY ,1,3) GOTO 700 690 CALL STV(BUFR,14,8HIFC FAIL,1,4) GOTO 700 695 CALL STV(BUFR,14,8HUNMOUNTD,1,4) GOTO 697 696 CALL STV(BUFR,14,8HUNTESTED,1,4) 697 DO 698 M=19,40 698 BUFR(M)=2H-- GOTO 900 700 DO 720 J=3,6 720 CALL CNUMD(VALUS(I,J),BUFR(7+4*J)) CALL CNUMD(VALUS(I,7),BUFR(36)) 900 CALL WRITF(IDCB,IERR,BUFR(3),36,0) 1000 CONTINUE DO 1100 Z=1,3 1100 CALL WRITF(IDCB,IERR,BUFR,1,0) CALL APOSN(IDCB,IERR,IREC,ERB,IOFF) RETURN END    02145-18013 2001 S 0122 &TXDSC FTEST SUBROUTINE             H0101 FTN4,L,Q C C C DATE: SEPTEMBER 10,1979 C NAME: TXDSC C SOURCE: 02145-18013 C RELOC: 02145-16009 C PGMR: D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE C WITHOUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C******************************************************************** C SUBROUTINE TXDSC(LU,ERR,VALUS), 02145-1X013 REV.2001 800206 C DISC TEST SUBROUTINE. C OPENS A TYPE 8 FILE NAMED *TEST* ON LU, WRITES A RECORD TO IT, C READS THE RECORD BACK, VERIFIES IT AND PURGES THE FILE C LU MUST BE A DISC LU C C ERR RETURNS WITH AN ERROR NUMBER INDICATING THE TYPE OF FAILURE C ERR=0 NO ERROR C ERR=1 CREATE ERROR C ERR=2 WRITE ERROR C ERR=3 READ ERROR C ERR > 10 PURGE ERROR AND ERR-10 ERROR. IE IF ERROR = 12 THEN C THERE WAS A PURGE ERROR (10) AND A WRITE ERROR (2) [10+2=12] C C RESULTS ARE LOGGED IN THE BUFFER VALUS IN THE FORMAT OF THE FTEST LOG C BUFFER C C THIS SUBROUTINE IS CALLED BY FTEST, THE L-SERIES FUNCTIONAL C TEST PROGRAM IMPLICIT INTEGER(A-Z) INTEGER BUFR(10) INTEGER IDCB(144) INTEGER VALUS(64,8) INTEGER BUFW(10) INTEGER BR(40) INTEGER DSIZE(2) INTEGER NAME(3) INTEGER STARS(12),LUNUM(3) DATA BUFW/2HAB,2HCD,2HEF,2HGH,2HIJ,2HKL,2HMN,2HOP,2HQR,2HST/ C C SET THE RESULT TO FAIL, CHANGE IF ALL TESTS ARE PASSED C VALUS(LU,2)=5 ERR=0 DSIZE(1)=0 DSIZE(2)=8 C C CREATE A SCRATCH FILE ON SPECIFIED LU, LOG ERRORS C CALL CRETS(IDCB,IERR,NUM,NAME,DSIZE,8,0,0-LU) IF(IERR.EQ.-32) 30,40 30 ERR=7 VALUS(LU,2)=9 GOTO 600 C 40 IF(IERR.LT.0) 50,100 50 ERR=1 GOTO 600 C C STORE THE CURRENT FILE LOCATION THEN WRITE TEST BUFFER TO FILE, LOG ERRORS C 103  0 CALL LOCF(IDCB,IERR,IREC,ERB,IOFF) CALL WRITF(IDCB,IERR,BUFW,10) IF(IERR.LT.0) 150,200 150 ERR=2 GOTO 500 C C RESTORE FILE LOCATION AND READ BUFFER FROM FILE, LOG ERRORS C 200 CALL APOSN(IDCB,IERR,IREC,ERB,IOFF) CALL READF(IDCB,IERR,BUFR,10) IF(IERR.LT.0) 250,300 250 ERR=3 GOTO 500 C C VERIFY BUFFER WORD BY WORD, LOG ERRORS C 300 DO 320 I=1,10 IF(BUFR(I).EQ.BUFW(I)) 320,330 320 CONTINUE GOTO 500 C 330 ERR=3 C C PURGE FILE, LOG ERRORS C 500 CALL PURGE(IDCB,IERR,NAME,0,0-LU) IF(IERR.LT.0) 550,600 550 ERR=ERR+10 C C IF NO ERRORS THEN LOG A NO ERROR CONDITION C 600 IF(ERR.EQ.0) 700,900 700 VALUS(LU,2)=3 C 900 RETURN END     02145-18014 2001 S 0122 &TXCTU FTEST SUBROUTINE             H0101 FTN4,L,Q C C DATE: SEPTEMBER 10,1979 C NAME: TXCTU C SOURCE: 02145-18014 C RELOC: 02145-16009 C PGMR:D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT C THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. C******************************************************************** C SUBROUTINE TXCTU(LOGLU), 02145-1X014 REV.2001 800304 C C SUBROUTINE TO TEST CARTRIDGE TAPE DRIVES ON 2645, 2675 TERMINALS C BY INITIATING SELF TEST ON AN OPERATOR SUPPLIED SCRATCH TAPE AND C READING BACK THE STATUS C C THIS ROUTINE IS OPTIONALLY CALLED FROM THE FTEST PROGRAM, THE C L-SERIES FUNCTIONAL TEST. C IMPLICIT INTEGER(A-Z) C C VARIABLE DESCRIPTIONS: C INTEGER INBUF(2) INTEGER STRES(10) INTEGER ESCSQ(10) INTEGER BR(40) INTEGER NUMB(3) C R=100001B W=100002B O=LOGLU+20000B C 10 CALL REIO(W,O,14H INSERT TAPE,-14) GOTO 9000 12 CALL REIO(W,O,4H ,-4) GOTO 9000 13 CALL REIO(W,O,4H ,-4) GOTO 9000 14 CALL REIO(W,O,43H ENTER LU # OF TAPE DRIVE. (/A TO ABORT),-43) GOTO 9000 15 CALL REIO(R,O+400B,INBUF,-4) GOTO 9000 20 IF(INBUF(1).EQ.2H/A) 9000,30 C C CONVERT ASCII INPUT TO INTEGER 30 TEMP1=IAND(INBUF(1),177400B) TEMP2=IAND(INBUF(1),377B) COUNT=0 FLAG=0 IF(TEMP2.EQ.40B) 40,50 40 LUNO=TEMP1/256-48 GOTO 60 50 LUNO=((TEMP1/256)-48)*10+(TEMP2-48) 60 IF((LUNO.GT.64).OR.(LUNO.LE.0)) 90,300 C C GENERALIZED UNKNOWN INPUT RESPONSE "??" 90 CALL REIO(W,O,2H?? ,-2) GOTO 14 91 GOTO 14 C C CHECK THAT DEVICE TYPE OF LUNO IS 20 (CTU) 300 CALL EXEC(100000B+13,LUNO,STAT1,STAT2,STAT3,STAT4) GOTO 90 302 IF((STAT1.AND.40000B).NE.40000B) GOTO 303 k CALL STV(BR,1,30H LU # $$ IS DOWN ,1,15) GOTO 312 C C CHECK FOR DEVICE BUSY C 303 IF((STAT1.AND.100000B).NE.100000B) GOTO 305 CALL STV(BR,1,30H LU # $$ IS BUSY ,1,15) GOTO 312 C C MASK AND SHIFT TO CHECK DEVICE TYPE C 305 STAT1=IAND(STAT1,37400B) STAT1=STAT1/256 IF(STAT1.NE.20B)310,320 C C LUNO IS NOT A CARTRIDGE TAPE UNIT 310 CALL STV(BR,1,30H LU # $$ IS NOT A TAPE UNIT. ,1,15) 312 CALL STV(BR,16,16HPLEASE RE-ENTER ,1,8) CALL CNUMD(LUNO,NUMB) CALL STV(BR,5,NUMB,3,1) CALL REIO(W,O,BR,-48) GOTO 9000 318 GOTO 90 C 320 SIDE=IAND(STAT3,3B) ESCSQ(1)=15446B ESCSQ(2)=70060B+SIDE ESCSQ(3)=57021B C C SET TIME OUT DOWN TO CATCH NON-RESPONSE ERRORS QUICKLY CALL ILUTA(ADDR) ADDR=ADDR+LUNO-1 LOLOC=IGET(ADDR) TOADR=LOLOC+12 TMOUT=IGET(TOADR) CALL IPUT(TOADR,-51) C C CALL FOR DRIVE STATUS CHECK FOR TAPE IN DRIVE, NOT WRITE PROTECTED, C NOT BUSY CALL EXEC(W,120000B+LUNO,ESCSQ,-5,0) GOTO 90 330 CALL EXEC(R,120000B+LUNO,STRES,-8,0,10400B) GOTO 90 C C CHECK FOR IO ERROR ON EXEC CALL, (IE TIME-OUT) 335 CALL ABREG(A,B) CALL IPUT(TOADR,TMOUT) IF(A.EQ.2HIO) 340,510 340 CALL STV(BR,1,22H IO ERROR TO LU # $$,1,11) CALL CNUMD(LUNO,NUMB) CALL STV(BR,11,NUMB,3,1) CALL REIO(W,O,BR,-22) GOTO 10 341 GOTO 10 C C C CHECK FOR TAPE INSERTED 510 IF((STRES(4).AND.400B).EQ.400B) 520,10 520 IF((STRES(3).AND.4B).EQ.4B) 530,540 530 CALL REIO(W,O,27H TAPE IS WRITE PROTECTED.,-27) GOTO 10 532 CALL STV(BR,1,40H TAPE TEST REQUIRES WRITING ON SCRATCH,1,20) CALL STV(BR,21,6H TAPE ,1,3) CALL REIO(W,O,BR,23) GOTO 10 533 GOTO 10 C 540 IF((STRES(3).AND.1B).EQ.1B) 550,560 C C TAPE BUSY PRESUMABLY REWINDING ETC. WAIT A FEW SECONDS,TRY AGAIN 550 COUNT=COUNT+1 IF(COUNT.GT.20) 553,555 553 CALL REIO(W,O,42H TAPE BUSY. REWIND TAPE AND START AGAIN,-42) GOTO 10 554 GOTO 10 C 555 CALL EXEC(12,0,2,0,-3) GOTO 300 C C TAPE IS IN, NOT PROTECTED, NOT BUSY INITIATE SELF-TEST 560 ESCSQ(3)=62067B ESCSQ(4)=41421B CALL EXEC(W,120000B+LUNO,ESCSQ,-7,0) GOTO 90 562 CALL EXEC(R,120000B+LUNO,STRES,-2,0,10400B) GOTO 90 C C CHECK SELF TEST RESULTS 565 IF(STRES(1).NE.51415B)570,720 570 ESCSQ(3)=57021B C C CALL FOR STATUS AND ANALYZE CAUSE OF FAILURE CALL EXEC(W,120000B+LUNO,ESCSQ,-5,0) GOTO 90 575 CALL EXEC(R,120000B+LUNO,STRES,-8,0,10400B) GOTO 90 580 CALL ABREG(A,B) IF(B.LE.6)600,610 C 600 CALL REIO(W,O,42H DRIVE FAILED TO RETURN ANY TEST RESULTS,-42) GOTO 10 601 GOTO 10 C CHECK FOR PROPER FORM FOR STATUS BYTES: SHOULD BEGIN WITH "0011" 610 IF((STRES(3).AND.170360B).NE.30060B) 615,620 615 CALL STV(BR,1,40H TAPE DRIVE DOES NOT RETURN STATUS SEQ,20) CALL STV(BR,21,6HUENCE ,1,3) CALL REIO(W,O,BR,23) 616 GOTO 10 C 620 IF((STRES(3).AND.400B).NE.400B) 630,640 630 CALL REIO(W,O,41H WRITE ERROR (WRITE/BACKSPACE/READ MODE,-41) GOTO 10 631 FLAG=1 C 640 IF((STRES(3).AND.10B).NE.10B) 650,660 650 CALL REIO(W,O,26H SELF TEST NOT PERFORMED,-26) GOTO 10 651 FLAG=1 C 660 IF((STRES(3).AND.2B).NE.0B) 670,680 670 CALL REIO(W,O,13H READ ERROR,-13) GOTO 10 671 FLAG=1 C 680 IF((STRES(4).AND.4000B).NE.0B) 690,700 690 CALL REIO(W,O,42H SOFT ERROR (READ/WRITE ERROR-RECOVERED),-42) GOTO 10 691 FLAG=1 C 700 IF((STRES(4).AND.2000B).NE.0B) 710,715 710 CALL REIO(W,O,38H HARD ERROR (10 READ/WRITE FAILURES),-38) GOTO 10 711 FLAG=1 C C IF FLAG = 1 THEN AN ERROR HAS OCCURED 715 IF(FLAG.EQ.1) 10,720 C 720 CALL STV(BR,1,30H TAPE TEST SUCCESSFUL, PROCE,1,15) CALL STV(BR,16,16HED TO NEXT DRIVE,1,8) CALL REIO(W,O,BR,-46) GOETO 90 730 CALL REIO(W,O,2H ,-2) GOTO 90 740 CALL REIO(W,O,2H ,-2) GOTO 90 750 GOTO 10 C 9000 CONTINUE RETURN END    02145-18015 2001 S 0122 &STV FTEST SUBROUTINE             H0101 FTN4,L,Q C C DATE: SEPTEMBER 10,1979 C NAME: STV C SOURCE: 02145-18015 C RELOC: 02145-16009 C PGMR: D.E.B. C C******************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT C THE PRIOR WRITTEN CONSENT OF HELWETT-PACKARD COMPANY. C******************************************************************** C C STV IS A STRING MOVE ROUTINE WHICH MOVES S2 STARTING AT WORD O2 C INTO S1 STARTING AT O1 AND MOVING LN WORDS. C IT IS CALLED BY FTEST , THE L=SERIES FUNCTIONAL TEST AND ITS C ASSOCIATED SUBROUTINES. C SUBROUTINE STV (S1,O1,S2,O2,LN), 02145-1X015 REV.2001 791109 IMPLICIT INTEGER(A-Z) INTEGER S1(1) INTEGER S2(2) DO 100 I=1,LN 100 S1(O1+I-1)=S2(O2+I-1) RETURN END    02145-18016 2001 S 0122 &ILUTA FTEST SUBROUTINE             H0101 ASMB,Q,C * * DATE: SEPTEMBER 10,1979 * NAME: ILUTA * SOURCE: 02145-18016 * RELOC: 02145-16009 * PGMR: D.E.B. * ********************************************************************* * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. ********************************************************************* * * THIS ROUTINE PROVIDES A FORTRAN CALLABLE ROUTINE TO RETURN THE * ADDRESS OF THE START OF THE LU TABLE IN THE L-SERIES COMPUTER. * ILUTA IS CALLED BY FTEST, THE L-SERIES FUNCTIONAL TEST. * NAM ILUTA,7 02145-1X016 REV.2001 791109 ENT ILUTA EXT $LUTA,.ENTR LUTAA NOP ILUTA NOP JSB .ENTR DEF LUTAA LDA $LUTA STA LUTAA,I JMP ILUTA,I END    02170-18001 1940 S C0122 &ANPS1              H0101 wk&LFPS1::14 * LIST FILE * PRIMARY SYSTEM #1 ANSWER FILE (7906/20) 790926 40) YES * ECHO ON 75 * ESTIMATED # OF TRACKS !PRMS1::14 * ABSOLUTE SYSTEM FILE 7906 * TARGET DISC 11 * DISC CHANNEL 256,0,0,2,0,8 * SUBCHANNEL 0, 7906/20 LU2 203,132,0,2,0,5 * SUBCHANNEL 1, 7906/20 LU11 203,236,0,2,0,5 * SUBCHANNEL 2, 7906/20 LU12 138,340,0,2,0,4 * SUBCHANNEL 3, 7906/20 LU13 203,0,2,1,0,5 * SUBCHANNEL 4, 7906/20 LU14 198,208,2,1,0,5 * SUBCHANNEL 5, 7906/20 LU15 400,0,3,1,0,11 * SUBCHANNEL 6, 7906/20 LU16 400,0,4,1,0,11 * SUBCHANNEL 7, 7920 LU17 1024,411,0,5,0,26 * SUBCHANNEL 8, 7920 LU18 985,621,0,5,0,25 * SUBCHANNEL 9, 7920 LU19 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YE * MR ACCESS TA II YE * RT MEMORY LOCK YE * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IV SYSTEM MODULES * REL,%CR4S1::-2 REL,%CR4S2::-2 * * DRIVERS MODULES * REL,%DVR00::-2 * RS232 TERMINALS REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::-2 * 7906/20 DISC REL,%2DV37::-2 * 59310B HPIB INTERFACE REL,%DVA12::-2 * 2607-2635 LINE PRINTER REL,%DVB12::-2 * 2608 LINE PRINTER REL,%DVR07::-10 * 12790A MULTI-POINT I/F * * SPECIAL SYSTEM SOFTWARE * REL,%4DP43::-2 * POWER FAIL REL,%$CNFX::-2 * CONFIGURATOR EXTENSION REL,%DBUGR::-2 * USER DEBUG * * USER PROGRAMS * REL,%BMPG1f::-2 * RTE-IV FMGR REL,%BMPG2::-2 REL,%BMPG3::-2 REL,%EDITR::-2 * RTE EDITOR REL,%AUTO7::-10 * MP AUTO RESTART PROGRAM REL,%4WHZT::-2 * RTE-IV WHZAT REL,%4LDR ::-2 * RTE-IV LOADER REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB REL,%4SPO2::-2 REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. REL,%FTN4::-2 * RTE FORTRAN IV, MAIN REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 REL,%4XREF::-2 * RTE-IV CROSS REF. REL,%RT4G1::-2 * RTE-IV GENERATOR REL,%RT4G2::-2 REL,%4SWTH::-2 * RTE-IV SWITCH REL,%SAVE::-2 * SAVE UTILITY REL,%RESTR::-2 * RESTORE UTILITY REL,%COPY::-2 * COPY UTILITY REL,%VERFY::-2 * VERFY UTILITY REL,%DBKLB::-2 * DISC BACK-UP UTILITY REL,%LGTAT::-2 * DISC TRACK MAP UTILITY REL,%IB4A::-2 * HPIB LIBRARY REL,%SRQ.P::-2 * HPIB SERVICE REQUEST REL,%KEYS::-2 * SOFT KEYS REL,%KYDMP::-2 * KEY DUMP * * LIBRARIES * REL,%BMLIB::-2 * RTE BATCH LIBRARY REL,%CLIB ::-2 * RTE COMPILER LIBRARY REL,%FF4.N::-2 * RTE FTN-IV LIBRARY REL,%RLIB1::-2 * RTE REL. LIBRARY 1 REL,%RLIB2::-2 * lRTE REL. LIBRARY 2 REL,%RLIB3::-2 * RTE REL. LIBRARY 3 REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY REL,%TSKSC::-10 * BASIC TASK SCHEDULER REL,%BAIMG::-10 * BASIC IMAGE LIBRARY REL,%MPLIB::-10 * MULTI-POINT LIBRARY REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY REL,%DBLIB::-10 * IMAGE LIBRARY DISPLAY UNDEFS /E EDITR,3,50 WHZAT,3,41 AUTOR,4,10 PRMPT,1,10 * MULTI-TERMINAL INTERRUPT R$PN$,1,10 TTYEV,17 TRAP,30 .DBRN,30 LOADR,3,89 FTN4,3,89 ASMB,3,89 XREF,3,89 LGTAT,3,89 GASP,19 /E .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 .FDV,RP,105060 IFIX,RP,105100 FLOAT,RP,105120 .MPY,RP,100200 .DIV,RP,100400 .DLD,RP,104200 .DST,RP,104400 .MVW,RP,105777 .EMAP,RP,105257 .EMIO,RP,105240 MMAP,RP,105241 Z$DBL,RP,3 * THREE WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 11,DVR32,D * EQT1: 7906/20 SYSTEM DISC 12,DVA05,B,X=13 * EQT2: 2645/2648 SYSTEM CONSOLE 13,DVR37,X=57,T=6000 * EQT3: 59310B HPIB INTERFACE 14,DVA12,B,T=6000 * EQT4: 2607-2635 LINE PRINTER 15,DVR23,D,B,T=6000 * EQT5: 7970B MAGNETIC TAPE UNIT 17,DVR07,X=5 * EQT6: 12790A MULTI-POINT I/F 67,DVR07,X=5 * EQT7: MULTI-POINT TERMINAL #1 67,DVR07,X=5 * EQT8: MULTI-POINT TERMINAL #2 20,DVB12,B,X=5,T=6000 * EQT9: 2608 LINE PRINTER 21,DVR00,B,T=6000 * EQT10: RS232 TERMINAL 70,DVS43,X=18,M * EQT11: SPOOL 71,DVS43,X=18,M * EQT12: SPOOL 72,DVS43,X=18,M * EQT13: SPOOL 73,DVS43,X=18,M * EQT14: SPOOL 74,DVS43,X=18,M * EQT15: SPOOL 75,DVS43,X=18,M * EQT16: SPOOL 4,DVP43,M * EQT17: POWER FAIL /E * * DEVICE REFERENCE TABLE ENTRIES * 2,0 U * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, REMOVABLE SUBCHN 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 4 * LU6 - DVA12 LINE PRINTER 9 * LU7 - 2608 LINE PRINTER 5 * LU8 - 7970B MAGNETIC TAPE UNIT 0 * LU9 - RESERVED 0 * LU10 - RESERVED 1,1 * LU11 - 7906/20 SUBCHANNEL 1 1,2 * LU12 - 7906/20 SUBCHANNEL 2 1,3 * LU13 - 7906/20 SUBCHANNEL 3 1,4 * LU14 - 7906/20 SUBCHANNEL 4 1,5 * LU15 - 7906/20 SUBCHANNEL 5 1,6 * LU16 - 7906/20 SUBCHANNEL 6 1,7 * LU17 - 7920 SUBCHANNEL 7 1,8 * LU18 - 7920 SUBCHANNEL 8 1,9 * LU19 - 7920 SUBCHANNEL 9 0 * LU20 - RESERVED 0 * LU21 - RESERVED 6 * LU22 - MULTI-POINT INTERFACE 7 * LU23 - MULTI-POINT TERMINAL #1 8 * LU24 - MULTI-POINT TERMINAL #2 0 * LU25 - RESERVED 0 * LU26 - RESERVED 0 * LU27 - RESERVED 0 * LU28 - RESERVED 0 * LU29 - RESERVED 3,0 * LU30 - 59310B HPIB INTERFACE 3,1 * LU31 - HPIB ADDRESS 1 3,2 * LU32 - HPIB ADDRESS 2 3,3 * LU33 - HPIB ADDRESS 3 3,4 * LU34 - HPIB ADDRESS 4 3,5 * LU35 - HPIB ADDRESS 5 3,6 * LU36 - HPIB ADDRESS 6 3,7 * LU37 - HPIB ADDRESS 7 3,8 * LU38 - HPIB ADDRESS 8 3,9 * LU39 - HPIB ADDRESS 9 11 * LU40 - SPOOL 12 * LU41 - SPOOL 13 * LU42 - SPOOL 14 * LU43 - SPOOL 15 * LU44 - SPOOL 16 * LU45 - SPOOL 17 * LU46 - POWER FAZIL 10 * LU47 - RS232 TERMINAL 0 * LU48 - SPARE 0 * LU49 - SPARE 0 * LU50 - SPARE 0 * LU51 - SPARE 0 * LU52 - SPARE 0 * LU53 - SPARE 0 * LU54 - SPARE 0 * LU55 - SPARE 0 * LU56 - SPARE 0 * LU57 - SPARE 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,EQT,1 * 7906/20 SYSTEM DISC 12,PRG,PRMPT * 2645/2648 SYSTEM CONSOLE 13,EQT,3 * 59310B HPIB INTERFACE 14,EQT,4 * 2607-2635 LINE PRINTER 15,EQT,5 * 7970B MAGNETIC TAPE UNIT 16,EQT,5 * 7970B MAGNETIC TAPE UNIT 17,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 20,EQT,9 * 2608 LINE PRINTER 21,PRG,PRMPT * RS232 TERMINAL 67,ABS,0 * MULTI-POINT INTERFACE 70,EQT,11 * SPOOL 71,EQT,12 * SPOOL 72,EQT,13 * SPOOL 73,EQT,14 * SPOOL 74,EQT,15 * SPOOL 75,EQT,16 * SPOOL /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 32 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 32 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 40 * # OF BLANK ID SEGMENTS 55 * # OF BLANK SHORT ID SEGMENTS 20 * # OF BLANK ID EXTENSIONS 64 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 4,RT * PART 01? 8,RT * PART 02? 16,BG * PART 03? /E * PART 04? * &f$"* MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,16 * FILE MANAGER LOADR,16 * RTE-IV LOADER FTN4,16 * FORTRAN IV ASMB,16 * ASSEMBLER XREF,16 * CROSS REF. RT4GN,16 * RTE-IV GENERATOR SWTCH,16 * RTE-IV SWITCH SAVE,16 * SAVE UTILITY RSTOR,16 * RSTOR UTILITY COPY,16 * COPY UTILITY VERFY,16 * VERFY UTILITY KEYS,16 * SOFT KEY UTILITY KYDMP,16 * SOFT KEY DUMP UTILITY EDITR,16 * RTE EDITOR /E * * ASSIGN PROGRAM PARTITIONS? * /E $   02170-18002 1940 S C0122 &ANPS2              H0101 xl&LFPS2::14 * LIST FILE * PRIMARY SYSTEM #2 ANSWER FILE (7900) 790926 (1940) YES * ECHO ON 75 * ESTIMATED # OF TRACKS !PRMS2::14 * ABSOLUTE SYSTEM FILE 7900 * TARGET DISC 11 * DISC CHANNEL 203,0 * SUBCHANNEL 0 203,0 * SUBCHANNEL 1 /E 1 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YE * MR ACCESS TA II YE * RT MEMORY LOCK YE * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IV SYSTEM MODULES * REL,%CR4S1::-2 REL,%CR4S2::-2 * * DRIVERS MODULES * REL,%DVR00::-2 * RS232 TERMINALS REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT REL,%DVR31::-2 * 7900 DISC REL,%2DV37::-2 * 59310B HPIB INTERFACE REL,%DVA12::-2 * 2607-2635 LINE PRINTER REL,%DVB12::-2 * 2608 LINE PRINTER REL,%DVR07::-10 * 12790A MULTI-POINT I/F * * SPECIAL SYSTEM SOFTWARE * REL,%4DP43::-2 * POWER FAIL REL,%$CNFX::-2 * CONFIGURATOR EXTENSION REL,%DBUGR::-2 * USER DEBUG * * USER PROGRAMS * REL,%BMPG1::-2 * RTE-IV FMGR REL,%BMPG2::-2 REL,%BMPG3::-2 REL,%EDITR::-2 * RTE EDITOR REL,%AUTO7::-10 * AUTO RESTART PROGRAM REL,%4WHZT::-2 * RTE-IV WHZAT REL,%4LDR ::-2 * RTE-IV LOADER REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB REL,%4SPO2::-2 REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. REL,%FTN4::-2 * RTE FORTRAN IV, MAIN REL,%FFTN4::-2 b * RTE FORTRAN IV, SEGMENT ID SUBROUTINE REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 REL,%4XREF::-2 * RTE-IV CROSS REF. REL,%RT4G1::-2 * RTE-IV GENERATOR REL,%RT4G2::-2 REL,%4SWTH::-2 * RTE-IV SWITCH REL,%SAVE::-2 * SAVE UTILITY REL,%RESTR::-2 * RESTORE UTILITY REL,%COPY::-2 * COPY UTILITY REL,%VERFY::-2 * VERFY UTILITY REL,%DBKLB::-2 * DISC BACK-UP UTILITY REL,%LGTAT::-2 * DISC TRACK MAP UTILITY REL,%IB4A::-2 * HPIB LIBRARY REL,%SRQ.P::-2 * HPIB SERVICE REQUEST REL,%KEYS::-2 * SOFT KEYS REL,%KYDMP::-2 * KEY DUMP * * LIBRARIES * REL,%BMLIB::-2 * RTE BATCH LIBRARY REL,%CLIB ::-2 * RTE COMPILER LIBRARY REL,%FF4.N::-2 * RTE FTN-IV LIBRARY REL,%RLIB1::-2 * RTE REL. LIBRARY 1 REL,%RLIB2::-2 * RTE REL. LIBRARY 2 REL,%RLIB3::-2 * RTE REL. LIBRARY 3 REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY REL,%TSKSC::-10 * BASIC TASK SCHEDULER REL,%BAIMG::-10 * BASIC IMAGE LIBRARY REL,%MPLIB::-10 * MULTI-POINT LIBRARY REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY REL,%DBLIB::-10 * IMAGE [LIBRARY DISPLAY UNDEFS /E EDITR,3,50 WHZAT,3,41 AUTOR,4,10 PRMPT,1,10 R$PN$,1,10 TTYEV,17 TRAP,30 .DBRN,30 LOADR,3,89 FTN4,3,89 ASMB,3,89 XREF,3,89 LGTAT,3,89 GASP,19 /E .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 .FDV,RP,105060 IFIX,RP,105100 FLOAT,RP,105120 .MPY,RP,100200 .DIV,RP,100400 .DLD,RP,104200 .DST,RP,104400 .MVW,RP,105777 .EMAP,RP,105257 .EMIO,RP,105240 MMAP,RP,105241 Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 11,DVR31,D * EQT1: 7900 SYSTEM DISC 13,DVA05,B,X=13 * EQT2: 2645/2648 SYSTEM CONSOLE 14,DVR37,X=57,T=6000 * EQT3: 59310B HPIB INTERFACE 15,DVA12,B,T=6000 * EQT4: 2607-2635 LINE PRINTER 16,DVR23,D,B,T=6000 * EQT5: 7970B MAGNETIC TAPE UNIT 20,DVR07,X=5 * EQT6: 12790A MULTI-POINT I/F 67,DVR07,X=5 * EQT7: MULTI-POINT TERMINAL #1 67,DVR07,X=5 * EQT8: MULTI-POINT TERMINAL #2 21,DVB12,B,X=5,T=6000 * EQT9: 2608 LINE PRINTER 22,DVR00,B,T=6000 * EQT10: RS232 TERMINAL 70,DVS43,X=18,M * EQT11: SPOOL 71,DVS43,X=18,M * EQT12: SPOOL 72,DVS43,X=18,M * EQT13: SPOOL 73,DVS43,X=18,M * EQT14: SPOOL 74,DVS43,X=18,M * EQT15: SPOOL 75,DVS43,X=18,M * EQT16: SPOOL 4,DVP43,M * EQT17: POWER FAIL /E * * DEVICE REFERENCE TABLE ENTRIES * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,1 * LU2 - 7900 SYSTEM DISC, REMOVABLE 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 4 * LU6 - DVA12 LINE PRINTER 9 * LU7 - 2608 LINE PRINTER 5 * LU8 - 7970B MAGNETIC TAPE UNIT 0 * LU9 - RESERVED 0 * LU10 - RESERVED 1,0 * LU11 - 7900 SYSTEM DI;!SC, FIXED 0 * LU12 - RESERVED 0 * LU13 - RESERVED 0 * LU14 - RESERVED 0 * LU15 - RESERVED 0 * LU16 - RESERVED 0 * LU17 - RESERVED 0 * LU18 - RESERVED 0 * LU19 - RESERVED 0 * LU20 - RESERVED 0 * LU21 - RESERVED 6 * LU22 - MULTI-POINT INTERFACE 7 * LU23 - MULTI-POINT TERMINAL #1 8 * LU24 - MULTI-POINT TERMINAL #2 0 * LU25 - RESERVED 0 * LU26 - RESERVED 0 * LU27 - RESERVED 0 * LU28 - RESERVED 0 * LU29 - RESERVED 3,0 * LU30 - 59310B HPIB INTERFACE 3,1 * LU31 - HPIB ADDRESS 1 3,2 * LU32 - HPIB ADDRESS 2 3,3 * LU33 - HPIB ADDRESS 3 3,4 * LU34 - HPIB ADDRESS 4 3,5 * LU35 - HPIB ADDRESS 5 3,6 * LU36 - HPIB ADDRESS 6 3,7 * LU37 - HPIB ADDRESS 7 3,8 * LU38 - HPIB ADDRESS 8 3,9 * LU39 - HPIB ADDRESS 9 11 * LU40 - SPOOL 12 * LU41 - SPOOL 13 * LU42 - SPOOL 14 * LU43 - SPOOL 15 * LU44 - SPOOL 16 * LU45 - SPOOL 17 * LU46 - POWER FAIL 10 * LU47 - RS232 TERMINAL 0 * LU48 - SPARE 0 * LU49 - SPARE 0 * LU50 - SPARE 0 * LU51 - SPARE 0 * LU52 - SPARE 0 * LU53 - SPARE 0 * LU54 - SPARE 0 * LU55 - SPARE 0 * LU56 - SPARE 0 * LU57 - SPARE 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 6 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,EQT,1 * 7900 SYSTEM DISC 12,EQT,1 * 7900 SYSTEM DISC 13,PRG,PRMPT * 2645/2648 SYSTEM CONSOLE 14,EQT,3 * 59310B HPIB INTERFACE 15,EQT,4 * 2607-2635 LINE PRINTER 16,EQT,5 * 7970B MAGNETIC TAPE UNIT 17,EQT,5 * 7970B MAGNETIC TAPE UNIT 20,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 21,EQT,9 * 2608 LINE PRINTER 22,PRG,PRMPT * RS232 TERMINAL 67,ABS,0 * MULTI-POINT INTERFACE 70,EQT,11 * SPOOL 71,EQT,12 * SPOOL 72,EQT,13 * SPOOL 73,EQT,14 * SPOOL 74,EQT,15 * SPOOL 75,EQT,16 * SPOOL /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 32 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 32 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 40 * # OF BLANK ID SEGMENTS 55 * # OF BLANK SHORT ID SEGMENTS 20 * # OF BLANK ID EXTENSIONS 64 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 4,RT * PART 01? 8,RT * PART 02? 16,BG * PART 03? /E * PART 04? * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,16 * FILE MANAGER LOADR,16 * RTE-IV LOADER FTN4,16 * FORTRAN IV ASMB,16 * ASSEMBLER XREF,16 * CROSS REF. RT4GN,16 * RTE-IV GENERATOR SWTCH,16 * RTE-IV SWITCH SAVE,16 * SAVE UTILITY RSTOR,16 * RSTOR UTILITY COPY,16 * COPY UTILITY VERFY,16 * VERFY UTILITY KEYS,16 * SOFT KEY UTILITY KYDMP,16 * SOFT KEY DUMP UTILITY EDITR,16 $" * RTE EDITOR /E * * ASSIGN PROGRAM PARTITIONS? * /E k$   02170-18003 1940 S C0122 &ANPS3              H0101 ym&LFPS3::13 * LIST FILE * PRIMARY SYSTEM #3 ANSWER FILE (7906/20) 790926 (1940) YES * ECHO ON 75 * ESTIMATED # OF TRACKS !PRMS3::13 * ABSOLUTE SYSTEM FILE 7906 * TARGET DISC 14 * DISC CHANNEL 256,0,0,2,0,8 * SUBCHANNEL 0, 7906/20 LU2 203,132,0,2,0,5 * SUBCHANNEL 1, 7906/20 LU11 203,236,0,2,0,5 * SUBCHANNEL 2, 7906/20 LU12 138,340,0,2,0,4 * SUBCHANNEL 3, 7906/20 LU13 203,0,2,1,0,5 * SUBCHANNEL 4, 7906/20 LU14 198,208,2,1,0,5 * SUBCHANNEL 5, 7906/20 LU15 400,0,3,1,0,11 * SUBCHANNEL 6, 7906/20 LU16 400,0,4,1,0,11 * SUBCHANNEL 7, 7920 LU17 1024,411,0,5,0,26 * SUBCHANNEL 8, 7920 LU18 985,621,0,5,0,25 * SUBCHANNEL 9, 7920 LU19 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YE * MR ACCESS TA II YE * RT MEMORY LOCK YE * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IV SYSTEM MODULES * REL,%CR4S1::-2 REL,%CR4S2::-2 * * DRIVERS MODULES * REL,%DVR00::-2 * RS232 TERMINALS REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::-2 * 7906/20 DISC REL,%2DV37::-2 * 59310B HPIB INTERFACE REL,%DVA12::-2 * 2607-2635 LINE PRINTER REL,%DVB12::-2 * 2608 LINE PRINTER REL,%DVR07::-10 * 12790A MULTI-POINT I/F REL,%DVA65::-10 * DS/1000 * * SPECIAL SYSTEM SOFTWARE * REL,%4DP43::-2 * POWER FAIL REL,%$CNFX::-2 * CONFIGURATOR EXTENSION REL,%DBUGR::-2 * USER DEBUG * * W USER PROGRAMS * REL,%BMPG1::-2 * RTE-IV FMGR REL,%BMPG2::-2 REL,%BMPG3::-2 REL,%AUTO7::-10 * AUTO RESTART PROGRAM REL,%4WHZT::-2 * RTE-IV WHZAT REL,%4LDR ::-2 * RTE-IV LOADER REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB REL,%4SPO2::-2 REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. REL,%FTN4::-2 * RTE FORTRAN IV, MAIN REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 REL,%4XREF::-2 * RTE-IV CROSS REF. REL,%RT4G1::-2 * RTE-IV GENERATOR REL,%RT4G2::-2 REL,%4SWTH::-2 * RTE-IV SWITCH REL,%SAVE::-2 * SAVE UTILITY REL,%RESTR::-2 * RESTORE UTILITY REL,%COPY::-2 * COPY UTILITY REL,%VERFY::-2 * VERFY UTILITY REL,%DBKLB::-2 * DISC BACK-UP UTILITY REL,%LGTAT::-2 * DISC TRACK MAP UTILITY REL,%IB4A::-2 * HPIB LIBRARY REL,%SRQ.P::-2 * HPIB SERVICE REQUEST REL,%KEYS::-2 * SOFT KEYS REL,%KYDMP::-2 * KEY DUMP * * LIBRARIES * REL,%BMLIB::-2 * RTE BATCH LIBRARY REL,%CLIB ::-2 * RTE COMPILER LIBRARY REL,%FF4.N::-2 * RTE FTN-IV LIBRARY REL,%RLIB1::-2 * RTE REL. LIBRARY 1 REL,%RLIB2::-2 * RTE REL. L<IBRARY 2 REL,%RLIB3::-2 * RTE REL. LIBRARY 3 REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY REL,%TSKSC::-10 * BASIC TASK SCHEDULER REL,%BAIMG::-10 * BASIC IMAGE LIBRARY REL,%MPLIB::-10 * MULTI-POINT LIBRARY REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY REL,%DBLIB::-10 * IMAGE LIBRARY * * DS/1000 SOFTWARE * REL,%QUEUE::-10 REL,%GRPM::-10 REL,%RTRY::-10 REL,%QCLM::-10 REL,%RFAM2::-10 REL,%EXECM::-10 REL,%EXECW::-10 REL,%DLIS1::-10 REL,%PROGL::-10 REL,%PTOPM::-10 REL,%UPLIN::-10 REL,%EDITD::-10 * DS/1000 INTERACTIVE EDITOR REL,%REMAT::-10 REL,%OPERM::-10 REL,%NDTGN::-10 REL,%LSTEN::-10 REL,%DSLB1::-10 REL,%DSLB2::-10 REL,%DSLB3::-10 DISPLAY UNDEFS /E WHZAT,3,41 AUTOR,4,10 PRMPT,1,10 R$PN$,1,10 TTYEV,17 TRAP,30 .DBRN,30 LOADR,3,89 FTN4,3,89 ASMB,3,89 XREF,3,89 LGTAT,3,89 GASP,19 /E .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 .FDV,RP,105060 IFIX,RP,105100 FLOAT,RP,105120 .MPY,RP,100200 .DIV,RP,100400 .DLD,RP,104200 .DST,RP,104400 .MVW,RP,105777 .EMAP,RP,105257 .EMIO,RP,105240 MMAP,RP,105241 Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVR32,D * EQT1: 7906/20 SYSTEM DISC 11,DVA65,X=7,T=240 * EQT2: DS/1000 COMM. PORT #1 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT #2 15,DVA05,B,X=13 * EQT4: 2645/48 SYSTEM CONSOLE 16,DVR37,X=57,T=6000 * EQT5: 59310B HPIB INTERFACE 17,DVA12,B,T=6000 * EQT6: 2607-2635 LINE PRINTER 20,DVR23,D,B,T=6000 * EQT7: 7970B MAGNETIC TAPE UNIT 22,DVR07,X=5 * EQT8: 12790A MULTI-POINT I/F 67,DVR07,X=5 * EQT9: MULTI-POINT TERMINAL #1 67,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #2 23,DVB12,B,X=5,T=6000  * EQT11: 2608 LINE PRINTER 24,DVR00,B,T=6000 * EQT12: RS232 TERMINAL 70,DVS43,X=18,M * EQT13: SPOOL 71,DVS43,X=18,M * EQT14: SPOOL 72,DVS43,X=18,M * EQT15: SPOOL 73,DVS43,X=18,M * EQT16: SPOOL 74,DVS43,X=18,M * EQT17: SPOOL 75,DVS43,X=18,M * EQT18: SPOOL 4,DVP43,M * EQT19: POWER FAIL /E * * DEVICE REFERENCE TABLE ENTRIES * 4,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 4,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 4,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - DVA12 LINE PRINTER 11 * LU7 - 2608 LINE PRINTER 7 * LU8 - 7970B MAGNETIC TAPE UNIT 2,1 * LU9 - DS/1000 HARDWIRE COMM. PORT #1 3,1 * LU10 - DS/1000 HARDWIRE COMM. PORT #2 1,1 * LU11 - 7906/20 SUBCHANNEL 1 1,2 * LU12 - 7906/20 SUBCHANNEL 2 1,3 * LU13 - 7906/20 SUBCHANNEL 3 1,4 * LU14 - 7906/20 SUBCHANNEL 4 1,5 * LU15 - 7906/20 SUBCHANNEL 5 1,6 * LU16 - 7906/20 SUBCHANNEL 6 1,7 * LU17 - 7920 SUBCHANNEL 7 1,8 * LU18 - 7920 SUBCHANNEL 8 1,9 * LU19 - 7920 SUBCHANNEL 9 0 * LU20 - RESERVED 0 * LU21 - RESERVED 8 * LU22 - MULTI-POINT INTERFACE 9 * LU23 - MULTI-POINT TERMINAL #1 10 * LU24 - MULTI-POINT TERMINAL #2 0 * LU25 - RESERVED 0 * LU26 - RESERVED 0 * LU27 - RESERVED 0 * LU28 - RESERVED 0 * LU29 - RESERVED 5,0 * LU30 - 59310B HPIB INTERFACE 5,1 * LU31 - HPIB ADDRESS 1 5,2 * LU32 - HPIB ADDRESS 2 5,3 * LU33 - HPIB ADD RESS 3 5,4 * LU34 - HPIB ADDRESS 4 5,5 * LU35 - HPIB ADDRESS 5 5,6 * LU36 - HPIB ADDRESS 6 5,7 * LU37 - HPIB ADDRESS 7 5,8 * LU38 - HPIB ADDRESS 8 5,9 * LU39 - HPIB ADDRESS 9 13 * LU40 - SPOOL 14 * LU41 - SPOOL 15 * LU42 - SPOOL 16 * LU43 - SPOOL 17 * LU44 - SPOOL 18 * LU45 - SPOOL 19 * LU46 - POWER FAIL 12 * LU47 - RS232 TERMINAL 0 * LU48 - SPARE 0 * LU49 - SPARE 0 * LU50 - SPARE 0 * LU51 - SPARE 0 * LU52 - SPARE 0 * LU53 - SPARE 0 * LU54 - SPARE 0 * LU55 - SPARE 0 * LU56 - SPARE 0 * LU57 - SPARE 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 12,PRG,QUEUE * DS/1000 COMM. PORT #2 14,EQT,1 * 7906/20 SYSTEM DISC 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 16,EQT,5 * 59310B HPIB INTERFACE 17,EQT,6 * 2607-2635 LINE PRINTER 20,EQT,7 * 7970B MAGNETIC TAPE UNIT 21,EQT,7 * 7970B MAGNETIC TAPE UNIT 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 23,EQT,11 * 2608 LINE PRINTER 24,PRG,PRMPT * RS232 TERMINAL 67,ABS,0 * MULTI-POINT INTERFACE 70,EQT,13 * SPOOL 71,EQT,14 * SPOOL 72,EQT,15 * SPOOL 73,EQT,16 * SPOOL 74,EQT,17 * SPOOL 75,EQT,18 * SPOOL /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 Fm$" * BG COMMON CHANGE 32 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 32 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 40 * # OF BLANK ID SEGMENTS 55 * # OF BLANK SHORT ID SEGMENTS 20 * # OF BLANK ID EXTENSIONS 64 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 4,RT * PART 01? 5,RT * PART 02? 15,BG * PART 03? /E * PART 04? * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,15 * FILE MANAGER LOADR,15 * RTE-IV LOADER FTN4,15 * FORTRAN IV ASMB,15 * ASSEMBLER XREF,15 * CROSS REF. RT4GN,15 * RTE-IV GENERATOR SWTCH,15 * RTE-IV SWITCH SAVE,15 * SAVE UTILITY RSTOR,15 * RSTOR UTILITY COPY,15 * COPY UTILITY VERFY,15 * VERFY UTILITY KEYS,15 * SOFT KEY UTILITY KYDMP,15 * SOFT KEY DUMP UTILITY EDITR,15 * RTE EDITOR /E * * ASSIGN PROGRAM PARTITIONS? * /E R$   02170-18004 1940 S C0122 &ANPS4              H0101 zn&LFPS4::13 * LIST FILE * PRIMARY SYSTEM #4 ANSWER FILE (7900) 790926 (1940) YES * ECHO ON 75 * ESTIMATED # OF TRACKS !PRMS4::13 * ABSOLUTE SYSTEM FILE 7900 * TARGET DISC 14 * DISC CHANNEL 203,0 * SUBCHANNEL 0 203,0 * SUBCHANNEL 1 /E 1 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YE * MR ACCESS TA II YE * RT MEMORY LOCK YE * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IV SYSTEM MODULES * REL,%CR4S1::-2 REL,%CR4S2::-2 * * DRIVERS MODULES * REL,%DVR00::-2 * RS232 TERMINALS REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT REL,%DVR31::-2 * 7900 DISC DRIVER REL,%2DV37::-2 * 59310B HPIB INTERFACE REL,%DVA12::-2 * 2607-2635 LINE PRINTER REL,%DVB12::-2 * 2608 LINE PRINTER REL,%DVR07::-10 * 12790A MULTI-POINT I/F REL,%DVA65::-10 * DS/1000 * * SPECIAL SYSTEM SOFTWARE * REL,%4DP43::-2 * POWER FAIL REL,%$CNFX::-2 * CONFIGURATOR EXTENSION REL,%DBUGR::-2 * USER DEBUG * * USER PROGRAMS * REL,%BMPG1::-2 * RTE-IV FMGR REL,%BMPG2::-2 REL,%BMPG3::-2 REL,%AUTO7::-10 * POWER FAIL PROGRAM REL,%4WHZT::-2 * RTE-IV WHZAT REL,%4LDR ::-2 * RTE-IV LOADER REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB REL,%4SPO2::-2 REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. REL,%FTN4::-2 * RTE FORTRAN IV, MAIN REL,%FFTN4::-2 *b RTE FORTRAN IV, SEGMENT ID SUBROUTINE REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 REL,%4XREF::-2 * RTE-IV CROSS REF. REL,%RT4G1::-2 * RTE-IV GENERATOR REL,%RT4G2::-2 REL,%4SWTH::-2 * RTE-IV SWITCH REL,%SAVE::-2 * SAVE UTILITY REL,%RESTR::-2 * RESTORE UTILITY REL,%COPY::-2 * COPY UTILITY REL,%VERFY::-2 * VERFY UTILITY REL,%DBKLB::-2 * DISC BACK-UP UTILITY REL,%LGTAT::-2 * DISC TRACK MAP UTILITY REL,%IB4A::-2 * HPIB LIBRARY REL,%SRQ.P::-2 * HPIB SERVICE REQUEST REL,%KEYS::-2 * SOFT KEYS REL,%KYDMP::-2 * KEY DUMP * * LIBRARIES * REL,%BMLIB::-2 * RTE BATCH LIBRARY REL,%CLIB ::-2 * RTE COMPILER LIBRARY REL,%FF4.N::-2 * RTE FTN-IV LIBRARY REL,%RLIB1::-2 * RTE REL. LIBRARY 1 REL,%RLIB2::-2 * RTE REL. LIBRARY 2 REL,%RLIB3::-2 * RTE REL. LIBRARY 3 REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY REL,%TSKSC::-10 * BASIC TASK SCHEDULER REL,%BAIMG::-10 * BASIC IMAGE LIBRARY REL,%MPLIB::-10 * MULTI-POINT LIBRARY REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY REL,%DBLIB::-10 * IMAGE LIBRARY * * DS/1000 SOFTWARE * REL,%QUEUE::-10 REL,%GRPM::-10 REL,%RTRY::-10 REL,%QCLM::-10 REL,%RFAM2::-10 REL,%EXECM::-10 REL,%EXECW::-10 REL,%DLIS1::-10 REL,%PROGL::-10 REL,%PTOPM::-10 REL,%UPLIN::-10 REL,%EDITD::-10 * DS/1000 INTERACTIVE EDITOR REL,%REMAT::-10 REL,%OPERM::-10 REL,%NDTGN::-10 REL,%LSTEN::-10 REL,%DSLB1::-10 REL,%DSLB2::-10 REL,%DSLB3::-10 DISPLAY UNDEFS /E WHZAT,3,41 AUTOR,4,10 PRMPT,1,10 R$PN$,1,10 TTYEV,17 TRAP,30 .DBRN,30 LOADR,3,89 FTN4,3,89 ASMB,3,89 XREF,3,89 LGTAT,3,89 GASP,19 /E .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 .FDV,RP,105060 IFIX,RP,105100 FLOAT,RP,105120 .MPY,RP,100200 .DIV,RP,100400 .DLD,RP,104200 .DST,RP,104400 .MVW,RP,105777 .EMAP,RP,105257 .EMIO,RP,105240 MMAP,RP,105241 Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVR31,D * EQT1: 7900 SYSTEM DISC 11,DVA65,X=7,T=240 * EQT2: DS/1000 COMM. PORT #1 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT #2 16,DVA05,B,X=13 * EQT4: 2645/48 SYSTEM CONSOLE 17,DVR37,X=57,T=6000 * EQT5: 59310B HPIB INTERFACE 20,DVA12,B,T=6000 * EQT6: 2607-2635 LINE PRINTER 21,DVR23,D,B,T=6000 * EQT7: 7970B MAGNETIC TAPE UNIT 23,DVR07,X=5 * EQT8: 12790A MULTI-POINT I/F 67,DVR07,X=5 * EQT9: MULTI-POINT TERMINAL #1 67,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #2 24,DVB12,B,X=5,T=6000 * EQT11: 2608 LINE PRINTER 25,DVR00,B,T=6000 * EQT12: RS232 TERMINAL 70,DVS43,X=18,M * EQT13: SPOOL 71,DVS43,X=18,M * EQT14: SPOOL 72,DVS43,X=18,M * EQT15: SPOOL 73,DVS43,X=18,M * EQT16: SPOOL 74,DVS43,X=18,M * EQT17: SPOOL 75,DVS43,X=18,M * EQT18: SPOOL 4,DVP43,M * EQT19: POWER FAIL /E * * DEVICE REFERENCE TABLE EN_TRIES * 4,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,1 * LU2 - 7900 SYSTEM DISC, REMOVABLE 0 * LU3 - RESERVED 4,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 4,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - DVA12 LINE PRINTER 11 * LU7 - 2608 LINE PRINTER 7 * LU8 - 7970B MAGNETIC TAPE UNIT 2,1 * LU9 - DS/1000 HARDWIRE COMM. PORT #1 3,1 * LU10 - DS/1000 HARDWIRE COMM. PORT #2 1,0 * LU11 - 7900 FIXED DISC 0 * LU12 - RESERVED 0 * LU13 - RESERVED 0 * LU14 - RESERVED 0 * LU15 - RESERVED 0 * LU16 - RESERVED 0 * LU17 - RESERVED 0 * LU18 - RESERVED 0 * LU19 - RESERVED 0 * LU20 - RESERVED 0 * LU21 - RESERVED 8 * LU22 - MULTI-POINT INTERFACE 9 * LU23 - MULTI-POINT TERMINAL #1 10 * LU24 - MULTI-POINT TERMINAL #2 0 * LU25 - RESERVED 0 * LU26 - RESERVED 0 * LU27 - RESERVED 0 * LU28 - RESERVED 0 * LU29 - RESERVED 5,0 * LU30 - 59310B HPIB INTERFACE 5,1 * LU31 - HPIB ADDRESS 1 5,2 * LU32 - HPIB ADDRESS 2 5,3 * LU33 - HPIB ADDRESS 3 5,4 * LU34 - HPIB ADDRESS 4 5,5 * LU35 - HPIB ADDRESS 5 5,6 * LU36 - HPIB ADDRESS 6 5,7 * LU37 - HPIB ADDRESS 7 5,8 * LU38 - HPIB ADDRESS 8 5,9 * LU39 - HPIB ADDRESS 9 13 * LU40 - SPOOL 14 * LU41 - SPOOL 15 * LU42 - SPOOL 16 * LU43 - SPOOL 17 * LU44 - SPOOL 18 * LU45 - SPOOL 19 * LU46 - POWER FAIL 12 * LU47 - #6RS232 TERMINAL 0 * LU48 - SPARE 0 * LU49 - SPARE 0 * LU50 - SPARE 0 * LU51 - SPARE 0 * LU52 - SPARE 0 * LU53 - SPARE 0 * LU54 - SPARE 0 * LU55 - SPARE 0 * LU56 - SPARE 0 * LU57 - SPARE 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 12,PRG,QUEUE * DS/1000 COMM. PORT #2 14,EQT,1 * 7900 SYSTEM DISC 15,EQT,1 * 7900 SYSTEM DISC 16,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 17,EQT,5 * 59310B HPIB INTERFACE 20,EQT,6 * 2607-2635 LINE PRINTER 21,EQT,7 * 7970B MAGNETIC TAPE UNIT 22,EQT,7 * 7970B MAGNETIC TAPE UNIT 23,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 24,EQT,11 * 2608 LINE PRINTER 25,PRG,PRMPT * RS232 TERMINAL 67,ABS,0 * MULTI-POINT INTERFACE 70,EQT,13 * SPOOL 71,EQT,14 * SPOOL 72,EQT,15 * SPOOL 73,EQT,16 * SPOOL 74,EQT,17 * SPOOL 75,EQT,18 * SPOOL /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 32 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 32 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 40 * # OF BLANK ID SEGMENTS 55 * # OF BLANK SHORT ID SEGMENTS 20 * # OF BLANK ID EXTENSIONS 64 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 4,RT * PART 01? 5,RT $" * PART 02? 15,BG * PART 03? /E * PART 04? * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,15 * FILE MANAGER LOADR,15 * RTE-IV LOADER FTN4,15 * FORTRAN IV ASMB,15 * ASSEMBLER XREF,15 * CROSS REF. RT4GN,15 * RTE-IV GENERATOR SWTCH,15 * RTE-IV SWITCH SAVE,15 * SAVE UTILITY RSTOR,15 * RSTOR UTILITY COPY,15 * COPY UTILITY VERFY,15 * VERFY UTILITY KEYS,15 * SOFT KEY UTILITY KYDMP,15 * SOFT KEY DUMP UTILITY EDITR,15 * RTE EDITOR /E * * ASSIGN PROGRAM PARTITIONS? * /E $   02170-18005 1940 S C0122 &LFPS1              H0101 sv ECHO? * PRIMARY SYSTEM #1 ANSWER FILE (7906/20) 790926 40) YES * ECHO ON EST. # TRACKS IN OUTPUT FILE? 75 * ESTIMATED # OF TRACKS OUTPUT FILE NAME? !PRMS1::14 * ABSOLUTE SYSTEM FILE SYSTEM DISC? 7906 * TARGET DISC CONTROLLER SELECT CODE? 11 * DISC CHANNEL # TRKS, FIRST CYL #, HEAD #, # SURFACES, UNIT, # SPARES FOR SUBCHNL: 00? 256,0,0,2,0,8 * SUBCHANNEL 0, 7906/20 LU2 01? 203,132,0,2,0,5 * SUBCHANNEL 1, 7906/20 LU11 02? 203,236,0,2,0,5 * SUBCHANNEL 2, 7906/20 LU12 03? 138,340,0,2,0,4 * SUBCHANNEL 3, 7906/20 LU13 04? 203,0,2,1,0,5 * SUBCHANNEL 4, 7906/20 LU14 05? 198,208,2,1,0,5 * SUBCHANNEL 5, 7906/20 LU15 06? 400,0,3,1,0,11 * SUBCHANNEL 6, 7906/20 LU16 07? 400,0,4,1,0,11 * SUBCHANNEL 7, 7920 LU17 08? 1024,411,0,5,0,26 * SUBCHANNEL 8, 7920 LU18 09? 985,621,0,5,0,25 * SUBCHANNEL 9, 7920 LU19 10? /E SYSTEM SUBCHNL? 0 * SYSTEM SUBCHANNEL AUX DISC (YES OR NO OR # TRKS)? NO * NO AUX DISC TBG SELECT CODE? 10 * TBG PRIV. INT. SELECT CODE? 0 * NO PRIV. INT. MEM. RES. ACCESS TABLE AREA II? YE * MR ACCESS TA II RT MEMORY LOCK? YE * RT MEMORY LOCK BG MEMORY LOCK? YE * BG MEMORY LOCK SWAP DELAY? 50 * SWAP DELAY MEM SIZE? 64 * MEM SIZE BOOT FILE NAME? 0 * NO BOOT FILE PROG INPUT PHASE: - MAP MODULES - LINKS IN CURRENT - * - * RTE-IV SYSTEM MODULES - * - REL,%CR4S1::-2 - REL,%CR4S2::-2 - * - * DRIVERS MODULES - * - REL,%DVR00::-2 * RS232 TERMINALS - REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE - REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT - REL,%DVR32::-2 * 7906/20 DISC - REL,%2DV37::-2 * 59310B HPIB INTERFACE - REL,%DVA12::-2 * 2607-2635 LINE PRINTER - REL,%DVB12::-2 * 2608 LINE PRINTER - REL,%DVR07::-10 * 12790A MULTI-POINT I/F - * - * SPECIAL SYSTEM SOFTWARE - * - REL,%4DP43::-2 * POWER FAIL - REL,%$CNFX::-2 * CONFIGURATOR EXTENSION - REL,%DBUGR::-2 * USER DEBUG - * - * USER PROGRAMS - * - REL,%BMPG1::-2 * RTE-IV FMGR - REL,%BMPG2::-2 - REL,%BMPG3::-2 - REL,%EDITR::-2 * RTE EDITOR - REL,%AUTO7::-10 * MP AUTO RESTART PROGRAM - REL,%4WHZT::-2 * RTE-IV WHZAT - REL,%4LDR ::-2 * RTE-IV LOADER - REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB - REL,%4SPO2::-2 - REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. - REL,%FTN4::-2 * RTE FORTRAN IV, MAIN - REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE - REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 - REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 - REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 - REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 - REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 - REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 - REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN - REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 - REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMEN{T 1 - REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 - REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 - REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 - REL,%4XREF::-2 * RTE-IV CROSS REF. - REL,%RT4G1::-2 * RTE-IV GENERATOR - REL,%RT4G2::-2 - REL,%4SWTH::-2 * RTE-IV SWITCH - REL,%SAVE::-2 * SAVE UTILITY - REL,%RESTR::-2 * RESTORE UTILITY - REL,%COPY::-2 * COPY UTILITY - REL,%VERFY::-2 * VERFY UTILITY - REL,%DBKLB::-2 * DISC BACK-UP UTILITY - REL,%LGTAT::-2 * DISC TRACK MAP UTILITY - REL,%IB4A::-2 * HPIB LIBRARY - REL,%SRQ.P::-2 * HPIB SERVICE REQUEST - REL,%KEYS::-2 * SOFT KEYS - REL,%KYDMP::-2 * KEY DUMP - * - * LIBRARIES - * - REL,%BMLIB::-2 * RTE BATCH LIBRARY - REL,%CLIB ::-2 * RTE COMPILER LIBRARY - REL,%FF4.N::-2 * RTE FTN-IV LIBRARY - REL,%RLIB1::-2 * RTE REL. LIBRARY 1 - REL,%RLIB2::-2 * RTE REL. LIBRARY 2 - REL,%RLIB3::-2 * RTE REL. LIBRARY 3 - REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY - REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY - REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY - REL,%TSKSC::-10 * BASIC TASK SCHEDULER - REL,%BAIMG::-10 * BASIC IMAGE LIBRARY - REL,%MPLIB::-10 * MULTI-POINT LIBRARY - REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY - REL,%DBLIB::-10 * IMAGE LIBRARY - DISPLAY UNDEFS UNDEFS &6940 - /E UNDEFS &6940 PARAMETERS - EDITR,3,50 - WHZAT,3,41 - AUTOR,4,10 - PRMPT,1,10 * MULTI-TERMINAL INTERRUPT - R$PN$,1,10 - TTYEV,17}M - TRAP,30 - .DBRN,30 - LOADR,3,89 - FTN4,3,89 - ASMB,3,89 - XREF,3,89 - LGTAT,3,89 - GASP,19 - /E CHANGE ENTS? - .FAD,RP,105000 - .FSB,RP,105020 - .FMP,RP,105040 - .FDV,RP,105060 - IFIX,RP,105100 - FLOAT,RP,105120 - .MPY,RP,100200 - .DIV,RP,100400 - .DLD,RP,104200 - .DST,RP,104400 - .MVW,RP,105777 - .EMAP,RP,105257 - .EMIO,RP,105240 - MMAP,RP,105241 - Z$DBL,RP,3 * THREE WORD FLOATING POINT - /E TABLE AREA I EQUIPMENT TABLE ENTRY EQT 01? * * EQUIPMENT TABLE ENTRIES * 11,DVR32,D * EQT1: 7906/20 SYSTEM DISC EQT 02? 12,DVA05,B,X=13 * EQT2: 2645/2648 SYSTEM CONSOLE EQT 03? 13,DVR37,X=57,T=6000 * EQT3: 59310B HPIB INTERFACE EQT 04? 14,DVA12,B,T=6000 * EQT4: 2607-2635 LINE PRINTER EQT 05? 15,DVR23,D,B,T=6000 * EQT5: 7970B MAGNETIC TAPE UNIT EQT 06? 17,DVR07,X=5 * EQT6: 12790A MULTI-POINT I/F EQT 07? 67,DVR07,X=5 * EQT7: MULTI-POINT TERMINAL #1 EQT 08? 67,DVR07,X=5 * EQT8: MULTI-POINT TERMINAL #2 EQT 09? 20,DVB12,B,X=5,T=6000 * EQT9: 2608 LINE PRINTER EQT 10? 21,DVR00,B,T=6000 * EQT10: RS232 TERMINAL EQT 11? 70,DVS43,X=18,M * EQT11: SPOOL EQT 12? 71,DVS43,X=18,M * EQT12: SPOOL EQT 13? 72,DVS43,X=18,M * EQT13: SPOOL EQT 14? 73,DVS43,X=18,M * EQT14: SPOOL EQT 15? 74,DVS43,X=18,M * EQT15: SPOOL EQT 16? 75,DVS43,X=18,M * EQT16: SPOOL EQT 17? 4,DVP43,M * EQT17: POWER FAIL EQT 18? /E 7 DEVICE REFERENCE TABLE 1 = EQT #? * * DEVICE REFERENCE TABLE ENTRIES * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 2 = EQT #? 1,0 * LU2 - 7906/20 SYS. DISC, REMOVABLE SUBCHN 0 3 = EQT #? 0 * LU3 - RESERVED 4 = EQT #? 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 5 = EQT #? 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 = EQT #? 4 * LU6 - DVA12 LINE PRINTER 7 = EQT #? 9 * LU7 - 2608 LINE PRINTER 8 = EQT #? 5 * LU8 - 7970B MAGNETIC TAPE UNIT 9 = EQT #? 0 * LU9 - RESERVED 10 = EQT #? 0 * LU10 - RESERVED 11 = EQT #? 1,1 * LU11 - 7906/20 SUBCHANNEL 1 12 = EQT #? 1,2 * LU12 - 7906/20 SUBCHANNEL 2 13 = EQT #? 1,3 * LU13 - 7906/20 SUBCHANNEL 3 14 = EQT #? 1,4 * LU14 - 7906/20 SUBCHANNEL 4 15 = EQT #? 1,5 * LU15 - 7906/20 SUBCHANNEL 5 16 = EQT #? 1,6 * LU16 - 7906/20 SUBCHANNEL 6 17 = EQT #? 1,7 * LU17 - 7920 SUBCHANNEL 7 18 = EQT #? 1,8 * LU18 - 7920 SUBCHANNEL 8 19 = EQT #? 1,9 * LU19 - 7920 SUBCHANNEL 9 20 = EQT #? 0 * LU20 - RESERVED 21 = EQT #? 0 * LU21 - RESERVED 22 = EQT #? 6 * LU22 - MULTI-POINT INTERFACE 23 = EQT #? 7 * LU23 - MULTI-POINT TERMINAL #1 24 = EQT #? 8 * LU24 - MULTI-POINT TERMINAL #2 25 = EQT #? 0 * LU25 - RESERVED 26 = EQT #? 0 * LU26 - RESERVED 27 = EQT #? 0 * LU27 - RESERVED 28 = EQT #?  0 * LU28 - RESERVED 29 = EQT #? 0 * LU29 - RESERVED 30 = EQT #? 3,0 * LU30 - 59310B HPIB INTERFACE 31 = EQT #? 3,1 * LU31 - HPIB ADDRESS 1 32 = EQT #? 3,2 * LU32 - HPIB ADDRESS 2 33 = EQT #? 3,3 * LU33 - HPIB ADDRESS 3 34 = EQT #? 3,4 * LU34 - HPIB ADDRESS 4 35 = EQT #? 3,5 * LU35 - HPIB ADDRESS 5 36 = EQT #? 3,6 * LU36 - HPIB ADDRESS 6 37 = EQT #? 3,7 * LU37 - HPIB ADDRESS 7 38 = EQT #? 3,8 * LU38 - HPIB ADDRESS 8 39 = EQT #? 3,9 * LU39 - HPIB ADDRESS 9 40 = EQT #? 11 * LU40 - SPOOL 41 = EQT #? 12 * LU41 - SPOOL 42 = EQT #? 13 * LU42 - SPOOL 43 = EQT #? 14 * LU43 - SPOOL 44 = EQT #? 15 * LU44 - SPOOL 45 = EQT #? 16 * LU45 - SPOOL 46 = EQT #? 17 * LU46 - POWER FAIL 47 = EQT #? 10 * LU47 - RS232 TERMINAL 48 = EQT #? 0 * LU48 - SPARE 49 = EQT #? 0 * LU49 - SPARE 50 = EQT #? 0 * LU50 - SPARE 51 = EQT #? 0 * LU51 - SPARE 52 = EQT #? 0 * LU52 - SPARE 53 = EQT #? 0 * LU53 - SPARE 54 = EQT #? 0 * LU54 - SPARE 55 = EQT #? 0 * LU55 - SPARE 56 = EQT #? 0 * LU56 - SPARE 57 = EQT #? 0 * LU57 - SPARE 58 = EQT #? 0 * LU58 - SPARE 59 = EQT #? 0 * LU59 - SPARE 60 = EQT #? 0 d * LU60 - SPARE 61 = EQT #? 0 * LU61 - SPARE 62 = EQT #? 0 * LU62 - SPARE 63 = EQT #? 0 * LU63 - SPARE 64 = EQT #? /E INTERRUPT TABLE - * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL - 11,EQT,1 * 7906/20 SYSTEM DISC - 12,PRG,PRMPT * 2645/2648 SYSTEM CONSOLE - 13,EQT,3 * 59310B HPIB INTERFACE - 14,EQT,4 * 2607-2635 LINE PRINTER - 15,EQT,5 * 7970B MAGNETIC TAPE UNIT - 16,EQT,5 * 7970B MAGNETIC TAPE UNIT - 17,PRG,PRMPT * 12790A MULTI-POINT INTERFACE - 20,EQT,9 * 2608 LINE PRINTER - 21,PRG,PRMPT * RS232 TERMINAL - 67,ABS,0 * MULTI-POINT INTERFACE - 70,EQT,11 * SPOOL - 71,EQT,12 * SPOOL - 72,EQT,13 * SPOOL - 73,EQT,14 * SPOOL - 74,EQT,15 * SPOOL - 75,EQT,16 * SPOOL - /E TABLE AREA I MODULES $$TB1(0099)03276 03420 92067-16014 REV.1926 790506 DRIVR PART 00002 CHANGE DRIVR PART? * 2 * CHANGE DP SIZE DP 01: DVR32(0099)04000 05524 92060-16031 REV 1840 780515 DVR00(0099)05546 06652 29029-60001 REV 1740 770808 DVR23(0099)06673 07606 92202-16001 REV.1913 - 790202 SUBSYSTEM GLOBAL AREA SP.CL )10000 10002 92067-16028 REV.1805 780317 TRAP )10003 11041 92101-16010 770208 .DBRN )11042 11072 92063-12001 REV.1826 770601 RT COMMON 00000 CHANGE RT COMMON ? 0 * RT COMMON CHANGE RT COM ADD 11073 BG COMMON 00453 CHANGE BG COMMON ? 0 * BG COMMON CHANGE BG COM ADD 11073 BG COMMON 00453 SYSTEM DRIVER AREA DVP43(0099)12000 12637 92067-16004 REV.1926 790506 DVS43(0099)12660 15644 92067-16028 REV.1926 790505 TABLE AREA II # OF I/O CLASSES? 32 * # OF I/O CLASSES # OF LU MAPPINGS? 16 * # OF LU MAPPINGS # OF RESOURCE NUMBERS? 32 * # OF RESOURCE NUMBERS BUFFER LIMITS (LOW, HIGH)? 100,400 * BUFFER LIMITS # OF BLANK ID SEGMENTS? 40 * # OF BLANK ID SEGMENTS # OF BLANK SHORT ID SEGMENTS? 55 * # OF BLANK SHORT ID SEGMENTS # OF BLANK ID EXTENSIONS? 20 * # OF BLANK ID EXTENSIONS MAXIMUM # OF PARTITIONS? 64 * MAX NUMBER OF PARTITIONS TABLE AREA II MODULES $$TB2(0099)25670 25736 92067-16014 REV.1926 790510 SYSTEM $CSY4(0099)25737 25736 92067-16014 REV.1926 790506 DISP4(0099)25743 33312 92067-16014 REV.1926 790221 RTIME(0099)33363 34167 92067-16014 REV.1805 780104 $ASC4(0099)34202 34274 92067-16014 REV.1805 780125 RTIO4(0099)34374 41676 92067-16014 REV.1926 790506 EXEC4(0099)41733 44336 92067-16014 REV.1926 790506 $TRN4(0099)44344 44516 92067-16014 REV.1805 780104 SCHD4(0099)44547 51722 92067-16014 REV.1926 790506 $ALC (0099)51764 52171 92067-16014 REV.1805 741120 OCMD4(0099)52173 53334 92067-16014 REV.1805 771102 PERR4(0099)53340 54302 92067-16014 REV.1840 780731 DBKLB(0099)54317 54316 92060-16043 REV.1901 781108 $BALB(0099)54317 54316 92002-16006 REV.1926 790502 FF4.A(0099)54317 54316 24998-16002 REV.1926 790516 RLIB1(0099)54317 54316 24998-16001 REV.1926 790501 RLIB2(0099)54317 54316 24998-16009 REV.1926 790501 RLIB3(0099)54317 54316 24998-16011 REV.1926 790501 $YSLB(0099)54317 54316 92067-16035 REV.1926 790506 MPLIB(0099)54317 54316 91730-12001 REV 1926 MULTIPOINT LIBRARY 790509 DECAR(0099)54317 54316 24306-60001 REV.1940 790618 $CNFG(0099)54362 61354 92067-16014 REV.1926 790610 PARTITION DRIVERS DP 02: DVA05(0099)04102 07164 92001-16035 REV. CODE 1913 9-28-78 DP 03: DVR37(0099)04122 06633 59310-16003 REV.1940 790724 EQTX=18+7*D DVA12(0099)06642 07542 92001-16020 780511 REV 1826 DP 04: DVB12(0099)04000 05561 92062-16004 REV 1926 790504 1030PM .LBT 05562 05612 770518 24998-16001 DP 05: DVR07(0099)04107 06543 91730-16001 REV 1926 790509 &DV07X MEMORY RESIDENT LIBRARY LURQ 26000 26360 92067-16035 REV.1805 771013 $ALRN 26361 26476 92067-16035 REV.1805 770715 IDGET 26477 26561 92067-16037 REV.1805 771227 MEMORY RESIDENTS EXTND(0010)30002 30154 92067-16028 REV.1805 771115 RMPAR 30155 30217 781106 24998-16001 SPOUT(0011)30222 31175 92067-16028 REV.1805 780309 .DRCT 31176 31204 92067-16035 REV.1805 741120 PRMPT(0010)31207 31641 92067-16003 REV.1926 790506 $BMON 31642 31642 92002-12001 REV.1940 790729 TRMLU 31643 31736 92067-16035 REV.1805 771117 R$PN$(0010)31744 32477 92067-16003 REV.1926 790506 TRMLU 32501 32574 92067-16035 REV.1805 771117 SRQ.P(0030)32577 32645 59310-16005 REV 1805 780110 RMPAR 32646 32710 781106 24998-16001 TTYEV(0002)32713 32722 29102-60013 RT DISC RESIDENTS D.RTR(0001)26042 30133 92002-16007 REV.1926 790502 P.PAS 30134 30162 92002-16006 740801 PRTN 30163 30275 92067-16035 REV.1805 771005 SMP (0030)26042 31437 92067-16028 REV.1940 790802 READF 31463 32221 92002-16006 770801 POST 32246 32274 92002-16006 740801 M P.PAS 32275 32323 92002-16006 740801 RW$UB 32324 32575 92002-16006 750422 RWND$ 32576 32720 92002-16006 771121 R/W$ 32721 33054 92002-16006 740801 RMPAR 33055 33117 781106 24998-16001 .ENTR 33120 33207 750701 24998-16001 .DFER 33210 33261 750701 24998-16001 RNRQ 33262 33523 92067-16035 REV.1805 780222 $ALRN 33524 33641 92067-16035 REV.1805 770715 PRTN 33642 33754 92067-16035 REV.1805 771005 .DRCT 33755 33763 92067-16035 REV.1805 741120 REIO 33764 34110 92067-16035 REV.1926 790506 JOB (0030)26042 30022 92067-16028 REV. 1940 790802 OPEN 30023 30210 92002-16006 741205 READF 30211 30747 92002-16006 770801 CLOSE 30750 31066 92002-16006 771115 POST 31067 31115 92002-16006 740801 $OPEN 31116 31324 92002-16006 740801 P.PAS 31325 31353 92002-16006 740801 RW$UB 31354 31625 92002-16006 750422 RWND$ 31626 31750 92002-16006 771121 R/W$ 31753 32106 92002-16006 740801 SPOPN 32110 32167 92002-16006 REV.1826 780413 RMPAR 32170 32232 781106 24998-16001 .ENTR 32233 32322 750701 24998-16001 .DFER 32323 32374 750701 24998-16001 RNRQ 32375 32636 92067-16035 REV.1805 780222 LURQ 32637 33217 92067-16035 REV.1805 771013 $ALRN 33220 33335 92067-16035 REV.1805 770715 .DRCT 33336 33344 92067-16035 REV.1805 741120 REIO 33345 33471 92067-16035 REV.1926 790506 $PARS 33472 33712 92067-16035 REV.1840 780811 BG DISC RESIDENTS $CNFX(0099)26042 31614 92067-16006 REV.1926 790412 $PARS 31624 32044 92067-16035 REV.1840 780811 $CVT3 32051 32136 92067-16035 REV.1805 770621 FMGR (0090)26042 27017 92002-16008 REV.1901 760627 FM.CM 27020 31061 92002-16008 REV.1926 790502 OPEN 31202 31367 92002-16006 741205 CLOSE 31370 31506 92002-16006 771115 $OPEN 31507 31715 92002-16006 740801 RWND$ 31724 32046 92002-16006 771121 R/W$ 32053 32206 92002-16006 740801 RMPAR 32207 32251 781106 24998-16001 .ENTR 32252 32341 750701 24998-16001 .DFER 32342 32413 750701 24998-16001 LURQ 32414 32774 92067-16035 REV.1805 771013 $ALRN 32775 33112 92067-16035 REV.1805 770715 .DRCT 33113 33121 92067-16035 REV.1805 741120 IFBRK 33122 33155 92067-16035 REV.1913 790124 IFTTY 33156 33231 92067-16035 REV.1805 771208 FMGR0(0099)33232 33237 92002-16008 740801 PK.. 33246 34671 CR.. 35020 36105 92002-16008 REV.1826 780414 READF 36132 36670 92002-16006 770801 RWNDF 36671 36752 92002-16006 740801 NAM.. 36753 37047 92002-16006 740801 P.PAS 37050 37076 92002-16006 740801 RW$UB 37077 37350 92002-16006 750422 LOCK. 37351 37420 92002-16006 771118 FM.UT 37421 40566 92002-16006 781103 REV.1901 CREA. 40567 40640 CREAT 40641 41124 92002-16006 REV.1926 790501 REIO 41125 41251 92067-16035 REV.1926 790506 COR.A 41252 41272 92067-16035 REV.1805 770621 FMGR1(0099)33232 33360 92002-16008 760929 .PARS 33363 34646 92002-16008 765025 C.TAB 34754 35117 92002-16008 760720 CA.. 35120 35341 92002-16008 760513 REA.C 35342 35414 92002-16008 770823 EE.. 35415 35455 92002-16008 760512 TR.. 35456 35707 92002-16008 REV.1826 780419 MR.. 35710 36152 92002-16008 760621 SE.. 36174 36360 IF.. 36361 36576 92002-16008 760929 AB.. 36577 37025 92002-16008 REV.1826 780420 DP.. 37026 37073 92002-16008 760511 READF 37074 37632 92002-16006 770801 POSNT 37641 40104 92002-16006 760702 P.PAS 40125 40153 92002-16006 740801 RW$UB 40154 40425 92002-16006 7504220 WRLG. 40426 40575 92002-16006 760622 CK.SM 40576 40721 92002-16006 REV. 1805 771205 REIO 40722 41046 92067-16035 REV.1926 790506 MESSS 41047 41206 92067-16035 REV.1840 780724 CNUMD 41207 41226 92001-16035 REV.1805 770621 $CVT3 41227 41314 92067-16035 REV.1805 770621 FMGR2(0099)33232 33242 92002-16008 760622 IN.IT 33245 34342 92002-16008 780106 IN.. 34417 36325 92002-16008 REV.1901 781103 MC.. 36370 36727 92002-16008 790727 REV.1940 RC.. 36730 37115 PU.. 37116 37340 PURGE 37341 37437 92002-16006 740801 NAM.. 37440 37534 92002-16006 740801 J.PUT 37535 37561 92002-16006 740801 IPUT 37562 37602 92002-16006 740801 FID. 37603 37722 MSC. 37723 37757 LOCK. 37760 40027 92002-16006 771118 FM.UT 40032 41177 92002-16006 781103 REV.1901 .OPSY 41200 41202 771116 24998-16001 FMGR3(0099)33232 33237 92002-16008 760720 DL.. 33244 34541 92002-16008 771020 F.SET 34644 35034 92002-16006 760719 CS.. 35035 35263 92002-16008 760318 READF 35270 36026 92002-16006 770801 LOCF 36032 36220 92002-16006 750416 P.PAS 36221 36247 92002-16006 740801 RW$UB 36250 36521 92002-16006 750422 MSC. 36522 36556 FM.UT 36557 37724 92002-16006 781103 REV.1901 CK.ID 37725 37756 92002-16006 REV.1826 780403 LULU. 37761 40051 92002-16006 760227 REIO 40054 40200 92067-16035 REV.1926 790506 FMGR4(0099)33232 33243 92002-16008 760622 ST.DU 33245 34516 92002-16008 760622 CO.. 34572 35274 F.UTM 35275 35536 92002-16008 760514 CREAT 35543 36026 92002-16006 REV.1926 790501 READF 36027 36565 92002-16006 770801 RWNDF 36566 36647 92002-16006 740801 LOCF 36650 37036 92002-16006 750416 NAM.. 37037 37133 92002-16006 7408t01 P.PAS 37134 37162 92002-16006 740801 RW$UB 37163 37434 92002-16006 750422 FM.UT 37435 40602 92002-16006 781103 REV.1901 CREA. 40603 40654 CK.SM 40655 41000 92002-16006 REV. 1805 771205 REIO 41001 41125 92067-16035 REV.1926 790506 FMGR5(0099)33232 33244 92002-16008 760622 RU.. 33247 34110 92002-16008 781130 REV.1901 RP.. 34122 34231 92002-16008 761004 SESSN 34232 34307 92002-16008 REV.1826 780403 .RENM 34310 34434 92002-16008 761004 .EXCP 34435 34501 92002-16008 761002 IDDUP 34502 35166 92002-16008 REV.1826 780503 IDRPL 35167 35773 92002-16008 REV.1940 790726 IDRPD 35774 36314 92002-16008 REV.1826 780525 OPMES 36317 36507 92002-16008 760513 TL.. 36510 36527 READF 36530 37266 92002-16006 770801 NAM.. 37267 37363 92002-16006 740801 P.PAS 37364 37412 92002-16006 740801 RW$UB 37413 37664 92002-16006 750422 ID.A 37665 37763 92002-16008 REV.1826 780403 CNT. 37764 40220 92002-16006 760520 FCONT 40235 40327 92002-16006 REV.1826 780413 BUMP. 40330 40366 92002-16006 741025 SET.T 40367 40415 92002-16006 740801 TL. 40416 40451 92002-16006 760322 ST.TM 40452 40506 92002-16006 741223 REIO 40507 40633 92067-16035 REV.1926 790506 MESSS 40634 40773 92067-16035 REV.1840 780724 FMGR6(0099)33232 33242 92002-16008 740801 CN.. 33243 33303 JO.. 33310 34340 92002-16008 REV.1926 790501 EO.. 34411 35214 92002-16008 REV.1826 780420 OF.. 35215 35310 92002-16008 740820 LG.. 35311 35336 92002-16008 760517 NAMF 35337 35512 92002-16006 771115 READF 35535 36273 92002-16006 770801 POST 36314 36342 92002-16006 740801 NAM.. 36343 36437 92002-16006 740801 P.PAS 36440 36466 92002-16006 740801 RW$UB 3g6467 36740 92002-16006 750422 SPOPN 36741 37020 92002-16006 REV.1826 780413 SET.T 37021 37047 92002-16006 740801 ST.TM 37050 37104 92002-16006 741223 B.FLG 37105 37153 92002-16006 741118 LULU. 37154 37244 92002-16006 760227 RANGE 37245 37270 92002-16006 740801 ONOFF 37271 37634 92002-16006 750128 EX.TM 37643 40060 92002-16006 771115 IPUT 40062 40102 92002-16006 740801 LU.CL 40103 40151 92002-16006 760702 AVAIL 40152 40244 92002-16006 741231 RNRQ 40245 40506 92067-16035 REV.1805 780222 REIO 40507 40633 92067-16035 REV.1926 790506 KCVT 40634 40647 92001-16035 REV.1805 770621 MESSS 40650 41007 92067-16035 REV.1840 780724 $CVT3 41010 41075 92067-16035 REV.1805 770621 FMGR7(0099)33232 33240 92002-16008 760702 ??.. 33243 35672 92002-16008 REV.1926 790502 SY.. 35673 35731 92002-16008 760520 NX.JB 35732 36663 92002-16008 REV.1926 790501 READF 36720 37456 92002-16006 770801 POST 37457 37505 92002-16006 740801 P.PAS 37506 37534 92002-16006 740801 RW$UB 37536 40007 92002-16006 750422 SPOPN 40013 40072 92002-16006 REV.1826 780413 B.FLG 40073 40141 92002-16006 741118 LULU. 40142 40232 92002-16006 760227 LU.CL 40233 40301 92002-16006 760702 RNRQ 40302 40543 92067-16035 REV.1805 780222 REIO 40544 40670 92067-16035 REV.1926 790506 MESSS 40671 41030 92067-16035 REV.1840 780724 LOGLU 41031 41101 92067-16035 REV.1826 780502 FMGR8(0099)33232 33240 92002-16008 740801 SA.. 33245 34217 92002-16008 760621 SP.. 34262 35240 92002-16008 REV.1826 780405 MS.. 35241 35534 READF 35555 36313 92002-16006 770801 RWNDF 36333 36414 92002-16006 740801 LOCF 36415 36603 92002-16006 750416 P.PAS 36604 36632 92002-16006 740801 RW$UB  36633 37104 92002-16006 750422 IPUT 37105 37125 92002-16006 740801 CREA. 37126 37177 CREAT 37200 37463 92002-16006 REV.1926 790501 NAM.. 37464 37560 92002-16006 740801 CK.SM 37561 37704 92002-16006 REV. 1805 771205 ID.A 37706 40004 92002-16008 REV.1826 780403 WRIS$ 40005 40043 92002-16006 740801 READ. 40044 40070 92002-16006 740801 %WRIS 40071 40466 750701 24998-16001 SREAD 40467 41131 771116 24998-16001 PRTN 41132 41244 92067-16035 REV.1805 771005 REIO 41245 41371 92067-16035 REV.1926 790506 FMGR9(0099)33232 33240 92002-16008 760720 LI.. 33241 34743 92002-16008 760720 CL.. 35056 35337 LU.. 35342 36526 92002-16008 790501 READF 36614 37352 92002-16006 770801 FSTAT 37353 37377 92002-16006 740801 LOCF 37400 37566 92002-16006 750416 POST 37567 37615 92002-16006 740801 P.PAS 37616 37644 92002-16006 740801 RW$UB 37660 40131 92002-16006 750422 SPOPN 40134 40213 92002-16006 REV.1826 780413 LULU. 40214 40304 92002-16006 760227 RANGE 40305 40330 92002-16006 740801 AVAIL 40331 40423 92002-16006 741231 RNRQ 40424 40665 92067-16035 REV.1805 780222 REIO 40666 41012 92067-16035 REV.1926 790506 KCVT 41013 41026 92001-16035 REV.1805 770621 $CVT3 41027 41114 92067-16035 REV.1805 770621 EDITR(0050)26042 33146 92002-16010 REV 1926 790503 CREAT 33147 33432 92002-16006 REV.1926 790501 OPEN 33433 33620 92002-16006 741205 READF 33636 34374 92002-16006 770801 CLOSE 34423 34541 92002-16006 771115 NAM.. 34542 34636 92002-16006 740801 $OPEN 34637 35045 92002-16006 740801 P.PAS 35046 35074 92002-16006 740801 RW$UB 35075 35346 92002-16006 750422 RWND$ 35347 35471 92002-16006 771121 R/W$ 35472 35625 92002-16006 740801 NAMR 35643 36137 750701 24998-16001 RMPAR 36144 36206 781106 24998-16001 .ENTR 36207 36276 750701 24998-16001 .DFER 36277 36350 750701 24998-16001 LURQ 36351 36731 92067-16035 REV.1805 771013 $ALRN 36732 37047 92067-16035 REV.1805 770715 PRTN 37050 37162 92067-16035 REV.1805 771005 REIO 37163 37307 92067-16035 REV.1926 790506 WHZAT(0041)26042 30165 92067-16007 REV.1926 790506 TMVAL 30166 30253 92067-16035 REV.1913 790124 .ENTR 30254 30343 750701 24998-16001 LOADR(0089)26042 43051 92067-16002 REV.1926 790502 CREAT 43052 43335 92002-16006 REV.1926 790501 OPEN 43336 43523 92002-16006 741205 READF 43545 44303 92002-16006 770801 POSNT 44324 44567 92002-16006 760702 APOSN 44570 44740 92002-16006 781103 REV.1901 LOCF 44741 45127 92002-16006 750416 CLOSE 45130 45246 92002-16006 771115 POST 45247 45275 92002-16006 740801 NAM.. 45276 45372 92002-16006 740801 $OPEN 45373 45601 92002-16006 740801 P.PAS 45602 45630 92002-16006 740801 RW$UB 45642 46113 92002-16006 750422 RWND$ 46126 46250 92002-16006 771121 R/W$ 46251 46404 92002-16006 740801 NAMR 46405 46701 750701 24998-16001 RMPAR 46702 46744 781106 24998-16001 .ENTR 46745 47034 750701 24998-16001 LURQ 47035 47415 92067-16035 REV.1805 771013 $ALRN 47416 47533 92067-16035 REV.1805 770715 PRTN 47534 47646 92067-16035 REV.1805 771005 REIO 47647 47773 92067-16035 REV.1926 790506 .DFER 47774 50045 750701 24998-16001 IFBRK 50051 50104 92067-16035 REV.1913 790124 $CVT3 50105 50172 92067-16035 REV.1805 770621 LOGLU 50173 50243 92067-16035 REV.1826 780502 FTIME 50244 50535 92067-16035 REV.1840 780731 GASP (0080)26042 27455 92067-16028 REV.1805U 780323 G1CEX 27456 27567 92002-16001 760615 ST.LU 27570 27745 92067-16028 780317 G1ROT 27751 30124 92002-16001 760615 G0QIP 30130 30415 92002-16001 760621 OPEN 30416 30603 92002-16006 741205 READF 30604 31342 92002-16006 770801 CLOSE 31343 31461 92002-16006 771115 POST 31462 31510 92002-16006 740801 $OPEN 31511 31717 92002-16006 740801 P.PAS 31720 31746 92002-16006 740801 RW$UB 31752 32223 92002-16006 750422 RWND$ 32226 32350 92002-16006 771121 R/W$ 32351 32504 92002-16006 740801 RMPAR 32505 32547 781106 24998-16001 .ENTR 32550 32637 750701 24998-16001 RNRQ 32640 33101 92067-16035 REV.1805 780222 $ALRN 33102 33217 92067-16035 REV.1805 770715 .DRCT 33220 33226 92067-16035 REV.1805 741120 REIO 33227 33353 92067-16035 REV.1926 790506 .DFER 33354 33425 750701 24998-16001 KCVT 33426 33441 92001-16035 REV.1805 770621 PARSE 33442 33461 92067-16035 REV.1805 770714 $PARS 33462 33702 92067-16035 REV.1840 780811 $CVT3 33703 33770 92067-16035 REV.1805 770621 GASP1(0099)33771 34003 92067-16028 REV.1805 760615 G1CDJ 34004 34370 G1CCJ 34371 35005 92002-16001 760615 G1CKS 35006 35622 92002-16001 760627 G1CDS 35640 36665 92002-16001 760621 G1STM 36673 37065 92002-16001 740807 CNUMD 37066 37105 92001-16035 REV.1805 770621 GASP2(0099)33771 34001 92067-16028 REV.1805 760615 G1CSD 34002 34420 92002-16001 760622 G1C?? 34421 35231 92002-16001 741027 G1CIN 35236 36600 92002-16001 760630 G1CDA 36660 37234 92002-16001 760627 CREAT 37235 37520 92002-16006 REV.1926 790501 PURGE 37521 37617 92002-16006 740801 NAM.. 37620 37714 92002-16006 740801 CNUMD 37715 37734 92001-16035 REV.1805 770621 FTN4 (0089)26042 276`62 92060-16092 790112 REV. 1926 NEX.F 27672 30356 92060-16092 790106 OA.F 30357 31124 92060-16092 781212 FA.F 31156 32746 92060-16092 790116 EX.F 33033 35265 92060-16092 790430 IC.F 35355 37363 92060-16092 790125 IDN.F 37442 41146 92060-16092 781212 SEG.F 41165 41201 92060-16093 770531 REV. 1913 C.BIN 41202 41237 92060-16102 770721 REV. 1901 $CLIB C.LST 41240 41275 92060-16102 770721 REV. 1901 $CLIB C.SAU 41276 41333 92060-16102 770721 REV. 1901 $CLIB C.SC0 41334 41371 92060-16102 770802 REV. 1901 $CLIB C.SC1 41372 41427 92060-16102 770802 REV. 1901 $CLIB C.TRN 41430 41650 92060-16102 781016 REV. 1901 $CLIB C.BBI 41651 42051 92060-16102 770515 REV. 1901 $CLIB C.BLI 42052 42252 92060-16102 770515 REV. 1901 $CLIB C.BSA 42253 42453 92060-16102 770515 REV. 1901 $CLIB C.BS0 42454 42654 92060-16102 771214 REV. 1901 $CLIB C.BS1 42655 43055 92060-16102 770515 REV. 1901 $CLIB RED.C 43056 43235 92060-16102 790403 REV. 1926 $CLIB RWN.C 43236 43334 92060-16102 780921 REV. 1901 $CLIB SPC.C 43335 43413 92060-16102 781101 REV. 1901 $CLIB WRT.C 43414 43526 92060-16102 770523 REV. 1901 $CLIB GES.C 43527 43643 92060-16102 780728 REV. 1901 $CLIB ADS.C 43644 44002 92060-16102 770809 REV. 1901 $CLIB P.PAS 44004 44032 92002-16006 740801 OLY.C 44033 44100 92060-16103 780815 REV. 1901 $CLIB GEX.C 44101 44552 92060-16105 781127 REV. 1901 $CLIB LURQ 44553 45133 92067-16035 REV.1805 771013 $ALRN 45134 45251 92067-16035 REV.1805 770715 IFBRK 45252 45305 92067-16035 REV.1913 790124 IFTTY 45306 45361 92067-16035 REV.1805 771208 F4.0 (0099)45362 51136 92060-16094 790125 REV. 1913 GMS.C 51137 51147 92060-16103 781006 REV. 1901 $CLIB ID.AD 51150 51212 92060-16103 780811 REV. 1901 $CLIB ID.A 51213 51311 92002-16008 REV.1826 780403 COR.A 51312 51332 92067-16035 REV.1805 770621 F4.1 (0099)45362 52153 92060-16095 790430 REV. 1926 F4.2 (0099)45362 46301 92060-16096 790430 REV. 1926 EOF.C 46302 46360 92060-16102 770523 REV. 1901 $CLIB F4.3 (0099)45362 47470 92060-16097 781212 REV. 1913 GMS.C 47471 47501 92060-16103 781006 REV. 1901 $CLIB ID.AD 47502 47544 92060-16103 780811 REV. 1901 $CLIB ID.A 47545 47643 92002-16008 REV.1826 780403 COR.A 47644 47664 92067-16035 REV.1805 770621 F4.4 (0099)45362 47343 92060-16098 790430 REV. 1926 EOF.C 47344 47422 92060-16102 770523 REV. 1901 $CLIB END.C 47423 47447 92060-16103 780726 REV. 1901 $CLIB OPN.C 47503 50377 92060-16102 790420 REV. 1926 $CLIB PRM.C 50412 50477 92060-16102 780921 REV. 1901 $CLIB CLO.C 50500 50627 92060-16102 790207 REV. 1913 $CLIB CRE.C 50630 50706 92060-16102 780921 REV. 1901 $CLIB NAM.. 50707 51003 92002-16006 740801 SUP.C 51004 51305 92060-16104 781106 REV. 1901 $CLIB GMM.C 51306 51352 92060-16103 780921 REV. 1901 $CLIB ID.AD 51353 51415 92060-16103 780811 REV. 1901 $CLIB ID.A 51416 51514 92002-16008 REV.1826 780403 NAMR 51517 52013 750701 24998-16001 .ENTR 52014 52103 750701 24998-16001 PRTN 52104 52216 92067-16035 REV.1805 771005 COR.A 52217 52237 92067-16035 REV.1805 770621 LOGLU 52240 52310 92067-16035 REV.1826 780502 F4.5 (0099)45362 51257 92060-16101 790103 REV. 1913 ASMB (0089)26042 33553 92067-16011 REV.1940 790803 C.BIA 33554 33611 92060-16102 780920 REV.1901 $CLIB C.BIN 33612 33647 92060-16102 770721 REV. 1901 $CLIB C.LST 33650 33705 92060-16102 770721 REV. 1901 $CLIB C.SOR 33706 33743 92060-16102 770815 REV. 1901 $CLIB C.TRN 33744 34164 92060-16102 781016 REV. 1901 $CLIB C.BBI 34165 34365 92060-1610@2 770515 REV. 1901 $CLIB C.BLI 34366 34566 92060-16102 770515 REV. 1901 $CLIB C.BSO 34567 34767 92060-16102 770515 REV. 1901 $CLIB EOF.C 34770 35046 92060-16102 770523 REV. 1901 $CLIB END.C 35047 35073 92060-16103 780726 REV. 1901 $CLIB PRM.C 35074 35161 92060-16102 780921 REV. 1901 $CLIB RED.C 35162 35341 92060-16102 790403 REV. 1926 $CLIB SPC.C 35342 35420 92060-16102 781101 REV. 1901 $CLIB WRT.C 35421 35533 92060-16102 770523 REV. 1901 $CLIB WARC. 35534 35562 92060-16102 770523 REV. 1901 $CLIB CLO.C 35563 35712 92060-16102 790207 REV. 1913 $CLIB GES.C 35715 36031 92060-16102 780728 REV. 1901 $CLIB ADS.C 36035 36173 92060-16102 770809 REV. 1901 $CLIB P.PAS 36174 36222 92002-16006 740801 SUP.C 36223 36524 92060-16104 781106 REV. 1901 $CLIB GMM.C 36525 36571 92060-16103 780921 REV. 1901 $CLIB OLY.C 36572 36637 92060-16103 780815 REV. 1901 $CLIB ID.AD 36640 36702 92060-16103 780811 REV. 1901 $CLIB ID.A 36703 37001 92002-16008 REV.1826 780403 GEX.C 37002 37453 92060-16105 781127 REV. 1901 $CLIB NAMR 37454 37750 750701 24998-16001 .ENTR 37753 40042 750701 24998-16001 LURQ 40044 40424 92067-16035 REV.1805 771013 $ALRN 40425 40542 92067-16035 REV.1805 770715 PRTN 40543 40655 92067-16035 REV.1805 771005 IFBRK 40656 40711 92067-16035 REV.1913 790124 COR.A 40712 40732 92067-16035 REV.1805 770621 IFTTY 40733 41006 92067-16035 REV.1805 771208 LOGLU 41007 41057 92067-16035 REV.1826 780502 ASMB0(0099)41060 41551 92067-16070 REV.1940 790713 OPN.C 41574 42470 92060-16102 790420 REV. 1926 $CLIB CRE.C 42501 42557 92060-16102 780921 REV. 1901 $CLIB NAM.. 42560 42654 92002-16006 740801 RUN.C 42655 43057 92060-16104 790215 REV. 1926 $CLIB C.RP 43060 43463 92060-16104 790405 REV. 1926 $CLIB IDG?DUP 43515 44201 92002-16008 REV.1826 780503 IDRPL 44205 45011 92002-16008 REV.1940 790726 IDRPD 45012 45332 92002-16008 REV.1826 780525 OPEN 45333 45520 92002-16006 741205 CLOSE 45521 45637 92002-16006 771115 $OPEN 45651 46057 92002-16006 740801 RWND$ 46062 46204 92002-16006 771121 R/W$ 46205 46340 92002-16006 740801 RMPAR 46341 46403 781106 24998-16001 .DFER 46404 46455 750701 24998-16001 MESSS 46456 46615 92067-16035 REV.1840 780724 IDGET 46616 46700 92067-16037 REV.1805 771227 ASMB1(0099)41060 43216 92067-16071 REV.1940 790713 RWN.C 43217 43315 92060-16102 780921 REV. 1901 $CLIB ASMB2(0099)41060 43207 92067-16072 REV.1940 790531 ASMB3(0099)41060 41705 92067-16073 REV.1940 790531 RWN.C 41707 42005 92060-16102 780921 REV. 1901 $CLIB ASMB4(0099)41060 42407 92067-16074 REV.1940 790531 XREF (0089)26042 33464 92067-16012 REV.1805 771121 C.LST 33465 33522 92060-16102 770721 REV. 1901 $CLIB C.SOR 33523 33560 92060-16102 770815 REV. 1901 $CLIB C.TRN 33561 34001 92060-16102 781016 REV. 1901 $CLIB C.BLI 34002 34202 92060-16102 770515 REV. 1901 $CLIB C.BSO 34203 34403 92060-16102 770515 REV. 1901 $CLIB EOF.C 34404 34462 92060-16102 770523 REV. 1901 $CLIB END.C 34463 34507 92060-16103 780726 REV. 1901 $CLIB OPN.C 34510 35404 92060-16102 790420 REV. 1926 $CLIB PRM.C 35405 35472 92060-16102 780921 REV. 1901 $CLIB RED.C 35473 35652 92060-16102 790403 REV. 1926 $CLIB RWN.C 35653 35751 92060-16102 780921 REV. 1901 $CLIB SPC.C 35754 36032 92060-16102 781101 REV. 1901 $CLIB WRT.C 36034 36146 92060-16102 770523 REV. 1901 $CLIB WARC. 36147 36175 92060-16102 770523 REV. 1901 $CLIB CLO.C 36176 36325 92060-16102 790207 REV. 1913 $CLIB CRE.C 36326 36404 92060-16102 780921 REV. 1901 $CLIB {NAM.. 36405 36501 92002-16006 740801 GES.C 36502 36616 92060-16102 780728 REV. 1901 $CLIB ADS.C 36617 36755 92060-16102 770809 REV. 1901 $CLIB P.PAS 36756 37004 92002-16006 740801 SUP.C 37005 37306 92060-16104 781106 REV. 1901 $CLIB GMM.C 37307 37353 92060-16103 780921 REV. 1901 $CLIB ID.AD 37354 37416 92060-16103 780811 REV. 1901 $CLIB ID.A 37417 37515 92002-16008 REV.1826 780403 GEX.C 37541 40212 92060-16105 781127 REV. 1901 $CLIB NAMR 40221 40515 750701 24998-16001 .ENTR 40516 40605 750701 24998-16001 LURQ 40606 41166 92067-16035 REV.1805 771013 $ALRN 41167 41304 92067-16035 REV.1805 770715 PRTN 41305 41417 92067-16035 REV.1805 771005 IFBRK 41420 41453 92067-16035 REV.1913 790124 COR.A 41454 41474 92067-16035 REV.1805 770621 IFTTY 41475 41550 92067-16035 REV.1805 771208 LOGLU 41551 41621 92067-16035 REV.1826 780502 RT4GN(0090)26042 41176 92067-16009 REV.1926 790427 CREAT 41177 41462 92002-16006 REV.1926 790501 OPEN 41463 41650 92002-16006 741205 READF 41663 42421 92002-16006 770801 APOSN 42450 42620 92002-16006 781103 REV.1901 LOCF 42621 43007 92002-16006 750416 CLOSE 43010 43126 92002-16006 771115 NAM.. 43127 43223 92002-16006 740801 $OPEN 43224 43432 92002-16006 740801 P.PAS 43433 43461 92002-16006 740801 RW$UB 43462 43733 92002-16006 750422 RWND$ 43740 44062 92002-16006 771121 R/W$ 44067 44222 92002-16006 740801 RMPAR 44223 44265 781106 24998-16001 .ENTR 44266 44355 750701 24998-16001 LURQ 44356 44736 92067-16035 REV.1805 771013 $ALRN 44737 45054 92067-16035 REV.1805 770715 REIO 45055 45201 92067-16035 REV.1926 790506 .DFER 45202 45253 750701 24998-16001 IFBRK 45254 45307 92067-16035 REV.1913 790124 COR.A 45310 45330 92067-16035 REV.1805 770621 CNUMD 45331 45350 92001-16035 REV.1805 770621 $CVT3 45351 45436 92067-16035 REV.1805 770621 GETST 45437 45736 92067-16035 REV.1805 771005 RT4G1(0090)45737 50134 92067-16009 REV.1926 790427 RT4G2(0090)45737 52071 92067-16009 REV.1926 790427 RWNDF 52072 52153 92002-16006 740801 RT4G3(0090)45737 52205 92067-16009 REV.1926 790427 RT4G4(0090)45737 51467 92067-16009 REV.1926 790427 RWNDF 51470 51551 92002-16006 740801 RT4G5(0090)45737 51737 92067-16009 REV.1926 790427 RT4G6(0090)45737 51447 92067-16009 REV.1926 790427 RT4G7(0090)45737 50223 92067-16009 REV.1926 790427 RT4G8(0090)45737 47347 92067-16009 REV.1926 790427 SWTCH(0010)26042 44302 92067-16010 REV.1926 790425 OPEN 44303 44470 92002-16006 741205 READF 44471 45227 92002-16006 770801 LOCF 45230 45416 92002-16006 750416 CLOSE 45417 45535 92002-16006 771115 $OPEN 45536 45744 92002-16006 740801 P.PAS 45745 45773 92002-16006 740801 RW$UB 45774 46245 92002-16006 750422 RWND$ 46247 46371 92002-16006 771121 R/W$ 46372 46525 92002-16006 740801 RMPAR 46526 46570 781106 24998-16001 .ENTR 46571 46660 750701 24998-16001 REIO 46661 47005 92067-16035 REV.1926 790506 .DFER 47006 47057 750701 24998-16001 CNUMD 47060 47077 92001-16035 REV.1805 770621 $CVT3 47100 47165 92067-16035 REV.1805 770621 GETST 47166 47465 92067-16035 REV.1805 771005 SWSG1(0010)47466 50466 92067-16010 REV.1805 780206 SWSG2(0010)47466 51304 92067-16010 REV.1840 780810 SAVE (0099)26042 26106 92060-16039 REV.1901 781108 DMT 26131 30132 BUFER 30134 30316 92060-16043 760721 CHDLU 30317 30460 CHUTP 30461 30674 LUTRK 30675 31362 MPFND 31373 32047 PRNTH  32051 32223 TPPOS 32224 32510 ASCDC 32511 32640 92060-16043 760622 DCASC 32641 32746 92060-16043 760622 DRT 32747 33036 92060-16043 760622 DSCAD 33037 33107 92060-16043 760622 MEMGT 33110 33123 92060-16043 760622 SUB 33124 33145 92060-16043 760622 READU 33146 33266 RMOVI 33267 33274 92060-16043 760622 MESG 33313 34445 92060-16043 770214 .TAPE 34446 34460 750701 24998-16001 IAND 34461 34470 750701 24998-16001 PAUSE 34471 34571 771122 24998-16001 RMPAR 34572 34634 781106 24998-16001 PAU.E 34635 34635 750701 24998-16001 PNAME 34636 34703 771121 24998-16001 .ENTR 34704 34773 750701 24998-16001 LURQ 34774 35354 92067-16035 REV.1805 771013 $ALRN 35355 35472 92067-16035 REV.1805 770715 REIO 35473 35617 92067-16035 REV.1926 790506 .DFER 35620 35671 750701 24998-16001 COR.A 35672 35712 92067-16035 REV.1805 770621 RSTOR(0099)26042 26151 92060-16040 REV.1901 781108 MTD 26256 30664 BUFER 30703 31065 92060-16043 760721 CHDLU 31066 31227 CHUTP 31230 31443 LUTRK 31472 32157 MATCH 32171 32560 90260-16043 770214 MPFND 32561 33235 PRNTH 33236 33410 TPPOS 33411 33675 ASCDC 33703 34032 92060-16043 760622 DCASC 34035 34142 92060-16043 760622 DRT 34143 34232 92060-16043 760622 DSCAD 34233 34303 92060-16043 760622 MEMGT 34304 34317 92060-16043 760622 SUB 34320 34341 92060-16043 760622 READU 34342 34462 RMOVI 34463 34470 92060-16043 760622 MESG 34471 35623 92060-16043 770214 .TAPE 35624 35636 750701 24998-16001 IAND 35637 35646 750701 24998-16001 PAUSE 35647 35747 771122 24998-16001 RMPAR 35752 36014 781106 24998-16001 PAU.E 36016 36016 750701 24998-1600k1 PNAME 36017 36064 771121 24998-16001 .ENTR 36065 36154 750701 24998-16001 LURQ 36155 36535 92067-16035 REV.1805 771013 $ALRN 36536 36653 92067-16035 REV.1805 770715 REIO 36654 37000 92067-16035 REV.1926 790506 .DFER 37001 37052 750701 24998-16001 COR.A 37053 37073 92067-16035 REV.1805 770621 COPY (0099)26042 26076 92060-16042 REV.1704 770214 DD 26124 30150 BUFER 30154 30336 92060-16043 760721 CHDLU 30337 30500 CHUTP 30501 30714 LUTRK 30715 31402 MATCH 31403 31772 90260-16043 770214 MPFND 31773 32447 ASCDC 32455 32604 92060-16043 760622 DCASC 32605 32712 92060-16043 760622 DRT 32713 33002 92060-16043 760622 DSCAD 33003 33053 92060-16043 760622 MEMGT 33054 33067 92060-16043 760622 SUB 33070 33111 92060-16043 760622 READU 33112 33232 RMOVI 33233 33240 92060-16043 760622 MESG 33257 34411 92060-16043 770214 IAND 34412 34421 750701 24998-16001 PAUSE 34422 34522 771122 24998-16001 RMPAR 34523 34565 781106 24998-16001 PAU.E 34566 34566 750701 24998-16001 PNAME 34567 34634 771121 24998-16001 .ENTR 34635 34724 750701 24998-16001 REIO 34725 35051 92067-16035 REV.1926 790506 .DFER 35052 35123 750701 24998-16001 COR.A 35124 35144 92067-16035 REV.1805 770621 VERFY(0099)26042 26107 92060-16041 REV.1704 761201 VRFSB 26110 27360 DCASC 27361 27466 92060-16043 760622 MEMGT 27467 27502 92060-16043 760622 .TAPE 27503 27515 750701 24998-16001 IAND 27516 27525 750701 24998-16001 PAUSE 27526 27626 771122 24998-16001 RMPAR 27627 27671 781106 24998-16001 PAU.E 27672 27672 750701 24998-16001 PNAME 27673 27740 771121 24998-16001 .ENTR 27744 30033 750701 24998-16001 RE_IO 30035 30161 92067-16035 REV.1926 790506 .DFER 30162 30233 750701 24998-16001 COR.A 30234 30254 92067-16035 REV.1805 770621 LGTAT(0089)26042 30115 92067-16008 REV.1926 790504 IFBRK 30116 30151 92067-16035 REV.1913 790124 $CVT3 30152 30237 92067-16035 REV.1805 770621 KEYS (0075)26043 35110 CREAT 35114 35377 92002-16006 REV.1926 790501 OPEN 35400 35565 92002-16006 741205 READF 35604 36342 92002-16006 770801 CLOSE 36365 36503 92002-16006 771115 NAM.. 36504 36600 92002-16006 740801 $OPEN 36601 37007 92002-16006 740801 P.PAS 37010 37036 92002-16006 740801 RW$UB 37037 37310 92002-16006 750422 RWND$ 37311 37433 92002-16006 771121 R/W$ 37434 37567 92002-16006 740801 ..MAP 37570 37663 751101 24998-16001 CLRIO 37664 37672 750701 24998-16001 IAND 37673 37702 750701 24998-16001 IOR 37703 37712 750701 24998-16001 RMPAR 37713 37755 781106 24998-16001 .ENTR 37760 40047 750701 24998-16001 REIO 40051 40175 92067-16035 REV.1926 790506 .DFER 40176 40247 750701 24998-16001 KCVT 40250 40263 92001-16035 REV.1805 770621 PARSE 40264 40303 92067-16035 REV.1805 770714 $PARS 40304 40524 92067-16035 REV.1840 780811 $CVT3 40525 40612 92067-16035 REV.1805 770621 KYDMP(0010)26042 27366 OPEN 27367 27554 92002-16006 741205 READF 27572 30330 92002-16006 770801 CLOSE 30350 30466 92002-16006 771115 $OPEN 30467 30675 92002-16006 740801 P.PAS 30676 30724 92002-16006 740801 RW$UB 30725 31176 92002-16006 750422 RWND$ 31177 31321 92002-16006 771121 R/W$ 31322 31455 92002-16006 740801 CLRIO 31456 31464 750701 24998-16001 IAND 31465 31474 750701 24998-16001 RMPAR 31475 31537 781106 24998-16001 .ENTR 315E40 31627 750701 24998-16001 REIO 31630 31754 92067-16035 REV.1926 790506 .DFER 31757 32030 750701 24998-16001 KCVT 32036 32051 92001-16035 REV.1805 770621 $CVT3 32052 32137 92067-16035 REV.1805 770621 AUTOR(0010)10042 10431 91730-16009 REV.1926 790206 XLUEX 10432 10542 92067-16035 REV.1913 790119 .ENTR 10543 10632 750701 24998-16001 FIXMP 10633 10725 91730-1X008 REV 1901 781026 RT PARTITION REQMTS: D.RTR 03 PAGES SMP 05 PAGES JOB 04 PAGES BG PARTITION REQMTS: $CNFX 04 PAGES FMGR 07 PAGES EDITR 06 PAGES WHZAT 03 PAGES LOADR 11 PAGES GASP 06 PAGES FTN4 12 PAGES ASMB 10 PAGES XREF 07 PAGES RT4GN 12 PAGES SWTCH 11 PAGES SAVE 05 PAGES RSTOR 06 PAGES COPY 05 PAGES VERFY 03 PAGES LGTAT 03 PAGES KEYS 07 PAGES KYDMP 04 PAGES AUTOR 02 PAGES * MAXIMUM PROGRAM SIZE: W/O COM 29 PAGES W/ COM 28 PAGES W/ TA2 22 PAGES SYS AV MEM: 03104 WORDS 1ST PART PG 00036 CHANGE 1ST PART PG ? * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? SYS AV MEM: 03104 WORDS PAGES REMAINING: 00028 DEFINE PARTITIONS: PART 01? 4,RT * PART 01? PART 02? 8,RT * PART 02? PART 03? 16,BG * PART 03? PART 04? /E * PART 04? MODIFY PROGRAM PAGE REQUIREMENTS? - * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,16 * FILE MANAGER - LOADR,16 * RTE-IV LOADER - FTN4,16 * FORTRAN IV - ASMB,16 * ASSEMBLER - XREF,16 * CROSS REF. - RT4GN,16 2p * RTE-IV GENERATOR - SWTCH,16 * RTE-IV SWITCH - SAVE,16 * SAVE UTILITY - RSTOR,16 * RSTOR UTILITY - COPY,16 * COPY UTILITY - VERFY,16 * VERFY UTILITY - KEYS,16 * SOFT KEY UTILITY - KYDMP,16 * SOFT KEY DUMP UTILITY - EDITR,16 * RTE EDITOR - /E ASSIGN PROGRAM PARTITIONS? - * * ASSIGN PROGRAM PARTITIONS? * /E SYSTEM STORED ON DISC SYS SIZE: 54 TRKS, 010 SECS RT4GN FINISHED 0000 ERRORS 삨  3 02170-18006 1940 S C0122 &LFPS2              H0101 tw ECHO? * PRIMARY SYSTEM #2 ANSWER FILE (7900) 790926 (1940) YES * ECHO ON EST. # TRACKS IN OUTPUT FILE? 75 * ESTIMATED # OF TRACKS OUTPUT FILE NAME? !PRMS2::14 * ABSOLUTE SYSTEM FILE SYSTEM DISC? 7900 * TARGET DISC CONTROLLER SELECT CODE? 11 * DISC CHANNEL # TRKS, FIRST TRK ON SUBCHNL: 0? 203,0 * SUBCHANNEL 0 1? 203,0 * SUBCHANNEL 1 2? /E SYSTEM SUBCHNL? 1 * SYSTEM SUBCHANNEL AUX DISC (YES OR NO OR # TRKS)? NO * NO AUX DISC TBG SELECT CODE? 10 * TBG PRIV. INT. SELECT CODE? 0 * NO PRIV. INT. MEM. RES. ACCESS TABLE AREA II? YE * MR ACCESS TA II RT MEMORY LOCK? YE * RT MEMORY LOCK BG MEMORY LOCK? YE * BG MEMORY LOCK SWAP DELAY? 50 * SWAP DELAY MEM SIZE? 64 * MEM SIZE BOOT FILE NAME? 0 * NO BOOT FILE PROG INPUT PHASE: - MAP MODULES - LINKS IN CURRENT - * - * RTE-IV SYSTEM MODULES - * - REL,%CR4S1::-2 - REL,%CR4S2::-2 - * - * DRIVERS MODULES - * - REL,%DVR00::-2 * RS232 TERMINALS - REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE - REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT - REL,%DVR31::-2 * 7900 DISC - REL,%2DV37::-2 * 59310B HPIB INTERFACE - REL,%DVA12::-2 * 2607-2635 LINE PRINTER - REL,%DVB12::-2 * 2608 LINE PRINTER - REL,%DVR07::-10 * 12790A MULTI-POINT I/F - * - * & SPECIAL SYSTEM SOFTWARE - * - REL,%4DP43::-2 * POWER FAIL - REL,%$CNFX::-2 * CONFIGURATOR EXTENSION - REL,%DBUGR::-2 * USER DEBUG - * - * USER PROGRAMS - * - REL,%BMPG1::-2 * RTE-IV FMGR - REL,%BMPG2::-2 - REL,%BMPG3::-2 - REL,%EDITR::-2 * RTE EDITOR - REL,%AUTO7::-10 * AUTO RESTART PROGRAM - REL,%4WHZT::-2 * RTE-IV WHZAT - REL,%4LDR ::-2 * RTE-IV LOADER - REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB - REL,%4SPO2::-2 - REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. - REL,%FTN4::-2 * RTE FORTRAN IV, MAIN - REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE - REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 - REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 - REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 - REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 - REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 - REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 - REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN - REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 - REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 - REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 - REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 - REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 - REL,%4XREF::-2 * RTE-IV CROSS REF. - REL,%RT4G1::-2 * RTE-IV GENERATOR - REL,%RT4G2::-2 - REL,%4SWTH::-2 * RTE-IV SWITCH - REL,%SAVE::-2 * SAVE UTILITY - REL,%RESTR::-2 * RESTORE UTILITY - REL,%COPY::-2 * COPY UTILITY - REL,%VERFY::-2 * VERFY UTILITY -  REL,%DBKLB::-2 * DISC BACK-UP UTILITY - REL,%LGTAT::-2 * DISC TRACK MAP UTILITY - REL,%IB4A::-2 * HPIB LIBRARY - REL,%SRQ.P::-2 * HPIB SERVICE REQUEST - REL,%KEYS::-2 * SOFT KEYS - REL,%KYDMP::-2 * KEY DUMP - * - * LIBRARIES - * - REL,%BMLIB::-2 * RTE BATCH LIBRARY - REL,%CLIB ::-2 * RTE COMPILER LIBRARY - REL,%FF4.N::-2 * RTE FTN-IV LIBRARY - REL,%RLIB1::-2 * RTE REL. LIBRARY 1 - REL,%RLIB2::-2 * RTE REL. LIBRARY 2 - REL,%RLIB3::-2 * RTE REL. LIBRARY 3 - REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY - REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY - REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY - REL,%TSKSC::-10 * BASIC TASK SCHEDULER - REL,%BAIMG::-10 * BASIC IMAGE LIBRARY - REL,%MPLIB::-10 * MULTI-POINT LIBRARY - REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY - REL,%DBLIB::-10 * IMAGE LIBRARY - DISPLAY UNDEFS UNDEFS &6940 - /E UNDEFS &6940 PARAMETERS - EDITR,3,50 - WHZAT,3,41 - AUTOR,4,10 - PRMPT,1,10 - R$PN$,1,10 - TTYEV,17 - TRAP,30 - .DBRN,30 - LOADR,3,89 - FTN4,3,89 - ASMB,3,89 - XREF,3,89 - LGTAT,3,89 - GASP,19 - /E CHANGE ENTS? - .FAD,RP,105000 - .FSB,RP,105020 - .FMP,RP,105040 - .FDV,RP,105060 - IFIX,RP,105100 - FLOAT,RP,105120 - .MPY,RP,100200 - .DIV,RP,100400 - .DLD,RP,104200 - .DST,RP,104400 - .MVW,RP,105777 - .EMAP,RP,105257 - .EMIO,RP,105240 - MMAP,RP,105241 - Z$DBL,RP,3 * 3 WORD FLOATING POINT - /E TABLE AREA IR EQUIPMENT TABLE ENTRY EQT 01? * * EQUIPMENT TABLE ENTRIES * 11,DVR31,D * EQT1: 7900 SYSTEM DISC EQT 02? 13,DVA05,B,X=13 * EQT2: 2645/2648 SYSTEM CONSOLE EQT 03? 14,DVR37,X=57,T=6000 * EQT3: 59310B HPIB INTERFACE EQT 04? 15,DVA12,B,T=6000 * EQT4: 2607-2635 LINE PRINTER EQT 05? 16,DVR23,D,B,T=6000 * EQT5: 7970B MAGNETIC TAPE UNIT EQT 06? 20,DVR07,X=5 * EQT6: 12790A MULTI-POINT I/F EQT 07? 67,DVR07,X=5 * EQT7: MULTI-POINT TERMINAL #1 EQT 08? 67,DVR07,X=5 * EQT8: MULTI-POINT TERMINAL #2 EQT 09? 21,DVB12,B,X=5,T=6000 * EQT9: 2608 LINE PRINTER EQT 10? 22,DVR00,B,T=6000 * EQT10: RS232 TERMINAL EQT 11? 70,DVS43,X=18,M * EQT11: SPOOL EQT 12? 71,DVS43,X=18,M * EQT12: SPOOL EQT 13? 72,DVS43,X=18,M * EQT13: SPOOL EQT 14? 73,DVS43,X=18,M * EQT14: SPOOL EQT 15? 74,DVS43,X=18,M * EQT15: SPOOL EQT 16? 75,DVS43,X=18,M * EQT16: SPOOL EQT 17? 4,DVP43,M * EQT17: POWER FAIL EQT 18? /E DEVICE REFERENCE TABLE 1 = EQT #? * * DEVICE REFERENCE TABLE ENTRIES * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 2 = EQT #? 1,1 * LU2 - 7900 SYSTEM DISC, REMOVABLE 3 = EQT #? 0 * LU3 - RESERVED 4 = EQT #? 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 5 = EQT #? 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 = EQT #? 4 * LU6 - DVA12 LINE PRINTER 7 = EQT #? 9 * LU7 - 2608 LINE PRINTER 8 = EQT #? 5  * LU8 - 7970B MAGNETIC TAPE UNIT 9 = EQT #? 0 * LU9 - RESERVED 10 = EQT #? 0 * LU10 - RESERVED 11 = EQT #? 1,0 * LU11 - 7900 SYSTEM DISC, FIXED 12 = EQT #? 0 * LU12 - RESERVED 13 = EQT #? 0 * LU13 - RESERVED 14 = EQT #? 0 * LU14 - RESERVED 15 = EQT #? 0 * LU15 - RESERVED 16 = EQT #? 0 * LU16 - RESERVED 17 = EQT #? 0 * LU17 - RESERVED 18 = EQT #? 0 * LU18 - RESERVED 19 = EQT #? 0 * LU19 - RESERVED 20 = EQT #? 0 * LU20 - RESERVED 21 = EQT #? 0 * LU21 - RESERVED 22 = EQT #? 6 * LU22 - MULTI-POINT INTERFACE 23 = EQT #? 7 * LU23 - MULTI-POINT TERMINAL #1 24 = EQT #? 8 * LU24 - MULTI-POINT TERMINAL #2 25 = EQT #? 0 * LU25 - RESERVED 26 = EQT #? 0 * LU26 - RESERVED 27 = EQT #? 0 * LU27 - RESERVED 28 = EQT #? 0 * LU28 - RESERVED 29 = EQT #? 0 * LU29 - RESERVED 30 = EQT #? 3,0 * LU30 - 59310B HPIB INTERFACE 31 = EQT #? 3,1 * LU31 - HPIB ADDRESS 1 32 = EQT #? 3,2 * LU32 - HPIB ADDRESS 2 33 = EQT #? 3,3 * LU33 - HPIB ADDRESS 3 34 = EQT #? 3,4 * LU34 - HPIB ADDRESS 4 35 = EQT #? 3,5 * LU35 - HPIB ADDRESS 5 36 = EQT #? 3,6 * LU36 - HPIB ADDRESS 6 37 = EQT #? 3,7 * LU37 - HPIB ADDRESS 7 38 = EQT #? 3,8 * LU38 - HPIB ADDRESS 8 39 = EQT #? 3,9 * LU39 - HPIB ADDRESS 9 40 = EQT #? 11 * LU40 - SPOOL 41 = EQT #? 12 * LU41 - SPOOL 42 = EQT #? 13 * LU42 - SPOOL 43 = EQT #? 14 * LU43 - SPOOL 44 = EQT #? 15 * LU44 - SPOOL 45 = EQT #? 16 * LU45 - SPOOL 46 = EQT #? 17 * LU46 - POWER FAIL 47 = EQT #? 10 * LU47 - RS232 TERMINAL 48 = EQT #? 0 * LU48 - SPARE 49 = EQT #? 0 * LU49 - SPARE 50 = EQT #? 0 * LU50 - SPARE 51 = EQT #? 0 * LU51 - SPARE 52 = EQT #? 0 * LU52 - SPARE 53 = EQT #? 0 * LU53 - SPARE 54 = EQT #? 0 * LU54 - SPARE 55 = EQT #? 0 * LU55 - SPARE 56 = EQT #? 0 * LU56 - SPARE 57 = EQT #? 0 * LU57 - SPARE 58 = EQT #? 0 * LU58 - SPARE 59 = EQT #? 0 * LU59 - SPARE 60 = EQT #? 0 * LU60 - SPARE 61 = EQT #? 0 * LU61 - SPARE 62 = EQT #? 0 * LU62 - SPARE 63 = EQT #? 0 * LU63 - SPARE 64 = EQT #? /E INTERRUPT TABLE - * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL - 11,EQT,1 * 7900 SYSTEM DISC - 12,EQT,1 * 7900 SYSTEM DISC - 13,PRG,PRMPT * 2645/2648 SYSTEM CONSOLE - 14,EQT,3 * 59310B HPIB INTERFACE - 15,EQT,4 * 2607-2635 LINE PRINTER - 16,EQT,5 * 7970B MAGNETIC TAPE UNIT - 17,EQT,5 * 7970B MAGNETIC TAPE UNIT - S 20,PRG,PRMPT * 12790A MULTI-POINT INTERFACE - 21,EQT,9 * 2608 LINE PRINTER - 22,PRG,PRMPT * RS232 TERMINAL - 67,ABS,0 * MULTI-POINT INTERFACE - 70,EQT,11 * SPOOL - 71,EQT,12 * SPOOL - 72,EQT,13 * SPOOL - 73,EQT,14 * SPOOL - 74,EQT,15 * SPOOL - 75,EQT,16 * SPOOL - /E TABLE AREA I MODULES $$TB1(0099)03257 03401 92067-16014 REV.1926 790506 DRIVR PART 00002 CHANGE DRIVR PART? * 2 * CHANGE DP SIZE DP 01: DVR31(0099)04000 05177 29013-60001 REV.1710 770216 DVR00(0099)05226 06332 29029-60001 REV 1740 770808 DVR23(0099)06354 07267 92202-16001 REV.1913 - 790202 SUBSYSTEM GLOBAL AREA SP.CL )10000 10002 92067-16028 REV.1805 780317 TRAP )10003 11041 92101-16010 770208 .DBRN )11042 11072 92063-12001 REV.1826 770601 RT COMMON 00000 CHANGE RT COMMON ? 0 * RT COMMON CHANGE RT COM ADD 11073 BG COMMON 00453 CHANGE BG COMMON ? 0 * BG COMMON CHANGE BG COM ADD 11073 BG COMMON 00453 SYSTEM DRIVER AREA DVP43(0099)12000 12637 92067-16004 REV.1926 790506 DVS43(0099)12660 15644 92067-16028 REV.1926 790505 TABLE AREA II # OF I/O CLASSES? 32 * # OF I/O CLASSES # OF LU MAPPINGS? 16 * # OF LU MAPPINGS # OF RESOURCE NUMBERS? 32 * # OF RESOURCE NUMBERS BUFFER LIMITS (LOW, HIGH)? 100,400 * BUFFER LIMITS # OF BLANK ID SEGMENTS? 40 * # OF BLANK ID SEGMENTS # OF BLANK SHORT ID SEGMENTS? 55 * # OF BLANK SHORT ID SEGMENTS # OF BLANK ID EXTENSIONS? 20 >^ * # OF BLANK ID EXTENSIONS MAXIMUM # OF PARTITIONS? 64 * MAX NUMBER OF PARTITIONS TABLE AREA II MODULES $$TB2(0099)25603 25651 92067-16014 REV.1926 790510 SYSTEM $CSY4(0099)25652 25651 92067-16014 REV.1926 790506 DISP4(0099)25664 33233 92067-16014 REV.1926 790221 RTIME(0099)33316 34122 92067-16014 REV.1805 780104 $ASC4(0099)34135 34227 92067-16014 REV.1805 780125 RTIO4(0099)34327 41631 92067-16014 REV.1926 790506 EXEC4(0099)41667 44272 92067-16014 REV.1926 790506 $TRN4(0099)44301 44453 92067-16014 REV.1805 780104 SCHD4(0099)44504 51657 92067-16014 REV.1926 790506 $ALC (0099)51732 52137 92067-16014 REV.1805 741120 OCMD4(0099)52142 53303 92067-16014 REV.1805 771102 PERR4(0099)53307 54251 92067-16014 REV.1840 780731 DBKLB(0099)54261 54260 92060-16043 REV.1901 781108 $BALB(0099)54261 54260 92002-16006 REV.1926 790502 FF4.A(0099)54261 54260 24998-16002 REV.1926 790516 RLIB1(0099)54261 54260 24998-16001 REV.1926 790501 RLIB2(0099)54261 54260 24998-16009 REV.1926 790501 RLIB3(0099)54261 54260 24998-16011 REV.1926 790501 $YSLB(0099)54261 54260 92067-16035 REV.1926 790506 MPLIB(0099)54261 54260 91730-12001 REV 1926 MULTIPOINT LIBRARY 790509 DECAR(0099)54261 54260 24306-60001 REV.1940 790618 $CNFG(0099)54333 61325 92067-16014 REV.1926 790610 PARTITION DRIVERS DP 02: DVA05(0099)04102 07164 92001-16035 REV. CODE 1913 9-28-78 DP 03: DVR37(0099)04122 06633 59310-16003 REV.1940 790724 EQTX=18+7*D DVA12(0099)06642 07542 92001-16020 780511 REV 1826 DP 04: DVB12(0099)04000 05561 92062-16004 REV 1926 790504 1030PM .LBT 05562 05612 770518 24998-16001 DP 05: DVR07(U0099)04107 06543 91730-16001 REV 1926 790509 &DV07X MEMORY RESIDENT LIBRARY LURQ 26000 26360 92067-16035 REV.1805 771013 $ALRN 26361 26476 92067-16035 REV.1805 770715 IDGET 26477 26561 92067-16037 REV.1805 771227 MEMORY RESIDENTS EXTND(0010)30002 30154 92067-16028 REV.1805 771115 RMPAR 30155 30217 781106 24998-16001 SPOUT(0011)30222 31175 92067-16028 REV.1805 780309 .DRCT 31176 31204 92067-16035 REV.1805 741120 PRMPT(0010)31207 31641 92067-16003 REV.1926 790506 $BMON 31642 31642 92002-12001 REV.1940 790729 TRMLU 31643 31736 92067-16035 REV.1805 771117 R$PN$(0010)31744 32477 92067-16003 REV.1926 790506 TRMLU 32501 32574 92067-16035 REV.1805 771117 SRQ.P(0030)32577 32645 59310-16005 REV 1805 780110 RMPAR 32646 32710 781106 24998-16001 TTYEV(0002)32713 32722 29102-60013 RT DISC RESIDENTS D.RTR(0001)26042 30133 92002-16007 REV.1926 790502 P.PAS 30134 30162 92002-16006 740801 PRTN 30163 30275 92067-16035 REV.1805 771005 SMP (0030)26042 31437 92067-16028 REV.1940 790802 READF 31463 32221 92002-16006 770801 POST 32246 32274 92002-16006 740801 P.PAS 32275 32323 92002-16006 740801 RW$UB 32324 32575 92002-16006 750422 RWND$ 32576 32720 92002-16006 771121 R/W$ 32721 33054 92002-16006 740801 RMPAR 33055 33117 781106 24998-16001 .ENTR 33120 33207 750701 24998-16001 .DFER 33210 33261 750701 24998-16001 RNRQ 33262 33523 92067-16035 REV.1805 780222 $ALRN 33524 33641 92067-16035 REV.1805 770715 PRTN 33642 33754 92067-16035 REV.1805 771005 .DRCT 33755 33763 92067-16035 REV.1805 741120 REIO 33764 34110 92067-16035 REV.1926 790506 JOB (0030)26042 30022 92067-16028 REV. 1940 790802 OPEN 3k0023 30210 92002-16006 741205 READF 30211 30747 92002-16006 770801 CLOSE 30750 31066 92002-16006 771115 POST 31067 31115 92002-16006 740801 $OPEN 31116 31324 92002-16006 740801 P.PAS 31325 31353 92002-16006 740801 RW$UB 31354 31625 92002-16006 750422 RWND$ 31626 31750 92002-16006 771121 R/W$ 31753 32106 92002-16006 740801 SPOPN 32110 32167 92002-16006 REV.1826 780413 RMPAR 32170 32232 781106 24998-16001 .ENTR 32233 32322 750701 24998-16001 .DFER 32323 32374 750701 24998-16001 RNRQ 32375 32636 92067-16035 REV.1805 780222 LURQ 32637 33217 92067-16035 REV.1805 771013 $ALRN 33220 33335 92067-16035 REV.1805 770715 .DRCT 33336 33344 92067-16035 REV.1805 741120 REIO 33345 33471 92067-16035 REV.1926 790506 $PARS 33472 33712 92067-16035 REV.1840 780811 BG DISC RESIDENTS $CNFX(0099)26042 31614 92067-16006 REV.1926 790412 $PARS 31624 32044 92067-16035 REV.1840 780811 $CVT3 32051 32136 92067-16035 REV.1805 770621 FMGR (0090)26042 27017 92002-16008 REV.1901 760627 FM.CM 27020 31061 92002-16008 REV.1926 790502 OPEN 31202 31367 92002-16006 741205 CLOSE 31370 31506 92002-16006 771115 $OPEN 31507 31715 92002-16006 740801 RWND$ 31724 32046 92002-16006 771121 R/W$ 32053 32206 92002-16006 740801 RMPAR 32207 32251 781106 24998-16001 .ENTR 32252 32341 750701 24998-16001 .DFER 32342 32413 750701 24998-16001 LURQ 32414 32774 92067-16035 REV.1805 771013 $ALRN 32775 33112 92067-16035 REV.1805 770715 .DRCT 33113 33121 92067-16035 REV.1805 741120 IFBRK 33122 33155 92067-16035 REV.1913 790124 IFTTY 33156 33231 92067-16035 REV.1805 771208 FMGR0(0099)33232 33237 92002-16008 740801 PK.. 33246 34671 CR..W 35020 36105 92002-16008 REV.1826 780414 READF 36132 36670 92002-16006 770801 RWNDF 36671 36752 92002-16006 740801 NAM.. 36753 37047 92002-16006 740801 P.PAS 37050 37076 92002-16006 740801 RW$UB 37077 37350 92002-16006 750422 LOCK. 37351 37420 92002-16006 771118 FM.UT 37421 40566 92002-16006 781103 REV.1901 CREA. 40567 40640 CREAT 40641 41124 92002-16006 REV.1926 790501 REIO 41125 41251 92067-16035 REV.1926 790506 COR.A 41252 41272 92067-16035 REV.1805 770621 FMGR1(0099)33232 33360 92002-16008 760929 .PARS 33363 34646 92002-16008 765025 C.TAB 34754 35117 92002-16008 760720 CA.. 35120 35341 92002-16008 760513 REA.C 35342 35414 92002-16008 770823 EE.. 35415 35455 92002-16008 760512 TR.. 35456 35707 92002-16008 REV.1826 780419 MR.. 35710 36152 92002-16008 760621 SE.. 36174 36360 IF.. 36361 36576 92002-16008 760929 AB.. 36577 37025 92002-16008 REV.1826 780420 DP.. 37026 37073 92002-16008 760511 READF 37074 37632 92002-16006 770801 POSNT 37641 40104 92002-16006 760702 P.PAS 40125 40153 92002-16006 740801 RW$UB 40154 40425 92002-16006 750422 WRLG. 40426 40575 92002-16006 760622 CK.SM 40576 40721 92002-16006 REV. 1805 771205 REIO 40722 41046 92067-16035 REV.1926 790506 MESSS 41047 41206 92067-16035 REV.1840 780724 CNUMD 41207 41226 92001-16035 REV.1805 770621 $CVT3 41227 41314 92067-16035 REV.1805 770621 FMGR2(0099)33232 33242 92002-16008 760622 IN.IT 33244 34341 92002-16008 780106 IN.. 34416 36324 92002-16008 REV.1901 781103 MC.. 36365 36724 92002-16008 790727 REV.1940 RC.. 36725 37112 PU.. 37113 37335 PURGE 37336 37434 92002-16006 740801 NAM.. 37435 37531 92002-16006 7408 01 J.PUT 37532 37556 92002-16006 740801 IPUT 37557 37577 92002-16006 740801 FID. 37600 37717 MSC. 37720 37754 LOCK. 37755 40024 92002-16006 771118 FM.UT 40027 41174 92002-16006 781103 REV.1901 .OPSY 41175 41177 771116 24998-16001 FMGR3(0099)33232 33237 92002-16008 760720 DL.. 33244 34541 92002-16008 771020 F.SET 34644 35034 92002-16006 760719 CS.. 35035 35263 92002-16008 760318 READF 35270 36026 92002-16006 770801 LOCF 36032 36220 92002-16006 750416 P.PAS 36221 36247 92002-16006 740801 RW$UB 36250 36521 92002-16006 750422 MSC. 36522 36556 FM.UT 36557 37724 92002-16006 781103 REV.1901 CK.ID 37725 37756 92002-16006 REV.1826 780403 LULU. 37761 40051 92002-16006 760227 REIO 40054 40200 92067-16035 REV.1926 790506 FMGR4(0099)33232 33243 92002-16008 760622 ST.DU 33245 34516 92002-16008 760622 CO.. 34572 35274 F.UTM 35275 35536 92002-16008 760514 CREAT 35543 36026 92002-16006 REV.1926 790501 READF 36027 36565 92002-16006 770801 RWNDF 36566 36647 92002-16006 740801 LOCF 36650 37036 92002-16006 750416 NAM.. 37037 37133 92002-16006 740801 P.PAS 37134 37162 92002-16006 740801 RW$UB 37163 37434 92002-16006 750422 FM.UT 37435 40602 92002-16006 781103 REV.1901 CREA. 40603 40654 CK.SM 40655 41000 92002-16006 REV. 1805 771205 REIO 41001 41125 92067-16035 REV.1926 790506 FMGR5(0099)33232 33244 92002-16008 760622 RU.. 33247 34110 92002-16008 781130 REV.1901 RP.. 34122 34231 92002-16008 761004 SESSN 34232 34307 92002-16008 REV.1826 780403 .RENM 34310 34434 92002-16008 761004 .EXCP 34435 34501 92002-16008 761002 IDDUP 34502 35166 92002-16008 REV.1826 780503 IDRPL 35167 35773 g 92002-16008 REV.1940 790726 IDRPD 35774 36314 92002-16008 REV.1826 780525 OPMES 36317 36507 92002-16008 760513 TL.. 36510 36527 READF 36530 37266 92002-16006 770801 NAM.. 37267 37363 92002-16006 740801 P.PAS 37364 37412 92002-16006 740801 RW$UB 37413 37664 92002-16006 750422 ID.A 37665 37763 92002-16008 REV.1826 780403 CNT. 37764 40220 92002-16006 760520 FCONT 40235 40327 92002-16006 REV.1826 780413 BUMP. 40330 40366 92002-16006 741025 SET.T 40367 40415 92002-16006 740801 TL. 40416 40451 92002-16006 760322 ST.TM 40452 40506 92002-16006 741223 REIO 40507 40633 92067-16035 REV.1926 790506 MESSS 40634 40773 92067-16035 REV.1840 780724 FMGR6(0099)33232 33242 92002-16008 740801 CN.. 33243 33303 JO.. 33310 34340 92002-16008 REV.1926 790501 EO.. 34411 35214 92002-16008 REV.1826 780420 OF.. 35215 35310 92002-16008 740820 LG.. 35311 35336 92002-16008 760517 NAMF 35337 35512 92002-16006 771115 READF 35535 36273 92002-16006 770801 POST 36314 36342 92002-16006 740801 NAM.. 36343 36437 92002-16006 740801 P.PAS 36440 36466 92002-16006 740801 RW$UB 36467 36740 92002-16006 750422 SPOPN 36741 37020 92002-16006 REV.1826 780413 SET.T 37021 37047 92002-16006 740801 ST.TM 37050 37104 92002-16006 741223 B.FLG 37105 37153 92002-16006 741118 LULU. 37154 37244 92002-16006 760227 RANGE 37245 37270 92002-16006 740801 ONOFF 37271 37634 92002-16006 750128 EX.TM 37643 40060 92002-16006 771115 IPUT 40062 40102 92002-16006 740801 LU.CL 40103 40151 92002-16006 760702 AVAIL 40152 40244 92002-16006 741231 RNRQ 40245 40506 92067-16035 REV.1805 780222 REIO 40507 40633 92067-16035 REV.1926 790506 KCVT 40634 40647 P92001-16035 REV.1805 770621 MESSS 40650 41007 92067-16035 REV.1840 780724 $CVT3 41010 41075 92067-16035 REV.1805 770621 FMGR7(0099)33232 33240 92002-16008 760702 ??.. 33243 35672 92002-16008 REV.1926 790502 SY.. 35673 35731 92002-16008 760520 NX.JB 35732 36663 92002-16008 REV.1926 790501 READF 36720 37456 92002-16006 770801 POST 37457 37505 92002-16006 740801 P.PAS 37506 37534 92002-16006 740801 RW$UB 37536 40007 92002-16006 750422 SPOPN 40013 40072 92002-16006 REV.1826 780413 B.FLG 40073 40141 92002-16006 741118 LULU. 40142 40232 92002-16006 760227 LU.CL 40233 40301 92002-16006 760702 RNRQ 40302 40543 92067-16035 REV.1805 780222 REIO 40544 40670 92067-16035 REV.1926 790506 MESSS 40671 41030 92067-16035 REV.1840 780724 LOGLU 41031 41101 92067-16035 REV.1826 780502 FMGR8(0099)33232 33240 92002-16008 740801 SA.. 33245 34217 92002-16008 760621 SP.. 34262 35240 92002-16008 REV.1826 780405 MS.. 35241 35534 READF 35555 36313 92002-16006 770801 RWNDF 36333 36414 92002-16006 740801 LOCF 36415 36603 92002-16006 750416 P.PAS 36604 36632 92002-16006 740801 RW$UB 36633 37104 92002-16006 750422 IPUT 37105 37125 92002-16006 740801 CREA. 37126 37177 CREAT 37200 37463 92002-16006 REV.1926 790501 NAM.. 37464 37560 92002-16006 740801 CK.SM 37561 37704 92002-16006 REV. 1805 771205 ID.A 37706 40004 92002-16008 REV.1826 780403 WRIS$ 40005 40043 92002-16006 740801 READ. 40044 40070 92002-16006 740801 %WRIS 40071 40466 750701 24998-16001 SREAD 40467 41131 771116 24998-16001 PRTN 41132 41244 92067-16035 REV.1805 771005 REIO 41245 41371 92067-16035 REV.1926 790506 FMGR9(0099)33232 33240 92002-16008 760720 LI.. 33241 34743 92002-16008 760720 CL.. 35057 35340 LU.. 35343 36527 92002-16008 790501 READF 36615 37353 92002-16006 770801 FSTAT 37354 37400 92002-16006 740801 LOCF 37401 37567 92002-16006 750416 POST 37570 37616 92002-16006 740801 P.PAS 37617 37645 92002-16006 740801 RW$UB 37661 40132 92002-16006 750422 SPOPN 40135 40214 92002-16006 REV.1826 780413 LULU. 40215 40305 92002-16006 760227 RANGE 40306 40331 92002-16006 740801 AVAIL 40332 40424 92002-16006 741231 RNRQ 40425 40666 92067-16035 REV.1805 780222 REIO 40667 41013 92067-16035 REV.1926 790506 KCVT 41014 41027 92001-16035 REV.1805 770621 $CVT3 41030 41115 92067-16035 REV.1805 770621 EDITR(0050)26042 33146 92002-16010 REV 1926 790503 CREAT 33147 33432 92002-16006 REV.1926 790501 OPEN 33433 33620 92002-16006 741205 READF 33636 34374 92002-16006 770801 CLOSE 34423 34541 92002-16006 771115 NAM.. 34542 34636 92002-16006 740801 $OPEN 34637 35045 92002-16006 740801 P.PAS 35046 35074 92002-16006 740801 RW$UB 35075 35346 92002-16006 750422 RWND$ 35347 35471 92002-16006 771121 R/W$ 35472 35625 92002-16006 740801 NAMR 35643 36137 750701 24998-16001 RMPAR 36144 36206 781106 24998-16001 .ENTR 36207 36276 750701 24998-16001 .DFER 36277 36350 750701 24998-16001 LURQ 36351 36731 92067-16035 REV.1805 771013 $ALRN 36732 37047 92067-16035 REV.1805 770715 PRTN 37050 37162 92067-16035 REV.1805 771005 REIO 37163 37307 92067-16035 REV.1926 790506 WHZAT(0041)26042 30165 92067-16007 REV.1926 790506 TMVAL 30166 30253 92067-16035 REV.1913 790124 .ENTR 30254 30343 750701 24998-16001 LOADR(0089)26042 43051 92067-16002 REV.1926 790502 CREAT 43052 43335 92002-16006 REV.1926 790501 OPEN 43336 43523 92002-16006 741205 READF 43545 44303 92002-16006 770801 POSNT 44324 44567 92002-16006 760702 APOSN 44570 44740 92002-16006 781103 REV.1901 LOCF 44741 45127 92002-16006 750416 CLOSE 45130 45246 92002-16006 771115 POST 45247 45275 92002-16006 740801 NAM.. 45276 45372 92002-16006 740801 $OPEN 45373 45601 92002-16006 740801 P.PAS 45602 45630 92002-16006 740801 RW$UB 45642 46113 92002-16006 750422 RWND$ 46126 46250 92002-16006 771121 R/W$ 46251 46404 92002-16006 740801 NAMR 46405 46701 750701 24998-16001 RMPAR 46702 46744 781106 24998-16001 .ENTR 46745 47034 750701 24998-16001 LURQ 47035 47415 92067-16035 REV.1805 771013 $ALRN 47416 47533 92067-16035 REV.1805 770715 PRTN 47534 47646 92067-16035 REV.1805 771005 REIO 47647 47773 92067-16035 REV.1926 790506 .DFER 47774 50045 750701 24998-16001 IFBRK 50051 50104 92067-16035 REV.1913 790124 $CVT3 50105 50172 92067-16035 REV.1805 770621 LOGLU 50173 50243 92067-16035 REV.1826 780502 FTIME 50244 50535 92067-16035 REV.1840 780731 GASP (0080)26042 27455 92067-16028 REV.1805 780323 G1CEX 27456 27567 92002-16001 760615 ST.LU 27570 27745 92067-16028 780317 G1ROT 27751 30124 92002-16001 760615 G0QIP 30130 30415 92002-16001 760621 OPEN 30416 30603 92002-16006 741205 READF 30604 31342 92002-16006 770801 CLOSE 31343 31461 92002-16006 771115 POST 31462 31510 92002-16006 740801 $OPEN 31511 31717 92002-16006 740801 P.PAS 31720 31746 92002-16006 740801 RW$UB 31752 32223 92002-16006 750422 RWND$ 32226 32350 92002-16006 771121 R/W$ 32351 32504 92002-16006 740801 RMPAR 32505 32547 781106 24998-16001 .ENTR 32550 32637 750701 24998-16001 RNRQ 32640 33101 92067-16035 REV.1805 780222 $ALRN 33102 33217 92067-16035 REV.1805 770715 .DRCT 33220 33226 92067-16035 REV.1805 741120 REIO 33227 33353 92067-16035 REV.1926 790506 .DFER 33354 33425 750701 24998-16001 KCVT 33426 33441 92001-16035 REV.1805 770621 PARSE 33442 33461 92067-16035 REV.1805 770714 $PARS 33462 33702 92067-16035 REV.1840 780811 $CVT3 33703 33770 92067-16035 REV.1805 770621 GASP1(0099)33771 34003 92067-16028 REV.1805 760615 G1CDJ 34004 34370 G1CCJ 34371 35005 92002-16001 760615 G1CKS 35006 35622 92002-16001 760627 G1CDS 35640 36665 92002-16001 760621 G1STM 36673 37065 92002-16001 740807 CNUMD 37066 37105 92001-16035 REV.1805 770621 GASP2(0099)33771 34001 92067-16028 REV.1805 760615 G1CSD 34002 34420 92002-16001 760622 G1C?? 34421 35231 92002-16001 741027 G1CIN 35236 36600 92002-16001 760630 G1CDA 36660 37234 92002-16001 760627 CREAT 37235 37520 92002-16006 REV.1926 790501 PURGE 37521 37617 92002-16006 740801 NAM.. 37620 37714 92002-16006 740801 CNUMD 37715 37734 92001-16035 REV.1805 770621 FTN4 (0089)26042 27662 92060-16092 790112 REV. 1926 NEX.F 27672 30356 92060-16092 790106 OA.F 30357 31124 92060-16092 781212 FA.F 31156 32746 92060-16092 790116 EX.F 33033 35265 92060-16092 790430 IC.F 35355 37363 92060-16092 790125 IDN.F 37442 41146 92060-16092 781212 SEG.F 41165 41201 92060-16093 770531 REV. 1913 C.BIN 41202 41237 92060-16102 770721 REV. 1901 $CLIB C.LST 41240 41275 92060-16102 770721 REV. 1901 $CLIB C.SAU 41276 41333 92060-16102 770721 REV. 1901 $CLIB C.SC0 41334 41371 92060-16102 770802 REV. 1901 $CLIB C.SC1 41372 41427 92060-16102 770802 REV. 1901 $CLIB C.bTRN 41430 41650 92060-16102 781016 REV. 1901 $CLIB C.BBI 41651 42051 92060-16102 770515 REV. 1901 $CLIB C.BLI 42052 42252 92060-16102 770515 REV. 1901 $CLIB C.BSA 42253 42453 92060-16102 770515 REV. 1901 $CLIB C.BS0 42454 42654 92060-16102 771214 REV. 1901 $CLIB C.BS1 42655 43055 92060-16102 770515 REV. 1901 $CLIB RED.C 43056 43235 92060-16102 790403 REV. 1926 $CLIB RWN.C 43236 43334 92060-16102 780921 REV. 1901 $CLIB SPC.C 43335 43413 92060-16102 781101 REV. 1901 $CLIB WRT.C 43414 43526 92060-16102 770523 REV. 1901 $CLIB GES.C 43527 43643 92060-16102 780728 REV. 1901 $CLIB ADS.C 43644 44002 92060-16102 770809 REV. 1901 $CLIB P.PAS 44004 44032 92002-16006 740801 OLY.C 44033 44100 92060-16103 780815 REV. 1901 $CLIB GEX.C 44101 44552 92060-16105 781127 REV. 1901 $CLIB LURQ 44553 45133 92067-16035 REV.1805 771013 $ALRN 45134 45251 92067-16035 REV.1805 770715 IFBRK 45252 45305 92067-16035 REV.1913 790124 IFTTY 45306 45361 92067-16035 REV.1805 771208 F4.0 (0099)45362 51136 92060-16094 790125 REV. 1913 GMS.C 51137 51147 92060-16103 781006 REV. 1901 $CLIB ID.AD 51150 51212 92060-16103 780811 REV. 1901 $CLIB ID.A 51213 51311 92002-16008 REV.1826 780403 COR.A 51312 51332 92067-16035 REV.1805 770621 F4.1 (0099)45362 52153 92060-16095 790430 REV. 1926 F4.2 (0099)45362 46301 92060-16096 790430 REV. 1926 EOF.C 46302 46360 92060-16102 770523 REV. 1901 $CLIB F4.3 (0099)45362 47470 92060-16097 781212 REV. 1913 GMS.C 47471 47501 92060-16103 781006 REV. 1901 $CLIB ID.AD 47502 47544 92060-16103 780811 REV. 1901 $CLIB ID.A 47545 47643 92002-16008 REV.1826 780403 COR.A 47644 47664 92067-16035 REV.1805 770621 F4.4 (0099)45362 47343 92060-16098 790430 REV. 1926 EOF.C 47344 47422 92060-16102 770523 REV. 1901 $CLIB END.C 47423 47447 92060-16103 780726 REV. 1901 $CLIB OPN.C 47503 50377 92060-16102 790420 REV. 1926 $CLIB PRM.C 50412 50477 92060-16102 780921 REV. 1901 $CLIB CLO.C 50500 50627 92060-16102 790207 REV. 1913 $CLIB CRE.C 50630 50706 92060-16102 780921 REV. 1901 $CLIB NAM.. 50707 51003 92002-16006 740801 SUP.C 51004 51305 92060-16104 781106 REV. 1901 $CLIB GMM.C 51306 51352 92060-16103 780921 REV. 1901 $CLIB ID.AD 51353 51415 92060-16103 780811 REV. 1901 $CLIB ID.A 51416 51514 92002-16008 REV.1826 780403 NAMR 51517 52013 750701 24998-16001 .ENTR 52014 52103 750701 24998-16001 PRTN 52104 52216 92067-16035 REV.1805 771005 COR.A 52217 52237 92067-16035 REV.1805 770621 LOGLU 52240 52310 92067-16035 REV.1826 780502 F4.5 (0099)45362 51257 92060-16101 790103 REV. 1913 ASMB (0089)26042 33553 92067-16011 REV.1940 790803 C.BIA 33554 33611 92060-16102 780920 REV.1901 $CLIB C.BIN 33612 33647 92060-16102 770721 REV. 1901 $CLIB C.LST 33650 33705 92060-16102 770721 REV. 1901 $CLIB C.SOR 33706 33743 92060-16102 770815 REV. 1901 $CLIB C.TRN 33744 34164 92060-16102 781016 REV. 1901 $CLIB C.BBI 34165 34365 92060-16102 770515 REV. 1901 $CLIB C.BLI 34366 34566 92060-16102 770515 REV. 1901 $CLIB C.BSO 34567 34767 92060-16102 770515 REV. 1901 $CLIB EOF.C 34770 35046 92060-16102 770523 REV. 1901 $CLIB END.C 35047 35073 92060-16103 780726 REV. 1901 $CLIB PRM.C 35074 35161 92060-16102 780921 REV. 1901 $CLIB RED.C 35162 35341 92060-16102 790403 REV. 1926 $CLIB SPC.C 35342 35420 92060-16102 781101 REV. 1901 $CLIB WRT.C 35421 35533 92060-16102 770523 REV. 1901 $CLIB WARC. 35534 35562 92060-16102 770523 REV. 1901 $CLIB CLO.C 35563 35712 92060-16102 790207 REV. 1913 $CLIB GES.C 35715 36031 92060-16102 780728 RUEV. 1901 $CLIB ADS.C 36035 36173 92060-16102 770809 REV. 1901 $CLIB P.PAS 36174 36222 92002-16006 740801 SUP.C 36223 36524 92060-16104 781106 REV. 1901 $CLIB GMM.C 36525 36571 92060-16103 780921 REV. 1901 $CLIB OLY.C 36572 36637 92060-16103 780815 REV. 1901 $CLIB ID.AD 36640 36702 92060-16103 780811 REV. 1901 $CLIB ID.A 36703 37001 92002-16008 REV.1826 780403 GEX.C 37002 37453 92060-16105 781127 REV. 1901 $CLIB NAMR 37454 37750 750701 24998-16001 .ENTR 37753 40042 750701 24998-16001 LURQ 40044 40424 92067-16035 REV.1805 771013 $ALRN 40425 40542 92067-16035 REV.1805 770715 PRTN 40543 40655 92067-16035 REV.1805 771005 IFBRK 40656 40711 92067-16035 REV.1913 790124 COR.A 40712 40732 92067-16035 REV.1805 770621 IFTTY 40733 41006 92067-16035 REV.1805 771208 LOGLU 41007 41057 92067-16035 REV.1826 780502 ASMB0(0099)41060 41551 92067-16070 REV.1940 790713 OPN.C 41574 42470 92060-16102 790420 REV. 1926 $CLIB CRE.C 42501 42557 92060-16102 780921 REV. 1901 $CLIB NAM.. 42560 42654 92002-16006 740801 RUN.C 42655 43057 92060-16104 790215 REV. 1926 $CLIB C.RP 43060 43463 92060-16104 790405 REV. 1926 $CLIB IDDUP 43515 44201 92002-16008 REV.1826 780503 IDRPL 44205 45011 92002-16008 REV.1940 790726 IDRPD 45012 45332 92002-16008 REV.1826 780525 OPEN 45333 45520 92002-16006 741205 CLOSE 45521 45637 92002-16006 771115 $OPEN 45651 46057 92002-16006 740801 RWND$ 46062 46204 92002-16006 771121 R/W$ 46205 46340 92002-16006 740801 RMPAR 46341 46403 781106 24998-16001 .DFER 46404 46455 750701 24998-16001 MESSS 46456 46615 92067-16035 REV.1840 780724 IDGET 46616 46700 92067-16037 REV.1805 771227 ASMB1(0099)41060 43216 92067-16071 REV.1940 790713 RWN.C 43217 43315 92060-16102 780921 REV. 1901 $CLIB ASMB2(0099)41060 43207 92067-16072 REV.1940 790531 ASMB3(0099)41060 41705 92067-16073 REV.1940 790531 RWN.C 41707 42005 92060-16102 780921 REV. 1901 $CLIB ASMB4(0099)41060 42407 92067-16074 REV.1940 790531 XREF (0089)26042 33464 92067-16012 REV.1805 771121 C.LST 33465 33522 92060-16102 770721 REV. 1901 $CLIB C.SOR 33523 33560 92060-16102 770815 REV. 1901 $CLIB C.TRN 33561 34001 92060-16102 781016 REV. 1901 $CLIB C.BLI 34002 34202 92060-16102 770515 REV. 1901 $CLIB C.BSO 34203 34403 92060-16102 770515 REV. 1901 $CLIB EOF.C 34404 34462 92060-16102 770523 REV. 1901 $CLIB END.C 34463 34507 92060-16103 780726 REV. 1901 $CLIB OPN.C 34510 35404 92060-16102 790420 REV. 1926 $CLIB PRM.C 35405 35472 92060-16102 780921 REV. 1901 $CLIB RED.C 35473 35652 92060-16102 790403 REV. 1926 $CLIB RWN.C 35653 35751 92060-16102 780921 REV. 1901 $CLIB SPC.C 35754 36032 92060-16102 781101 REV. 1901 $CLIB WRT.C 36034 36146 92060-16102 770523 REV. 1901 $CLIB WARC. 36147 36175 92060-16102 770523 REV. 1901 $CLIB CLO.C 36176 36325 92060-16102 790207 REV. 1913 $CLIB CRE.C 36326 36404 92060-16102 780921 REV. 1901 $CLIB NAM.. 36405 36501 92002-16006 740801 GES.C 36502 36616 92060-16102 780728 REV. 1901 $CLIB ADS.C 36617 36755 92060-16102 770809 REV. 1901 $CLIB P.PAS 36756 37004 92002-16006 740801 SUP.C 37005 37306 92060-16104 781106 REV. 1901 $CLIB GMM.C 37307 37353 92060-16103 780921 REV. 1901 $CLIB ID.AD 37354 37416 92060-16103 780811 REV. 1901 $CLIB ID.A 37417 37515 92002-16008 REV.1826 780403 GEX.C 37541 40212 92060-16105 781127 REV. 1901 $CLIB NAMR 40221 40515 750701 24998-16001 .ENTR 40516 40605 750701 24998-16001 LURQ 40606 41166 92067-16035 REV.1805 771013 $ALRN 41167 41304 92067-16035 REV.1805 770715 PRTN 41305 41417 92067-16035 REV.1805 771005 IFBRK 41420 41453 92067-16035 REV.1913 790124 COR.A 41454 41474 92067-16035 REV.1805 770621 IFTTY 41475 41550 92067-16035 REV.1805 771208 LOGLU 41551 41621 92067-16035 REV.1826 780502 RT4GN(0090)26042 41176 92067-16009 REV.1926 790427 CREAT 41177 41462 92002-16006 REV.1926 790501 OPEN 41463 41650 92002-16006 741205 READF 41663 42421 92002-16006 770801 APOSN 42450 42620 92002-16006 781103 REV.1901 LOCF 42621 43007 92002-16006 750416 CLOSE 43010 43126 92002-16006 771115 NAM.. 43127 43223 92002-16006 740801 $OPEN 43224 43432 92002-16006 740801 P.PAS 43433 43461 92002-16006 740801 RW$UB 43462 43733 92002-16006 750422 RWND$ 43740 44062 92002-16006 771121 R/W$ 44067 44222 92002-16006 740801 RMPAR 44223 44265 781106 24998-16001 .ENTR 44266 44355 750701 24998-16001 LURQ 44356 44736 92067-16035 REV.1805 771013 $ALRN 44737 45054 92067-16035 REV.1805 770715 REIO 45055 45201 92067-16035 REV.1926 790506 .DFER 45202 45253 750701 24998-16001 IFBRK 45254 45307 92067-16035 REV.1913 790124 COR.A 45310 45330 92067-16035 REV.1805 770621 CNUMD 45331 45350 92001-16035 REV.1805 770621 $CVT3 45351 45436 92067-16035 REV.1805 770621 GETST 45437 45736 92067-16035 REV.1805 771005 RT4G1(0090)45737 50134 92067-16009 REV.1926 790427 RT4G2(0090)45737 52071 92067-16009 REV.1926 790427 RWNDF 52072 52153 92002-16006 740801 RT4G3(0090)45737 52205 92067-16009 REV.1926 790427 RT4G4(0090)45737 51467 92067-16009 REV.1926 790427 RWNDF 51470 51551 92002-16006 740801 RT4G5(0090)45737 51737 92067-16009 REV.1926 790427 RT4G6(0090)45737 51447 92067-16009 REV.1926 790427 RT4G7(a0090)45737 50223 92067-16009 REV.1926 790427 RT4G8(0090)45737 47347 92067-16009 REV.1926 790427 SWTCH(0010)26042 44302 92067-16010 REV.1926 790425 OPEN 44303 44470 92002-16006 741205 READF 44471 45227 92002-16006 770801 LOCF 45230 45416 92002-16006 750416 CLOSE 45417 45535 92002-16006 771115 $OPEN 45536 45744 92002-16006 740801 P.PAS 45745 45773 92002-16006 740801 RW$UB 45774 46245 92002-16006 750422 RWND$ 46247 46371 92002-16006 771121 R/W$ 46372 46525 92002-16006 740801 RMPAR 46526 46570 781106 24998-16001 .ENTR 46571 46660 750701 24998-16001 REIO 46661 47005 92067-16035 REV.1926 790506 .DFER 47006 47057 750701 24998-16001 CNUMD 47060 47077 92001-16035 REV.1805 770621 $CVT3 47100 47165 92067-16035 REV.1805 770621 GETST 47166 47465 92067-16035 REV.1805 771005 SWSG1(0010)47466 50466 92067-16010 REV.1805 780206 SWSG2(0010)47466 51304 92067-16010 REV.1840 780810 SAVE (0099)26042 26106 92060-16039 REV.1901 781108 DMT 26131 30132 BUFER 30134 30316 92060-16043 760721 CHDLU 30317 30460 CHUTP 30461 30674 LUTRK 30675 31362 MPFND 31373 32047 PRNTH 32051 32223 TPPOS 32224 32510 ASCDC 32511 32640 92060-16043 760622 DCASC 32641 32746 92060-16043 760622 DRT 32747 33036 92060-16043 760622 DSCAD 33037 33107 92060-16043 760622 MEMGT 33110 33123 92060-16043 760622 SUB 33124 33145 92060-16043 760622 READU 33146 33266 RMOVI 33267 33274 92060-16043 760622 MESG 33312 34444 92060-16043 770214 .TAPE 34445 34457 750701 24998-16001 IAND 34460 34467 750701 24998-16001 PAUSE 34470 34570 771122 24998-16001 RMPAR 34571 34633 781106 24998-16001 PAU.E 34634 34634 750701 24998-16001 PNgAME 34635 34702 771121 24998-16001 .ENTR 34703 34772 750701 24998-16001 LURQ 34773 35353 92067-16035 REV.1805 771013 $ALRN 35354 35471 92067-16035 REV.1805 770715 REIO 35472 35616 92067-16035 REV.1926 790506 .DFER 35617 35670 750701 24998-16001 COR.A 35671 35711 92067-16035 REV.1805 770621 RSTOR(0099)26042 26151 92060-16040 REV.1901 781108 MTD 26256 30664 BUFER 30703 31065 92060-16043 760721 CHDLU 31066 31227 CHUTP 31230 31443 LUTRK 31472 32157 MATCH 32171 32560 90260-16043 770214 MPFND 32561 33235 PRNTH 33236 33410 TPPOS 33411 33675 ASCDC 33703 34032 92060-16043 760622 DCASC 34035 34142 92060-16043 760622 DRT 34143 34232 92060-16043 760622 DSCAD 34233 34303 92060-16043 760622 MEMGT 34304 34317 92060-16043 760622 SUB 34320 34341 92060-16043 760622 READU 34342 34462 RMOVI 34463 34470 92060-16043 760622 MESG 34471 35623 92060-16043 770214 .TAPE 35624 35636 750701 24998-16001 IAND 35637 35646 750701 24998-16001 PAUSE 35647 35747 771122 24998-16001 RMPAR 35752 36014 781106 24998-16001 PAU.E 36016 36016 750701 24998-16001 PNAME 36017 36064 771121 24998-16001 .ENTR 36065 36154 750701 24998-16001 LURQ 36155 36535 92067-16035 REV.1805 771013 $ALRN 36536 36653 92067-16035 REV.1805 770715 REIO 36654 37000 92067-16035 REV.1926 790506 .DFER 37001 37052 750701 24998-16001 COR.A 37053 37073 92067-16035 REV.1805 770621 COPY (0099)26042 26076 92060-16042 REV.1704 770214 DD 26124 30150 BUFER 30154 30336 92060-16043 760721 CHDLU 30337 30500 CHUTP 30501 30714 LUTRK 30715 31402 MATCH 31403 31772 90260-16043 770214 MPFND 31773 32447 ASCDC 32455 32604 92060-16043 760622 DCASC 32605 32712 92060-16043 760622 DRT 32713 33002 92060-16043 760622 DSCAD 33003 33053 92060-16043 760622 MEMGT 33054 33067 92060-16043 760622 SUB 33070 33111 92060-16043 760622 READU 33112 33232 RMOVI 33233 33240 92060-16043 760622 MESG 33255 34407 92060-16043 770214 IAND 34410 34417 750701 24998-16001 PAUSE 34420 34520 771122 24998-16001 RMPAR 34521 34563 781106 24998-16001 PAU.E 34564 34564 750701 24998-16001 PNAME 34565 34632 771121 24998-16001 .ENTR 34633 34722 750701 24998-16001 REIO 34723 35047 92067-16035 REV.1926 790506 .DFER 35050 35121 750701 24998-16001 COR.A 35122 35142 92067-16035 REV.1805 770621 VERFY(0099)26042 26107 92060-16041 REV.1704 761201 VRFSB 26110 27360 DCASC 27361 27466 92060-16043 760622 MEMGT 27467 27502 92060-16043 760622 .TAPE 27503 27515 750701 24998-16001 IAND 27516 27525 750701 24998-16001 PAUSE 27526 27626 771122 24998-16001 RMPAR 27627 27671 781106 24998-16001 PAU.E 27672 27672 750701 24998-16001 PNAME 27673 27740 771121 24998-16001 .ENTR 27744 30033 750701 24998-16001 REIO 30035 30161 92067-16035 REV.1926 790506 .DFER 30162 30233 750701 24998-16001 COR.A 30234 30254 92067-16035 REV.1805 770621 LGTAT(0089)26042 30115 92067-16008 REV.1926 790504 IFBRK 30116 30151 92067-16035 REV.1913 790124 $CVT3 30152 30237 92067-16035 REV.1805 770621 KEYS (0075)26043 35110 CREAT 35114 35377 92002-16006 REV.1926 790501 OPEN 35400 35565 92002-16006 741205 READF 35604 36342 92002-16006 770801 CLOSE 36365 36503 92002-16006 771115 NAM.. 36504 36600 92002-16006 740801 $OPEN 36601 37007 92002-16006 740801 P.PAS 37010 37036 92002-16006 740801 RW$UB 37037 37310 92002-16006 750422 RWND$ 37311 37433 92002-16006 771121 R/W$ 37434 37567 92002-16006 740801 ..MAP 37570 37663 751101 24998-16001 CLRIO 37664 37672 750701 24998-16001 IAND 37673 37702 750701 24998-16001 IOR 37703 37712 750701 24998-16001 RMPAR 37713 37755 781106 24998-16001 .ENTR 37760 40047 750701 24998-16001 REIO 40051 40175 92067-16035 REV.1926 790506 .DFER 40176 40247 750701 24998-16001 KCVT 40250 40263 92001-16035 REV.1805 770621 PARSE 40264 40303 92067-16035 REV.1805 770714 $PARS 40304 40524 92067-16035 REV.1840 780811 $CVT3 40525 40612 92067-16035 REV.1805 770621 KYDMP(0010)26042 27366 OPEN 27367 27554 92002-16006 741205 READF 27572 30330 92002-16006 770801 CLOSE 30350 30466 92002-16006 771115 $OPEN 30467 30675 92002-16006 740801 P.PAS 30676 30724 92002-16006 740801 RW$UB 30725 31176 92002-16006 750422 RWND$ 31177 31321 92002-16006 771121 R/W$ 31322 31455 92002-16006 740801 CLRIO 31456 31464 750701 24998-16001 IAND 31465 31474 750701 24998-16001 RMPAR 31475 31537 781106 24998-16001 .ENTR 31540 31627 750701 24998-16001 REIO 31630 31754 92067-16035 REV.1926 790506 .DFER 31757 32030 750701 24998-16001 KCVT 32036 32051 92001-16035 REV.1805 770621 $CVT3 32052 32137 92067-16035 REV.1805 770621 AUTOR(0010)10042 10431 91730-16009 REV.1926 790206 XLUEX 10432 10542 92067-16035 REV.1913 790119 .ENTR 10543 10632 750701 24998-16001 FIXMP 10633 10725 91730-1X008 REV 1901 781026 RT PARTITION REQMTS: D.RTR 03 PAGES SMP 05 PAGES JOB 04 PAGES BG PARTITION REQMTS: $CNFX 04 PAGES FMGR 07 PAGES EDITR 06 PAGES ] WHZAT 03 PAGES LOADR 11 PAGES GASP 06 PAGES FTN4 12 PAGES ASMB 10 PAGES XREF 07 PAGES RT4GN 12 PAGES SWTCH 11 PAGES SAVE 05 PAGES RSTOR 06 PAGES COPY 05 PAGES VERFY 03 PAGES LGTAT 03 PAGES KEYS 07 PAGES KYDMP 04 PAGES AUTOR 02 PAGES * MAXIMUM PROGRAM SIZE: W/O COM 29 PAGES W/ COM 28 PAGES W/ TA2 22 PAGES SYS AV MEM: 03149 WORDS 1ST PART PG 00036 CHANGE 1ST PART PG ? * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? SYS AV MEM: 03149 WORDS PAGES REMAINING: 00028 DEFINE PARTITIONS: PART 01? 4,RT * PART 01? PART 02? 8,RT * PART 02? PART 03? 16,BG * PART 03? PART 04? /E * PART 04? MODIFY PROGRAM PAGE REQUIREMENTS? - * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,16 * FILE MANAGER - LOADR,16 * RTE-IV LOADER - FTN4,16 * FORTRAN IV - ASMB,16 * ASSEMBLER - XREF,16 * CROSS REF. - RT4GN,16 * RTE-IV GENERATOR - SWTCH,16 * RTE-IV SWITCH - SAVE,16 * SAVE UTILITY - RSTOR,16 * RSTOR UTILITY - COPY,16 * COPY UTILITY - VERFY,16 * VERFY UTILITY - KEYS,16 * SOFT KEY UTILITY - KYDMP,16 * SOFT KEY DUMP UTILITY - EDITR,16 * RTE EDITOR - /E ASSIGN PROGRAM PARTITIONS? - * * ASSIGN PROGRAM PARTITIONS? * /E SYSTEM STORED ON DISC SYS SIZE: 54 TRKS, 010 SECS RT4GN FINISHED 0000 ERRORS J  4 02170-18007 1940 S C0122 &LFPS3              H0101 ux ECHO? * PRIMARY SYSTEM #3 ANSWER FILE (7906/20) 790926 (1940) YES * ECHO ON EST. # TRACKS IN OUTPUT FILE? 75 * ESTIMATED # OF TRACKS OUTPUT FILE NAME? !PRMS3::13 * ABSOLUTE SYSTEM FILE SYSTEM DISC? 7906 * TARGET DISC CONTROLLER SELECT CODE? 14 * DISC CHANNEL # TRKS, FIRST CYL #, HEAD #, # SURFACES, UNIT, # SPARES FOR SUBCHNL: 00? 256,0,0,2,0,8 * SUBCHANNEL 0, 7906/20 LU2 01? 203,132,0,2,0,5 * SUBCHANNEL 1, 7906/20 LU11 02? 203,236,0,2,0,5 * SUBCHANNEL 2, 7906/20 LU12 03? 138,340,0,2,0,4 * SUBCHANNEL 3, 7906/20 LU13 04? 203,0,2,1,0,5 * SUBCHANNEL 4, 7906/20 LU14 05? 198,208,2,1,0,5 * SUBCHANNEL 5, 7906/20 LU15 06? 400,0,3,1,0,11 * SUBCHANNEL 6, 7906/20 LU16 07? 400,0,4,1,0,11 * SUBCHANNEL 7, 7920 LU17 08? 1024,411,0,5,0,26 * SUBCHANNEL 8, 7920 LU18 09? 985,621,0,5,0,25 * SUBCHANNEL 9, 7920 LU19 10? /E SYSTEM SUBCHNL? 0 * SYSTEM SUBCHANNEL AUX DISC (YES OR NO OR # TRKS)? NO * NO AUX DISC TBG SELECT CODE? 10 * TBG PRIV. INT. SELECT CODE? 0 * NO PRIV. INT. MEM. RES. ACCESS TABLE AREA II? YE * MR ACCESS TA II RT MEMORY LOCK? YE * RT MEMORY LOCK BG MEMORY LOCK? YE * BG MEMORY LOCK SWAP DELAY? 50 * SWAP DELAY MEM SIZE? 64 * MEM SIZE BOOT FILE NAME? 0 * NO BOOT FILE PROG INPUT PHASE: - MAP MODULES - LINKS IN CURRENT - * - * RTE-IV SYSTEM MODULES - * - REL,%CR4S1::-2 - REL,%CR4S2::-2 - * - * DRIVERS MODULES - * - REL,%DVR00::-2 * RS232 TERMINALS - REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE - REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT - REL,%DVR32::-2 * 7906/20 DISC - REL,%2DV37::-2 * 59310B HPIB INTERFACE - REL,%DVA12::-2 * 2607-2635 LINE PRINTER - REL,%DVB12::-2 * 2608 LINE PRINTER - REL,%DVR07::-10 * 12790A MULTI-POINT I/F - REL,%DVA65::-10 * DS/1000 - * - * SPECIAL SYSTEM SOFTWARE - * - REL,%4DP43::-2 * POWER FAIL - REL,%$CNFX::-2 * CONFIGURATOR EXTENSION - REL,%DBUGR::-2 * USER DEBUG - * - * USER PROGRAMS - * - REL,%BMPG1::-2 * RTE-IV FMGR - REL,%BMPG2::-2 - REL,%BMPG3::-2 - REL,%AUTO7::-10 * AUTO RESTART PROGRAM - REL,%4WHZT::-2 * RTE-IV WHZAT - REL,%4LDR ::-2 * RTE-IV LOADER - REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB - REL,%4SPO2::-2 - REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. - REL,%FTN4::-2 * RTE FORTRAN IV, MAIN - REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE - REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 - REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 - REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 - REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 - REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 - REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 - REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN - REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 - REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 - REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 - REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 - REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 - REL,%4XREF::-2 * RTE-IV CROSS REF. - REL,%RT4G1::-2 * RTE-IV GENERATOR - REL,%RT4G2::-2 - REL,%4SWTH::-2 * RTE-IV SWITCH - REL,%SAVE::-2 * SAVE UTILITY - REL,%RESTR::-2 * RESTORE UTILITY - REL,%COPY::-2 * COPY UTILITY - REL,%VERFY::-2 * VERFY UTILITY - REL,%DBKLB::-2 * DISC BACK-UP UTILITY - REL,%LGTAT::-2 * DISC TRACK MAP UTILITY - REL,%IB4A::-2 * HPIB LIBRARY - REL,%SRQ.P::-2 * HPIB SERVICE REQUEST - REL,%KEYS::-2 * SOFT KEYS - REL,%KYDMP::-2 * KEY DUMP - * - * LIBRARIES - * - REL,%BMLIB::-2 * RTE BATCH LIBRARY - REL,%CLIB ::-2 * RTE COMPILER LIBRARY - REL,%FF4.N::-2 * RTE FTN-IV LIBRARY - REL,%RLIB1::-2 * RTE REL. LIBRARY 1 - REL,%RLIB2::-2 * RTE REL. LIBRARY 2 - REL,%RLIB3::-2 * RTE REL. LIBRARY 3 - REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY - REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY - REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY - REL,%TSKSC::-10 * BASIC TASK SCHEDULER - REL,%BAIMG::-10 * BASIC IMAGE LIBRARY - REL,%MPLIB::-10 * MULTI-POINT LIBRARY - REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY - REL,%DBLIB::-10 * IMAGE LIBRARY - * - * DS/1000 SOFTWARE - * - REL,%QUEUE::-10 - REL,%GRPM::-10 - REL,%RTRY::-10 - REL,%QCLM::-10 - REL,%RFAM2::-10 - REL,%EXECM::-10 - REL,%EXECW::-10 - REL,<%DLIS1::-10 - REL,%PROGL::-10 - REL,%PTOPM::-10 - REL,%UPLIN::-10 - REL,%EDITD::-10 * DS/1000 INTERACTIVE EDITOR - REL,%REMAT::-10 - REL,%OPERM::-10 - REL,%NDTGN::-10 - REL,%LSTEN::-10 - REL,%DSLB1::-10 - REL,%DSLB2::-10 - REL,%DSLB3::-10 - DISPLAY UNDEFS UNDEFS &6940 - /E UNDEFS &6940 PARAMETERS - WHZAT,3,41 - AUTOR,4,10 - PRMPT,1,10 - R$PN$,1,10 - TTYEV,17 - TRAP,30 - .DBRN,30 - LOADR,3,89 - FTN4,3,89 - ASMB,3,89 - XREF,3,89 - LGTAT,3,89 - GASP,19 - /E CHANGE ENTS? - .FAD,RP,105000 - .FSB,RP,105020 - .FMP,RP,105040 - .FDV,RP,105060 - IFIX,RP,105100 - FLOAT,RP,105120 - .MPY,RP,100200 - .DIV,RP,100400 - .DLD,RP,104200 - .DST,RP,104400 - .MVW,RP,105777 - .EMAP,RP,105257 - .EMIO,RP,105240 - MMAP,RP,105241 - Z$DBL,RP,3 * 3 WORD FLOATING POINT - /E TABLE AREA I EQUIPMENT TABLE ENTRY EQT 01? * * EQUIPMENT TABLE ENTRIES * 14,DVR32,D * EQT1: 7906/20 SYSTEM DISC EQT 02? 11,DVA65,X=7,T=240 * EQT2: DS/1000 COMM. PORT #1 EQT 03? 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT #2 EQT 04? 15,DVA05,B,X=13 * EQT4: 2645/48 SYSTEM CONSOLE EQT 05? 16,DVR37,X=57,T=6000 * EQT5: 59310B HPIB INTERFACE EQT 06? 17,DVA12,B,T=6000 * EQT6: 2607-2635 LINE PRINTER EQT 07? 20,DVR23,D,B,T=6000 * EQT7: 7970B MAGNETIC TAPE UNIT EQT 08? 22,DVR07,X=5 * EQT8: 12790A MULTI-POINT I/F EQT 09? 67,DVR07,X=5 * EQT9: MULTI-POINT TERMINAL #1 EQT 10? 67,DVR07,X=5 C * EQT10: MULTI-POINT TERMINAL #2 EQT 11? 23,DVB12,B,X=5,T=6000 * EQT11: 2608 LINE PRINTER EQT 12? 24,DVR00,B,T=6000 * EQT12: RS232 TERMINAL EQT 13? 70,DVS43,X=18,M * EQT13: SPOOL EQT 14? 71,DVS43,X=18,M * EQT14: SPOOL EQT 15? 72,DVS43,X=18,M * EQT15: SPOOL EQT 16? 73,DVS43,X=18,M * EQT16: SPOOL EQT 17? 74,DVS43,X=18,M * EQT17: SPOOL EQT 18? 75,DVS43,X=18,M * EQT18: SPOOL EQT 19? 4,DVP43,M * EQT19: POWER FAIL EQT 20? /E DEVICE REFERENCE TABLE 1 = EQT #? * * DEVICE REFERENCE TABLE ENTRIES * 4,0 * LU1 - 2645/2648 SYSTEM CONSOLE 2 = EQT #? 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 3 = EQT #? 0 * LU3 - RESERVED 4 = EQT #? 4,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 5 = EQT #? 4,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 = EQT #? 6 * LU6 - DVA12 LINE PRINTER 7 = EQT #? 11 * LU7 - 2608 LINE PRINTER 8 = EQT #? 7 * LU8 - 7970B MAGNETIC TAPE UNIT 9 = EQT #? 2,1 * LU9 - DS/1000 HARDWIRE COMM. PORT #1 10 = EQT #? 3,1 * LU10 - DS/1000 HARDWIRE COMM. PORT #2 11 = EQT #? 1,1 * LU11 - 7906/20 SUBCHANNEL 1 12 = EQT #? 1,2 * LU12 - 7906/20 SUBCHANNEL 2 13 = EQT #? 1,3 * LU13 - 7906/20 SUBCHANNEL 3 14 = EQT #? 1,4 * LU14 - 7906/20 SUBCHANNEL 4 15 = EQT #? 1,5 * LU15 - 7906/20 SUBCHANNEL 5 16 = EQT #? 1,6 * LU16 - 7906/20 SUBCHANNEL 6 17 = EQT #? 1,7 * L:U17 - 7920 SUBCHANNEL 7 18 = EQT #? 1,8 * LU18 - 7920 SUBCHANNEL 8 19 = EQT #? 1,9 * LU19 - 7920 SUBCHANNEL 9 20 = EQT #? 0 * LU20 - RESERVED 21 = EQT #? 0 * LU21 - RESERVED 22 = EQT #? 8 * LU22 - MULTI-POINT INTERFACE 23 = EQT #? 9 * LU23 - MULTI-POINT TERMINAL #1 24 = EQT #? 10 * LU24 - MULTI-POINT TERMINAL #2 25 = EQT #? 0 * LU25 - RESERVED 26 = EQT #? 0 * LU26 - RESERVED 27 = EQT #? 0 * LU27 - RESERVED 28 = EQT #? 0 * LU28 - RESERVED 29 = EQT #? 0 * LU29 - RESERVED 30 = EQT #? 5,0 * LU30 - 59310B HPIB INTERFACE 31 = EQT #? 5,1 * LU31 - HPIB ADDRESS 1 32 = EQT #? 5,2 * LU32 - HPIB ADDRESS 2 33 = EQT #? 5,3 * LU33 - HPIB ADDRESS 3 34 = EQT #? 5,4 * LU34 - HPIB ADDRESS 4 35 = EQT #? 5,5 * LU35 - HPIB ADDRESS 5 36 = EQT #? 5,6 * LU36 - HPIB ADDRESS 6 37 = EQT #? 5,7 * LU37 - HPIB ADDRESS 7 38 = EQT #? 5,8 * LU38 - HPIB ADDRESS 8 39 = EQT #? 5,9 * LU39 - HPIB ADDRESS 9 40 = EQT #? 13 * LU40 - SPOOL 41 = EQT #? 14 * LU41 - SPOOL 42 = EQT #? 15 * LU42 - SPOOL 43 = EQT #? 16 * LU43 - SPOOL 44 = EQT #? 17 * LU44 - SPOOL 45 = EQT #? 18 * LU45 - SPOOL 46 = EQT #? 19 * LU46 - POWER FAIL 47 = EQT #? 12 * LU47 - RS232 TERMINAL 48 = EQT #? 0 M * LU48 - SPARE 49 = EQT #? 0 * LU49 - SPARE 50 = EQT #? 0 * LU50 - SPARE 51 = EQT #? 0 * LU51 - SPARE 52 = EQT #? 0 * LU52 - SPARE 53 = EQT #? 0 * LU53 - SPARE 54 = EQT #? 0 * LU54 - SPARE 55 = EQT #? 0 * LU55 - SPARE 56 = EQT #? 0 * LU56 - SPARE 57 = EQT #? 0 * LU57 - SPARE 58 = EQT #? 0 * LU58 - SPARE 59 = EQT #? 0 * LU59 - SPARE 60 = EQT #? 0 * LU60 - SPARE 61 = EQT #? 0 * LU61 - SPARE 62 = EQT #? 0 * LU62 - SPARE 63 = EQT #? 0 * LU63 - SPARE 64 = EQT #? /E INTERRUPT TABLE - * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL - 11,PRG,QUEUE * DS/1000 COMM. PORT #1 - 12,PRG,QUEUE * DS/1000 COMM. PORT #2 - 14,EQT,1 * 7906/20 SYSTEM DISC - 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE - 16,EQT,5 * 59310B HPIB INTERFACE - 17,EQT,6 * 2607-2635 LINE PRINTER - 20,EQT,7 * 7970B MAGNETIC TAPE UNIT - 21,EQT,7 * 7970B MAGNETIC TAPE UNIT - 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE - 23,EQT,11 * 2608 LINE PRINTER - 24,PRG,PRMPT * RS232 TERMINAL - 67,ABS,0 * MULTI-POINT INTERFACE - 70,EQT,13 * SPOOL - 71,EQT,14 * SPOOL - 72,EQT,15 * SPOOL - 73,EQT,16 * SPOOL - 74,EQT,17 * SPOOL - 75,EQT,18 * SPOOL - /E TABLE AREA I MODULES $$TB1(0099)03356 03500 92067-16014 REV.:1926 790506 DRIVR PART 00002 CHANGE DRIVR PART? * 2 * CHANGE DP SIZE DP 01: DVR32(0099)04000 05524 92060-16031 REV 1840 780515 DVR00(0099)05546 06652 29029-60001 REV 1740 770808 DVR23(0099)06673 07606 92202-16001 REV.1913 - 790202 SUBSYSTEM GLOBAL AREA SP.CL )10000 10002 92067-16028 REV.1805 780317 TRAP )10003 11041 92101-16010 770208 .DBRN )11042 11072 92063-12001 REV.1826 770601 PGMAD )11073 11217 91740-16027 REV 1740 770329 .ENTR 11220 11307 750701 24998-16001 #REQU )11314 12023 91740-16028 REV 1913 790131 .ENTR 12030 12117 750701 24998-16001 DRTEQ )12120 12210 91740-16030 REV 1740 770330 .ENTR 12211 12300 750701 24998-16001 RES )12301 13152 91740-16031 REV 1913 781130 .ENTR 13153 13242 750701 24998-16001 D$EQT )13243 13243 91740-16068 REV 1740 770623 RT COMMON 00000 CHANGE RT COMMON ? 0 * RT COMMON CHANGE RT COM ADD 13244 BG COMMON 00348 CHANGE BG COMMON ? 0 * BG COMMON CHANGE BG COM ADD 13244 BG COMMON 00348 SYSTEM DRIVER AREA DVP43(0099)14000 14637 92067-16004 REV.1926 790506 DVS43(0099)14660 17644 92067-16028 REV.1926 790505 TABLE AREA II # OF I/O CLASSES? 32 * # OF I/O CLASSES # OF LU MAPPINGS? 16 * # OF LU MAPPINGS # OF RESOURCE NUMBERS? 32 * # OF RESOURCE NUMBERS BUFFER LIMITS (LOW, HIGH)? 100,400 * BUFFER LIMITS # OF BLANK ID SEGMENTS? 40 * # OF BLANK ID SEGMENTS # OF BLANK SHORT ID SEGMENTS? 55 * # OF BLANK SHORT ID SEGMENTS # OF BLANK ID EXTENSIONS? 20  * # OF BLANK ID EXTENSIONS MAXIMUM # OF PARTITIONS? 64 * MAX NUMBER OF PARTITIONS TABLE AREA II MODULES $$TB2(0099)30646 30714 92067-16014 REV.1926 790510 SYSTEM $CSY4(0099)30715 30714 92067-16014 REV.1926 790506 DISP4(0099)30766 36335 92067-16014 REV.1926 790221 RTIME(0099)36360 37164 92067-16014 REV.1805 780104 $ASC4(0099)37165 37257 92067-16014 REV.1805 780125 RTIO4(0099)37332 44634 92067-16014 REV.1926 790506 EXEC4(0099)44661 47264 92067-16014 REV.1926 790506 $TRN4(0099)47317 47471 92067-16014 REV.1805 780104 SCHD4(0099)47517 54672 92067-16014 REV.1926 790506 $ALC (0099)54702 55107 92067-16014 REV.1805 741120 OCMD4(0099)55156 56317 92067-16014 REV.1805 771102 PERR4(0099)56324 57266 92067-16014 REV.1840 780731 DBKLB(0099)57267 57266 92060-16043 REV.1901 781108 $BALB(0099)57267 57266 92002-16006 REV.1926 790502 FF4.A(0099)57267 57266 24998-16002 REV.1926 790516 RLIB1(0099)57267 57266 24998-16001 REV.1926 790501 RLIB2(0099)57267 57266 24998-16009 REV.1926 790501 RLIB3(0099)57267 57266 24998-16011 REV.1926 790501 $YSLB(0099)57267 57266 92067-16035 REV.1926 790506 MPLIB(0099)57267 57266 91730-12001 REV 1926 MULTIPOINT LIBRARY 790509 DECAR(0099)57267 57266 24306-60001 REV.1940 790618 DSLB1(0099)57267 57266 91740-12001 REV 1913 790131 DSLB2(0099)57267 57266 91740-12002 REV 1913 790214 DSLB3(0099)57267 57266 91740-12003 REV 1740 771027 $CNFG(0099)57277 64271 92067-16014 REV.1926 790610 PARTITION DRIVERS DP 02: DVA05(0099)04102 07164 92001-16035 REV. CODE 1913 9-28-78 DP 03: DVR37(0099)04122 06633 59310-16003 REV.1940 790724 EQTX=18+7*D DVA12(0099)06642 07542 92001-16020 780511 REV 1826+ DP 04: DVB12(0099)04000 05561 92062-16004 REV 1926 790504 1030PM .LBT 05562 05612 770518 24998-16001 DVA65(0099)05631 07022 91740-16071 REV 1913 790127 DP 05: DVR07(0099)04107 06543 91730-16001 REV 1926 790509 &DV07X MEMORY RESIDENT LIBRARY LURQ 32000 32360 92067-16035 REV.1805 771013 $ALRN 32361 32476 92067-16035 REV.1805 770715 IDGET 32477 32561 92067-16037 REV.1805 771227 RNRQ 32562 33023 92067-16035 REV.1805 780222 .ENTR 33024 33113 750701 24998-16001 MEMORY RESIDENTS EXTND(0010)34002 34154 92067-16028 REV.1805 771115 RMPAR 34155 34217 781106 24998-16001 SPOUT(0011)34222 35175 92067-16028 REV.1805 780309 .DRCT 35176 35204 92067-16035 REV.1805 741120 PRMPT(0010)35207 35641 92067-16003 REV.1926 790506 $BMON 35642 35642 92002-12001 REV.1940 790729 TRMLU 35643 35736 92067-16035 REV.1805 771117 R$PN$(0010)35744 36477 92067-16003 REV.1926 790506 TRMLU 36501 36574 92067-16035 REV.1805 771117 SRQ.P(0030)36577 36645 59310-16005 REV 1805 780110 RMPAR 36646 36710 781106 24998-16001 TTYEV(0002)36713 36722 29102-60013 QUEUE(0002)36725 37171 91740-16013 REV 1913 781130 GRPM (0004)37174 37765 91740-16014 REV 1913 790128 RTRY (0020)37770 40213 91740-16015 REV 1913 790128 UPLIN(0003)40217 41202 91740-16002 REV 1840 780726 MESSS 41203 41342 92067-16035 REV.1840 780724 RT DISC RESIDENTS D.RTR(0001)32042 34133 92002-16007 REV.1926 790502 P.PAS 34134 34162 92002-16006 740801 PRTN 34163 34275 92067-16035 REV.1805 771005 SMP (0030)32042 35437 92067-16028 REV.1940 790802 READF 35463 36221 92002-16006 770801 POST 36246 36274 92002-16006 740801 P.PAS 36275 36323 92002-16006 740801  RW$UB 36324 36575 92002-16006 750422 RWND$ 36576 36720 92002-16006 771121 R/W$ 36721 37054 92002-16006 740801 RMPAR 37055 37117 781106 24998-16001 .ENTR 37120 37207 750701 24998-16001 .DFER 37210 37261 750701 24998-16001 RNRQ 37262 37523 92067-16035 REV.1805 780222 $ALRN 37524 37641 92067-16035 REV.1805 770715 PRTN 37642 37754 92067-16035 REV.1805 771005 .DRCT 37755 37763 92067-16035 REV.1805 741120 REIO 37764 40110 92067-16035 REV.1926 790506 JOB (0030)32042 34022 92067-16028 REV. 1940 790802 OPEN 34023 34210 92002-16006 741205 READF 34211 34747 92002-16006 770801 CLOSE 34750 35066 92002-16006 771115 POST 35067 35115 92002-16006 740801 $OPEN 35116 35324 92002-16006 740801 P.PAS 35325 35353 92002-16006 740801 RW$UB 35354 35625 92002-16006 750422 RWND$ 35626 35750 92002-16006 771121 R/W$ 35753 36106 92002-16006 740801 SPOPN 36110 36167 92002-16006 REV.1826 780413 RMPAR 36170 36232 781106 24998-16001 .ENTR 36233 36322 750701 24998-16001 .DFER 36323 36374 750701 24998-16001 RNRQ 36375 36636 92067-16035 REV.1805 780222 LURQ 36637 37217 92067-16035 REV.1805 771013 $ALRN 37220 37335 92067-16035 REV.1805 770715 .DRCT 37336 37344 92067-16035 REV.1805 741120 REIO 37345 37471 92067-16035 REV.1926 790506 $PARS 37472 37712 92067-16035 REV.1840 780811 BG DISC RESIDENTS $CNFX(0099)32042 35614 92067-16006 REV.1926 790412 $PARS 35624 36044 92067-16035 REV.1840 780811 $CVT3 36051 36136 92067-16035 REV.1805 770621 FMGR (0090)32042 33017 92002-16008 REV.1901 760627 FM.CM 33020 35061 92002-16008 REV.1926 790502 OPEN 35202 35367 92002-16006 741205 CLOSE 35370 35506 92002-16006 771115 $OPEN 35507 35715 92002-16006 740801 RWND$ 35724 36046 92002-16006 771121 R/W$ 36053 36206 92002-16006 740801 RMPAR 36207 36251 781106 24998-16001 .ENTR 36252 36341 750701 24998-16001 .DFER 36342 36413 750701 24998-16001 LURQ 36414 36774 92067-16035 REV.1805 771013 $ALRN 36775 37112 92067-16035 REV.1805 770715 .DRCT 37113 37121 92067-16035 REV.1805 741120 IFBRK 37122 37155 92067-16035 REV.1913 790124 IFTTY 37156 37231 92067-16035 REV.1805 771208 FMGR0(0099)37232 37237 92002-16008 740801 PK.. 37246 40671 CR.. 41017 42104 92002-16008 REV.1826 780414 READF 42131 42667 92002-16006 770801 RWNDF 42670 42751 92002-16006 740801 NAM.. 42752 43046 92002-16006 740801 P.PAS 43047 43075 92002-16006 740801 RW$UB 43076 43347 92002-16006 750422 LOCK. 43350 43417 92002-16006 771118 FM.UT 43420 44565 92002-16006 781103 REV.1901 CREA. 44566 44637 CREAT 44640 45123 92002-16006 REV.1926 790501 REIO 45124 45250 92067-16035 REV.1926 790506 COR.A 45251 45271 92067-16035 REV.1805 770621 FMGR1(0099)37232 37360 92002-16008 760929 .PARS 37363 40646 92002-16008 765025 C.TAB 40750 41113 92002-16008 760720 CA.. 41114 41335 92002-16008 760513 REA.C 41336 41410 92002-16008 770823 EE.. 41411 41451 92002-16008 760512 TR.. 41452 41703 92002-16008 REV.1826 780419 MR.. 41705 42147 92002-16008 760621 SE.. 42170 42354 IF.. 42355 42572 92002-16008 760929 AB.. 42573 43021 92002-16008 REV.1826 780420 DP.. 43022 43067 92002-16008 760511 READF 43070 43626 92002-16006 770801 POSNT 43634 44077 92002-16006 760702 P.PAS 44120 44146 92002-16006 740801 RW$UB 44147 44420 92002-16006 750422 WRLG. 44421 44570 92002-16006 760622< CK.SM 44571 44714 92002-16006 REV. 1805 771205 REIO 44715 45041 92067-16035 REV.1926 790506 MESSS 45042 45201 92067-16035 REV.1840 780724 CNUMD 45202 45221 92001-16035 REV.1805 770621 $CVT3 45222 45307 92067-16035 REV.1805 770621 FMGR2(0099)37232 37242 92002-16008 760622 IN.IT 37245 40342 92002-16008 780106 IN.. 40417 42325 92002-16008 REV.1901 781103 MC.. 42371 42730 92002-16008 790727 REV.1940 RC.. 42731 43116 PU.. 43117 43341 PURGE 43342 43440 92002-16006 740801 NAM.. 43441 43535 92002-16006 740801 J.PUT 43536 43562 92002-16006 740801 IPUT 43563 43603 92002-16006 740801 FID. 43604 43723 MSC. 43724 43760 LOCK. 43761 44030 92002-16006 771118 FM.UT 44033 45200 92002-16006 781103 REV.1901 .OPSY 45201 45203 771116 24998-16001 FMGR3(0099)37232 37237 92002-16008 760720 DL.. 37244 40541 92002-16008 771020 F.SET 40642 41032 92002-16006 760719 CS.. 41033 41261 92002-16008 760318 READF 41266 42024 92002-16006 770801 LOCF 42027 42215 92002-16006 750416 P.PAS 42216 42244 92002-16006 740801 RW$UB 42245 42516 92002-16006 750422 MSC. 42517 42553 FM.UT 42554 43721 92002-16006 781103 REV.1901 CK.ID 43722 43753 92002-16006 REV.1826 780403 LULU. 43756 44046 92002-16006 760227 REIO 44051 44175 92067-16035 REV.1926 790506 FMGR4(0099)37232 37243 92002-16008 760622 ST.DU 37245 40516 92002-16008 760622 CO.. 40571 41273 F.UTM 41274 41535 92002-16008 760514 CREAT 41542 42025 92002-16006 REV.1926 790501 READF 42026 42564 92002-16006 770801 RWNDF 42565 42646 92002-16006 740801 LOCF 42647 43035 92002-16006 750416 NAM.. 43036 43132 92002-16006 740801 P.PAS 43133 43161 92002-16006 740801( RW$UB 43162 43433 92002-16006 750422 FM.UT 43434 44601 92002-16006 781103 REV.1901 CREA. 44602 44653 CK.SM 44654 44777 92002-16006 REV. 1805 771205 REIO 45000 45124 92067-16035 REV.1926 790506 FMGR5(0099)37232 37244 92002-16008 760622 RU.. 37247 40110 92002-16008 781130 REV.1901 RP.. 40122 40231 92002-16008 761004 SESSN 40232 40307 92002-16008 REV.1826 780403 .RENM 40310 40434 92002-16008 761004 .EXCP 40435 40501 92002-16008 761002 IDDUP 40502 41166 92002-16008 REV.1826 780503 IDRPL 41167 41773 92002-16008 REV.1940 790726 IDRPD 41774 42314 92002-16008 REV.1826 780525 OPMES 42317 42507 92002-16008 760513 TL.. 42510 42527 READF 42530 43266 92002-16006 770801 NAM.. 43267 43363 92002-16006 740801 P.PAS 43364 43412 92002-16006 740801 RW$UB 43413 43664 92002-16006 750422 ID.A 43665 43763 92002-16008 REV.1826 780403 CNT. 43764 44220 92002-16006 760520 FCONT 44235 44327 92002-16006 REV.1826 780413 BUMP. 44330 44366 92002-16006 741025 SET.T 44367 44415 92002-16006 740801 TL. 44416 44451 92002-16006 760322 ST.TM 44452 44506 92002-16006 741223 REIO 44507 44633 92067-16035 REV.1926 790506 MESSS 44634 44773 92067-16035 REV.1840 780724 FMGR6(0099)37232 37242 92002-16008 740801 CN.. 37243 37303 JO.. 37310 40340 92002-16008 REV.1926 790501 EO.. 40410 41213 92002-16008 REV.1826 780420 OF.. 41214 41307 92002-16008 740820 LG.. 41310 41335 92002-16008 760517 NAMF 41336 41511 92002-16006 771115 READF 41534 42272 92002-16006 770801 POST 42314 42342 92002-16006 740801 NAM.. 42343 42437 92002-16006 740801 P.PAS 42440 42466 92002-16006 740801 RW$UB 42467 42740 92002-16006 750422 SPOPN 4E2741 43020 92002-16006 REV.1826 780413 SET.T 43021 43047 92002-16006 740801 ST.TM 43050 43104 92002-16006 741223 B.FLG 43105 43153 92002-16006 741118 LULU. 43154 43244 92002-16006 760227 RANGE 43245 43270 92002-16006 740801 ONOFF 43271 43634 92002-16006 750128 EX.TM 43643 44060 92002-16006 771115 IPUT 44062 44102 92002-16006 740801 LU.CL 44103 44151 92002-16006 760702 AVAIL 44152 44244 92002-16006 741231 RNRQ 44245 44506 92067-16035 REV.1805 780222 REIO 44507 44633 92067-16035 REV.1926 790506 KCVT 44634 44647 92001-16035 REV.1805 770621 MESSS 44650 45007 92067-16035 REV.1840 780724 $CVT3 45010 45075 92067-16035 REV.1805 770621 FMGR7(0099)37232 37240 92002-16008 760702 ??.. 37243 41672 92002-16008 REV.1926 790502 SY.. 41673 41731 92002-16008 760520 NX.JB 41732 42663 92002-16008 REV.1926 790501 READF 42717 43455 92002-16006 770801 POST 43456 43504 92002-16006 740801 P.PAS 43505 43533 92002-16006 740801 RW$UB 43535 44006 92002-16006 750422 SPOPN 44011 44070 92002-16006 REV.1826 780413 B.FLG 44071 44137 92002-16006 741118 LULU. 44140 44230 92002-16006 760227 LU.CL 44231 44277 92002-16006 760702 RNRQ 44300 44541 92067-16035 REV.1805 780222 REIO 44542 44666 92067-16035 REV.1926 790506 MESSS 44667 45026 92067-16035 REV.1840 780724 LOGLU 45027 45077 92067-16035 REV.1826 780502 FMGR8(0099)37232 37240 92002-16008 740801 SA.. 37245 40217 92002-16008 760621 SP.. 40262 41240 92002-16008 REV.1826 780405 MS.. 41241 41534 READF 41555 42313 92002-16006 770801 RWNDF 42333 42414 92002-16006 740801 LOCF 42415 42603 92002-16006 750416 P.PAS 42604 42632 92002-16006 740801 RW$UB 42633 43104 92002-16006 750422 IPUT A 43105 43125 92002-16006 740801 CREA. 43126 43177 CREAT 43200 43463 92002-16006 REV.1926 790501 NAM.. 43464 43560 92002-16006 740801 CK.SM 43561 43704 92002-16006 REV. 1805 771205 ID.A 43706 44004 92002-16008 REV.1826 780403 WRIS$ 44005 44043 92002-16006 740801 READ. 44044 44070 92002-16006 740801 %WRIS 44071 44466 750701 24998-16001 SREAD 44467 45131 771116 24998-16001 PRTN 45132 45244 92067-16035 REV.1805 771005 REIO 45245 45371 92067-16035 REV.1926 790506 FMGR9(0099)37232 37240 92002-16008 760720 LI.. 37241 40743 92002-16008 760720 CL.. 41056 41337 LU.. 41342 42526 92002-16008 790501 READF 42614 43352 92002-16006 770801 FSTAT 43353 43377 92002-16006 740801 LOCF 43400 43566 92002-16006 750416 POST 43567 43615 92002-16006 740801 P.PAS 43616 43644 92002-16006 740801 RW$UB 43660 44131 92002-16006 750422 SPOPN 44134 44213 92002-16006 REV.1826 780413 LULU. 44214 44304 92002-16006 760227 RANGE 44305 44330 92002-16006 740801 AVAIL 44331 44423 92002-16006 741231 RNRQ 44424 44665 92067-16035 REV.1805 780222 REIO 44666 45012 92067-16035 REV.1926 790506 KCVT 45013 45026 92001-16035 REV.1805 770621 $CVT3 45027 45114 92067-16035 REV.1805 770621 WHZAT(0041)32042 34165 92067-16007 REV.1926 790506 TMVAL 34166 34253 92067-16035 REV.1913 790124 .ENTR 34254 34343 750701 24998-16001 LOADR(0089)32042 47051 92067-16002 REV.1926 790502 CREAT 47052 47335 92002-16006 REV.1926 790501 OPEN 47336 47523 92002-16006 741205 READF 47545 50303 92002-16006 770801 POSNT 50323 50566 92002-16006 760702 APOSN 50567 50737 92002-16006 781103 REV.1901 LOCF 50740 51126 92002-16006 750416 CLOSE 51127 51245 92002-16006 771115 Fb POST 51246 51274 92002-16006 740801 NAM.. 51275 51371 92002-16006 740801 $OPEN 51372 51600 92002-16006 740801 P.PAS 51601 51627 92002-16006 740801 RW$UB 51641 52112 92002-16006 750422 RWND$ 52125 52247 92002-16006 771121 R/W$ 52250 52403 92002-16006 740801 NAMR 52404 52700 750701 24998-16001 RMPAR 52701 52743 781106 24998-16001 .ENTR 52744 53033 750701 24998-16001 LURQ 53034 53414 92067-16035 REV.1805 771013 $ALRN 53415 53532 92067-16035 REV.1805 770715 PRTN 53533 53645 92067-16035 REV.1805 771005 REIO 53646 53772 92067-16035 REV.1926 790506 .DFER 53773 54044 750701 24998-16001 IFBRK 54051 54104 92067-16035 REV.1913 790124 $CVT3 54105 54172 92067-16035 REV.1805 770621 LOGLU 54173 54243 92067-16035 REV.1826 780502 FTIME 54244 54535 92067-16035 REV.1840 780731 GASP (0080)32042 33455 92067-16028 REV.1805 780323 G1CEX 33456 33567 92002-16001 760615 ST.LU 33570 33745 92067-16028 780317 G1ROT 33751 34124 92002-16001 760615 G0QIP 34130 34415 92002-16001 760621 OPEN 34416 34603 92002-16006 741205 READF 34604 35342 92002-16006 770801 CLOSE 35343 35461 92002-16006 771115 POST 35462 35510 92002-16006 740801 $OPEN 35511 35717 92002-16006 740801 P.PAS 35720 35746 92002-16006 740801 RW$UB 35752 36223 92002-16006 750422 RWND$ 36226 36350 92002-16006 771121 R/W$ 36351 36504 92002-16006 740801 RMPAR 36505 36547 781106 24998-16001 .ENTR 36550 36637 750701 24998-16001 RNRQ 36640 37101 92067-16035 REV.1805 780222 $ALRN 37102 37217 92067-16035 REV.1805 770715 .DRCT 37220 37226 92067-16035 REV.1805 741120 REIO 37227 37353 92067-16035 REV.1926 790506 .DFER 37354 37425 750701 24998-16001 KCVT 374[26 37441 92001-16035 REV.1805 770621 PARSE 37442 37461 92067-16035 REV.1805 770714 $PARS 37462 37702 92067-16035 REV.1840 780811 $CVT3 37703 37770 92067-16035 REV.1805 770621 GASP1(0099)37771 40003 92067-16028 REV.1805 760615 G1CDJ 40004 40370 G1CCJ 40371 41005 92002-16001 760615 G1CKS 41006 41622 92002-16001 760627 G1CDS 41640 42665 92002-16001 760621 G1STM 42673 43065 92002-16001 740807 CNUMD 43066 43105 92001-16035 REV.1805 770621 GASP2(0099)37771 40001 92067-16028 REV.1805 760615 G1CSD 40002 40420 92002-16001 760622 G1C?? 40421 41231 92002-16001 741027 G1CIN 41236 42600 92002-16001 760630 G1CDA 42660 43234 92002-16001 760627 CREAT 43235 43520 92002-16006 REV.1926 790501 PURGE 43521 43617 92002-16006 740801 NAM.. 43620 43714 92002-16006 740801 CNUMD 43715 43734 92001-16035 REV.1805 770621 FTN4 (0089)32042 33662 92060-16092 790112 REV. 1926 NEX.F 33672 34356 92060-16092 790106 OA.F 34357 35124 92060-16092 781212 FA.F 35156 36746 92060-16092 790116 EX.F 37033 41265 92060-16092 790430 IC.F 41355 43363 92060-16092 790125 IDN.F 43441 45145 92060-16092 781212 SEG.F 45164 45200 92060-16093 770531 REV. 1913 C.BIN 45201 45236 92060-16102 770721 REV. 1901 $CLIB C.LST 45237 45274 92060-16102 770721 REV. 1901 $CLIB C.SAU 45275 45332 92060-16102 770721 REV. 1901 $CLIB C.SC0 45333 45370 92060-16102 770802 REV. 1901 $CLIB C.SC1 45371 45426 92060-16102 770802 REV. 1901 $CLIB C.TRN 45427 45647 92060-16102 781016 REV. 1901 $CLIB C.BBI 45650 46050 92060-16102 770515 REV. 1901 $CLIB C.BLI 46051 46251 92060-16102 770515 REV. 1901 $CLIB C.BSA 46252 46452 92060-16102 770515 REV. 1901 $CLIB C.BS0 46453 46653 92060-16102 771214 REV. 1901 $CLIB C.BS1 46654 47054 92060-16102 770515 REV. 1901 $CLIB RED.C 47055 47234 92060-16102 790403 REV. 1926 $CLIB RWN.C 47235 47333 92060-16102 780921 REV. 1901 $CLIB SPC.C 47334 47412 92060-16102 781101 REV. 1901 $CLIB WRT.C 47413 47525 92060-16102 770523 REV. 1901 $CLIB GES.C 47526 47642 92060-16102 780728 REV. 1901 $CLIB ADS.C 47643 50001 92060-16102 770809 REV. 1901 $CLIB P.PAS 50003 50031 92002-16006 740801 OLY.C 50032 50077 92060-16103 780815 REV. 1901 $CLIB GEX.C 50100 50551 92060-16105 781127 REV. 1901 $CLIB LURQ 50552 51132 92067-16035 REV.1805 771013 $ALRN 51133 51250 92067-16035 REV.1805 770715 IFBRK 51251 51304 92067-16035 REV.1913 790124 IFTTY 51305 51360 92067-16035 REV.1805 771208 F4.0 (0099)51361 55135 92060-16094 790125 REV. 1913 GMS.C 55136 55146 92060-16103 781006 REV. 1901 $CLIB ID.AD 55147 55211 92060-16103 780811 REV. 1901 $CLIB ID.A 55212 55310 92002-16008 REV.1826 780403 COR.A 55311 55331 92067-16035 REV.1805 770621 F4.1 (0099)51361 56152 92060-16095 790430 REV. 1926 F4.2 (0099)51361 52300 92060-16096 790430 REV. 1926 EOF.C 52301 52357 92060-16102 770523 REV. 1901 $CLIB F4.3 (0099)51361 53467 92060-16097 781212 REV. 1913 GMS.C 53470 53500 92060-16103 781006 REV. 1901 $CLIB ID.AD 53501 53543 92060-16103 780811 REV. 1901 $CLIB ID.A 53544 53642 92002-16008 REV.1826 780403 COR.A 53643 53663 92067-16035 REV.1805 770621 F4.4 (0099)51361 53342 92060-16098 790430 REV. 1926 EOF.C 53343 53421 92060-16102 770523 REV. 1901 $CLIB END.C 53422 53446 92060-16103 780726 REV. 1901 $CLIB OPN.C 53502 54376 92060-16102 790420 REV. 1926 $CLIB PRM.C 54411 54476 92060-16102 780921 REV. 1901 $CLIB CLO.C 54477 54626 92060-16102 790207 REV. 1913 $CLIB CRE.C 54627 54705 92060-16102 780921 REV. 1901 $CLIdB NAM.. 54706 55002 92002-16006 740801 SUP.C 55003 55304 92060-16104 781106 REV. 1901 $CLIB GMM.C 55305 55351 92060-16103 780921 REV. 1901 $CLIB ID.AD 55352 55414 92060-16103 780811 REV. 1901 $CLIB ID.A 55415 55513 92002-16008 REV.1826 780403 NAMR 55516 56012 750701 24998-16001 .ENTR 56013 56102 750701 24998-16001 PRTN 56103 56215 92067-16035 REV.1805 771005 COR.A 56216 56236 92067-16035 REV.1805 770621 LOGLU 56237 56307 92067-16035 REV.1826 780502 F4.5 (0099)51361 55256 92060-16101 790103 REV. 1913 ASMB (0089)32042 37553 92067-16011 REV.1940 790803 C.BIA 37554 37611 92060-16102 780920 REV.1901 $CLIB C.BIN 37612 37647 92060-16102 770721 REV. 1901 $CLIB C.LST 37650 37705 92060-16102 770721 REV. 1901 $CLIB C.SOR 37706 37743 92060-16102 770815 REV. 1901 $CLIB C.TRN 37744 40164 92060-16102 781016 REV. 1901 $CLIB C.BBI 40165 40365 92060-16102 770515 REV. 1901 $CLIB C.BLI 40366 40566 92060-16102 770515 REV. 1901 $CLIB C.BSO 40567 40767 92060-16102 770515 REV. 1901 $CLIB EOF.C 40770 41046 92060-16102 770523 REV. 1901 $CLIB END.C 41047 41073 92060-16103 780726 REV. 1901 $CLIB PRM.C 41074 41161 92060-16102 780921 REV. 1901 $CLIB RED.C 41162 41341 92060-16102 790403 REV. 1926 $CLIB SPC.C 41342 41420 92060-16102 781101 REV. 1901 $CLIB WRT.C 41421 41533 92060-16102 770523 REV. 1901 $CLIB WARC. 41534 41562 92060-16102 770523 REV. 1901 $CLIB CLO.C 41563 41712 92060-16102 790207 REV. 1913 $CLIB GES.C 41715 42031 92060-16102 780728 REV. 1901 $CLIB ADS.C 42035 42173 92060-16102 770809 REV. 1901 $CLIB P.PAS 42174 42222 92002-16006 740801 SUP.C 42223 42524 92060-16104 781106 REV. 1901 $CLIB GMM.C 42525 42571 92060-16103 780921 REV. 1901 $CLIB OLY.C 42572 42637 92060-16103 780815 REV. 1901 $CLIB ID.A0D 42640 42702 92060-16103 780811 REV. 1901 $CLIB ID.A 42703 43001 92002-16008 REV.1826 780403 GEX.C 43002 43453 92060-16105 781127 REV. 1901 $CLIB NAMR 43454 43750 750701 24998-16001 .ENTR 43753 44042 750701 24998-16001 LURQ 44044 44424 92067-16035 REV.1805 771013 $ALRN 44425 44542 92067-16035 REV.1805 770715 PRTN 44543 44655 92067-16035 REV.1805 771005 IFBRK 44656 44711 92067-16035 REV.1913 790124 COR.A 44712 44732 92067-16035 REV.1805 770621 IFTTY 44733 45006 92067-16035 REV.1805 771208 LOGLU 45007 45057 92067-16035 REV.1826 780502 ASMB0(0099)45060 45551 92067-16070 REV.1940 790713 OPN.C 45574 46470 92060-16102 790420 REV. 1926 $CLIB CRE.C 46501 46557 92060-16102 780921 REV. 1901 $CLIB NAM.. 46560 46654 92002-16006 740801 RUN.C 46655 47057 92060-16104 790215 REV. 1926 $CLIB C.RP 47060 47463 92060-16104 790405 REV. 1926 $CLIB IDDUP 47515 50201 92002-16008 REV.1826 780503 IDRPL 50205 51011 92002-16008 REV.1940 790726 IDRPD 51012 51332 92002-16008 REV.1826 780525 OPEN 51333 51520 92002-16006 741205 CLOSE 51521 51637 92002-16006 771115 $OPEN 51651 52057 92002-16006 740801 RWND$ 52062 52204 92002-16006 771121 R/W$ 52205 52340 92002-16006 740801 RMPAR 52341 52403 781106 24998-16001 .DFER 52404 52455 750701 24998-16001 MESSS 52456 52615 92067-16035 REV.1840 780724 IDGET 52616 52700 92067-16037 REV.1805 771227 ASMB1(0099)45060 47216 92067-16071 REV.1940 790713 RWN.C 47217 47315 92060-16102 780921 REV. 1901 $CLIB ASMB2(0099)45060 47207 92067-16072 REV.1940 790531 ASMB3(0099)45060 45705 92067-16073 REV.1940 790531 RWN.C 45707 46005 92060-16102 780921 REV. 1901 $CLIB ASMB4(0099)45060 46407 92067-16074 REV.1940 790531 XREF (0089)32042 37464\ 92067-16012 REV.1805 771121 C.LST 37465 37522 92060-16102 770721 REV. 1901 $CLIB C.SOR 37523 37560 92060-16102 770815 REV. 1901 $CLIB C.TRN 37561 40001 92060-16102 781016 REV. 1901 $CLIB C.BLI 40002 40202 92060-16102 770515 REV. 1901 $CLIB C.BSO 40203 40403 92060-16102 770515 REV. 1901 $CLIB EOF.C 40404 40462 92060-16102 770523 REV. 1901 $CLIB END.C 40463 40507 92060-16103 780726 REV. 1901 $CLIB OPN.C 40510 41404 92060-16102 790420 REV. 1926 $CLIB PRM.C 41405 41472 92060-16102 780921 REV. 1901 $CLIB RED.C 41473 41652 92060-16102 790403 REV. 1926 $CLIB RWN.C 41653 41751 92060-16102 780921 REV. 1901 $CLIB SPC.C 41754 42032 92060-16102 781101 REV. 1901 $CLIB WRT.C 42034 42146 92060-16102 770523 REV. 1901 $CLIB WARC. 42147 42175 92060-16102 770523 REV. 1901 $CLIB CLO.C 42176 42325 92060-16102 790207 REV. 1913 $CLIB CRE.C 42326 42404 92060-16102 780921 REV. 1901 $CLIB NAM.. 42405 42501 92002-16006 740801 GES.C 42502 42616 92060-16102 780728 REV. 1901 $CLIB ADS.C 42617 42755 92060-16102 770809 REV. 1901 $CLIB P.PAS 42756 43004 92002-16006 740801 SUP.C 43005 43306 92060-16104 781106 REV. 1901 $CLIB GMM.C 43307 43353 92060-16103 780921 REV. 1901 $CLIB ID.AD 43354 43416 92060-16103 780811 REV. 1901 $CLIB ID.A 43417 43515 92002-16008 REV.1826 780403 GEX.C 43541 44212 92060-16105 781127 REV. 1901 $CLIB NAMR 44221 44515 750701 24998-16001 .ENTR 44516 44605 750701 24998-16001 LURQ 44606 45166 92067-16035 REV.1805 771013 $ALRN 45167 45304 92067-16035 REV.1805 770715 PRTN 45305 45417 92067-16035 REV.1805 771005 IFBRK 45420 45453 92067-16035 REV.1913 790124 COR.A 45454 45474 92067-16035 REV.1805 770621 IFTTY 45475 45550 92067-16035 REV.1805 771208 LOGLU 45551 45621 92067-16035 REV.1826 780502  RT4GN(0090)32042 45176 92067-16009 REV.1926 790427 CREAT 45177 45462 92002-16006 REV.1926 790501 OPEN 45463 45650 92002-16006 741205 READF 45663 46421 92002-16006 770801 APOSN 46450 46620 92002-16006 781103 REV.1901 LOCF 46621 47007 92002-16006 750416 CLOSE 47010 47126 92002-16006 771115 NAM.. 47127 47223 92002-16006 740801 $OPEN 47224 47432 92002-16006 740801 P.PAS 47433 47461 92002-16006 740801 RW$UB 47462 47733 92002-16006 750422 RWND$ 47740 50062 92002-16006 771121 R/W$ 50067 50222 92002-16006 740801 RMPAR 50223 50265 781106 24998-16001 .ENTR 50266 50355 750701 24998-16001 LURQ 50356 50736 92067-16035 REV.1805 771013 $ALRN 50737 51054 92067-16035 REV.1805 770715 REIO 51055 51201 92067-16035 REV.1926 790506 .DFER 51202 51253 750701 24998-16001 IFBRK 51254 51307 92067-16035 REV.1913 790124 COR.A 51310 51330 92067-16035 REV.1805 770621 CNUMD 51331 51350 92001-16035 REV.1805 770621 $CVT3 51351 51436 92067-16035 REV.1805 770621 GETST 51437 51736 92067-16035 REV.1805 771005 RT4G1(0090)51737 54134 92067-16009 REV.1926 790427 RT4G2(0090)51737 56071 92067-16009 REV.1926 790427 RWNDF 56072 56153 92002-16006 740801 RT4G3(0090)51737 56205 92067-16009 REV.1926 790427 RT4G4(0090)51737 55467 92067-16009 REV.1926 790427 RWNDF 55470 55551 92002-16006 740801 RT4G5(0090)51737 55737 92067-16009 REV.1926 790427 RT4G6(0090)51737 55447 92067-16009 REV.1926 790427 RT4G7(0090)51737 54223 92067-16009 REV.1926 790427 RT4G8(0090)51737 53347 92067-16009 REV.1926 790427 SWTCH(0010)32042 50302 92067-16010 REV.1926 790425 OPEN 50303 50470 92002-16006 741205 READF 50471 51227 92002-16006 770801 LOCF 51230 51416 92002-16006 750416 CL3OSE 51417 51535 92002-16006 771115 $OPEN 51536 51744 92002-16006 740801 P.PAS 51745 51773 92002-16006 740801 RW$UB 51774 52245 92002-16006 750422 RWND$ 52247 52371 92002-16006 771121 R/W$ 52372 52525 92002-16006 740801 RMPAR 52526 52570 781106 24998-16001 .ENTR 52571 52660 750701 24998-16001 REIO 52661 53005 92067-16035 REV.1926 790506 .DFER 53006 53057 750701 24998-16001 CNUMD 53060 53077 92001-16035 REV.1805 770621 $CVT3 53100 53165 92067-16035 REV.1805 770621 GETST 53166 53465 92067-16035 REV.1805 771005 SWSG1(0010)53466 54466 92067-16010 REV.1805 780206 SWSG2(0010)53466 55304 92067-16010 REV.1840 780810 SAVE (0099)32042 32106 92060-16039 REV.1901 781108 DMT 32131 34132 BUFER 34134 34316 92060-16043 760721 CHDLU 34317 34460 CHUTP 34461 34674 LUTRK 34675 35362 MPFND 35373 36047 PRNTH 36051 36223 TPPOS 36224 36510 ASCDC 36511 36640 92060-16043 760622 DCASC 36641 36746 92060-16043 760622 DRT 36747 37036 92060-16043 760622 DSCAD 37037 37107 92060-16043 760622 MEMGT 37110 37123 92060-16043 760622 SUB 37124 37145 92060-16043 760622 READU 37146 37266 RMOVI 37267 37274 92060-16043 760622 MESG 37313 40445 92060-16043 770214 .TAPE 40446 40460 750701 24998-16001 IAND 40461 40470 750701 24998-16001 PAUSE 40471 40571 771122 24998-16001 RMPAR 40572 40634 781106 24998-16001 PAU.E 40635 40635 750701 24998-16001 PNAME 40636 40703 771121 24998-16001 .ENTR 40704 40773 750701 24998-16001 LURQ 40774 41354 92067-16035 REV.1805 771013 $ALRN 41355 41472 92067-16035 REV.1805 770715 REIO 41473 41617 92067-16035 REV.1926 790506 .DFER 41620 41671 750701 24998-16001 COR.A U 41672 41712 92067-16035 REV.1805 770621 RSTOR(0099)32042 32151 92060-16040 REV.1901 781108 MTD 32256 34664 BUFER 34703 35065 92060-16043 760721 CHDLU 35066 35227 CHUTP 35230 35443 LUTRK 35472 36157 MATCH 36171 36560 90260-16043 770214 MPFND 36561 37235 PRNTH 37236 37410 TPPOS 37411 37675 ASCDC 37703 40032 92060-16043 760622 DCASC 40035 40142 92060-16043 760622 DRT 40143 40232 92060-16043 760622 DSCAD 40233 40303 92060-16043 760622 MEMGT 40304 40317 92060-16043 760622 SUB 40320 40341 92060-16043 760622 READU 40342 40462 RMOVI 40463 40470 92060-16043 760622 MESG 40471 41623 92060-16043 770214 .TAPE 41624 41636 750701 24998-16001 IAND 41637 41646 750701 24998-16001 PAUSE 41647 41747 771122 24998-16001 RMPAR 41752 42014 781106 24998-16001 PAU.E 42016 42016 750701 24998-16001 PNAME 42017 42064 771121 24998-16001 .ENTR 42065 42154 750701 24998-16001 LURQ 42155 42535 92067-16035 REV.1805 771013 $ALRN 42536 42653 92067-16035 REV.1805 770715 REIO 42654 43000 92067-16035 REV.1926 790506 .DFER 43001 43052 750701 24998-16001 COR.A 43053 43073 92067-16035 REV.1805 770621 COPY (0099)32042 32076 92060-16042 REV.1704 770214 DD 32124 34150 BUFER 34154 34336 92060-16043 760721 CHDLU 34337 34500 CHUTP 34501 34714 LUTRK 34715 35402 MATCH 35403 35772 90260-16043 770214 MPFND 35773 36447 ASCDC 36455 36604 92060-16043 760622 DCASC 36605 36712 92060-16043 760622 DRT 36713 37002 92060-16043 760622 DSCAD 37003 37053 92060-16043 760622 MEMGT 37054 37067 92060-16043 760622 SUB 37070 37111 92060-16043 760622 READU 37112 37232 RMOVI 37233 37240 92060-16043 760622 MESG 37257 40411 92060-16043 770214 IAND 40412 40421 750701 24998-16001 PAUSE 40422 40522 771122 24998-16001 RMPAR 40523 40565 781106 24998-16001 PAU.E 40566 40566 750701 24998-16001 PNAME 40567 40634 771121 24998-16001 .ENTR 40635 40724 750701 24998-16001 REIO 40725 41051 92067-16035 REV.1926 790506 .DFER 41052 41123 750701 24998-16001 COR.A 41124 41144 92067-16035 REV.1805 770621 VERFY(0099)32042 32107 92060-16041 REV.1704 761201 VRFSB 32110 33360 DCASC 33361 33466 92060-16043 760622 MEMGT 33467 33502 92060-16043 760622 .TAPE 33503 33515 750701 24998-16001 IAND 33516 33525 750701 24998-16001 PAUSE 33526 33626 771122 24998-16001 RMPAR 33627 33671 781106 24998-16001 PAU.E 33672 33672 750701 24998-16001 PNAME 33673 33740 771121 24998-16001 .ENTR 33744 34033 750701 24998-16001 REIO 34035 34161 92067-16035 REV.1926 790506 .DFER 34162 34233 750701 24998-16001 COR.A 34234 34254 92067-16035 REV.1805 770621 LGTAT(0089)32042 34115 92067-16008 REV.1926 790504 IFBRK 34116 34151 92067-16035 REV.1913 790124 $CVT3 34152 34237 92067-16035 REV.1805 770621 KEYS (0075)32043 41110 CREAT 41114 41377 92002-16006 REV.1926 790501 OPEN 41400 41565 92002-16006 741205 READF 41604 42342 92002-16006 770801 CLOSE 42365 42503 92002-16006 771115 NAM.. 42504 42600 92002-16006 740801 $OPEN 42601 43007 92002-16006 740801 P.PAS 43010 43036 92002-16006 740801 RW$UB 43037 43310 92002-16006 750422 RWND$ 43311 43433 92002-16006 771121 R/W$ 43434 43567 92002-16006 740801 ..MAP 43570 43663 751101 24998-16001 CLRIO 43664 43672 750701 24998-16001 IAND 43673 43702 750701 24998-16001 IOR 43703 43712 750701 24998-16001 RMPAR 43713 43755 781106 24998-16001 .ENTR 43760 44047 750701 24998-16001 REIO 44051 44175 92067-16035 REV.1926 790506 .DFER 44176 44247 750701 24998-16001 KCVT 44250 44263 92001-16035 REV.1805 770621 PARSE 44264 44303 92067-16035 REV.1805 770714 $PARS 44304 44524 92067-16035 REV.1840 780811 $CVT3 44525 44612 92067-16035 REV.1805 770621 KYDMP(0010)32042 33366 OPEN 33367 33554 92002-16006 741205 READF 33572 34330 92002-16006 770801 CLOSE 34350 34466 92002-16006 771115 $OPEN 34467 34675 92002-16006 740801 P.PAS 34676 34724 92002-16006 740801 RW$UB 34725 35176 92002-16006 750422 RWND$ 35177 35321 92002-16006 771121 R/W$ 35322 35455 92002-16006 740801 CLRIO 35456 35464 750701 24998-16001 IAND 35465 35474 750701 24998-16001 RMPAR 35475 35537 781106 24998-16001 .ENTR 35540 35627 750701 24998-16001 REIO 35630 35754 92067-16035 REV.1926 790506 .DFER 35757 36030 750701 24998-16001 KCVT 36036 36051 92001-16035 REV.1805 770621 $CVT3 36052 36137 92067-16035 REV.1805 770621 QCLM (0028)32042 32644 91740-16016 REV 1913 790128 KCVT 32645 32660 92001-16035 REV.1805 770621 .ENTR 32661 32750 750701 24998-16001 TMVAL 32751 33036 92067-16035 REV.1913 790124 CNUMD 33037 33056 92001-16035 REV.1805 770621 .DFER 33057 33130 750701 24998-16001 CNUMO 33131 33150 92067-16035 REV.1805 770621 $CVT3 33151 33236 92067-16035 REV.1805 770621 RFAM (0030)32042 35544 91740-16004 REV 1740 771019 CREAT 35553 36036 92002-16006 REV.1926 790501 OPEN 36040 36225 92002-16006 741205 PURGE 36226 36324 92002-16006 740801 NAMF 36325 36500 92002-16006 771115 READF 36501 37237 92002-16006 770801 FSTAT 3C7240 37264 92002-16006 740801 RWNDF 37265 37346 92002-16006 740801 POSNT 37347 37612 92002-16006 760702 APOSN 37613 37763 92002-16006 781103 REV.1901 FCONT 37764 40056 92002-16006 REV.1826 780413 LOCF 40071 40257 92002-16006 750416 CLOSE 40260 40376 92002-16006 771115 NAM.. 40377 40473 92002-16006 740801 $OPEN 40474 40702 92002-16006 740801 P.PAS 40703 40731 92002-16006 740801 RW$UB 40732 41203 92002-16006 750422 RWND$ 41204 41326 92002-16006 771121 R/W$ 41327 41462 92002-16006 740801 RMPAR 41463 41525 781106 24998-16001 .ENTR 41526 41615 750701 24998-16001 REIO 41616 41742 92067-16035 REV.1926 790506 .DFER 41745 42016 750701 24998-16001 $CVT3 42024 42111 92067-16035 REV.1805 770621 D65GT 42112 42270 91740-16025 REV 1913 781027 D65SV 42271 42424 91740-16029 REV 1740 771018 EXECM(0030)32042 34150 91740-16005 REV 1840 780721 EXECW(0030)32042 33440 91740-16008 REV 1740 770728 D65GT 33441 33617 91740-16025 REV 1913 781027 .ENTR 33620 33707 750701 24998-16001 D65SV 33717 34052 91740-16029 REV 1740 771018 DLIST(0030)32042 33755 91740-16009 REV 1913 790111 $BMON 33756 33756 92002-12001 REV.1940 790729 FSTAT 33760 34004 92002-16006 740801 .ENTR 34005 34074 750701 24998-16001 ENSES 34075 34075 92067-16035 REV.1913 790119 D65GT 34076 34254 91740-16025 REV 1913 781027 D65SV 34255 34410 91740-16029 REV 1740 771018 PROGL(0030)32042 35156 91740-16012 REV 1913 790128 OPEN 35157 35344 92002-16006 741205 READF 35366 36124 92002-16006 770801 LOCF 36143 36331 92002-16006 750416 CLOSE 36332 36450 92002-16006 771115 $OPEN 36451 36657 92002-16006 740801 P.PAS 36660 36706 92002-16006 740801 RW$UB 36707 37160 92002-16006 7504BA22 RWND$ 37161 37303 92002-16006 771121 R/W$ 37304 37437 92002-16006 740801 RMPAR 37440 37502 781106 24998-16001 .ENTR 37503 37572 750701 24998-16001 REIO 37573 37717 92067-16035 REV.1926 790506 .DFER 37720 37771 750701 24998-16001 KCVT 37772 40005 92001-16035 REV.1805 770621 CNUMD 40010 40027 92001-16035 REV.1805 770621 $CVT3 40030 40115 92067-16035 REV.1805 770621 PTOPM(0030)32042 33001 91740-16007 REV 1913 781130 D65SV 33002 33135 91740-16029 REV 1740 771018 .ENTR 33136 33225 750701 24998-16001 EDITR(0050)32042 37512 91740-16022 REV 1926 790503 CREAT 37513 37776 92002-16006 REV.1926 790501 OPEN 37777 40164 92002-16006 741205 READF 40166 40724 92002-16006 770801 CLOSE 40725 41043 92002-16006 771115 NAM.. 41044 41140 92002-16006 740801 $OPEN 41141 41347 92002-16006 740801 P.PAS 41350 41376 92002-16006 740801 RW$UB 41377 41650 92002-16006 750422 RWND$ 41651 41773 92002-16006 771121 R/W$ 41774 42127 92002-16006 740801 NAMR 42131 42425 750701 24998-16001 RMPAR 42426 42470 781106 24998-16001 .ENTR 42471 42560 750701 24998-16001 .DFER 42561 42632 750701 24998-16001 LURQ 42633 43213 92067-16035 REV.1805 771013 $ALRN 43214 43331 92067-16035 REV.1805 770715 PRTN 43332 43444 92067-16035 REV.1805 771005 REIO 43445 43571 92067-16035 REV.1926 790506 DEXEC 43612 44504 91740-16038 REV 1740 770728 D65MS 44527 45134 91740-16040 REV 1913 790104 RNRQ 45135 45376 92067-16035 REV.1805 780222 D65GT 45377 45555 91740-16025 REV 1913 781027 D65AB 45556 45651 91740-16041 REV 1740 761220 CNUMO 45652 45671 92067-16035 REV.1805 770621 $CVT3 45672 45757 92067-16035 REV.1805 770621 REMAT(0080)32042 37275 91740-16024 REV 1913 790129 RMPAR 37276 37340 781106 24998-16001 .DFER 37341 37412 750701 24998-16001 REIO 37413 37537 92067-16035 REV.1926 790506 .ENTR 37540 37627 750701 24998-16001 IFBRK 37630 37663 92067-16035 REV.1913 790124 CNUMD 37664 37703 92001-16035 REV.1805 770621 $CVT3 37704 37771 92067-16035 REV.1805 770621 DMESG 37772 40145 91740-16032 REV 1840 780628 DMESS 40152 40332 91740-16033 REV 1740 771003 MESSS 40333 40472 92067-16035 REV.1840 780724 FCOPY 40473 41311 91740-16034 REV 1740 770907 DEXEC 41353 42245 91740-16038 REV 1740 770728 RFMST 42265 42747 91740-16039 REV 1740 770524 D65MS 42750 43355 91740-16040 REV 1913 790104 RNRQ 43356 43617 92067-16035 REV.1805 780222 $ALRN 43620 43735 92067-16035 REV.1805 770715 D65GT 43742 44120 91740-16025 REV 1913 781027 D65AB 44127 44222 91740-16041 REV 1740 761220 CNUMO 44223 44242 92067-16035 REV.1805 770621 OPERM(0030)32042 32167 91740-16006 REV 1740 770314 MESSS 32170 32327 92067-16035 REV.1840 780724 .ENTR 32330 32417 750701 24998-16001 D65GT 32420 32576 91740-16025 REV 1913 781027 D65SV 32577 32732 91740-16029 REV 1740 771018 NDTGN(0099)32042 37055 91740-16021 REV 1805 771123 CREAT 37056 37341 92002-16006 REV.1926 790501 OPEN 37342 37527 92002-16006 741205 PURGE 37530 37626 92002-16006 740801 READF 37644 40402 92002-16006 770801 CLOSE 40431 40547 92002-16006 771115 NAM.. 40550 40644 92002-16006 740801 $OPEN 40645 41053 92002-16006 740801 P.PAS 41054 41102 92002-16006 740801 RW$UB 41103 41354 92002-16006 750422 RWND$ 41355 41477 92002-16006 771121 R/W$ 41500 41633 92002-16006 740801 RMPAR 41634 41676 781106 24998-16001 .ENTR 41677 41766 750701 24998-16001 REIO 41767 421d13 92067-16035 REV.1926 790506 .DFER 42123 42174 750701 24998-16001 PARSE 42175 42214 92067-16035 REV.1805 770714 $PARS 42215 42435 92067-16035 REV.1840 780811 $CVT3 42436 42523 92067-16035 REV.1805 770621 LSTEN(0026)32042 40447 91740-16072 REV 1913 790126 $BMON 40450 40450 92002-12001 REV.1940 790729 OPEN 40451 40636 92002-16006 741205 READF 40637 41375 92002-16006 770801 CLOSE 41376 41514 92002-16006 771115 $OPEN 41515 41723 92002-16006 740801 P.PAS 41724 41752 92002-16006 740801 RW$UB 41755 42226 92002-16006 750422 RWND$ 42230 42352 92002-16006 771121 R/W$ 42353 42506 92002-16006 740801 RMPAR 42507 42551 781106 24998-16001 .ENTR 42552 42641 750701 24998-16001 RNRQ 42642 43103 92067-16035 REV.1805 780222 $ALRN 43104 43221 92067-16035 REV.1805 770715 PRTN 43222 43334 92067-16035 REV.1805 771005 REIO 43335 43461 92067-16035 REV.1926 790506 .DFER 43462 43533 750701 24998-16001 MESSS 43534 43673 92067-16035 REV.1840 780724 PARSE 43674 43713 92067-16035 REV.1805 770714 $PARS 43722 44142 92067-16035 REV.1840 780811 CNUMD 44145 44164 92001-16035 REV.1805 770621 $CVT3 44165 44252 92067-16035 REV.1805 770621 D65MS 44253 44660 91740-16040 REV 1913 790104 D65GT 44661 45037 91740-16025 REV 1913 781027 D65AB 45040 45133 91740-16041 REV 1740 761220 CNUMO 45134 45153 92067-16035 REV.1805 770621 AUTOR(0010)10042 10431 91730-16009 REV.1926 790206 XLUEX 10432 10542 92067-16035 REV.1913 790119 .ENTR 10543 10632 750701 24998-16001 FIXMP 10633 10725 91730-1X008 REV 1901 781026 RT PARTITION REQMTS: D.RTR 03 PAGES SMP 05 PAGES JOB 04 PAGES BG PARTITION REQMTS: $CNFX 04 PAGES FMGR 07 PAGES  WHZAT 03 PAGES LOADR 11 PAGES GASP 06 PAGES FTN4 12 PAGES ASMB 10 PAGES XREF 07 PAGES RT4GN 12 PAGES SWTCH 11 PAGES SAVE 05 PAGES RSTOR 06 PAGES COPY 05 PAGES VERFY 03 PAGES LGTAT 03 PAGES KEYS 07 PAGES KYDMP 04 PAGES QCLM 02 PAGES RFAM 06 PAGES EXECM 03 PAGES EXECW 03 PAGES DLIST 03 PAGES PROGL 05 PAGES PTOPM 02 PAGES EDITR 07 PAGES REMAT 07 PAGES OPERM 02 PAGES NDTGN 06 PAGES LSTEN 07 PAGES AUTOR 02 PAGES * MAXIMUM PROGRAM SIZE: W/O COM 29 PAGES W/ COM 27 PAGES W/ TA2 20 PAGES SYS AV MEM: 03592 WORDS 1ST PART PG 00040 CHANGE 1ST PART PG ? * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? SYS AV MEM: 03592 WORDS PAGES REMAINING: 00024 DEFINE PARTITIONS: PART 01? 4,RT * PART 01? PART 02? 5,RT * PART 02? PART 03? 15,BG * PART 03? PART 04? /E * PART 04? MODIFY PROGRAM PAGE REQUIREMENTS? - * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,15 * FILE MANAGER - LOADR,15 * RTE-IV LOADER - FTN4,15 * FORTRAN IV - ASMB,15 * ASSEMBLER - XREF,15 * CROSS REF. - RT4GN,15 * RTE-IV GENERATOR - SWTCH,15 * RTE-IV SWITCH - SAVE,15 * SAVE UTILITY - RSTOR,15 * RSTOR UTILITY - COPY,15 * COPY UTILITY - VERFY,15 * VERFY UTILITY - KEYS,15 * SOFT KEY UTILITY - KYDMP,15 * SOFT KEY DUMP UTILITY - EDITR,15 * RTE EDITOR - /E w  ASSIGN PROGRAM PARTITIONS? - * * ASSIGN PROGRAM PARTITIONS? * /E SYSTEM STORED ON DISC SYS SIZE: 61 TRKS, 003 SECS RT4GN FINISHED 0000 ERRORS ۧ %: 02170-18008 1940 S C0122 &LFPS4              H0101 vy ECHO? * PRIMARY SYSTEM #4 ANSWER FILE (7900) 790926 (1940) YES * ECHO ON EST. # TRACKS IN OUTPUT FILE? 75 * ESTIMATED # OF TRACKS OUTPUT FILE NAME? !PRMS4::13 * ABSOLUTE SYSTEM FILE SYSTEM DISC? 7900 * TARGET DISC CONTROLLER SELECT CODE? 14 * DISC CHANNEL # TRKS, FIRST TRK ON SUBCHNL: 0? 203,0 * SUBCHANNEL 0 1? 203,0 * SUBCHANNEL 1 2? /E SYSTEM SUBCHNL? 1 * SYSTEM SUBCHANNEL AUX DISC (YES OR NO OR # TRKS)? NO * NO AUX DISC TBG SELECT CODE? 10 * TBG PRIV. INT. SELECT CODE? 0 * NO PRIV. INT. MEM. RES. ACCESS TABLE AREA II? YE * MR ACCESS TA II RT MEMORY LOCK? YE * RT MEMORY LOCK BG MEMORY LOCK? YE * BG MEMORY LOCK SWAP DELAY? 50 * SWAP DELAY MEM SIZE? 64 * MEM SIZE BOOT FILE NAME? 0 * NO BOOT FILE PROG INPUT PHASE: - MAP MODULES - LINKS IN CURRENT - * - * RTE-IV SYSTEM MODULES - * - REL,%CR4S1::-2 - REL,%CR4S2::-2 - * - * DRIVERS MODULES - * - REL,%DVR00::-2 * RS232 TERMINALS - REL,%DVA05::-2 * 2645/2648 SYSTEM CONSOLE - REL,%DVR23::-2 * 7970 MAGNETIC TAPE UNIT - REL,%DVR31::-2 * 7900 DISC DRIVER - REL,%2DV37::-2 * 59310B HPIB INTERFACE - REL,%DVA12::-2 * 2607-2635 LINE PRINTER - REL,%DVB12::-2 * 2608 LINE PRINTER - REL,%DVR07::-10 * 12790A MULTI-POINT I/F - REL,%DVA65::-10  * DS/1000 - * - * SPECIAL SYSTEM SOFTWARE - * - REL,%4DP43::-2 * POWER FAIL - REL,%$CNFX::-2 * CONFIGURATOR EXTENSION - REL,%DBUGR::-2 * USER DEBUG - * - * USER PROGRAMS - * - REL,%BMPG1::-2 * RTE-IV FMGR - REL,%BMPG2::-2 - REL,%BMPG3::-2 - REL,%AUTO7::-10 * POWER FAIL PROGRAM - REL,%4WHZT::-2 * RTE-IV WHZAT - REL,%4LDR ::-2 * RTE-IV LOADER - REL,%4SPO1::-2 * DVS43,SPOUT,EXTND,SMP,JOB - REL,%4SPO2::-2 - REL,%4MTM::-2 * RTE PRMPT & R$PN$ MULTI-TERM. MON. - REL,%FTN4::-2 * RTE FORTRAN IV, MAIN - REL,%FFTN4::-2 * RTE FORTRAN IV, SEGMENT ID SUBROUTINE - REL,%0FTN4::-2 * RTE FORTRAN IV, SEGMENT 0 - REL,%1FTN4::-2 * RTE FORTRAN IV, SEGMENT 1 - REL,%2FTN4::-2 * RTE FORTRAN IV, SEGMENT 2 - REL,%3FTN4::-2 * RTE FORTRAN IV, SEGMENT 3 - REL,%4FTN4::-2 * RTE FORTRAN IV, SEGMENT 4 - REL,%5FTN4::-2 * RTE FORTRAN IV, SEGMENT 5 - REL,%4ASMB::-2 * RTE ASSEMBLER, MAIN - REL,%4ASB0::-2 * RTE ASSEMBLER, SEGMENT 0 - REL,%4ASB1::-2 * RTE ASSEMBLER, SEGMENT 1 - REL,%4ASB2::-2 * RTE ASSEMBLER, SEGMENT 2 - REL,%4ASB3::-2 * RTE ASSEMBLER, SEGMENT 3 - REL,%4ASB4::-2 * RTE ASSEMBLER, SEGMENT 4 - REL,%4XREF::-2 * RTE-IV CROSS REF. - REL,%RT4G1::-2 * RTE-IV GENERATOR - REL,%RT4G2::-2 - REL,%4SWTH::-2 * RTE-IV SWITCH - REL,%SAVE::-2 * SAVE UTILITY - REL,%RESTR::-2 * RESTORE UTILITY - REL,%COPY::-2 * COPY UTILITY - REL,%VERFY::-2 * VERFY UTILITY - ]REL,%DBKLB::-2 * DISC BACK-UP UTILITY - REL,%LGTAT::-2 * DISC TRACK MAP UTILITY - REL,%IB4A::-2 * HPIB LIBRARY - REL,%SRQ.P::-2 * HPIB SERVICE REQUEST - REL,%KEYS::-2 * SOFT KEYS - REL,%KYDMP::-2 * KEY DUMP - * - * LIBRARIES - * - REL,%BMLIB::-2 * RTE BATCH LIBRARY - REL,%CLIB ::-2 * RTE COMPILER LIBRARY - REL,%FF4.N::-2 * RTE FTN-IV LIBRARY - REL,%RLIB1::-2 * RTE REL. LIBRARY 1 - REL,%RLIB2::-2 * RTE REL. LIBRARY 2 - REL,%RLIB3::-2 * RTE REL. LIBRARY 3 - REL,%4SYLB::-2 * RTE-IV SYSTEM LIBRARY - REL,%BASLB::-10 * BASIC SUBROUTINE LIBRARY - REL,%BAMLB::-10 * BASIC MEMORY RESIDENT LIBRARY - REL,%TSKSC::-10 * BASIC TASK SCHEDULER - REL,%BAIMG::-10 * BASIC IMAGE LIBRARY - REL,%MPLIB::-10 * MULTI-POINT LIBRARY - REL,%DECAR::-10 * DECIMAL STRING ARITHMETIC LIBRARY - REL,%DBLIB::-10 * IMAGE LIBRARY - * - * DS/1000 SOFTWARE - * - REL,%QUEUE::-10 - REL,%GRPM::-10 - REL,%RTRY::-10 - REL,%QCLM::-10 - REL,%RFAM2::-10 - REL,%EXECM::-10 - REL,%EXECW::-10 - REL,%DLIS1::-10 - REL,%PROGL::-10 - REL,%PTOPM::-10 - REL,%UPLIN::-10 - REL,%EDITD::-10 * DS/1000 INTERACTIVE EDITOR - REL,%REMAT::-10 - REL,%OPERM::-10 - REL,%NDTGN::-10 - REL,%LSTEN::-10 - REL,%DSLB1::-10 - REL,%DSLB2::-10 - REL,%DSLB3::-10 - DISPLAY UNDEFS UNDEFS &6940 - /E UNDEFS &6940 PARAMETERS - WHZAT,3,41 - AUTOR,4,10 - PRMPT,1,10 - R$PN$,1,10 - TTYEV,17 - TRAP,30 - .DBRN,30 - LOADR,3,89 K- FTN4,3,89 - ASMB,3,89 - XREF,3,89 - LGTAT,3,89 - GASP,19 - /E CHANGE ENTS? - .FAD,RP,105000 - .FSB,RP,105020 - .FMP,RP,105040 - .FDV,RP,105060 - IFIX,RP,105100 - FLOAT,RP,105120 - .MPY,RP,100200 - .DIV,RP,100400 - .DLD,RP,104200 - .DST,RP,104400 - .MVW,RP,105777 - .EMAP,RP,105257 - .EMIO,RP,105240 - MMAP,RP,105241 - Z$DBL,RP,3 * 3 WORD FLOATING POINT - /E TABLE AREA I EQUIPMENT TABLE ENTRY EQT 01? * * EQUIPMENT TABLE ENTRIES * 14,DVR31,D * EQT1: 7900 SYSTEM DISC EQT 02? 11,DVA65,X=7,T=240 * EQT2: DS/1000 COMM. PORT #1 EQT 03? 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT #2 EQT 04? 16,DVA05,B,X=13 * EQT4: 2645/48 SYSTEM CONSOLE EQT 05? 17,DVR37,X=57,T=6000 * EQT5: 59310B HPIB INTERFACE EQT 06? 20,DVA12,B,T=6000 * EQT6: 2607-2635 LINE PRINTER EQT 07? 21,DVR23,D,B,T=6000 * EQT7: 7970B MAGNETIC TAPE UNIT EQT 08? 23,DVR07,X=5 * EQT8: 12790A MULTI-POINT I/F EQT 09? 67,DVR07,X=5 * EQT9: MULTI-POINT TERMINAL #1 EQT 10? 67,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #2 EQT 11? 24,DVB12,B,X=5,T=6000 * EQT11: 2608 LINE PRINTER EQT 12? 25,DVR00,B,T=6000 * EQT12: RS232 TERMINAL EQT 13? 70,DVS43,X=18,M * EQT13: SPOOL EQT 14? 71,DVS43,X=18,M * EQT14: SPOOL EQT 15? 72,DVS43,X=18,M * EQT15: SPOOL EQT 16? 73,DVS43,X=18,M * EQT16: SPOOL EQT 17? 74,DVS43,X=18,M * EQT17: SPOOL EQT 18? 75,DVS43,X=18,M * EQT18: SPOOL  EQT 19? 4,DVP43,M * EQT19: POWER FAIL EQT 20? /E DEVICE REFERENCE TABLE 1 = EQT #? * * DEVICE REFERENCE TABLE ENTRIES * 4,0 * LU1 - 2645/2648 SYSTEM CONSOLE 2 = EQT #? 1,1 * LU2 - 7900 SYSTEM DISC, REMOVABLE 3 = EQT #? 0 * LU3 - RESERVED 4 = EQT #? 4,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 5 = EQT #? 4,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 = EQT #? 6 * LU6 - DVA12 LINE PRINTER 7 = EQT #? 11 * LU7 - 2608 LINE PRINTER 8 = EQT #? 7 * LU8 - 7970B MAGNETIC TAPE UNIT 9 = EQT #? 2,1 * LU9 - DS/1000 HARDWIRE COMM. PORT #1 10 = EQT #? 3,1 * LU10 - DS/1000 HARDWIRE COMM. PORT #2 11 = EQT #? 1,0 * LU11 - 7900 FIXED DISC 12 = EQT #? 0 * LU12 - RESERVED 13 = EQT #? 0 * LU13 - RESERVED 14 = EQT #? 0 * LU14 - RESERVED 15 = EQT #? 0 * LU15 - RESERVED 16 = EQT #? 0 * LU16 - RESERVED 17 = EQT #? 0 * LU17 - RESERVED 18 = EQT #? 0 * LU18 - RESERVED 19 = EQT #? 0 * LU19 - RESERVED 20 = EQT #? 0 * LU20 - RESERVED 21 = EQT #? 0 * LU21 - RESERVED 22 = EQT #? 8 * LU22 - MULTI-POINT INTERFACE 23 = EQT #? 9 * LU23 - MULTI-POINT TERMINAL #1 24 = EQT #? 10 * LU24 - MULTI-POINT TERMINAL #2 25 = EQT #? 0 * LU25 - RESERVED 26 = EQT #? 0 * LU26 - RESERVED 27 = EQT #? 0 * L)U27 - RESERVED 28 = EQT #? 0 * LU28 - RESERVED 29 = EQT #? 0 * LU29 - RESERVED 30 = EQT #? 5,0 * LU30 - 59310B HPIB INTERFACE 31 = EQT #? 5,1 * LU31 - HPIB ADDRESS 1 32 = EQT #? 5,2 * LU32 - HPIB ADDRESS 2 33 = EQT #? 5,3 * LU33 - HPIB ADDRESS 3 34 = EQT #? 5,4 * LU34 - HPIB ADDRESS 4 35 = EQT #? 5,5 * LU35 - HPIB ADDRESS 5 36 = EQT #? 5,6 * LU36 - HPIB ADDRESS 6 37 = EQT #? 5,7 * LU37 - HPIB ADDRESS 7 38 = EQT #? 5,8 * LU38 - HPIB ADDRESS 8 39 = EQT #? 5,9 * LU39 - HPIB ADDRESS 9 40 = EQT #? 13 * LU40 - SPOOL 41 = EQT #? 14 * LU41 - SPOOL 42 = EQT #? 15 * LU42 - SPOOL 43 = EQT #? 16 * LU43 - SPOOL 44 = EQT #? 17 * LU44 - SPOOL 45 = EQT #? 18 * LU45 - SPOOL 46 = EQT #? 19 * LU46 - POWER FAIL 47 = EQT #? 12 * LU47 - RS232 TERMINAL 48 = EQT #? 0 * LU48 - SPARE 49 = EQT #? 0 * LU49 - SPARE 50 = EQT #? 0 * LU50 - SPARE 51 = EQT #? 0 * LU51 - SPARE 52 = EQT #? 0 * LU52 - SPARE 53 = EQT #? 0 * LU53 - SPARE 54 = EQT #? 0 * LU54 - SPARE 55 = EQT #? 0 * LU55 - SPARE 56 = EQT #? 0 * LU56 - SPARE 57 = EQT #? 0 * LU57 - SPARE 58 = EQT #? 0 * LU58 - SPARE 59 = EQT #? 0 * LU59 - SPARE  60 = EQT #? 0 * LU60 - SPARE 61 = EQT #? 0 * LU61 - SPARE 62 = EQT #? 0 * LU62 - SPARE 63 = EQT #? 0 * LU63 - SPARE 64 = EQT #? /E INTERRUPT TABLE - * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL - 11,PRG,QUEUE * DS/1000 COMM. PORT #1 - 12,PRG,QUEUE * DS/1000 COMM. PORT #2 - 14,EQT,1 * 7900 SYSTEM DISC - 15,EQT,1 * 7900 SYSTEM DISC - 16,PRG,PRMPT * 2645/48 SYSTEM CONSOLE - 17,EQT,5 * 59310B HPIB INTERFACE - 20,EQT,6 * 2607-2635 LINE PRINTER - 21,EQT,7 * 7970B MAGNETIC TAPE UNIT - 22,EQT,7 * 7970B MAGNETIC TAPE UNIT - 23,PRG,PRMPT * 12790A MULTI-POINT INTERFACE - 24,EQT,11 * 2608 LINE PRINTER - 25,PRG,PRMPT * RS232 TERMINAL - 67,ABS,0 * MULTI-POINT INTERFACE - 70,EQT,13 * SPOOL - 71,EQT,14 * SPOOL - 72,EQT,15 * SPOOL - 73,EQT,16 * SPOOL - 74,EQT,17 * SPOOL - 75,EQT,18 * SPOOL - /E TABLE AREA I MODULES $$TB1(0099)03337 03461 92067-16014 REV.1926 790506 DRIVR PART 00002 CHANGE DRIVR PART? * 2 * CHANGE DP SIZE DP 01: DVR31(0099)04000 05177 29013-60001 REV.1710 770216 DVR00(0099)05226 06332 29029-60001 REV 1740 770808 DVR23(0099)06354 07267 92202-16001 REV.1913 - 790202 SUBSYSTEM GLOBAL AREA SP.CL )10000 10002 92067-16028 REV.1805 780317 TRAP )10003 11041 92101-16010 770208 .DBRN )11042 11072 92063-12001 REV.1826 770601 PGMAD )11073 11217 91740-16027 REV 1740 770329 .ENTR 11220 11307 750701 24998-16001 #REQU )11314 12023 91740-16028 REV 1913 790131 .ENTR 12030 12117 750701 24998-16001 DRTEQ )12120 12210 91740-16030 REV 1740 770330 .ENTR 12211 12300 750701 24998-16001 RES )12301 13152 91740-16031 REV 1913 781130 .ENTR 13153 13242 750701 24998-16001 D$EQT )13243 13243 91740-16068 REV 1740 770623 RT COMMON 00000 CHANGE RT COMMON ? 0 * RT COMMON CHANGE RT COM ADD 13244 BG COMMON 00348 CHANGE BG COMMON ? 0 * BG COMMON CHANGE BG COM ADD 13244 BG COMMON 00348 SYSTEM DRIVER AREA DVP43(0099)14000 14637 92067-16004 REV.1926 790506 DVS43(0099)14660 17644 92067-16028 REV.1926 790505 TABLE AREA II # OF I/O CLASSES? 32 * # OF I/O CLASSES # OF LU MAPPINGS? 16 * # OF LU MAPPINGS # OF RESOURCE NUMBERS? 32 * # OF RESOURCE NUMBERS BUFFER LIMITS (LOW, HIGH)? 100,400 * BUFFER LIMITS # OF BLANK ID SEGMENTS? 40 * # OF BLANK ID SEGMENTS # OF BLANK SHORT ID SEGMENTS? 55 * # OF BLANK SHORT ID SEGMENTS # OF BLANK ID EXTENSIONS? 20 * # OF BLANK ID EXTENSIONS MAXIMUM # OF PARTITIONS? 64 * MAX NUMBER OF PARTITIONS TABLE AREA II MODULES $$TB2(0099)30561 30627 92067-16014 REV.1926 790510 SYSTEM $CSY4(0099)30630 30627 92067-16014 REV.1926 790506 DISP4(0099)30674 36243 92067-16014 REV.1926 790221 RTIME(0099)36265 37071 92067-16014 REV.1805 780104 $ASC4(0099)37072 37164 92067-16014 REV.1805 780125 RTIO4(0099)37246 44550 92067-16014 REV.1926 790506 EXEC4(0099)44571 47174 92067-16014 REV.1926 790506 $TRN4(0099)47231 47403 92c@067-16014 REV.1805 780104 SCHD4(0099)47425 54600 92067-16014 REV.1926 790506 $ALC (0099)54611 55016 92067-16014 REV.1805 741120 OCMD4(0099)55036 56177 92067-16014 REV.1805 771102 PERR4(0099)56221 57163 92067-16014 REV.1840 780731 DBKLB(0099)57164 57163 92060-16043 REV.1901 781108 $BALB(0099)57164 57163 92002-16006 REV.1926 790502 FF4.A(0099)57164 57163 24998-16002 REV.1926 790516 RLIB1(0099)57164 57163 24998-16001 REV.1926 790501 RLIB2(0099)57164 57163 24998-16009 REV.1926 790501 RLIB3(0099)57164 57163 24998-16011 REV.1926 790501 $YSLB(0099)57164 57163 92067-16035 REV.1926 790506 MPLIB(0099)57164 57163 91730-12001 REV 1926 MULTIPOINT LIBRARY 790509 DECAR(0099)57164 57163 24306-60001 REV.1940 790618 DSLB1(0099)57164 57163 91740-12001 REV 1913 790131 DSLB2(0099)57164 57163 91740-12002 REV 1913 790214 DSLB3(0099)57164 57163 91740-12003 REV 1740 771027 $CNFG(0099)57177 64171 92067-16014 REV.1926 790610 PARTITION DRIVERS DP 02: DVA05(0099)04102 07164 92001-16035 REV. CODE 1913 9-28-78 DP 03: DVR37(0099)04122 06633 59310-16003 REV.1940 790724 EQTX=18+7*D DVA12(0099)06642 07542 92001-16020 780511 REV 1826 DP 04: DVB12(0099)04000 05561 92062-16004 REV 1926 790504 1030PM .LBT 05562 05612 770518 24998-16001 DVA65(0099)05631 07022 91740-16071 REV 1913 790127 DP 05: DVR07(0099)04107 06543 91730-16001 REV 1926 790509 &DV07X MEMORY RESIDENT LIBRARY LURQ 32000 32360 92067-16035 REV.1805 771013 $ALRN 32361 32476 92067-16035 REV.1805 770715 IDGET 32477 32561 92067-16037 REV.1805 771227 RNRQ 32562 33023 92067-16035 REV.1805 780222 .ENTR 33024 33113 750701 24998-16001 MEMORY RESIDENTS EXTND(0010)34002 34154 92067-16028 REV.1805 771115 RMPAR 34155 34217 781106 24998-16001 SPOUT(0011)34222 35175 92067-16028 REV.1805 780309 .DRCT 35176 35204 92067-16035 REV.1805 741120 PRMPT(0010)35207 35641 92067-16003 REV.1926 790506 $BMON 35642 35642 92002-12001 REV.1940 790729 TRMLU 35643 35736 92067-16035 REV.1805 771117 R$PN$(0010)35744 36477 92067-16003 REV.1926 790506 TRMLU 36501 36574 92067-16035 REV.1805 771117 SRQ.P(0030)36577 36645 59310-16005 REV 1805 780110 RMPAR 36646 36710 781106 24998-16001 TTYEV(0002)36713 36722 29102-60013 QUEUE(0002)36725 37171 91740-16013 REV 1913 781130 GRPM (0004)37174 37765 91740-16014 REV 1913 790128 RTRY (0020)37770 40213 91740-16015 REV 1913 790128 UPLIN(0003)40217 41202 91740-16002 REV 1840 780726 MESSS 41203 41342 92067-16035 REV.1840 780724 RT DISC RESIDENTS D.RTR(0001)32042 34133 92002-16007 REV.1926 790502 P.PAS 34134 34162 92002-16006 740801 PRTN 34163 34275 92067-16035 REV.1805 771005 SMP (0030)32042 35437 92067-16028 REV.1940 790802 READF 35463 36221 92002-16006 770801 POST 36246 36274 92002-16006 740801 P.PAS 36275 36323 92002-16006 740801 RW$UB 36324 36575 92002-16006 750422 RWND$ 36576 36720 92002-16006 771121 R/W$ 36721 37054 92002-16006 740801 RMPAR 37055 37117 781106 24998-16001 .ENTR 37120 37207 750701 24998-16001 .DFER 37210 37261 750701 24998-16001 RNRQ 37262 37523 92067-16035 REV.1805 780222 $ALRN 37524 37641 92067-16035 REV.1805 770715 PRTN 37642 37754 92067-16035 REV.1805 771005 .DRCT 37755 37763 92067-16035 REV.1805 741120 REIO 37764 40110 92067-16035 REV.1926 790506 JOB (0030)32042 34022 92067-16028 REV. 1940 790802 OPEN 34023 34210 92002-16006 741205 READF 34211 34747 92002-16006 770801 CLOSE 34750 35066 92002-16006 771115 POST 35067 35115 92002-16006 740801 $OPEN 35116 35324 92002-16006 740801 P.PAS 35325 35353 92002-16006 740801 RW$UB 35354 35625 92002-16006 750422 RWND$ 35626 35750 92002-16006 771121 R/W$ 35753 36106 92002-16006 740801 SPOPN 36110 36167 92002-16006 REV.1826 780413 RMPAR 36170 36232 781106 24998-16001 .ENTR 36233 36322 750701 24998-16001 .DFER 36323 36374 750701 24998-16001 RNRQ 36375 36636 92067-16035 REV.1805 780222 LURQ 36637 37217 92067-16035 REV.1805 771013 $ALRN 37220 37335 92067-16035 REV.1805 770715 .DRCT 37336 37344 92067-16035 REV.1805 741120 REIO 37345 37471 92067-16035 REV.1926 790506 $PARS 37472 37712 92067-16035 REV.1840 780811 BG DISC RESIDENTS $CNFX(0099)32042 35614 92067-16006 REV.1926 790412 $PARS 35624 36044 92067-16035 REV.1840 780811 $CVT3 36051 36136 92067-16035 REV.1805 770621 FMGR (0090)32042 33017 92002-16008 REV.1901 760627 FM.CM 33020 35061 92002-16008 REV.1926 790502 OPEN 35202 35367 92002-16006 741205 CLOSE 35370 35506 92002-16006 771115 $OPEN 35507 35715 92002-16006 740801 RWND$ 35724 36046 92002-16006 771121 R/W$ 36053 36206 92002-16006 740801 RMPAR 36207 36251 781106 24998-16001 .ENTR 36252 36341 750701 24998-16001 .DFER 36342 36413 750701 24998-16001 LURQ 36414 36774 92067-16035 REV.1805 771013 $ALRN 36775 37112 92067-16035 REV.1805 770715 .DRCT 37113 37121 92067-16035 REV.1805 741120 IFBRK 37122 37155 92067-16035 REV.1913 790124 IFTTY 37156 37231 92067-16035 REV.1805 771208 FMGR0(0099)37232 37237 92002-16008 740801 PK.. 37246 40671 CR.. 4Al1017 42104 92002-16008 REV.1826 780414 READF 42131 42667 92002-16006 770801 RWNDF 42670 42751 92002-16006 740801 NAM.. 42752 43046 92002-16006 740801 P.PAS 43047 43075 92002-16006 740801 RW$UB 43076 43347 92002-16006 750422 LOCK. 43350 43417 92002-16006 771118 FM.UT 43420 44565 92002-16006 781103 REV.1901 CREA. 44566 44637 CREAT 44640 45123 92002-16006 REV.1926 790501 REIO 45124 45250 92067-16035 REV.1926 790506 COR.A 45251 45271 92067-16035 REV.1805 770621 FMGR1(0099)37232 37360 92002-16008 760929 .PARS 37363 40646 92002-16008 765025 C.TAB 40754 41117 92002-16008 760720 CA.. 41120 41341 92002-16008 760513 REA.C 41342 41414 92002-16008 770823 EE.. 41415 41455 92002-16008 760512 TR.. 41456 41707 92002-16008 REV.1826 780419 MR.. 41710 42152 92002-16008 760621 SE.. 42174 42360 IF.. 42361 42576 92002-16008 760929 AB.. 42577 43025 92002-16008 REV.1826 780420 DP.. 43026 43073 92002-16008 760511 READF 43074 43632 92002-16006 770801 POSNT 43641 44104 92002-16006 760702 P.PAS 44125 44153 92002-16006 740801 RW$UB 44154 44425 92002-16006 750422 WRLG. 44426 44575 92002-16006 760622 CK.SM 44576 44721 92002-16006 REV. 1805 771205 REIO 44722 45046 92067-16035 REV.1926 790506 MESSS 45047 45206 92067-16035 REV.1840 780724 CNUMD 45207 45226 92001-16035 REV.1805 770621 $CVT3 45227 45314 92067-16035 REV.1805 770621 FMGR2(0099)37232 37242 92002-16008 760622 IN.IT 37245 40342 92002-16008 780106 IN.. 40415 42323 92002-16008 REV.1901 781103 MC.. 42367 42726 92002-16008 790727 REV.1940 RC.. 42727 43114 PU.. 43115 43337 PURGE 43340 43436 92002-16006 740801 NAM.. 43437 43533 92002-16006 740801 _ J.PUT 43534 43560 92002-16006 740801 IPUT 43561 43601 92002-16006 740801 FID. 43602 43721 MSC. 43722 43756 LOCK. 43757 44026 92002-16006 771118 FM.UT 44031 45176 92002-16006 781103 REV.1901 .OPSY 45177 45201 771116 24998-16001 FMGR3(0099)37232 37237 92002-16008 760720 DL.. 37244 40541 92002-16008 771020 F.SET 40642 41032 92002-16006 760719 CS.. 41033 41261 92002-16008 760318 READF 41266 42024 92002-16006 770801 LOCF 42027 42215 92002-16006 750416 P.PAS 42216 42244 92002-16006 740801 RW$UB 42245 42516 92002-16006 750422 MSC. 42517 42553 FM.UT 42554 43721 92002-16006 781103 REV.1901 CK.ID 43722 43753 92002-16006 REV.1826 780403 LULU. 43756 44046 92002-16006 760227 REIO 44051 44175 92067-16035 REV.1926 790506 FMGR4(0099)37232 37243 92002-16008 760622 ST.DU 37245 40516 92002-16008 760622 CO.. 40570 41272 F.UTM 41273 41534 92002-16008 760514 CREAT 41541 42024 92002-16006 REV.1926 790501 READF 42025 42563 92002-16006 770801 RWNDF 42564 42645 92002-16006 740801 LOCF 42646 43034 92002-16006 750416 NAM.. 43035 43131 92002-16006 740801 P.PAS 43132 43160 92002-16006 740801 RW$UB 43161 43432 92002-16006 750422 FM.UT 43433 44600 92002-16006 781103 REV.1901 CREA. 44601 44652 CK.SM 44653 44776 92002-16006 REV. 1805 771205 REIO 44777 45123 92067-16035 REV.1926 790506 FMGR5(0099)37232 37244 92002-16008 760622 RU.. 37247 40110 92002-16008 781130 REV.1901 RP.. 40122 40231 92002-16008 761004 SESSN 40232 40307 92002-16008 REV.1826 780403 .RENM 40310 40434 92002-16008 761004 .EXCP 40435 40501 92002-16008 761002 IDDUP 40502 41166 92002-16008 REV.1826 780503 IDRPL 41167 41773 92002- p16008 REV.1940 790726 IDRPD 41774 42314 92002-16008 REV.1826 780525 OPMES 42317 42507 92002-16008 760513 TL.. 42510 42527 READF 42530 43266 92002-16006 770801 NAM.. 43267 43363 92002-16006 740801 P.PAS 43364 43412 92002-16006 740801 RW$UB 43413 43664 92002-16006 750422 ID.A 43665 43763 92002-16008 REV.1826 780403 CNT. 43764 44220 92002-16006 760520 FCONT 44235 44327 92002-16006 REV.1826 780413 BUMP. 44330 44366 92002-16006 741025 SET.T 44367 44415 92002-16006 740801 TL. 44416 44451 92002-16006 760322 ST.TM 44452 44506 92002-16006 741223 REIO 44507 44633 92067-16035 REV.1926 790506 MESSS 44634 44773 92067-16035 REV.1840 780724 FMGR6(0099)37232 37242 92002-16008 740801 CN.. 37243 37303 JO.. 37310 40340 92002-16008 REV.1926 790501 EO.. 40410 41213 92002-16008 REV.1826 780420 OF.. 41214 41307 92002-16008 740820 LG.. 41310 41335 92002-16008 760517 NAMF 41336 41511 92002-16006 771115 READF 41534 42272 92002-16006 770801 POST 42314 42342 92002-16006 740801 NAM.. 42343 42437 92002-16006 740801 P.PAS 42440 42466 92002-16006 740801 RW$UB 42467 42740 92002-16006 750422 SPOPN 42741 43020 92002-16006 REV.1826 780413 SET.T 43021 43047 92002-16006 740801 ST.TM 43050 43104 92002-16006 741223 B.FLG 43105 43153 92002-16006 741118 LULU. 43154 43244 92002-16006 760227 RANGE 43245 43270 92002-16006 740801 ONOFF 43271 43634 92002-16006 750128 EX.TM 43643 44060 92002-16006 771115 IPUT 44062 44102 92002-16006 740801 LU.CL 44103 44151 92002-16006 760702 AVAIL 44152 44244 92002-16006 741231 RNRQ 44245 44506 92067-16035 REV.1805 780222 REIO 44507 44633 92067-16035 REV.1926 790506 KCVT 44634 44647 92001-16035 REV.1805 770621 MESSS 44650 45007 92067-16035 REV.1840 780724 $CVT3 45010 45075 92067-16035 REV.1805 770621 FMGR7(0099)37232 37240 92002-16008 760702 ??.. 37243 41672 92002-16008 REV.1926 790502 SY.. 41673 41731 92002-16008 760520 NX.JB 41732 42663 92002-16008 REV.1926 790501 READF 42720 43456 92002-16006 770801 POST 43457 43505 92002-16006 740801 P.PAS 43506 43534 92002-16006 740801 RW$UB 43536 44007 92002-16006 750422 SPOPN 44013 44072 92002-16006 REV.1826 780413 B.FLG 44073 44141 92002-16006 741118 LULU. 44142 44232 92002-16006 760227 LU.CL 44233 44301 92002-16006 760702 RNRQ 44302 44543 92067-16035 REV.1805 780222 REIO 44544 44670 92067-16035 REV.1926 790506 MESSS 44671 45030 92067-16035 REV.1840 780724 LOGLU 45031 45101 92067-16035 REV.1826 780502 FMGR8(0099)37232 37240 92002-16008 740801 SA.. 37245 40217 92002-16008 760621 SP.. 40261 41237 92002-16008 REV.1826 780405 MS.. 41240 41533 READF 41555 42313 92002-16006 770801 RWNDF 42333 42414 92002-16006 740801 LOCF 42415 42603 92002-16006 750416 P.PAS 42604 42632 92002-16006 740801 RW$UB 42633 43104 92002-16006 750422 IPUT 43105 43125 92002-16006 740801 CREA. 43126 43177 CREAT 43200 43463 92002-16006 REV.1926 790501 NAM.. 43464 43560 92002-16006 740801 CK.SM 43561 43704 92002-16006 REV. 1805 771205 ID.A 43706 44004 92002-16008 REV.1826 780403 WRIS$ 44005 44043 92002-16006 740801 READ. 44044 44070 92002-16006 740801 %WRIS 44071 44466 750701 24998-16001 SREAD 44467 45131 771116 24998-16001 PRTN 45132 45244 92067-16035 REV.1805 771005 REIO 45245 45371 92067-16035 REV.1926 790506 FMGR9(0099)37232 37240 92002-16008 760720 LI..  37241 40743 92002-16008 760720 CL.. 41057 41340 LU.. 41343 42527 92002-16008 790501 READF 42615 43353 92002-16006 770801 FSTAT 43354 43400 92002-16006 740801 LOCF 43401 43567 92002-16006 750416 POST 43570 43616 92002-16006 740801 P.PAS 43617 43645 92002-16006 740801 RW$UB 43661 44132 92002-16006 750422 SPOPN 44135 44214 92002-16006 REV.1826 780413 LULU. 44215 44305 92002-16006 760227 RANGE 44306 44331 92002-16006 740801 AVAIL 44332 44424 92002-16006 741231 RNRQ 44425 44666 92067-16035 REV.1805 780222 REIO 44667 45013 92067-16035 REV.1926 790506 KCVT 45014 45027 92001-16035 REV.1805 770621 $CVT3 45030 45115 92067-16035 REV.1805 770621 WHZAT(0041)32042 34165 92067-16007 REV.1926 790506 TMVAL 34166 34253 92067-16035 REV.1913 790124 .ENTR 34254 34343 750701 24998-16001 LOADR(0089)32042 47051 92067-16002 REV.1926 790502 CREAT 47052 47335 92002-16006 REV.1926 790501 OPEN 47336 47523 92002-16006 741205 READF 47545 50303 92002-16006 770801 POSNT 50324 50567 92002-16006 760702 APOSN 50570 50740 92002-16006 781103 REV.1901 LOCF 50741 51127 92002-16006 750416 CLOSE 51130 51246 92002-16006 771115 POST 51247 51275 92002-16006 740801 NAM.. 51276 51372 92002-16006 740801 $OPEN 51373 51601 92002-16006 740801 P.PAS 51602 51630 92002-16006 740801 RW$UB 51642 52113 92002-16006 750422 RWND$ 52126 52250 92002-16006 771121 R/W$ 52251 52404 92002-16006 740801 NAMR 52405 52701 750701 24998-16001 RMPAR 52702 52744 781106 24998-16001 .ENTR 52745 53034 750701 24998-16001 LURQ 53035 53415 92067-16035 REV.1805 771013 $ALRN 53416 53533 92067-16035 REV.1805 770715 PRTN 53534 53646 92067-16035 REV.1805 771005 H REIO 53647 53773 92067-16035 REV.1926 790506 .DFER 53774 54045 750701 24998-16001 IFBRK 54051 54104 92067-16035 REV.1913 790124 $CVT3 54105 54172 92067-16035 REV.1805 770621 LOGLU 54173 54243 92067-16035 REV.1826 780502 FTIME 54244 54535 92067-16035 REV.1840 780731 GASP (0080)32042 33455 92067-16028 REV.1805 780323 G1CEX 33456 33567 92002-16001 760615 ST.LU 33570 33745 92067-16028 780317 G1ROT 33751 34124 92002-16001 760615 G0QIP 34130 34415 92002-16001 760621 OPEN 34416 34603 92002-16006 741205 READF 34604 35342 92002-16006 770801 CLOSE 35343 35461 92002-16006 771115 POST 35462 35510 92002-16006 740801 $OPEN 35511 35717 92002-16006 740801 P.PAS 35720 35746 92002-16006 740801 RW$UB 35752 36223 92002-16006 750422 RWND$ 36226 36350 92002-16006 771121 R/W$ 36351 36504 92002-16006 740801 RMPAR 36505 36547 781106 24998-16001 .ENTR 36550 36637 750701 24998-16001 RNRQ 36640 37101 92067-16035 REV.1805 780222 $ALRN 37102 37217 92067-16035 REV.1805 770715 .DRCT 37220 37226 92067-16035 REV.1805 741120 REIO 37227 37353 92067-16035 REV.1926 790506 .DFER 37354 37425 750701 24998-16001 KCVT 37426 37441 92001-16035 REV.1805 770621 PARSE 37442 37461 92067-16035 REV.1805 770714 $PARS 37462 37702 92067-16035 REV.1840 780811 $CVT3 37703 37770 92067-16035 REV.1805 770621 GASP1(0099)37771 40003 92067-16028 REV.1805 760615 G1CDJ 40004 40370 G1CCJ 40371 41005 92002-16001 760615 G1CKS 41006 41622 92002-16001 760627 G1CDS 41640 42665 92002-16001 760621 G1STM 42673 43065 92002-16001 740807 CNUMD 43066 43105 92001-16035 REV.1805 770621 GASP2(0099)37771 40001 92067-16028 REV.1805 760615 G1CSD 40002 40420 92002-16001 7606^22 G1C?? 40421 41231 92002-16001 741027 G1CIN 41236 42600 92002-16001 760630 G1CDA 42660 43234 92002-16001 760627 CREAT 43235 43520 92002-16006 REV.1926 790501 PURGE 43521 43617 92002-16006 740801 NAM.. 43620 43714 92002-16006 740801 CNUMD 43715 43734 92001-16035 REV.1805 770621 FTN4 (0089)32042 33662 92060-16092 790112 REV. 1926 NEX.F 33672 34356 92060-16092 790106 OA.F 34357 35124 92060-16092 781212 FA.F 35156 36746 92060-16092 790116 EX.F 37033 41265 92060-16092 790430 IC.F 41354 43362 92060-16092 790125 IDN.F 43441 45145 92060-16092 781212 SEG.F 45164 45200 92060-16093 770531 REV. 1913 C.BIN 45201 45236 92060-16102 770721 REV. 1901 $CLIB C.LST 45237 45274 92060-16102 770721 REV. 1901 $CLIB C.SAU 45275 45332 92060-16102 770721 REV. 1901 $CLIB C.SC0 45333 45370 92060-16102 770802 REV. 1901 $CLIB C.SC1 45371 45426 92060-16102 770802 REV. 1901 $CLIB C.TRN 45427 45647 92060-16102 781016 REV. 1901 $CLIB C.BBI 45650 46050 92060-16102 770515 REV. 1901 $CLIB C.BLI 46051 46251 92060-16102 770515 REV. 1901 $CLIB C.BSA 46252 46452 92060-16102 770515 REV. 1901 $CLIB C.BS0 46453 46653 92060-16102 771214 REV. 1901 $CLIB C.BS1 46654 47054 92060-16102 770515 REV. 1901 $CLIB RED.C 47055 47234 92060-16102 790403 REV. 1926 $CLIB RWN.C 47235 47333 92060-16102 780921 REV. 1901 $CLIB SPC.C 47334 47412 92060-16102 781101 REV. 1901 $CLIB WRT.C 47413 47525 92060-16102 770523 REV. 1901 $CLIB GES.C 47526 47642 92060-16102 780728 REV. 1901 $CLIB ADS.C 47643 50001 92060-16102 770809 REV. 1901 $CLIB P.PAS 50003 50031 92002-16006 740801 OLY.C 50032 50077 92060-16103 780815 REV. 1901 $CLIB GEX.C 50100 50551 92060-16105 781127 REV. 1901 $CLIB LURQ 50552 51132 92067-16035 REV.1805 771013  $ALRN 51133 51250 92067-16035 REV.1805 770715 IFBRK 51251 51304 92067-16035 REV.1913 790124 IFTTY 51305 51360 92067-16035 REV.1805 771208 F4.0 (0099)51361 55135 92060-16094 790125 REV. 1913 GMS.C 55136 55146 92060-16103 781006 REV. 1901 $CLIB ID.AD 55147 55211 92060-16103 780811 REV. 1901 $CLIB ID.A 55212 55310 92002-16008 REV.1826 780403 COR.A 55311 55331 92067-16035 REV.1805 770621 F4.1 (0099)51361 56152 92060-16095 790430 REV. 1926 F4.2 (0099)51361 52300 92060-16096 790430 REV. 1926 EOF.C 52301 52357 92060-16102 770523 REV. 1901 $CLIB F4.3 (0099)51361 53467 92060-16097 781212 REV. 1913 GMS.C 53470 53500 92060-16103 781006 REV. 1901 $CLIB ID.AD 53501 53543 92060-16103 780811 REV. 1901 $CLIB ID.A 53544 53642 92002-16008 REV.1826 780403 COR.A 53643 53663 92067-16035 REV.1805 770621 F4.4 (0099)51361 53342 92060-16098 790430 REV. 1926 EOF.C 53343 53421 92060-16102 770523 REV. 1901 $CLIB END.C 53422 53446 92060-16103 780726 REV. 1901 $CLIB OPN.C 53502 54376 92060-16102 790420 REV. 1926 $CLIB PRM.C 54411 54476 92060-16102 780921 REV. 1901 $CLIB CLO.C 54477 54626 92060-16102 790207 REV. 1913 $CLIB CRE.C 54627 54705 92060-16102 780921 REV. 1901 $CLIB NAM.. 54706 55002 92002-16006 740801 SUP.C 55003 55304 92060-16104 781106 REV. 1901 $CLIB GMM.C 55305 55351 92060-16103 780921 REV. 1901 $CLIB ID.AD 55352 55414 92060-16103 780811 REV. 1901 $CLIB ID.A 55415 55513 92002-16008 REV.1826 780403 NAMR 55516 56012 750701 24998-16001 .ENTR 56013 56102 750701 24998-16001 PRTN 56103 56215 92067-16035 REV.1805 771005 COR.A 56216 56236 92067-16035 REV.1805 770621 LOGLU 56237 56307 92067-16035 REV.1826 780502 F4.5 (0099)51361 55256 92060-16101 790103 REV. 1913 ASMB (0089)32042 375053 92067-16011 REV.1940 790803 C.BIA 37554 37611 92060-16102 780920 REV.1901 $CLIB C.BIN 37612 37647 92060-16102 770721 REV. 1901 $CLIB C.LST 37650 37705 92060-16102 770721 REV. 1901 $CLIB C.SOR 37706 37743 92060-16102 770815 REV. 1901 $CLIB C.TRN 37744 40164 92060-16102 781016 REV. 1901 $CLIB C.BBI 40165 40365 92060-16102 770515 REV. 1901 $CLIB C.BLI 40366 40566 92060-16102 770515 REV. 1901 $CLIB C.BSO 40567 40767 92060-16102 770515 REV. 1901 $CLIB EOF.C 40770 41046 92060-16102 770523 REV. 1901 $CLIB END.C 41047 41073 92060-16103 780726 REV. 1901 $CLIB PRM.C 41074 41161 92060-16102 780921 REV. 1901 $CLIB RED.C 41162 41341 92060-16102 790403 REV. 1926 $CLIB SPC.C 41342 41420 92060-16102 781101 REV. 1901 $CLIB WRT.C 41421 41533 92060-16102 770523 REV. 1901 $CLIB WARC. 41534 41562 92060-16102 770523 REV. 1901 $CLIB CLO.C 41563 41712 92060-16102 790207 REV. 1913 $CLIB GES.C 41715 42031 92060-16102 780728 REV. 1901 $CLIB ADS.C 42035 42173 92060-16102 770809 REV. 1901 $CLIB P.PAS 42174 42222 92002-16006 740801 SUP.C 42223 42524 92060-16104 781106 REV. 1901 $CLIB GMM.C 42525 42571 92060-16103 780921 REV. 1901 $CLIB OLY.C 42572 42637 92060-16103 780815 REV. 1901 $CLIB ID.AD 42640 42702 92060-16103 780811 REV. 1901 $CLIB ID.A 42703 43001 92002-16008 REV.1826 780403 GEX.C 43002 43453 92060-16105 781127 REV. 1901 $CLIB NAMR 43454 43750 750701 24998-16001 .ENTR 43753 44042 750701 24998-16001 LURQ 44044 44424 92067-16035 REV.1805 771013 $ALRN 44425 44542 92067-16035 REV.1805 770715 PRTN 44543 44655 92067-16035 REV.1805 771005 IFBRK 44656 44711 92067-16035 REV.1913 790124 COR.A 44712 44732 92067-16035 REV.1805 770621 IFTTY 44733 45006 92067-16035 REV.1805 771208 LOGLU 45007 45057 92067-16035 REV.31826 780502 ASMB0(0099)45060 45551 92067-16070 REV.1940 790713 OPN.C 45574 46470 92060-16102 790420 REV. 1926 $CLIB CRE.C 46501 46557 92060-16102 780921 REV. 1901 $CLIB NAM.. 46560 46654 92002-16006 740801 RUN.C 46655 47057 92060-16104 790215 REV. 1926 $CLIB C.RP 47060 47463 92060-16104 790405 REV. 1926 $CLIB IDDUP 47515 50201 92002-16008 REV.1826 780503 IDRPL 50205 51011 92002-16008 REV.1940 790726 IDRPD 51012 51332 92002-16008 REV.1826 780525 OPEN 51333 51520 92002-16006 741205 CLOSE 51521 51637 92002-16006 771115 $OPEN 51651 52057 92002-16006 740801 RWND$ 52062 52204 92002-16006 771121 R/W$ 52205 52340 92002-16006 740801 RMPAR 52341 52403 781106 24998-16001 .DFER 52404 52455 750701 24998-16001 MESSS 52456 52615 92067-16035 REV.1840 780724 IDGET 52616 52700 92067-16037 REV.1805 771227 ASMB1(0099)45060 47216 92067-16071 REV.1940 790713 RWN.C 47217 47315 92060-16102 780921 REV. 1901 $CLIB ASMB2(0099)45060 47207 92067-16072 REV.1940 790531 ASMB3(0099)45060 45705 92067-16073 REV.1940 790531 RWN.C 45707 46005 92060-16102 780921 REV. 1901 $CLIB ASMB4(0099)45060 46407 92067-16074 REV.1940 790531 XREF (0089)32042 37464 92067-16012 REV.1805 771121 C.LST 37465 37522 92060-16102 770721 REV. 1901 $CLIB C.SOR 37523 37560 92060-16102 770815 REV. 1901 $CLIB C.TRN 37561 40001 92060-16102 781016 REV. 1901 $CLIB C.BLI 40002 40202 92060-16102 770515 REV. 1901 $CLIB C.BSO 40203 40403 92060-16102 770515 REV. 1901 $CLIB EOF.C 40404 40462 92060-16102 770523 REV. 1901 $CLIB END.C 40463 40507 92060-16103 780726 REV. 1901 $CLIB OPN.C 40510 41404 92060-16102 790420 REV. 1926 $CLIB PRM.C 41405 41472 92060-16102 780921 REV. 1901 $CLIB RED.C 41473 41652 92060-16102 790403 REV. 1926 $CLIB6 RWN.C 41653 41751 92060-16102 780921 REV. 1901 $CLIB SPC.C 41754 42032 92060-16102 781101 REV. 1901 $CLIB WRT.C 42034 42146 92060-16102 770523 REV. 1901 $CLIB WARC. 42147 42175 92060-16102 770523 REV. 1901 $CLIB CLO.C 42176 42325 92060-16102 790207 REV. 1913 $CLIB CRE.C 42326 42404 92060-16102 780921 REV. 1901 $CLIB NAM.. 42405 42501 92002-16006 740801 GES.C 42502 42616 92060-16102 780728 REV. 1901 $CLIB ADS.C 42617 42755 92060-16102 770809 REV. 1901 $CLIB P.PAS 42756 43004 92002-16006 740801 SUP.C 43005 43306 92060-16104 781106 REV. 1901 $CLIB GMM.C 43307 43353 92060-16103 780921 REV. 1901 $CLIB ID.AD 43354 43416 92060-16103 780811 REV. 1901 $CLIB ID.A 43417 43515 92002-16008 REV.1826 780403 GEX.C 43541 44212 92060-16105 781127 REV. 1901 $CLIB NAMR 44221 44515 750701 24998-16001 .ENTR 44516 44605 750701 24998-16001 LURQ 44606 45166 92067-16035 REV.1805 771013 $ALRN 45167 45304 92067-16035 REV.1805 770715 PRTN 45305 45417 92067-16035 REV.1805 771005 IFBRK 45420 45453 92067-16035 REV.1913 790124 COR.A 45454 45474 92067-16035 REV.1805 770621 IFTTY 45475 45550 92067-16035 REV.1805 771208 LOGLU 45551 45621 92067-16035 REV.1826 780502 RT4GN(0090)32042 45176 92067-16009 REV.1926 790427 CREAT 45177 45462 92002-16006 REV.1926 790501 OPEN 45463 45650 92002-16006 741205 READF 45663 46421 92002-16006 770801 APOSN 46450 46620 92002-16006 781103 REV.1901 LOCF 46621 47007 92002-16006 750416 CLOSE 47010 47126 92002-16006 771115 NAM.. 47127 47223 92002-16006 740801 $OPEN 47224 47432 92002-16006 740801 P.PAS 47433 47461 92002-16006 740801 RW$UB 47462 47733 92002-16006 750422 RWND$ 47740 50062 92002-16006 771121 R/W$ 50067 50222 92002-16006 740801 0RMPAR 50223 50265 781106 24998-16001 .ENTR 50266 50355 750701 24998-16001 LURQ 50356 50736 92067-16035 REV.1805 771013 $ALRN 50737 51054 92067-16035 REV.1805 770715 REIO 51055 51201 92067-16035 REV.1926 790506 .DFER 51202 51253 750701 24998-16001 IFBRK 51254 51307 92067-16035 REV.1913 790124 COR.A 51310 51330 92067-16035 REV.1805 770621 CNUMD 51331 51350 92001-16035 REV.1805 770621 $CVT3 51351 51436 92067-16035 REV.1805 770621 GETST 51437 51736 92067-16035 REV.1805 771005 RT4G1(0090)51737 54134 92067-16009 REV.1926 790427 RT4G2(0090)51737 56071 92067-16009 REV.1926 790427 RWNDF 56072 56153 92002-16006 740801 RT4G3(0090)51737 56205 92067-16009 REV.1926 790427 RT4G4(0090)51737 55467 92067-16009 REV.1926 790427 RWNDF 55470 55551 92002-16006 740801 RT4G5(0090)51737 55737 92067-16009 REV.1926 790427 RT4G6(0090)51737 55447 92067-16009 REV.1926 790427 RT4G7(0090)51737 54223 92067-16009 REV.1926 790427 RT4G8(0090)51737 53347 92067-16009 REV.1926 790427 SWTCH(0010)32042 50302 92067-16010 REV.1926 790425 OPEN 50303 50470 92002-16006 741205 READF 50471 51227 92002-16006 770801 LOCF 51230 51416 92002-16006 750416 CLOSE 51417 51535 92002-16006 771115 $OPEN 51536 51744 92002-16006 740801 P.PAS 51745 51773 92002-16006 740801 RW$UB 51774 52245 92002-16006 750422 RWND$ 52247 52371 92002-16006 771121 R/W$ 52372 52525 92002-16006 740801 RMPAR 52526 52570 781106 24998-16001 .ENTR 52571 52660 750701 24998-16001 REIO 52661 53005 92067-16035 REV.1926 790506 .DFER 53006 53057 750701 24998-16001 CNUMD 53060 53077 92001-16035 REV.1805 770621 $CVT3 53100 53165 92067-16035 REV.1805 770621 GETST 53166 53465 92067-16035 REV.1805 771005  SWSG1(0010)53466 54466 92067-16010 REV.1805 780206 SWSG2(0010)53466 55304 92067-16010 REV.1840 780810 SAVE (0099)32042 32106 92060-16039 REV.1901 781108 DMT 32131 34132 BUFER 34134 34316 92060-16043 760721 CHDLU 34317 34460 CHUTP 34461 34674 LUTRK 34675 35362 MPFND 35373 36047 PRNTH 36051 36223 TPPOS 36224 36510 ASCDC 36511 36640 92060-16043 760622 DCASC 36641 36746 92060-16043 760622 DRT 36747 37036 92060-16043 760622 DSCAD 37037 37107 92060-16043 760622 MEMGT 37110 37123 92060-16043 760622 SUB 37124 37145 92060-16043 760622 READU 37146 37266 RMOVI 37267 37274 92060-16043 760622 MESG 37313 40445 92060-16043 770214 .TAPE 40446 40460 750701 24998-16001 IAND 40461 40470 750701 24998-16001 PAUSE 40471 40571 771122 24998-16001 RMPAR 40572 40634 781106 24998-16001 PAU.E 40635 40635 750701 24998-16001 PNAME 40636 40703 771121 24998-16001 .ENTR 40704 40773 750701 24998-16001 LURQ 40774 41354 92067-16035 REV.1805 771013 $ALRN 41355 41472 92067-16035 REV.1805 770715 REIO 41473 41617 92067-16035 REV.1926 790506 .DFER 41620 41671 750701 24998-16001 COR.A 41672 41712 92067-16035 REV.1805 770621 RSTOR(0099)32042 32151 92060-16040 REV.1901 781108 MTD 32256 34664 BUFER 34703 35065 92060-16043 760721 CHDLU 35066 35227 CHUTP 35230 35443 LUTRK 35472 36157 MATCH 36171 36560 90260-16043 770214 MPFND 36561 37235 PRNTH 37236 37410 TPPOS 37411 37675 ASCDC 37703 40032 92060-16043 760622 DCASC 40035 40142 92060-16043 760622 DRT 40143 40232 92060-16043 760622 DSCAD 40233 40303 92060-16043 760622 MEMGT 40304 40317 92060-16043 760622 SUB 40320 40341 r92060-16043 760622 READU 40342 40462 RMOVI 40463 40470 92060-16043 760622 MESG 40471 41623 92060-16043 770214 .TAPE 41624 41636 750701 24998-16001 IAND 41637 41646 750701 24998-16001 PAUSE 41647 41747 771122 24998-16001 RMPAR 41752 42014 781106 24998-16001 PAU.E 42016 42016 750701 24998-16001 PNAME 42017 42064 771121 24998-16001 .ENTR 42065 42154 750701 24998-16001 LURQ 42155 42535 92067-16035 REV.1805 771013 $ALRN 42536 42653 92067-16035 REV.1805 770715 REIO 42654 43000 92067-16035 REV.1926 790506 .DFER 43001 43052 750701 24998-16001 COR.A 43053 43073 92067-16035 REV.1805 770621 COPY (0099)32042 32076 92060-16042 REV.1704 770214 DD 32124 34150 BUFER 34154 34336 92060-16043 760721 CHDLU 34337 34500 CHUTP 34501 34714 LUTRK 34715 35402 MATCH 35403 35772 90260-16043 770214 MPFND 35773 36447 ASCDC 36455 36604 92060-16043 760622 DCASC 36605 36712 92060-16043 760622 DRT 36713 37002 92060-16043 760622 DSCAD 37003 37053 92060-16043 760622 MEMGT 37054 37067 92060-16043 760622 SUB 37070 37111 92060-16043 760622 READU 37112 37232 RMOVI 37233 37240 92060-16043 760622 MESG 37257 40411 92060-16043 770214 IAND 40412 40421 750701 24998-16001 PAUSE 40422 40522 771122 24998-16001 RMPAR 40523 40565 781106 24998-16001 PAU.E 40566 40566 750701 24998-16001 PNAME 40567 40634 771121 24998-16001 .ENTR 40635 40724 750701 24998-16001 REIO 40725 41051 92067-16035 REV.1926 790506 .DFER 41052 41123 750701 24998-16001 COR.A 41124 41144 92067-16035 REV.1805 770621 VERFY(0099)32042 32107 92060-16041 REV.1704 761201 VRFSB 32110 33360 DCASC 33361 33466 92060-16043 760622 MEMGT _ 33467 33502 92060-16043 760622 .TAPE 33503 33515 750701 24998-16001 IAND 33516 33525 750701 24998-16001 PAUSE 33526 33626 771122 24998-16001 RMPAR 33627 33671 781106 24998-16001 PAU.E 33672 33672 750701 24998-16001 PNAME 33673 33740 771121 24998-16001 .ENTR 33744 34033 750701 24998-16001 REIO 34035 34161 92067-16035 REV.1926 790506 .DFER 34162 34233 750701 24998-16001 COR.A 34234 34254 92067-16035 REV.1805 770621 LGTAT(0089)32042 34115 92067-16008 REV.1926 790504 IFBRK 34116 34151 92067-16035 REV.1913 790124 $CVT3 34152 34237 92067-16035 REV.1805 770621 KEYS (0075)32043 41110 CREAT 41114 41377 92002-16006 REV.1926 790501 OPEN 41400 41565 92002-16006 741205 READF 41604 42342 92002-16006 770801 CLOSE 42364 42502 92002-16006 771115 NAM.. 42503 42577 92002-16006 740801 $OPEN 42600 43006 92002-16006 740801 P.PAS 43007 43035 92002-16006 740801 RW$UB 43036 43307 92002-16006 750422 RWND$ 43310 43432 92002-16006 771121 R/W$ 43433 43566 92002-16006 740801 ..MAP 43567 43662 751101 24998-16001 CLRIO 43663 43671 750701 24998-16001 IAND 43672 43701 750701 24998-16001 IOR 43702 43711 750701 24998-16001 RMPAR 43712 43754 781106 24998-16001 .ENTR 43757 44046 750701 24998-16001 REIO 44050 44174 92067-16035 REV.1926 790506 .DFER 44175 44246 750701 24998-16001 KCVT 44247 44262 92001-16035 REV.1805 770621 PARSE 44263 44302 92067-16035 REV.1805 770714 $PARS 44303 44523 92067-16035 REV.1840 780811 $CVT3 44524 44611 92067-16035 REV.1805 770621 KYDMP(0010)32042 33366 OPEN 33367 33554 92002-16006 741205 READF 33572 34330 92002-16006 770801 CLOSE 34350 34466 92002-16006 771115 $OPEN 34467 3V4675 92002-16006 740801 P.PAS 34676 34724 92002-16006 740801 RW$UB 34725 35176 92002-16006 750422 RWND$ 35177 35321 92002-16006 771121 R/W$ 35322 35455 92002-16006 740801 CLRIO 35456 35464 750701 24998-16001 IAND 35465 35474 750701 24998-16001 RMPAR 35475 35537 781106 24998-16001 .ENTR 35540 35627 750701 24998-16001 REIO 35630 35754 92067-16035 REV.1926 790506 .DFER 35757 36030 750701 24998-16001 KCVT 36036 36051 92001-16035 REV.1805 770621 $CVT3 36052 36137 92067-16035 REV.1805 770621 QCLM (0028)32042 32644 91740-16016 REV 1913 790128 KCVT 32645 32660 92001-16035 REV.1805 770621 .ENTR 32661 32750 750701 24998-16001 TMVAL 32751 33036 92067-16035 REV.1913 790124 CNUMD 33037 33056 92001-16035 REV.1805 770621 .DFER 33057 33130 750701 24998-16001 CNUMO 33131 33150 92067-16035 REV.1805 770621 $CVT3 33151 33236 92067-16035 REV.1805 770621 RFAM (0030)32042 35544 91740-16004 REV 1740 771019 CREAT 35553 36036 92002-16006 REV.1926 790501 OPEN 36040 36225 92002-16006 741205 PURGE 36226 36324 92002-16006 740801 NAMF 36325 36500 92002-16006 771115 READF 36501 37237 92002-16006 770801 FSTAT 37240 37264 92002-16006 740801 RWNDF 37265 37346 92002-16006 740801 POSNT 37347 37612 92002-16006 760702 APOSN 37613 37763 92002-16006 781103 REV.1901 FCONT 37764 40056 92002-16006 REV.1826 780413 LOCF 40071 40257 92002-16006 750416 CLOSE 40260 40376 92002-16006 771115 NAM.. 40377 40473 92002-16006 740801 $OPEN 40474 40702 92002-16006 740801 P.PAS 40703 40731 92002-16006 740801 RW$UB 40732 41203 92002-16006 750422 RWND$ 41204 41326 92002-16006 771121 R/W$ 41327 41462 92002-16006 740801 RMPAR 41463 41525 7811Q06 24998-16001 .ENTR 41526 41615 750701 24998-16001 REIO 41616 41742 92067-16035 REV.1926 790506 .DFER 41745 42016 750701 24998-16001 $CVT3 42024 42111 92067-16035 REV.1805 770621 D65GT 42112 42270 91740-16025 REV 1913 781027 D65SV 42271 42424 91740-16029 REV 1740 771018 EXECM(0030)32042 34150 91740-16005 REV 1840 780721 EXECW(0030)32042 33440 91740-16008 REV 1740 770728 D65GT 33441 33617 91740-16025 REV 1913 781027 .ENTR 33620 33707 750701 24998-16001 D65SV 33717 34052 91740-16029 REV 1740 771018 DLIST(0030)32042 33755 91740-16009 REV 1913 790111 $BMON 33756 33756 92002-12001 REV.1940 790729 FSTAT 33760 34004 92002-16006 740801 .ENTR 34005 34074 750701 24998-16001 ENSES 34075 34075 92067-16035 REV.1913 790119 D65GT 34076 34254 91740-16025 REV 1913 781027 D65SV 34255 34410 91740-16029 REV 1740 771018 PROGL(0030)32042 35156 91740-16012 REV 1913 790128 OPEN 35157 35344 92002-16006 741205 READF 35366 36124 92002-16006 770801 LOCF 36143 36331 92002-16006 750416 CLOSE 36332 36450 92002-16006 771115 $OPEN 36451 36657 92002-16006 740801 P.PAS 36660 36706 92002-16006 740801 RW$UB 36707 37160 92002-16006 750422 RWND$ 37161 37303 92002-16006 771121 R/W$ 37304 37437 92002-16006 740801 RMPAR 37440 37502 781106 24998-16001 .ENTR 37503 37572 750701 24998-16001 REIO 37573 37717 92067-16035 REV.1926 790506 .DFER 37720 37771 750701 24998-16001 KCVT 37772 40005 92001-16035 REV.1805 770621 CNUMD 40010 40027 92001-16035 REV.1805 770621 $CVT3 40030 40115 92067-16035 REV.1805 770621 PTOPM(0030)32042 33001 91740-16007 REV 1913 781130 D65SV 33002 33135 91740-16029 REV 1740 771018 .ENTR 33136 33225 750701 24998-16001 EDIT#R(0050)32042 37512 91740-16022 REV 1926 790503 CREAT 37513 37776 92002-16006 REV.1926 790501 OPEN 37777 40164 92002-16006 741205 READF 40166 40724 92002-16006 770801 CLOSE 40725 41043 92002-16006 771115 NAM.. 41044 41140 92002-16006 740801 $OPEN 41141 41347 92002-16006 740801 P.PAS 41350 41376 92002-16006 740801 RW$UB 41377 41650 92002-16006 750422 RWND$ 41651 41773 92002-16006 771121 R/W$ 41774 42127 92002-16006 740801 NAMR 42131 42425 750701 24998-16001 RMPAR 42426 42470 781106 24998-16001 .ENTR 42471 42560 750701 24998-16001 .DFER 42561 42632 750701 24998-16001 LURQ 42633 43213 92067-16035 REV.1805 771013 $ALRN 43214 43331 92067-16035 REV.1805 770715 PRTN 43332 43444 92067-16035 REV.1805 771005 REIO 43445 43571 92067-16035 REV.1926 790506 DEXEC 43612 44504 91740-16038 REV 1740 770728 D65MS 44527 45134 91740-16040 REV 1913 790104 RNRQ 45135 45376 92067-16035 REV.1805 780222 D65GT 45377 45555 91740-16025 REV 1913 781027 D65AB 45556 45651 91740-16041 REV 1740 761220 CNUMO 45652 45671 92067-16035 REV.1805 770621 $CVT3 45672 45757 92067-16035 REV.1805 770621 REMAT(0080)32042 37275 91740-16024 REV 1913 790129 RMPAR 37276 37340 781106 24998-16001 .DFER 37341 37412 750701 24998-16001 REIO 37413 37537 92067-16035 REV.1926 790506 .ENTR 37540 37627 750701 24998-16001 IFBRK 37630 37663 92067-16035 REV.1913 790124 CNUMD 37664 37703 92001-16035 REV.1805 770621 $CVT3 37704 37771 92067-16035 REV.1805 770621 DMESG 37772 40145 91740-16032 REV 1840 780628 DMESS 40152 40332 91740-16033 REV 1740 771003 MESSS 40333 40472 92067-16035 REV.1840 780724 FCOPY 40473 41311 91740-16034 REV 1740 770907 DEXEC 41353 42245 91740-16038 REV 1740 770728 RFMST 42265 42747 91740-16039 REV 1740 770524 D65MS 42750 43355 91740-16040 REV 1913 790104 RNRQ 43356 43617 92067-16035 REV.1805 780222 $ALRN 43620 43735 92067-16035 REV.1805 770715 D65GT 43742 44120 91740-16025 REV 1913 781027 D65AB 44127 44222 91740-16041 REV 1740 761220 CNUMO 44223 44242 92067-16035 REV.1805 770621 OPERM(0030)32042 32167 91740-16006 REV 1740 770314 MESSS 32170 32327 92067-16035 REV.1840 780724 .ENTR 32330 32417 750701 24998-16001 D65GT 32420 32576 91740-16025 REV 1913 781027 D65SV 32577 32732 91740-16029 REV 1740 771018 NDTGN(0099)32042 37055 91740-16021 REV 1805 771123 CREAT 37056 37341 92002-16006 REV.1926 790501 OPEN 37342 37527 92002-16006 741205 PURGE 37530 37626 92002-16006 740801 READF 37644 40402 92002-16006 770801 CLOSE 40431 40547 92002-16006 771115 NAM.. 40550 40644 92002-16006 740801 $OPEN 40645 41053 92002-16006 740801 P.PAS 41054 41102 92002-16006 740801 RW$UB 41103 41354 92002-16006 750422 RWND$ 41355 41477 92002-16006 771121 R/W$ 41500 41633 92002-16006 740801 RMPAR 41634 41676 781106 24998-16001 .ENTR 41677 41766 750701 24998-16001 REIO 41767 42113 92067-16035 REV.1926 790506 .DFER 42123 42174 750701 24998-16001 PARSE 42175 42214 92067-16035 REV.1805 770714 $PARS 42215 42435 92067-16035 REV.1840 780811 $CVT3 42436 42523 92067-16035 REV.1805 770621 LSTEN(0026)32042 40447 91740-16072 REV 1913 790126 $BMON 40450 40450 92002-12001 REV.1940 790729 OPEN 40451 40636 92002-16006 741205 READF 40637 41375 92002-16006 770801 CLOSE 41376 41514 92002-16006 771115 $OPEN 41515 41723 92002-16006 740801 P.PAS 41724 41752 92002-16006 740801 RW$UB 41755 42226 92002-16006 750422  RWND$ 42230 42352 92002-16006 771121 R/W$ 42353 42506 92002-16006 740801 RMPAR 42507 42551 781106 24998-16001 .ENTR 42552 42641 750701 24998-16001 RNRQ 42642 43103 92067-16035 REV.1805 780222 $ALRN 43104 43221 92067-16035 REV.1805 770715 PRTN 43222 43334 92067-16035 REV.1805 771005 REIO 43335 43461 92067-16035 REV.1926 790506 .DFER 43462 43533 750701 24998-16001 MESSS 43534 43673 92067-16035 REV.1840 780724 PARSE 43674 43713 92067-16035 REV.1805 770714 $PARS 43722 44142 92067-16035 REV.1840 780811 CNUMD 44145 44164 92001-16035 REV.1805 770621 $CVT3 44165 44252 92067-16035 REV.1805 770621 D65MS 44253 44660 91740-16040 REV 1913 790104 D65GT 44661 45037 91740-16025 REV 1913 781027 D65AB 45040 45133 91740-16041 REV 1740 761220 CNUMO 45134 45153 92067-16035 REV.1805 770621 AUTOR(0010)10042 10431 91730-16009 REV.1926 790206 XLUEX 10432 10542 92067-16035 REV.1913 790119 .ENTR 10543 10632 750701 24998-16001 FIXMP 10633 10725 91730-1X008 REV 1901 781026 RT PARTITION REQMTS: D.RTR 03 PAGES SMP 05 PAGES JOB 04 PAGES BG PARTITION REQMTS: $CNFX 04 PAGES FMGR 07 PAGES WHZAT 03 PAGES LOADR 11 PAGES GASP 06 PAGES FTN4 12 PAGES ASMB 10 PAGES XREF 07 PAGES RT4GN 12 PAGES SWTCH 11 PAGES SAVE 05 PAGES RSTOR 06 PAGES COPY 05 PAGES VERFY 03 PAGES LGTAT 03 PAGES KEYS 07 PAGES KYDMP 04 PAGES QCLM 02 PAGES RFAM 06 PAGES EXECM 03 PAGES EXECW 03 PAGES DLIST 03 PAGES PROGL 05 PAGES PTOPM 02 PAGES EDITR 07 PAGES REMAT 07 PAGES OPERM 02 PAGES NDTGN 06 PAGES LSTEN 07 PAGES AUTOR 02 PAGES * MAXIMUM PROGRAM SIZE: W/O COM 29 PAGES W/ COM 27 PAGES W/ TA2 20 PAGES SYS AV MEM: 03674 WORDS 1ST PART PG 00040 CHANGE 1ST PART PG ? * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? SYS AV MEM: 03674 WORDS PAGES REMAINING: 00024 DEFINE PARTITIONS: PART 01? 4,RT * PART 01? PART 02? 5,RT * PART 02? PART 03? 15,BG * PART 03? PART 04? /E * PART 04? MODIFY PROGRAM PAGE REQUIREMENTS? - * * MODIFY PROGRAM PAGE REQUIREMENTS? * FMGR,15 * FILE MANAGER - LOADR,15 * RTE-IV LOADER - FTN4,15 * FORTRAN IV - ASMB,15 * ASSEMBLER - XREF,15 * CROSS REF. - RT4GN,15 * RTE-IV GENERATOR - SWTCH,15 * RTE-IV SWITCH - SAVE,15 * SAVE UTILITY - RSTOR,15 * RSTOR UTILITY - COPY,15 * COPY UTILITY - VERFY,15 * VERFY UTILITY - KEYS,15 * SOFT KEY UTILITY - KYDMP,15 * SOFT KEY DUMP UTILITY - EDITR,15 * RTE EDITOR - /E ASSIGN PROGRAM PARTITIONS? - * * ASSIGN PROGRAM PARTITIONS? * /E SYSTEM STORED ON DISC SYS SIZE: 61 TRKS, 003 SECS RT4GN FINISHED 0000 ERRORS w $: 02170-18021 1926 S C0122 &MESS5              H0101 l YOUR RTE-IV PRIMARY SYSTEM WITH DS/1000 IS OPERATIONAL AND AT YOUR SERVICE. PRIMARY SYSTEM REVISION: 1926. b  02170-18022 1926 S C0122 &MESS6              H0101 m YOUR RTE-IV PRIMARY SYSTEM IS OPERATIONAL AND AT YOUR SERVICE. PRIMARY SYSTEM REVISION: 1926. &  02170-18085 1901 S C0122 &TXD00 DS/1000 SYS TEST PROG             H0101 ؿFTN4,B,L PROGRAM TXD00(3,89),781110 1901 DIMENSION IBUF(5),ITIM1(5),ITIM2(5),ITIM3(5),ITIM4(5) C C C********************************************* C* TXD00 * C* PRIMARY SYSTEM DS/1000 TEST * C* RELOC.: 02170-16015 REV 1901 * C* SOURCE: 02170-18085 REV 1901 * C********************************************* C C C LLU=LOG DEVICE LU, DEFAULT=1 IF SPECIFIED PARAMETER IS .LE. 0 C LU=TEST DEVICE LU, MUST BE LU# OF DS/1000 INTERFACE IN LOCAL CPU C IERR=NUMBER OF ERRORS THAT OCCURRED DURING TEST C C RETRIEVE RUN PARAMETERS C CALL RMPAR(IBUF) LLU=IBUF IF(IBUF.LE.0)LLU=1 IF(IBUF(2).LE.0)GOTO 400 LU=IBUF(2) IERR=0 C C GET STATUS OF TEST DEVICE LU C CALL EXEC(13,LU,ISTA1,ISTA2,ISTA3) C C CHECK CHANNEL# IN STATUS WORD TWO, IF NON-ZERO THEN LU IS ENABLED C ICHAN=IAND(ISTA2,77B) IF(ICHAN.EQ.0)410,10 C C TEST DEVICE LU IS ENABLED C C INSURE THAT DEVICE TYPE IS 65 C 10 ITYPE=IAND(ISTA1,37400B) IF(ITYPE.EQ.32400B)15,420 C C CHECK SUBCHANNEL NUMBER IN STATUS WORD 3 C ODD S.C.=HARDWIRE, EVEN S.C.=MODEM COMMUNICATION LINK C 15 ISUB=IAND(ISTA3,1) C C CHECK IF COMMUNICATION LINK LU IS DOWN C 20 ISTAT=IAND(ISTA3,100000B) C C CHECK IF COMMUNICATION LINK EQT IS DOWN C 25 IEQT=IAND(ISTA1,140000B) IF((IEQT.EQ.0).AND.(ISTAT.EQ.0))30,440 C C CHECK IF NODE NUMBER OF REMOTE SYSTEM WAS SPECIFIED AT RUN TIME C 30 IF((IBUF(3).GT.0).AND.(IBUF(3).LE.32767))GOTO 70 IF(ISUB.EQ.0)GOTO 45 35 WRITE(LLU,40)LU,LU 40 FORMAT(/" TXD00 - LU#",I3,": BE SURE THAT THE REMOTE SYSTEM" 1" TO BE TESTED"/" HAS BEEN INITIALIZED AND IS" 2" CONNECTED TO THE HARDWIRE"/" INTERFACE CONFIGURED" 3" TO LU#",I3," IN THIS LOCAL SYSTEM.") GOTO 55 45 WRITE(LLU,50)LU,LU 50 FORMAT(/" TXD00 - LU#",I3,": BE SURE THAT THE REMOTE SYSTEM" 1" TO BE TESTED"/" HAS BEEN INITIALIZED AND IS" 2" CONNECTED TO THE MODEM"/" INTERFACE CONFIGURED" 3" TO LU#",I3," IN THIS LOCAL SYSTEM.") 55 WRITE(LLU,60) LU 60 FORMAT(/" TXD00 - LU#",I3,": ENTER A NODE NUMBER BETWEEN 1 AND" 1" 32767"/" FOR THE REMOTE SYSTEM TO BE TESTED OR TYPE" 2" /A TO ABORT"/" THIS TEST: _") C CALL EXEC(1,LLU+400B,IBUF,3) IF(IBUF.EQ.2H/A) GOTO 500 CALL CODE(5) READ(IBUF,*)INODE IF((INODE.GT.0).AND.(INODE.LE.32767)) GOTO 75 WRITE(LLU,65)LU,INODE 65 FORMAT(/" TXD00 - LU#",I3,": ",I5," IS AN ILLEGAL NODE NUMBER.") GOTO 55 70 INODE=IBUF(3) C C BEGIN DS/1000 TEST C 75 WRITE(LLU,80)LU,INODE 80 FORMAT(/" TXD00 - LU#",I3,": DS/1000 TEST RUNNING ON NODE#" 1,I5) C C GET REMOTE SYSTEM TIME C 270 CALL DEXEC(INODE,11,ITIM1) C C PREVENT INVALID TEST DUE TO SECONDS CHANGING FROM 59 TO 0 C IF(ITIM1(2).GE.58) 270,280 C C GET LOCAL SYSTEM TIME C 280 CALL EXEC(11,ITIM3) C C PREVENT INVALID TEST DUE TO SECONDS CHANGING FROM 59 TO 0 C IF(ITIM3(2).GE.58) 270,290 C C CONVERT PORTION OF LOCAL TIME TO TENS OF MILLISECONDS C 290 MS3=(100*ITIM3(2))+ITIM3(1) C C COMPUTE LOCAL TIME NECESSARY TO INDICATE ELAPSE OF ON SECOND C MS3A=MS3+100 C C GET LOCAL SYSTEM TIME AGAIN C 300 CALL EXEC(11,ITIM4) C C CONVERT PORTION OF NEW LOCAL TIME TO TENS OF MILLISECONDS C MS4=(100*ITIM4(2)+ITIM4(1)) C C LOOP UNTIL ONE SECOND HAS ELAPSED C IF (MS4.LE.MS3A) 300,310 C C GET REMOTE SYSTEM TIME AGAIN C 310 CALL DEXEC(INODE,11,ITIM2) C C INSURE THAT REMOTE NODE SYSTEM TIME WAS INCREMENTED C IF(ITIM2(2).LE.ITIM1(2))450,85 C C COMPLETION MESSAGE C 85 WRITE(LLU,90)LU,INODE,IERR 90 FORMAT(/" TXD00 - LU#",I3,": DS/1000 TEST FINISHED ON NODE#" 1,I5," ",I1," ERRORS"/) GOTO 1000 C C ERROR MESSAGES C 400 WRITE(LLU,405) 405 FORMATLV (/" TXD00 - LU# SPECIFIED FOR DS/1000 LINK IS" 1" ILLEGAL."/" RERUN TEST SPECIFYING AN INTEGER >0 AND" 2" <64 FOR LU#.") GOTO 500 C 410 WRITE(LLU,415)LU 415 FORMAT(/" TXD00 - LU#",I3,": NOT ASSIGNED, NOT TESTED!"/) GOTO 1000 C 420 WRITE(LLU,425)LU 425 FORMAT(/" TXD00 - LU#",I3," IS NOT ASSIGNED TO A DS/1000 LINK."/ 1" RERUN TEST SPECIFYING CORRECT LU#.") GOTO 500 C 440 WRITE(LLU,445)LU 445 FORMAT(/" TXD00 - LU#",I3,": EQT OR LU FOR DS/1000 LINK IS" 1" DOWN."/" UP EQT AND RERUN TEST.") GOTO 500 C 450 WRITE(LLU,455)LU,INODE 455 FORMAT(/" TXD00 - LU#",I3,", NODE#",I5,": TIME TEST FAILED!") IERR=IERR+1 GOTO 85 500 WRITE(LLU,505)LU 505 FORMAT(/" TXD00 - LU#",I3,": DS/1000 TEST ABORTED!"/) 1000 END END$ F  02170-18117 1926 S C0122 &STFIL              H0101 x:ST,WELCO1::-12,WELCO1::-14::-1 :ST,WELCO2::-12,WELCO2::-14::-1 :ST,WELCO3::-12,WELCO3::-14::-1 :ST,WELCO4::-12,WELCO4::-14::-1 :ST,WELCO5::-12,WELCO5::-14::-1 :ST,WELCO6::-12,WELCO6::-14::-1 :ST,WELCO7::-12,WELCO7::-14::-1 :ST,WELCO8::-12,WELCO8::-14::-1 :ST,&MESS1::-12,&MESS1::-14::-1 :ST,&MESS2::-12,&MESS2::-14::-1 :ST,&MESS3::-12,&MESS3::-14::-1 :ST,&MESS4::-12,&MESS4::-14::-1 :ST,&MESS5::-12,&MESS5::-14::-1 :ST,&MESS6::-12,&MESS6::-14::-1 :ST,&MESS7::-12,&MESS7::-14::-1 :ST,&LSTEN::-12,&LSTEN::-14::-1 :ST,&RPBAS::-12,&RPBAS::-14::-1 :ST,&RPIMG::-12,&RPIMG::-14::-1 :ST,&RPPG1::-12,&RPPG1::-14::-1 :ST,&RPPG2::-12,&RPPG2::-14::-1 :ST,&TXKA0::-12,&TXKA0::-14::-1 :ST,&TXKA1::-12,&TXKA1::-14::-1 :ST,&TXKA2::-12,&TXKA2::-14::-1 :ST,&TXKA3::-12,&TXKA3::-14::-1 :ST,&TXKA4::-12,&TXKA4::-14::-1 :ST,&TXKA5::-12,&TXKA5::-14::-1 :ST,&TXKA6::-12,&TXKA6::-14::-1 :ST,&TXKA7::-12,&TXKA7::-14::-1 :ST,&TXKA8::-12,&TXKA8::-14::-1 :ST,&TXKA9::-12,&TXKA9::-14::-1 :ST,&TXKB0::-12,&TXKB0::-14::-1 :ST,&TXKB1::-12,&TXKB1::-14::-1 :ST,&TXKB2::-12,&TXKB2::-14::-1 :ST,&TXKB3::-12,&TXKB3::-14::-1 :ST,&RSLU1::-12,&RSLU1::-14::-1 :ST,&RSLU2::-12,&RSLU2::-14::-1 :ST,&RSLU3::-12,&RSLU3::-14::-1 :ST,&RSLU4::-12,&RSLU4::-14::-1 :ST,&TXC01::-12,&TXC01::-14::-1 :ST,&TXC02::-12,&TXC02::-14::-1 :ST,&TXC03::-12,&TXC03::-14::-1 :ST,&TXC04::-12,&TXC04::-14::-1 :ST,&TXC05::-12,&TXC05::-14::-1 :ST,&TXC06::-12,&TXC06::-14::-1 :ST,&TXC07::-12,&TXC07::-14::-1 :ST,&TXC08::-12,&TXC08::-14::-1 :ST,&I7900::-12,&I7900::-14::-1 :ST,&I7906::-12,&I7906::-14::-1 :ST,&I7920::-12,&I7920::-14::-1 :ST,&LDPG1::-12,&LDPG1::-14::-1 :ST,&LDPG2::-12,&LDPG2::-14::-1 :ST,&SPPG1::-12,&SPPG1::-14::-1 :ST,&SPPG2::-12,&SPPG2::-14::-1 :ST,&PUPGM::-12,&PUPGM::-14::-1 :ST,&MAPIO::-12,&MAPIO::-14::-1 :ST,%MAPIO::-12,%MAPIO::-14::-1 :ST,&MEMSZ::-12,&MEMSZ::-14::-1 :ST,%MEMSZ::-12,%MEMSZ::-14::-1 :ST,&IODVC::-12,&IODVC::-14::-1 :ST,%IODVC::-12,%IODVC::-14::-1 :SHAT,LMAPIO::-12,LMAPIO::-14::-1 :ST,&TIME::-12,&TIME::-14::-1 :ST,%TIME::-12,%TIME::-14::-1 :ST,LTIME::-12,LTIME::-14::-1 :ST,&TXP00::-12,&TXP00::-14::-1 :ST,%TXP00::-12,%TXP00::-14::-1 :ST,&RODFK::-12,&RODFK::-14::-1 :ST,%RODFK::-12,%RODFK::-14::-1 :ST,LTXP00::-12,LTXP00::-14::-1 :ST,&TXP10::-12,&TXP10::-14::-1 :ST,%TXP10::-12,%TXP10::-14::-1 :ST,&RODSK::-12,&RODSK::-14::-1 :ST,%RODSK::-12,%RODSK::-14::-1 :ST,&RODTK::-12,&RODTK::-14::-1 :ST,%RODTK::-12,%RODTK::-14::-1 :ST,&RODFX::-12,&RODFX::-14::-1 :ST,%RODFX::-12,%RODFX::-14::-1 :ST,LTXP10::-12,LTXP10::-14::-1 :ST,&TXP20::-12,&TXP20::-14::-1 :ST,%TXP20::-12,%TXP20::-14::-1 :ST,&NPART::-12,&NPART::-14::-1 :ST,%NPART::-12,%NPART::-14::-1 :ST,LTXP20::-12,LTXP20::-14::-1 :ST,&TXP21::-12,&TXP21::-14::-1 :ST,%TXP21::-12,%TXP21::-14::-1 :ST,LTXP21::-12,LTXP21::-14::-1 :ST,%#EMA::-12,%#EMA::-14::-1 :ST,L#EMA::-12,L#EMA::-14::-1 :ST,&TXM00::-12,&TXM00::-14::-1 :ST,%TXM00::-12,%TXM00::-14::-1 :ST,LTXM00::-12,LTXM00::-14::-1 :ST,&TXD00::-12,&TXD00::-14::-1 :ST,%TXD00::-12,%TXD00::-14::-1 :ST,LTXD00::-12,LTXD00::-14::-1 :ST,&TXT00::-12,&TXT00::-14::-1 :ST,%TXT00::-12,%TXT00::-14::-1 :ST,LTXT00::-12,LTXT00::-14::-1 :ST,&TXI00::-12,&TXI00::-14::-1 :ST,%TXI00::-12,%TXI00::-14::-1 :ST,LTXI00::-12,LTXI00::-14::-1 :ST,&TXW00::-12,&TXW00::-14::-1 :ST,%TXW00::-12,%TXW00::-14::-1 :ST,LTXW00::-12,LTXW00::-14::-1 :ST,&TXM10::-12,&TXM10::-14::-1 :ST,%TXM10::-12,%TXM10::-14::-1 :ST,LTXM10::-12,LTXM10::-14::-1 :ST,&TXT10::-12,&TXT10::-14::-1 :ST,%TXT10::-12,%TXT10::-14::-1 :ST,LTXT10::-12,LTXT10::-14::-1 :ST,&TXT30::-12,&TXT30::-14::-1 :ST,%TXT30::-12,%TXT30::-14::-1 :ST,LTXT30::-12,LTXT30::-14::-1 :ST,&TXT20::-12,&TXT20::-14::-1 :ST,%TXT20::-12,%TXT20::-14::-1 :ST,LTXT20::-12,LTXT20::-14::-1 :ST,%BAIN1::-12,%BAIN1::-14::-1 :ST,%BAIN2::-12,%BAIN2::-14::-1 :ST,%BAIN3::-12,%BAIN3::-14::-1 :ST,%BATGN::-12,%BATGN::-14::-1 :ST,%BATG4::-12,%BATG4::-14::-1 :ST,FILNAM::-1]< 2,FILNAM::-14::-1 :ST,&BLBAS::-12,&BLBAS::-14::-1 :ST,LBASIC::-12,LBASIC::-14::-1 :ST,LBATGN::-12,LBATGN::-14::-1 :ST,&SPBAS::-12,&SPBAS::-14::-1 :ST,&PUBAS::-12,&PUBAS::-14::-1 :ST,%DBDS1::-12,%DBDS1::-14::-1 :ST,%DBDS2::-12,%DBDS2::-14::-1 :ST,%DBBLD::-12,%DBBLD::-14::-1 :ST,%DBSTR::-12,%DBSTR::-14::-1 :ST,%DBRST::-12,%DBRST::-14::-1 :ST,%DBULD::-12,%DBULD::-14::-1 :ST,%DBLOD::-12,%DBLOD::-14::-1 :ST,%RECOV::-12,%RECOV::-14::-1 :ST,%DBSPA::-12,%DBSPA::-14::-1 :ST,%QS001::-12,%QS001::-14::-1 :ST,%QS002::-12,%QS002::-14::-1 :ST,%QS003::-12,%QS003::-14::-1 :ST,%QS004::-12,%QS004::-14::-1 :ST,LIMAGE::-12,LIMAGE::-14::-1 :ST,&PUIMG::-12,&PUIMG::-14::-1 :ST,&MFG1::-12,&MFG1::-14::-1 :ST,&MFG2::-12,&MFG2::-14::-1 :ST,&MFG3::-12,&MFG3::-14::-1 :ST,&MFG4::-12,&MFG4::-14::-1 :ST,&MFG5::-12,&MFG5::-14::-1 :ST,&MFG6::-12,&MFG6::-14::-1 :ST,&MFG7::-12,&MFG7::-14::-1 :ST,&MFG8::-12,&MFG8::-14::-1 :ST,BLDPS1::-12,BLDPS1::-14::-1 :ST,BLDPS2::-12,BLDPS2::-14::-1 :ST,BLDPS3::-12,BLDPS3::-14::-1 :ST,BLDPS4::-12,BLDPS4::-14::-1 :ST,SPLTST::-12,SPLTST::-14::-1 :ST,SPTST1::-12,SPTST1::-14::-1 :ST,SPTST2::-12,SPTST2::-14::-1 :ST,SPTST3::-12,SPTST3::-14::-1 :ST,SCHEMA::-12,SCHEMA::-14::-1 :ST,DATA::-12,DATA::-14::-1 :ST,%EXPLE::-12,%EXPLE::-14::-1 :ST,&BITST::-12,&BITST::-14::-1 :ST,&PUTST::-12,&PUTST::-14::-1 :ST,&HFPRP::-12,&HFPRP::-14::-1 :ST,%HFPRP::-12,%HFPRP::-14::-1 :ST,&STFIL::-12,&STFIL::-14::-1 " ! 02170-18127 1926 S C0122 &STORE              H0101 :ST,%DVR07::-12,%DVR07::-14::-1 :ST,%AUTO7::-12,%AUTO7::-14::-1 :ST,%MPLIB::-12,%MPLIB::-14::-1 :ST,%BAMLB::-12,%BAMLB::-14::-1 :ST,%BASLB::-12,%BASLB::-14::-1 :ST,%TSKSC::-12,%TSKSC::-14::-1 :ST,%DECAR::-12,%DECAR::-14::-1 :ST,%DBLIB::-12,%DBLIB::-14::-1 :ST,%BAIMG::-12,%BAIMG::-14::-1 :ST,%DVA65::-12,%DVA65::-14::-1 :ST,%QUEUE::-12,%QUEUE::-14::-1 :ST,%GRPM::-12,%GRPM::-14::-1 :ST,%RTRY::-12,%RTRY::-14::-1 :ST,%QCLM::-12,%QCLM::-14::-1 :ST,%RFAM2::-12,%RFAM2::-14::-1 :ST,%EXECM::-12,%EXECM::-14::-1 :ST,%EXECW::-12,%EXECW::-14::-1 :ST,%DLIS1::-12,%DLIS1::-14::-1 :ST,%PROGL::-12,%PROGL::-14::-1 :ST,%PTOPM::-12,%PTOPM::-14::-1 :ST,%UPLIN::-12,%UPLIN::-14::-1 :ST,%EDITD::-12,%EDITD::-14::-1 :ST,%REMAT::-12,%REMAT::-14::-1 :ST,%OPERM::-12,%OPERM::-14::-1 :ST,%NDTGN::-12,%NDTGN::-14::-1 :ST,%LSTNS::-12,%LSTEN::-14::-1 :ST,%DSLB1::-12,%DSLB1::-14::-1 :ST,%DSLB2::-12,%DSLB2::-14::-1 :ST,%DSLB3::-12,%DSLB3::-14::-1 :ST,&STORE::-12,&STORE::-14::-1   02170-18129 1901 S C0122 &HFPRP F-SERIES MICROCODE RPL             H0101 SASMB,L * *************************************************************** * * * HP1000 F-SERIES MICROCODE RPL FILE * * * * SOURCE: 02170-18129 1901 781101 * * RELOCATABLE: 02170-16015 1901 781101 * * * *************************************************************** * NAM HFPRP 02170-16015 REV.1901 781101 * ENT TAN,SQRT,ALOG,ATAN,COS,SIN,EXP,ALOGT,TANH ENT DBLE,SNGL,.DFER,.XPAK,.XCOM,..DCM,DDINT ENT .XFER,$SETP,.GOTO,..MAP,.ENTR,.ENTP ENT .PWR2,.FLUN,.PACK,.CFER ENT .FAD,.FSB,.FMP,.FDV,IFIX,.FIXD,FLOAT,.FLTD ENT .XADD,.XSUB,.XMPY,.XDIV ENT .XFXS,.XFXD,.XFTS,.XFTD,.DINT,.IDBL ENT .TADD,.TSUB,.TMPY,.TDIV ENT .TFXS,.TFXD,.TFTS,.TFTD,.TINT,.ITBL * TAN RPL 105320B SQRT RPL 105321B ALOG RPL 105322B ATAN RPL 105323B COS RPL 105324B SCIENTIFIC INSTRUCTION SET SIN RPL 105325B EXP RPL 105326B ALOGT RPL 105327B TANH RPL 105330B * DBLE RPL 105201B SNGL RPL 105202B .DFER RPL 105205B .XPAK RPL 105206B .XCOM RPL 105215B ..DCM RPL 105216B DDINT RPL 105217B .XFER RPL 105220B FAST FORTRAN .GOTO RPL 105221B ..MAP RPL 105222B .ENTR RPL 105223B .ENTP RPL 105224B .PWR2 RPL 105225B .FLUN RPL 105226B $SETP RPL 105227B .PACK RPL 105230B .CFER RPL 105231B SKP .FAD RPL 105000B .FSB RPL 105020B .FMP RPL 105040B .FDV RPL 105060B IFIX RPL 105100B HFPP - TWO WORD .FIXD RPL 105104B FLOAT RPL 105120B .FLTD RPL 105124B * .XADD RPL 105001B .XSUB RPL 105021B .XMPY RPL 105041B .XDIV RPL 105061B .XFXS RPL 105101B .DINT RPL 105101B HFPP - THREE WORD .XFXD RPL 105105B .XFTS RPL 105121B .IDBL RPL 105121B .XFTD RPL 105125B * .TADD RPL 105002B .TSUB J  RPL 105022B .TMPY RPL 105042B .TDIV RPL 105062B .TFXS RPL 105102B .TINT RPL 105102B HFPP - FOUR WORD .TFXD RPL 105106B .TFTS RPL 105122B .ITBL RPL 105122B .TFTD RPL 105126B * END )  " 02176-18001 2013 S C0122 &ANPS5 E-06/20 ANSWER FILE             H0101 &LFPS5::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #5 * ** NAME: &ANPS5 02176-10005 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRMS5::2073::4000 * ABSOLUTE SYSTEM FILE 7906 * TARGET DISC 13 * DISC CHANNEL 7906, 256, 0, 0, 2, 0, 8 * 0 7906, 203, 132, 0, 2, 0, 5 * 1 7906, 203, 236, 0, 2, 0, 5 * 2 7906, 138, 340, 0, 2, 0, 4 * 3 7906, 203, 0, 2, 1, 0, 5 * 4 7906, 198, 208, 2, 1, 0, 5 * 5 7906, 400, 0, 3, 1, 0, 11 * 6 7920, 400, 0, 4, 1, 0, 11 * 7 7920, 1024, 411, 0, 5, 0, 26 * 8 7920, 985, 621, 0, 5, 0, 25 * 9 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVBAh12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::32767 * 7906/7920/7925 DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE MATH LIBRARY 1 REL,$MLIB2::32767 * RTE MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * Z$DBL,RP,3 * 3 WORD FLOATING POINT * *DBLE,RP,105201 *SNGL,RP,105202 *.XMPY,RP,105203 *.XDIV,RP,105204 *.DFER,RP,105205 *.XADD,RP,105213 *.XSUB,RP,105214 *.GOTO,RP,105221 *..MAP,RP,105222 *.ENTR,RP,105223 *.ENTP,RP,105224 *.PWR2,RP,105225O *.CFER,RP,105231 * FFP (OPTIONAL) *.FLUN,RP,105226 *$SETP,RP,105227 *.PACK,RP,105230 *.XFER,RP,105220 *.XPAK,RP,105206 *XADD,RP,105207 *XSUB,RP,105210 *XMPY,RP,105211 *XDIV,RP,105212 *.XCOM,RP,105215 *..DCM,RP,105216 *DDINT,RP,105217 * /E * * EQUIPMENT TABLE ENTRIES * 13,DVR32,D * EQT1: 7906/20 SYSTEM DISC 14,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 11,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 15,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 16,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 17,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 21,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 22,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 23,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 &( * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20 SUBCHANNEL 1 1,2 * LU11 - 7906/20 SUBCHANNEL 2 1,3 * LU12 - 7906/20 SUBCHANNEL 3 1,4 * LU13 - 7906/20 SUBCHANNEL 4 1,5 * LU14 - 7906/20 SUBCHANNEL 5 1,6 * LU15 - 7906/20 SUBCHANNEL 6 1,7 * LU16 - 7920 SUBCHANNEL 7 1,8 * LU17 - 7920 SUBCHANNEL 8 1,9 * LU18 - 7920 SUBCHANNEL 9 0 * LU19 - RESERVED FOR 7925 DISC LUS 0 * LU20 - RESERVED FOR 7925 DISC LUS 0 * LU21 - RESERVED FOR 7925 DISC LUS 0 * LU22 - RESERVED FOR 7925 DISC LUS 0 * LU23 - RESERVED FOR 7925 DISC LUS 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 ;- SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 13,EQT,1 * 7906/20 SYSTEM DISC 14,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 15,EQT,6 * 2608A LINE PRINTER 16,EQT,7 * HPIB INTERFACE 17,EQT,8 * 7970B MAGNETIC TAPE UNIT 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 22,PRG,PRMPT * SPARE 12966A TERMINAL #1 23,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENS*($IONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E s*  ( 02176-18003 2013 S C0122 &ANPS6 E-7925 ANSWER FILE             H0101 l&LFPS6::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #6 * ** NAME: &ANPS6 02176-10006 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRMS6::2073::4000 * ABSOLUTE SYSTEM FILE 7925 * TARGET DISC 13 * DISC CHANNEL 7925, 256, 0, 0, 2, 0, 8 * 0 7925, 256, 0, 2, 2, 0, 8 * 1 7925, 256, 0, 4, 4, 0, 8 * 2 7925, 256, 66, 4, 4, 0, 8 * 3 7925, 203, 132, 0, 4, 0, 5 * 4 7925, 203, 132, 4, 4, 0, 5 * 5 7925, 203, 184, 0, 4, 0, 5 * 6 7925, 203, 184, 4, 4, 0, 5 * 7 7925, 228, 0, 8, 1, 0, 8 * 8 7925, 400, 236, 0, 9, 0, 14 * 9 7925, 400, 282, 0, 9, 0, 14 * 10 7925, 228, 328, 0, 9, 0, 6 * 11 7925, 1024, 354, 0, 9, 0, 29 * 12 7925, 1024, 471, 0, 9, 0, 29 * 13 7925, 2048, 588, 0, 9, 0, 67 * 14 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE O&NE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::32767 * 7906/7920/7925 DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE-IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE-IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION M6ONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * Z$DBL,RP,3 * 3 WORD FLOATING POINT * *DBLE,RP,105201 *SNGL,RP,105202 *.XMPY,RP,105203 *.XDIV,RP,105204 *.DFER,RP,105205 *.XADD,RP,105213 *.XSUB,RP,105214 *.GOTO,RP,105221 *..MAP,RP,105222 *.ENTR,RP,105223 *.ENTP,RP,105224 *.PWR2,RP,105225 *.CFER,RP,105231 * FFP (OPTIONAL) *.FLUN,RP,105226 *$SETP,RP,105227 *.PACK,RP,105230 *.XFER,RP,105220 *.XPAK,RP,105206 *XADD,RP,105207 *XSUB,RP,105210 *XMPY,RP,105211 *XDIV,RP,105212 *.XCOM,RP,105215 *..DCM,RP,105216 *DDINT,RP,105217 * /E * * EQUIPMENT TABLE ENTRIES * 13,DVR32,D * EQT1: 7906/20/25 SYSTEM DISC 14,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 11,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 15,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 16,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 17,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 21,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 22,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 23,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20/25 SUBCHANNEL 1 1,2 * LU11 - 7906/20/25 SUBCHANNEL 2 1,3 * LU12 - 7906/20/25 SUBCHANNEL 3 1,4 * LU13 - 7906/20/25 SUBCHANNEL 4 1,5 * LU14 - 7906/20/25 SUBCHANNEL 5 1,6 * LU15 - 7906/20/25 SUBCHANNEL 6 1,7 * LU16 - 7920/25 SUBCHANNEL 7 1,8 * LU17 - 7920/25 SUBCHANNEL 8 1,9 * LU18 - 7920/25 SUBCHANNEL 9 1,10 * LU19 - 7925 SUBCHANNEL 10 1,11 * LU20 - 7925 SUBCHANNEL 11 1,12 * LU21 - 7925 SUBCHANNEL 12 1,13 * LU22 - 7925 SUBCHANNEL 13 1,14 * LU23 - 7925 SUBCHANNEL 14 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADD*URESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINT READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 13,EQT,1 * 7906/20/25 SYSTEM DISC 14,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 15,EQT,6 * 2608A LINE PRINTER 16,EQT,7 * HPIB INTERFACE 17,EQT,8 * 7970B MAGNETIC TAPE UNIT 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 22,PRG,PRMPT * SPARE 12966A TERMINAL #1 23,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMO*($N CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E K*  ) 02176-18005 2013 S C0122 &ANPS7 F-06/20 ANSWER FILE             H0101 &LFPS7::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #7 * ** NAME: &ANPS7 02176-10007 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRMS7::2073::4000 * ABSOLUTE SYSTEM FILE 7906 * TARGET DISC 14 * DISC CHANNEL 7906, 256, 0, 0, 2, 0, 8 * 0 7906, 203, 132, 0, 2, 0, 5 * 1 7906, 203, 236, 0, 2, 0, 5 * 2 7906, 138, 340, 0, 2, 0, 4 * 3 7906, 203, 0, 2, 1, 0, 5 * 4 7906, 198, 208, 2, 1, 0, 5 * 5 7906, 400, 0, 3, 1, 0, 11 * 6 7920, 400, 0, 4, 1, 0, 11 * 7 7920, 1024, 411, 0, 5, 0, 26 * 8 7920, 985, 621, 0, 5, 0, 25 * 9 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 11 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVBEp12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::32767 * 7906/7920/7925 DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%VLIB::2071 * VECTOR INSTRUCTION SET LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 F&E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * * F - SERIES RP LIST CONTINUES. * .FIXD,RP,105104 * SINGLE PRECISION .FLTD,RP,105124 * FLOATING POINT CONTINUED * .XADD,RP,105001 .XSUB,RP,105021 .XMPY,RP,105041 .XDIV,RP,105061 0 .XFXS,RP,105101 * EXTENDED PRECISION .DINT,RP,105101 * FLOATING POINT .XFXD,RP,105105 .XFTS,RP,105121 .IDBL,RP,105121 .XFTD,RP,105125 * .TADD,RP,105002 .TSUB,RP,105022 .TMPY,RP,105042 .TDIV,RP,105062 .TFXS,RP,105102 * DOUBLE PRECISION .TINT,RP,105102 * FLOATING POINT .TFXD,RP,105106 .TFTS,RP,105122 .ITBL,RP,105122 .TFTD,RP,105126 * .VECT,RP,101460 VPIV,RP,101461 VABS,RP,101462 VSUM,RP,101463 VNRM,RP,101464 VDOT,RP,101465 VMAX,RP,101466 VMAB,RP,101467 VMIN,RP,101470 VMIB,RP,101471 VMOV,RP,101472 VSWP,RP,101473 .ERES,RP,101474 .ESEG,RP,101475 * VECTOR INSTRUCTION SET .VSET,RP,101476 .DVCT,RP,105460 DVPIV,RP,105461 DVABS,RP,105462 DVSUM,RP,105463 DVNRM,RP,105464 DVDOT,RP,105465 DVMAX,RP,105466 DVMAB,RP,105467 DVMIN,RP,105470 DVMIB,RP,105471 DVMOV,RP,105472 DVSWP,RP,105473 * TAN,RP,105320 SQRT,RP,105321 ALOG,RP,105322 ATAN,RP,105323 COS,RP,105324 SIN,RP,105325 EXP,RP,105326 * SCIENTIFIC INSTRUCTION SET ALOGT,RP,105327 TANH,RP,105330 DPOLY,RP,105331 /CMRT,RP,105332 /ATLG,RP,105333 .FPWR,RP,105334 .TPWR,RP,105335 * .DAD,RP,105014 .DSB,RP,105034 .DMP,RP,105054 .DDI,RP,105074 .DSBR,RP,105114 .DDIR,RP,105134 * DOUBLE INTEGER .DNG,RP,105203 .DIN,RP,105210 .DDE,RP,105211 .DIS,RP,105212 .DDS,RP,105213 .DCO,RP,105204 * DBLE,RP,105201 SNGL,RP,105202 .DFER,RP,105205 .XPAK,RP,105206 .BLE,RP,105207 .NGL,RP,105214 .XCOM,RP,105215 ..DCM,RP,105216 DDINT,RP,105217 .XFER,RP,105220 * FAST FORTRAN PROCESSOR .GOTO,RP,105221 ..MAP,RP,105222 .ENTR,RP,105223 .ENTP,RP,105224 .PWR2,RP,105225 .FLUN,RP,105226 $SETP,RP,105227 .PACK,RP,105230 .CFER,RP,105231 ..FCM,RP,105232 ..TCM,RP,105233 * Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVR32,D * EQT1: 7906/20 SYSTEM DISC 15,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 12,DVA65,X=7,T=240 +@ * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 16,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 17,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 20,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 22,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 23,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 24,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20 SUBCHANNEL 1 1,2 * LU11 - 7906/20 SUBCHANNEL 2 1,3 * LU12 - 7906/20 SUBCHANNEL 3 1,4 * LU13 - 7906/20 SUBCHANNEL 4 1,5 * LU14 - 7906/20 SUBCHANNEL 5 1,6 *N LU15 - 7906/20 SUBCHANNEL 6 1,7 * LU16 - 7920 SUBCHANNEL 7 1,8 * LU17 - 7920 SUBCHANNEL 8 1,9 * LU18 - 7920 SUBCHANNEL 9 0 * LU19 - RESERVED FOR 7925 DISC LUS 0 * LU20 - RESERVED FOR 7925 DISC LUS 0 * LU21 - RESERVED FOR 7925 DISC LUS 0 * LU22 - RESERVED FOR 7925 DISC LUS 0 * LU23 - RESERVED FOR 7925 DISC LUS 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * L&U55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 12,PRG,QUEUE * DS/1000 COMM. PORT #1 14,EQT,1 * 7906/20 SYSTEM DISC 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 16,EQT,6 * 2608A LINE PRINTER 17,EQT,7 * HPIB INTERFACE 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,EQT,8 * 7970B MAGNETIC TAPE UNIT 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 23,PRG,PRMPT * SPARE 12966A TERMINAL #1 24,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E 0.**0  + 02176-18007 2013 S C0122 &ANPS8 F-7925 ANSWER FILE             H0101 n&LFPS8::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #8 * ** NAME: &ANPS8 02176-10008 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRMS8::2073::4000 * ABSOLUTE SYSTEM FILE 7925 * TARGET DISC 14 * DISC CHANNEL 7925, 256, 0, 0, 2, 0, 8 * 0 7925, 256, 0, 2, 2, 0, 8 * 1 7925, 256, 0, 4, 4, 0, 8 * 2 7925, 256, 66, 4, 4, 0, 8 * 3 7925, 203, 132, 0, 4, 0, 5 * 4 7925, 203, 132, 4, 4, 0, 5 * 5 7925, 203, 184, 0, 4, 0, 5 * 6 7925, 203, 184, 4, 4, 0, 5 * 7 7925, 228, 0, 8, 1, 0, 8 * 8 7925, 400, 236, 0, 9, 0, 14 * 9 7925, 400, 282, 0, 9, 0, 14 * 10 7925, 228, 328, 0, 9, 0, 6 * 11 7925, 1024, 354, 0, 9, 0, 29 * 12 7925, 1024, 471, 0, 9, 0, 29 * 13 7925, 2048, 588, 0, 9, 0, 67 * 14 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 11 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE O*NE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVR32::32767 * 7906/7920/7925 DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%VLIB::2071 * VECTOR INSTRUCTION SET LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 F&E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040S * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * * F - SERIES RP LIST CONTINUES. * .FIXD,RP,105104 * SINGLE PRECISION .FLTD,RP,105124 * FLOATING POINT CONTINUED * .XADD,RP,105001 .XSUB,RP,105021 .XMPY,RP,105041 .XDIV,RP,105061 .XFXS,RP,105101 * EXTENDED PRECISION .DINT,RP,105101 * FLOATING POINT .XFXD,RP,105105 .XFTS,RP,105121 .IDBL,RP,105121 .XFTD,RP,105125 * .TADD,RP,105002 .TSUB,RP,105022 .TMPY,RP,105042 .TDIV,RP,105062 .TFXS,RP,105102 * DOUBLE PRECISION .TINT,RP,105102 * FLOATING POINT .TFXD,RP,105106 .TFTS,RP,105122 .ITBL,RP,105122 .TFTD,RP,105126 * .VECT,RP,101460 VPIV,RP,101461 VABS,RP,101462 VSUM,RP,101463 VNRM,RP,101464 VDOT,RP,101465 VMAX,RP,101466 VMAB,RP,101467 VMIN,RP,101470 VMIB,RP,101471 VMOV,RP,101472 VSWP,RP,101473 .ERES,RP,101474 .ESEG,RP,101475 * VECTOR INSTRUCTION SET .VSET,RP,101476 .DVCT,RP,105460 DVPIV,RP,105461 DVABS,RP,105462 DVSUM,RP,105463 DVNRM,RP,105464 DVDOT,RP,105465 DVMAX,RP,105466 DVMAB,RP,105467 DVMIN,RP,105470 DVMIB,RP,105471 DVMOV,RP,105472 DVSWP,RP,105473 * TAN,RP,105320 SQRT,RP,105321 ALOG,RP,105322 ATAN,RP,105323 COS,RP,105324 SIN,RP,105325 EXP,RP,105326 * SCIENTIFIC INSTRUCTION SET ALOGT,RP,105327 TANH,RP,105330 DPOLY,RP,105331 /CMRT,RP,105332 /ATLG,RP,105333 .FPWR,RP,105334 .TPWR,RP,105335 * .DAD,RP,105014 .DSB,RP,105034 .DMP,RP,105054 .DDI,RP,105074 .DSBR,RP,105114 .DDIR,RP,105134 * DOUBLE INTEGER .DNG,RP,105203 .DIN,RP,105210 .DDE,RP,105211 .DIS,RP,105212 .DDS,RP,105213 .DCO,RP,105204 * DBLE,RP,105201 SNGL,RP,105202 .DFER,RP,105205 .XPAK,RP,105206 .BLE,RP,105207 .NGL,RP,105214 .XCOM,RP,105215 ..DCM,RP,105216 DDINT,RP,105217 .XFER,RP,105220 * FAST FORTRAN PROCESSOR .GOTO,RP,105221 ..MAP,RP,105222 .ENTR,RP,105223 .ENTP,RP,105224 .PWR2,RP,105225 .FLUN,RP,105226 $SETP,RP,105227 .PACK,RP,105230 .CFER,RP,105231 ..FCM,RP,105232 ..TCM,RP,105233 * Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVR32,D * EQT1: 7906/20/25 SYSTEM DISC 15,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 16,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 17,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 20,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 22,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 23,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 24,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1  * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20/25 SUBCHANNEL 1 1,2 * LU11 - 7906/20/25 SUBCHANNEL 2 1,3 * LU12 - 7906/20/25 SUBCHANNEL 3 1,4 * LU13 - 7906/20/25 SUBCHANNEL 4 1,5 * LU14 - 7906/20/25 SUBCHANNEL 5 1,6 * LU15 - 7906/20/25 SUBCHANNEL 6 1,7 * LU16 - 7920/25 SUBCHANNEL 7 1,8 * LU17 - 7920/25 SUBCHANNEL 8 1,9 * LU18 - 7920/25 SUBCHANNEL 9 1,10 * LU19 - 7925 SUBCHANNEL 10 1,11 * LU20 - 7925 SUBCHANNEL 11 1,12 * LU21 - 7925 SUBCHANNEL 12 1,13 * LU22 - 7925 SUBCHANNEL 13 1,14 * LU23 - 7925 SUBCHANNEL 14 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 G * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 12,PRG,QUEUE * DS/1000 COMM. PORT #1 14,EQT,1 * 7906/20/25 SYSTEM DISC 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 16,EQT,6 * 2608A LINE PRINTER 17,EQT,7 * HPIB INTERFACE 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,EQT,8 * 7970B MAGNETIC TAPE UNIT 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 23,PRG,PRMPT * SPARE 12966A TERMINAL #1 24,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26 T0.*,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E 0  , 02176-18009 2013 S C0122 &ANPS9 E-06/20H ANSWER FILE             H0101 &LFPS9::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #9 * ** NAME: &ANPS9 02176-18009 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRMS9::2073::4000 * ABSOLUTE SYSTEM FILE 7906H * TARGET DISC 13 * DISC CHANNEL 7906H, 256, 0, 0, 2, 0, 8 * 0 7906H, 203, 132, 0, 2, 0, 5 * 1 7906H, 203, 236, 0, 2, 0, 5 * 2 7906H, 138, 340, 0, 2, 0, 4 * 3 7906H, 203, 0, 2, 1, 0, 5 * 4 7906H, 198, 208, 2, 1, 0, 5 * 5 7906H, 400, 0, 3, 1, 0, 11 * 6 7920H, 400, 0, 4, 1, 0, 11 * 7 7920H,1024, 411, 0, 5, 0, 26 * 8 7920H, 985, 621, 0, 5, 0, 25 * 9 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07y::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVA32::32767 * 7906H/7920H/7925H DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * Z$DBL,RP,3 * 3 WORD FLOATING POINT * *DBLE,RP,105201 *SNGL,RP,105202 *.XMPY,RP,105203 *.XDIV,RP,105204 *.DFER,RP,105205 *.XADD,RP,10iO5213 *.XSUB,RP,105214 *.GOTO,RP,105221 *..MAP,RP,105222 *.ENTR,RP,105223 *.ENTP,RP,105224 *.PWR2,RP,105225 *.CFER,RP,105231 * FFP (OPTIONAL) *.FLUN,RP,105226 *$SETP,RP,105227 *.PACK,RP,105230 *.XFER,RP,105220 *.XPAK,RP,105206 *XADD,RP,105207 *XSUB,RP,105210 *XMPY,RP,105211 *XDIV,RP,105212 *.XCOM,RP,105215 *..DCM,RP,105216 *DDINT,RP,105217 * /E * * EQUIPMENT TABLE ENTRIES * 13,DVA32,D * EQT1: 7906/20 SYSTEM DISC 14,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 11,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 15,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 16,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 17,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 21,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 22,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 23,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,`1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20 SUBCHANNEL 1 1,2 * LU11 - 7906/20 SUBCHANNEL 2 1,3 * LU12 - 7906/20 SUBCHANNEL 3 1,4 * LU13 - 7906/20 SUBCHANNEL 4 1,5 * LU14 - 7906/20 SUBCHANNEL 5 1,6 * LU15 - 7906/20 SUBCHANNEL 6 1,7 * LU16 - 7920 SUBCHANNEL 7 1,8 * LU17 - 7920 SUBCHANNEL 8 1,9 * LU18 - 7920 SUBCHANNEL 9 0 * LU19 - RESERVED FOR 7925 DISC LUS 0 * LU20 - RESERVED FOR 7925 DISC LUS 0 * LU21 - RESERVED FOR 7925 DISC LUS 0 * LU22 - RESERVED FOR 7925 DISC LUS 0 * LU23 - RESERVED FOR 7925 DISC LUS 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18  * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 13,EQT,1 * 7906/20 SYSTEM DISC 14,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 15,EQT,6 * 2608A LINE PRINTER 16,EQT,7 * HPIB INTERFACE 17,EQT,8 * 7970B MAGNETIC TAPE UNIT 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 22,PRG,PRMPT * SPARE 12966A TERMINAL #1 23,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF Bę*($LANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E &*  , 02176-18011 2013 S C0122 &ANP10 E-7925H ANSWER FILE             H0101 &LFP10::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #10 * ** NAME: &ANP10 02176-18011 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRM10::2073::4000 * ABSOLUTE SYSTEM FILE 7925H * TARGET DISC 13 * DISC CHANNEL 7925H, 256, 0, 0, 2, 0, 8 * 0 7925H, 256, 0, 2, 2, 0, 8 * 1 7925H, 256, 0, 4, 4, 0, 8 * 2 7925H, 256, 66, 4, 4, 0, 8 * 3 7925H, 203, 132, 0, 4, 0, 5 * 4 7925H, 203, 132, 4, 4, 0, 5 * 5 7925H, 203, 184, 0, 4, 0, 5 * 6 7925H, 203, 184, 4, 4, 0, 5 * 7 7925H, 228, 0, 8, 1, 0, 8 * 8 7925H, 400, 236, 0, 9, 0, 14 * 9 7925H, 400, 282, 0, 9, 0, 14 * 10 7925H, 228, 328, 0, 9, 0, 6 * 11 7925H,1024, 354, 0, 9, 0, 29 * 12 7925H,1024, 471, 0, 9, 0, 29 * 13 7925H,2048, 588, 0, 9, 0, 67 * 14 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 10 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 Ů * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVA32::32767 * 7906H/7920H/7925H DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 p_ * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RPbI,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * Z$DBL,RP,3 * 3 WORD FLOATING POINT * *DBLE,RP,105201 *SNGL,RP,105202 *.XMPY,RP,105203 *.XDIV,RP,105204 *.DFER,RP,105205 *.XADD,RP,105213 *.XSUB,RP,105214 *.GOTO,RP,105221 *..MAP,RP,105222 *.ENTR,RP,105223 *.ENTP,RP,105224 *.PWR2,RP,105225 *.CFER,RP,105231 * FFP (OPTIONAL) *.FLUN,RP,105226 *$SETP,RP,105227 *.PACK,RP,105230 *.XFER,RP,105220 *.XPAK,RP,105206 *XADD,RP,105207 *XSUB,RP,105210 *XMPY,RP,105211 *XDIV,RP,105212 *.XCOM,RP,105215 *..DCM,RP,105216 *DDINT,RP,105217 * /E * * EQUIPMENT TABLE ENTRIES * 13,DVA32,D * EQT1: 7906/20/25 SYSTEM DISC 14,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 11,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 15,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 16,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 17,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 21,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 22,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 23,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** *  * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20/25 SUBCHANNEL 1 1,2 * LU11 - 7906/20/25 SUBCHANNEL 2 1,3 * LU12 - 7906/20/25 SUBCHANNEL 3 1,4 * LU13 - 7906/20/25 SUBCHANNEL 4 1,5 * LU14 - 7906/20/25 SUBCHANNEL 5 1,6 * LU15 - 7906/20/25 SUBCHANNEL 6 1,7 * LU16 - 7920/25 SUBCHANNEL 7 1,8 * LU17 - 7920/25 SUBCHANNEL 8 1,9 * LU18 - 7920/25 SUBCHANNEL 9 1,10 * LU19 - 7925 SUBCHANNEL 10 1,11 * LU20 - 7925 SUBCHANNEL 11 1,12 * LU21 - 7925 SUBCHANNEL 12 1,13 * LU22 - 7925 SUBCHANNEL 13 1,14 * LU23 - 7925 SUBCHANNEL 14 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 E * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINT READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 11,PRG,QUEUE * DS/1000 COMM. PORT #1 13,EQT,1 * 7906/20/25 SYSTEM DISC 14,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 15,EQT,6 * 2608A LINE PRINTER 16,EQT,7 * HPIB INTERFACE 17,EQT,8 * 7970B MAGNETIC TAPE UNIT 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 22,PRG,PRMPT * SPARE 12966A TERMINAL #1 23,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTER*($S 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E ^* ! - 02177-18001 2013 S C0122 &ANP11 F-06/20H ANSWER FILE             H0101 &LFP11::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #11 * ** NAME: &ANP11 02177-18001 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRM11::2073::4000 * ABSOLUTE SYSTEM FILE 7906H * TARGET DISC 14 * DISC CHANNEL 7906H, 256, 0, 0, 2, 0, 8 * 0 7906H, 203, 132, 0, 2, 0, 5 * 1 7906H, 203, 236, 0, 2, 0, 5 * 2 7906H, 138, 340, 0, 2, 0, 4 * 3 7906H, 203, 0, 2, 1, 0, 5 * 4 7906H, 198, 208, 2, 1, 0, 5 * 5 7906H, 400, 0, 3, 1, 0, 11 * 6 7920H, 400, 0, 4, 1, 0, 11 * 7 7920H,1024, 411, 0, 5, 0, 26 * 8 7920H, 985, 621, 0, 5, 0, 25 * 9 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 11 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07%i::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVA32::32767 * 7906H/7920H/7925H DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%VLIB::2071 * VECTOR INSTRUCTION SET LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::32767 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::Wv32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 F&E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS DOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * * F - SERIES RP LIST CONTINUES. * .FIXD,RP,105104 * SINGLE PRECISION .FLTD,RP,105124 # * FLOATING POINT CONTINUED * .XADD,RP,105001 .XSUB,RP,105021 .XMPY,RP,105041 .XDIV,RP,105061 .XFXS,RP,105101 * EXTENDED PRECISION .DINT,RP,105101 * FLOATING POINT .XFXD,RP,105105 .XFTS,RP,105121 .IDBL,RP,105121 .XFTD,RP,105125 * .TADD,RP,105002 .TSUB,RP,105022 .TMPY,RP,105042 .TDIV,RP,105062 .TFXS,RP,105102 * DOUBLE PRECISION .TINT,RP,105102 * FLOATING POINT .TFXD,RP,105106 .TFTS,RP,105122 .ITBL,RP,105122 .TFTD,RP,105126 * .VECT,RP,101460 VPIV,RP,101461 VABS,RP,101462 VSUM,RP,101463 VNRM,RP,101464 VDOT,RP,101465 VMAX,RP,101466 VMAB,RP,101467 VMIN,RP,101470 VMIB,RP,101471 VMOV,RP,101472 VSWP,RP,101473 .ERES,RP,101474 .ESEG,RP,101475 * VECTOR INSTRUCTION SET .VSET,RP,101476 .DVCT,RP,105460 DVPIV,RP,105461 DVABS,RP,105462 DVSUM,RP,105463 DVNRM,RP,105464 DVDOT,RP,105465 DVMAX,RP,105466 DVMAB,RP,105467 DVMIN,RP,105470 DVMIB,RP,105471 DVMOV,RP,105472 DVSWP,RP,105473 * TAN,RP,105320 SQRT,RP,105321 ALOG,RP,105322 ATAN,RP,105323 COS,RP,105324 SIN,RP,105325 EXP,RP,105326 * SCIENTIFIC INSTRUCTION SET ALOGT,RP,105327 TANH,RP,105330 DPOLY,RP,105331 /CMRT,RP,105332 /ATLG,RP,105333 .FPWR,RP,105334 .TPWR,RP,105335 * .DAD,RP,105014 .DSB,RP,105034 .DMP,RP,105054 .DDI,RP,105074 .DSBR,RP,105114 .DDIR,RP,105134 * DOUBLE INTEGER .DNG,RP,105203 .DIN,RP,105210 .DDE,RP,105211 .DIS,RP,105212 .DDS,RP,105213 .DCO,RP,105204 * DBLE,RP,105201 SNGL,RP,105202 .DFER,RP,105205 .XPAK,RP,105206 .BLE,RP,105207 .NGL,RP,105214 .XCOM,RP,105215 ..DCM,RP,105216 DDINT,RP,105217 .XFER,RP,105220 * FAST FORTRAN PROCESSOR .GOTO,RP,105221 ..MAP,RP,105222 .ENTR,RP,105223 .ENTP,RP,105224 .PWR2,RP,105225 .FLUN,RP,105226 $SETP,RP,105227 .PACK,RP,105230 .CFER,RP,105231 ..FCM,RP,105232 ..TCM,RP,105233 * Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVA32,D * EQT1: 7I906/20 SYSTEM DISC 15,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 16,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 17,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 20,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 22,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 23,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 24,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20 SUBCHANNEL 1 1,2 * LU11 - 7906/20 SUBCHANNEL 2 1,3 * LU12 - 7906/20 SUBCHANNEL 3 1,4 ST * LU13 - 7906/20 SUBCHANNEL 4 1,5 * LU14 - 7906/20 SUBCHANNEL 5 1,6 * LU15 - 7906/20 SUBCHANNEL 6 1,7 * LU16 - 7920 SUBCHANNEL 7 1,8 * LU17 - 7920 SUBCHANNEL 8 1,9 * LU18 - 7920 SUBCHANNEL 9 0 * LU19 - RESERVED FOR 7925 DISC LUS 0 * LU20 - RESERVED FOR 7925 DISC LUS 0 * LU21 - RESERVED FOR 7925 DISC LUS 0 * LU22 - RESERVED FOR 7925 DISC LUS 0 * LU23 - RESERVED FOR 7925 DISC LUS 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17 * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 12,PRG,QUEUE * DS/1000 COMM. PORT #1 14,EQT,1 * 7906/20 SYSTEM DISC 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 16,EQT,6 * 2608A LINE PRINTER 17,EQT,7 * HPIB INTERFACE 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,EQT,8 * 7970B MAGNETIC TAPE UNIT 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 23,PRG,PRMPT * SPARE 12966A TERMINAL #1 24,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLANK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E C0.**0 " / 02177-18003 2013 S C0122 &ANP12 F-7925H ANSWER FILE             H0101 &LFP12::2073 * LIST FILE ************************************************** * * * PRIMARY SYSTEM #12 * ** NAME: &ANP12 02177-18003 REV.2013 800317 * ** PGMR: JOE SEARLE * * * ************************************************** YES * ECHO ON !PRM12::2073::4000 * ABSOLUTE SYSTEM FILE 7925H * TARGET DISC 14 * DISC CHANNEL 7925H, 256, 0, 0, 2, 0, 8 * 0 7925H, 256, 0, 2, 2, 0, 8 * 1 7925H, 256, 0, 4, 4, 0, 8 * 2 7925H, 256, 66, 4, 4, 0, 8 * 3 7925H, 203, 132, 0, 4, 0, 5 * 4 7925H, 203, 132, 4, 4, 0, 5 * 5 7925H, 203, 184, 0, 4, 0, 5 * 6 7925H, 203, 184, 4, 4, 0, 5 * 7 7925H, 228, 0, 8, 1, 0, 8 * 8 7925H, 400, 236, 0, 9, 0, 14 * 9 7925H, 400, 282, 0, 9, 0, 14 * 10 7925H, 228, 328, 0, 9, 0, 6 * 11 7925H,1024, 354, 0, 9, 0, 29 * 12 7925H,1024, 471, 0, 9, 0, 29 * 13 7925H,2048, 588, 0, 9, 0, 67 * 14 /E 0 * SYSTEM SUBCHANNEL NO * NO AUX DISC 11 * TBG 0 * NO PRIV. INT. YES * MR ACCESS TA II YES * RT MEMORY LOCK YES * BG MEMORY LOCK 50 * SWAP DELAY 64 * MEM SIZE 0 ƹ * NO BOOT FILE MAP MODULES LINKS IN CURRENT * * RTE-IVB OPERATING SYSTEM * REL,%CR4S1::32767 * CENTRAL SYSTEM MODULE ONE REL,%CR4S2::32767 * CENTRAL SYSTEM MODULE TWO * * I/O DRIVERS * REL,%DVR00::32767 * RS232 TERMINALS REL,%DVA05::32767 * 2645/2648 SYSTEM CONSOLE REL,%DVR07::2071 * MULTIPOINT REL,%DVA12::32767 * 2613,2617,2818,2631 LINE PRINTERS REL,%DVB12::32767 * 2608 LINE PRINTER REL,%DVZ12::2071 * 2608 GRAPHICS/1000 PLOTTER REL,%DVR23::32767 * 7970 MAGNETIC TAPE UNIT REL,%DVA32::32767 * 7906H/7920H/7925H DISC REL,%2DV37::32767 * 59310B HPIB INSTRUMENT INTERFACE REL,%4DP43::32767 * POWER FAIL REL,%DVA65::2071 * DS/1000 * * MEMORY RESIDENT LIBRARY & SSGA * REL,%BAMLB::2071 * BASIC MEMORY RESIDENT LIBRARY REL,%RD.TB::2071 * IMAGE MODULE * * MEMORY RESIDENT PROGRAMS * REL,%AUTO7::2071 * MULTI-POINT AUTO RESTART REL,%QUEUE::2071 * DS/1000 REL,%SRQ.P::32767 * BASIC/HPIB SRQ PROGRAM * * LIBRARIES * REL,%BMPG3::32767 * RTE-IV FILE MANAGEMENT PACKAGE REL,$MLIB1::32767 * RTE IVB MATH LIBRARY 1 REL,$MLIB2::32767 * RTE IVB MATH LIBRARY 2 REL,%4SYLB::32767 * RTE-IV SYSTEM LIBRARY REL,%IB4A::32767 * HPIB LIBRARY REL,%DBMS1::2071 * IMAGE LIBRARY (LOCAL ONLY) REL,%DECAR::32767 * DECIMAL STRING ARITHMETIC LIBRARY REL,%BASLB::2071 * BASIC SUBROUTINE LIBRARY REL,%TSKSC::2071 * BASIC TASK SCHEDULER LIBRARY REL,%BAIMX::2071 * BASIC IMAGE LIBRARY REL,%MPLIB::2071 * MULTI-POINT LIBRARY REL,%DSLB1::2071 * DS/1000 LIBRARY REL,%DSLB2::2071 * DS/1000 LIBRARY REL,%DSLB3::2071 * DS/1000 LIBRARY REL,%VLIB::2071 * VECTOR INSTRUCTION SET LIBRARY REL,%DBUGR::32767 * DEBUG LIBRARY REL,%CLIB::327467 * RTE COMPILER LIBRARY REL,%UTLIB::32767 * SM UTILITY LIBRARY REL,$LDRLB::32767 * LOADER LIBRARY * * FILE MANAGER SYSTEM * REL,%BMPG1::32767 * RTE-IVB SESSION MONITOR (FMGR) REL,%BMPG2::32767 * RTE-IVB DIRECTORY MANAGER (D.RTR) * * SESSION MONITOR SYSTEM * REL,%SMON1::32767 * LOGON,LGOFF,PRMPT,R$PN$,SYCOM REL,%SMON2::32767 * SM LIB, $SALC, $CNMD REL,%ACCTS::32767 * ACCOUNT MAINTENANCE * * UTILITIES * REL,%T5IDM::32767 * TYPE 5 ID SEGMENT MANAGER REL,%$CNFX::32767 * CONFIGURATOR EXTENSION REL,%4LDR::32767 * RTE-IV LOADER REL,%WHZAT::32767 * WHAT'S HAPPENING PROGRAM REL,%READT::32767 * DISC CARTRIDGE RESTORE REL,%WRITT::32767 * DISC CARTRIDGE SAVE /E WHZAT,3,41 * BG, PRI=41 D.RTR,2,1 * RT, PRI=1 AUTOR,4,10 * BG NOTAII, PRI=10 PRMPT,1,10 * MEM RES, PRI = 10 R$PN$,1,10 * MEM RES, PRI = 10 RD.TB,30 * SSGA TTYEV,17 * MEM RES WITH RT COMMON & SSGA ACCESS TRAP,30 * SSGA LOADR,3,89 * BG, PRI = 89 /E ************************************************************ * * * HP1000 F&E SERIES PROCESSOR MICROCODE * * * * REV. 1926 (06/05/78) * * * ************************************************************ * * E&F - SERIES RP LIST FOLLOWS. * .DLD,RP,104200 .DST,RP,104400 * EXTENDED ARITHMETIC .MPY,RP,100200 * MEMORY REFERENCE. .DIV,RP,100400 * .MVW,RP,105777 .CMW,RP,105776 * BYTE & WORD .LBT,RP,105763 * MANIPULATION .SBT,RP,105764 .MBT,RP,105765 CLRIO,RP,2001 * QUERY NEEDS THIS /qDOS ROUTINE .CBT,RP,105766 * .EMAP,RP,105257 .EMIO,RP,105240 * EXTENDED MEMORY AREA MMAP,RP,105241 * .FAD,RP,105000 .FSB,RP,105020 .FMP,RP,105040 * SINGLE PRECISION .FDV,RP,105060 * FLOATING POINT IFIX,RP,105100 FLOAT,RP,105120 * * F - SERIES RP LIST CONTINUES. * .FIXD,RP,105104 * SINGLE PRECISION .FLTD,RP,105124 * FLOATING POINT CONTINUED * .XADD,RP,105001 .XSUB,RP,105021 .XMPY,RP,105041 .XDIV,RP,105061 .XFXS,RP,105101 * EXTENDED PRECISION .DINT,RP,105101 * FLOATING POINT .XFXD,RP,105105 .XFTS,RP,105121 .IDBL,RP,105121 .XFTD,RP,105125 * .TADD,RP,105002 .TSUB,RP,105022 .TMPY,RP,105042 .TDIV,RP,105062 .TFXS,RP,105102 * DOUBLE PRECISION .TINT,RP,105102 * FLOATING POINT .TFXD,RP,105106 .TFTS,RP,105122 .ITBL,RP,105122 .TFTD,RP,105126 * .VECT,RP,101460 VPIV,RP,101461 VABS,RP,101462 VSUM,RP,101463 VNRM,RP,101464 VDOT,RP,101465 VMAX,RP,101466 VMAB,RP,101467 VMIN,RP,101470 VMIB,RP,101471 VMOV,RP,101472 VSWP,RP,101473 .ERES,RP,101474 .ESEG,RP,101475 * VECTOR INSTRUCTION SET .VSET,RP,101476 .DVCT,RP,105460 DVPIV,RP,105461 DVABS,RP,105462 DVSUM,RP,105463 DVNRM,RP,105464 DVDOT,RP,105465 DVMAX,RP,105466 DVMAB,RP,105467 DVMIN,RP,105470 DVMIB,RP,105471 DVMOV,RP,105472 DVSWP,RP,105473 * TAN,RP,105320 SQRT,RP,105321 ALOG,RP,105322 ATAN,RP,105323 COS,RP,105324 SIN,RP,105325 EXP,RP,105326 * SCIENTIFIC INSTRUCTION SET ALOGT,RP,105327 TANH,RP,105330 DPOLY,RP,105331 /CMRT,RP,105332 /ATLG,RP,105333 .FPWR,RP,105334 .TPWR,RP,105335 * .DAD,RP,105014 .DSB,RP,105034 .DMP,RP,105054 .DDI,RP,105074 .DSBR,RP,105114 .DDIR,RP,105134 * DOUBLE INTEGER .DNG,RP,105203 .DIN,RP,105210 .DDE,RP,105211 .DIS,RP,105212 .DDS,RP,105213 .DCO,RP,105204 * DBLE,RP,105201 SNGL,RP,105202 .DFER,RP,105205 .XPAK,RP,105206 .BLE,RP,105207 .NGL,RP,105214 .XCOM,RP,105215 ..DCM,RP,105216 DDINT,RP,105217 .XFER,RP,105220 * FAST FORTRAN PROCESSOR .GOTO,RP,105221 ..MAP,RP,105222 .ENTR,RP,105223 .ENTP,RP,105224 .PWR2,RP,105225 .FLUN,RP,105226 $SETP,RP,105227 .PACK,RP,105230 .CFER,RP,105231 ..FCM,RP,105232 ..TCM,RP,105233 * Z$DBL,RP,3 * 3 WORD FLOATING POINT /E * * EQUIPMENT TABLE ENTRIES * 14,DVA32,D * EQT1: 7906/20/25 SYSTEM DISC 15,DVA05,B,X=13,T=5000 * EQT2: 12966A TERMINAL TYPE 12,DVA65,X=7,T=240 * EQT3: DS/1000 COMM. PORT 1 60,DVA65,X=7,T=240 * EQT4: DS/1000 COMM. PORT 2 64,DVA12,B,T=6000 * EQT5: 2613 - 2635 LINE PRINTER 16,DVB12,B,X=5 * EQT6: 2608 LINE PRINTER 17,DVR37,X=74,T=6000 * EQT7: HPIB INTERFACE (8 AUTO ADDR DEVICES) 20,DVR23,D,B * EQT8: 7970B MAGNETIC TAPE UNIT 22,DVR07,X=5 * EQT9: MULTI-POINT INTERFACE CARD 71,DVR07,X=5 * EQT10: MULTI-POINT TERMINAL #1 71,DVR07,X=5 * EQT11: MULTI-POINT TERMINAL #2 71,DVR07,X=5 * EQT12: MULTI-POINT TERMINAL #3 71,DVR07,X=5 * EQT13: MULTI-POINT TERMINAL #4 23,DVA05,B,X=13,T=6000 * EQT14: SPARE 264X TERMINAL 24,DVA05,B,X=13,T=6000 * EQT15: SPARE 264X TERMINAL 61,DVA05,B,X=13,T=6000 * EQT16: SPARE 264X TERMINAL 62,DVR00,B,T=6000 * EQT17: SPARE RS232 TERMINAL 72,DVZ12 * EQT18: GRAPHICS PRINTER 4,DVP43,M * EQT19: POWER FAIL /E * ***************************************************** * * * DEVICE REFERENCE TABLE ENTRIES * * * ***************************************************** * 2,0 * LU1 - 2645/2648 SYSTEM CONSOLE 1,0 * LU2 - 7906/20 SYS. DISC, SUBCHANNEL 0 0 * LU3 - RESERVED 2,1 * LU4 - CTU-LEFT SYSTEM CONSOLE 2,2 * LU5 - CTU-RIGHT SYSTEM "CONSOLE 6 * LU6 - 2608A LINE PRINTER 0 * LU7 - SPARE 8 * LU8 - 7970B MAGNETIC TAPE UNIT 3,1 * LU9 - DS/1000 COMM. PORT #1 (HARDWIRED) 1,1 * LU10 - 7906/20/25 SUBCHANNEL 1 1,2 * LU11 - 7906/20/25 SUBCHANNEL 2 1,3 * LU12 - 7906/20/25 SUBCHANNEL 3 1,4 * LU13 - 7906/20/25 SUBCHANNEL 4 1,5 * LU14 - 7906/20/25 SUBCHANNEL 5 1,6 * LU15 - 7906/20/25 SUBCHANNEL 6 1,7 * LU16 - 7920/25 SUBCHANNEL 7 1,8 * LU17 - 7920/25 SUBCHANNEL 8 1,9 * LU18 - 7920/25 SUBCHANNEL 9 1,10 * LU19 - 7925 SUBCHANNEL 10 1,11 * LU20 - 7925 SUBCHANNEL 11 1,12 * LU21 - 7925 SUBCHANNEL 12 1,13 * LU22 - 7925 SUBCHANNEL 13 1,14 * LU23 - 7925 SUBCHANNEL 14 9 * LU24 - MULTI-POINT INTERFACE 10 * LU25 - MULTI-POINT TERMINAL #1 11 * LU26 - MULTI-POINT TERMINAL #2 12 * LU27 - MULTI-POINT TERMINAL #3 13 * LU28 - MULTI-POINT TERMINAL #4 4,1 * LU29 - DS/1000 COMM. PORT #2 (HARDWIRED) 7,0 * LU30 - 59310B HPIB INTERFACE 7,1 * LU31 - HPIB ADDRESS 1 7,2 * LU32 - HPIB ADDRESS 2 7,3 * LU33 - HPIB ADDRESS 3 7,4 * LU34 - HPIB ADDRESS 4 7,5 * LU35 - HPIB ADDRESS 5 7,6 * LU36 - HPIB ADDRESS 6 7,7 * LU37 - HPIB ADDRESS 7 7,8 * LU38 - HPIB ADDRESS 8 7,9 * LU39 - HPIB ADDRESS 9 7,10 * LU40 - HPIB ADDRESS 10 7,11 * LU41 - HPIB ADDRESS 11 7,12 * LU42 - HPIB ADDRESS 12 7,13 * LU43 - HPIB ADDRESS 13 7,14 * LU44 - HPIB ADDRESS 14 18 * LU45 - GRAPHICS/1000 PRINTER 19 * LU46 - POWER FAIL 17  * LU47 - SPARE RS232 TERMINAL 14,0 * LU48 - SPARE 12966A TERMINAL #1 14,1 * LU49 - SPARE 12966A TERMINAL - LEFT CTU 14,2 * LU50 - SPARE 12966A TERMINAL - RIGHT CTU 15,0 * LU51 - SPARE 12966A TERMINAL #2 15,1 * LU52 - SPARE 12966A TERMINAL - LEFT CTU 15,2 * LU53 - SPARE 12966A TERMINAL - RIGHT CTU 16,0 * LU54 - SPARE 12966A TERMINAL #3 16,1 * LU55 - SPARE 12996A TERMINAL - LEFT CTU 16,2 * LU56 - SPARE 12966A TERMINAL - RIGHT CTU 6,3 * LU57 - 2608A LINE PRINTER READ BACK 0 * LU58 - SPARE 0 * LU59 - SPARE 0 * LU60 - SPARE 0 * LU61 - SPARE 0 * LU62 - SPARE 0 * LU63 - SPARE /E * * INTERRUPT TABLE ENTRIES * 4,ENT,$POWR * POWER FAIL 12,PRG,QUEUE * DS/1000 COMM. PORT #1 14,EQT,1 * 7906/20/25 SYSTEM DISC 15,PRG,PRMPT * 2645/48 SYSTEM CONSOLE 16,EQT,6 * 2608A LINE PRINTER 17,EQT,7 * HPIB INTERFACE 20,EQT,8 * 7970B MAGNETIC TAPE UNIT 21,EQT,8 * 7970B MAGNETIC TAPE UNIT 22,PRG,PRMPT * 12790A MULTI-POINT INTERFACE 23,PRG,PRMPT * SPARE 12966A TERMINAL #1 24,PRG,PRMPT * SPARE 12966A TERMINAL #2 60,PRG,QUEUE * DS/1000 COMM. PORT #2 61,PRG,PRMPT * POINT-TO-POINT INTERFACE (12966A) 62,PRG,PRMPT * RS232 TERMINAL 64,EQT,5 * 2613/14/31 LINE PRINTERS 71,ABS,0 * MULTI-POINT TERMINALS /E * 2 * CHANGE DP SIZE 0 * RT COMMON CHANGE 0 * BG COMMON CHANGE 16 * # OF I/O CLASSES 16 * # OF LU MAPPINGS 16 * # OF RESOURCE NUMBERS 100,400 * BUFFER LIMITS 20 * # OF BLANK ID SEGMENTS 15 * # OF BLANK SHORT ID SEGMENTS 5 * # OF BLA0.*NK ID EXTENSIONS 16 * MAX NUMBER OF PARTITIONS * * PARTITION DEFINITION * 0 * CHANGE 1ST PART PG? 26,BG /E * * PROGRAM PAGE MODIFICATIONS * LOADR,17 WRITT,17 READT,17 /E * * PROGRAM PARTITION ASSIGNMENTS * /E /E /E l0 # 0 02313-18001 A S C0206 2313B RTE DRIVER, DVR62D (MAPPED RTE SYSTEMS ONLY)             H0102 ASMB,R,L,C HED DVR62D -- 2313B DRIVER FOR RTE SYSTEMS WITH DMS * NAME: DVR62D * SOURCE: 02313-18001 REV.A * RELOC: 02313-16001 REV.A * PGMR: RHB * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975. 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. * * *************************************************************** * NAM DVR62D 02313-16001 REV.A 750505 ENT I.62,C.62 EXT $XDMP SET USER MAP ROUTINE *X* EXT $LPSA LAST PAGE OF S.A.M. *X* EXT $MPFT FENCE TABLE USED TO FIND *X* * LOWEST LEGAL BUFFER ADDR SPC 2 * EXTENDED MEMORY VERSION SPC 2 * THIS DRIVER OPERATES THE 2313B SUBSYSTEM IN THE RTE-III * ENVIRONMENT. IT REQUIRES THE USE OF INTERFACE ROUTINES * TO SIMPLIFY OPERATION. IT CAN, HOWEVER, BE CALLED * DIRECTLY BY AN EXEC CALL IF THE USER FOLLOWS THE * FOLLOWING FORMAT: * * FORTRAN: CALL EXEC(ICODE,ICNWD,IQUE,N) * * FOR RTE VERSIONS WHICH SUPPORT CLASS I/O A CLASS I/O * EXEC CALL CAN BE MADE IN THE FORMAT: * * FORTRAN: CALL EXEC(ICOD,ICNWD,IQUE,NWORD,N,IPRM,ICLAS) * * * ASSEMBLY: * (NORMAL) (CLASS I/O) * * EXT EXEC EXT EXEC * . . * : . * JSB EXEC JSB EXEC * DEF *+5 DEF *+8 * DEF ICODE DEF ICOD WRITE REQUEST * DEF ICNWD DEF ICNWD * DEF IQUE DEF IQUE * DEF N DEF NWORD SEE NOTE BELOW * DEF N * DEF IPRM (PARAMETER PLACE HOLDER) * DEF ICLASSl * * . * : * * WHERE: * * ICODE=2 (NORMAL CALLS ASSUME WRITE PATH) * ICOD =18(CLASS CALLS ASSUME WRITE PATH) * ICNWD=BITS 0-5 ARE THE LOGICAL UNIT # * BIT 6 IS 1 TO SPECIFY DMA NEEDED * (NOT USED FOR REMOTE,I.E.,SUBCHANNEL 1 - SEE BELOW) * IQUE=ADDRESS OF QUEUE BUFFER CONTAINING * ALL OPERATIONS * N=NUMBER OF "ENTRIES" IN IQUE * NWORD=NUMBER OF WORDS IN QUEUE BUFFER ONLY. NOTE THAT ANY * BUFFER POINTED TO BY THE QUEUE BUFFER MUST NOT BE * IN A DISK RESIDENT AREA. IN ADDITION, NO BUFFER * POINTER IN THE QUEUE BUFFER SHOULD POINT TO AN AREA * INCLUDED IN THE QUEUE BUFFER WORDS (NWORDS). THE * QUEUE BUFFER WILL BE MOVED TO SYSTEM MEMORY, AND * ANY POINTERS TO DATA BUFFERS IN THE QUEUE BUFFER WILL * NOT BE RELOCATED TO POINT TO NEW LOCATION OF QUEUE * BUFFER IN SYSTEM MEMORY. IF QUEUE BUFFER * CONTAINS POINTERS TO ELSEWHERE IN QUEUE BUFFER * THESE POINTERS WILL NOT BE ADJUSTED WHEN THE * QUEUE BUFFER IS MOVED TO SYSTEM MEMORY. * IPRM =A PARAMETER PLACE HOLDER * ICLAS=CLASS NUMBER * * * IQUE CONTAINS A NUMBER OF MULTIPLE WORD ENTRIES * WHICH DEFINE OPERATIONS. MOST PRACTICAL USES OF * THE 2313B WILL REQUIRE MORE THAN ONE OPERATION. * ALL OPERATIONS IN IQUE ARE EXECUTED IN ONE CALL * TO THE DRIVER. THIS METHOD PREVENTS ANOTHER * PROGRAM FROM CHANGING SUB-SYSTEM PARAMETERS * DURING RELATED OPERATIONS. SPC 2 * ONE WORD ENTRIES: * * TYPE = 1 ISSUE SYSTEM NORMALIZE (NO DMA) * * TYPE = 2 ISSUE 2930A LOOP ESCAPE (NO DMA) * * THREE WORD ENTRIES: * * TYPE = 3 OUTPUT NUMB WORDS (DMA AVAILABLE - LOCAL ONLY) * NUMB = NUMBER TO OUTPUT * BUFF = ADDRESS OF OUTPUT BUFFER * * TYPE = 4 INPUT NUMB WORDS (DMA AVAI)LABLE - LOCAL ONLY) * NUMB = NUMBER TO INPUT * BUFF = ADDRESS OF INPUT BUFFER * * FOUR WORD ENTRIES: * * TYPE = 5 OUTPUT THEN INPUT NUMB PAIRS (NO DMA) * NUMB = NUMBER OF OUT-IN PAIRS * OBUF = ADDRESS OF OUTPUT BUFFER * IBUF = ADDRESS OF INPUT BUFFER * * TYPE = 6 OUTPUT NUMB ADRS THEN DATA PAIRS (NO DMA) * NUMB = NUMBER OF OUT-OUT PAIRS * OBF1 = ADDRESS OF CHANNEL BUFFER * OBF2 = ADDRESS OF DATA BUFFER * * TYPE = 7 OUTPUT NUMB CHAN THEN DATA PAIRS (NO DMA) * NUMB = NUMBER OF DATA POINTS TO OUTPUT * CHAN = ADDRESS OF THE CHANNEL NUMBER * OBUF = ADDRESS OF DATA BUFFER * * TYPE = 8 OUTPUT NUMB DATA POINTS SEQUENTIALLY (NO DMA) * NUMB = NUMBER OF DATA POINTS TO OUTPUT * OBF1 = ADDRESS OF 2 WORD BUFF CONTAINING START & END CHAN * OBF2 = ADDRESS OF DATA BUFFER * * TYPE = 9 OUTPUT NUMB ERASE COMMANDS (NO DMA) * NUMB = NUMBER OF DACS TO ERASE * OBUF = ADDRESS OF CHANNEL BUFFER * CMND = ADDRESS OF THE DATA WORD (ERASE) * * ADDITIONAL COMMENTS: * * IN ALL CASES NUMB MUST NOT BE LESS THAN 0. FOR ALL BUT * TYPE 3 NUMB MUST BE GREATER THEN 0. FOR TYPE 3 NUMB * MAY BE 0 TO INDICATE OUTPUT BUT DO NOT ENCODE. * (FOR REMOTE NO OUTPUT WILL BE DONE BUT THE WORD WILL * BE SAVED TO BE OUTPUT FOR NEXT ENTRY IF NEEDED.) * * FOR TYPE 3 WITH DMA REQUESTED, DMA WILL BE USED * WHEN NUMB IS GREATER THAN 2. FOR TYPE 4 WITH DMA REQUESTED, * DMA WILL BE USED. DMA IS NEVER USED FOR REMOTE (SUBCHANNEL 1) * * TYPES 3 THROUGH 7 MAKE THIS DRIVER A GENERAL * PURPOSE MICROCIRCUIT I/O CARD DRIVER * (MUST BE SUBCHANNEL 0 -- SEE BELOW) * * THE RTE MUST BE CONFIGURED FOR SUBCHANNEL 0 FOR LOCAL, * SUBCHANNEL 1 FOR REMOTE. SKP ******************************************************************** * * * `p * * >>>>>>> IMPORTANT NOTE FOR FUTURE MODIFIERS <<<<<<< * * * * * * THIS VERSION OF THE 2313 DRIVER WAS ADAPTED FROM THE NORMAL * * VERSION TO SUPPORT RTE SYSTEMS WITH EXTENDED MEMORY (GREATER * * THAN 32K). THE NEW CODE IS MARKED WITH *X* (FOR "EXTENDED" * * MEMORY) IN THE COMMENTS FIELD. THIS VERSION IS ENTIRELY * * INCOMPATIBLE WITH NON-MAPPED SYSTEMS. * * * * * ******************************************************************** SKP ************************ * * * INITIATION SECTION * * * ************************ SPC 2 I.62 NOP JSB SSTAT SAVE DMS STATUS AT ENTRY *X* CLB CLEAR THE *X* STB MFLAG THE MAP-OK FLAG. *X* JSB CNFGR CONFIGURE ALL I/O INSTRUCTIONS LDA BIT7 FORM MASK CMA TO TURN OFF AND EQT5,I XMSN ERROR STATUS BIT STA EQT5,I AND RESTORE STATUS WORD DLD INTBA,I \ CPA EQT1 \ JMP HVDMA > CHECK FOR DMA ASSIGNED CPB EQT1 / JMP HVDMA / SPC 2 * ** VALID REQUEST CHECK ** SPC 1 LDA EQT6,I GET REQUEST CONTROL WORD LDB A RBL SSB,SLB,RSS CLASS REQUEST? JMP NORML NORMAL--NOT CLASS REQUEST SPC 1 * CHECK FOR LEGAL CLASS WRITE-READ REQUEST SPC 1 LDB EQT9,I GET FIRST OPTIONAL PARAMETER AND MASK MASK REQUEST CODE CPA CLASS LEGAL CLASS REQUEST? SZB,RSS 1ST OPTIONAL PARAMETER GIVEN? JMP ERROR NO, ERROR STB EQT8,I YES, TAKE AS # OF ENTRxIES COUNT JMP CHKQU GO ON TO CHECK QUEUE BUFFER NORML EQU * AND B77 MASK REQUEST TYPE CPA TWO WRITE REQUEST? JMP CHKQU YES - GOOD CPA THREE CONTROL REQUEST? CLA,INA,RSS YES - A=2 FOR RETURN ERROR EQU * CLA READ REQUEST - A=1 FOR RETURN INA (ALSO FOR BAD ENTRIES) JMP I.RTN ERROR RETURN SPC 2 MASK OCT 140077 CLASS REQUEST MASK CLASS OCT 140002 CLASS WRITE REQUEST WORD MFLAG BSS 1 FLAG SET MEANS MAPS SETUP *X* SKP * THIS ROUTINE CHECKS A SPECIFIED BUFFER TO SEE IF ANY PART * OF IT LIES IN A DISK RESIDENT PROGRAM AREA. IF ANY PART * OF THE BUFFER IS IN A DISK AREA THEN RETURN IS TO (P+1), * OTHERWISE TO (P+2). * * ENTER WITH (A)=BUFFER ADDRESS, (B)=BUFFER LENGTH * * OPERATION: WE CHECK ALL PHYSICAL PAGES (REPEAT, PHYSICAL) * OCCUPIED WHOLLY OR PARTIALLY BY A BUFFER. IF ANY SUCH PAGE * IS ABOVE THE LAST PAGE OF SYSTEM AVAILABLE MEMORY, THEN * IT MUST BE PART OF A DISC PARTITION . NOTE THAT * ALL PAGES OF THE BUFFER ARE CHECKED SO THAT PARTITION NEED * NOT CONSIST OF CONTIGUOUS PAGES. * * THE USER (REPEAT, USER) MAP IS DUMPED TO ACCOMPLISH THIS * TEST. NOTE THAT ALL BUFFERS CHECKED HERE WILL BE VISIBLE * FROM THE USER MAP. (THERE IS NO WAY FOR USER TO GET A * BUFFER INTO S.A.M., EXCEPT FOR CLASS I/O CALL Q-BUFFER * WHICH IS NOT CHECKED HERE....AND MUST NOT BE!!! SPC 2 DRA? NOP ENTRY (A)=ADDRESS,(B)=LENGTH *X* SSA ERROR IF BUFFER ADDR LESS *X* JMP ERROR THAN ZER0 *X* SZB,RSS MAKE ZERO LENGTH BUFFERS *X* INB LOOK LIKE ONE WORD FOR THIS CODE *X* STA TEMP4 *X* ADB A ERROR IF *X* ADB N1 END ABOVE *X* SSB  77777B. *X* JMP ERROR *X* CLA CLEAR A TEMPORARY TO KEEP TRACK *X* STA SETMP OF PAGES IN DISC PART OF MEM *X* LDA TEMP4 PUT FWA IN A, LWA IN B *X* LSR 10 GET PAGE NUMBERS *X* AND B77 AND ISOLATE THEM. *X* SPC 1 CMB GET -NUMBER OF PAGES STRADDLED *X* ADB A BY BUFFER AND *X* STB TEMP4 SAVE AS LOOP COUNTER. *X* ADA P32 CONVERT START PAGE TO MAP# *X* SPC 1 LOOP LDB TEMP. POINT TO PLACE TO DUMP MAP *X* LDX N1 DUMP ONLY ONE REGISTER *X* XMM DUMP MAP TO MEMORY *X* LDB TEMP7 PICK UP MAP REG *X* RBL ERROR OF BIT 14 *X* SSB IS SET. *X* JMP ERROR (WRITE *X* RBR PROTECTED PAGE). *X* SWP MASK TO AND M1777 PHYSICAL PAGE SWP ADDRESS. CMB,INB IF PHYSICAL PAGE ADDR *X* ADB $LPSA IS ABOVE S.A.M *X* SSB THEN INCR COUNTER - MUST BE *X* ISZ SETMP IN DISC AREA. *X* ISZ TEMP4 BUMP COUNTER *X* JMP LOOP AND CONTINUE IF MORE. *X* SPC 1 LDA SETMP IF ANY PAGES IN DISC AREA *X* SZA,RSS THEN RETURN AT P+1 *X* ISZ DRA? ELSE AT P+2 *X* DRADS JMP DRA?,I RETURN TO CALLER *X* SPC 2 N1 DEC -1 *X* P32 DEC 32 G  *X* TEMP. DEF TEMP7 *X* M1777 OCT 1777 SKP * ** CHECK QUEUE BUFFER ** SPC 1 CHKQU EQU * JSB SETMP SET USER MAP IF NEEDED *X* LDA EQT8,I CHECK QUEUE CMA,INA BUFFER # OF ENTRIES SSA,RSS >0? JMP ERROR NO - REJECT SPC 2 * ** VALID ENTRY TYPES CHECK ** SPC 1 LDB EQT7,I GET & SAVE STB TEMP1 QUEUE BUFFER ADDRESS STA TEMP2 SAVE ENTRY COUNTER STB TEMP3 SPC 1 L1 EQU * LDB TEMP1,I GET CURRENT ENTRY TYPE NUMBER ISZ TEMP1 ADVANCE QUEUE BUFFER ADDRESS CPB ONE TYPE = 1? RSS YES - OK CPB TWO TYPE = 2? JMP L6 YES - OK LDA TEMP1,I GET NUMBER OF STA TEMP5 OPERATIONS AND CMA,SSA,RSS CHECK FOR <0 JMP ERROR <0 SO REJECT CPB THREE TYPE = 3? JMP L2 YES - OK SZB IF ENTRY TYPE = 0 THEN ERROR CMA,SZA,RSS CHECK # OF OPERATIONS FOR 0 JMP ERROR =0 SO REJECT LDA MIN10 IS TYPE ADA B MORE THAN SSA THREE BUT SSB LESS THAN TEN? JMP ERROR NO SPC 2 * ** CORE RESIDENT CHECK ** * * IF THE QUEUE BUFFER IS NOT IN A DISK RESIDENT AREA (EITHER RT * OR BACKGROUND) THEN NO DATA BUFFER MAY BE IN A DISK RESIDENT * AREA. (IF CLASS I/O CALL THEN QUEUE BUFFER IS IN SYS. AV. MEM. * WHICH IS NOT A DISK RESIDENT AREA.) * L2 EQU * STB TEMP6 SAVE (B) ISZ TEMP1 POINT TO BUFFER ADDR LDA EQT6,I GET REQUEST CONTROL WORD RAL ROTATE SIGN BIT TO BIT 0 SSA,SLA,RSS CLASS CALL? (BITS 14 & 15) RSS NORMAL CALL - NOT CLASS JMP CORE YES-BUFFR NOT TO BE IN DISK AREA LDA TEMP3 GET QUEUE ADDR CLB SET LENGTH TO 0 JSB DRA? NORML CALL--CHECK QUEUE LOCATION JMP NOSWP QUEUE IN DISK AREA-NOT SWAPABLE CORE EQU * MAKE SURE BUFFR NOT IN DISK AREA JSB CPASS FETCH BUFFER LENGTH *X* LDA TEMP1,I FETCH BUFFER ADDRESS *X* JSB DRA? CHECK BUFFER LOCATION JMP ERROR BUFFER IS IN DISK AREA -- ERROR JMP NSWP2 BUFFER IS IN CORE AREA *X* SPC 1 NOSWP EQU * QUEUE IN DISC AREA *X* JSB CPASS FETCH BUFFER LENGTH *X* LDA TEMP1,I FETCH BUFFER ADDR *X* JSB DRA? CHECK BUFFER ADDRESS ANYHOW *X* NOP (DON'T CARE IF BUFF IN DISC AREA) *X* NSWP2 EQU * BUFFER NOT IN DISC AREA IF ENTRY HERE*X* LDB TEMP6 RESTORE (B) SSB FIRST BUFFER? JMP L3 NO CPB FOUR YES - TYPE = 4? JMP L4 YES - CHK VALIDITY CPB THREE TYPE = 3? JMP L5 YES - BUFFER OK CMB,INB SET FOR SECOND BUFFER CHECK JMP L2 SPC 2 CPASS NOP *X* LDB TEMP5 GET DATA LEN FROM Q *X* LDA TEMP6 GET TYPE & BUFF NUMBER FLG *X* SSA 1ST BUFFER? *X* JMP PASS2 NO, 2ND *X* CPA SEVEN YES, IF TYPE 7 CALL *X* CLB,INB THEN LENGTH IS 1 *X* CPA EIGHT ELSE IF TYPE 8 *X* LDB TWO THE LENGTH IS 2 *X* JMP CPASS,I RETURN *X* SPC 1 PASS2 CMA,INA 2ND BUFF, COMPL FLAG FOR TYPE *X* CPA NINE IF TYPE 9 *X* CLB,INB THEN 2ND BUFF LEN IS 1 *X* JMP CPASS,I RETURN *X* SPC 1 NINE DEC 9 *X* MIN10 DEC -10 SPC 2 L3 EQU * CMB,INB RECOVER TYPE CPB FIVE TYPE = 5? RSS YES - CHECK VALIDITY JMP L5 NO - BUFFERS OK SKP * ** VALID BUFFER CHECK ** * (BUFFER MUST BE ABOVE START OF SSGA FOR MAPPED SYSTEMS) SPC 1 L4 EQU * LDA MPFT.,I GET MPFT ADDRESS *X* ADA FOUR POINT TO SSGA BASE *X* LDA A,I AND LOAD IT *X* CMA,INA NEGATE ADA TEMP1,I ADD BUFFER ADDR SSA < 0? JMP ERROR YES - IN SYSTEM AREA - ERROR * (UPPER BOUND CHECK DELETED FOR MAPPED SYSTEMS) *X* SPC 2 * ** CHECKED ALL ENTRIES? ** SPC 1 L5 ISZ TEMP1 ADVANCE QUEUE ADDRESS L6 ISZ TEMP2 CHECKED ALL ENTRIES? JMP L1 NO - CHECK NEXT ONE SKP * ** NEED DMA? ** SPC 1 LDA REMOT GET REMOTE/LOCAL FLAG SLA REMOTE? JMP NODMA YES, NO DMA LDA EQT6,I CHECK CONWD BIT 6 AND BIT6 TO SEE IF DMA SZA,RSS HAS BEEN REQUESTED BY USER JMP NODMA NOT REQUESTED LDA FIVE COMPLETE TO GET JMP I.RTN DMA ASSIGNED *X* SPC 1 * ** DON'T USE DMA ** SPC 1 NODMA EQU * LDA EQT6,I MAKE SURE THAT CONWD AND BX177 IS CLEAR OF STA EQT6,I UNDESIRABLE BITS JMP OP SPC 2 BX177 OCT 140177 BIT7 OCT 200 SPC 2 * ** HAVE DMA ** SPC 1 HVDMA EQU * JSB SETMP MAKE SURE MAP IS SET UP *X* LDA EQT6,I SET CONWD AND BX177 FOR DMA IOR BIT7 OPERATIONS STA EQT6,I WHERE POSSIBLE <:6SPC 1 LDB EQT9,I RAL IF CLASS I/O SSA,SLA,RSS THEN MOVE NUMBER OF RSS ENTRIES TO EQT 8 IN STB EQT8,I PLACE OF BUFF LENGTH SPC 1 LDA CHAN ODD CHANNEL MEANS PORT 0 *X* IOR BIT15 SIGN BIT MEANS COPY USER MAP *X* XMA GO COPY USER MAP TO DMA MAP *X* SPC 1 LDA CHAN CONFIGURE JSB DCFGR DMA INSTRUCTIONS SPC 2 * ** CALL MAIN PROCESSOR ** SPC 1 OP EQU * LDA EQT8,I CREATE CMA NUMBER OF ENTRIES STA EQT8,I COUNTER CCA FORCE STA EQT10,I START-UP JSB PROC START OPERATIONS CLA,RSS OPERATION INITIATED LDA FOUR IMMEDIATE COMPLETION CLB I.RTN JSB MAPCK RESET USER MAP IF CHANGED *X* JMP I.62,I THEN RETURN TO SYSTEM *X* SPC 2 THREE DEC 3 FIVE DEC 5 SIX DEC 6 MPFT. DEF $MPFT *X* < SKP ***************************************** * * * CONTINUATION AND COMPLETION SECTION * * * ***************************************** SPC 2 C.62 NOP JSB SSTAT SAVE DMS STATUS AT ENTRY *X* CLB CLEAR THE *X* STB MFLAG MAP-OK FLAG. *X* LDB EQT1,I SPURIOUS SZB,RSS INTERRUPT? JMP SPURI YES - IGNORE IT SPC 1 CPA SIX WAS RSS INTERRUPT CPA SEVEN FROM RSS DMA JMP DEV NO JSB DCFGR YES - CONFIGURE DMA SPC 1 CLCD1 CLC HDMA TURN OFF DMA CCA FORCE NEW STA EQT10,I ENTRY CHECK LDA EQT6,I IS A DEVICE \ ALF,ALF INTERRUPT CHECKS BIT 9 RAR,SLA REQUIRED? / JMP CONT YES LDA EQT4,I NO - GET DEVICE AND B77 SELECT CODE SPC 2 * ** CALL MAIN PROCESSOR ** SPC 1 DEV EQU * JSB CNFGR CONFIGURE ALL I/O INSTRUCTIONS SPC 1 LDA REMOT REMOTE? SLA,RSS YES - SKIP JMP LOCAL NO - SKIP STATUS WORD CHECK LIA2 LIA .2313,C READ STATUS WORD AND SMASK SAVE PARITY, MISSED, & RIP BITS SZA,RSS CHECK FOR BAD STATUS JMP LOCAL GOOD STATUS - CONTINUE LDA EQT5,I BAD STATUS IOR BIT7 SET XMSN ERROR BIT STA EQT5,I IN STATUS WORD JMP PERR AND RETURN TO CALLER LOCAL EQU * LDA EQT6,I IS A \ ALF,ALF DMA CHANNEL CHECKS BIT 7 SSA,RSS ASSIGNED? / JMP L7 NO DLD INTBA,I \ ELA,CLE,ERA \ ELB,CLE,ERB \ CPA EQT1 > GET PROPER LDA SIX / DMA CHANNEjL CPB EQT1 / LDA SEVEN / JSB DCFGR GO CONFIGURE DMA SPC 1 L7 EQU * JSB PROC START OR CONT OPERATION JMP CONT OPERATION CONTINUATION CLB,INB,RSS ALL OPERATIONS DONE (B=1) PERR EQU * CLB PARITY ERROR(B=0) LDA BIT15 SET A= BIT 15 TO RELEASE DMA CLC1 CLC .2313,C TURN OFF DEVICE JMP C.RTN RETURN TO SYSTEM (COMPLETED) SPC 2 TWO DEC 2 SMASK OCT 100006 SPC 2 SPURI EQU * STB EQT15,I CLEAR TIME OUT ON SPURIOUS INT CONT EQU * ISZ C.62 SET RETURN FOR CONTINUATION C.RTN JSB MAPCK RESTORE USER MAP IF MODIFIED *X* JMP C.62,I RETURN TO SYSTEM SPC 2 ONE DEC 1 B77 OCT 77 SKP ******************** * * * MAIN PROCESSOR * * * ******************** SPC 2 PROC NOP ISZ EQT10,I CHECK FOR END OF CURRENT ENTRY JMP MORE MORE TO GO ON THIS ONE * ("MORE" ENABLES USER MAP) *X* NEXT EQU * JRS MSTAT NEXT2 RESTORE INITIAL DMS STATUS *X* NEXT2 LDA STCC1 SET ENCODE *X* STA STCC2 COMMAND ISZ EQT8,I MORE ENTRIES TO GO? RSS YES JMP DONE NO - ALL DONE LDB EQT7,I GET NEW TYPE NUMBER LDB B,I AND SAVE STB EQT9,I IT IN EQT ISZ EQT7,I ADVANCE QUEUE ADRS CCA ASSUME TYPE 1 OR 2 AND STA EQT10,I SET FOR 1 OPERATION CPB ONE TYPE = 1? JMP SYNRM YES - GO DO A SYSTEM NORMALIZE CPB TWO TYPE = 2? JMP ESCPE YES - ISSUE 2930A ESCAPE WORD SPC 1 LDA MFLAG IF MAP NOT SETUP, *X* SZA,RSS THEN GO SEE *X* JSB SETMP IF IT'S NECESSARY. *X* SPC 1 LDA EQT7,I GET TRANSFER LDA A,I LENGTH FROM QUEUE BUFFER CMA MAKE IT A NEGATIVE STA EQT10,I COUNTER & STORE IN EQT ISZ EQT7,I ADVANCE QUEUE ADRS LDA EQT7,I GET 1ST OR ONLY BUFF ADRS LDA A,I AND PLACE IT IN STA EQT11,I EQT IN POSITIONS FOR BOTH STA EQT12,I BUFFER ADDRESSES ISZ EQT7,I ADVANCE QUEUE ADRS LDB EQT9,I RESTORE TYPE TO B *X* CPB THREE TYPE = 3? JMP OUT DO SIMPLE OUTPUT UNDER USER MAP *X* * ("OUT" ENABLES USER MAP) *X* CPB FOUR TYPE=4? JMP IN DO SIMPLE INPUT UNDER USER MAP *X* * ("IN" ENABLES USER MAP) *X* LDA EQT7,I GET 2ND BUFF ADRS LDA A,I AND PLACE IT IN STA EQT12,I THE EQT ISZ EQT7,I ADVANCE QUEUE ADRS SPC 1 UJP NEXT3 SWITCH TO USER MAP *X* NEXT3 CPB FIVE TYPE = 5? *X* JMP OUTPT YES - GO TO OUTPUT (THEN INPUT) LDA EQT11,I GET & SAVE LDA A,I THE 1ST WORD OF STA EQT13,I THE 1ST BUFFER LDA EQT10,I ADJUST THE INA OPERATIONS COUNTER BIT9 ALS FOR DOUBLE OPERATIONS STA EQT10,I ON THE DUAL DAC JMP DAC SKP SEVEN DEC 7 EIGHT DEC 8 SYN OCT 140001 SPC 1 * ** ISSUE SYSTEM NORMALIZE ** SPC 1 SYNRM EQU * LDA SYN GET SYSTEM NORMALIZE COMMAND LDB REMOT GET REMOTE/LOCAL FLAG SLB REMOTE? JMP R/L YES,ISSUE COMMAND REMOTE CLC2 CLC .2313,C CLC TO GET ENCODE EDGE OTA1 OTA .2313 AND ISSUE IT STCC1 STC .2313,C DOUBLE ENCODE NOP TO INSURE STC1 STC .2313 RESPONSE JMP PROC,I CONTINUATION RETURN SPC 1 FOUR DEC 4 BIT8 OCT 400 SPC 1 * ** CONTINUATION ** + SPC 1 MORE EQU * UJP MORE2 MAKE SURE WE'RE IN USER MAP *X* MORE2 LDB EQT9,I GET CURRENT TYPE NUMBER *X* CPB THREE TYPE = 3? JMP OUTPT YES - CONT SIMPLE OUTPUT CPB FOUR TYPE = 4? JMP INPT1 YES - CONT SIMPLE INPUT CPB FIVE TYPE = 5? JMP INPT2 YES - GO INPUT (THEN OUTPUT) SPC 1 DAC EQU * LDA EQT6,I GET REQUEST CONTROL WORD XOR BIT8 TOGGLE BIT 8 FOR MIXED IN/OUT STA EQT6,I SAVE IT ALF,ALF POSITION FOR TESTING LATER CPB SIX TYPE = 6? JMP BLOCK YES - GO DO BLOCK SCAN ON DAC CPB SEVEN TYPE = 7? JMP SINGL YES - GO DO SINGLE CHAN ON DAC CPB EIGHT TYPE = 8? JMP SEQTL YES - GO TO SEQUENTIAL ON DAC SLA TYPE = 9: CHECK CONWD BIT 8? JMP CHANL CHANNEL # OUTPUT LDA EQT12,I GET DATA WORD LDA A,I JMP R/L GOTO REMOTE LOCAL OUTPUT SKP SEQTL EQU * SLA,RSS DAC SEQ SCAN: CHECK CONWD BIT 8? JMP DATA DATA OUTPUT LDA EQT13,I GET ADDRESS TO BE OUTPUT AND DMASK & ELIMINATE WAIT BIT STA B LDA EQT11,I GET END CHANNEL INA ADDRESS FOR SEQUENTIAL LDA A,I SCAN AND CHECK AND DMASK TO SEE IF CPA B CURRENT CHAN IS END CHAN JMP NWSCN IT IS - START NEW SCAN LDA EQT13,I \ STA B \ INCREMENT ADB B20 / CHANNEL # STB EQT13,I / SPC 2 CLB,INB IS THIS THE CMB LAST CHANNEL CPB EQT10,I TO BE SET? JMP DWAIT YES - SET WAIT BIT JMP R/L# SPC 1 ESCPE EQU * LDA SCAPE (GET 2930A ESCAPE WORD) R/L EQU * REMOTE/LOCAL OUTPUT FROM (A) REGISTER STA EQT13,I SAVE LAST OUTPUT WORD R/L# EQU * LDB REMOT GEGT REMOTE/LOCAL FLAG SLB,RSS LOCAL? JMP OTA2 YES SPC 1 REOUT EQU * REMOTE OUTPUT ONLY STCC4 STC .2313,C SET RECEIVE MODE LIB1 LIB .2313,C CLEAR STATUS LIB2 LIB .2313 CLEAR DATA OTA3 OTA .2313 OUTPUT COMMAND WORD TO 2313 JMP PROC,I RETURN AND WAIT FOR FLAG SPC 1 OTA2 OTA .2313 ISSUE A WORD * * NOTE: THE FOLLOWING INSTRUCTION IS NORMALLY A CONFIGURED * "STC SC,C" EXCEPT FOR TYPE 3 ENTRIES WITH N=0. IN THIS * CASE, IT IS A "JMP NEXT". * STCC2 JMP NEXT AND ENCODE JMP PROC,I CONTINUATION RETURN SPC 2 B20 OCT 20 DMASK OCT 7776 BIT6 OCT 100 SCAPE OCT 146000 BIT15 OCT 100000 SKP NWSCN EQU * LDB EQT11,I DAC SEQ NEW SCAN LDB B,I RESTORE CURRENT CHAN ADRS STB EQT13,I STORAGE WITH START CHAN ADRS LDA EQT11,I INA LDA A,I DWAIT EQU * IOR ONE SET FLAG WAIT BIT JMP R/L# SPC 1 SINGL EQU * SLA,RSS DAC SINGLE CHAN: CHK CONWD B8? JMP DATA DATA OUTPUT LDA EQT11,I GET "THE" CHANNEL LDA A,I NUMBER JMP R/L SPC 1 BLOCK EQU * SLA,RSS DAC BLK SCAN: CHK CONWD BIT 8? JMP DATA DATA OUTPUT CHANL EQU * LDA EQT11,I GET NEXT CHANNEL LDA A,I NUMBER ADVNC EQU * ISZ EQT11,I ADVANCE CHAN BUFF ADDRESS JMP R/L SPC 1 DATA EQU * LDA EQT12,I DAC DATA OUTPUT: LDA A,I GET DATA WORD FROM BUFFER ISZ EQT12,I ADVANCE DATA BUFF ADDRESS JMP R/L# GO OUTPUT THE DATA WORD SPC 2 * ** SIMPLE OUTPUT (TYPE 3) ** SPC 1 OUT EQU * UJP OUT2 MAKE SURE WE'RE IN USER MAP *X* OUT2 ISZ EQT10,I ADJUST OPERATIONS COUNTER *X* JMP DMCHK IF >0 OPS THEN GO CHK MORE LDA SAJMP FOR 0 OPS ELIMINATE STA STCC2 ENCODE ANYD FORCE NEXT ENTRY LDA REMOT \ SLA,RSS \ JMP OUTPT (LOCAL) LDA EQT11,I SKIP OUPUT BUT LDA A,I SAVE OUTPUT WORD STA EQT13,I / ISZ EQT11,I / JMP NEXT / SPC 1 OUTPT EQU * LDA EQT11,I GET OUTPUT WORD LDA A,I FROM BUFFER JMP ADVNC SKP DMCHK EQU * LDA REMOT GET REMOTE FLAG SLA REMOTE JMP OUTPT YES,NO DMA LDA EQT10,I CHECK NUMBER OF CMA,INA OPERATIONS CPA ONE FOR >2? JMP OUTPT =1 (NO DMA) CPA TWO >1 JMP OUTPT =2 (NO DMA) LDA EQT6,I >2 SO CHECK CONWD ALF,ALF BIT 7 SSA,RSS FOR DMA? JMP OUTPT NO DMA ALF,CLE,ALF SET BIT 9 OF CONWD (DEV INTRPT IOR BIT9 REQUIRED) & CLEAR E (OUTPUT) JMP DMSET GO START OUTPUT DMA SPC 2 NOT9 OCT 176777 *X* BIT13 OCT 20000 SPC 1 * ** SIMPLE INPUT (TYPE 4) ** SPC 1 IN EQU * UJP IN2 MAKE SURE WE'RE IN USER MAP *X* IN2 LDA REMOT *X* SLA,RSS JMP IN1 NCODE EQU * LDA EQT13,I JMP REOUT IN1 EQU * LDA EQT6,I CHECK CONWD ALF,ALF BIT 7 FOR SSA,RSS DMA OPERATION? JMP STCC2 NO DMA - GO ENCODE ALF,ALF CLEAR CONWD BIT 9(NO DEV INTRPT) AND NOT9 REQUIRED) & SET E *X* CCE FOR DMA INPUT SPC 1 * ** SET UP & START DMA ** * (LOCAL ONLY) SPC 1 DMSET EQU * STA EQT6,I SAVE CONWD LDA EQT4,I FORM DMA AND B77 COMMAND WORD 1 WITH DEVICE IOR BIT15 SELECT CODE & STC OPTION SEZ INPUT? q4 IOR BIT13 YES - SET CLC OPTION OTAD1 OTA HDMA ISSUE CW1 & CLCD2 CLC LDMA PREPARE FOR CW2 LDA EQT11,I GET BUFFER ADDRESS FOR CW2 SEZ INPUT? IOR BIT15 YES - SET INPUT MODE BIT OTAD2 OTA LDMA ISSUE CW2 & STCD1 STC LDMA PREPARE FOR CW3 LDA EQT10,I GET TRANSMISSION LENGTH SEZ AS CW3 AND INA ADJUST IF INPUT OTAD3 OTA LDMA ISSUE CW3 - DMA IS NOW READY CLF 0 TURN OFF INTERRUPT SYSTEM SEZ,RSS OUTPUT? STF1 STF .2313 YES - SET DEVICE FLAG SEZ INPUT? STCC3 STC .2313,C YES - START DEVICE STCD2 STC HDMA,C START DMA TRANSFER CLA PRIVILEGED I/O CPA DUMMY PRESENT? JMP PROC,I NO - CONTINUATION EXIT CLCD3 CLC HDMA YES - TURN OFF DMA INTERRUPT LDB INTBA GET ADDRESS LDA CHAN OF APPROPRIATE CPA SEVEN DMA CHANNEL INB IN INTERRUPT LDA B,I TABLE IOR BIT15 SET BIT 15 TO INDICATE THIS DMA STA B,I CHANNEL IS IN USE STF 0 TURN INTERRUPT SYSTEM BACK ON JMP PROC,I CONTINUATION EXIT SPC 2 SAJMP NOP SPC 2 DONE EQU * ISZ PROC SET FOR COMPLETION JMP PROC,I AND RETURN SPC 2 * ** INPUT ROUTINE ** SPC 1 INPUT NOP LIA1 LIA .2313 GET READING FROM I/O CARD LDB EQT12,I GET BUFFER ADDRESS STA B,I AND STORE THE READING ISZ EQT12,I ADVANCE BUFFER ADDRESS LDA EQT10,I GET OPERATION COUNTER INA,SZA AND CHECK FOR DONE? JMP INPUT,I NO - GO ON JMP NEXT YES - GET NEXT ENTRY SPC 2 INPT1 EQU * CONTINUE SIMPLE INPUT OPERATION JSB INPUT CONTINUE SIMPLE INPUT LDB REMOT SLB JMP NCODE JMP STCC2 OPERATION SPC 1 INPT2 EQU * JSB INPUT CONT INPUT THEN GO JMP OUTPT OUTPUT NEXT CHAN # SKP * * SET UP USER MAP IF THIS WAS A CLASS I/O CALL. * SET "MAP OK" FLAG IN ANY CASE. * SETMP NOP *X* ISZ MFLAG SET THE "MAP OK" FLAG *X* SPC 1 LDA EQT6,I GET CONWD FROM *X* RAL REQUEST, PUT SIGN IN BIT 0 *X* SSA,SLA,RSS CLASS REQUEST IF BOTH 15&0 SET. *X* JMP SETMP,I NOT CLASS REQUEST *X* SPC 1 LDA MAP. POINT TO 32 WORD MAP SAVEAREA *X* IOR BIT15 INDICATE SAVE IN MEMORY *X* USA READ THE MAP *X* SPC 1 LDA EQT1,I POINT TO ID-SEGMENT *X* JSB $XDMP AND GO GET HIS MAP SET *X* JMP SETMP,I RETURN TO CALLER *X* SPC 1 MAP. DEF *+1 *X* BSS 32 *X* SPC 2 * * RESTORE INTERRUPTED USER'S MAP IF MODIFIED, RESTORE DMS STATUS * (A & B PRESERVED) SPC 1 MAPCK NOP *X* JRS MSTAT MAPC2 ENABLE INITIAL MAP *X* MAPC2 STA TEMP6 SAVE REGISTER *X* LDA MFLAG EXIT IMMEDIATELY IF USER MAP *X* SZA,RSS STATUS WAS NEVER CHECKED *X* JMP MAPC1 BY THE SETMP ROUTINE. *X* SPC 1 LDA EQT6,I GET CONWD FROM REQUEST *X* RAL SEE IF IT'S CLASS I/O *X* SSA,SLA,RSS SKIP IF CLASS I/O *X* JMP MAPC1 NOT CLASS I/O *X* SPC 1 LDA MAP. CLASS I/O...RESTORE SAVED *X* USA USER MAP *X* SPC 1 MAPC1 LDA TEMP6 RESTORE A-REGISTER< *X* JMP MAPCK,I RETURN TO CALLER *X* SPC 3 * * SAVE STATUS OF DMS AT DRIVER ENTRY * SPC 1 SSTAT NOP *X* RSB GET STATUS *X* RBL,RBL SET BITS 15,14 TO CURRENT STATUS *X* STB MSTAT SAVE FOR LATER *X* JMP SSTAT,I RETURN *X* SPC 1 MSTAT BSS 1 *X* SKP ******************************* * * * I/O CONFIGURATION ROUTINE * * * ******************************* SPC 1 CNFGR NOP LDB STCC2 SAVE JUMP STB SAJMP INSTRUCTION CLB FIRST TIME STB *-2 ONLY IOR OTA0 FORM "OTA SC" INST STA OTA1 AND STA OTA2 STORE IT STA OTA3 IOR BIT6 FORM "STC SC" INST STA STC1 AND STORE IT XOR B5000 FORM "CLC SC,C " INST STA CLC1 AND STORE IT STA CLC2 XOR BIT11 FORM "STC SC,C" INST STA STCC1 AND STA STCC2 STORE STA STCC3 IT STA STCC4 XOR B1200 FORM "LIA SC" INST STA LIA1 AND STORE IT IOR BIT9 FORM "LIA SC,C" INST STA LIA2 AND STORE IT IOR BIT11 FORM "LIB SC,C" INSTRUCTION STA LIB1 XOR BIT9 FORM "LIB SC" INSTRUCTION STA LIB2 XOR BIT8 FORM "STF SC" INST STA STF1 AND STORE IT LDA EQT4,I GET SUBCHANNEL ASR 6 SHIFT TO LSB STA REMOT JMP CNFGR,I SPC 2 REMOT NOP REMOTE/LOCAL FLAG OTA0 OTA 0 BIT11 OCT 4000 B1200 OCT 1200 B5000 OCT 5000 NB4 OCT -4 SKP ******************************************* * * * DMA INSTRUCTIONWo CONFIGURATION ROUTINE * * * ******************************************* SPC 1 DCFGR NOP STA CHAN SAVE CHANNEL IOR OTA0 FORM "OTA 6 OR 7" INST STA OTAD1 AND STORE IT ADA NB4 FORM "OTA 2 OR 3" INST STA OTAD2 AND STA OTAD3 STORE IT IOR BIT6 FORM "STC 2 OR 3" INST STA STCD1 AND STORE IT IOR BIT11 FORM "CLC 2 OR 3" INST STA CLCD2 AND STORE IT ADA FOUR FORM "CLC 6 OR 7" INST STA CLCD1 AND STA CLCD3 STORE IT XOR B5000 FORM "STC 6,C OR 7,C" INST STA STCD2 AND STORE IT LDB INTBA \ SLA \ INB \ CLEAR BIT 15 OF LDA B,I / PROPER INTBL LOC. ELA,CLE,ERA / STA B,I / JMP DCFGR,I SKP **************************************** * * * BASE PAGE POINTERS AND OTHER EQU'S * * * **************************************** SPC 2 A EQU 0 B EQU 1 .2313 EQU 0 LDMA EQU 0 HDMA EQU 0 SPC 1 TEMP1 EQU CLCD1 TEMP2 EQU C.62 TEMP3 EQU OTAD1 TEMP4 EQU CLCD2 TEMP5 EQU OTAD2 TEMP6 EQU PROC TEMP7 EQU MAPCK SPC 1 INTBA EQU 1654B SPC 1 . EQU 1657B ESTABLISHES REF POINT EQT1 EQU .+1 EQT4 EQU .+4 EQT5 EQU .+5 EQT6 EQU .+6 EQT7 EQU .+7 EQT8 EQU .+8 NEG. COUNT OF # OF ENTRIES EQT9 EQU .+9 CURRENT ENTRY TYPE # EQT10 EQU .+10 # BUFFER WORDS IN CURRENT ENTRY EQT11 EQU .+11 1ST BUFFER ADDRESS EQT12 EQU 1771B 2ND BUFFR ADDR(=EQT11 IF NO 2ND) EQT13 EQU 1772B LAST WORD OUTPUT (LAST ADDR DAC) SPC 1 EQT15 EQU 1774B TIME-OUT TIMER SPC 1 CHAN EQU 1673B DUMMY EQU 1737B RTORG EQU 1746B RTDRA EQU 1750B AVMEM EQU 1751B BKDRA EQU 1754B SPC 1 BKLWA EQU 1777B SPC 3 **************B@<***** * * * END OF DRIVER * * * ******************* SPC 1 END Y B %@ 02313-18002 1926 S 0122 &!2313 RTE 2313 ON-LINE VERIF.             H0101 yASMB,L,C HED HP2313 RTE VERIFICATION -- MAIN NAM !2313,3,90 02313-16002 REV. 1926 SUP * * * SOURCE TAPE HP PART NO. 02313-18002 * BINARY TAPE HP PART NO. 02313-16002 * * * EXT A2313,B2313,D2313,E2313,P2313,R2313,S2313 EXT EXEC,SQRT,SIN,FLOAT,IFIX * !2313 NOP START EQU * LDA D2 MUST READ AT LEAST 2 CHARS CLB NORMAL PROMPTER JSB CREAD READ COMMAND INPUT LDA INBFR FETCH TWO CHARS * DECODE COMMON COMMANDS CPA AD IS IT AD? JMP .AD EXECUTE AD CPA CL IS IT CL? JMP .CL EXECUTE CL CPA CO IS IT CO? JMP .CO EXECUTE CO CPA DA IS IT DA? JMP .DA EXECUTE DA CPA EX IS IT EX? JMP !TERM TERMINATE CPA NO IS IT NO? JMP .NO EXECUTE NO CPA SE IS IT SE? JMP .SE GO FIND IF SET OR SEQ CPA TR IS IT TR? JMP .TR EXECUTE TR * LDB .ADC CHECK ADC OR DAC MODE SSB IF ADC JMP ADC GO TO ADC DECODE SKP DAC EQU * DAC COMMAND DECODE CPA AL IS IT AL? JMP .AL EXECUTE AL CPA ER IS IT ER? JMP .ER EXECUTE ER CPA GR IS IT GR? JMP .GR EXECUTE GR CPA LI IS IT LI? JMP .LI EXECUTE LI CPA RA IS IT RA? JMP .RA EXECUTE RA CPA RE IS IT RE? JMP .RE EXECUTE RE CPA SI IS IT SI? JMP .SI EXEECUTE SI JMP RREAD COMMAND NOT VALID IN DAC MODE SKP ADC EQU * ADC COMMAND DECODE CPA LI IS IT LI? JMP ..LI EXECUTE LI CPA RE IS IT RE? JMP ..RE EXECUTE RE CPA SI IS IT SI? JMP ..SI EXECUTE SI CPA TW IS IT TW? JMP ..TW EXECUTE TW JMP RREAD COMMAND NOT VALID IN ADC MODE SKP .AD EQU * SET ADC MODE LDA ADPMT GET ADC PROMPTER STA PRMT STORE AS NORMAL PROMPT CCA SET STA .ADC ADC MODE FLAG CLA STA DRPOK DISALLOW DAC REPEAT JMP START GET NEXT COMMAND SPC 5 .DA EQU * SET DAC MODE LDA DAPMT GET DAC PROMPTER STA PRMT STORE AS NORMAL PROMPT CLA CLEAR STA .ADC ADC MODE FLAG STA RPTOK DISALLOW ADC REPEAT STA LSTOK DISALLOW ADC LIST JMP START GET NEXT COMMAND SKP .AL EQU * DAC ALTERNATE JSB DACCL CLEAR PAST TEST FLAGS CCA STA .ALT SET AL TEST FLAG JSB DACEX INTIALIZE FOR TEST LDB D5 JSB BCCG GET BOX,CARD,CHANL JMP DABRT IF ANY < 0 ABORT IOR D1 SET WAIT BIT STA CHNLS SAVE STA CHNL1 SAVE FOR IMMEDIATE JSB DDATA GET FIRST DATA VALUE JMP DABRT IF OUT OF RANGE ABORT STA DATA SAVE STA GAIN1 SAVE FOR IMMEDIATE JSB .CNVT SET IMMEDIATE JSB DDATA GET SECOND DATA VALUE JMP DABRT IF OUT OF RANGE ABORT STA GAIN1 SAVE FOR IMMEDIATE XOR DATA SET UP DATA SWITCH STA ALTMP SAVE MASK JSB .CNVT SET IMMEDIATE ALLUP EQU * .ALRP EQU * CLA CLB,INB JSB .DAC. SET TO A VALUE LDA DATA GET DATA XOR ALTMP CHANGE TO OTHER VALUE STA DATA SAVE JMP ALLUP REPEAT ALTMP NOP SKP .CL EQU * CLEAR CONDITION LDA T.LOG IF < 7 CHARS ADA DM7 THEN NOT A SSA VALID CLEAR JMP RREAD SO READ A NEW COMMAND LDA INBFR+1 \ CPA EA \ RSS \ JMP RREAD IS CLEAR SPELLED OUT? LDA INBFR+2 / CPA R! / [ RSS / JMP RREAD NO - READ NEW COMMAND LDA INBFR+3 CLEAR WHICH FLAG? AND UPPER FETCH CHARACTER AND MASK IOR B40 AND STICK A BLANK IN LOW HALF LDB .ADC ADC MODE? SSB TEST JMP C.ADC YES - GO CLEAR ADC FLAG(S) C.DAC EQU * CLEAR DAC FLAG(S) CPA A! CLEAR ALL? JMP CLDA YES - DO IT CPA P! CLEAR PACER? JMP CLDP YES - DO IT CPA R! CLEAR REPEAT? JMP CLDR YES - DO IT JMP RREAD NOT VALID DAC CLEAR CLDA EQU * STB DREPT CLEAR DAC REPEAT CLDP EQU * STB DPACR CLEAR DAC PACER JMP START GET NEXT COMMAND CLDR EQU * STB DREPT CLEAR DAC REPEAT JMP START GET NEXT COMMAND C.ADC EQU * CLEAR ADC FLAG(S) CLB CPA A! CLEAR ALL? JMP CLAA YES - DO IT CPA P! CLEAR PACER? JMP CLAP YES - DO IT CPA L! CLEAR LAD? JMP CLAL YES - DO IT CPA R! CLEAR REPEAT? JMP CLAR YES - DO IT CPA G! CLEAR GAIN? JMP CLAG YES - DO IT CPA D! CLEAR DELAY? JMP CLAD YES - DO IT JMP RREAD NOT VALID ADC CLEAR CLAP EQU * STB PACER CLEAR PACER JMP START GET NEXT COMMAND CLAL EQU * STB LAD CLEAR LAD JMP START GET NEXT COMMAND CLAR EQU * STB RPEAT CLEAR REPEAT STB LSTOK DISALLOW LIST JMP START GET NEXT COMMAND CLAG EQU * STB GAIN CLEAR GAIN STB RPTOK DISALLOW REPEAT STB LSTOK DISALLOW LIST JMP START GET NEXT COMMAND CLAA EQU * CLEAR ALL LDA GAIN CHECK FOR GAIN SSA STB RPTOK GAIN SET - DISALLOW REPEAT SSA STB LSTOK GAIN SET - DISALLOW LIST LDA RPEAT CHECK FOR REPEAT SSA STB LSTOK REPEAT SET8 - DISALLOW LIST STB PACER CLEAR PACER STB LAD CLEAR LAD STB RPEAT CLEAR REPEAT STB GAIN CLEAR GAIN CLAD EQU * STB DELAY CLEAR DELAY JMP START GET NEXT COMMAND SKP .CO EQU * LIST CONDITIONS LDA DM5 \ STA CNTR1 \ LDA BLANK \ LDB AINBF \ CLR EQU * CLEAR PRINT BUFFER STA B,I / INB / ISZ CNTR1 / JMP CLR / LDB AINBF GET PRINT BUFFER ADDR LDA .ADC CHECK FOR ADC OR DAC MODE SSA JMP ADCCO ADC MODE - PRINT ADC COND LDA DPACR GET DAC PACER FLAG SSA,RSS TEST JMP TDR NOT SET LDA P! PUT "P" IN BUFFER STA B,I : INB : TDR EQU * LDA DREPT FETCH DAC REPEAT FLAG SSA,RSS TEST JMP DCO NOT SET LDA R! PUT "R" IN BUFFER STA B,I : INB : DCO EQU * LDA AINBF COMPARE BEGIN & END BUFFER ADDRS CMA,INA : ADA B : SZA,RSS IF EQUAL JMP NOCO THEN NO CONDITIONS - PRINT NONE COOUT EQU * PRINT CONDITIONS BUFFER JSB EXEC DEF *+5 DEF D2 DEF LU.FB AINBF DEF INBFR DEF DM10 JMP START GET NEXT COMMAND ADCCO EQU * ADC CONDITION REQUEST LDA PACER GET ADC PACER FLAG SSA,RSS TEST JMP TAR NOT SET LDA P! PUT "P" IN BUFFER STA B,I : INB : TAR EQU * LDA RPEAT GET ADC REPEAT FLAG SSA,RSS TEST JMP TAL NOT SET LDA R! PUT "R" IN BUFFER STA B,I : INB : TAL EQU * LDA LAD GET ADC LAD FLAG SSA,RSS TEST JMP TAG NOT SET LDA L! PUT "L" IN BUFFER STA B,I X : INB : TAG EQU * LDA GAIN GET ADC GAIN FLAG SSA,RSS TEST JMP TAD NOT SET LDA G! PUT "G" IN BUFFER STA B,I : INB : TAD EQU * LDA DELAY GET ADC DELAY FLAG SSA,RSS TEST JMP ACO NOT SET LDA D! PUT "D" IN BUFFER STA B,I : INB : ACO EQU * LDA AINBF COMPARE BEGIN & END BUFFER ADDRS CMA,INA : ADA B : SZA,RSS IF EQUAL JMP NOCO THEN NO CONDITIONS - PRINT NONE JMP COOUT PRINT CONDITIONS BUFFER NOCO EQU * NO CONDITIONS SET LDA NO STORE "NONE" STA INBFR IN THE CONDITIONS LDA NE BUFFER STA INBFR+1 AND PRINT JMP COOUT NE ASC 1,NE SKP .ER EQU * DAC ERASE JSB DACCL CLEAR PAST TEST FLAGS CCA STA .ERS SET ERASE TEST FLAG JSB DACEX INITIALIZE FOR TEST LDA RDGS GET # OF CHANLS CMA,INA SET UP LOOP STA XCNTR TO READ CHANL #'S LDA ACHLS POINT TO STA XTEMP CHANL BUFFER ERLUP EQU * ISZ XTEMP BUMP ADDR POINTER CLB,INB GET BOX,CARD JSB BCCG : JMP DABRT IF ANY < 0 ABORT STA XTEMP,I SAVE ADDR ISZ XCNTR DONE? JMP ERLUP NO - CONTINUE .ERRP EQU * JSB E2313 CALL I/F TO DO ERASES DEF *+5 DEF LU.SS DEF RETRN DEF CHNLS DEF RDGS CLA,INA GET EXPECTED RETURN CODE JSB C2313 CHECK RETURN CODE JMP .ERRP ERROR JMP .ERRP ERROR LDA DREPT CHECK FOR SSA REPEAT JMP .ERRP REPEAT JMP START GET NEXT COMMAND SKP .GR EQU * DAC GROUP JSB DACCL CLEAR PAST TEST FLAGS CCA STA .GRP SET GROUP TESTk FLAG JSB DACEX INITIALIZE FOR TEST LDA ACHLS GET CHANL STORE ADDR STA XTEMP SAVE LDA ADATA GET DATA STORE ADDR STA CNTR1 SAVE LDA RDGS GET # CHANLS IN 1ST GR NXTGR EQU * CMA,INA SET UP LOOP STA XCNTR TO GET DATA GRLUP EQU * ISZ XTEMP BUMP ADDR POINTER ISZ CNTR1 BUMP DATA POINTER LDB D5 GET BOX,CARD,CHANL JSB BCCG : JMP DABRT IF ANY < 0 ABORT STA XTEMP,I SAVE JSB DDATA GET DATA JMP DABRT IF OUT OF RANGE ABORT STA CNTR1,I SAVE ISZ XCNTR DONE? JMP GRLUP NO - CONTINUE LDA XTEMP,I GET LAST CHANL IOR D1 AND TURN ON WAIT BIT STA XTEMP,I SAVE CLA,INA READ >= 1 CHAR LDB M13 PRMPT W/MESSAGE 13 JSB CREAD GET REPLY LDA IMAX GET MAX INTEGER STA FF1 DEFAULT RESPONSE JSB FFIN CONVERT # LDA FF1 GET # SSA IF < 0 JMP DABRT THEN ABORT ADA RDGS ADD TO TOTAL LDB A MOVE TO (B) CMB,INB NEGATE ADB D200 IF SSB > 200 JMP RREAD THEN BAD - REREAD STA RDGS SAVE TOTAL LDA FF1 GET # SZA IF = 0 THEN DONE JMP NXTGR OTHERWISE NEXT GROUP LDA DPACR CHECK FOR PACER SSA,RSS PACER? JMP NOPCE NO - ERROR .GRRP EQU * LDA D1 MODE IS 1 LDB RDGS CONVERT RDGS CHANLS JSB .DAC. CONVERT LDA DREPT GET REPEAT FLAG SSA REPEAT? JMP .GRRP YES - DO IT AGAIN JMP START GET NEXT COMMAND SPC 5 NOPCE EQU * LDA LU.FB GET FALL BACK LU LDB M5 GET MESSAGE ADDR JSB PRMPT WRITE NO PACE MESSAGE JMP START GET NEXT COMMAND JMP START SKP .LI EQU * DAC LISSAJOUS JSB DACCL CLEAR PAST TEST FLAGS CCA STA .LISA SET LI TEST FLAG JSB DACEX INITIALIZE FOR TEST CLB,INB GET BOX,CARD JSB BCCG : JMP DABRT IF ANY < 0 ABORT IOR BIT12 SET PACE BIT ON CHANL 0 STA CHNLS SAVE XOR BIT12 CLEAR PACE BIT IOR D17 SET WAIT BIT ON CHANL 1 STA CHNLS+1 SAVE LDA LU.IN GET INPUT LU LDB M24 GET MESSAGE ADDR JSB PRMPT PRINT "FOR" LDA LU.IN GET INPUT LU LDB M25 GET MESSAGE ADDR JSB PRMPT PRINT "X=SIN(W1*T)" LDA LU.IN GET INPUT LU LDB M26 GET MESSAGE ADDR JSB PRMPT PRINT "Y=SIN(W2*T+@)" LDB M27 PROMPT W/"W1 = " JSB RFFIN READ W1 DST W1 SAVE LDB M28 PROMPT W/"W2 = " JSB RFFIN READ W2 DST W2 SAVE LDB M29 PROMPT W/"@ = " JSB RFFIN READ PHASE DST PHASE SAVE CLA STA TIME START AT STA TIME+1 T = 0 LDA RDGS GET # OF POINTS JSB FLOAT MAKE REAL DST DEL.T SAVE DLD TWOPI FDV DEL.T DIVIDE INTO PARTS DST DEL.T SAVE DELTA T LDA RDGS SET UP CMA,INA LOOP TO STA XCNTR CALCULATE POINTS LDA ADATA SET UP STA XTEMP DATA POINTER LILUP EQU * ISZ XTEMP BUMP DATA POINTER DLD W1 FETCH W1 FMP TIME W1*T JSB SIN FIND SIN(W1*T) HLT 0 FMP LIFCT CONVERT VOLTS JSB IFIX TO BITS AND DDMSK MASK JUNK STA XTEMP,I SAVE ISZ XTEMP MOVE TO Y VALUE DLD W2 FETCH W2 FMP TIME W2*T FAD PHASE W2*T+@ JSB SIN FIND SIN(W2*T+@) HLT 0 FMP LIFCT CONVERT VOLTS JSB IFIX TO BITS AND DDMSK MASK JUNK STA XTEMP,I SAVVE DLD TIME FAD DEL.T T + DELTA T DST TIME ISZ XCNTR DONE? JMP LILUP NO - CONTINUE .LIRP EQU * LDA D2 MODE IS 2 (SEQ) LDB RDGS RDGS PAIRS BLS MULTIPLY BY 2 JSB .DAC. CONVERT POINTS LDA DREPT REPEAT? SSA : JMP .LIRP REPEAT - DO IT AGAIN JMP START GET NEXT COMMAND BIT12 OCT 10000 D17 DEC 17 LIFCT DEC 32752. TWOPI DEC 6.2832 SPC 5 SKP ..LI EQU * ADC LIST * LISTER LDA LSTOK CHECK IF LIST ALLOWED SSA,RSS JMP RREAD NOT ALLOWED LDA LU.PO DEFAULT TO DEFAULT LIST DEVICE JSB GETLU BUT SEE IF ALTERNATE SUPPLIED JMP RREAD ALTERNATE IS BAD STA LSTDV SAVE LU OF LIST DEVICE LDA D2 READ >= 2 CHARS LDB M11 PROMPT W/MSG 11 JSB CREAD READ LIMITS FOR LIST LDA IMAX GET MAX INTEGER STA FF1 DEFAULT START STA FF2 DEFAULT FINISH JSB FFIN CONVERT START AND FINISH LDA FF2 FETCH FINISH LDB FF1 FETCH START IOR B COMBINE SSA CHECK FOR < 0 JMP START IF < 0 THEN QUIT SZB,RSS CHECK FOR ZERO JMP RREAD ZERO INVALID - ERROR CMB,INB SEE IF ADB FF2 START > FINISH SSB IF SO JMP RREAD THEN ERROR LDA RDGS SEE IF MPY GRUPS CHNLS GROUP*GROUPS LDB .SCLD (IF SCALED SEQUENTIAL) SSB,RSS LDA RDGS OR RDGS (IF NOT) LDB FF1 CMB,INB ADB A SSB < START JMP RREAD THEN ERROR LDB FF2 SET FINISH = CMB,INB ADB A MIN(RDGS,FINISH) SSB,RSS LDA FF2 STA FF2 JSB LF OUTPUT LINE FEED LDA .TC CHECK FOR TWO CHANNEL LIST SSA JMP TCLST TWO CHANNEL LIST - TWO COLUMNS CLA FBLST EQU * \ ADA RDGS \ LDB FF1 \ CMB,INB \ ADB A \ SSB \ JMP FBLST FIND WHICH GROUP START IS IN ADA D2 FOR SCALED SEQUENTIAL LDB FF1 / CMB,INB / ADA B / CMA,INA / STA CTEMP / LLP1 EQU * ISZ CTEMP IF DONE WITH A GROUP JMP NOLF NOT DONE SO NO LINE FEED JSB LF THEN OUTPUT LINE FEED LDA RDGS RESTORE COUNTER CMA,INA STA CTEMP NOLF EQU * NOT END OF GROUP LDA BLANK GET BLANK STA INBFR BLANK FIRST CHAR JSB DFTCH FETCH NEXT VALUE LDA D2 GET BUFFER OFFSET LDB AINBF GET BUFFER ADDR JSB FMTOT AND CALL FORMAT OUTPUT LDA DM11 OUTPUT 11 CHARS JSB LISTO ON LIST DEVICE LDA FF1 DONE? CPA FF2 : JMP DOLF YES - FINISH UP ISZ FF1 INCREMENT COUNTER JMP LLP1 DO NEXT VALUE TCLST EQU * TWO COLUMN LIST FOR T.C. CLB SET INITIAL LDA FF1 VALUE OF COLUMN SLA,RSS NUMBER CCB (1 OR 2(-1)) STB CTEMP : LDA DM8 STA XCNTR SET UP LOOP-BLANK PRINT BUFFER LDA BLANK BLANK LDB AINBF BUFFER ADDR TCLBL EQU * STA B,I STORE BLANK INB MOVE POINTER ISZ XCNTR DONE? JMP TCLBL NO-CONTINUE LLP2 EQU * LDA CTEMP FETCH COLUMN FLAG SSA CHECK JMP CLMN2 SET FOR COLUMN 2 JSB DFTCH FETCH VALUE LDA D2 GET BUFFER OFFSET LDB AINBF GET BUFFER ADDR JSB FMTOT CALL FORMAT OUTPUT LDA CTEMP REVERSE CMA COLUMN STA CTEMP FLAG JMP ELLP2 CHECK FOR DONE CLMN2 EQU * COLUMN 2 JSB DFTCH FETCH VALUE LDA D16 GET 2ND COLUMN BUFFER OFFSET LDB AINBF GET BUFFER ADDR JSB FMTOT CALL FORMAT OUTPUT LDA DM25 OUTPUT 25 CHARS JSB LISTO ON LIST DEVICE LDA CTEMP REVERSE CMA COLUMN STA CTEMP FLAG ELLP2 EQU * LDA FF1 CHECK CPA FF2 FOR END JMP LDONE OF LIST ISZ FF1 MORE SO BUMP COUNTER JMP LLP2 AND CONTINUE LDONE EQU * LIST DONE LDA CTEMP IF SOMETHING IN SSA,RSS COLUMN 1 JMP DOLF LDA DM11 THEN OUTPUT 11 CHARS JSB LISTO ON LIST DEVICE DOLF EQU * OUTPUT LINE FEED JSB LF AT END OF LIST JMP START GET NEXT COMMAND D16 DEC 16 DM25 DEC -25 DM8 DEC -8 LSTDV NOP SKP .NO EQU * SYSTEM NORMALIZE JSB S2313 CALL I/F ROUTINE DEF *+3 DEF LU.SS DEF RETRN JSB C2313 CHECK RETURN CODE JMP .NO ERROR - REPEAT REQUEST JMP .NO ERROR - REPEAT REQUEST JMP START GET NEXT COMMAND SKP .RA EQU * DAC RANDOM JSB DACCL CLEAR PAST TEST FLAGS CCA STA .RAN SET RA TEST FLAG JSB DACEX INITIALIZE FOR TEST LDA RDGS GET # OF POINTS CMA,INA SET UP LOOP TO STA XCNTR READ CHANLS AND DATA LDA ACHLS POINT TO STA XTEMP CHANL BUFFER LDA ADATA POINT TO STA CNTR1 DATA BUFFER RALUP EQU * ISZ XTEMP BUMP CHANL POINTER ISZ CNTR1 BUMP DATA POINTER LDB D5 SET BOX,CARD,CHANL JSB BCCG : JMP DABRT IF ANY < 0 ABORT IOR D1 TURN ON WAIT BIT STA XTEMP,I SAVE CHANL ADDR STA CHNL1 SAVE FOR IMMEDIATE CONVERT JSB DDATA GET DATA JMP DABRT IF OUT OF RANGE ABORT STA nCNTR1,I SAVE DATA STA GAIN1 SAVE FOR IMMEDIATE CONVERT JSB .CNVT CONVERT NOW ISZ XCNTR DONE? JMP RALUP NO - CONTINUE .RARP EQU * LDA DREPT REPEAT? SSA,RSS JMP START GET NEXT COMMAND RA.RP EQU * LDA D1 MODE IS 1 (RANDOM) LDB RDGS JSB .DAC. CONVERT POINTS JMP .RARP SKP .RE EQU * DAC REPEAT LDA DRPOK SEE IF SSA,RSS REPEAT ALLOWED JMP RREAD REPEAT NOT ALLOWED LDA .ALT LAST TEST AL? SSA JMP .ALRP GO DO IT AGAIN LDA .ERS LAST TEST ER? SSA JMP .ERRP GO DO IT AGAIN LDA .GRP LAST TEST GR? SSA JMP .GRRP GO DO IT AGAIN LDA .LISA LAST TEST LI? SSA JMP .LIRP GO DO IT AGAIN LDA .RAN LAST TEST RA? SSA JMP RA.RP GO DO IT AGAIN LDA .SICH LAST TEST SI? SSA JMP SI.RP GO DO IT AGAIN JMP RREAD NOTHING TO REPEAT SPC 5 ..RE EQU * ADC REPEAT LDA RPTOK SEE IF SSA,RSS REPEAT ALLOWED JMP RREAD REPEAT NOT ALLOWED LDA .SC LAST TEST SI? SSA JMP SIRD GO DO IT AGAIN LDA .TC LAST TEST TC? SSA JMP TWX GO DO IT AGAIN LDA .SCLD LAST TEST SCALED SEQ? SSA JMP SCS GO DO IT AGAIN LDA .SS LAST TEST SE? SSA JMP SEQS GO DO IT AGAIN JMP RREAD NOTHING TO REPEAT SKP .SE EQU * SET CONDITION OR SEQ LDA T.LOG FETCH T-LOG CPA D2 IF = 2 JMP SEQ THEN SEQ LDA INBFR+1 FETCH COMMAND CHAR 3 AND UPPER MASK CHAR 4 IOR B40 PUT IN BLANK CPA T! IF NOT A T RSS JMP SEQ THEN SEQ LDA T.LOG FETCH T-LOG (ASSUME "SET") ADA DM5 CHECK FOR < 5 SSA  JMP RREAD < 5 - NOT VALID SET LDA INBFR+1 FOR SET BLANK CPA T! MUST FOLLOW T RSS JMP RREAD NOT "T " SO ERROR LDA INBFR+2 SET WHICH FLAG? AND UPPER FETCH CHAR AND MASK IOR B40 STICK BLANK IN LOW HALF LDB .ADC ADC MODE? SSB TEST JMP S.ADC YES - GO SET ADC FLAG S.DAC EQU * SET DAC FLAG CPA P! SET PACER? JMP SDP YES - DO IT CPA R! SET REPEAT? JMP SDR YES - GO DO IT JMP RREAD NOT VALID DAC SET S.ADC EQU * SET ADC FLAG CPA P! SET PACER? JMP SAP YES - GO DO IT CPA L! SET LAD? JMP SAL YES - GO DO IT CPA R! SET REPEAT? JMP SAR YES - GO DO IT CPA D! SET DELAY? JMP SAD YES - GO DO IT CPA G! SET GAIN? JMP SAG YES - GO DO IT CPA K! PROGRAM GAIN IMMEDIATE? JMP SAK YES - GO DO IT JMP RREAD NOT VALID ADC SET SDP EQU * LDA DACPP JSB PPRAM GET DAC PACER PARAMS JMP DABRT ABORT IF ANY < 0 JMP START GET NEXT COMMAND SDR EQU * CCA STA DREPT SET DAC REPEAT JMP START GET NEXT COMMAND SAP EQU * LDA ADCPP JSB PPRAM GET ADC PACER PARAMS JMP AABRT ABORT IF ANY < 0 JMP START GET NEXT COMMAND SAR EQU * CCA STA RPEAT SET ADC REPEAT CLA STA LSTOK DISALLOW LIST JMP START GET NEXT COMMAND SAL EQU * LDA DELAY DELAY SET? SSA JMP DLYER YES - CAN'T HAVE LAD CCA STA LAD SET ADC LAD CLB,INB JSB BCCG GET LAD ADDR JMP LABRT ABORT IF ANY < 0 STA LADAD SAVE LAD ADDR JMP START GET NEXT COMMAND LABRT EQU * CLA STA LAD CLEAR ADC LAD ON ABORT JMP AABRDT SAG EQU * CCA STA GAIN SET ADC GAIN CLA STA RPTOK DISALLOW ADC REPEAT JMP START GET NEXT COMMAND T1 NOP T2 NOP SAK EQU * PROGRAM GAIN IMMEDIATE LDB D4 JSB BCCG GET BOX,CARD,GAIN JMP AABRT ABORT IF ANY < 0 STA T1 SAVE ADDR STB T2 SAVE GAIN CODE PGAIN EQU * PROGRAM GAIN JSB A2313 CALL I/F DEF *+6 DEF LU.SS DEF RETRN DEF D0 DEF T1 DEF T2 CLA,INA JSB C2313 CHECK RETURN CODE JMP PGAIN BAD - RETRY JMP PGAIN BAD - RETRY JMP START GET NEXT COMMAND SAD EQU * LDA LAD LAD SET? SSA JMP DLYER YES - CAN'T HAVE GAIN CLA,INA LDB M9 JSB CREAD ASK FOR DELAY JSB FFIN CONVERT DELAY LDA FF1 IF DELAY SSA < 0 JMP AABRT BAD SO ABORT CMA,INA DELAY SHOULD BE < 10000 STA DCNTR SAVE -DELAY ADA D10K < 10000 ? SSA JMP RREAD NO SO ABORT CCA STA DELAY SET DELAY JMP START GET NEXT COMMAND SKP SEQ EQU * ADC SEQUENTIAL SCAN LDA .ADC GET ADC FLAG SSA,RSS CHECK FOR ADC MODE JMP RREAD DAC MODE -- NO SEQ JSB ADCCL CLEAR PAST TEST FLAGS CCA STA .SS SET SEQ TEST FLAG JSB ADCEX INITIALIZE FOR TEST LDA .SCLD SEE IF SSA SCALED SEQUENTIAL JMP SCSEQ SCALED SEQUENTIAL LDA LU.IN LDB M15 JSB PRMPT ASK FOR FIRST CHANL LDB D2 GET BOX,CARD,CHANL JSB BCCG JMP AABRT IF ANY < 0 ABORT STA CHNL1 SAVE CHANL ADDR STA CHNL2 STB GAIN1 SAVE GAIN CODE STB GAIN2 LDA LAD GET LAD FLAG SSA,RSS IF NO LAD JMP NOLAD THEN SKIP LAD SECTION T LDA LU.IN LDB M21 JSB PRMPT ASK FOR LAST CHANL LDB D2 JSB BCCG GET BOX,CARD,CHANL JMP AABRT IF ANY < 0 ABORT STA LSTCH SAVE LAST CHANL NOLAD EQU * LDB M14 JSB QYNA ASK IF DIFFERENTIAL SZA,RSS AB? JMP AABRT ABORT CLB SSA,RSS STB DIFF NO - CLEAR DEFAULT SEQS EQU * LDA RDGS GET READINGS STA MPX1 STORE FOR MPX CALL JSB MPX CALL FOR MPX DEF D2 DEF CHNL1 DEF GAIN1 DEF EXTSS MPX1 NOP DEC 1 DLD RD1 SET REAL GAIN = 1 DST RG1 DST RG2 LDA RDGS GET READINGS CLB,INB SET ORIGIN JSB CNVRT CONVERT TO VOLTS JMP PCERR PACE FAST ERROR LDA RPEAT GET REPEAT FLAG SSA,RSS JMP TAKEN JMP SEQS SPC 5 TAKEN EQU * LDA LU.IN LDB M17 JSB PRMPT OUTPUT "RDGS TAKEN" JMP START GET NEXT COMMAND SKP SCSEQ EQU * ADC SCALED SEQUENTIAL LDA D1 READ >= 1 CHARACTERS LDB M19 JSB CREAD READ # OF GROUPS LDA IMAX GET MAX INTEGER STA FF1 DEFAULT # OF GROUPS JSB FFIN CONVERT # OF GROUPS LDA FF1 GET # OF GROUPS SSA IF < 0 JMP AABRT THEN ABORT SZA,RSS IF ZERO JMP RREAD THEN BAD STA GRUPS SAVE # OF GROUPS CMA,INA NEGATE ADA D25 ADD 25 SSA IF > 25 JMP RREAD THEN BAD LDA RDGS GET CHNLS/GRP MPY GRUPS FIND CHNLS/GRP*GROUPS SZB CHECK FOR OVERFLOW JMP RREAD OVERFLOW - BAD CMA,INA NEGATE ADA D200 ADD 200 SSA IF > 200 JMP RREAD THEN BAD CLA SET UP LOOP STA XCNTR TO GET START CHANLS GLOOP EQU * ISZ XCNTR BUMP LOO P COUNTER LDA XCNTR \ JSB I.OUT \ JSB CMOVE \ DEC 1 CALL FRMTR TO DEF I.B CONVERT GROUP # DEC 6 / DEF GR.FT / DEC 6 / LDA LU.IN OUTPUT GROUP # LDB GRFMT : JSB PRMPT : LDB D3 GET BOX,CARD, JSB BCCG CHANL,GAIN JMP AABRT IF ANY < 0 THEN ABORT STA XTEMP SAVE CHANL ADDR LDA XCNTR COMPUTE STORE ADA AGANS ADDR & STB A,I STORE GAIN LDB XTEMP GET CHANL ADDR LDA XCNTR COMPUTE CHANL ADA ACHLS STORE ADDR & STB A,I STORE CHANL LDA XCNTR GET LOOP COUNT CPA GRUPS DONE? RSS JMP GLOOP NO - CONTINUE CCA STA DIFF LLMPX ALWAYS DIFFERENTIAL SCS EQU * CLA SET UP LOOP STA XCNTR TO TAKE READINGS SCSLP EQU * ISZ XCNTR BUMP LOOP COUNTER CCA \ ADA XCNTR \ MPY RDGS COMPUTE BUFFER ADDR INA / STA FIRST / LDA RDGS SET UP STA CHPGP NUMBER OF READINGS LDA XCNTR COMPUTE GAIN ADDR ADA AGANS & SET STA SCSGN IN CALL LDA XCNTR COMPUTE CHANL ADDR ADA ACHLS & SET STA SCSCH IN CALL JSB MPX CALL FOR READINGS DEF D2 SCSCH NOP SCSGN NOP DEF EXTSS CHPGP NOP FIRST NOP LDA XCNTR GET LOOP COUNTER CPA GRUPS DONE? RSS JMP SCSLP NO - CONTINUE CLA SET UP LOOP STA XCNTR TO CONVERT READINGS SCSCV EQU * ISZ XCNTR BUMP LOOP COUNTER LDA XCNTR COMPUTE CMA,INA GAIN ADA GRUPS ADDR STA XTEMP INA AND ADA AGANS GET LDA A,I GAIN JSB GETGN LOOK UP REAL GAIN DS&T RG1 STORE GAIN FOR CONVERSION DST RG2 STORE GAIN FOR CONVERSION LDA XTEMP COMPUTE BUFFER MPY RDGS SUBSCRIPT FOR INA CONVERSION (LAST GROUP FIRST) LDB A : LDA RDGS GET # OF READINGS JSB CNVRT CONVERT DATA JMP PCERR PACE FAST - ABORT LDA XCNTR GET LOOP COUNTER CPA GRUPS DONE? RSS JMP SCSCV NO - CONTINUE LDA RPEAT GET REPEAT FLAG SSA,RSS TEST JMP TAKEN NO REPEAT JMP SCS REPEAT D200 DEC 200 D25 DEC 25 XTEMP NOP EXECUTION TEMPORARY XCNTR NOP EXECUTION COUNTER GRFMT DEF *+1 DM11 DEC -11 GR.FT ASC 6,GROUPXXXXXX SKP .SI EQU * DAC SINGLE JSB DACCL CLEAR PAST TEST FLAGS CCA STA .SICH SET SI TEST FLAG JSB DACEX INITIALIZE FOR TEST LDA RDGS SET UP CMA,INA LOOP TO STA XCNTR GET DATA LDA ADATA SET UP STA XTEMP ADDR POINTER LDB D5 SET BOX,CARD,CHANL JSB BCCG : JMP DABRT IF ANY < 0 ABORT IOR D1 TURN ON WAIT BIT STA CHNLS SAVE STA CHNL1 SAVE FOR IMMEDIATE CONVERT SILUP EQU * ISZ XTEMP BUMP DATA POINTER JSB DDATA READ DATA JMP DABRT IF OUT OF RANGE ABORT STA XTEMP,I SAVE STA GAIN1 SAVE FOR IMMEDIATE CONVERT JSB .CNVT CONVERT NOW ISZ XCNTR DONE? JMP SILUP NO - CONTINUE .SIRP EQU * LDA DREPT REPEAT? SSA,RSS JMP START GET NEXT COMMAND SI.RP EQU * CLA MODE IS 0 (SINGLE) LDB RDGS JSB .DAC. CONVERT CHANLS JMP .SIRP REPEAT SKP ..SI EQU * ADC SINGLE CHANNEL TEST LDA LU.PO DEFAULT TO DEFAULT LIST DEVICE JSB GETLU BUT SEE IF ALTERNATE SUPPLIED JMP RREAD ALTERNATE IS BgAD STA LSTDV SAVE LU OF LIST DEVICE JSB ADCCL CLEAR PAST TEST FLAGS CCA STA .SC SET SINGLE CHANNNEL TEST FLAG JSB ADCEX INTIALIZE FOR TEST LDB D2 \ LDA GAIN GET BOX,CARD, SSA CHANL & INB GAIN IF NECESSARY JSB BCCG / JMP AABRT IF ANY < 0 ABORT STA CHNL1 SAVE CHANL ADDR STA CHNL2 STB GAIN1 SAVE GAIN STB GAIN2 SIRD EQU * LDA RDGS SET # OF READINGS LDB DELAY DELAY? SSB,RSS JMP SIMPX NO CMA,INA YES STA D.CNT SAVE # READINGS CLA,INA SET UP FOR 1 READING SIMPX EQU * STA SIRGS CLA SET UP STA SIOFS DATA BUFFER OFFSET MPXSI EQU * ISZ SIOFS INCREMENT BUFFER OFFSET JSB MPX CALL FOR READINGS DEF ZERO DEF CHNL1 DEF GAIN1 DEF EXTSS SIRGS NOP SIOFS NOP LDB DELAY DELAY? SSB,RSS JMP SISTS NO ISZ D.CNT YES - DECREMENT READINGS COUNT JMP MPXSI IF NOT DONE, CONTINUE READINGS JMP SISTS IF DONE, PRINT STATS SISTS EQU * LDA GAIN1 GET GAIN JSB GETGN LOOK UP REAL GAIN DST RG1 STORE GAIN FOR CONVERSION DST RG2 STORE GAIN FOR CONVERSION LDA RDGS GET # OF READINGS CLB,INB POINT TO START OF DATA BUFFER JSB CNVRT CONVERT DATA JMP PCERR PACE FAST - ABORT LDA RDGS CLB JSB STATS CALCULATE & OUTPUT STATISTICS LDA RPEAT GET REPEAT FLAG SSA,RSS IF FLAG IS CLEAR, JMP START GET NEXT COMMAND JMP SIRD ELSE REPEAT SKP .TR EQU * TRANSFER INPUT CONTROL CLA DEFAULT TO POP JSB GETLU GET LU IF ANY JMP RREAD BAD LU SZA,RSS IF NO LU JMP POP THEN POP LU STACK  LDB LU.IN PUSH CURRENT LU STA LU.IN ON STACK STB LUSTK AND SET CURRENT LU TO NEW JSB DVR IS NEW LU A KEYBOARD? CPA D5 DVR05 SAME AS DVR00 CLA LDB LU.IN GET NEW LU SZA IF DVR00 JMP START GET NEXT COMMAND LDA LU.FB SAVE FALLBACK LU STB LU.FB SET NEW LU AS FALLBACK ALSO CPA LU.PO FB SAME AS LIST LU? STB LU.PO YES - SET NEW LIST LU ALSO JMP START GET NEXT COMMAND POP EQU * JSB POPLU POP LU STACK JMP START GET NEXT COMMAND SPC 1 D.CNT NOP SKP ..TW EQU * ADC TWO CHANNEL TEST LDA LU.PO DEFAULT TO DEFAULT LIST DEVICE JSB GETLU BUT SEE IF ALTERNATE SUPPLIED JMP RREAD ALTERNATE IS BAD STA LSTDV SAVE LU OF LIST DEVICE JSB ADCCL CLEAR PAST TEST FLAGS CCA STA .TC SET TWO CHANNEL TEST FLAG JSB ADCEX INITIALIZE FOR TEST LDB D2 \ LDA GAIN GET BOX,CARD, SSA CHANL & INB GAIN IF NECESSARY JSB BCCG / JMP AABRT IF ANY < 0 ABORT STA CHNL1 SAVE FIRST CHANL ADDR STB GAIN1 SAVE FIRST CHANL GAIN LDB D2 \ LDA GAIN GET BOX,CARD, SSA CHANL & INB GAIN IF NECESSARY JSB BCCG / JMP AABRT IF ANY < 0 ABORT STA CHNL2 SAVE SECOND CHANL ADDR STB GAIN2 SAVE SECOND CHANL GAIN LDA DM100 SET UP LOOP STA XCNTR TO CONSTRUCT CHANL BUFFER LDA ACHLS GCLUP EQU * INA COMPUTE 1ST CH ADDR STORE ADDR LDB CHNL1 GET CHANL ADDR STB A,I STORE CHANL ADDR INA COMPUTE 2ND CH ADDR STORE ADDR LDB CHNL2 GET CHANL ADDR STB A,I STORE CHANL ADDR ISZ XCNTR DONE? JMP GCLUP NO - CONTINUE TWX EQU * x LDA RDGS STA TWRGS SET # OF READINGS JSB MPX CALL FOR READINGS DEF D1 DEF CHNLS DEF GAINS DEF EXTSS TWRGS NOP DEC 1 LDA GAIN1 GET GAIN FOR CHANL 1 JSB GETGN LOOK UP REAL GAIN DST RG1 STORE GAIN FOR CONVERSION LDA GAIN2 GET GAIN CHANL 2 JSB GETGN LOOK UP REAL GAIN DST RG2 STORE GAIN FOR CONVERSION LDA RDGS CLB,INB JSB CNVRT CONVERT DATA JMP PCERR PACE FAST - ABORT LDA RPEAT GET REPEAT FLAG SSA TEST JMP TWWT REPEAT LDA LSTDV CMA,INA \ LDB M31 OUTPUT "1ST CH" JSB PRMPT / LDA RDGS \ CLB,INB COMPUTE & OUTPUT STATISTICS JSB STATS / LDA LSTDV CMA,INA \ LDB M16 OUTPUT "2ND CH" JSB PRMPT / LDA RDGS \ LDB D2 COMPUTE & OUTPUT STATISTICS JSB STATS / JMP START GET NEXT COMMAND TWWT EQU * JMP TWX DM100 DEC -100 SKP PCERR EQU * PACE FAST LDA LU.FB \ LDB PCMSG OUTPUT "PACE ERROR" JSB PRMPT / AABRT EQU * ADC TEST ABORT LDA LU.FB \ LDB ABMSG OUTPUT "ABORT" JSB PRMPT / CLA STA LSTOK DISALLOW LIST STA RPTOK DISALLOW REPEAT JMP .NO NORMALIZE AND GET NEXT COMMAND DABRT EQU * DAC TEST ABORT CLA STA DRPOK DISALLOW REPEAT LDA LU.FB \ LDB ABMSG OUTPUT "ABORT" JSB PRMPT / JMP .NO NORMALIZE AND GET NEXT COMMAND DLYER EQU * LDA LU.FB \ LDB DLMSG OUTPUT "CAN'T HAVE LAD AND DELAY" JSB PRMPT / JMP START !TERM EQU * TERMINATE VERIFICATION JSB EXEC DEF *+2 DEF D6 ADPMT ASC 1,>_ ADC MODE PROMPTER DAPMT ASC 1,<_ DAC MODE PROMPTER ABMSG DEF *+1 DEC -5 ASC 3,ABORT PCMSG DEF *+1 DEC -10 ASC 5,PACE ERROR DLMSG DEF *+1 DEC -22 ASC 11,CAN'T HAVE LAD & DELAY SKP HED HP2313 RTE VERIFICATION -- LISTER UTILITIES LF NOP OUTPUT A LINE FEED ON LIST DEVICE JSB EXEC DEF *+5 DEF D2 DEF LSTDV DEF BLANK DEF DM1 JMP LF,I SPC 5 LISTO NOP LIST (A) CHARS ON LIST DEVICE STA CNTR1 JSB EXEC DEF *+5 DEF D2 DEF LSTDV DEF INBFR DEF CNTR1 JMP LISTO,I SPC 5 DFTCH NOP FETCH REAL VALUE AND STUFF IN FMTO1 LDB FF1 BLS ADB ADTA2 DLD B,I DST FMTO1 JMP DFTCH,I SKP * EXTRACT LU FROM COMMAND IN BUFFER * * LDA DFLT * JSB GETLU * (ERROR RETURN) * : * * DFLT - DEFAULT VALUE FOR LU IF NONE GIVEN * * DFLT NOP GETLU NOP STA DFLT SAVE DEFAULT VALUE LDA T.LOG FETCH T-LOG CPA D2 IF = 2 JMP ENDLU THEN RETURN DEFAULT VALUE STA CTEMP SAVE T-LOG ADA DM80 SUBTRACT 80 SSA,RSS IF > 80 JMP NOFIL THEN NO BLANK FILL STA CNTR1 SET COUNT = 80-T-LOG BFILL EQU * BLANK FILL ISZ CTEMP BUMP CHARACTER POINTER LDA CTEMP GET CHARACTER POINTER LDB AINBF GET BUFFER ORIGIN JSB CSTOR STORE CHARACTER OCT 40 BLANK ISZ CNTR1 BUMP COUNTER JMP BFILL DO NEXT CHAR NOFIL EQU * LDA INBFR+1 3 RD COMMAND CHARACTER AND UPPER MUST BE A BLANK ALF,ALF CPA B40 RSS JMP GETLU,I ERROR RETURN LDA D4 \ LDB AINBF \ JSB .FFB. CALL FRMTR TO CONVERT LU JSB .FFI. / JMP LUOK? / ENDLU EQU * LDA DFLT SEND BACK JMP GRTRN DEFAULT LU LUOK6? EQU * JSB LUCHK CHECK LU FOR VALID JMP GETLU,I ERROR RETURN - NOT VALID GRTRN EQU * ISZ GETLU GOOD VALUE JMP GETLU,I RETURN DM80 DEC -80 HED HP2313 RTE VERIFICATION -- UTILITIES SKP ADCCL NOP CLEAR PAST ADC TEST FLAGS CLB STB .SC CLEAR SINGLE CH FLAG STB .TC CLEAR 2 CH FLAG STB .SS CLEAR SEQ SCAN FLAG STB .SCLD CLEAR SCALED SEQ FLAG JMP ADCCL,I RETURN SKP ADCEX NOP ADC EXECUTION INITIALIZATION CCA STA RPTOK ALLOW REPEAT STA LSTOK ALLOW LIST STA DIFF DEFAULT TO DIFFERENTIAL LDA .SS GET SEQUENTIAL SCAN FLAG AND GAIN IF SEQ AND GAIN STA .SCLD THEN SCALED SEQUENTIAL LDB M13 ASK FOR RDGS SSA LDB M18 OR CHANLS/GROUP LDA D1 READ >= 1 CHAR JSB CREAD READ REPLY LDA .SCLD GET SCALED SEQ FLAG CLB SSA IF SET STB .SS THEN CLEAR SEQ FLAG JSB .NUMR GET NO = JMP AABRT IF < 0 ABORT LDA .TC GET TWO CHANNEL FLAG SSA IF TWO CHANNEL JMP TCCHK MUST BE # 1 LDA .SCLD GET SCALED SEQ FLAG SSA,RSS IF SCALED SEQ JMP ADCEX,I NOT SCALED SEQ ADB D25 THEN MUST BE <=25 SSB JMP RREAD > 25 JMP ADCEX,I RETURN TCCHK EQU * TWO CHANNEL CPB DM1 READINGS CANNOT BE 1 JMP RREAD = 1 - ERROR JMP ADCEX,I RETURN SKP DACCL NOP CLEAR PAST DAC TEST FLAGS CLB STB .ALT CLEAR AL FLAG STB .ERS CLEAR ER FLAG STB .GRP CLEAR GR FLAG STB .LISA CLEAR LI FLAG STB .RAN CLEAR RA FLAG STB .SICH CLEAR SI FLAG JMP DACCL,I RETURN SKP DACEX NOP DAC EXECUTION INITIALIZATION CCA STA DRPOK ALLOW REPEAT LDA .ALT IF AL SSA JMP DACEX,I SKIP "NO" REQUEST LDA D1 READ >= 1 CHAR LDB M13 PROMPT W/M13 JSB CREAD READ REPLY JSB .NUMR GET NO = JMP DABRT IF < 0 THEN ABORT JMP DACEX,I RETURN SKP .NUMR NOP LDA IMAX GET LARGEST INTEGER STA FF1 DEFAULT RDGS JSB FFIN CONVERT REPLY LDA FF1 FETCH RDGS SSA IF < 0 JMP .NUMR,I THEN ABORT SZA,RSS IF = 0 JMP RREAD THEN BAD STA RDGS SET RDGS CMA,INA NEGATE LDB A MOVE TO B ADA D200 ADD 200 SSA IF RDGS>200 JMP RREAD THEN ERROR ISZ .NUMR ADJUST RETURN ADDR JMP .NUMR,I RETURN SKP * LOOK UP GAIN IN GAIN TABLE FROM GAIN CODE * * LDA GAIN * JSB GETGN * * GAIN - GAIN CODE (0-8) * * GETGN NOP ALS MULTIPLY BY 2 ADA GTABL ADD GAIN TABLE BASE DLD A,I LOAD VALUE JMP GETGN,I RETURN * GTABL DEF *+1 DEC 1000. DEC 500. DEC 250. DEC 125. DEC 100. DEC 50. DEC 25. DEC 12.5 RD1 DEC 1. SKP * LOGICAL UNIT VALIDITY CHECK * * LDA LU * JSB LUCHK * (ERROR RETURN) * : * * LUCHK NOP LU VALIDITY CHECK LDB A MOVE LU TO (B) CMB,INB NEGATE SSB,RSS IF <= 0 JMP LUCHK,I THEN ERROR ADB 1653B IF > MAX LU SSB IN SYSTEM JMP LUCHK,I THEN ERROR ISZ LUCHK GOOD JMP LUCHK,I RETURN SKP * DVR62 INTERFACE RETURN CHECK * * LDA XPCTD * JSB C2313 * (ERROR RETURN IF XPCTD = 0) * (ERROR RETURN IF XPCTD = 1) * : * * XPCTD - RETURN CODE EXPECTED * * C2313 NOP DVR62-I/F RETURN CODE CHECKER CPA RETRN RETURN CODE A = EXPECTED? JMP RGOOD YES - GOOD CPA D1 NO - EXPECTED = 1? JSB RSTQ YES - RE-ISSUE ALL CALLS LDA RETRN WAS ERROR CPA DM4 TRANSMISSION ERROR? JMP XMSNR YES - PRINT ERROR MESSAGE LDA RETRN \ JSB I.OUT \ JSB CMOVE \ DEC 1 CALL FRMTR TO DEF I.B CONVERT ERROR NUMBER DEC 16 / DEF M.23 / DEC 6 / LDA LU.FB \ LDB M23 OUTPUT ERROR MESSAGE JSB PRMPT / JMP C2313,I RETURN XMSNR EQU * LDA LU.FB \ LDB M22 OUTPUT ERROR MESSAGE JSB PRMPT / JMP C2313,I RETURN RGOOD EQU * ISZ C2313 ADJUST ISZ C2313 RETURN ADDR & JMP C2313,I RETURN SPC 5 RSTQ NOP RESET 2313 Q BUFFER JSB B2313 DEF *+3 DEF Q DEF QLEN ISZ C2313 TAKE SECOND ERROR EXIT JMP RSTQ,I SPC 3 M23 DEF *+1 DEC -21 M.23 ASC 11,INTERNAL ERROR XXXXXX SKP * FREE FIELD INPUT ROUTINE * * ENTRY POINTS: * * LDA OFSET * LDB BUFFR * JSB .FFB. * * OFSET - STARTING CHARACTER POSITION IN BUFFER * BUFFR - CHARACTER BUFFER * * * JSB .FFI. * (NORMAL RETURN) * (DEFAULT RETURN) * * INTEGER RETURNED IN (A) * * * JSB .FFR. * (NORMAL RETURN) * ----- * (DEFAULT RETURN) * * REAL VALUE RETURNED IN (B,A) * * .FFB. NOP INITIALIZATION ENTRY STA .OFS. SAVE OFFSET STB B.F.R SAVE BUFFER ADDR CCA STA E.O.C SET END ON COMMA FLAG JMP .FFB.,I RETURN .I.R. NOP INT/REAL FLAG * * .FFI. NOP INTEGER ENTRY CCA STA DPA? SET DEC PT ALLOWED FLAG CLA STA .I.R. SET INT/REAL FLAG TO INT JMP .SKP. GO CONVERT * * .FFR. NOP REAL ENTRY CCA STA DPA? SET DEC PT ALLOWED FLAG STA .I.R. SET INT/REAL FLAG TO REAL SKP .SKP. EQU * CCA STA .NEG. CLEAR < 0 FLAG STA #NEG# #SKP# EQU * LDA .OFS. GET OFFSET LDB B.F.R GET BUFFER ADDR JSB CFTCH GET A CHAR CPA COMMA COMMA? JMP DFLT? MAY BE DEFAULT CPA MINUS MINUS? JMP LTZRO YES - SET < 0 FLAG CPA PLUS PLUS? JMP .BMP. YES - IGNORE CPA DOT DEC PT? JMP .GO. YES - GO CONVERT CPA E "E"? JMP .GO. YES - GO CONVERT JSB D.CHK DIGIT CHECK RSS JMP .GO. NUMERIC - GO CONVERT .BMP. EQU * ISZ .OFS. BUMP CHAR POINTER JMP #SKP# TRY NEXT CHAR LTZRO EQU * CLA STA .NEG. SET < 0 FLAG STA #NEG# JMP .BMP. TRY ANOTHER CHAR DFLT? EQU * POSSIBLE DEFAULT LDB E.O.C GET END ON COMMA FLAG SSB SET? JMP D.FLT YES - ITS A DEFAULT CCA STA E.O.C SET END ON COMMA FLAG JMP .BMP. NO - SKIP THIS COMMA D.FLT EQU * ISZ .OFS. POINT PAST COMMA ISZ .FFI. ADJUST INT RETURN ADDR ISZ .FFR. ADJUST REAL ISZ .FFR. RETURN ADDR LDA .I.R. GET INT/REAL FLAG SSA,RSS SET? JMP .FFI.,I NO - RETURN INTEGER JMP .FFR.,I YES - RETURN REAL .NEG. NOP NEGATIVE MANTISSA FLAG #NEG# NOP SKP .GO. EQU * CLA STA DECXP ZERO DEC EXPONENT CLB JSB .INT. INPUT INTEGER STA .RR.+1 SAVE STB .RR. RESULT LDB DGTS GET DIGIT COUNT SZB 0? JMP XDGTS NO - MUST BE OVERFLOW DIGITS LDA .OFS. GET OFFSET LDB B.F.R GET BUFFER ADDR JSB CFTCH GET CHAR ISZ .OFS. BUMP CHAR POINTER CPA DOT DEC PT? JMP .FRAC YES - GO GET FRACTION JMP .XPNT MUST BE "E" - GO GET EXP SPC 2 .DX. EQU * ADA DECXP UPDATE DEC EXPONENT STA DECXP SAVE XDGTS EQU * GET OVERFLOW DIGITS-DISCARD CLA CLB JSB .INT. COUNT DIGITS FOR EXPONENT LDA DGTS GET DIGIT COUNT SZA ANY? JMP .DX. YES - ADD TO EXPONENT LDA .OFS. \ LDB B.F.R GET CHAR THAT TERM INTEGER JSB CFTCH / CPA COMMA COMMA? JMP F.C YES - DONE INPUTTING CPA DOT DEC PT? JMP FRAC. YES - GET FRACTION CPA E "E"? JMP X.PNT YES - GET EXPONENT CPA PLUS PLUS? JMP .XSGN YES - GET EXPONENT CPA MINUS MINUS? JMP .XSGN YES - GET EXPONENT F.C EQU * ISZ .OFS. POINT PAST COMMA CCA,RSS SET END ON COMMA FLAG B.PNT EQU * CLA CLEAR END ON COMMA FLAG STA E.O.C SAVE END ON COMMA FLAG LDA D31 INITIALIZE BINARY POINT STA BINXP : DLD .RR. GET INTEGER JSB NORML NORMALIZE LDA DECXP GET DEC EXPONENT CMA,SSA,RSS CHECK FOR < 0 JMP NEGXP DEC EX < 0 STA DECXP SAVE COMPLEMENT RSS INCREMENT FIRST TIME TO NEGATE POSXP EQU * JSB MPY10 MULTIPLY BY 10 ISZ DECXP DONE? JMP POSXP NO - CONTINUE LDA .RR. RESTORE (A) - (B) OK JMP .PACK EXIT NEGXP EQU * JSB DIV10 DIVIDE BY 10 ISZ DECXP DONE? JMP NEGXP NO - CONTINUE JMP .PACK EXIT SKP * * * EXPONENT INPUT SECTION * * X.PNT EQU * ISZ .OFS. POINT PAST E RSS .XPNT EQU * ISZ .RR.+1 IF NO MANTISSA SET TO 1 .XSGN EQU * CLA STA DPA? CLEAR DEC PT ALLOWED FLAG STA .NXP. CLEAR XP < 0 FLAG X.SLP EQU * LDA .OFS. GET OFFSET LDB B.F.R GET BUFFER ADDR JSB CFTCH GET CHAR CPA COMMA COMMA? JMP F.C YES - DONE CPA SPACE BLANK? JMP B.PNT YES - DONE CPA MINUS MINUS? JMP LZROX SET XPNT < 0 CPA PLUS PLUS? JMP .BP. YES - IGNORE JSB D.CHK DIGIT CHECK RSS JMP X.SGN NUMERIC - CONVERT EXPONENT .BP. EQU * ISZ .OFS. BUMP CHAR POINTER JMP X.SLP TRY ANOTHER CHAR LZROX EQU * CCA STA .NXP. SET XP < 0 FLAG JMP .BP. TRY NEXT CHAR X.SGN EQU * CLA CLB JSB .INT. INPUT EXPONENT SZB LDA IMAX GET MAX INTEGER AND B77 DON'T KEEP MORE THAN NEEDED LDB .NXP. GET XP < 0 FLAG SSB SET? CMA,INA YES - NEGATE ADA DECXP UPDATE DEC EXPONENT STA DECXP SAVE XSGN. EQU * LDA DGTS GET DIGIT COUNT SZA,RSS 0? JMP X.X YES - DONE CLA CLB JSB .INT. THROW AWAY OTHER DIGITS JMP XSGN. SEE IF DONE X.X EQU * LDA .OFS. LDB B.F.R JSB CFTCH CPA COMMA END ON COMMA? JMP F.C YES - SET FLAG JMP B.PNT NO - NO FLAG, SAVE CHAR .NXP. NOP NEGATIVE EXPONENT FLAG SKP * * * FRACTION INPUT SECTION * * .FRAC EQU * CLA STA DPA? CLEAR DEC PT ALLOWED FLAG CLB JSB .INT. INPUT FRACTION JMP F.RAC FRAC. EQU * ISZ .OFS. POINT PAST DEC PT CLA STA DPA? CLEAR DEC PT ALLOWED FLAG LDA .RR.+1 GET INTEGER LDB .RR. PART JSB .INT. CONTINUE INPUTTING NUMBER F.RAC EQU * STA .RR.+1 SAVE STB .RR. RESULT LDA DGTS GET DIGIT COUNT CMA,INA NEGATE ADA DECXP UPDATE DEC XPNT STA DECXP SAVE FRA.C EQU * CLA STA DPA? CLEAR DEC PT ALLkOWED FLAG CPA DGTS CHECK FOR NO DIGITS JMP FR.AC IF NONE THEN DONE CLB JSB .INT. THROW AWAY UNUSED PRECISION JMP FRA.C SEE IF DONE FR.AC EQU * LDA .OFS. \ LDB B.F.R GET CHAR THAT TERM FRAC JSB CFTCH / CPA COMMA COMMA? JMP F.C YES - DONE CPA E "E"? JMP X.PNT YES - GET EXPONENT CPA PLUS PLUS? JMP .XSGN YES - GET EXPONENT CPA MINUS MINUS? JMP .XSGN YES - GET EXPONENT JMP B.PNT DONE SKP .PACK EQU * ISZ #NEG# CHECK < 0 FLAG RSS - (SKIP) JMP .P1 + CONTINUE BELOW CMA DOUBLE WORD NEGATE CMB,INB,SZB,RSS INA .P1 CLE,SZA,RSS IF ZERO, THEN EXIT JMP .P3 * * ROUNDING SECTION * ADB B177 ADD IN ROUND FOR NEGATIVE NUM SSA,RSS IF POSITIVE INB 1 MORE IS NECESSARY CLO CLEAR TO TEST FOR A OVFL SEZ TEST FOR OVFLO OUT OF B CLE,INA IF SO, BUMP A REG SOS IF THE BUMP CAUSES OVERFLO RAL SKIP THIS SHIFT(A=100000,B=0) STA .RR. SAVE UPPER MANTISSA SSA,SLA,RSS TEST FOR TOP 2 BITS=1 JMP .P2 IF STILL NORMALIZED, SKIP * * IF ROUND CAUSED UNNORMALIZED NUMBER * CCA THEN DECREMENT EXPONENT ADA BINXP STA BINXP LDA .RR. ARS,SLA,ALS DUMP LO BIT, AND SKIP(UNCOND) .P2 RAR UNDOES "RAL" ABOVE IF N NORMAL * * AT THIS POINT, A&B ARE NORMALIZED & ROUNDED, AND THE * TRUE EXPONENT WILL BE "BINXP" * STA .RR. SAVE MANTISSA AGAIN LDA B REMOVE LOW ORDER 8 BITS OF B. AND BM400 (177400) MASK STA B REPLACE LDA BINXP SOC INA ADA B200 TEST FOR EXPON UNDERFLOW SSA JMP XUNDR ADA BM400 TEST FOR EXPON OVERFLOW G SSA,RSS JMP XOVER ADA B200 RESTORE ORIGINAL EXPON RAL POSITION SIGN TO LSB AND B377 MASK TO 8 BITS ADB A PACK INTO B LDA .RR. RESTORE HIGH PART JMP .P3 EXIT B177 OCT 177 B200 OCT 200 B377 OCT 377 BM400 OCT -400 * * OVERFLOW UNDERFLOW SECTION ***** * XUNDR CLA RETURN ZERO FOR UNDERFLOW CLB JMP .P3 XOVER LDA IMAX LDB DM2 INFIN= 77777 177776 * INSURE PROPER SIGN ON OVERFLOW ISZ .NEG. TEST < 0 FLAG RSS <0 JMP .P3 > 0 LDA RMAXN LDB RMAXN+1 .P3 EQU * DST .RR. SAVE VALUE LDA .I.R. GET INT/REAL FLAG SSA SET? JMP .REAL YES - RETURN REAL DLD .RR. GET VALUE JSB IFIX FIX IT SOS CHECK OVERFLOW JMP .FFI.,I NO OVERFLOW - RETURN * INSURE PROPER SIGN WHEN OVERFLOW LDB .RR. GET SIGN SSB <0? CMA,INA YES - RETURN BIG NEGATIVE JMP .FFI.,I RETURN .REAL EQU * DLD .RR. GET VALUE JMP .FFR.,I RETURN .OFS. NOP B.F.R NOP .R. BSS 2 .RR. BSS 2 BINXP NOP DECXP NOP DGTS NOP DPA? NOP E.O.C NOP COMMA OCT 54 DOT OCT 56 E OCT 105 MINUS OCT 55 PLUS OCT 53 SPACE OCT 40 SKP D.CHK NOP ADA BM60 CHAR < "0"? SSA JMP D.CHK,I YES - RETURN LDB A MOVE TO (B) ADB DM10 > "9"? SSB ISZ D.CHK DIGIT IS OK JMP D.CHK,I RETURN BM60 OCT -60 SKP .INT. NOP DST .R. SAVE INITIAL VALUE CLA STA DGTS CLEAR DIGIT COUNT OCHK EQU * RRL 5 CHECK IMPENDING OVERFLOW SZA JMP R.INT OVERFLOW RETURN LDA .OFS. \ LDB B.F.R GET CHAR JSB CFTCH / JSB D.CHK DIGIT CHECK JMP .SCHK CHECK FOR VALID SPEC CHAR STA .TMP. } SAVE DIGIT VALUE ISZ DGTS BUMP DIGIT COUNTER ISZ .OFS. BUMP CHAR POINTER DLD .R. \ LSL 1 \ DST .R. *10 (*2+*8) LSL 2 / JSB .ADD. / DEF .R. CLE ADA .TMP. ADD NEW DIGIT VALUE SEZ OVERFLOW LOW 16 BITS? INB YES - INCREMENT HI 16 BITS DST .R. SAVE CLA JMP OCHK TRY NEXT DIGIT R.INT EQU * DLD .R. GET VALUE TO RETURN JMP .INT.,I RETURN .TMP. NOP .SCHK EQU * IGNORE INVALID CHARS LDA .OFS. \ LDB B.F.R GET CHAR JSB CFTCH / CPA E "E"? JMP R.INT YES - OK CPA PLUS PLUS? JMP R.INT YES - OK CPA COMMA COMMA? JMP R.INT YES - OK CPA MINUS MINUS? JMP R.INT YES - OK CPA SPACE BLANK? JMP R.INT YES - OK LDB DPA? GET DEC PT ALLOWED FLAG SSB,RSS CLEAR JMP NODPA YES - DEC PT NOT ALLOWED CPA DOT DEC PT? JMP R.INT YES - OK NODPA EQU * ISZ .OFS. SKIP CHAR CLA JMP OCHK TRY NEXT CHAR SKP NORML NOP SZA,RSS IF A=B=0 SZB JMP NRML1 STA BINXP SET EXP=0 ALSO JMP NRML3 AND RETURN NRML2 STA .RR. COME HERE TO SHIFT LEFT. CCA THIS GOES ONE SHIFT TOO FAR, ADA BINXP WE BACK UP LATER STA BINXP SUBTRACT ONE FROM EXPONENT LDA .RR. CLE,ELB ELA NRML1 SSA,RSS SHIFTED INTO SIGN BIT?? JMP NRML2 NO, SHIFT LEFT SOME MORE. CLE,ERA SHIFT RIGHT ONE. ERB ISZ BINXP BUMP EXPONENT AND NOP NRML3 STA .RR. STORE NORMALIZED VALUE STB .RR.+1 JMP NORML,I RETURN SKP .ADD. NOP 32 BIT ADD STB T.M.P SAVE HI BITS LDB .ADD.,I GET ADDR / CLE ADA B,I ADD LOW BITS SEZ,INB OVERFLOW? ISZ T.M.P BUMP HI BITS ON OVERFLOW LDB B,I GET HI BITS ADB T.M.P ADD HI BITS ISZ .ADD. ADJUST RETURN ADDR JMP .ADD.,I RETURN T.M.P NOP SKP MPY10 NOP MULTIPLIES MANTISSA BY 10 LDA .RR. IF NUMBER IS ZERO, SZA,RSS JMP MPY10,I RETURN. LDB BINXP ELSE MULTIPLY BY 8 ADB D3 STB BINXP LDB .RR.+1 GET MANTISSA CLE,ERA DIVIDE ERB BY CLE,ERA 4. ERB,CLE ADB .RR.+1 DOUBLE ADD, GIVING 1.25*.RR. SEZ INA CARRY TO HIGH ORDER ADA .RR. JSB NORML NORMALIZE AND STORE BACK JMP MPY10,I RETURN TENTH OCT 63146 SKP DIV10 NOP DIVIDES MANTISSA BY 10 LDA .RR. IF NUMBER IS ZERO, SZA,RSS JMP DIV10,I RETURN. LDB DM2 ADJUST EXPONENT ADB BINXP STB BINXP LDA .RR.+1 MULTIPLY LOWER MANTISSA CLE,ERA BY 63146B AFTER SHIFTING MPY TENTH SO THAT SIGN BIT IS ZERO CLE,ELA SHIFT BACK ELB,CLE THE [B,A] RESULT ADA B ADD HIGH PART OF RESULT TO LOW SEZ PART FOR CROSS PRODUCT INB STB .RR.+1 LDA .RR. MULTIPLY HIGH MANTISSA MPY TENTH THE SAME WAY CLE ADA B ADA .RR.+1 SEZ INB CARRY STB .RR. & EXCHANGE STA B THE REGISTERS LDA .RR. AND JSB NORML NORMALIZE JMP DIV10,I SKP * FREE FIELD INPUT * * CLA OR CCA * JSB FFIN * * FF1 NOP FF2 NOP FF3 NOP FF4 NOP NOP FFIN NOP FREE FIELD INPUT ROUTINE STA FF3 SAVE "ACCEPT 3RD INTEGER" FLAG CLA,INA \ LDB AINBF INITIALIZE FORMATTER JSB .FFB. / JSB .FFI. o READ 1 ST INTEGER STA FF1 SAVE 1 ST INTEGER JSB .FFI. READ 2 ND INTEGER STA FF2 SAVE 2 ND INTEGER ISZ FF3 CHECK "3 RD INTEGER" FLAG RSS JMP FREAL SKIP 3 RD INTEGER READ JSB .FFI. READ 3 RD INTEGER STA FF3 SAVE 3 RD INTEGER FREAL EQU * READ A REAL JSB .FFR. READ REAL STA FF4 SAVE UPPER STB FF4+1 SAVE LOWER JMP FFIN,I RETURN SKP * FORMATTED OUTPUT * * DLD VALUE * DST FMTO1 * LDA OFFST * LDB BUFR * JSB FMTOT * * VALUE - VALUE TO BE PRINTED * FMTO1 - PARAM STORE FOR FMTOT * OFFST - CHARACTER NO. IN BUFFER TO START FIELD * BUFR - BUFFER ADDR * * FMTO1 NOP NOP FMTOT NOP STA .OFF. SAVE OFFSET STB .BFR. SAVE BUFFER ADDR DLD FMTO1 \ JSB R.OUT \ JSB CMOVE \ DEC 1 CALL FORMATTER DEF R.B TO CONVERT REAL DATA .OFF. NOP / .BFR. NOP / DEC 10 / JMP FMTOT,I RETURN SKP * YES,NO,ABORT READER * * LDB AMESS * JSB QYNA * * AMESS - MESSAGE ADDRESS * * * QYNA NOP LDA D2 JSB CREAD CALL READER TO READ RESPONSE CLA LDB INBFR FETCH FIRST TWO INPUT CHARS CPB YE CHECK FOR YES CCA YES - RETURN -1 CPB NO CHECK FOR NO CLA,INA NO - RETURN 1 SZA IF NEITHER YES OR NO JMP QYNA,I YES OR NO SO RETURN CPB AB THEN MUST BE AB JMP QYNA,I OK JMP RREAD ELSE ERROR YE ASC 1,YE AB ASC 1,AB SKP * INTEGER OUTPUT FORMATTER * * LDA VALUE * JSB I.OUT * * VALUE - INTEGER VALUE TO BE CONVERTED TO ASCII * CHARS WILL BE IN BUFFER "I.B" * * I.V NOP I.OUT NOP STA I.V SAVE VALmUE TO CONVERT CPA MXNEG =-32768? JMP BIGM YES - SPECIAL CASE SSA,RSS > 0? JMP I.POS YES - NO SIGN CMA,INA NEGATE STA I.V SAVE CCA,RSS SET < 0 FLAG I.POS EQU * CLA CLEAR < 0 FLAG STA I.M? SAVE < 0 FLAG CLA,INA INITIALIZE LEADING STA I.LZ ZERO COUNT LDB AI.B GET BUFFER ADDR JSB CSTOR STORE BLANK IN FIRST CHAR OCT 40 LDA DM5 SET UP LOOP STA I.CNT TO CONVERT I.LUP EQU * CLB CLEAR FOR DIVIDE LDA I.V GET VALUE DIV D10 DIVIDE BY 10 STA I.V SAVE REST OF NUMBER SZB = 0? JMP N.Z # 0 SZA ALL OTHER DIGITS 0? JMP N.Z NO - ISZ I.LZ YES - BUMP LEADING ZERO COUNT LDB BM20 BLANK LEADING ZERO N.Z EQU * ADB B60 MAKE CHARACTER STB I.CHR SAVE FOR STORE LDA I.CNT FIND CHARACTER CMA,INA POSITION TO INA STORE CHARACTER LDB AI.B GET ADDR JSB CSTOR STORE CHARACTER I.CHR NOP ISZ I.CNT DONE? JMP I.LUP NO - CONTINUE LDA I.B+2 IOR B60 STA I.B+2 LDA I.M? SEE IF NEED "-" SSA,RSS JMP I.OUT,I RETURN LDA I.LZ GET CHAR POSITION FOR "-" LDB AI.B GET BUFFER ADDR JSB CSTOR STORE "-" OCT 55 JMP I.OUT,I RETURN BIGM EQU * LDA BIG.M GET "-3" STA I.B PUT IN BUFFER LDA BIG.M+1 GET "27" STA I.B+1 PUT IN BUFFER LDA BIG.M+2 GET "68" STA I.B+2 PUT IN BUFFER JMP I.OUT,I RETURN B60 OCT 60 D10 DEC 10 BM20 OCT -20 I.LZ NOP I.M? NOP I.CNT NOP MXNEG OCT 100000 I.B BSS 3 BIG.M ASC 3,-32768 SKP * REAL OUTPUT FORMATTER * * DLD VALUE * JSB R.OUT * * VALUE - REAL VALUE TO BE CONVERTED TO ASCII (ABS VALUE * MUST BE < 99.999999 TO AVOID FORMAT OVRFLO) * CHARS WILL BE IN BUFFER "R.B" * * R.V BSS 2 R.OUT NOP DST R.V SAVE VALUE SSA,RSS < 0? JMP R.POS NO - NO MINUS SIGN CLA CLB FSB R.V NEGATE VALUE DST R.V SAVE CCA,RSS SET < 0 FLAG R.POS EQU * CLA CLEAR < 0 FLAG STA R.M? SAVE < 0 FLAG LDA BL.NK GET BLANK LDB .DOT. GET DEC PT STA R.B RESTORE BUFFER STB R.B+1 : STA R.B+2 : STA R.B+3 : STA R.B+4 : DLD R.V GET VALUE FSB R.MAX SUBTRACT MAX SSA,RSS > MAX? JMP R.BAD YES - BAD DLD R.V GET VALUE JSB IFIX EXTRACT INTEGER PART STA R.T SAVE INTEGER PART SZA,RSS = 0? JMP R.ZI YES - SKIP CONVERSION LDB R.M? GET < 0 FLAG SSB SET? CMA,INA YES - MAKE SURE TO GET "-" JSB I.OUT CONVERT INTEGER PART JSB CMOVE MOVE TO BUFFER DEC 4 AI.B DEF I.B DEC 1 AR.B DEF R.B D3 DEC 3 R.ZR EQU * LDA R.T GET INTEGER PART JSB FLOAT FLOAT DST R.T SAVE DLD R.V GET VALUE FSB R.T SUBTRACT INTEGER PART FMP D.1K MULTIPLY BY 1000 DST R.V SAVE AS VALUE JSB IFIX EXTRACT NEXT 3 DIGITS STA R.T SAVE JSB I.OUT CONVERT JSB CMOVE PUT CHARS IN BUFFER DEC 4 DEF I.B DEC 5 DEF R.B DEC -3 TURN BLANKS TO ZEROES LDA R.T GET 3 DIGITS JSB FLOAT FLOAT DST R.T SAVE DLD R.V GET VALUE FSB R.T SUBTRACT OUT DIGITS FMP D.1K MULTIPLY BY 1000 FAD ROUND ROUND LAST DIGIT JSB IFIX EXTRACT 3 DIGITS^ JSB I.OUT CONVERT JSB CMOVE MOVE CHARS TO BUFFER DEC 4 DEF I.B DEC 8 DEF R.B DEC -3 TURN BLANKS TO ZEROES JMP R.OUT,I RETURN R.ZI EQU * LDB R.M? NO INTEGER PART SO SSB,RSS CHECK IF NEED "-" JMP R.ZR NO "-" NEEDED LDA D3 LDB AR.B GET BUFFER ADDR JSB CSTOR STORE "-" OCT 55 JMP R.ZR FINISH FRACTION R.BAD EQU * FORMAT OVERFLOW LDA DM10 SET UP LOOP STA I.CNT TO STORE "$" R.BLP EQU * LDA I.CNT GET CHAR # TO CMA,INA STORE INTO LDB AR.B GET BUFFER ADDR JSB CSTOR STORE "$" OCT 44 ISZ I.CNT DONE? JMP R.BLP NO - CONTINUE JMP R.OUT,I RETURN .DOT. ASC 1, . BL.NK ASC 1, R.M? NOP R.T NOP NOP R.MAX DEC 99.999999 ROUND DEC .5 D.1K DEC 1000. R.B ASC 5,XXX.XXXXXX SKP * CHARACTER MOVE * * JSB CMOVE * DEC FOFST * DEF FBUFR * DEC SOFST * DEF SBUFR * DEC NUMBR * * FOFST - FETCH CHARACTER OFFSET * FBUFR - FETCH BUFFER ORIGIN * SOFST - STORE CHARACTER OFFSET * SBUFR - STORE BUFFER ORIGIN * NUMBR - # OF CHARS TO MOVE (IF < 0 OR ALL * MOVED CHARS WITH "0") * * FOFST NOP FBUFR NOP SOFST NOP SBUFR NOP CMOVE NOP LDA CMOVE,I GET FETCH BUFFER OFFSET STA FOFST SAVE ISZ CMOVE POINT TO NEXT PARAM LDA CMOVE,I GET FETCH BUFFER ADDR STA FBUFR SAVE ISZ CMOVE POINT TO NEXT PARAM LDA CMOVE,I GET STORE BUFFER OFFSET STA SOFST SAVE ISZ CMOVE POINT TO NEXT PARAM LDA CMOVE,I GET STORE BUFFER ADDR STA SBUFR SAVE ISZ CMOVE POINT TO NEXT PARAM LDA CMOVE,I GET COUNT CLB SSA CHECK FOR "OR" OPTION CCB SET "OR" OPTION FLAG STB C.FLG SAVE FLAG SSA,RSS IF NO "OR" OPTION CMA,INA NEGATE COUNT STA CCNTR SAVE ISZ CMOVE ADJUST RETURN ADDR MLOOP EQU * LDA FOFST GET FETCH OFFSET LDB FBUFR AND BUFFER ADDR JSB CFTCH FETCH CHARACTER LDB C.FLG GET "OR" OPTION FLAG SSB SET? IOR B60 YES - OR STA M.CHR SAVE FOR STORE LDA SOFST GET STORE OFFSET LDB SBUFR AND BUFFER ADDR JSB CSTOR STORE CHARACTER M.CHR NOP ISZ FOFST BUMP FETCH OFFSET ISZ SOFST BUMP STORE OFFSET ISZ CCNTR DONE? JMP MLOOP NO - CONTINUE JMP CMOVE,I RETURN C.FLG NOP CCNTR NOP SKP * CHARACTER FETCH * * LDA OFSET * LDB BUFR * JSB CFTCH * * BUFR - CHARACTER BUFFER * OFSET - CHARACTER NUMBER (FIRST IS 1) * CFTCH NOP CLE,ELB SHIFT TO MAKE CHAR ADDR ADA DM1 ADJUST OFFSET ADB A COMPUTE CHAR ADDR CLE,ERB COMPUTE WORD ADDR LDA B,I GET WORD WITH CHAR SEZ,RSS HI OR LO NEEDED? ALF,ALF HI NEEDED AND LOWER MASK JMP CFTCH,I RETURN SKP * CHARACTER STORE * * LDA OFSET * LDB BUFR * JSB CSTOR *CHAR NOP (SET TO CHARACTER) * * CHAR - CHARACTER TO STORE * BUFR - BUFFER TO STORE INTO * OFSET - CHARACTER NUMBER (FIRST IS 1) * * CSTOR NOP CLE,ELB SHIFT TO MAKE CHAR ADDR ADA DM1 ADJUST OFFSET ADB A COMPUTE CHAR ADDR CLE,ERB COMPUTE WORD WITH CHAR LDA LOWER FETCH MASK AND CSTOR,I MASK CHAR TO STORE SEZ,RSS HI OR LO CHAR ALF,ALF HI CHAR STA TEMP SAVE LDA LOWER GET MASK SEZ MASK OUT LO OR HI CHAR? ALF,ALF MASK OUT LO CHAR AND B,I IOR TEMP PUT IN\ NEW CHAR STA B,I STORE IT ISZ CSTOR ADJUST RETURN ADDR JMP CSTOR,I RETURN * LOWER OCT 377 TEMP NOP SKP * CHARACTER STRING READER * * * LDA CMIN * LDB AMESS * JSB CREAD * * CMIN - MINIMUM NUMBER OF CHARS THAT MUST BE READ * AMESS - MESSAGE ADDRESS (OR 0) * * CMESS NOP CMIN NOP CREAD NOP READ CHARACTER STRING STA CMIN SAVE MINIMUM READ LENGTH STB CMESS STORE PROMPT MESSAGE ADDR READ EQU * LDB CMESS GET MESSAGE ADDR SSB CHECK FOR NO PROMPT JMP NOPMT NO PROMPT LDA LU.IN \ LDB CMESS PROMPT W/SPECIFIED MESSAGE JSB PRMPT / NOPMT EQU * LDA DM40 SET UP STA CTEMP TO BLANK LDA BLANK INPUT LDB AINBF BUFFER CLEAR EQU * \ STA B,I \ INB BLANK INPUT BUFFER ISZ CTEMP / JMP CLEAR / LDA LU.IN READ DEVICE IOR BIT08 WITH ECHO STA CLU JSB EXEC CALL EXEC TO DO READ DEF *+5 DEF D1 DEF CLU DEF INBFR DEF DM80 READ UP TO 80 CHARS STB T.LOG SAVE T-LOG (# OF CHARS) STA TEMP SAVE STATUS LDA LU.IN JSB DVR FIND OUT DVR TYPE LDB A PUT RESULT IN (B) LDA BIT05 SET UP TO CHECK BIT 5 CPB D1 DVR01? CLB YES-SAME AS DVR00 CPB D5 DVR05? CLB YES-SAME AS DVR00 SZB FOR DVR00 CHECK BIT 5 LDA BIT07 FOR OTHERS CHECK BIT 7 AND TEMP MASK EOF BIT IN STATUS SZA,RSS CHECK FOR EOF JMP NOEOF NO EOF JSB POPLU ON EOF POP LU STACK JMP READ & READ FROM NEW LU NOEOF EQU * LDA T.LOG FETCH # OF CHARS READ STRIP EQU * STRIP TRAILING BLANKS FR INPUT SZA,RSS IF NO CHARS JMP READ THEN REREAD LDA T.LOG LDB AINBF JSB CFTCH FETCH LAST CHAR IN LINE CPA BIT05 COMPARE FOR BLANK RSS BLANK SO DELETE JMP FDLET NOT BLANK SO DELETE DONE CCA \ ADA T.LOG DELETE CHARACTER STA T.LOG / JMP STRIP CHECK NEXT CHARACTER FDLET EQU * LDA LU.IN FETCH INPUT LU CPA LU.FB COMPARE TO ECHO LU JMP CKSTR EQUAL SO NO ECHO LDA T.LOG GET NUMBER OF CHARS CMA,INA NEGATE STA CTEMP STORE AS OUTPUT COUNT JSB EXEC CALL EXEC TO OUTPUT ECHO DEF *+5 DEF D2 DEF LU.FB DEF INBFR DEF CTEMP CKSTR EQU * LDA INBFR CHECK CHAR 1 AND UPPER FOR A CPA STAR STAR "*" JMP READ STAR = COMMENT SO IGNORE LDA CMIN CHECK FOR CMA,INA MINIMUM ADA T.LOG # OF CHARACTERS SSA IN READ JMP RREAD < MIN SO ERROR JMP CREAD,I RETURN RREAD EQU * JSB ?? PRINT ERROR MESSAGE "??" JMP READ AND READ AGAIN * CLU NOP T.LOG NOP CTEMP NOP DM40 DEC -40 BIT05 OCT 40 BIT07 OCT 200 BIT08 OCT 400 UPPER OCT 177400 STAR OCT 25000 D1 DEC 1 B7 OCT 7 B17 OCT 17 B37 OCT 37 BLANK OCT 20040 SPC 5 * POP LU STACK * * JSB POPLU * * POPLU NOP POP LU FROM LU STACK LDA LUSTK GET LUSTK SSA IF < 0 (EMPTY) LDA LU.FB THEN POP TO FALLBACK LU STA LU.IN SET NEW LU CCB STB LUSTK MARK STACK EMPTY JSB DVR IS NEW LU A KEYBOARD? CPA D5 DVR05 SAME AS DVR00 CLA LDB LU.IN GET NEW LU SZA IF KEYBOARD JMP POPLU,I RETURN LDA LU.FB SAVE FALLBACK LU STB LU.FB THEN MAKE FALLBACK LU NEW CPA LU.PO LIST LU SAME AS FB? STB LU.PO YES - SET LIST LU NEW ALSO JMP POPLU,I RETURN SKP * PROMPT AND MESSAGE PRINTER * * * LDA LU * LDB AMESS * JSB PRMPT * * LU - DEVICE TO OUTPUT TO (IF < 0 THEN NO * DRIVER TYPE CHECK) * AMESS - MESSAGE ADDRESS (OR 0) * * PLU NOP PMESS NOP PRMPT NOP STA PLU SAVE LU TO PROMPT SZB,RSS IF MESSAGE ADDR = 0 LDB APRMT THEN USE NORMAL COMMAND PROMPT STB PMESS SAVE MESSAGE ADDR SSA CHECK FOR UNCONDITIONAL OUTPUT JMP UNCND SKIP DRIVER TYPE CHECK JSB DVR CHECK DRIVER TYPE CPA D5 DVR05 SAME AS DVR00 CLA : SZA IF NOT DVR00 JMP PRMPT,I THEN DON'T PROMPT MSGLK EQU * LDA PMESS,I GET MESSAGE LENGTH STA PLEN SAVE ISZ PMESS POINT TO MESSAGE CHARS JSB EXEC CALL EXEC TO OUTPUT MESSAGE DEF *+5 DEF D2 DEF PLU DEF PMESS,I DEF PLEN JMP PRMPT,I RETURN UNCND EQU * OUTPUT TO LU UNCONDITIONAL CMA,INA SET LU POSITIVE STA PLU SAVE JMP MSGLK LOOK UP MESSAGE PLEN NOP APRMT DEF *+1 DEC -2 PRMT ASC 1,>_: SKP * DRIVER TYPE EXTRACTER * * * LDA LU * JSB DVR * * * LU - LOGICAL UNIT OF DRIVER * * DLU NOP DVR NOP STA DLU SAVE LU JSB EXEC FETCH EQT5 DEF *+4 DEF D13 DEF DLU DEF DLU LDA DLU GET EQT5 ALF,ALF MOVE DRIVER CODE TO LOW HALF AND B77 MASK JMP DVR,I RETURN B77 OCT 77 D13 DEC 13 SKP * ERROR PRINTER * * JSB ?? * * ?? NOP ENTRY ERROR MESSAGE PRINTER LDA LU.FB GET FALLBACK DEVICE LU LDB .??. GET ADDR OF ERROR MESSAGE JSB PRMPT OUTPUT ERROR MESSAGE JMP ??,I RETURN .??. DEF *+1 DEC a-2 ASC 1,?? SKP * BOX,CARD,CHANL,GAIN GETTER, CHECKER AND ASSEMBLER * * LDB INDEX * JSB BCCG * (ABORT RETURN) * : * * INDEX - MODE SETTER 1 = BOX,CARD * 2 = BOX,CARD,CHANL * 3 = BOX,CARD,CHANL,GAIN * 4 = BOX,CARD,GAIN * 5 = BOX,CARD,CHANL (DAC) * * INDEX NOP BCCG NOP STB INDEX SAVE MODE CPB D5 MODE 5 LDB D2 SAME AS MODE 2 ADB AM LOOKUP MESSAGE LDB B,I LDA D2 READ AT LEAST 2 CHARS JSB CREAD READ INPUT LDA IMAX GET MAX INTEGER STA FF1 STA FF2 STA FF3 CLA STA FF4 STA FF4+1 LDB INDEX FETCH MODE CLA PREPARE TO READ ALL 4 VARIABLES CPB D4 CCA IF MODE=4 READ ONLY 3 VARIABLES JSB FFIN CONVERT INPUT LDA FF1 GET FIRST PARAM IOR FF2 OR IN SECOND SSA CHECK FOR <0 JMP BCCG,I LDA FF1 GET FIRST PARAM CMA,INA NEGATE ADA D7 CHECK FOR >7 SSA JMP RREAD >7 LDA FF2 GET SECOND PARAM CMA,INA NEGATE ADA D11 CHECK FOR >11 SSA JMP RREAD >11 CLB LDA INDEX FETCH MODE CPA D1 IF MODE = 1 STB FF3 SET CHANL = 0 LDB FF1 ADB FF2 IF BOX+CARD SZB,RSS =0 THEN JMP RREAD ERROR CPA D1 IF MODE=1 JMP RTN3 THEN DONE CLB CPA D4 IF MODE=4 STB FF3 SET CHANL=0 CPA D4 JMP ONLY3 LDB FF3 FETCH THIRD PARAM SSB IF < 0 JMP BCCG,I THEN ABORT CPA D5 DAC? JMP .DAC YES CMB,INB NEGATE ADB D31 CHECK FOR >31 SSB IF" CHANL >31 JMP RREAD THEN ERROR CPA D2 JMP RTN3 ONLY3 EQU * LDA FF4 FETCH GAIN MSB'S SSA CHECK SIGN JMP BCCG,I ABORT IF < 0 LDB FF4+1 GET LSB'S * CHECK FOR VALID GAIN STB RGAIN SAVE EXPONENT LDB DM4 SET COUNT TO 4 STB TEMP FOR LOOP CPA MANT1 COMPARE WITH MANTISSA 1? JMP GT100 YES - > 100 CPA MANT2 COMPARE WITH MANTISSA 2? JMP LT125 YES - < 125 BADGN EQU * CCA BAD GAIN - RETURN -1 JMP CHKD GT100 EQU * CCA LDB B26 LOOPX EQU * INA BUMP GAIN CODE ADB DM2 SUBTRACT 2 FROM EXPONENT CPB RGAIN EXPONENTS COMPARE? JMP CHKD YES - RETURN GAIN CODE ISZ TEMP CHECK FOR 4 TIMES JMP LOOPX NOT DONE - TRY NEW EXPONENT JMP BADGN NO EXPONENT COMPARE - BAD LT125 EQU * LDB B20 LDA D3 JMP LOOPX CHKD EQU * SSA IF BAD GAIN JMP RREAD THEN ERROR LDB A SAVE GAIN CODE IN B RSS RTN3 EQU * LDB D8 IF NO GAIN SET GAIN CODE TO 8 LDA FF1 FETCH BOX AND B7 MASK ALF,ALF SHIFT RAL SHIFT STA TEMP SAVE IT LDA FF2 FETCH CARD AND B17 MASK ALF,RAL SHIFT IOR TEMP COMBINE WITH BOX STA TEMP SAVE IT LDA FF3 FETCH CHANL AND B37 MASK IOR TEMP COMBINE WITH BOX AND CARD ISZ BCCG JMP BCCG,I RETURN .DAC EQU * CMB,INB NEGATE INB ONLY 0 OR 1 SSB ALLOWED JMP RREAD BAD LDA FF3 GET CHANL ALF ADJUST TO BIT 4 STA FF3 SAVE JMP RTN3 AM DEF * DEF M10+1 DEF M12+1 DEF M20+1 DEF M6+1 MANT1 OCT 76400 MANT2 OCT 62000 B26 OCT 26 B20 .OCT 20 DM4 DEC -4 RGAIN NOP SKP * PACER PARAMETER FETCHER * * LDA ADDR * JSB PPRAM * (ABORT RETURN) * : * * ADDR - ADDRESS OF PACER PARAMETER LIST * (EXTSS,PACER,PRATE,PMULT) * * PLST NOP PPRAM NOP STA PLST SAVE PARAM POINTER CLB INA STB A,I CLEAR PACER CONDITION LDA D2 READ AT LEAST 2 CHARS LDB M7 PROMPT W\MESSAGE 7 JSB CREAD READ REPLY LDA IMAX FETCH MAX INTEGER STA FF1 SET FIRST PARAM STA FF2 SET SECOND PARAM INVALID JSB FFIN CONVERT REPLY LDA FF1 FETCH FIRST PARAM IOR FF2 AND SECOND SSA CHECK FOR < 0 JMP PPRAM,I ABORT IF < 0 LDA FF1 GET FIRST PARAM CMA,INA NEGATE ADA D255 CHECK FOR > 255 SSA JMP RREAD > 255 SO ERROR LDA FF2 F ETCH SECOND PARAM CMA,INA NEGATE ADA D7 CHECK FOR > 7 SSA JMP RREAD >7 SO ERROR LDB M8 PROMPT W/MESSAGE 8 JSB QYNA GET ANSWER SZA,RSS CHECK FOR AB JMP PPRAM,I ABORT CLB SSA CHECK FOR YE CCB YE STB PLST,I SET EXTSS CCB ISZ PLST STB PLST,I SET PACER CONDITION ISZ PLST BUMP POINTER LDA FF1 FETCH PRATE STA PLST,I SET PRATE ISZ PLST BUMP POINTER LDA FF2 FETCH PMULT STA PLST,I SET PMULT ISZ PPRAM JMP PPRAM,I RETURN SKP * CONVERT 2313 READINGS TO VOLTS * * DLD GAINA * DST RG1 * DLD GAINB * DST RG2 * LDA COUNT * LDB VOLTS * JSB CNVRT * (PACE ERROR RETURN) * : * * GAINA - GAIN FOR CHANL 1 * RG1 - STORE FOR GAIN1 * GAINB - GAIN FOR CHANL 2 * RG2 - STORE FOR GAIN2 * COUnNT - NUMBER OF DATA POINTS AVAILABLE * VOLTS - BASE SUBSCRIPT FOR DATA ARRAY * * VOLTS NOP CCNT NOP CNVRT NOP STA CCNT STORE # OF READINGS TO CONVERT STB VOLTS STORE SUBSCRIPT OF DATA LDA G1 INITIALIZE STA G GAIN ADDR XOR G2 MAKE MASK FOR GAIN SWAP STA BMSK SAVE MASK CLA SET UP LOOP FOR STA CNTR1 CONVERSION STA PCFST CLEAR PACE FAST ERROR FLAG CVTLP EQU * ISZ CNTR1 BUMP LOOP COUNTER LDA CNTR1 \ CMA,INA \ ADA VOLTS FIND DATA ADDR (LAST TO FIRST) ADA CCNT / LDB A / BLS COMPUTE REAL DATA ADDR ADB ADTA2 : STB TEMP SAVE ADA ADATA COMPUTE READING ADDR CCB LDA A,I FETCH DATA ARS,SLA CHECK FOR PACE FAST STB PCFST PACE FAST ERROR ARS,ARS DUMP JUNK BITS ARS : JSB FLOAT CONVERT TO REAL FMP VOLT CONVERT TO VOLTS FDV G,I FACTOR IN GAIN DST TEMP,I STORE AT REAL DATA ADDR LDA G GET GAIN ADDR XOR BMSK FLIP TO ALTERNATE GAIN STA G SAVE LDA CNTR1 GET LOOP COUNTER CPA CCNT DONE? RSS JMP CVTLP NO - CONTINUE ISZ PCFST ADJUST RETURN ISZ CNVRT DEPENDING ON PACE FAST ERROR FLAG JMP CNVRT,I RETURN BMSK NOP PCFST NOP G NOP G1 DEF RG1 G2 DEF RG2 VOLT DEC .005 RG1 NOP NOP RG2 NOP NOP SKP * MULTIPLEXER CALL * * JSB MPX * DEF MODE * DEF CHNL * DEF GAIN * DEF PPRAM * DEC NUMBR * DEC OFSET * * MODE - MULTIPLER MODE * CHNL - MULTIPLEXER CHANL ARRAY * GAIN - GAIN CODE * PPRAM - LIST OF PACER PARAMETERS * (EXTSS,PACER,PRATE,PMULT) * NUMBR - NUMBER OF READINGS TO TAKE * OFSET - OFSET IN DATA BUFFER TO STORE READINGS * * MPX NOP LDA MPX,I GET MODE ADDR STA !MODE STORE IN CALL ISZ MPX POINT TO NEXT PARAM LDA MPX,I GET CHANL ADDR ADDR STA !CHNL STORE IN CALL LDB A,I GET CHANL ADDR STB .CHNL SAVE INA POINT TO SECOND CHANL ADDR LDB A,I GET SECOND CHANL ADDR STB .CH2 SAVE ISZ MPX POINT TO NEXT PARAM LDA MPX,I GET GAIN ADDR LDB A,I GET GAIN STB .GAIN SAVE INA POINT TO SECOND GAIN LDB A,I GET SECOND GAIN STB .GN2 SAVE ISZ MPX POINT TO NEXT PARAM LDA MPX,I GET PACER PARAM ADDR STA P.SET SAVE INA POINT TO PACER FLAG LDA A,I GET PACER FLAG STA .PCR SAVE ISZ MPX POINT TO NEXT PARAM LDA MPX,I GET NUMBER OF READINGS STA !CNT STORE FOR CALL ISZ MPX POINT TO NEXT PARAM LDA MPX,I FETCH DATA OFFSET ADA ADATA CALCULATE BUFFER ADDR STA .DATA STORE IN CALL ISZ MPX ADJUST RETURN ADDR MPXRP EQU * LDA LAD GET LAD FLAG AND .SS AND SEQUENTIAL SCAN FLAG SSA,RSS BOTH? JMP SGMPX NO - DON'T SET LAD MPXLD EQU * TURN ON LAD LDA LU.SS USE CMA,INA NEGATIVE STA XTEMP LU JSB A2313 CALL I/F TO TURN ON LAD DEF *+6 DEF XTEMP DEF RETRN DEF DM1 DEF LADAD DEF LSTCH CLA CHECK JSB C2313 I/F CALL JMP MPXLD ERROR JMP MPXRP ERROR SGMPX EQU * GAIN? LDA GAIN GET GAIN FLAG SSA,RSS GAIN? JMP RPMPX NO - DON'T PROGRAM GAIN LDA LU.SS USE CMA,INA NEGATIVE LDB G.ON LU JSB SETGN PROGRAM 1 \ST CH GAIN DEF MPXRP LDA !MODE GET MODE ADDR LDA A,I GET MODE CPA D1 IF RANDOM RSS MUST BE 2 CH JMP RPMPX NOT 2 CH LDA LU.SS USE CMA,INA NEGATIVE LDB G.ON2 LU JSB SETGN PROGRAM 2 ND CH GAIN DEF MPXRP RPMPX EQU * LDA .PCR GET PACER FLAG SSA,RSS PACER? JMP RRSS NO - DON'T REPROGRAM LDA P.SET,I GET EXTSS FLAG SSA IF SET JMP PRXTN THEN DON'T PREPROGRAM PACER (EXTSS) LDA LU.SS USE CMA,INA NEGATIVE LDB P.ON LU CMB,INB JSB STPCR PREPROGRAM DEF MPXRP PRXTN EQU * (EXTSS) LDA LU.SS USE CMA,INA NEGATIVE LDB P.SET LU JSB STPCR PROGRAM PACER TO FINAL VALUES DEF MPXRP RRSS EQU * LDB LU.SS LDA LAD IF LAD AND .SS AND SEQUENTIAL IOR .PCR OR PACER SSA CMB,INB THEN USE -LU : THIS IS NOT LAST CALL STB XTEMP JSB R2313 CALL I/F FOR READINGS DEF *+9 DEF XTEMP DEF RETRN DEF .PCR !MODE NOP !CHNL NOP DEF !CNT .DATA NOP DEF DIFF CLA \ LDB XTEMP \ SSB,RSS CHECK I/F RETURN CODE INA / JSB C2313 / JMP RRSS ERROR JMP MPXRP ERROR LDA DELAY DELAY? SSA,RSS JMP CKLAD NO LDA DCNTR SAVE DELAY COUNTER DLYLP LDB MSEC GET 1 MSEC COUNTER ISZ B \ JMP *-1 \ EXECUTE ISZ DCNTR / DELAY JMP DLYLP / STA DCNTR RESTORE DELAY COUNTER CKLAD LDA LAD IF LAD AND .SS AND SEQUENTIAL SSA,RSS : JMP POFF NO - SKIP LAD TURNOFF LDB LU.SS TURN OFF LAD OLDA .PCR BUT CHECK FOR PACER SSA IF PACER THIS IS NOT LAST CALL CMB,INB STB XTEMP LADOF EQU * JSB A2313 CALL I/F TO TURN OFF LAD DEF *+6 DEF XTEMP DEF RETRN DEF ZERO DEF LADAD DEF ZERO CLA \ LDB XTEMP \ SSB,RSS CHECK I/F RETURN CODE INA / JSB C2313 / JMP LADOF ERROR JMP MPXRP ERROR POFF EQU * LDA .PCR IF SSA,RSS PACER JMP MPX,I NO - DONE SO RETURN LDA LU.SS LDB P.OFF CMB,INB JSB STPCR TURN OFF PACER DEF MPXRP JMP MPX,I !CNT NOP P.SET NOP P.ON DEF *+1 NOP .PCR NOP DEC 10 DEC 3 P.X NOP G.ON DEF *+1 .CHNL NOP .GAIN NOP P.OFF DEF *+1 NOP NOP NOP NOP G.ON2 DEF *+1 .CH2 NOP .GN2 NOP MSEC DEC -450 MUST LOOP 450 TIMES FOR FASTEST * COMPUTER: F-SERIES W\HP MEMORY SKP * DAC DATA GETTER * * JSB DDATA * (ABORT RETURN) * * DATA WORD RETURNED IN (A) * * DDATA NOP LDB M30 PROMPT WITH MESSAGE 30 JSB RFFIN GET DATA VALUE DST VALUE SAVE DLD DCMAX GET MAX FSB VALUE IF DATA SSA > 10.235 JMP DDATA,I ABORT DLD VALUE GET DATA FSB DCMIN IF DATA SSA < -10.240 JMP DDATA,I ABORT DLD VALUE CONVERT VALUE FDV CVOLT TO BITS JSB IFIX FIX AND DDMSK MASK JUNK ISZ DDATA ADJUST RETURN ADDR JMP DDATA,I RETURN DDMSK OCT 177760 SKP RFFIN NOP CLA,INA \ JSB CREAD / CLA,INA \ LDB AINBF \ JSB .FFB. CONVERT DATA JSB .FFR. / JMP RFFIN,I / NOP JMP RREAD SPC 5 DCMAX DEC 10.235 DCMIN DEC -10.240 CVOLT DEC .0003125 SKP .CNVT NOP OUTPUT 1 DAC DATA POINT CN.VT EQU * JSB D2313 CALL I/F ROUTINE TO OUTPUT DEF *+8 DEF LU.SS DEF RETRN DEF ZERO DEF ZERO DEF CHNL1 DEF D1 DEF GAIN1 CLA,INA CHECK JSB C2313 I/F RETURN CODE JMP CN.VT ERROR JMP CN.VT ERROR JMP .CNVT,I SKP * DAC OUTPUT * * LDA MODE * LDB RDGS * JSB .DAC. * * MODE - DAC MODE * RDGS - NUMBER OF POINTS TO OUTPUT * * .DAC. NOP STA !MODE SAVE MODE STB !CNT SAVE # DACRP EQU * LDA DPACR GET PACER FLAG SSA,RSS PACER? JMP .CVT. NO PACER LDA DXTSS GET EXTERNAL START/STOP FLAG IOR .SICH SINGLE CHANL IOR .ALT ALTERNATE IOR .RAN RANDOM SSA ANY SET? JMP .XTRN YES - NO PACE DELAY LDA LU.SS USE CMA,INA NEGATIVE LU LDB P.ON CHANGE PACE CMB,INB IMMEDIATE JSB STPCR TURN ON PACER DEF DACRP .XTRN EQU * LDA LU.SS USE CMA,INA NEGATIVE LU LDB DACPP CHANGE PACE ON NEXT PULSE JSB STPCR REPROGRAM PACER DEF DACRP .CVT. EQU * LDA DPACR GET PACER FLAG LDB LU.SS GET LU SSA IF PACER CMB,INB USE NEGATIVE LU STB XTEMP SAVE LU JSB D2313 CALL I/F TO OUTPUT POINTS DEF *+8 DEF XTEMP DEF RETRN DEF DPACR DEF !MODE DEF CHNLS DEF !CNT DEF DATA CLA \ LDB XTEMP \ SSB,RSS CHECK I/F RETURN CODE INA / JSB C2313 / JMP .CVT. ERROR JMP DACRP ERROR LDA DPACR GET PACER FLAG SSA,RSS PACER? JMP .DAC.,I NO - DONE LDA LU.SS ` LDB P.OFF CMB,INB TURN OFF IMMEDIATE JSB STPCR TURN OFF PACER DEF DACRP JMP .DAC.,I RETURN SKP * MPX GAIN SETTER * * LDA SSLU * LDB PRMAD * JSB SETGN * DEF BAD * * SSLU - SUBSYSTEM LU * PRMAD - ADDR OF PARAMETER TABLE * (CHANL,GAIN) * BAD - RETURN ADDR TO REPEAT ALL I/F CALLS * * SETGN NOP STA ST.LU SAVE LU STB G.ADR SAVE CH ADDR INB FIND GAIN ADDR STB G.COD SAVE GAIN ADDR CLB \ SSA,RSS SET EXPECTED RETURN CODE INB / STB P.X SAVE LDA SETGN,I FETCH REPEAT ALL ADDR STA BRTN1 SAVE G. EQU * JSB A2313 CALL I/F TO PROGRAM GAIN DEF *+6 DEF ST.LU DEF RETRN DEF ZERO G.ADR NOP G.COD NOP LDA P.X GET EXPECTED RETURN CODE JSB C2313 CHECK I/F RETURN CODE JMP G. ERROR JMP BRTN1,I ERROR ISZ SETGN ADJUST RETURN ADDR JMP SETGN,I RETURN BRTN1 NOP SKP * PACER SETTER * * LDA SSLU * LDB PRMAD * JSB STPCR * DEF BAD * * SSLU - SUBSYSTEM LU * PRMAD - ADDRESS OF PACER PARAM TABLE * (IF < 0 THEN IMMED PACE CHANGE OTHERWISE * CHANGE ON NEXT PACE PULSE) * (EXTSS,PACER,PRATE,PMULT) * BAD - RETURN ADDR TO REPEAT ALL I/F CALLS * * STPCR NOP STA ST.LU SAVE LU LDA AZERO SET FOR IMMED. PACE CHANGE SSB,RSS IF > 0 THEN LDA ADM1 NEXT PACE CHANGE STA PCHNG SAVE SSB IF < 0 CMB,INB NEGATE STB P.XSS SAVE EXTSS FLAG ADDR ADB D2 FIND PACE RATE ADDR STB P.RAT SAVE INB FIND PACE MULTIPLIER ADDR STB P.MLT SAVE LDA ST.LU GET LU FOR TEST CLB \  SSA,RSS SET EXPECTED RETURN CODE INB / STB P.X SAVE LDA STPCR,I GET REPEAT ALL ADRR STA BRTN1 SAVE P. EQU * JSB P2313 CALL I/F TO PROGRAM PACER DEF *+8 DEF ST.LU DEF RETRN PCHNG NOP P.XSS NOP P.RAT NOP P.MLT NOP DEF ZERO LDA P.X GET EXPECTED RETURN CODE JSB C2313 CHECK I/F RETURN CODE JMP P. ERROR JMP BRTN1,I ERROR ISZ STPCR ADJUST RETURN ADDR JMP STPCR,I RETURN SPC 5 ST.LU NOP ZERO DEC 0 ADM1 DEF DM1 AZERO DEF ZERO SKP * STATISTICS CALCULATOR * * LDA NUMBR * LDB MODE * JSB STATS * * NUMBR - NUMBR OF VALUES IN BUFFER * MODE - =0 SINGLE CHANNEL * =1 TWO CNANNEL CHANNEL 1 * =2 TWO CHANNEL CHANNEL 2 * * ASSUMED ON CALL THAT LSTDV IS SET UP * * SCNTR NOP STEP NOP STATS NOP STA SCNTR SAVE COUNT CLA,INA SZB IF 2 CH MODE INA STA STEP THEN STEP SIZE IS 2 ELSE 1 CLA,INA CPB D2 IF 2 CH INA STA CTEMP THEN START VALUE IS VALUE 2 STA TEMP CLA \ STA RMS \ STA RMS+1 ZERO RMS STA AVG AND AVERAGE STA AVG+1 / STA CNTR1 / DLD RMAXP SET LO TO DST LO MAX POSITIVE DLD RMAXN SET HI TO DST HI MAX NEGATIVE LDA CTEMP LOOK UP ALS FIRST DATA ADA ADTA2 VALUE AND DLD A,I USE FOR DST BIAS BIAS STAT1 EQU * SUMMING LOOP FOR AVERAGE ISZ CNTR1 BUMP VALUE COUNTER LDA CTEMP GET DATA VALUE ALS : ADA ADTA2 : DLD A,I : DST VALUE SAVE FSB LO SSA,RSS VALUE < LO? JMP $LOOK NO DLD VALUE YEJS - MAKE LO DST LO = VALUE $LOOK EQU * DLD HI FSB VALUE SSA,RSS VALUE > HI? JMP $HIOK NO DLD VALUE MAKE HI DST HI = VALUE $HIOK EQU * DLD VALUE FETCH VALUE FSB BIAS SUBTRACT OUT BIAS FAD AVG ADD TO SUM DST AVG SAVE SUM LDA CTEMP GET DATA SUBSCRIPT ADA STEP ADD STEP STA CTEMP SAVE CMA,INA \ ADA SCNTR DONE? SSA,RSS / JMP STAT1 NO - CONTINUE LDA CNTR1 CONVERT VALUE JSB FLOAT COUNT TO REAL DST VALUE SAVE FOR DIVIDE DLD AVG GET SUM FDV VALUE DIVIDE FAD BIAS ADD BIAS TO GET AVERAGE DST AVG SAVE FOR PRINT STAT2 EQU * LOOP TO FIND RMS LDA TEMP GET DATA VALUE ALS : ADA ADTA2 : DLD A,I : FSB AVG SUBTRACT AVERAGE DST BIAS SAVE DEVIATION FMP BIAS SQUARE DEVIATION FAD RMS ADD TO SUM DST RMS SAVE SUM LDA TEMP GET DATA SUBSCRIPT ADA STEP ADD STEP STA TEMP SAVE CMA,INA \ ADA SCNTR DONE? SSA,RSS / JMP STAT2 NO - CONTINUE DLD RMS FETCH SUM FDV VALUE DIVIDE BY COUNT JSB SQRT TAKE SQ ROOT TO FIND RMS HLT 0 : DST RMS SAVE FOR PRINT DLD HI TAKE HI FSB LO - LO DST PTOP = PEAK TO PEAK * OUTPUT DLD AVG GET AVERAGE DST FMTO1 SAVE LDA D6 \ LDB AFRMT CONVERT JSB FMTOT / DLD PTOP GET PEAK TO PEAK DST FMTO1 SAVE LDA D20 \ LDB AFRMT CONVERT JSB FMTOT / DLD HI GET HI DST FMTO1 SAVE LDA D34 \ LDB AFRMT CONVERT JSB FMTOT /  DLD LO GET LO DST FMTO1 SAVE LDA D48 \ LDB AFRMT CONVERT JSB FMTOT / DLD RMS GET RMS DST FMTO1 SAVE LDA D63 \ LDB AFRMT CONVERT JSB FMTOT / JSB CMOVE MOVE TO OUTPUT BUFFER DEC 1 AFRMT DEF FORMT DEC 1 DEF INBFR DEC 72 LDA DM72 JSB LISTO OUTPUT RESULTS ON LIST DEVICE JMP STATS,I AVG NOP NOP BIAS NOP NOP RMS NOP NOP RMAXP OCT 77777,177776 RMAXN OCT 100000,000376 DM72 DEC -72 D20 DEC 20 D34 DEC 34 D48 DEC 48 D63 DEC 63 HI NOP NOP LO NOP NOP PTOP NOP NOP VALUE NOP NOP FORMT ASC 18, AVG=XXXXXXXXXX PP=XXXXXXXXXX HI=XXX ASC 18,XXXXXXX LO=XXXXXXXXXX RMS=XXXXXXXXXX HED HP2313 RTE VERIFICATION -- MESSAGES SKP SUP M5 DEF *+1 DEC -14 ASC 7,NO PACE SIGNAL M6 DEF *+1 DEC -14 ASC 7,BX,CD,GAIN = _: M7 DEF *+1 DEC -15 ASC 8,PERIOD,MULT = _: M8 DEF *+1 DEC -15 ASC 8,EXT STRT/STP? _: M9 DEF *+1 DEC -9 ASC 5,DELAY = _: M10 DEF *+1 DEC -9 ASC 5,BX,CD = _: M11 DEF *+1 DEC -16 ASC 8,START,FINISH = _: M12 DEF *+1 DEC -12 ASC 6,BX,CD,CH = _: M13 DEF *+1 DEC -6 ASC 3,NO = _: M14 DEF *+1 DEC -7 ASC 4,DIFF? _: M15 DEF *+1 DEC -6 ASC 3,1ST CH M16 DEF *+1 DEC -7 ASC 4, 2ND CH M17 DEF *+1 DEC -10 ASC 5,RDGS TAKEN M18 DEF *+1 DEC -11 ASC 6,CH'S/GP = _: M19 DEF *+1 DEC -13 ASC 7,NO OF GPS = _: M20 DEF *+1 DEC -17 ASC 9,BX,CD,CH,GAIN = _: M21 DEF *+1 DEC -7 ASC 4,LAST CH M22 DEF *+1 DEC -18 ASC 9,TRANSMISSION ERROR M24 DEF *+1 DEC -5 ASC 3, F+JOR: M25 DEF *+1 DEC -12 ASC 6, X=SIN(W1*T) M26 DEF *+1 DEC -14 ASC 7, Y=SIN(W2*T+@) M27 DEF *+1 DEC -7 ASC 4, W1 = _ : M28 DEF *+1 DEC -7 ASC 4, W2 = _ : M29 DEF *+1 DEC -7 ASC 4, @ = _ : M30 DEF *+1 DEC -9 ASC 5, DATA = _ : M31 DEF *+1 DEC -7 ASC 4, 1ST CH HED HP2313 RTE VERIFICATION -- CONSTANTS,STORAGE,EQUATES SKP * CONSTANTS,STORAGE,EQUATES A EQU 0 B EQU 1 W1 EQU VALUE W2 EQU BIAS PHASE EQU AVG TIME EQU RMS DEL.T EQU HI LU.IN NOP CURRENT INPUT LU LU.FB NOP FALLBACK LU (ERRORS & OP MSGS) LU.PO NOP DEFAULT LIST DEVICE LU LU.SS NOP 2313 SUBSYSTEM LU LUSTK DEC -1 1-LEVEL LU STACK FOR TR AD ASC 1,AD \ AL ASC 1,AL \ CL ASC 1,CL \ CO ASC 1,CO \ DA ASC 1,DA \ ER ASC 1,ER \ EX ASC 1,EX \ GR ASC 1,GR COMMAND LI ASC 1,LI MATCH TABLE NO ASC 1,NO / RA ASC 1,RA / RE ASC 1,RE / SE ASC 1,SE / SI ASC 1,SI / TR ASC 1,TR / TW ASC 1,TW / DM10 DEC -10 DM7 DEC -7 DM5 DEC -5 DM2 DEC -2 DM1 DEC -1 D0 DEC 0 D2 DEC 2 D4 DEC 4 D5 DEC 5 D6 DEC 6 D7 DEC 7 D8 DEC 8 D11 DEC 11 D31 DEC 31 B62 OCT 62 D255 DEC 255 D10K DEC 10000 IMAX OCT 77777 MAXIMUM POSITIVE INTEGER INBFR BSS 40 INPUT BUFFER ASC 3,,,,,,, EOF FOR FORMATTER CONVERSIONS QSIZE EQU 100 SETS SIZE OF QUEUE BUFFER Q BSS QSIZE QUEUE BUFFER FOR 2313 CALLS QLEN ABS QSIZE QUEUE BUFFER LENGTH .ADC DEC -1 ADC MODE FLAG RETRN NOP RETURN CODE FROM I/F ROUTINES A! ASC 1,A D! ASC 1,D G! ASC 1,G K! ASC 1,K L! ASC 1,L P! ASC 1,P R! ASC 1,R T! ASC 1,T EA ASC 1,EA B40 OCT 40 ADINT DEF FWIN1'T FWINT EQU * CNTR1 NOP .SICH NOP DAC SINGLE CHANL FLAG .ALT NOP DAC ALTERNATE FLAG .ERS NOP DAC ERASE FLAG .GRP NOP DAC GROUP FLAG .LISA NOP DAC LISSAJOUS FLAG .RAN NOP DAC RANDOM FLAG DELAY NOP ADC DELAY FLAG DREPT NOP DAC REPEAT FLAG DRPOK NOP DAC REPEAT OK FLAG GAIN NOP ADC GAIN FLAG LAD NOP ADC LAD FLAG LADAD NOP ADC LAD ADDR LSTCH NOP ADC LAST CHANL (FOR LAD) LSTOK NOP ADC LIST OK FLAG RPEAT NOP ADC REPEAT FLAG RPTOK NOP ADC REPEAT OK FLAG DCNTR NOP DELAY COUNTER EXTSS NOP ADC EXTERNAL START/STOP FLAG PACER NOP ADC PACER FLAG PRATE NOP ADC PACE RATE PMULT NOP ADC PACE MULTIPLIER DXTSS NOP DAC EXTERNAL START/STOP FLAG DPACR NOP DAC PACER FLAG DPRAT NOP DAC PACE RATE DPMLT NOP DAC PACE MULTIPLIER .SCLD NOP ADC SCALED SEQUENTIAL FLAG .SC NOP ADC SINGLE CHANNEL FLAG .TC NOP ADC TWO CHANNEL FLAG .SS NOP ADC SEQUENTIAL FLAG DIFF NOP ADC DIFFERENTIAL CHANNEL FLAG CHNL1 NOP FIRST CHANL ADDR CHNL2 NOP SECOND CHANL ADDR GAIN1 NOP FIRST CHANL GAIN GAIN2 NOP SECOND CHANL GAIN GRUPS NOP # OF GROUPS FOR SCALD SEQ RDGS NOP # OF READINGS LWINT EQU * INCNT ABS FWINT-LWINT ADCPP DEF EXTSS ADC PACER PARAMETER TABLE DACPP DEF DXTSS DAC PACER PARAMETER TABLE ADTA2 DEF DATA-2 ADATA DEF DATA-1 ACHLS DEF CHNLS-1 AGANS DEF GAINS-1 !DATA EQU * DATA BSS 400 DATA BUFFER CHNLS BSS 200 CHANNEL BUFFER GAINS EQU CHNLS+100 GAINS BUFFER HED HP2313 RTE VERIFICATION -- INITIALIZATION SKP INITL EQU * * FETCH SCHEDULE PARAMS LDA DM5 STA CNTR LDA APRMS STA PNTR PFLP EQU * LDA B,I FETCH PARAM STA PNTR,I STORE PARAM ISZ PNTR BUMP STORE POINTER INB BUMP FETCH POINTER ISZ CNTR DONE? JMP PFLP NOT DONE - MORE LDB ADPMT STB PRMT CCB STB LUSTK CLEAR LU STACK STB .ADC SET ADC MODE LDB INCNT SET UP LOOP STB CNTR TO CLEAR FLAGS CLB LDA ADINT INLUP EQU * STB A,I CLEAR FLAG INA BUMP ADDR ISZ CNTR DONE? JMP INLUP NOT DONE - CONTINUE LDA PRMS FETCH CONTROL DEVICE LU SZA,RSS IF = 0 CLA,INA THEN DEFAULT TO 1 STA LU.IN SET INPUT DEVICE STA LU.FB SET FALLBACK DEVICE LDB PRMS+1 FETCH LIST DEVICE LU SZB,RSS IF = 0 LDB A THEN DEFAULT TO FALLBACK DEVICE STB LU.PO SET LIST DEVICE LDB PRMS+2 FETCH IMMEDIATE XFER LU SZB,RSS IF = 0 JMP NOITR THEN NO IMMED. XFER * DO IMMEDIATE TRANSFER OF CONTROL STA LUSTK SAVE INPUT LU ON STACK STB LU.IN SET INPUT DEVICE TO NEW LU NOITR EQU * LDA LU.FB FETCH OUTPUT LU LDB M1 OUTPUT MESSAGE 1 JSB PRMPT OUTPUT MESSAGE CLA,INA READ AT LEAST 1 CHAR LDB M2 PROMPT W/MESSAGE 2 JSB CREAD GET REPLY JSB FFIN CONVERT SUBSYSTEM LU LDA FF1 FETCH LU JSB LUCHK CHECK FOR VALIDITY JMP RREAD ERROR JSB DVR FETCH DRIVER TYPE CPA B62 MUST BE 62 RSS JMP RREAD ELSE ERROR LDA FF1 GET LU STA LU.SS SET SUBSYSTEM LU LDB M3 SET FOR MESSAGE 3 JSB QYNA GET REPLY SZA,RSS AB? JMP !TERM AB SO TERMINATE SSA,RSS NO JMP NRML NO SO NORMALIZE LDA LU.FB LDB M4 SET MESSAGE 4 JSB PRMPT OUTPUT DIRECTIONS NRML EQU * JSB B2313 SET UP QUEUE BUFFER % DEF *+3 DEF Q DEF QLEN JMP .NO GO NORMALIZE APRMS DEF PRMS PRMS EQU DATA CNTR EQU CHNLS PNTR EQU CHNLS+1 M1 DEF *+1 DEC -35 ASC 18,HP2313 ON-LINE VERIFICATION (1926) M2 DEF *+1 DEC -23 ASC 12,HP2313 LOGICAL UNIT = _: M3 DEF *+1 DEC -18 ASC 9,WANT DIRECTIONS? _: M4 DEF *+1 ABS FM4-SM4 SM4 EQU * ASC 18,ADC: PROMPT ">" 1-200 RDGS TOTAL ASC 18,DAC: PROMPT "<" 1-200 DATA OUTPUTS OCT 6412 ASC 18, DA = CHANGE TO DAC MODE ASC 18, AD = CHANGE TO ADC MODE OCT 6412 ASC 18, EX = TERMINATE VERIFICATION ASC 18, EX = TERMINATE VERIFICATION OCT 6412 ASC 18, TR X = TRANSFER CONTROL TO LU=X ASC 18, TR X = TRANSFER CONTROL TO LU=X OCT 6412 ASC 18, * = COMMENT - IGNORE LINE ASC 18, * = COMMENT - IGNORE LINE OCT 6412 ASC 18, CO = PRINT CURRENT ADC CONDITIONS ASC 18, CO = PRINT CURRENT DAC CONDITIONS OCT 6412 ASC 18, NO = ISSUE SYSTEM NORMALIZE ASC 18, NO = ISSUE SYSTEM NORMALIZE OCT 6412 ASC 18, RE = REPEAT LAST TEST ASC 18, RE = REPEAT LAST TEST OCT 6412 ASC 18, SI W = 1 OR MORE RDGS ON 1 CHNL ASC 18, SI = 1 OR MORE OUTPUTS ON 1 CHNL OCT 6412 ASC 18, TW W = RDGS ON 2 ALTERNATING CHNLS ASC 18, RA = OUTPUT ON SPECIFIED CHNL(S) OCT 6412 ASC 18, SE = RDGS ON SEQUENTIAL CHNLS ASC 18, GR = OUTPUT TO CH GROUPS ON PACE OCT 6412 ASC 18, LI W = LIST DATA BUFFER CONTENTS ASC 18, AL = ALTERNATE OUTPUTS ON 1 CHNL OCT 6412 ASC 18, W = LIST LU FOR TEST RESULTS ASC 18, ER = ERASE SPECIFIED CHNL(S) OCT 6412 ASC 18, SET D OR CLEAR D = ADC DELAY COND ASC 18, LI = PLOT LISSAJOUS PATTERN OCT 6412 ASC 18, SET G OR CLEAR G = ADC GAIN COND ASC 18, SET P OR CLEAR P = P.JHDAC PACER COND OCT 6412 ASC 18, SET L OR CLEAR L = ADC LAD COND ASC 18, SET R OR CLEAR R = DAC REPEAT COND OCT 6412 ASC 18, SET P OR CLEAR P = ADC PACER COND ASC 18, CLEAR A = CLEAR ALL DAC COND OCT 6412 ASC 18, SET R OR CLEAR R = ADC REPEAT COND OCT 6412 ASC 18, SET K = PROGRAM GAIN IMMEDIATE OCT 6412 ASC 18, CLEAR A = CLEAR ALL ADC COND ASC 18, REPEAT COND CONTINUOUSLY REPEATS OCT 6412 OCT 6412 ASC 18, REPEAT COND CONTINUOUSLY REPEATS FM4 EQU * END INITL J &;b 02313-18004 1826 S 0122 &4DV62 RTE4 2313B DRIVER DVR62             H0101 ASMB,R,L,C HED DVR62F -- 2313B DRIVER FOR RTE-IV SYSTEMS * NAME: DVR62F * SOURCE: 02313-18004 * RELOC: 02313-16004 * * *************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1975. 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. * * *************************************************************** * NAM DVR62F 02313-16004 REV 1826 780403 ENT I.62,C.62 EXT $MATA FIRST PAGE OF USER PARTITION EXT $MPFT FENCE TABLE USED TO FIND * LOWEST LEGAL BUFFER ADDR SPC 2 SPC 2 * ************************************************************ * * * * * THIS DRIVER WILL NOT SUPPORT CLASS I/O * * * * * ************************************************************ SPC 2 * THIS DRIVER OPERATES THE 2313B SUBSYSTEM IN THE RTE-IV * ENVIRONMENT. IT REQUIRES THE USE OF INTERFACE ROUTINES * TO SIMPLIFY OPERATION. IT CAN, HOWEVER, BE CALLED * DIRECTLY BY AN EXEC CALL IF THE USER FOLLOWS THE * FOLLOWING FORMAT: * * FORTRAN: CALL EXEC(ICODE,ICNWD,IQUE,N) * * * * * ASSEMBLY: * * EXT EXEC * . * : * JSB EXEC * DEF *+5 * DEF ICODE * DEF ICNWD * DEF IQUE * DEF N * * . * : * * WHERE: * * ICODE=2 (NORMAL CALLS ASSUME WRITE PATH) * ICNWD=BITS 0-5 ARE THE LOGICAL UNIT # * BIT 6 IS 1 TO SPECIFY DMA NEEDED * (NOT USED FOR REMOTE,I.E.,SUBCHANNEL 1 - SEE BELOW) * IQUE=ADDRESS OF QUEUE BUFFER CONTAINING * ALL OPERATIONS * N=NUMBER OF "ENTRIES" IN IQUE /* * * IQUE CONTAINS A NUMBER OF MULTIPLE WORD ENTRIES * WHICH DEFINE OPERATIONS. MOST PRACTICAL USES OF * THE 2313B WILL REQUIRE MORE THAN ONE OPERATION. * ALL OPERATIONS IN IQUE ARE EXECUTED IN ONE CALL * TO THE DRIVER. THIS METHOD PREVENTS ANOTHER * PROGRAM FROM CHANGING SUB-SYSTEM PARAMETERS * DURING RELATED OPERATIONS. SPC 2 * ONE WORD ENTRIES: * * TYPE = 1 ISSUE SYSTEM NORMALIZE (NO DMA) * * TYPE = 2 ISSUE 2930A LOOP ESCAPE (NO DMA) * * THREE WORD ENTRIES: * * TYPE = 3 OUTPUT NUMB WORDS (DMA AVAILABLE - LOCAL ONLY) * NUMB = NUMBER TO OUTPUT * BUFF = ADDRESS OF OUTPUT BUFFER * * TYPE = 4 INPUT NUMB WORDS (DMA AVAILABLE - LOCAL ONLY) * NUMB = NUMBER TO INPUT * BUFF = ADDRESS OF INPUT BUFFER * * FOUR WORD ENTRIES: * * TYPE = 5 OUTPUT THEN INPUT NUMB PAIRS (NO DMA) * NUMB = NUMBER OF OUT-IN PAIRS * OBUF = ADDRESS OF OUTPUT BUFFER * IBUF = ADDRESS OF INPUT BUFFER * * TYPE = 6 OUTPUT NUMB ADRS THEN DATA PAIRS (NO DMA) * NUMB = NUMBER OF OUT-OUT PAIRS * OBF1 = ADDRESS OF CHANNEL BUFFER * OBF2 = ADDRESS OF DATA BUFFER * * TYPE = 7 OUTPUT NUMB CHAN THEN DATA PAIRS (NO DMA) * NUMB = NUMBER OF DATA POINTS TO OUTPUT * CHAN = ADDRESS OF THE CHANNEL NUMBER * OBUF = ADDRESS OF DATA BUFFER * * TYPE = 8 OUTPUT NUMB DATA POINTS SEQUENTIALLY (NO DMA) * NUMB = NUMBER OF DATA POINTS TO OUTPUT * OBF1 = ADDRESS OF 2 WORD BUFF CONTAINING START & END CHAN * OBF2 = ADDRESS OF DATA BUFFER * * TYPE = 9 OUTPUT NUMB ERASE COMMANDS (NO DMA) * NUMB = NUMBER OF DACS TO ERASE * OBUF = ADDRESS OF CHANNEL BUFFER * CMND = ADDRESS OF THE DATA WORD (ERASE) * * ADDITIONAL COMMENTS: * * IN ALL CASES NUMB MUST NOT BE LESS THAN 0. FOR ALL BUT * TYPE 3 NUMB MUST BE GREATER THEN 0. FOR TYPE 3 NUMB * MAY BE 0 TO INDICATE OUTPUT BUT DO NOT ENCODE. * (FOR REMOTE NO OUTPUT WILL BE DONE BU T THE WORD WILL * BE SAVED TO BE OUTPUT FOR NEXT ENTRY IF NEEDED.) * * FOR TYPE 3 WITH DMA REQUESTED, DMA WILL BE USED * WHEN NUMB IS GREATER THAN 2. FOR TYPE 4 WITH DMA REQUESTED, * DMA WILL BE USED. DMA IS NEVER USED FOR REMOTE (SUBCHANNEL 1) * * TYPES 3 THROUGH 7 MAKE THIS DRIVER A GENERAL * PURPOSE MICROCIRCUIT I/O CARD DRIVER * (MUST BE SUBCHANNEL 0 -- SEE BELOW) ****************************************************************** * * * THE RTE MUST BE CONFIGURED FOR SUBCHANNEL 0 FOR LOCAL, * * SUBCHANNEL 1 FOR REMOTE. * * * ****************************************************************** SKP ******************************************************************** * * * * * >>>>>>> IMPORTANT NOTE FOR FUTURE MODIFIERS <<<<<<< * * * * * * THIS VERSION OF THE 2313 DRIVER WAS ADAPTED FROM THE RTE-III * * VERSION TO SUPPORT RTE SYSTEMS WITH EXTENDED MEMORY (GREATER * * THAN 32K). THIS VERSION IS COMPATIBLE ONLY WITH RTE IV * * SYSTEMS. THIS DRIVER DOES NOT SUPPORT CLASS I-O CALLS. * * * * * ******************************************************************** SKP ************************ * * * INITIATION SECTION * * * ************************ SPC 2 I.62 NOP JSB CNFGR CONFIGURE ALL I/O INSTRUCTIONS LDA BIT7 FORM MASK CMA TO TURN OFF AND EQT5,I m XMSN ERROR STATUS BIT STA EQT5,I AND RESTORE STATUS WORD DLD INTBA,I \ CPA EQT1 \ JMP HVDMA > CHECK FOR DMA ASSIGNED CPB EQT1 / JMP HVDMA / SPC 2 * ** VALID REQUEST CHECK ** SPC 1 LDA EQT1,I GET REQUEST LIST POINTER INA LDB A,I RBL SSB CLASS OR BUFFERED I-O REQUEST? JMP ERROR YES - CLASS I/O ILLEGAL SLB JMP NORML INA REIO REQUEST? LDB A,I SSB JMP ERROR YES - REIO REQUEST ILLEGAL NORML EQU * LDA EQT6,I GET REQUEST CONTROL WORD AND B77 MASK REQUEST TYPE CPA TWO WRITE REQUEST? JMP CHKQU YES - GOOD CPA THREE CONTROL REQUEST? CLA,INA,RSS YES - A=2 FOR RETURN ERROR CLA READ REQUEST - A=1 FOR RETURN INA (ALSO FOR BAD ENTRIES) JMP I.RTN ERROR RETURN SPC 2 SKP * THIS ROUTINE CHECKS A SPECIFIED BUFFER TO SEE IF ANY PART * OF IT LIES IN A DISK RESIDENT PROGRAM AREA. IF ANY PART * OF THE BUFFER IS IN A DISK AREA THEN RETURN IS TO (P+1), * IF IN LEGAL SYSTEM AREA,RETURN IS TO (P+2). * * ENTER WITH (A)=BUFFER ADDRESS, (B)=BUFFER LENGTH * * OPERATION: WE CHECK ALL PHYSICAL PAGES (REPEAT, PHYSICAL) * OCCUPIED WHOLLY OR PARTIALLY BY A BUFFER. IF ANY SUCH PAGE * IS WRITE PROTECTED, THE DRIVER REJECTS THE CALL. IF ANY * SUCH PAGE IS PART OF A DISK PARTITION, THEN RETURN IS TO * (P+1). OTHERWISE, IF THE BUFFER BEGINS IN SSGA OR SYSTEM * COMMON, RETURN IS TO (P+2): IF BELOW SSGA, THE DRIVER REJECTS * THE CALL. NOTE THAT ALL PAGES OF THE BUFFER ARE CHECKED SO * THAT THE PARTITION NEED NOT CONSIST OF CONTIGUOUS PAGES. * * THE USER (REPEAT, USER) MAP IS EXAMINED TO ACCOMPLISH THIS * TEST. NOTE THAT ALL BUFFERS CHECKED HERE WILL BE VISIBLE * FROM THE USER MAP. SPC 2 DRA? NOP ENTRY (A)=ADDRESS,(B)=LENGTH SSA ERROR IF BUFFER ADDR LESS JMP ERROR THAN ZER0 SZB,RSS MAKE ZERO LENGTH BUFFERS INB LOOK LIKE ONE WORD FOR THIS CODE STA TEMP4 ADB A ERROR IF ADB N1 END ABOVE SSB 77777B. JMP ERROR CLA CLEAR A TEMPORARY TO KEEP TRACK STA PAGES OF PAGES IN DISC PART OF MEM LDA TEMP4 PUT FWA IN A, LENGTH IN B LSR 10 GET PAGE NUMBERS AND B77 AND ISOLATE THEM. SPC 1 CMB GET -NUMBER OF PAGES STRADDLED ADB A BY BUFFER AND STB COUNT SAVE AS LOOP COUNTER. ADA P32 CONVERT START PAGE TO MAP# SPC 1 LDB MATA.,I GET MATA ADDRESS ADB THREE POINT TO FIRST USER PARTITION BASE LDB B,I AND LOAD IT SWP ISOLATE AND M1777 PAGE SWP NUMBER INB IGNORE BASE PAGE STB SPFP AND SAVE IT SPC 1 LOOP LDB TEMP. POINT TO PLACE TO DUMP MAP LDX N1 DUMP ONLY ONE REGISTER XMM DUMP MAP TO MEMORY LDB TEMP7 PICK UP MAP REG RBL ERROR IF BIT 14 SSB IS SET. JMP ERROR (WRITE RBR PROTECTED PAGE). SWP MASK TO AND M1777 PHYSICAL PAGE SWP ADDRESS. CMB,INB IF PHYSICAL PAGE ADDR INB ADB SPFP IS IN USER PARTITION SSB THEN INCR COUNTER - MUST BE ISZ PAGES IN DISC AREA. ISZ COUNT BUMP COUNTER JMP LOOP AND CONTINUE IF MORE. SPC 1 LDA PAGES IF ANY PAGES IN DISC AREA SZA THEN JMP DRA?,I RETURN TO CALLER ISZ DRA? ELSE CHECK IF IN COMMON OR SSGA SPC 2 * CHECK IF BUFFER IN COMMON, SSGA OR MEMORY RESIDENT AREA SPC h&2 LDA MPFT.,I FETCH MPFT ADDRESS ADA FOUR POINT TO SSGA BASE LDA A,I AND LOAD IT CMA,INA NEGATE ADA TEMP4 ADD BUFFER ADDRESS SSA <0? JMP ERROR YES - NOT IN LEGAL MEM. RES. AREA JMP DRA?,I NO - RETURN TO CALLER - BUFFER LEGAL N1 DEC -1 P32 DEC 32 TEMP. DEF TEMP7 M1777 OCT 1777 MATA. DEF $MATA START PAGE OF FIRST USER PARTITION SPFP BSS 1 PAGES BSS 1 COUNT BSS 1 SKP * ** CHECK QUEUE BUFFER LENGTH ** SPC 1 CHKQU EQU * LDA EQT8,I CHECK QUEUE CMA,INA BUFFER # OF ENTRIES SSA,RSS >0? JMP ERROR NO - REJECT SPC 2 * ** VALID ENTRY TYPES CHECK ** SPC 1 LDB EQT7,I GET & SAVE STB TEMP1 QUEUE BUFFER ADDRESS STA TEMP2 SAVE ENTRY COUNTER STB TEMP3 SPC 1 * FIND QUEUE BUFFER LOCATION * SPC 1 CLB SET UP STB QBUF QUEUE FLAG LDA TEMP3 FETCH QUEUE ADDRESS JSB DRA? FIND LOCATION ISZ QBUF IF QUEUE IN DISK AREA, QBUF=1 * IF QUEUE IN SSGA OR COMMON, QBUF=0 SPC 1 L1 EQU * LDB TEMP1,I GET CURRENT ENTRY TYPE NUMBER ISZ TEMP1 ADVANCE QUEUE BUFFER ADDRESS CPB ONE TYPE = 1? RSS YES - OK CPB TWO TYPE = 2? JMP L6 YES - OK LDA TEMP1,I GET NUMBER OF STA TEMP5 OPERATIONS AND CMA,SSA,RSS CHECK FOR <0 JMP ERROR <0 SO REJECT CPB THREE TYPE = 3? JMP L2 YES - OK SZB IF ENTRY TYPE = 0 THEN ERROR CMA,SZA,RSS CHECK # OF OPERATIONS FOR 0 JMP ERROR =0 SO REJECT LDA MIN10 IS TYPE ADA B MORE THAN SSA THREE BUT SSB LESS THAN TEN? JMP ERROR NO SPC 2 * H ** VALID BUFFER CHECK ** * * IF THE QUEUE BUFFER IS NOT IN A DISK RESIDENT AREA (EITHER RT * OR BACKGROUND) THEN NO DATA BUFFER MAY BE IN A DISK RESIDENT * AREA. * L2 EQU * STB TEMP6 SAVE (B) ISZ TEMP1 POINT TO BUFFER ADDR LDA QBUF CHECK QUEUE LOCATION CPA ONE IF QUEUE JMP NOSWP IN DISK AREA - NOT SWAPABLE SPC 1 SPC 1 JSB CPASS FETCH BUFFER LENGTH LDA TEMP1,I FETCH BUFFER ADDRESS JSB DRA? CHECK BUFFER LOCATION JMP ERROR BUFFER IS IN DISK AREA -- ERROR JMP NSWP2 BUFFER IS IN CORE AREA SPC 1 NOSWP EQU * QUEUE IN DISC AREA JSB CPASS FETCH BUFFER LENGTH LDA TEMP1,I FETCH BUFFER ADDR JSB DRA? CHECK BUFFER ADDRESS ANYHOW NOP (DON'T CARE IF BUFF IN DISC AREA) NSWP2 EQU * BUFFER NOT IN DISC AREA IF ENTRY HERE LDB TEMP6 RESTORE (B) SSB FIRST BUFFER? JMP L3 NO CPB FOUR YES - TYPE = 4? JMP L5 YES - BUFFER OK CPB THREE TYPE = 3? JMP L5 YES - BUFFER OK CMB,INB SET FOR SECOND BUFFER CHECK JMP L2 SPC 2 CPASS NOP LDB TEMP5 GET DATA LEN FROM Q LDA TEMP6 GET TYPE & BUFF NUMBER FLG SSA 1ST BUFFER? JMP PASS2 NO, 2ND CPA SEVEN YES, IF TYPE 7 CALL CLB,INB THEN LENGTH IS 1 CPA EIGHT ELSE IF TYPE 8 LDB TWO THE LENGTH IS 2 JMP CPASS,I RETURN SPC 1 PASS2 CMA,INA 2ND BUFF, COMPL FLAG FOR TYPE CPA NINE IF TYPE 9 CLB,INB THEN 2ND BUFF LEN IS 1 JMP CPASS,I RETURN SPC 1 NINE DEC 9 MIN10 DEC -10 SPC 2 L3 EQU * CMB,INB RECOVER TYPE CPB FIVE TYPE = 5? RSS YES - CHECK VALIDITY JMP L5 NO - BUFFERS OK SPC 2  SPC 2 * ** CHECKED ALL ENTRIES? ** SPC 1 L5 ISZ TEMP1 ADVANCE QUEUE ADDRESS L6 ISZ TEMP2 CHECKED ALL ENTRIES? JMP L1 NO - CHECK NEXT ONE QBUF BSS 1 SKP * ** NEED DMA? ** SPC 1 LDA REMOT GET REMOTE/LOCAL FLAG SLA REMOTE? JMP NODMA YES, NO DMA LDA EQT6,I CHECK CONWD BIT 6 AND BIT6 TO SEE IF DMA SZA,RSS HAS BEEN REQUESTED BY USER JMP NODMA NOT REQUESTED LDA FIVE COMPLETE TO GET JMP I.RTN DMA ASSIGNED SPC 1 * ** DON'T USE DMA ** SPC 1 NODMA EQU * LDA EQT6,I MAKE SURE THAT CONWD AND BX177 IS CLEAR OF STA EQT6,I UNDESIRABLE BITS JMP OP SPC 2 BX177 OCT 140177 BIT7 OCT 200 SPC 2 * ** HAVE DMA ** SPC 1 HVDMA EQU * LDA EQT6,I SET CONWD AND BX177 FOR DMA IOR BIT7 OPERATIONS STA EQT6,I WHERE POSSIBLE SPC 1 LDB EQT9,I SPC 1 LDA CHAN CONFIGURE JSB DCFGR DMA INSTRUCTIONS SPC 2 * ** CALL MAIN PROCESSOR ** SPC 1 OP EQU * LDA EQT8,I CREATE CMA NUMBER OF ENTRIES STA EQT8,I COUNTER CCA FORCE STA EQT10,I START-UP JSB PROC START OPERATIONS CLA,RSS OPERATION INITIATED LDA FOUR IMMEDIATE COMPLETION CLB I.RTN EQU * JMP I.62,I THEN RETURN TO SYSTEM SPC 2 THREE DEC 3 FIVE DEC 5 SIX DEC 6 MPFT. DEF $MPFT SKP ***************************************** * * * CONTINUATION AND COMPLETION SECTION * * * ***************************************** SPC 2 C.62 NOP LDB EQT1,I SPURIOUS SZB,RSS INTERRUPT? JMP SPURI YES - IGNORE IT SPC 1 CPA SIX WAS RSS INTERRUPT CPA SEVEN FROM RSS DMA JMP DEV NO JSB DCFGR YES - CONFIGURE DMA SPC 1 CLCD1 CLC HDMA TURN OFF DMA CCA FORCE NEW STA EQT10,I ENTRY CHECK LDA EQT6,I IS A DEVICE \ ALF,ALF INTERRUPT CHECKS BIT 9 RAR,SLA REQUIRED? / JMP CONT YES LDA EQT4,I NO - GET DEVICE AND B77 SELECT CODE SPC 2 * ** CALL MAIN PROCESSOR ** SPC 1 DEV EQU * JSB CNFGR CONFIGURE ALL I/O INSTRUCTIONS SPC 1 LDA REMOT REMOTE? SLA,RSS YES - SKIP JMP LOCAL NO - SKIP STATUS WORD CHECK LIA2 LIA .2313,C READ STATUS WORD AND SMASK SAVE PARITY, MISSED, & RIP BITS SZA,RSS CHECK FOR BAD STATUS JMP LOCAL GOOD STATUS - CONTINUE LDA EQT5,I BAD STATUS IOR BIT7 SET XMSN ERROR BIT STA EQT5,I IN STATUS WORD JMP PERR AND RETURN TO CALLER LOCAL EQU * LDA EQT6,I IS A \ ALF,ALF DMA CHANNEL CHECKS BIT 7 SSA,RSS ASSIGNED? / JMP L7 NO DLD INTBA,I \ ELA,CLE,ERA \ ELB,CLE,ERB \ CPA EQT1 > GET PROPER LDA SIX / DMA CHANNEL CPB EQT1 / LDA SEVEN / JSB DCFGR GO CONFIGURE DMA SPC 1 L7 EQU * JSB PROC START OR CONT OPERATION JMP CONT OPERATION CONTINUATION CLB,INB,RSS ALL OPERATIONS DONE (B=1) PERR EQU * CLB PARITY ERROR(B=0) LDA BIT15 SET A= BIT 15 TO RELEASE DMA CLC1 CLC .2313,C TURN OFF DEVICE JMP C.RTN RETURN TO SYSTEM (COMPLETED) SPC 2 TWO DEC 2 SMASK OCT 100006 SPC 2 SPURI EQU * STB EQT15,I CLEAR TIME OUT ON SPURIOUS INT CONT EQU * ISZ C.62 SET RETURN FOR CONTINUATION C.RTN EQU * JMP C.62,I RETURN TO SYSTEM SPC 2 ONE DEC 1 B77 OCT 77 SKP ******************** * * * MAIN PROCESSOR * * * ******************** SPC 2 PROC NOP ISZ EQT10,I CHECK FOR END OF CURRENT ENTRY JMP MORE MORE TO GO ON THIS ONE * ("MORE" ENABLES USER MAP) NEXT EQU * LDA STCC1 SET ENCODE STA STCC2 COMMAND ISZ EQT8,I MORE ENTRIES TO GO? RSS YES JMP DONE NO - ALL DONE LDB EQT7,I GET NEW TYPE NUMBER LDB B,I AND SAVE STB EQT9,I IT IN EQT ISZ EQT7,I ADVANCE QUEUE ADRS CCA ASSUME TYPE 1 OR 2 AND STA EQT10,I SET FOR 1 OPERATION CPB ONE TYPE = 1? JMP SYNRM YES - GO DO A SYSTEM NORMALIZE CPB TWO TYPE = 2? JMP ESCPE YES - ISSUE 2930A ESCAPE WORD SPC 1 SPC 1 LDA EQT7,I GET TRANSFER LDA A,I LENGTH FROM QUEUE BUFFER CMA MAKE IT A NEGATIVE STA EQT10,I COUNTER & STORE IN EQT ISZ EQT7,I ADVANCE QUEUE ADRS LDA EQT7,I GET 1ST OR ONLY BUFF ADRS LDA A,I AND PLACE IT IN STA EQT11,I EQT IN POSITIONS FOR BOTH STA EQT12,I BUFFER ADDRESSES ISZ EQT7,I ADVANCE QUEUE ADRS LDB EQT9,I RESTORE TYPE TO B CPB THREE TYPE = 3? JMP OUT DO SIMPLE OUTPUT UNDER USER MAP * ("OUT" ENABLES USER MAP) CPB FOUR TYPE=4? JMP IN DO SIMPLE INPUT UNDER USER MAP * ("IN" ENABLES USER MAP) LDA EQT7,I GET 2ND BUFF ADRS LDA A,I AND PLACE IT IN STA EQT12,I THE EQT ISZ EQT7,I ADVANCE Q&UEUE ADRS SPC 1 UJP NEXT3 SWITCH TO USER MAP NEXT3 CPB FIVE TYPE = 5? JMP OUTPT YES - GO TO OUTPUT (THEN INPUT) LDA EQT11,I GET & SAVE LDA A,I THE 1ST WORD OF STA EQT13,I THE 1ST BUFFER LDA EQT10,I ADJUST THE INA OPERATIONS COUNTER BIT9 ALS FOR DOUBLE OPERATIONS STA EQT10,I ON THE DUAL DAC JMP DAC SKP SEVEN DEC 7 EIGHT DEC 8 SYN OCT 140001 SPC 1 * ** ISSUE SYSTEM NORMALIZE ** SPC 1 SYNRM EQU * LDA SYN GET SYSTEM NORMALIZE COMMAND LDB REMOT GET REMOTE/LOCAL FLAG SLB REMOTE? JMP R/L YES,ISSUE COMMAND REMOTE CLC2 CLC .2313,C CLC TO GET ENCODE EDGE OTA1 OTA .2313 AND ISSUE IT STCC1 STC .2313,C DOUBLE ENCODE NOP TO INSURE STC1 STC .2313 RESPONSE JMP PROC,I CONTINUATION RETURN SPC 1 FOUR DEC 4 BIT8 OCT 400 SPC 1 * ** CONTINUATION ** SPC 1 MORE EQU * LDB EQT9,I GET CURRENT TYPE NUMBER CPB THREE TYPE = 3? JMP OUTPT YES - CONT SIMPLE OUTPUT CPB FOUR TYPE = 4? JMP INPT1 YES - CONT SIMPLE INPUT CPB FIVE TYPE = 5? JMP INPT2 YES - GO INPUT (THEN OUTPUT) SPC 1 DAC EQU * LDA EQT6,I GET REQUEST CONTROL WORD XOR BIT8 TOGGLE BIT 8 FOR MIXED IN/OUT STA EQT6,I SAVE IT ALF,ALF POSITION FOR TESTING LATER CPB SIX TYPE = 6? JMP BLOCK YES - GO DO BLOCK SCAN ON DAC CPB SEVEN TYPE = 7? JMP SINGL YES - GO DO SINGLE CHAN ON DAC CPB EIGHT TYPE = 8? JMP SEQTL YES - GO TO SEQUENTIAL ON DAC SLA TYPE = 9: CHECK CONWD BIT 8? JMP CHANL CHANNEL # OUTPUT LDA EQT12,I GET DATA WORD LDA A,I JMP R/L GOTO REMOTE LOCAL OUTPUT SKP R SEQTL EQU * SLA,RSS DAC SEQ SCAN: CHECK CONWD BIT 8? JMP DATA DATA OUTPUT LDA EQT13,I GET ADDRESS TO BE OUTPUT AND DMASK & ELIMINATE WAIT BIT STA B LDA EQT11,I GET END CHANNEL INA ADDRESS FOR SEQUENTIAL LDA A,I SCAN AND CHECK AND DMASK TO SEE IF CPA B CURRENT CHAN IS END CHAN JMP NWSCN IT IS - START NEW SCAN LDA EQT13,I \ STA B \ INCREMENT ADB B20 / CHANNEL # STB EQT13,I / SPC 2 CLB,INB IS THIS THE CMB LAST CHANNEL CPB EQT10,I TO BE SET? JMP DWAIT YES - SET WAIT BIT JMP R/L# SPC 1 ESCPE EQU * LDA SCAPE (GET 2930A ESCAPE WORD) R/L EQU * REMOTE/LOCAL OUTPUT FROM (A) REGISTER STA EQT13,I SAVE LAST OUTPUT WORD R/L# EQU * LDB REMOT GET REMOTE/LOCAL FLAG SLB,RSS LOCAL? JMP OTA2 YES SPC 1 REOUT EQU * REMOTE OUTPUT ONLY STCC4 STC .2313,C SET RECEIVE MODE LIB1 LIB .2313,C CLEAR STATUS LIB2 LIB .2313 CLEAR DATA OTA3 OTA .2313 OUTPUT COMMAND WORD TO 2313 JMP PROC,I RETURN AND WAIT FOR FLAG SPC 1 OTA2 OTA .2313 ISSUE A WORD * * NOTE: THE FOLLOWING INSTRUCTION IS NORMALLY A CONFIGURED * "STC SC,C" EXCEPT FOR TYPE 3 ENTRIES WITH N=0. IN THIS * CASE, IT IS A "JMP NEXT". * STCC2 JMP NEXT AND ENCODE JMP PROC,I CONTINUATION RETURN SPC 2 B20 OCT 20 DMASK OCT 7776 BIT6 OCT 100 SCAPE OCT 146000 BIT15 OCT 100000 SKP NWSCN EQU * LDB EQT11,I DAC SEQ NEW SCAN LDB B,I RESTORE CURRENT CHAN ADRS STB EQT13,I STORAGE WITH START CHAN ADRS LDA EQT11,I INA LDA A,I DWAIT EQU * IOR ONE SET FLAG WAIT BIT JMP R/L# SPC 1 SINGL EQU * SLA,RSS DACW SINGLE CHAN: CHK CONWD B8? JMP DATA DATA OUTPUT LDA EQT11,I GET "THE" CHANNEL LDA A,I NUMBER JMP R/L SPC 1 BLOCK EQU * SLA,RSS DAC BLK SCAN: CHK CONWD BIT 8? JMP DATA DATA OUTPUT CHANL EQU * LDA EQT11,I GET NEXT CHANNEL LDA A,I NUMBER ADVNC EQU * ISZ EQT11,I ADVANCE CHAN BUFF ADDRESS JMP R/L SPC 1 DATA EQU * LDA EQT12,I DAC DATA OUTPUT: LDA A,I GET DATA WORD FROM BUFFER ISZ EQT12,I ADVANCE DATA BUFF ADDRESS JMP R/L# GO OUTPUT THE DATA WORD SPC 2 * ** SIMPLE OUTPUT (TYPE 3) ** SPC 1 OUT EQU * ISZ EQT10,I ADJUST OPERATIONS COUNTER JMP DMCHK IF >0 OPS THEN GO CHK MORE LDA SAJMP FOR 0 OPS ELIMINATE STA STCC2 ENCODE AND FORCE NEXT ENTRY LDA REMOT \ SLA,RSS \ JMP OUTPT (LOCAL) LDA EQT11,I SKIP OUPUT BUT LDA A,I SAVE OUTPUT WORD STA EQT13,I / ISZ EQT11,I / JMP NEXT / SPC 1 OUTPT EQU * LDA EQT11,I GET OUTPUT WORD LDA A,I FROM BUFFER JMP ADVNC SKP DMCHK EQU * LDA REMOT GET REMOTE FLAG SLA REMOTE JMP OUTPT YES,NO DMA LDA EQT10,I CHECK NUMBER OF CMA,INA OPERATIONS CPA ONE FOR >2? JMP OUTPT =1 (NO DMA) CPA TWO >1 JMP OUTPT =2 (NO DMA) LDA EQT6,I >2 SO CHECK CONWD ALF,ALF BIT 7 SSA,RSS FOR DMA? JMP OUTPT NO DMA ALF,CLE,ALF SET BIT 9 OF CONWD (DEV INTRPT IOR BIT9 REQUIRED) & CLEAR E (OUTPUT) JMP DMSET GO START OUTPUT DMA SPC 2 NOT9 OCT 176777 BIT13 OCT 20000 SPC 1 * ** SIMPLE INPUT (TYPE 4) **6 SPC 1 IN EQU * * UJP IN2 MAKE SURE WE'RE IN USER MAP *CIO* LDA REMOT SLA,RSS JMP IN1 NCODE EQU * LDA EQT13,I JMP REOUT IN1 EQU * LDA EQT6,I CHECK CONWD ALF,ALF BIT 7 FOR SSA,RSS DMA OPERATION? JMP STCC2 NO DMA - GO ENCODE ALF,ALF CLEAR CONWD BIT 9(NO DEV INTRPT) AND NOT9 REQUIRED) & SET E CCE FOR DMA INPUT SPC 1 * ** SET UP & START DMA ** * (LOCAL ONLY) SPC 1 DMSET EQU * STA EQT6,I SAVE CONWD LDA EQT4,I FORM DMA AND B77 COMMAND WORD 1 WITH DEVICE IOR BIT15 SELECT CODE & STC OPTION SEZ INPUT? IOR BIT13 YES - SET CLC OPTION OTAD1 OTA HDMA ISSUE CW1 & CLCD2 CLC LDMA PREPARE FOR CW2 LDA EQT11,I GET BUFFER ADDRESS FOR CW2 SEZ INPUT? IOR BIT15 YES - SET INPUT MODE BIT OTAD2 OTA LDMA ISSUE CW2 & STCD1 STC LDMA PREPARE FOR CW3 LDA EQT10,I GET TRANSMISSION LENGTH SEZ AS CW3 AND INA ADJUST IF INPUT OTAD3 OTA LDMA ISSUE CW3 - DMA IS NOW READY CLF 0 TURN OFF INTERRUPT SYSTEM SEZ,RSS OUTPUT? STF1 STF .2313 YES - SET DEVICE FLAG SEZ INPUT? STCC3 STC .2313,C YES - START DEVICE STCD2 STC HDMA,C START DMA TRANSFER CLA PRIVILEGED I/O CPA DUMMY PRESENT? JMP PROC,I NO - CONTINUATION EXIT CLCD3 CLC HDMA YES - TURN OFF DMA INTERRUPT LDB INTBA GET ADDRESS LDA CHAN OF APPROPRIATE CPA SEVEN DMA CHANNEL INB IN INTERRUPT LDA B,I TABLE IOR BIT15 SET BIT 15 TO INDICATE THIS DMA STA B,I CHANNEL IS IN USE STF 0 TURN INTERRUPT SYSTEM BACK ON JMP PROC,I CONTINUATION EXITM SPC 2 SAJMP NOP SPC 2 DONE EQU * ISZ PROC SET FOR COMPLETION JMP PROC,I AND RETURN SPC 2 * ** INPUT ROUTINE ** SPC 1 INPUT NOP LIA1 LIA .2313 GET READING FROM I/O CARD LDB EQT12,I GET BUFFER ADDRESS STA B,I AND STORE THE READING ISZ EQT12,I ADVANCE BUFFER ADDRESS LDA EQT10,I GET OPERATION COUNTER INA,SZA AND CHECK FOR DONE? JMP INPUT,I NO - GO ON JMP NEXT YES - GET NEXT ENTRY SPC 2 INPT1 EQU * CONTINUE SIMPLE INPUT OPERATION JSB INPUT CONTINUE SIMPLE INPUT LDB REMOT SLB JMP NCODE JMP STCC2 OPERATION SPC 1 INPT2 EQU * JSB INPUT CONT INPUT THEN GO JMP OUTPT OUTPUT NEXT CHAN # SKP SKP ******************************* * * * I/O CONFIGURATION ROUTINE * * * ******************************* SPC 1 CNFGR NOP LDB STCC2 SAVE JUMP STB SAJMP INSTRUCTION CLB FIRST TIME STB *-2 ONLY IOR OTA0 FORM "OTA SC" INST STA OTA1 AND STA OTA2 STORE IT STA OTA3 IOR BIT6 FORM "STC SC" INST STA STC1 AND STORE IT XOR B5000 FORM "CLC SC,C " INST STA CLC1 AND STORE IT STA CLC2 XOR BIT11 FORM "STC SC,C" INST STA STCC1 AND STA STCC2 STORE STA STCC3 IT STA STCC4 XOR B1200 FORM "LIA SC" INST STA LIA1 AND STORE IT IOR BIT9 FORM "LIA SC,C" INST STA LIA2 AND STORE IT IOR BIT11 FORM "LIB SC,C" INSTRUCTION STA LIB1 XOR BIT9 FORM "LIB SC" INSTRUCTION STA LIB2 XOR BIT8 FORM "STF SC" INST STA STF1 AND STORE IT LDA EQT4,I GET SUBCHANNEL ASR 6 CI SHIFT TO LSB STA REMOT JMP CNFGR,I SPC 2 REMOT NOP REMOTE/LOCAL FLAG OTA0 OTA 0 BIT11 OCT 4000 B1200 OCT 1200 B5000 OCT 5000 NB4 OCT -4 SKP ******************************************* * * * DMA INSTRUCTION CONFIGURATION ROUTINE * * * ******************************************* SPC 1 DCFGR NOP STA CHAN SAVE CHANNEL IOR OTA0 FORM "OTA 6 OR 7" INST STA OTAD1 AND STORE IT ADA NB4 FORM "OTA 2 OR 3" INST STA OTAD2 AND STA OTAD3 STORE IT IOR BIT6 FORM "STC 2 OR 3" INST STA STCD1 AND STORE IT IOR BIT11 FORM "CLC 2 OR 3" INST STA CLCD2 AND STORE IT ADA FOUR FORM "CLC 6 OR 7" INST STA CLCD1 AND STA CLCD3 STORE IT XOR B5000 FORM "STC 6,C OR 7,C" INST STA STCD2 AND STORE IT LDB INTBA \ SLA \ INB \ CLEAR BIT 15 OF LDA B,I / PROPER INTBL LOC. ELA,CLE,ERA / STA B,I / JMP DCFGR,I SKP **************************************** * * * BASE PAGE POINTERS AND OTHER EQU'S * * * **************************************** SPC 2 A EQU 0 B EQU 1 .2313 EQU 0 LDMA EQU 0 HDMA EQU 0 SPC 1 TEMP1 EQU CLCD1 TEMP2 EQU C.62 TEMP3 EQU OTAD1 TEMP4 EQU CLCD2 TEMP5 EQU OTAD2 TEMP6 EQU PROC TEMP7 EQU INPUT SPC 1 INTBA EQU 1654B SPC 1 . EQU 1657B ESTABLISHES REF POINT EQT1 EQU .+1 EQT4 EQU .+4 EQT5 EQU .+5 EQT6 EQU .+6 EQT7 EQU .+7 EQT8 EQU .+8 NEG. COUNT OF # OF ENTRIES EQT9 EQU .+9 CURRENT ENTRY TYPE # EQT10 EQU .+10 # BUFFER WORDS IN CURRENT ENTRY EQT11 EQU .+11 1ST BUFFER ADDRESS EQT12 EQU 1771B 2ND BUFFUfd`R ADDR(=EQT11 IF NO 2ND) EQT13 EQU 1772B LAST WORD OUTPUT (LAST ADDR DAC) SPC 1 EQT15 EQU 1774B TIME-OUT TIMER SPC 1 CHAN EQU 1673B DUMMY EQU 1737B SPC 3 ******************* * * * END OF DRIVER * * * ******************* SPC 1 END 4f '= 02313-82001 A S 0106 HP 2313B VERIFICATION GEN. INFORMATION & START             H0101 ASMB,R,B,L HED 2313B VERIF -- GENERAL INFORMATION -- 8/22/73 NAM START * * THE 2313B SUBSYSTEM MULTIPLEXER VERIFICATION ALLOWS THE * USER TO EXERCISE THE 2313B IN ALL MULTIPLEXER MODES. * THE HIGH LEVEL MULTIPLEXERS AND THE LOW LEVEL MULTI- * PLEXERS CAN BE USED BOTH PACED AND UNPACED. * * THE PROGRAM HAS A NUMBER OF TESTS WHICH ARE CALLED BY * TYPING THE COMMAND (SEE LIST BELOW). * * THE PROGRAM ISSUES A PROMPTER (>) WHEN IT IS READY TO * ACCEPT A COMMAND. * * * * T E S T S: * * * * 1. SINGLE CHANNEL * * 1 TO 200 READINGS ARE TAKEN ON A SINGLE SPECI- * FIED CHANNEL. THE RESULTS ARE PRESENTED * AS AN AVERAGE OF ALL READINGS, THE HIGHEST * AND LOWEST READINGS AND THEIR DIFFERENCE * (PEAK-TO-PEAK), AND THE RMS ERROR BETWEEN THE * READINGS AND THE AVERAGE. * * * 2. TWO CHANNEL * * 2 TO 200 READINGS ARE TAKEN ALTERNATING * BETWEEN TWO SPECIFIED CHANNELS. THE AVERAGE, * ETC., ARE PRESENTED FOR EACH CHANNEL. * * * 3. SEQUENTIAL * * 1 TO 200 READINGS ARE TAKEN SEQUENTIALLY FROM * A SPECIFIED STARTING CHANNEL. THE TOTAL * NUMBER OF READINGS SHOULD NOT EXCEED THE * NUMBER OF CONTIGUOUS CHANNELS AVAILABLE (UNLESS * USING THE LAD). NO INFORMATION IS PRESENTED * DIRECTLY. A LIST OF READINGS MAY BE MADE (SEE * LIST). SKP * 4. HISTOGRAM * * 1 TO 32767 READINGS ARE TAKEN ON ONE SPECI- * FIED CHANNEL AND CATEGORIZED. EACH DIFFERENT * VALUE READ IS A CATEGORY AND THE NUMBER OF * READINGS FOUND IN A CATEGORY ARE COUNTED. * UP TO 20 CATEGORIES CAN BE USED. AN ATTEMPT * TO CREATE A 21ST CATEGORY CAUSES EARLY TERM- * INATION OF THE TEST (THE NUMBER OF READINGS * TAKEN IS PRESENTED). THE AVERAGE, P-P, HIGH, * LOW, AND RMS ERROR ARE PRESENTED. * * * 5. INTERLACE * * IF MORE THAN ONE LLMPX CARD IS PRESENT IN A * SUBSYSTEM, FASTER THROUGHPUT FROM THESE CARDS * CAN BE REALIZED. UP TO 25 CARDS CAN BE INTER- * LACED, WITH UP TO 200 INDIVIDUAL CHANNELS * MEASURED. A GAIN IS REQUESTED AND PROGRAMMED * FOR EACH CARD. AFTER SPECIFYING THE FIRST CARD * AND CHANNEL OF INTEREST, ALL CARDS WILL RETURN * READINGS STARTING WITH THE FIRST CHANNEL SPECIFIED * AND CONTINUING FOR THE NUMBER OF CARDS ENTERED. * NO INFORMATION IS PRESENTED DIRECTLY. A LIST OF * READINGS MAY BE MADE (SEE LIST). * * * 6. SS/H * * THIS TEST IS SIMILAR IN FORM TO SEQUENTIAL SCAN, * WITH THE EXCEPTION THAT ALL CHANNELS OF INTEREST * ARE SAMPLED AT THE SAME INSTANT, THEN HELD AND * DIGITIZED. THIS TEST IS AVAILABLE WITH OR WITHOUT * SETTING GAIN MODE. * * * 7. DISPLAY * * READINGS ARE CONTINOUSLY TAKEN ON ONE SPECI- * FIED CHANNEL. THE RESULTS ARE DISPLAYED IN * THE B REGISTER (2115/2116) OR IN THE SWITCH * REGISTER (2100/2114). IF THE ANSWER TO * STATUS IS NO, A 16 WORD AVERAGE IS DISPLAYED. * IF THE ANSWER TO STATUS IS YES, A 4 WORD * AVERAGE IS DISPLAYED AND STATUS BIT 1 * IS SHOWN. BIT 1 = PACE RATE ERROR * (PACING FASTER THAN READINGS CAN BE TAKEN). * BIT 0 IS ALWAYS = 0. * * * 8. NORMALIZE * * ISSUE THE SYSTEM NORMALIZE COMMAND. SKP * 9. REPEAT * * REPEAT THE LAST TEST AS SPECIFIED. REPEAT IS * NOT AVAILABLE AFTER ENTERING A NEGATIVE * NUMBER TO ABORT INPUT REQUESTS. IT IS * ALSO NOT AVAILABLE INITIALLY OUR AFTER * ENTERING OR LEAVING THE CONDITION "GAIN". * * * 10. LIST * * LIST ANY PART OR ALL OF THE DATA BUFFER * (READINGS 1 TO 200). IF THE LAST TEST WAS * HISTOGRAM, LIST THE HISTOGRAM OVER. THE * RESULTS OF INTERLACING WILL BE LISTED * AS FIRST CHANNEL OF INTEREST ON ALL CARDS, * THEN SECOND CHANNEL OF INTEREST ON ALL CARDS, * ETC. WITH GAIN SET, SEQUENTIAL AND SS/H WILL * BE LISTED TO SHOW DISTINCT GAIN GROUPS. LIST IS * NOT AVAILABLE AFTER DISPLAY, WITH REPEAT * CONDITION SET, OR WHENEVER A TEST IS ABORTED. * * * 11. TAPE * * TAKE ALL FURTHER COMMANDS FROM TAPE READER. * THIS MAY BE A PHOTO-READER (IF AVAILABLE) OR * THE TTY. IF THE TTY IS USED (ANSWER 0 TO * TAPE-READER SELECT CODE WHEN CONFIGURING) * THIS MODE DISABLES THE KEYBOARD ABORT FEATURE. * * * 12. KEYBOARD * * TAKE ALL FURTHER COMMANDS FROM KEYBOARD (TTY). * THIS SHOULD ALWAYS BE THE LAST COMMAND ON A * TAPE OF COMMANDS. THIS IS THE NORMAL MODE * ENTERED AFTER LOADING THE PROGRAM. * * * 13. * * * THE ASTERISK IS USED FOR COMMENTS. THIS * ALLOWS THE USER TO DOCUMENT HIS TESTS. WHEN * ENCOUNTERED THE REST OF THAT LINE IS IGNORED. * * * 14. CONDITIONS * * ALL ACTIVE CONDITIONS ARE IDENTIFIED BY THEIR * FIRST LETTER. SKP * C O N D I T I O N S: * * * TO PLACE CONDITIONS ON A TEST, TYPE THE WORD "SET" * FOLLOWED BY THE DESIRED CONDITION. * * * A. SET DELAY * * ALL TESTS FOLLOWING WILL USE A SOFTWARE DELAY * BETWEEN READINGS OF THE APPROXIMATE # OF MILLI- * SECONDS SPECIFIED AT THIS TIME. * * * B. SET PACER * * ALL TESTS FOLLOWING (EXCEPT INTERLACE) WILL * USE THE PACER AT A PERIOD AND MULTIPLIER * SPECIFIED AT THIS TIME. DELAY IS OVERRIDDEN * IF PREVIOUSLY SET. * * * C. SET REPEAT * * REPEAT THE SPECIFIED TEST WITHOUT PRINTOUTS * UNTIL A KEYBOARD KEY IS PRESSED. HISTOGRAM * DOES CONTINUE PRINTING ALL INFORMATION * UNLESS SWITCH 15 IS UP. WITH SWITCH 15 * UP ONLY THE AVG WILL BE PRINTED. * * * D. SET GAIN * * VERIFICATION PROGRAM ENTERS LLMPX MODE, WHERE * ALL FOLLOWING TESTS REQUEST AND PROGRAM GAIN * ON THE LLMPX OF INTEREST. GAIN MUST BE 1 OF * THE 8 LLMPX RANGES, I.E.: 1000,500,250,125,100, * 50,25, OR 12.5 . RESULTS ARE SCALED ACCORDINGLY. * IN GAIN MODE, SEQUENTIAL SCAN AND SS/H TESTS WILL * REQUEST GROUPS OF CHANNELS TO BE MEASURED AND * SCALED AT VARIOUS GAIN RANGES. THE LAD IS NOT * AVAILABLE IN THIS MODE. * * * E. SET K * * NOT A TRUE CONDITION. PROGRAMS LLMPX CARD OF * INTEREST TO 1 OF 8 VALID GAINS IMMEDIATELY, BUT * DOES NOT SCALE RESULTS OF FOLLOWING TESTS. USED * FOR CALIBRATION OF LLMPX AND CHECKING FOR MAXIMUM * GAIN WITHOUT OVERLOADING SUBSYSTEM. SKP * * * F. SET LAST ADDRESS DETECTOR * * THIS CONDITION ALLOWS USE OF THE LAST ADDRESS * DETECTOR CARD IF THAT CARD IS INCLUDED IN THE * SYSTEM. WHEN SET THE SEQUENTIAL SCAN MODE * WILL ASK FOR A LAST ADDRESS AS WELL AS THE * FIRST ADDRESS IF GAIN IS NOT SET. * * * * CONDITIONS ARE CLEARED AS FOLLOWS: * * A. CLEAR DELAY * B. CLEAR PACER * C. CLEAR REPEAT * D. CLEAR GAIN * E. CLEAR LAST ADDRESS DETECTOR * F. CLEAR ALL (CLEARS ALL CONDITIONS) * * WHENEVER THE USER LOSES TRACK OF HIS CONDITIONS, REFER * TO THE COMMAND "CONDITIONS" (14). * * * A D D I T I O N A L N O T E S: * * * SWITCH 15 ON THE SWITCH REGISTER MAY BE USED TO TERM- * INATE A LISTING EARLY (LINE-BY-LINE). WITH REPEAT * CONDITION SET AND HISTOGRAM CALLED, SWITCH 15=1 * WILL CAUSE ONLY THE AVERAGE TO BE PRINTED. ANY TIME * LIST IS CALLED WHILE SWITCH 15 IS UP WILL RESULT * IN LISTING ONE READING ONLY. * * ANY TEST MAY BE ABORTED DURING ITS SETUP BY ENTERING * A NEGATIVE NUMBER TO ANY NUMERICAL INPUT REQUEST * (I.E., NO=; BX,CD,CH=; ETC.). REPEAT WILL NOT BE * AVAILABLE AFTER THIS TYPE OF ABORT. * * ANY TEST MAY BE ABORTED WHILE RUNNING BY PRESSING ANY * KEYBOARD KEY (UNLESS IN TAPE MODE WITHOUT A PHOTO- * READER). LIST WILL NOT BE AVAILABLE BUT REPEAT WILL. * * PRESSING A KEYBOARD KEY IS THE PROPER WAY TO TERMINATE * THE DISPLAY MODE OR ANY TEST WITH REPEAT SET. * HED START -- 2313B VERIF -- CONFIGURING LINK -- 8/22/73 * CONFIGURING ROUTINE LINK * * * THIS ROUTINE IS A ONE WORD * LINK TO CNFGR WHICH IS IN * THE CODE PROCEDURES SECTION. * * IT ALLOWS THE USER TO GET * TO THE CONFIGURING ROUTINE BY * USING 2000 (OCTAL) AS A START ADDRESS. * * STARTING AT OCTAL 2 WILL * BYPASS THIS ROUTINE AND GO * DIRECTLY TO THE ALGOL PORTION. SPC 2 ENT START EXT CNFGR SPC 1 START JMP CNFGR SPC 1 END  ( 2 02313-82002 A S 0106 HP 2313B VERIFICATION VERIF - ALGOL             H0101 HHPAL,L,B,"VERIF" BEGIN COMMENT AUGUST 22,1973 THIS ALGOL PROGRAM IS PRIMARILY A CONTROL ROUTINE. MOST OF THE WORK IS DONE IN ASSEMBLY LANGUAGE CODE PROCEDURES. THE ALGOL WRITES MESSAGES, READS QUANTITIES AND CHANNEL NUMBERS, CHECKS FOR ERROR ENTRIES, SETS UP THE REQUESTED TEST AND CALLS THE 2313B DRIVER (THROUGH THE FTN-ALGOL INTER- FACE, V2313), AND LISTS TEST RESULTS. ; PROCEDURE STATPAC(DATA,NUMBERTAKEN,MODE,HOWMANY); COMMENT THIS PROCEDURE CALCULATES THE AVERAGE OF ALL READINGS TAKEN ON ONE CHANNEL IN THE SI, TW, OR HI TESTS. IT ALSO CALCULATES THE HIGHEST AND LOWEST VALUES AND THEIR DIFFERENCE (PEAK-TO-PEAK). FINALLY, IT CALCULATES THE RMS ERROR BETWEEN THE READINGS AND THE AVERAGE. IT THEN PRINTS THESE VALUES ; VALUE MODE,HOWMANY; INTEGER NUMBERTAKEN,MODE,HOWMANY; REAL DATA; CODE; PROCEDURE ADDR(BOX,CARD,CHANNEL); COMMENT THIS PROCEDURE (IN CODES) COMBINES THE BOX, CARD, AND CHANNEL ADDRESSES INTO THE PROPER 2313 FORMAT. ; VALUE BOX,CARD; INTEGER BOX,CARD,CHANNEL; CODE; PROCEDURE I2313(UNIT,TYPE,PACE,MODE,CHANNELBUFFER,NUMBER, DATABUFFER,DIFFERENTIAL); COMMENT THIS IS THE ALGOL/FTN-DRIVER INTERFACE WHICH CALLS THE 2313B DRIVER (D.62) ; VALUE UNIT,TYPE,PACE,MODE,NUMBER,DIFFERENTIAL; INTEGER UNIT,TYPE,PACE,MODE,NUMBER,CHANNELBUFFER, DIFFERENTIAL; REAL DATABUFFER; CODE; PROCEDURE INTRP(WHERE,SC,TC,RS,BS,SS,HI,DI,ADDRESS,CO, LAD,REPEATOK,USEGAIN,LOOP,PACED,RATE,RANGE,EXTSS,LISTOK,IN); COMMENT THIS PROCEDURE IS THE COMMAND INTERPRETER. IT DOES THE COMMUNICATING WITH THE OPERATOR WHEN FIRST CALLING A TEST OR SETTING A =Q CONDITION ; INTEGER WHERE,SC,TC,RS,BS,SS,HI,DI,ADDRESS,LOOP, LISTOK,USEGAIN,PACED,RANGE,EXTSS,REPEATOK,CO,IN,RATE,LAD; CODE; PROCEDURE GNCHK(GAIN,RGAIN); COMMENT THIS PROCEDURE CHECKS FOR A VALID LLMPX GAIN AND CONVERTS IT TO THE PROPER CODE ; VALUE RGAIN; INTEGER GAIN; REAL RGAIN; CODE; PROCEDURE CNVRT(OUTBUFFER,INBUFFER,RGAIN,RGAIN2,START,NUMBER); COMMENT THIS PROCEDURE CONVERTS THE RAW INTEGER DATA IN THE BUFFER INTO REAL VOLTAGES (INCLUDING ADJUSTMENT FOR GAIN); VALUE RGAIN,RGAIN2,START,NUMBER; INTEGER START,NUMBER; REAL OUTBUFFER,INBUFFER,RGAIN,RGAIN2; CODE; PROCEDURE DESCR(START); INTEGER START; COMMENT THIS WRITES THE INSTRUCTIONS IF REQUESTED. IT IS DESTROYED, ALONG WITH THE INSTRUCTIONS, BY OPERATION OF THE PROGRAM; CODE; PROCEDURE DSPLY(CHANNEL,PACED,RATE,RANGE,EXTSS,S); COMMENT THIS PROCEDURE OPERATES THE 2313B SUBSYSTEM DIRECTLY, DISPLAYING THE RESULTS IN THE B AND SWITCH REGISTERS ; VALUE CHANNEL,PACED,RANGE,EXTSS; INTEGER CHANNEL,PACED,RANGE,EXTSS,S,RATE; CODE; PROCEDURE HISTO(CHANNEL,PACED,RATE,RANGE,EXTSS, RGAIN,HOWMANY,BUCKETS, NUMBERBUFFER,READINGBUFFER); COMMENT THIS PROCEDURE OPERATES THE 2313B SYSTEM DIRECTLY TO TAKE UP TO 32767 READINGS AND CATEGORIZE THEM INTO A HISTOGRAM ; VALUE CHANNEL,PACED,RANGE,EXTSS; INTEGER CHANNEL,PACED,RANGE,EXTSS,BUCKETS, HOWMANY,NUMBERBUFFER,RATE; REAL READINGBUFFER,RGAIN; CODE; PROCEDURE INTER(CHANNEL,HOWMANY,VOLTS,DATA,GROUPS,GAIN,GAINC,ABORT); COMMENT THIS PROCEDURE IS USED TO OPERATE LLMPX CARDS IN INTERLACE MODE ; VALUE HOWMANY,GROUPS; INTEGER CHANNEL,HO~WMANY,GROUPS,GAINC,ABORT; REAL VOLTS,DATA,GAIN; CODE; PROCEDURE EXIT(TEST,WHERETO); COMMENT THIS PROCEDURE IS USED TO ABORT THE TEST OR TO GET OUT OF LOOP OR DISPLAY. IT SETS UP A SPECIAL TTY INTERRUPT AND JUMPS OPERATION DIRECTLY TO THE SPECIFIED LABEL UPON TTY INTERRUPT ; VALUE TEST; INTEGER TEST; LABEL WHERETO; CODE; PROCEDURE ISSUE(ON); COMMENT THIS PROCEDURE IS USED TO SET UP OR CLEAR SS/H MODE ; VALUE ON; INTEGER ON; CODE; & PROCEDURE READ1(IN,NO,P1); COMMENT READ1 THROUGH READ4 ARE REALLY THE SAME PRO- CEDURE BUT WITH DIFFERENT LENGTH CALLS. THE READX PROCEDURE, WHICH THESE CALL, READS THE TTY OR PHOTO-READER DEPENDING UPON WHAT IS SPECIFIED (TAPE OR KEYBOARD). READR READS REAL NUMBERS ; VALUE IN,NO; INTEGER IN,NO,P1; CODE; PROCEDURE READ2(IN,NO,P1,P2); COMMENT SEE READ1; VALUE IN,NO; INTEGER IN,NO,P1,P2; CODE; PROCEDURE READ3(IN,NO,P1,P2,P3); COMMENT SEE READ1; VALUE IN,NO; INTEGER IN,NO,P1,P2,P3; CODE; PROCEDURE READ4(IN,NO,P1,P2,P3,P4); COMMENT SEE READ1; VALUE IN,NO; INTEGER IN,NO,P1,P2,P3,P4; CODE; PROCEDURE READR(IN,NO,P1); COMMENT SEE READ1; VALUE IN,NO; INTEGER IN,NO; REAL P1; CODE; PROCEDURE DELAY; COMMENT DELAY BETWEEN SCANS; CODE; INTEGER IN_1,OUT_2,BOX,CARD,CHANNEL,CHANNEL2,GAIN2,RATE, RANGE,EXTSS,DONE,LOOP_0,DUMMY_0,I,J,K,MODE,STORAGE, LISTOK,WHERE,HOWMANY,START,FINISH,PACED_0,FIRST,LAD_0, ADDRESS,FIRSTCHANNEL,SC,CO,GAIN,FUN,GROUPS_0, TC,RS,BS,SS,HI,DI,USEGAIN_0,NUMBER,REPEATOK,SAVEHOWMANY, DIFFERENTIAL,STATUS,BUCKETS,QUANT,SAVE,ABRT1,SAVEGROUPS; INTEGER ARRAY CHANNELBUFFER[1:200],N[1:25]; COMMENT CHANNELBUFFER IS USED TO STORE THE CHANNEL CODES ; REAL ARRAY DATA[1:200],G[1:25],Q[1:13]; COMMENT DATA IS USED IN TWO WAYS. THE DRIVER FILLS THE SECOND HALF OF DATA WITH INTEGERS (CONVERSION DATA). CNVRT TAKES THESE INTEGERS AND PUTS REAL VOLTAGES INTO DATA IN A NORMAL WAY. THAT IS, READING ONE IS IN DATA [1] AND IS THE FIRST TWO COMPUTER WORDS IN THE ARRAY ; REAL RDUMMY_0.0,RGAIN,RGAIN2; BOOLEAN FIRSTTIME_TRUE; LABEL INITIALIZE,BACK,NUMBERIN,GETOUT,QUEST,TURNOFF, HISTLIST,SINGLECHANNEL,TWOCHANNEL,DISPLAY, TAKEREADINGS,WAIT,HISTOGRAM,INTERLACE, ABORT,TERM,RITEABORT,READIN,FIND,DUOVER, PACEFAST,ENDLIST,LISTER,GROUPIN,AGAIN, REPEAT,READDIFF,NORMALIZE,FORM,DODISPLAY, GETREADINGS,DISABLELIST,INABORT,STATREAD; SWITCH OPERATE_INITIALIZE,INITIALIZE,INITIALIZE, INITIALIZE,INITIALIZE,INITIALIZE, DISPLAY,REPEAT,LISTER,NORMALIZE; COMMENT THE FIRST SIX VALUES OF 'WHERE' WANT TO GO THROUGH INITIALIZE. DISPLAY IS FOR DISPLAY MODE (SKIPS NUMBER OF READINGS REQUEST). ; SWITCH DOIT_SINGLECHANNEL,TWOCHANNEL,INTERLACE, SINGLECHANNEL,SINGLECHANNEL,HISTOGRAM; COMMENT AGAIN, 'WHERE' IS THE ARGUMENT. ONLY THE FIRST 6 VALUES OF 'WHERE' CAN GET TO THIS SWITCH. THE 2ND & 3RD REFERENCES FOR SINGLE- CHANNEL ARE USED BY SS/H & SEQUENTIAL SCAN ; FORMAT F1(/" 2313B VERIF 8/22/73"), F2(" LAST CH"), F3(A2),F4(" NO= _"),F5(" NO OF GPS= _"), F6(" BX,CD,CH_"),F7(" BX,CD_"), F9(" "),F10(" NO CH'S= _"),F11(" = _"), F12(" ??"),F13(" NO CDS= _"), F14(" DIFF? _"),F15(" PACE FAST"), F16(" STATUS? _"),F17(" CH'S/GP= _"), F18(" 1ST CH"),F19(" 2ND CH"), F20(" ABORT"),F21(",GAIN_"), F24(I10),F25(" START,FINISH= _"),F26(7X,F10.6," _"), F28(" RDGS TAKEN"),F29(F11.6," _"), F30(" NO FINISH:",I7," RDGS"), F31(I6),F32(14X,"_"),F33(" GROUP",I4); PROCEDURE READNUM; BEGIN READIN: WRITE(OUT,F6); IF RS OR USEGAIN AND (NOT SS OR FIRSTCHANNEL) THEN WRITE(OUT,F21); WRITE(OUT,F11); BOX_CARD_CHANNEL_201; RGAIN_GAIN_8; IF RS OR USEGAIN AND (NOT SS OR FIRSTCHANNEL) THEN BEGIN READ3(IN,3,BOX,CARD,CHANNEL);READR(IN,0,RGAIN); GNCHK(GAIN,RGAIN);END ELSE BEGIN READ3(IN,3,BOX,CARD,CHANNEL); RGAIN_GAIN_1; END; IF BOX OR CARD OR CHANNEL OR GAIN THEN GO INABORT; IF BOX>7 OR CARD>11 OR CHANNEL>31 OR GAIN=8 OR (BOX+CARD)=0 THEN BEGIN WRITE(OUT,F12); GO READIN; END; COMMENT CONSTRUCT CHANNEL CODE; IF NOT RS THEN ADDR(BOX,CARD,CHANNEL); END; COMMENT CLEAR OUT ANY ABORT MODES (FOR RESTART); EXIT(0,GETOUT); WRITE(OUT,F1); CO_-1; IF FIRSTTIME THEN BEGIN DESCR(CHANNELBUFFER[1]); COMMENT IF THE PROGRAM WAS JUST LOADED, ALLOW THE INSTRUCTIONS TO BE PRINTED. C DON'T ALLOW THE INSTRUCTIONS TO BE REQUESTED ON RESTART; CO_FIRSTTIME_FALSE; WRITE(OUT,F9); END; COMMENT INITIALLY NO DATA IS AVAILABLE TO LIST AND NO VALID TEST IS DEFINED (NO REPEAT ALLOWED); REPEATOK_0; & COMMENT LIST MUST, ALSO, BE DISABLED WHEN LOOPING; DISABLELIST: LISTOK_0; NORMALIZE: COMMENT ISSUE SYSTEM NORMALIZE; I2313(8,0,0,0,DUMMY,0,RDUMMY,0); BACK: COMMENT THE DESIRED TEST AND CONDITIONS ARE TO BE ENTERED; INTRP(WHERE,SC,TC,RS,BS,SS,HI,DI,ADDRESS,CO,LAD, REPEATOK,USEGAIN,LOOP,PACED,RATE,RANGE,EXTSS,LISTOK,IN); REPEATOK_LISTOK_FIRSTCHANNEL_-1; GO OPERATE[WHERE]; COMMENT THIS SWITCH DETERMINES WHETHER OR NOT A TEST REQUIRING INPUT HAS BEEN ENTERED < <<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> VALUE OF WHERE g TEST ENTERED DESTINATION WHY ----- ------------ ----------- --- 1 SINGLE CHANNEL INITIALIZE GET NO OF READINGS 2 TWO CHANNEL INITIALIZE GET NO OF READINGS 3 INTERLACE INITIALIZE GET NO OF READINGS 4 SS/H INITIALIZE GET NO OF READINGS 5 SEQUENTIAL SCAN INITIALIZE GET NO OF READINGS 6 HISTOGRAM INITIALIZE GET NO OF READINGS 7 DISPLAY DISPLAY SKIP TO CHANNEL NO 8 REPEAT REPEAT DO TEST OVER 9 LIST LISTER LIST DATA 10 NORMALIZE NORMALIZE ISSUE SYS NORM <<<<<<<<<<<<<<<<<<<<<<<<<<<<<>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> ; INITIALIZE: I_FUN_GAIN2_RGAIN2_1; IF BS THEN SS_-1; J_NUMBER_STATUS_GROUPS_0; IF SS AND USEGAIN THEN FUN_-1 ; COMMENT GET NO. OF READINGS; NUMBERIN: HOWMANY_0; IF RS THEN WRITE(OUT,F13)ELSE IF FUN THEN WRITE(OUT,F17) ELSE WRITE(OUT,F4); READ1(IN,1,HOWMANY); COMMENT NEGATIVE NO. ABORTS; IF HOWMANY THEN GO INABORT ELSE COMMENT IS IT A VALID NUMBER?; IF HOWMANY=0 OR NOT HI AND HOWMANY>200 OR TC AND HOWMANY=1 OR (FUN OR RS) AND HOWMANY>25 THEN BEGIN WRITE(OUT,F12); GO TO NUMBERIN; END; GROUPIN: IF FUN OR RS THEN BEGIN IF RS THEN WRITE(OUT,F10) ELSE WRITE(OUT,F5);READ1(IN,1,GROUPS); IF GROUPS THEN GO INABORT ELSE IF GROUPS=0 OR GROUPS>25 OR GROUPS*HOWMANY>200 OR RS AND GROUPS>16 THEN BEGIN WRITE(OUT,F12); GO TO GROUPIN;END;END; SAVEGROUPS_GROUPS; SAVEHOWMANY_HOWMANY; IF SS AND NOT USEGAIN THEN BEGIN WRITE(OUT,F18);READNUM END ELSE IF SS THEN BEGIN FOR I_1 TO GROUPS DO BEGIN WRITE(OUT,F33,I);READNUM;G[I]_RGAIN; CHANNELBUFFER[I]_CHANNEL+GAIN*8192;END; DIFFERENTIAL_-1;MODE_2;RGAIN_RGAIN2_G[1];GO TAKEREADINGS;END ELSE READNUM; GO DOIT[WHERE]; COMMENT TH-IS SWITCH DETERMINES WHICH TEST TO BE CON- STRUCTED (SEE DEFINITION OF WHERE ABOVE); SINGLECHANNEL: COMMENT ALSO SEQUENTIALSCAN; IF NOT FIRSTCHANNEL THEN GO READDIFF; RGAIN2_RGAIN; GAIN2_GAIN; MODE_0; CHANNELBUFFER[1]_CHANNEL+GAIN2*8192; COMMENT FOR SEQUENTIAL SCAN ASK IF CHANNELS ARE DIFFERENTIAL OR SINGLE-ENDED AND SET THE INDICATOR; IF SS THEN BEGIN MODE_2; FIRSTCHANNEL_DIFFERENTIAL_0; IF LAD THEN BEGIN WRITE(OUT,F2); READNUM; GO DOIT[WHERE];END; READDIFF: WRITE(OUT,F14); DONE_0; READ1(IN,-1,DONE); IF DONE="AB" THEN GO INABORT; IF DONE="YE" THEN DIFFERENTIAL_-1 ELSE IF DONE#"NO" THEN GO READDIFF; END; GO TAKEREADINGS; TWOCHANNEL: COMMENT ON FIRST TIME THROUGH (ON EACH CALL TO 2C) SAVE FIRST CHANNEL INFORMATION AND GO BACK TO INPUT SECTION; IF FIRSTCHANNEL THEN BEGIN CHANNEL2_CHANNEL; RGAIN2_RGAIN; GAIN2_GAIN; FIRSTCHANNEL_0; READNUM;GO DOIT[WHERE]; END; COMMENT FORM OUTPUT BUFFER CONTAINING ALTERNATING CHANNEL NUMBERS; FOR I_1 STEP 2 UNTIL 199 DO BEGIN CHANNELBUFFER[I]_CHANNEL2+GAIN2*8192; CHANNELBUFFER[I+1]_CHANNEL+GAIN*8192; END; MODE_1; TAKEREADINGS: EXIT(-1,GETOUT);I_K_1; STORAGE_PACED; IF BS THEN BEGIN IF PACED THEN I2313(8,6,-EXTSS,EXTSS, RATE,RANGE,RDUMMY,0); AGAIN: I2313(8,1,STATUS,0,DUMMY,0,RDUMMY,0); IF STATUS THEN GO AGAIN; ISSUE(1);PACED_0;END; IF LAD AND SS AND NOT USEGAIN THEN I2313(8,7,0,1,ADDRESS,CHANNEL,RDUMMY,0); GETREADINGS: COMMENT SET PACER (IF USED) AND INITIATE READINGS; IF PACED THEN I2313(8,6,-EXTSS,EXTSS,RATE,RANGE,RDUMMY,0); IF FUN THEN I2313(8,2,PACED,MODE,CHANNELBUFFER[I],HOWMANY, Q[1],DIFFERENTIAL) ELSE I2313(8,2,PACED,MODE,CHANNELBUFFER[1],HOWMANY, DATA[101],DIFFERENTIAL); WAIT: COMMENT MAKE STATUS CALL TO SEE IF READINGS HAVE ALL BEEN TAKEN; P I2313(8,1,STATUS,0,DUMMY,0,RDUMMY,0); IF (STATUS AND 3)>1 THEN GO PACEFAST; COMMENT PACE ERROR; IF STATUS THEN GO WAIT; COMMENT NOT DONE; COMMENT DONE -- SO TURN OFF PACER; IF PACED THEN I2313(8,6,0,0,DUMMY,0,RDUMMY,0); IF LOOP AND NOT FUN THEN GO TURNOFF; IF LAD AND SS AND NOT USEGAIN THEN I2313(8,7,0,0,ADDRESS,0,RDUMMY,0); & & COMMENT CONVERT THE DATA FROM SINGLECHANNEL, TWOCHANNEL, OR SEQUENTIALSCAN. HERE ALL GAIN INFORMATION IS PASSED IN ONE CALL AND ALL DATA CONVERTED ; IF FUN THEN CNVRT(DATA[K],Q[1],G[I],G[I],0,HOWMANY) ELSE CNVRT(DATA[1],DATA[101],RGAIN2,RGAIN,0,HOWMANY); DONE_2; IF FUN AND (I-GROUPS) THEN BEGIN I_I+1;K_K+HOWMANY; GO GETREADINGS;END; TURNOFF: IF BS THEN BEGIN ISSUE(0);PACED_STORAGE; IF PACED THEN I2313(8,6,0,0,DUMMY,0,RDUMMY,0);END; IF LOOP THEN BEGIN DELAY; GO TAKEREADINGS;END; EXIT(0,GETOUT); COMMENT CLEAR ABORT FEATURE; IF TC THEN BEGIN DONE_4; COMMENT CALL STATPAC TO OPERATE ON FIRST CHANNEL DATA ON TWOCHANNEL (STATPAC MODE = 3); WRITE(OUT,F18); STATPAC(DATA[1],N[1],3,HOWMANY); WRITE(OUT,F19); END ELSE IF NOT SC THEN BEGIN WRITE(OUT,F28); GO BACK; END; COMMENT CALL STATPAC FOR SECOND CHANNEL DATA ON TWOCHANNEL (MODE = 4) OR FOR ALL DATA ON SINGLECHANNEL (MODE = 2); STATPAC(DATA[1],N[1],DONE,HOWMANY); GO BACK; COMMENT ALL DONE, GO LOOK FOR A NEW COMMAND; & INTERLACE: IF CHANNEL+ 2*(GROUPS-1)>30 THEN BEGIN WRITE(OUT,F12); READNUM; GO INTERLACE;END;I_1; FORM: SAVE_CHANNEL; ADDR(BOX,CARD,SAVE);CHANNELBUFFER[I]_SAVE; G[I]_RGAIN; N[I]_GAIN; IF (HOWMANY-I)#0 THEN BEGIN I_I+1; QUEST: BOX_CARD_RGAIN_201; WRITE(OUT,F7); WRITE(OUT,F21); WRITE(OUT,F11); READ2(IN,2,BOX,CARD); READR(IN,0,RGAIN); GNCHK(GAIN,RGAIN); IF BOX OR CARD OR GAIN THEN GO INABORT; IF BOX>7 OR CARD>11 OXR GAIN=8 THEN BEGIN WRITE(OUT,F12); GO QUEST;END; GO FORM; END; DUOVER: INTER(CHANNELBUFFER[1],HOWMANY,DATA[1],DATA[101],GROUPS, G[1],N[1],ABRT1); IF ABRT1 THEN GO GETOUT; WRITE(OUT,F28); GO BACK; & DISPLAY: READNUM; IF USEGAIN THEN I2313(8,7,0,0,CHANNEL, GAIN,RDUMMY,0); COMMENT ASK IF STATUS BITS ARE DESIRED ; STATREAD: WRITE(OUT,F16); DONE_0; READ1(IN,-1,DONE); STATUS_0; IF DONE="AB" THEN GO INABORT; IF DONE="YE" THEN STATUS_-1 ELSE IF DONE#"NO" THEN GO STATREAD; DODISPLAY: DSPLY(CHANNEL,PACED,RATE,RANGE,EXTSS,STATUS); GO DISABLELIST; COMMENT NOTHING TO LIST AFTER DISPLAY; REPEAT: IF RS THEN GO DUOVER; IF DI THEN GO DODISPLAY; IF NOT HI THEN GO TAKEREADINGS; & HISTOGRAM: NUMBER_HOWMANY; N[1]_USEGAIN; IF USEGAIN THEN I2313(8,7,0,0,CHANNEL,GAIN,RDUMMY,0); HISTO(CHANNEL,PACED,RATE,RANGE,EXTSS,RGAIN, NUMBER,BUCKETS,N[1],DATA[1]); COMMENT N[21] IS TRUE IF AN ABORT WAS MADE; IF N[21] THEN GO GETOUT; COMMENT THE NUMBER OF BUCKETS (CATEGORIES) IS SET NEGATIVE (TRUE) IF A PACER ERROR IS DETECTED; IF BUCKETS THEN GO TO PACEFAST; COMMENT THE NUMBER IS NEGATIVE IF THE HISTOGRAM TERM- INATES EARLY AND GIVES THE NUMBER OF READINGS YET TO TAKE; IF NUMBER THEN WRITE(OUT,F30,HOWMANY+NUMBER); COMMENT CALL STATPAC FOR THE HISTOGRAM CATEGORIES (STATPAC MODE = 1); STATPAC(DATA[1],N[1],1,BUCKETS); HISTLIST: COMMENT LIST ALL CATEGORIES FOUND IN HISTOGRAM; FOR I_1 TO BUCKETS DO BEGIN COMMENT CHECK SWITCH 15 TO ESCAPE FROM LIST; IF KEYS THEN GO TERM; WRITE(OUT,F29,DATA[I]); WRITE(OUT,F24,N[I]); END; TERM: IF LOOP THEN BEGIN WRITE(OUT,F9); GO TO HISTOGRAM; END; GO ENDLIST; COMMENT THIS IS THE LISTER CALLED BY THE LIST COMMAND; LISTFER: IF HI THEN GO HISTLIST; START_FINISH_0; HOWMANY_SAVEHOWMANY; GROUPS_SAVEGROUPS; COMMENT READ THE FIRST AND LAST READING NUMBERS TO BE LISTED; WRITE(OUT,F25); READ2(IN,2,START,FINISH); COMMENT GET OUT IF EITHER IS NEGATIVE; IF START OR FINISH THEN GO BACK; COMMENT VALID FIRST AND LAST?; IF NOT (FUN OR RS) THEN BEGIN IF START>FINISH OR START=0 OR START>HOWMANY THEN GO TO LISTER; IF FINISH>HOWMANY THEN FINISH_HOWMANY;END ELSE BEGIN IF START>FINISH OR START > HOWMANY*GROUPS OR START=0 THEN GO TO LISTER; IF FINISH>HOWMANY*GROUPS THEN FINISH_HOWMANY*GROUPS;END; WRITE(OUT,F9); IF NOT TC THEN BEGIN FIRST_HOWMANY; COMMENT FIND GROUP CONTAINING START; FIND: WHILE START>FIRST DO FIRST_FIRST+HOWMANY; K_FIRST+1 -START; COMMENT START LISTING GROUPS; FOR J_START TO FINISH DO BEGIN IF K=0 THEN BEGIN COMMENT NEXT GROUP SO INSERT LINEFEED; WRITE(OUT,F9); K_HOWMANY;END; WRITE(OUT,F29,DATA[J]);WRITE(OUT,F9); K_K-1; IF KEYS THEN GO ENDLIST;END;END; COMMENT PRINT TWO COLUMNS FOR TWOCHANNEL; IF TC THEN BEGIN DONE_1; IF START MOD 2=0 THEN BEGIN DONE_-1; WRITE(OUT,F32); END; FOR I_START TO FINISH DO BEGIN WRITE(OUT,F29,DATA[I]); IF DONE THEN WRITE(OUT,F9); DONE_-DONE; COMMENT ESCAPE?; IF KEYS THEN GO ENDLIST; END; IF NOT DONE THEN WRITE(OUT,F9); END; ENDLIST: WRITE(OUT,F9); GO BACK; COMMENT CLEAR ABORT FEATURE AND PRINT 'PACE FAST'; PACEFAST: EXIT(0,GETOUT); WRITE(OUT,F15); COMMENT PRINT 'ABORT' AND DISABLE LIST. ALSO WILL DO A SYSTEM NORMALIZE; ABORT: LISTOK_0; RITEABORT: WRITE(OUT,F20); GO NORMALIZE; INABORT: COMMENT THIS IS WHERE A NEGATIVE INPUT SENDS YOU FOR ABORT; REPEATOK_0; GO RITEAB(B@HANNELBUF = BUFFER OF CHANNEL NUMBERS * FOR TWO CHANNEL (INTEGER ARRAY CHANNELBUF[1:N] ) * = THE CHANNEL FOR SINGLE CHANNEL * = THE STARTING CHANNEL FOR SEQUENTIAL * * N = NUMBER OF READINGS TO TAKE * * INBUF = BUFFER TO STORE READINGS * (INTEGER ARRAY INBUF[1:N];) * * DIFFIN = FALSE (0) SINGLE ENDED CHANNELS \ SEQUENTIAL * = TRUE (-1) DIFFERENTIAL CHANNELS / ONLY * * * 4) WRITE REQUESTS (PACER) * * I2313(UNIT,6,WAIT,EXTERNAL,PERIOD,MULTIPLIER,DUMMY,0); * * WHERE: * * WAIT = FALSE (0) CHANGE RATE IMMEDIATELY * = TRUE (-1) CHANGE RATE AT NEXT PACE PULSE * * EXTERNAL = FALSE (0) DISABLE EXTERNAL START/STOP * = TRUE (-1) ENABLE EXTERNAL START/STOP * * PERIOD = 0-255 DECIMAL FOR BASIC PERIOD IN MICROSECONDS * *MULTIPLIER = 0-7 POWER OF 10 MULTIPLIER SKP * 5) WRITE REQUESTS (LAST ADDRESS DETECTOR,LAD) * * I2313(UNIT,7,0,MODE,ADDRESS,LASTADRS,DUMMY,0); * * WHERE: * * MODE = 0 TURN OFF LAD * = 1 TURN ON LAD & SET NEW LAST ADRS * * ADDRESS = 2313B CARD ADRS OF LAST ADRS DET * * LASTADRS = HLMPX LAST CHAN FOR SEQ SCAN * * * * 6) SET GAIN CODE(LLMPX) * I2313(UNIT,7,0,0,ADDRESS,GAINCODE,DUMMY,0); * * WHERE: * * ADDRESS = 2313B CARD ADDRESS OF LLMPX * * GAINCODE AMPLIFICATION * -------- ------------- * 0 X1000 * 1 X500 * 2 X250 * 3 X125 * 4 X100 * 5 X50 * 6 X25 * 7 X12.5 SKP * ** CALLING PARAMETER LIST ** SPC 1 UNIT NOP TYPE NOP PACE NOP MODE NOP CNBUF NOP \ NUMBR NOP \ALSO FOR DBUFF NOP / CALL TO .IOC. MODEX NOP / SPC 2 * ** START OF ROUTSINE ** SPC 1 I2313 NOP JSB .ENTR GET PARAMETER DEF UNIT ADDRESSES INTO LIST ABOVE SPC 1 LDA UNIT,I GET UNIT REFERENCE NUMBER LDB TYPE,I GET TYPE OF REQUEST SZB CLEAR REQUEST? JMP MORE NO SPC 2 * ** CALL FOR CLEAR REQUEST ** SPC 1 STA *+2 STORE UNIT REF IN CALL JSB .IOC. CALL FOR NOP CLEAR REQUEST JMP I2313,I DONE SPC 2 MORE RBR,RBR CPB BIT14 STATUS REQUEST? RSS YES JMP AGAIN NO SKP * ** CALL FOR STATUS REQUEST ** SPC 1 IOR BIT14 SET STATUS REQ ONTO UNIT REF STA *+2 STORE REQ CODE IN CALL JSB .IOC. CALL FOR NOP STATUS AND MASK FORM STATUS INFORMATION STA PACE,I AND RETURN IT JMP I2313,I DONE SPC 1 AGAIN SLB MPX REQUEST? JMP WRITE NO SPC 2 * ** CALL FOR MPX REQUESTS ** SPC 1 IOR READ SET READ REQ ONTO UNIT REF SPC 2 * ** CALLS FOR MPX'S AND DAC ** SPC 1 LDB PACE,I IS THE PACER SSB TO BE USED? LAD IOR BIT10 YES - ADD PACE MODE BIT STA B LDA MODE,I GET MODE AND AND THREE ISOLATE IT ALF,RAL THEN POSITION INTO RAL BITS 6 & 7 IOR B PLACE MODE ON REQ CODE SPC 2 * ** ALL READ/WRITE CALLS ** SPC 1 PACER LDB MODEX,I IS THIS FOR DIFFERENTIAL SSB CHANNELS (OR GAIN ONLY)? IOR BIT8 YES - SET XTRA MODE BIT (8) SPC 1 LDB NUMBR,I PUT # OF READINGS (OR PACE STB NUMBR RANGE) IN NUMBR DIRECT STA *+2 STORE REQ CODE IN CALL SPC 1 JSB .IOC. CALL REQ NOP THE JMP *-2 DRIVERȲ DEF CNBUF FOR OCT 4 READ OR WRITE SPC 2 JMP I2313,I DONE ** SKP * ** CALL FOR WRITE REQUESTS ** SPC 1 WRITE IOR RITE SET WRITE REQ ONTO UNIT REF SPC 2 * ** CALL FOR PACER OR LAD REQUESTS ** SPC 1 IOR BIT11 SET PACER BIT ON REQ CODE STA REQ LDA CNBUF,I REMOVE INDIRECT FROM PACE PERIOD STA CNBUF OR LAD ADDRESS LDA REQ RBL SSB LAD CALL? JMP LAD YES SPC 1 LDB PACE,I GET "CHANGE" PARAMETER SSB CHANGE AT NEXT PACE PULSE? IOR BIT6 YES - PUT "CHANGE" BIT ON REQ LDB MODE,I GET "EXT S/S" PARAMETER SSB EXT START/STOP? IOR BIT7 YES - PUT XS/S BIT ON REQ JMP PACER SPC 5 * ** CONSTANTS ** SPC 1 B EQU 1 SPC 1 ORB BIT6 OCT 100 BIT7 OCT 200 BIT8 OCT 400 BIT10 OCT 2000 BIT11 OCT 4000 BIT14 OCT 40000 MASK OCT 100003 READ OCT 11000 RITE OCT 21000 THREE OCT 3 SPC 2 * ** END OF INTERFACE ROUTINE ** SPC 2 END F *3 02313-82004 A S 0106 HP 2313B VERIFICATION DRIVER - D.62V             H0101 rASMB,R,B,L,C HED 2313B (NON-DMA) BCS DRIVER D.62V VERIF 8/22/73 * * NAM D.62V ENT D.62,I.62 EXT DELAY,GONLY SPC 2 * THIS DRIVER OPERATES THE 2313B SUB-SYSTEM IN THE * BCS ENVIRONMENT. IT IS CALLED DIRECTLY FROM * ASSEMBLY LANGUAGE. FOR USE WITH FORTRAN OR ALGOL * REFER TO THE ALGOL/FTN-DRIVER INTERFACE ROUTINE (V2313). * * THIS IS A REDUCED VERSION OF THE DRIVER FOR USE WITH THE * 2313B VERIFICATION PROGRAM. THERE ARE NO CALLS FOR DAC OR * SIMULTANEOUS SAMPLE AND HOLD. * * THE CALLS FOR CLEAR AND STATUS ARE STANDARD WITH * STATUS BIT 0 FOR OVERLOAD AND BIT 1 FOR PACE * RATE TOO FAST. STATUS IS DYNAMIC (BITS 14 AND 15 OF * EQT WORD 2 MAY BOTH BE SET). * * THE READ CALL IS AS FOLLOWS: * * JSB .IOC. * OCT 1SFUR * /JMP\ * DEF CBUFF * DEC 3 * --- * CBUFF DEF CHAN * DEC N * DEF DATA
* --- * * WHERE S & F ARE AS FOLLOWS: * * S CONSISTS OF REQUEST CODE WORD BITS 9, 10, & 11 * * S = 1 UNPACED * S = 3 PACED * * F CONSISTS OF REQUEST CODE WORD BITS 6, 7, & 8 * * F = 0 SINGLE CHANNEL * F = 1 TWO CHANNEL * F = 2 SEQUENTIAL SCAN * F = 6 SEQUENTIAL SCAN (DIFFERENTIAL INPUTS) SKP * THE WRITE CALL IS AS FOLLOWS (PACER & LAD): * * JSB .IOC. * OCT 2SFUR * /JMP\ * DEF CBUFF * DEC 2 * --- * * FOR PACER: * * --- * CBUFF OCT RATE * OCT RANGE * --- * * FOR LAST ADDRESS DETECTOR (LAD): * * --- * CBUFF OCT LAD <2313B CARD ADRS OF LAST ADRS DET> * OCT LADRS * * WHERE S & F ARE AS FOLLOWS: * * S = 5 FOR PACER CALL * * S = 7 FOR LAST ADDRESS DETECTOR CALL * * FOR THE PACER CALL F IS ACTUALLY F0 & F1 WHERE * F0 IS REQ CODE BIT 6 AND F1 IS REQ CODE BIT 7 * * F0 = 0 CHANGE RATE IMMEDIATELY * F0 = 1 CHANGE RATE AT NEXT PACE PULSE * * F1 = 0 DISABLE EXTERNAL START/STOP * F1 = 1 ENABLE EXTERNAL START/STOP * * FOR THE LAST ADDRESS DETECTOR F IS REQ CODE BITS 6, 7, & 8 * * F = 0 TURN OFF LAD * F = 1 TURN ON LAD AND GET NEW LAST ADDRESS SKP * ** INITIATOR SECTION ** SPC 1 D.62 NOP STA SAVA SAVE EQT ENTRY ADRS STB SAVB SAVE REQ CODE ADRS LDA A,I GET AND B77 SELECT CODE STA SC AND SAVE LDB A,I GET TRAP CELL STB TCC CONTENTS AND SAVE LDA SAVB,I GET REQ CODE AND B77 OCT 77 (ALF) SHIFT TO LSB'S B7 OCT 7 (NOP) \ AND B17 THEN ISOLATE REQUEST SZA CLEAR REQUEST? JMP NTCLR NO SPC 2 * ** CLEAR REQ - ISSUE SYN ** SPC 1 * CONFIGURE SYN I/O INSTRUCTIONS SPC 1 LDA SC IOR XSFS FORM "SFS SC" INST STA SFS1 AND STORE IT ADA B300 FORM "OTA SC" INST STA OTA1 AND STORE IT IOR B1100 FORM "STC SC,C" INST STA STCC1 AND STORE IT XOR B5000 FORM "CLC SC" INST STA CLC1 AND STORE IT STA CLC2 / XOR B4000 FORM "STC SC" INST STA STC1 AND STORE IT SPC 1 * ISSUE SYN TWICE SPC 1 CLC1 CLC ADI MAKE SURE ENCODE IS RESET LDA SYN GET AND OUTPUT THE OTA1 OTA ADI SYSTEM NORMALIZE COMMAND CLA CLEAR THE STA SC,I TRAP CELL (PREVENT INT6)ERRUPT) STCC1 STC ADI,C ENCODE NOP STC1 STC ADI ENCODE AGAIN SFS1 SFS ADI JMP *-1 CLC2 CLC ADI TURN OFF I/O CARD STB SC,I RESTORE TRAP CELL ISZ SAVA CLEAR LDB ET EQT WORD 2 - STB SAVA,I BUSY AND STATUS STA BUSY YES - CLEAR DRIVER BUSY FLAG SPC 1 JMP D.62,I CLEAR REQUEST RETURN POINT SKP * ** OPERATION REQUEST ** * (READ OR WRITE) SPC 1 NTCLR LDB BUSY DRIVER SZB BUSY? JMP REJB YES - REJECT CALL ADA N2 SAVE REQ CODE AS -1=READ, STA REQ 0=WRITE, AND +1=CONTROL LDA XRSS SET FIRST READING FLAG STA FIRST SPC 2 * ** CONFIGURE I/O INSTRUCTIONS ** SPC 1 LDA SC IOR XSFS FORM "SFS SC" INST STA SFS3 AND STORE IT STA SFS4 / ADA B300 FORM "OTA SC" INST STA OTA2 AND STORE IT STA OTA3 / STA OTA4 / IOR B1100 FORM "STC SC,C" INST STA STCC3 AND STORE IT STA STCC4 / STA STCC5 / XOR B5000 FORM "CLC SC" INST STA CLC3 AND STORE IT XOR B4200 FORM "LIA SC" INST STA INPUT AND STORE IT SKP * ** SUB-FUNCTION CHECK ** SPC 1 LDA SAVB,I GET REQ CODE WORD ALF,RAL ISOLATE SUB-FUNCTION STA SFB11 BIT 11 AND SAVE ALF,RAR ISOLATE SUB-FUNCTION STA SFB8 BIT 8 AND SAVE RAL,RAL ISOLATE SUB-FUNCTION F AND B3 (BITS 6 AND 7) AS ADA N1 -1, 0, OR +1 AND STA F SAVE SPC 2 SFS3 SFS ADI IS THE 2313 OPERABLE? JMP REJB NO - BUSY SPC 2 LDA ETBSY SET EQT ISZ SAVA WORD 2 LDB SAVA FOR STA B,I X BUSY (CLEAR STATUS) STA BUSY SET DRIVER BUSY FLAG CLA CLEAR STA RNFLG RANDOM MODE FLAG STA DECNT AND DELAY COUNTER SPC 1 LDA SAVB,I GET PACE MODE BIT AND B2000 FROM BIT 10 OF REQ RAL,RAL CODE WORD, ROTATE STA PBIT INTO BIT 12 AND SAVE IOR CLEAN FORM LAST DATA STA SFS3 COMMAND WORD & STORE SKP LDB SAVB \\\\\\\ ADB B2 \ LDA B,I \ INB GET \ LDB B,I AND \ CMB,INB SAVE \ STB TSAVA PARAMETER\ LDB CBUFF LIST / STB SAVAX FROM / GET LDB A,I CALL/ STB SAVAX,I / INA / ISZ SAVAX / ISZ TSAVA / JMP GET ////// SPC 2 LDA NUMBR SET NUMBER CMA,INA OF READINGS NEGATIVE STA CNTR FOR COUNTER SPC 1 LDA PBIT GET PACE MODE BIT LDB REQ REQUEST SSB CODE? JMP READ =1 SKP * ** PROCESS PACER REQUEST ** SPC 1 SZA LAD REQUEST? JMP LAD YES LDA SAVB,I GET BITS 6 AND 7 AND B300 OF REQ CODE WORD AND ALF,RAL MOVE INTO BITS 11 AND 12 STA B SPC 1 LDA CNBUF GET RATE AND B377 AND OR IOR B IT TO COMMAND STA B SPC 1 LDA NUMBR GET RANGE, AND B7 MOVE TO PROPER ALF,ALF POSITION AND OR IOR B IT TO COMMAND SPC 1 IOR PCR FORM PACER COMMAND JMP OTA3 SPC 2 LAD LDA NUMBR GET LAST AND B7777 ADDRESS LDB F CLEAR SZB,RSS OR SET? IOR PBIT SET - PU^T IN BIT 12 STA PDATA SAVE LAST ADDRESS LDA BIT14 FORM DAC CMND IOR CNBUF WD TO ADRS LAD CLB STB SFB11 JMP OTA3 SPC 2 SKP * ** READ REQUESTS ** SPC 1 READ LDA BIT13 FORM MPX COMMAND SPC 2 * ** PROCESS HLMPX REQUEST ** SPC 1 IOR BIT15 FORM MPX DIGITIZE COMMAND CLB,INB CHECK NUMBER CPB NUMBR OF READINGS? XOR BIT13 =1 - CHANGE TO RANDOM STA CMND SAVE COMMAND WORD SPC 1 LDA B7777 SET CHANNEL STA MASK NUMBER MASK CLB,INB SEQUENTIAL CPB F SCAN? XOR B YES - CLEAR BIT 0 OF MASK STA MASK2 LDB BIT14 SET SEQUENTIAL STB SEQWD BIT WORD LDB SFB8 SUB-FUNCTION BIT 8 SLB,RSS CHECK FOR DIFF OR S.E. ISZ SEQWD S.E. - SET BIT 0 OF SEQWD SPC 1 SPC 1 JSB POW SET GAIN? LDA CNBUF,I GET FIRST CHANNEL AND MASK NUMBER AND OR IT IOR CMND ONTO COMMAND CLB,INB CHECK NUMBER CPB NUMBR OF READINGS JMP SRNFG =1 - GO SET RANDOM FLAG SPC 1 JSB FOUT OUTPUT 1ST CMND (BAD DATA BACK) ISZ CNTR INCREMENT # OF READINGS SPC 1 LDA CMND GET COMMAND WORD LDB F SUB- SZB,RSS FUNCTION F? JMP L2 BLOCK SCAN SSB JMP L1 SINGLE CHANNEL IOR SEQWD SEQUENTIAL SCAN - FORM SEQ SPC 1 L1 STA CMND2 SAVE COMMAND LDA CNBUF,I PUT AND MASK2 START CHANNEL CLB,INB ONTO THE CPB F COMMAND ADA N2 IOR CMND2 IOR PBIT STA CMND2 JMP START SKP L2 ISZ CNBUF INCREMENT CHANNEL # BUFFER LDA CNBUF,I GET CHANNEL AND MASK NUMBER AND OR IOR CMND IT ONTO COMMAND IOR PBIT PUT THE PACE BIT STA CMND2 ON THE COMMAND SPC 2 * ** OUTPUT COMMAND ** SPC 1 START LDA CMND2 OTA3 OTA ADI OUTPUT COMMAND WORD CLA CLEAR A & B CLB REGISTERS FOR NORMAL RETURN STCC3 STC ADI,C ENCODE THE 2313 SPC 1 JMP D.62,I RETURN TO .IOC. SPC 2 * ** ONE OPERATION ONLY ** SPC 1 SRNFG CCB SET RANDOM STB RNFLG MODE FLAG IOR PBIT PUT PACE BIT ON CMND JMP OTA3 SPC 2 * ** BUSY REJECT ** SPC 1 REJB LDB BIT15 SET BIT 15 OF B FOR DEVICE BUSY CLA,INA SET A REG TO 1 AS REJECT FLAG JMP D.62,I RETURN TO .IOC. SPC 2 * ** FLAG OUTPUT ROUTINE ** * THIS ROUTINE IS USED BY BOTH * THE INITIATOR AND * CONTINUATOR SECTIONS * FOR OUTPUTTING WITHOUT * INTERRUPT. SPC 1 FOUT NOP CLB CLEAR THE TRAP CELL STB SC,I TO PREVENT INTERRUPT OTA2 OTA ADI OUTPUT WORD PASSED IN A REG STCC4 STC ADI,C ENCODE SFS4 SFS ADI WAIT ON JMP *-1 FLAG CLC3 CLC ADI TURN OFF I/O CARD LDB TCC RESTORE STB SC,I TRAP CELL JMP FOUT,I SKP * ** CONTINUATOR SECTION ** SPC 1 I.62 NOP STA SAVAX SAVE A REGISTER STB OTA3 SAVE B REGISTER ERA,ALS SAVE SOC E AND INA O STA .2930 REGISTERS SPC 1 LDB REQ CHECK REQUEST CODE SSB READ REQ? JMP INPUT YES LDB SFB11 LAD REQ? SLB,RSS JMP DAC YES JMP THEND DONE Q SPC 2 * ** PROCESS READ REQUESTS ** SPC 1 INPUT LIA ADI GET DATA FROM I/O CARD AND INMSK ELIMINATE UNUSED BITS STA DBUFF,I AND STORE IN DATA BUFFER AND B3 ISOLATE BITS 0 & 1 FIRST RSS NOP AFTER FIRST READING JMP XYZ AND B1 ELIMINATE PACE ERROR BIT CLB CLEAR FIRST STB FIRST READING TEST INSTRUCTION XYZ SZA TRANSMISSION ERROR? IOR BIT14 YES - SET BIT 14 IOR SAVA,I SET STATUS INFORMATION STA SAVA,I INTO EQT WORD 2 SPC 1 ISZ CNTR INCR # OF READINGS - DONE? XRSS RSS NO JMP FINIS YES LDB F SUB- SZB FUNCTION F? JMP L20 NOT =1 ISZ DECNT =1 - (BLOCK SCAN) LDB DECNT DO DELAY SLB,RSS ON JSB WAIT ALT. CHANNELS JSB POW SET GAIN? ISZ CNBUF LDA CNBUF,I GET NEW CHAN # AND MASK IOR CMND SET COMMAND BITS IOR PBIT SET PACER CONTROL BIT JMP L31 SKP L20 ISZ DBUFF INCR DATA BUFF ADDR (SING OR SEQ) SSB DELAY ON JSB WAIT SINGLE CHANNEL JMP EXIT (FOR SINGLE CHAN OR SEQ) SPC 2 DAC LDA PDATA GET LAST ADDRESS CLB,INB SET TEST FOR FINISH STB SFB11 JMP OTA4 SPC 3 * ** GET LAST READING ** SPC 1 FINIS CCA ISZ RNFLG RANDOM MODE FLAG? JMP L30 NO - GET LAST READING SPC 2 * ** DONE - CLEAR BUSY, ETC ** SPC 1 THEND LDA SAVA,I CLEAR EQT WORD 2 ELA,CLE,ERA BUSY BIT STA SAVA,I CLA CLEAR DRIVER STA BUSY BUSY FLAG SPC 1 LDA CLC3 SET EXIT STA STCC5 CONDITION FOR DONE JMP EXIT SKP * ** GET LAST READINZG (CONT.) ** SPC 1 L30 STA CNTR SET # OF OPS TO -1 STA RNFLG SET RANDOM MODE FLAG LDB F SSB SINGLE CHANNEL? JMP W YES SZB NO - TWO CHANNEL? JMP *+5 NO, SEQ. JSB POW YES - SET GAIN LDA NUMBR ODD # OF SLA CHANNELS? W JSB WAIT YES - DELAY LDA SFS3 GET "CLEAN" CMND FOR LAST RDNG L31 ISZ DBUFF INC DATA BUFF (FOR BLOCK SCAN) OTA4 OTA ADI OUTPUT NEW COMMAND OR DATA SPC 2 * ** EXIT POINT, DONE OR OTHER ** SPC 1 EXIT LDA .2930 RESTORE CLO E AND SLA,ELA O STO REGISTERS LDA SAVAX RESTORE A REGISTER LDB OTA3 RESTORE B REGISTER STCC5 STC ADI,C ENCODE (EXCEPT WHEN DONE - CLC) SPC 1 JMP I.62,I SPC 2 * ** CALL FOR DELAY ** SPC 1 WAIT NOP DELAY ONLY IF PACER NOT SET LDA PBIT PACER SZA,RSS SET? JSB DELAY NO - SO DELAY NOP ALL0W ALGOL TO RETURN JMP WAIT,I CONTINUE SPC 2 * ** PROGRAM LLMPX GAIN ** SPC 1 POW NOP LDA GONLY DO WE WANT LDA A,I TO SET GAIN? SSA,RSS YES - GO ON JMP HENCE NO - RETURN LDA CNBUF,I FORM 1ST COMMAND AND B7740 WORD IOR BIT14 JSB FOUT ISSUE TO 2313 LDA CNBUF,I FORM 2ND COMMAND ALF,RAR WORD AND B7 JSB FOUT ISSUE TO 2313 HENCE JMP POW,I SKP SPC 2 * ** CONSTANTS AND STORAGE ** SPC 1 A EQU 0 ADI EQU 0 SPC 1 B EQU 1 B1 OCT 1 B2 OCT 2 B3 OCT 3 B17 OCT 17 B300 OCT 300 B377 OCT 377 B1100 OCT 1100 B2000 OCT 2000 B4000 OCT 4000 B4200 OCT 4200 B5006400 OCT 5000 B7740 OCT 7740 B7777 OCT 7777 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 BUSY NOP SPC 1 CLEAN OCT 120000 CMND NOP CMND2 NOP CNTR NOP SPC 1 DECNT NOP SPC 1 ET OCT 31000 ETBSY OCT 131000 SPC 1 F NOP SPC 1 INMSK OCT 177762 SPC 1 MASK NOP MASK2 NOP SPC 1 N1 OCT -1 N2 OCT -2 SKP PBIT NOP PCR OCT 60000 PDATA NOP SPC 1 REQ NOP RNFLG NOP SPC 1 SAVA NOP SAVAX NOP SAVB NOP SC NOP SEQWD NOP SFB8 NOP SFB11 NOP SYN OCT 140001 SPC 1 TCC NOP TSAVA NOP SPC 1 SPC 1 XSFS SFS ADI SPC 2 * ** PARAMETER LIST STORAGE ** SPC 1 CBUFF DEF *+1 CNBUF NOP NUMBR NOP DBUFF NOP .2930 NOP SPC 2 * ** END OF DRIVER ** SPC 2 END 6 + 9 02313-82005 A S 0106 HP 2313B VERIFICATION INSTRUCTION OVERLAY             H0101 ASMB,A,B,L HED 2313B VERIF -- INSTRUCTION OVERLAY 8/22/73 * THESE ASCII CHARACTERS ARE LOADED * INTO THE DATA BUFFER AREA OF THE ALGOL * PROGRAM VERIF. THE NUMBER OF CHARACTERS * PRINTED IS DETERMINED BY THE PARAMETER * LNGTH, LOCATED IN CODES (ASMB * PROCEDURES). THE ORG STATEMENT IS * BASED ON THE LOCATION OF THE 1ST WORD OF THE * ALGOL DATA BUFFER. * * * ORG 2005B SUP OCT 5012 [LF,LF] ASC 14,1-200 RDGS TOTAL UNLESS NOTE OCT 42015 [D,CR] OCT 5012 [LF,LF] ASC 10,A PROMPTER IS ISSUED OCT 35015 [:,CR] OCT 5012 [LF,LF] OCT 37015 [>,CR] OCT 5012 [LF,LF] ASC 6,RESPOND WITH OCT 35015 [:,CR] OCT 5012 [LF,LF] ASC 9, SINGLE CH = ONE C OCT 44015 [H,CR] OCT 5040 [LF,SPC] ASC 13, TWO CH = ALTERNATING CH OCT 51415 [S,CR] OCT 5123 [LF,S] ASC 17,EQUENTIAL = FROM START CH (REPEATE ASC 17,D SCANS WITH LAD IF NOT IN GAIN MO ASC 1,DE OCT 24415 [),CR] OCT 5040 [LF,SPC] ASC 17,HISTOGRAM = 1-32767 RDGS ON 1 CH A ASC 7,RE CATEGORIZED OCT 6412 [CR,LF] ASC 17, INTERLACE = FASTER LLMPX THROUGHP ASC 11,UT WITH MULTIPLE CARDS OCT 6412 [CR,LF] ASC 17, SS/H = HOLD ALL SSLLMPX INPU ASC 16,TS AT SAME INSTANT, THEN DIGITIZ OCT 42415 [E,CR] OCT 5040 [LF,SPC] ASC 16, DISPLAY = LOOP ON 1 CH, DISPLA ASC 10,Y RDGS IN B OR SW RE OCT 43415 [G,CR] OCT 5040 [LF,SPC] ASC 16, STATUS=YES: 4 WD AVG ASC 17,; BIT 1= PACE ERROR, BIT 2 (LSB)=1 ASC 2,.25M OCT 53015 [V,CR] OCT 5040 [LF,SPC] ASC 16, STATUS=NO: 16 WD AVG ASC 11,; BIT 0 (LSB)=0.3125MV OCT 6412 [CR,LF] ASC 17, REPEAT = REPEAT LAST TEST AS S ASC 4,PECIFIWED OCT 6412 [CR,LF] ASC 17, LIST = LIST ANY PART OF DATA ASC 3,BUFFER OCT 6412 [CR,LF] ASC 17, NORMALIZE = ISSUE SYSTEM NORMALIZ OCT 42415 [E,CR] OCT 5103 [LF,C] ASC 17,ONDITIONS = LIST COND THAT ARE SET OCT 6412 [CR,LF] ASC 17, TAPE = INPUT COMMANDS FROM T ASC 3,APE-RD OCT 51015 [R,CR] OCT 5040 [LF,SPC] ASC 17, KEYBOARD = INPUT COMMANDS FROM KE ASC 1,YB OCT 42015 [D,CR] OCT 5040 [LF,SPC] ASC 16, * = COMMENT - IGNORE LIN OCT 42415 [E,CR] OCT 5012 [LF,LF] OCT 5103 [LF,C] ASC 5,ONDITIONS: OCT 6412 [CR,LF] OCT 5123 [LF,S] ASC 14,ET DELAY (LIMITS SCAN RATE OCT 24415 [),CR] OCT 5123 [LF,S] ASC 14,ET PACER (OVERRIDES DELAY) OCT 6412 [CR,LF] ASC 5,SET REPEAT OCT 6412 [CR,LF] ASC 17,SET GAIN (LLMPX MODE - GAINS PR ASC 12,OGRAMMED & RESULTS SCALE OCT 42015 [D,CR] OCT 5040 [LF,SPC] ASC 17, FOR ALL FOLLOWING TEST ASC 1,S) OCT 6412 [CR,LF] ASC 17,SET K (PROGRAMS LLMPX TO 1 O ASC 15,F 8 GAINS; RESULTS NOT SCALED) OCT 6412 [CR,LF] ASC 16,SET LAD (NOT AVAIL WITH GAIN OCT 24415 [),CR] OCT 5012 [LF,LF] ASC 5,CLEAR DELA OCT 54415 [Y,CR] OCT 5103 [LF,C] ASC 5,LEAR PACER OCT 6412 [CR,LF] ASC 6,CLEAR REPEAT OCT 6412 [CR,LF] ASC 5,CLEAR GAIN OCT 6412 [CR,LF] ASC 4,CLEAR LA OCT 42015 [D,CR] OCT 5103 [LF,C] ASC 13,LEAR ALL (CLEARS ALL COND) OCT 6412 [CR,LF] OCT 5012 [LF,LF] ASC 3,NOTES: OCT 6412 [CR,LF] OCT 5123 [LF,S] ASC 14,W15 = 1 CAUSES EXIT FROM LIS  OCT 52015 [T,CR] OCT 5012 [LF,LF] ASC 16,ABORT REQUEST WITH NEG # (REPEAT ASC 5, DISABLED) OCT 6412 [CR,LF] OCT 5101 [LF,A] ASC 17,BORT A TEST; EXIT REPEAT OR DISPLA ASC 17,Y WITH ANY KEYBD KEY (LIST DISABLE ASC 1,D) OCT 6412 [CR,LF] OCT 5012 [LF,LF] OCT 5012 [LF,LF] OCT 3407 [BELL,BELL] OCT 3407 [BELL,BELL] SPC 2 ******************************** * * * END OF INSTRUCTION OVERLAY * * * ******************************** SPC 2 END < ,4 02313-82006 A S 0306 HP 2313B VERIFICATION CODE PROCEDURES             H0103 dASMB,R,B,L,C HED 2313B VERIF -- CODE PROCEDURES 8/22/73 * * * THIS ASSEMBLY LANGUAGE PROGRAM * CONTAINS 12 CODE PROCEDURES USED * BY THE 2313B VERIFICATION PROGRAM. * * IT ALSO CONTAINS A PROGRAM FOR CONFIGURING * AND A NUMBER OF SERVICE SUB-ROUTINES USED * BY THE PROCEDURES * * THE DIFFERENT PROCEDURES ARE IDENTIFIED * BY THEIR ENTRY POINTS. * * 1. ADDR - FORMS ADDRESSES FOR 2313B CALL * 2. INTRP - COMMAND INTERPRETER * 3. CNVRT - CONVERTS DATA TO VOLTAGE * 4. DESCR - PRINTS INSTRUCTIONS * 5. EXIT - SET-UP AND CHECK FOR ESCAPE * 6. DELAY - DELAYS FOR SPECIFIED TIME (MSEC) * 7. ISSUE - SET UP OR CLEAR SS/H TEST * 8. HISTO - HISTOGRAM ROUTINE * 9. DSPLY - REGISTER DISPLAY ROUTINE * 10. STATP - COMPUTES AVG, P-P, HIGH, LOW, & RMS * 11. INTER - INTERLACE LLMPX CARDS * 12. CNFGR - RECONFIGURE BCS AND CONFIGURE DSPLY/HISTO * 13. READX - READS FROM TTY OR PHOTOREADER WITH ENTRY * POINTS: READ1, READ2, READ3, READ4, READR * 14. GNCHK - CHECKS AND CONVERTS LLMPX GAINS * * NAM CODES ENT ADDR,INTRP,CNVRT,DESCR,STATP,INTER,DSPLY ENT HISTO,EXIT,CNFGR,DELAY,GONLY,ISSUE ENT READ4,READ1,READ3,READ2,READR,GNCHK EXT .IOC.,.DIO.,.IOI.,.SQT.,SQRT,.IOR. EXT FLOAT,.FDV,.DTA.,.ENTR,.RTOI,.IAR. SUP HED 2313B VERIF -- CODE PROCEDURES -- ADDR 8/22/73 ********************************************** * * * ADDR -- FORMS ADDRESSES FOR CALL TO 2313 * * * ********************************************** SPC 1 * THE BOX, CARD, AND CHANNEL ARE COMBINED * TO FORM THE 2313B MULTIPLEXER ADDRESS. * SPC 2 BOX NOP CARD NOP CHAN NOP SPC 1 ADDR NOP JSB .ENTR DEF BOX SPC 2 * ** FORM PROPER ADDRESS ** SPC 1 LDA BOX,I GET BOX ADDRESS  ALF,ALF AND POSITION RAL IT PROPERLY STA B SAVE SPC 1 LDA CARD,I GET CARD ADDRESS ALF,RAL AND POSITION IT IOR B COMBINE SPC 1 IOR CHAN,I COMBINE WITH CHAN NUMBER STA CHAN,I RETURN WORD TO ALGOL JMP ADDR,I SPC 2 ***************** * * * END OF ADDR * * * ***************** HED 2313B VERIF -- CODE PROCEDURES -- INTRP 8/22/73 ********************************** * * * INTRP -- COMMAND INTERPRETER * * * ********************************** SPC 1 * THE PROMPTER IS ISSUED BY THIS PROCEDURE. * * THE COMMAND IS SCANNED AND THE PROPER * INDICATORS SET FOR THE ALGOL. * * ERRORS IN COMMANDS ARE TRAPPED AND THE * PROMPTER IS RE-ISSUED. * * WHEN SETTING THE PACER, ITS PARAMETERS ARE * REQUESTED AND READ. SPC 2 WHERE NOP SC. NOP TC. NOP RS. NOP BS. NOP SS. NOP HI. NOP DI. NOP LADRS NOP CO. NOP LAD. NOP RPTOK NOP GONLY NOP LOOP NOP PACED NOP RATE NOP RANGE NOP EXTSS NOP LSTOK NOP BATCH NOP SPC 1 INTRP NOP JSB .ENTR DEF WHERE SKP LDA CO.,I PRINT SSA CONDITIONS? JMP .COND YES SPC 1 START JSB .IOC. WRITE OUT OCT 20002 THE JMP *-2 PROMPTER (>) DEF CMND AND HOLD ONE DEC 1 THE LINE SPC 1 JSB READ4 \\\\\\\\\\\ DEF *+4 READ IN \ DEF DEVYC THE > DEF MIN1 COMMAND/ DEF PIN /////////// SPC 1 CLB CLEAR LDA DI.,I DATA DISPLAY SSA IN SWITCH OTB 1 REGISTER SPC 1 LDA DESC IS THE AND UPPER INPUT A CPA ASTER COMMENT? = JMP START YES SPC 1 LDA DESC CHECK COMMAND: CPA LI LIST? JMP LISTR YES CPA RE REPEAT? JMP REPET YES CPA SE SET A CONDITION? JMP SET MAYBE CPA CL CLEAR A CONDITION? JMP CLEAR YES SPC 1 CPA CO PRINT CONDITIONS? JMP COND YES SPC 1 CPA BA GO TAPE? JMP BAT YES CPA TY GO KEYBOARD? JMP TYPE1 YES SKP GO.ON LDA NB12 INITIALIZE STA CNTR1 COUNTERS LDA IASC AND STA PNTR1 POINTERS LDA NB10 FOR STA CNTR FINDING LDA PARAM TEST TO STA PNTR BE CALLED AGAIN LDA PNTR1,I HAS A TEST CPA DESC BEEN FOUND JMP EKUAL YES ISZ PNTR1 NO - POINT TO NEXT TEST ISZ CNTR1 CHECKED ALL TESTS & FOUND NONE? JMP AGAIN NO - LOOK AGAIN ERRR JSB ERROR YES - WRITE "??" JMP START GO GIVE PROMPTER AGAIN EKUAL INB TEST HAS BEEN FOUND - INC TEST # ISZ PNTR ADVANCE TEST BOOLEAN POINTER ISZ CNTR INC CNTR FOR VALID TEST BOOLEAN ZERO NOP ISZ CNTR1 DONE? JMP EKUAL NO STB WHERE,I YES - SET TEST INDICATOR CCB FORM "TRUE" LDA PNTR,I GET BOOLEAN STA PNTR LOCATION LDA CNTR CHECK FOR VALID SSA,RSS TEST BOOLEAN? JMP INTRP,I NO SPC 1 CLA STA SC.,I \\\\\\\\\\\ STA TC.,I \ STA RS.,I CLEAR \ STA BS.,I PREVIOUS > STA SS.,I COMMAND / STA HI.,I / STA DI.,I /////////// SPC 1 STB PNTR,I SET TRUE INTO TEST JMP INTRP,I GO BACK TO ALGOL SKP LISTR LDA LSTOK,I IS THERE SSA A DATA BUFFER TO LIST? JMP GO.ON YES JMP ERRR NO SPC 1 REPET LDA RPTOK,I IS THERE A TEST SSA THAT CAN BE REPEATED? JMP GO.ON YES JMP ERRR NO SPC 1 SET LDA DES WHAT IS THE THIRD CHAR? AND UPPER WAS IT A T? CPA T RSS YES - SO IT IS SET JMP GO.ON NO - SO MUST BE SEQUENTIAL CCB GET CONDITION LDA ST TO BE SET RSS SPC 1 CLEAR LDA FROM GET COND TO BE CLEARED ALF,ALF POSITION AND AND B377 ISOLATE FIRST CHARACTER CPA P PACER COND? JMP PCR YES CPA R REPEAT COND? JMP LOP YES CPA G GAIN MODE COND? JMP GNLY YES CPA L LAD COND? JMP LAST YES CPA BK GAIN CONSTANT? JMP SCODE YES CPA D SET DELAY? JMP SETD YES CPA ALL CLEAR ALL CONDITIONS? JMP CLRAL YES JMP ERRR INVALID COND - WRITE "??" SPC 2 LOP STA LSTOK,I CLEAR LIST CAPABILITY STB LOOP,I SET OR CLEAR LOOP CONDITION JMP START RE-ISSUE PROMPTER SKP CLRAL SSB CLEAR REQUEST? JMP ERRR NO STB LOOP,I YES - CLEAR LOOP STB PACED,I CLEAR PACER LDA GONLY,I IS GAIN SSA SET? STB RPTOK,I YES-CLEAR REPEAT STB GONLY,I NO -CLEAR GAIN-ONLY STB LAD.,I CLEAR LAD JMP SETD2 CLEAR DELAY SPC 1 BAT LDA FIVE \\\\\\\\\\\ LBL1 JMP LBL2 OR NOP (NO P.R.)\ CLB,RSS \ TYPE1 LDB ABRT SET TAPE OR \ STB LBL4 KEYBOARD MODE > LDA ONE / LBL2 STA DEVYC / STA BATCH,I / JMP START //////M;///// SPC 1 GNLY STB GONLY,I SET OR CLEAR CLA CLEAR STA RPTOK,I REPEATOK STA LSTOK,I AND LISTOK JMP START RE-ISSUE PROMPTER SPC 1 PCR STB PACED,I SET OR CLEAR PACE MODE SSB,RSS SET? JMP START NO - RE-ISSUE PROMPTER SPC 1 L61 JSB .IOC. REQUEST OCT 20002 PACER JMP *-2 PERIOD DEF MSG2 AND DEC -15 MULTIPLIER LDA B400 STA PIN STA OUTBF JSB READ2 READ IN DEF L9 THE PERIOD DEF DEVYC AND DEF TWO MULTIPLIER DEF PIN IN DEF OUTBF FREE-FIELD L9 LDB PIN SAVE STB RATE,I RATE RBL,CLE,SLB,ERB PERIOD <0? JMP PCR YES - ABORT LDB OUTBF SAVE STB RANGE,I RANGE SKP RBL,CLE,SLB,ERB ABORT? JMP PCR YES BRS,BRS CHECK THE BRS MULTIPLIER SZB FOR >7? JMP L10 BAD - WRITE " ??" LDB RATE,I ADB NB400 SSB IS PERIOD >377 (DEC 255)? JMP *+3 NO L10 JSB ERROR YES - WRITE " ??" JMP L61 ASK AGAIN L12 JSB .IOC. REQUEST OCT 20002 EXTERNAL JMP *-2 START/STOP DEF FEXT DEC 8 CLA STA PIN JSB READ1 READ DEF L70 IN DEF DEVYC YES DEF MIN1 OR DEF PIN NO L70 LDB PIN GET ANSWER CPB NO IS IT NO? JMP NOT YES CPB YES NO - IS IT YES? JMP IS YES CPB AB NO - IS IT ABORT? JMP PCR YES JMP L12 NO - ASK AGAIN IS CCB,RSS FOR YES ANSWER SET TRUE VALUE NOT CLB,INB FOR NO  ANSWER SET FALSE VALUE STB EXTSS,I SET BOOLEAN VALUE IN ALGOL JMP START RE-ISSUE PROMPTER SKP LAST STB LAD.,I SET OR CLEAR LAD SSB,RSS SET? JMP START NO JSB CADDR YES - GET LAD CARD ADDRS JMP LAST ABORT STA LADRS,I JMP START SPC 1 CADDR NOP L90 JSB .IOC. REQUEST OCT 20002 CARD JMP *-2 ADDRESS DEF MSG3 DEC -9 LDA B400 STA PIN STA OUTBF JSB READ2 READ DEF L100 IN THE DEF DEVYC BOX DEF TWO AND CARD DEF PIN ADDRESS DEF OUTBF SPC 1 L100 LDB PIN RBL,CLE,SLB,ERB ABORT? JMP ABRT2 YES BRS,BRS CHECK THE BRS BOX ADDRESS SZB,RSS FOR >7? JMP *+3 OK L101 JSB ERROR BAD - WRITE " ??" JMP L90 ASK AGAIN LDB OUTBF RBL,CLE,SLB,ERB ABORT? JMP ABRT2 YES ADB NB14 CHECK THE CARD ADDRESS SSB,RSS FOR >11? JMP L101 BAD - WRITE " ??" LDB PIN POSITION THE BLF,BLF BOX RBL ADDRESS LDA OUTBF POSITION THE ALF,RAL CARD ADDRESS IOR B FORM FULL ADDRESS ISZ CADDR VALID RETURN ABRT2 JMP CADDR,I SKP .COND JSB .IOC. PRINT OUT OCT 20002 " COND:" JMP *-2 DEF MSG4 DEC 3 SPC 1 COND CLB STB CO.,I CLEAR COND REQUEST STB OUTBF INDICATOR LDA PACED,I PACED SSA,RSS CONDITION? JMP LABL1 NO - GO ON LDA P YES - SET UP IOR SPACE P TO PRINT ADB .CO.. STA B,I ISZ OUTBF SPC 1 LABL1 LDA LOOP,I REPEAT SSA,RSS CONDITION? JMP LABL2 NO - GO ON LDA R YES - SET UP IOR SPACE R TO PRINT LDB OUTBF ADB .CO.. STA B,I ISZ OUTBF SPC 1 LABL2 LDA DELC DELAY SSA,RSS CONDITION? JMP LABL3 NO - GO ON LDA D YES - SET UP IOR SPACE D TO PRINT LDB OUTBF ADB .CO.. STA B,I ISZ OUTBF SPC 1 LABL3 LDA GONLY,I GAIN MODE SSA,RSS CONDITION? JMP LABL4 NO - GO ON LDA G YES - SET UP IOR SPACE G TO PRINT LDB OUTBF ADB .CO.. STA B,I ISZ OUTBF SKP LABL4 LDA LAD.,I LAD SSA,RSS CONDITION? JMP LABL5 NO - GO ON LDA L YES - SET UP IOR SPACE L TO PRINT LDB OUTBF ADB .CO.. STA B,I ISZ OUTBF SPC 1 LABL5 LDB OUTBF SET OUTPUT PRINT STB LABL7 LENGTH FOR CONDITIONS SZB WERE THERE ANY COND? JMP LABL6 YES - GO PRINT THEM LDA NO NO - SET UP STA .CO..,I NONE TO PRINT CLB,INB LDA NE ADB .CO.. STA B,I LDA TWO SET PRINT LENGTH STA LABL7 FOR NONE SPC 1 LABL6 JSB .IOC. PRINT OCT 20002 CONDITIONS JMP *-2 OR .CO.. DEF TOP NONE LABL7 NOP SPC 1 JMP START SKP SCODE SSB,RSS SET K? JMP START NO SPC 1 SCO JSB .IOC. REQUEST OCT 20002 CARD JMP *-2 ADDRESS DEF MSG6 AND DEC -14 GAIN LDA B400 STA PIN STA OUTBF JSB READ2 READ IN BOX DEF SCO1 AND CARD DEF DEVYC LOCATION DEF TWO DEF PIN DEF OUTBF SCO1 JSB READR READ IN DEF SCO2 GAIN DEF DEVYC a DEF ZERO DEF DA SCO2 LDB PIN RBL,CLE,SLB,ERB ABORT? JMP START YES BRS,BRS CHECK THE BRS BOX ADDRESS SZB,RSS FOR >7? JMP *+3 OK SCO3 JSB ERROR BAD - ASK JMP SCO AGAIN LDB OUTBF RBL,CLE,SLB,ERB ABORT? JMP START YES ADB NB14 CHECK THE CARD ADDRESS SSB,RSS FOR >11? JMP SCO3 BAD - ASK AGAIN LDB PIN POSITION BLF,BLF THE BOX RBL ADDRESS LDA OUTBF POSITION THE ALF,RAL CARD ADDRESS IOR B FORM FULL ADDRESS IOR BIT14 GOOD ADDRESS- FORM STA PIN CONTROL WORD & STORE SKP JSB GNCHK VALID GAIN? DEF SCO4 DEF OUTBF DEF DA SCO4 LDA OUTBF SSA ABORT CONDITION? JMP START YES CPA B8 NO - VALID GAIN? JMP KSD NO CLB STB SC,I JSB EXIT TURN ON KEYBD DEF EOL ABORT FEATURE DEF MIN1 DEF START EOL LDA PIN JSB PROG PROGRAM LDA OUTBF LLMPX TO JSB PROG REQ. GAIN JSB CLRIT JMP START SPC 1 KSD JSB ERROR JMP SCO SKP SETD SSB,RSS SET DELAY? JMP SETD2 NO SPC 1 OHYA JSB .IOC. YES- REQUEST OCT 20002 DELAY JMP *-2 VALUE DEF MSG7 DEC -9 SPC 1 JSB READ1 READ IN DEF SETD1 DELAY DEF DEVYC VALUE DEF ONE (# OF DEF PIN MILLISECONDS) SPC 1 SETD1 LDB PIN RBL,CLE,SLB,ERB ABORT? JMP START YES LDA TEST2 NO ADA MIN1 ADA B DELAY> SSA 10,000? JMP KPIX NO - OK | JSB ERROR YES - TOO JMP OHYA MANY SPC 1 KPIX CMB,INB SET COUNTER FOR SETD2 STB DELC # OF MILLISECONDS JMP START SPC 2 ****************** * * * END OF INTRP * * * ****************** HED 2313B VERIF -- CODE PROCEDURES -- CNVRT 8/22/73 ******************************************* * * * CNVRT -- CONVERT DATA TO REAL VOLTAGE * * * ******************************************* SPC 1 * THIS ROUTINE TAKES INTEGER DATA STORED * IN THE UPPER 12 BITS OF EACH WORD OF * AN INTEGER ARRAY (IN THIS CASE, THE * UPPER HALF OF THE REAL ARRAY - DATA) * AND CONVERTS IT TO REAL VOLTAGE * STORING IT IN A REAL ARRAY (DATA). * * TWO GAINS ARE USED ALTERNATING BUT * BOTH WILL OFTEN BE THE SAME. SPC 2 VOLTS NOP DATA NOP GAIN1 NOP GAIN2 NOP FIRST NOP NUMBR NOP SPC 1 CNVRT NOP JSB .ENTR DEF VOLTS SPC 1 * ** INITIALIZE ** SPC 1 DLD GAIN1,I OBTAIN DST FGAIN GAIN1 DLD GAIN2,I OBTAIN DST SGAIN GAIN2 LDA NUMBR,I SET COUNTER CMA,INA FOR NUMBER OF READINGS STA NUMBR TO BE CONVERTED LDA DATA SET INPUT BUFFER ADA FIRST,I POINTER TO STARTING STA DATA POINT LDA FIRST,I SET OUTPUT BUFFER ALS POINTER ADA VOLTS TO STARTING STA VOLTS POINT SKP LDA TEST SET UP ALTERNATING TEST MORE STA DESC SAVE ALTERNATING TEST LDB XL3 GET SECOND GAIN SLA FIRST OR SECOND? LDB XL2 FIRST - GET FIRST GAIN STB XL4 SET PROPER GAIN LDA DATA,I GET RAW DATA WORD ARS,ARS DIVIDE BY 16 ARS,ARS (RIGHT JUSTIFY) JSB FLOAT MAKE INTO REAL NUMBER FMP .005 MAKE IT VOLTAGE JSB .FDV ADJUST VOLTAGE XL4 DEF FGAIN BY AMOUNT OF GAIN STA VOLTS,I STORE ISZ VOLTS VOLTAGE STB VOLTS,I IN OUTPUT ISZ VOLTS ARRAY (INTO ALGOL) ISZ DATA NEXT DATA ISZ NUMBR DONE? RSS NO JMP CNVRT,I YES - RETURN TO ALGOL LDA DESC GET ALTERNATING TEST RAR SWITCH ALTERNATING TEST JMP MORE NEXT DATA SPC 2 ****************** * * * END OF CNVRT * * * ****************** HED 2313B VERIF -- CODE PROCEDURES -- DESCR 8/22/73 *********************************************** * * * DESCR -- OUTPUT ASCII STRING FROM BUFFERS * * * *********************************************** SPC 1 * THIS ROUTINE PRINTS THE CONTENTS * OF THE BUFFER AREA AS ASCII * CHARACTERS. * * THIS ROUTINE IS THEN DESTROYED * BY USING IT AND THE BSS AT ITS * END AS A STRING BUFFER FOR READX. * AND AS STORAGE PARAMETERS FOR VARIOUS ROUTINES. SPC 2 ORB LOC NOP SPC 1 DESCR NOP JSB .ENTR DEF LOC SPC 1 L1000 JSB .IOC. REQUEST ANSWER CBLOC OCT 20002 TO " WANT INCH JMP *-2 DIRECTIONS?" MINCD DEF MSG5 DA DEC -19 SPC 1 NCHLO JSB .IOC. READ SUM OCT 10401 THE KTVU JMP *-2 ANSWER DEF PIN (YES OR NO) DEC 1 SPC 1 JSB CHECK IS ANSWER READY? LDA PIN YES CPA NO NO? JMP DESCR,I RIGHT - GET OUT CPA YES YES? RSS RIGHT - CONTINUE JMP L1000 NEITHER - SO ASK AGAIN SPC 1 LDA LOC GET BUFFER ADRS JSB DESC AND CALL PRINT ROUTINE SPC 1 JMP DESCR,I SKP DESC NOP DES STA *+2 W SAVE BUFFER ADRS ST RSS FROM NOP SPC 1 ATEST LDA LNGTH SET LENGTH OF GNCOD STA CNTR ASCII STRING (WORDS) OUTPT LIA 1 ESCAPE? FGAIN SSA / JMP DESC,I YES I LDA FROM,I GET CHARACTER PAIR J ALF,ALF POSITION K STA OUTBF AND PUT IN BUFFER MASK JSB .IOC. OUTPUT COU1 OCT 20002 THE CHARACTER JMP *-2 PAIR SGAIN DEF OUTBF FOLLOWED BY DEC -3 A LEFT ARROW (_) ASAVE ISZ FROM NEXT WORD TEMP ISZ CNTR DONE? JMP OUTPT NO - NEXT CHAR PAIR AVG JMP DESC,I YES - BACK TO ALGOL SPC 1 LNGTH DEC -701 SPC 1 * ** EXTRA BUFFER AREA FOR ** * ** INPUT STRINGS ** SPC 1 MSG5 ASC 10, WANT DIRECTIONS? _ * TOP BSS 2 BOTOM BSS 2 EQTAD OCT 17 ORR SPC 2 ****************** * * * END OF DESCR * * * ****************** HED 2313B VERIF -- CODE PROCEDURES -- EXIT 8/22/73 ********************************************* * * * EXIT -- SET UP AND CHECK TTY FOR ESCAPE * * * ********************************************* SPC 1 * THE TTY TRAP CELL LINK IS MADE * TO POINT AT I.EX BELOW SO THAT * AN INTERRUPT FROM THE TTY COMES HERE. * * THE LINK IS RESTORED ON INTERRUPT AND * CONTROL SENT TO A LABEL PASSED IN THE CALL. * * A CLEAR REQUEST HERE RESTORES THE LINK. * * THE 2313B TRAP CELL IS RESTORED WHENEVER * THE TTY LINK IS RESTORED. SPC 2 TEST1 NOP LABEL NOP SPC 1 EXIT NOP JSB .ENTR DEF TEST1 SPC 1 LDA TEST1,I LBL4 INA,SZA SET UP? JMP RSET NO - GO CLEAR IT JSB CHECK YES - IS TTY BUSY? LDA TTYIN GET NEW TRAP CELL LINK STA TTYL,I SET UP LINK ZHFBLDA INTTY GET TTY INPUT MODE WORD AND OTA1 OTA TTY OUTPUT STCC1 STC TTY,C ENCODE THE TTY FOR INPUT JMP EXIT,I SPC 1 RSET JSB CLRIT GO CLEAR JMP EXIT,I SPC 1 I.EX NOP INTERRUPT ENTRY POINT JSB CLRIT GO CLEAR JMP LABEL,I GO TO ALGOL INTERRUPT POINT SPC 1 CLRIT NOP LDA TTYLC GET BCS TTY LINK CLC1 CLC TTY TURN OFF TTY STF1 STF TTY RESTORE FLAG STA TTYL,I RESTORE TRAP LINK CLC2 CLC .2313 TURN OFF 2313B LDA TCC RESTORE STA SC,I TRAP CELL STF2 STF .2313 JMP CLRIT,I SPC 1 * ** END OF EXIT ** (wH HED 2313B VERIF -- CODE PROCEDURES -- DELAY 8/22/73 ************************************************* * * * DELAY -- WAIT A SPECIFIED # OF MILLISECONDS * * * ************************************************* SPC 2 DELAY NOP ISZ DELAY SET RETURN POINT STA ASAVE SAVE A REGISTER LDA DELC GET # OF MSEC SZA,RSS IS IT 0? JMP DEL2 YES - JUST RETURN (NO DELAY) STA COU1 NO - SET COUNTER SPC 1 DEL1 LDA N.200 GET 1 MSEC COUNTER ISZ A \ JMP *-1 \ COUNT ISZ COU1 / DOWN JMP DEL1 / SPC 1 DEL2 LDA ASAVE RESTORE A REGISTER JMP DELAY,I SPC 1 * ** END OF DELAY ** HED 2313B VERIF -- CODE PROCEDURES -- ISSUE 8/22/73 *************************** * * * ISSUE -- PROGRAM SS/H * * * *************************** SPC 2 ON NOP SPC 1 ISSUE NOP JSB .ENTR DEF ON SPC 2 LDB ON,I GET ON OR OFF SWITCH LDA SSSH PREPARE TO SET SS/H SZB,RSS SET OR CANCEL SS/H? LDA RSSH CANCEL LDB PACED,I SET. USE PACER? SZB,RSS JMP FINIS NO LDB BIT12 YES - PUT IN IOR B PACE BIT CLB STB SC,I CLEAR THE TRAP CELL FINIS JSB PROG OUTPUT CMND TO 2313 LDA TCC STA SC,I RESTORE TRAP CELL JMP ISSUE,I RETURN TO ALGOL SPC 1 ORB PROG NOP OTA3 OTA .2313 STCC3 STC .2313,C SFS3 SFS .2313 JMP *-1 JMP PROG,I ORR SPC 1 * ** END OF ISSUE ** HED 2313B VERIF -- CODE PROCEDURES -- DSPLY/HISTO 8/22/73 ****************************************** * * * DSPLY/HISTO -- COMBINED PROCEDURES * * * * DSPLY -- ADC DISPLAY FOR CALIBRATION * * HISTO -- HISTOGRAM ROUTINE * * * ****************************************** SPC 1 * DSPLY OR HISTO IS ENTERED AND * INITIAL SET-UP WHICH IS COMMON * IS ACCOMPLISHED. SPC 1 *************************************************** * * * COMBINED ENTRY POINT FOR BOTH DSPLY AND HISTO * * * *************************************************** SPC 2 * ** CALLING PARAMETER LIST ** SPC 1 CHANN NOP PACER NOP RATE1 NOP RNGE NOP XTSS NOP GAIN NOP QUANT NOP BUKTS NOP NBUFF NOP RBUFF NOP SPC 1 * ** START OF ROUTINE ** SPC 1 HISTO NOP DSPLY EQU HISTO JSB .ENTR DEF CHANN SPC 1 JSB EXIT SET UP DEF *+3 TTY ESCAPE DEF MIN1 CAPABILITY DEF ABORT SPC 1 LDA DI.,I DISPLAY SSA MODE? JMP K6 YES LDB NBUFF SET ADB D20 UP STB ATEST ABORT STA ATEST,I INDICATOR SKP K6 CLA STA SC,I CLEAR THE TRAP CELL LDA PACER,I TO BE SSA,RSS PACED? JMP NTPCD NO LDA RNGE,I \\\\\\\ ALF,ALF \ STA B \ LDA RATE1,I FORM \ IOR B PACER > LDB XTSS,I WORD / SSB / IOR BIT12 / IOR PACWD /////// SPC 1 OTA2 OTA .2313 \ STCC2 STC .2313,C \ PROGRAM SFS2 SFS .2313 / PACER JMP *-1 / SPC 1 NTPCD LDA N.16 SET MPX STA MASK HISTO MASK SPC 1 LDA CHANN,I GET MPX ADDRESS IOR B1513 AND [FORM COMMAND WORD LDB PACER,I TO BE SSB PACED? IOR BIT12 YES OTA5 OTA .2313 SET UP CHANNEL STCC5 STC .2313,C NUMBER LDA DI.,I IS THIS SSA,RSS DISPLAY MODE? JMP HIST NO - THEN HISTOGRAM SKP * THIS IS THE REGISTER DISPLAY * ROUTINE. THE AVERAGE OF EITHER * FOUR OR 16 READINGS IS DISPLAYED * IN THE B OR SWITCH REGISTERS. SPC 2 LDA ALSX LDB GAIN,I 4 WORD AVG WITH STATUS? SSB,RSS CLA NO - 16 WORD AVG STA ALSY YES LDA LDAX SET SSB PROPER LDA LDAY WORD STA LDAW COUNTER DISP CLA CLEAR SUM TO MAKE STA SUM ROOM FOR NEXT DISPLAY LDAW LDA N.16 OR N.4 -- SET WORD COUNTER STA CNTR REED SFS .2313 JMP *-1 LIA1 LIA .2313 GET A DATA WORD STA KTVU SAVE STATUS INFO LDA PACER,I SSA,RSS PACED? JSB DELAY NO - SO DELAY NOP YES - CONTINUE LDA KTVU STCC6 STC .2313,C START NEXT READING ARS,ARS DIVIDE ARS,ARS BY 16 ALSY ALS,ALS OR NOP MULT BY 4 IF STAT WANTED ADA SUM ADD DATA STA SUM TO THE SUM LDA GAIN,I \ SSA,RSS STATUS? JMP *+5 NO LDA KTVU YES - GET STATUS AND TWO INFORMATION IOR SUM PLACE STATUS BITS ON AVG STA SUM ISZ CNTR DONE WITH AVG? JMP REED NO - GET NEXT DATA WORD LDB SUM YES - DISPLAY RESULT IN THE OTB 1 B & SWITCH REGISTERS JMP DISP START NEW AVERAGE SPC 2 * ** END OF DISPLAY LOOP ** * ** PORTION OF DSPLY/HISTO ** SKP * HERE BEGINS THE HISTOGRAM PORTION SPC 1 HIST CCA INITIALIZE # ADA NBUFF BUFFER ST~A NBUFF POINTER LDA FSTIM SET STA K8 FIRST TIME LDA QUANT,I SET STA EQTAD CMA,INA NUMBER STA QUANT,I COUNTER SPC 1 SFS5 SFS .2313 IGNORE FIRST JMP *-1 READING (GARBAGE) SSB,RSS PACED? JSB DELAY NO - SO DELAY NOP STCC7 STC .2313,C START FIRST GOOD READING CLA,INA \ STA J J_1 STA K K_1 LDA RBUFF SET ADA B62 POINTER STA PNTR / ADA MIN1 / STA INARY / SPC 1 READ SFS .2313 JMP *-1 LIA2 LIA .2313 GET READING (R) LDB PACER,I \ DELAY BETWEEN SSB,RSS > READINGS IF JSB DELAY / NOT PACED NOP ANRDG STC .2313,C START NEXT READING RAR,SLA,RAL PACE RATE ERROR? JMP PFAST YES AND MASK K8 JMP STORE 1ST TIME (NOP THE REST) EQUAL JSB HCHK IS R=,>, OR < D[J]? ISZ PNTR R>D[J] ISZ J J_J+1 LDB J \ CMB,INB \ IS ADB K / J>K? SSB,RSS / JMP EQUAL NO LDB K \ YES CPB D20 K=20? JMP DONE YES - TOO MANY BUCKETS ISZ K NO - K_K+1 (NEW BUCKET) FSTIM JMP STORE SPC 1 INCR LDB NBUFF \ ADB J > N[J]_N[J]+U ISZ B,I / JMP CHEK SKP LOWER LDB J \ CPB ONE2 J=1? JMP K11 YES ADB MIN1 \ NO STB J \ LDB PNTR > J_J-1 ADB MIN1 / STB PNTR / JSB HCHK IS R=,>, OR < D[J]? ISZ J ISZ PNTR K11 LDB K R>D[J] CPB D20 K=20? JMP DONE YES - TOO MANY BUCKETS STB I NO - I_K ISZ K K_K+1 (NEW BUCKET) STA TEMP SAVE R SPC 1 SORT LDB OINARY \\\\\\\\\\\\ ADB I \ \ LDA B,I > D[I+1]_ \ INB / D[I] \ STA B,I / \ LDB NBUFF \ \ ADB I \ \ LDA B,I > N[I+1]_N[I] \ SORT INB / / UP STA B,I / / LDB I \ / CPB J \ I=J? / JMP *+4 YES - DONE / ADB MIN1 NO - I_I-1 / STB I / / JMP SORT //////////// SPC 1 LDA TEMP RESTORE R SPC 1 STORE STA PNTR,I D[J]_R LDB NBUFF \ ADB J \ N[J]_1 CLA,INA / STA B,I / CLA SET FIRST TIME INSTRUCTION STA K8 FOR REMAINING READINGS SPC 1 CHEK ISZ QUANT,I DONE? JMP READ NO - ANOTHER READING CLA SFS7 SFS .2313 YES JMP *-1 LDB CLEAN ISSUE OTA6 OTB .2313 CLEAN STCC8 STC .2313,C UP SKP * FINISHED FILLING THE BUCKETS SPC 1 STA BOTOM LDA RBUFF \ STA OUTRY \ ISZ INARY \ SET UP CALL LDA GAIN / TO CNVRT STA G1 / STA G2 / JSB CNVRT CALL DEF NDLST CNVRT OUTRY NOP \ INARY NOP \ G1 NOP \ PARAMETER G2 NOP / LIST DEF ZERO / DEF K / NDLST LDA K SET NUMBER OF BUCKETS STA BUKTS,I FOR RETURN SPC 1 LDA EQTAD \ ADA TEST2 \ IOR BOTOM \ IF (HOWMANY<10000 OR AND LOOP,I / BUCKETS>20) AND LOOP SSA,RSS / THEN WAIT JMP SFS8 / LDA N.4 \ STA BOTOM \ CLA \ STA TOP \ WAIT ISZ TOP / LOOP: JMP *-1 / (1-2.5 SEC) ISZ BOTOM / JMP *-5 / SKP SPC 1 SFS8 SFS .2313 JMP *-1 LDA PACWD TURN OFF OTA7 OTA .2313 PACER STCC9 STC .2313,C IF IT SFS9 SFS .2313 WAS JMP *-1 ON SPC 1 ENND JSB CLRIT CLEAR ESCAPE CAPABILITY JMP HISTO,I GO BACK TO ALGOL SPC 1 PFAST CCA PACE TOO FAST STA BUKTS,I JMP ENND SPC 1 ABORT LDA HI.,I DISPLAY SSA,RSS MODE? JMP ENND YES STA ATEST,I SET ABORT INDICATOR JMP ENND SPC 2 DONE CCA TOO MANY BUCKETS JMP SFS7 SPC 2 **************************** * * * END OF DSPLY/HISTO * * * **************************** HED 2313B VERIF -- CODE PROCEDURES -- STATPAC 8/22/73 ************************************************** * * * STATPAC -- CALCULATE AVG, P-P, HI, LO, & RMS * * * ************************************************** SPC 1 * THIS PROCEDURE CALCULATES THE AVERAGE OF ALL READINGS TAKEN ON * ONE CHANNEL IN THE SINGLE CHANNEL, TWO CHANNEL, OR HISTOGRAM * TESTS. IT ALSO CALCULATES THE HIGHEST AND LOWEST VALUES AND * THEIR DIFFERENCE (PEAK-TO-PEAK). FINALLY, IT CALCULATES THE * RMS ERROR BETWEEN THE READINGS AND THE AVERAGE. IT THEN PRINTS * THESE RESULTS. * * * MODE = 1 FOR HISTOGRAM * MODE = 2 FOR SINGLE CHANNEL * MODE = 3 FOR TWO CHANNEL (1ST CHANNEL) * MODE = 4 FOR TWO CHANNEL (2ND CHANNEL) SPC 2 RDGS NOP #TAKN NOP MODE NOP #RDGS NOP SPC 1 STATP NOP JSB .ENTR DEF RDGS SPC 2 LDB #RDGS,I \\\\\\\\\\\\\\\\\\\\\\\ LDA MODE,I \ CPA ONE2 TOTAL_ IF MODE=1 THEN 0 \ JMP LBL5 ELSE I(F MODE=2 THEN \ CPA TWO HOWMANY ELSE \ RSS HOWMANY/2; \ BRS / SZB,RSS TOTAL NEVER <1 / INB IF MODE#0 / RSS / LBL5 CLB / STB TOTAL /////////////////////// SPC 1 CLB DIV TWO STA QUOT MODE\2 STB REMDR AND MODE MOD 2 CLA CLB DST RMS RMS_AVG_0.0; DST AVG INA STA NUM NUMBER_1; CMA ADA RDGS STA RDGS SKP LDA QUOT \\\\\\\\\\\\\\\\\\\\\\ IOR REMDR \ ALS MEAN_BOTTOM_ \ ADA RDGS DATA[MODE\2 OR \ STA TEMP MODE MOD 2]; / DLD TEMP,I / DST BOTOM / DST MEAN /////////////////////// SPC 1 LDA MODE,I --------------------------\ CPA ONE2 \ JMP XYZ1 \ DLD BOTOM \ JMP XYZ2 TOP_IF MODE=1 THEN \ XYZ1 LDA #RDGS,I DATA[HOWMANY] ELSE BOTTOM; > ALS / ADA RDGS / STA TEMP / DLD TEMP,I / XYZ2 DST TOP --------------------------/ SPC 1 ******************************************************************** CCA * * ADA #TAKN * * STA #TAKN * FOR I_MODE * LDA QUOT * STEP MODE\2+MODE MOD 2 * ADA REMDR * UNTIL HOWMANY DO * STA STEP * | * LDA MODE,I * BEGIN * XYZ3 STA I ******************************** * * LDB A ******************************** CMB,INB * * ADB #RDGS,I * ** TEST FOR END OF LOOP ** * SSB * * JMP XYZ10 * DONE! * * ******************************** * * ALS \ * ADA RDGS \ * STA TEMP > VOLTAGE_DATA[I]; * DLD TEMP,I / * DST VOLTS / * * * LDA MODE,I \\\\\\\\\\\\\\\\\ * CPA ONE2 \ * RSS \ * JMP XYZ4 \ * LDA I \ \ * ADA #TAKN \ NUMBER_ > MODE=1 * LDA A,I / NUMBERTAKEN[I]; / * STA NUM / / * ADA TOTAL \ TOTAL_ / * STA TOTAL / TOTAL+NUMBER; / * JMP XYZ6 ///////////////// * SKP XYZ4 DLD TOP \\\\\\\\\\\\\\\\\\\\ * FSB VOLTS \ \ * SSA,RSS \ IF VOLTAGE>TOP \ * JMP XYZ5 / THEN TOP_ \ * DLD VOLTS / VOLTAGE; \ * DST TOP / \MODE * XYZ5 DLD VOLTS \ / #1 * FSB BOTOM \ IF VOLTAGE AVG_MEAN+AVG/TOTAL; FDV TOTAL / FAD MEAN / DST AVG / SKP ******************************************************************** LDA QUOT * FOR I_MODE\2 OR MODE MOD 2 * IOR REMDR * STEP MODE\2+MODE MOD 2 * XYZ7 STA I * UNTIL HOWMANY DO BEGIN * * ******************************** * * LDB A ******************************** CMB,INB * * ADB #RDGS,I * ** TEST FOR END OF LOOP ** * SSB * * JMP XYZ11 * DONE! * * ******************************** * * CLB,INB \\\\\\\\\\\\\\\\\\\\\\ * CPB MODE,I  \ * RSS \ * JMP XYZ8 \ MODE * ADA #TAKN \ / =1 * LDA A,I > NUMBER_ / * STA NUM / NUMBERTAKEN[I]; / * * ////////////////////// * * * XYZ8 LDA I \----------------------\ * ALS \ ) \ * ADA RDGS \ (DATA[I] ) \ * STA TEMP > -AVG) ) \ * DLD TEMP,I / ) \ * FSB AVG / ) RMS_ \ * DST TEMP / ) RMS+ \ * JSB .RTOI \ ) (DATA[I] \* DEF TEMP \ ( )^2 ) -AVG)^2 * DEF TWO / ) *NUMBER/* DST TEMP / ) / * LDA NUM \ ) / * JSB FLOAT > ( )^2*NUMBER ) / * FMP TEMP / ) / * FAD RMS \ RMS_RMS+ ) / * DST RMS / ( )^2*NUMBER; ) / * * -----------------------/ * * * LDA I ******************************** ADA STEP * NEXT I * JMP XYZ7 * * ******************************************************************** SKP XYZ11 DLD RMS \ FDV TOTAL \ RMS_ JSB SQRT / SQRT(RMS/TOTAL); DST RMS / SPC 1 *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ LDA TWO + + CLB + WRITE(OUT,FOR1,AVG,TOP- + JSB .DIO. + BOTTOM,TOP,BOTTOM,RMS)o; + DEF FOR1 + + DEF ND ++++++++++++++++++++++++++++++++ * + DLD AVG \ PRINT + JSB .IOR. / AVG + * + JSB .DTA. + * + ND LIA 1 \ + AND LOOP,I \ SKIP REST OF PRINT + SSA / IF LOOP AND SW15 + JMP .END / + * + LDA TWO \ + CLB \ + JSB .DIO. > SET UP REST OF PRINT + DEF FOR2 / + DEF .END / + * + DLD TOP \ + FSB BOTOM > PRINT + JSB .IOR. / P-P + * + DLD TOP \ PRINT + JSB .IOR. / HI + * + DLD BOTOM \ PRINT + JSB .IOR. / LO + * + DLD RMS \ PRINT + JSB .IOR. / RMS + * + * ++++++++++++++++++++++++++++++++ * + + JSB .DTA. + T END OF PRINT + * + + *+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ SPC 2 .END JMP STATP,I SPC 2 ******************** * * * END OF STATPAC * * * ******************** HED 2313B VERIF -- CODE PROCEDURES -- INTER 8/22/73 ******************************** * * * INTER -- PROGRAM INTERLACE * * * ******************************** SPC 2 CB NOP NCDS NOP V NOP DALOC NOP NCH NOP GN NOP GC NOP ABRT1 NOP SPC 1 INTER NOP JSB .ENTR DEF CB SPC 1 JSB EXIT SET UP DEF *+3 TTY ESCAPE DEF MIN1 CAPABILITY DEF STOP SPC 1 CLA SET UP ABORT STA ABRT1,I INDICATOR STA SC,I CLEAR THE TRAP CELL SPC 1 LDB NCDS,I GET # OF CARDS CMB,INB MAKE NEGATIVE STB NCDS AND STORE LDA CB \\\\\\\\\\ STA CBLOC \ IN LDA CBLOC,I \ IOR BIT14 \ JSB PROG PROGRAM GAIN \ LDA GC,I ON ALL LLMPX \ AND B77 CARDS / JSB PROG / ISZ CBLOC / ISZ GC / ISZ B / JMP IN ////////// SKP LDA NCH,I INITIALIZE CMA,INA COUNTERS STA NCH AND TSENT LDA DALOC POINTERS STA DA LDA NCH STA NCHLO CLA STA INCH SCENT LDA CB STA CBLOC LDB NCDS GET NUMBER STB MINCD OF CARDS SMENT LDA CBLOC,I FORM SET-UP ADA INCH COMMAND AND INA ISSUE TO JSB PROG SUBSYSTEM ISZ CBLOC HAVE ALL CARDS ISZ MINCD BEEN SET UP? JMP SMENT NO LDA CB YES - REINITIALIZE STA CBLOC LDB NCDS STB MINCD MORCD LDA CBLOC,I FORM DIGITIZE IOR B1513 COMMAND AND JSB PROG ISSUE TO 2313 LIA4 LIA .2313 GET BACK DATA CPB MINCD FIRST TIME? JMP GOON YES- BAD DATA STA DA,I NO- SO STORE IT ISZ DA GOON ISZ CBLOC HAVE ALL CARDS ISZ MINCD BEEN DIGITIZED? JMP MORCD NO LDA CLEAN YES- JSB PROG GET LAST LIA5 LIA .2313 READING AND STA DA,I STORE ISZ DA ISZ NCHLO MORE CHANNELS? JMP MORCH YES LDA LOOP,I NO SSA,RSS REPEAT SET? JMP *+4 JSB DELAY YES - DELAY NOP THEN DO JMP TSENT OVER SKP LDA NCH NO - SET UP STA NCHLO CALL TO LDA V CNVRT STA PRAM1 LDA DALOC STA PRAM2 CLA STA K KMOX LDA NCDS STA MINCD LDA GN STA PRAM3 STA PRAM4 WNCMO JSB CNVRT CALL DEF ENLST CNVRT PRAM1 NOP PRAM2 NOP PRAM3 NOP PRAM4 NOP DEF K DEF ONE ENLST ISZ K PREPARE ISZ PRAM3 FOR ISZ PRAM3 NEXT ISZ PRAM4 TIME ISZ PRAM4 ISZ MINCD DONE WITH # OF CARDS? JMP WNCMO NO ISZ NCHLO YES- DONE WITH EVERYTHING? JMP KMOX NO - MORE CHANNELS OVER JSB CLRIT YES- CLEAR ESCAPE CAPABILITY JMP INTER,I GO BACK TO ALGOL SPC 1 MORCH LDA INCH ADA TWO STA INCH JMP SCENT SPC 1 STOP CCA STA ABRT1,I JMP OVER SPC 1 * ** END OF INTER ** TRNNT HED 2313B VERIF -- CODE PROCEDURES -- CNFGR 8/22/73 ***************************************** * * * CNFGR -- CONFIGURE I/O INSTRUCTIONS * * * ***************************************** SPC 1 * WHEN STARTING ADDRESS IS OCTAL 2000 * A JUMP TO HERE OCCURS SO THAT ALL * DEVICES CAN BE IDENTIFIED. SPC 2 CNFGR CLC 0,C CLA JSB FRST SAVE SOME LOCATIONS (1ST TIME) LDB TTYLC \\\\\\\\\\\\\\\\\\\ STB TTYL,I RESTORE TTY LINK \ LDB TCC RESTORE 2313B \ STB SC,I TRAP CELL \ STA LAD.,I CLEAR ALL \ STA GONLY,I POSSIBLE \ NOT STA LOOP,I TEST \ FIRST STA PACED,I CONDITIONS / TIME STA DELC / INA SET / STA DEVYC KEYBOARD / STA BATCH,I MODE / LDA ABRT SET ABORT FEATURE / STA LBL4 /////////////////// SPC 1 JSB ADDRS GET EQT ADDRS LDA TWO SET EQT LENGTH STA B,I TO TWO INB MAKE ADDRS OF 1ST WORD STB EQTAD OF TTY ENTRY AND SAVE ADB THREE MAKE ADDRS OF 4TH WORD LDA B,I OF TTY ENTRY AND GET DRVR ADRS STA TAD SAVE DRIVER D.00 ENTRY POINT LDB EQTAD,I GET OLD SELECT CODE LDB B,I GET TRAP CELL CONTENTS SPC 1 IN1 LIA 1 READ NEW SELECT CODE AND B77 AND ISOLATE IT JSB SCHK IS IT VALID? HLT 1B NO JMP IN1 TRY AGAIN STA EQTAD,I YES - PUT IN EQT STA TTYSC SAVE SC FOR TTY LDA TTYSC,I SAVE CONTENTS OF CELL FOR STA TTY11 ANOTHER DEVICE STB TTYSC,I SET TTY TRAP CELL SPC 1 JSB .IOC. CLEAR I/O ONE2 OCT 1 ON TTY SKP IN2 LDA DMES1 GO GET 2313B LDB ML1 SELECT JSB GETIT CODE CPA TTYSC SAME AS TTY? RSS YES - OOPS! JSB SCHK IS IT VALID? JSB ERROR NO JMP IN2 TTY AGAIN STA SC SAVE SELECT CODE SPC 1 JSB ADDRS GET EQT ADDRS ADB FIVE SET FOR 2313B STB EQTAD ENTRY AND SAVE LDB B,I GET OLD 2313B SC STA EQTAD,I SET NEW 2313B SC LDA B,I GET TRAP CELL CONTENTS CPB TTYSC MAKE SURE THIS IS THE LDA TTY11 PROPER TRAP CELL CONT. STA TCC SAVE CONTENTS STA SC,I SET NEW TRAP CELL SPC 2 IN3 LDA DMES2 GO GET PHOTO- LDB ML2 READER SELECT JSB GETIT CODE SZA,RSS IS IT ZERO? JMP TONLY YES - NO PHOTOREADER CPA TTYSC SAME AS TTY? JMP *+4 YES - OOPS! CPA SC SAME AS 2313B? RSS YES - OOPS TOO! JSB SCHK IS IT VALID? JSB ERROR NO JMP IN3 TRY AGAIN STA TSC SAVE SELECT CODE SPC 1 JSB ADDRS GET EQT ADDRS LDA THREE CHANGE EQT LENGTH STA B,I TO THREE LDA TSC GET PR SELECT CODE ADB B11 SET EQT ADDRS FOR PR ENTRY STA B,I PUT NEW SC IN EQT LDA TTYSC,I GET TTY TRAP CELL CONTENTS STA TSC,I AND SET FOR PR ADB THREE SET EQT ADDRS FOR DRVR ENTRY LDA TAD GET TTY DRIVER ENTRY STA B,I AND SET INTO PR EQT ENTRY SPC 1 LDA LBL3 SET UP TAPE MODE RSS FOR PHOTO-READER TONLY CLA SET UP TAPE MODE STA LBL1 FOR TTY SKP LDA SC GET 2313B SELECT CODE IOR SFSX FORM SFS XX INSTRUCTION (2313B) STA SFS2 \ STA SFS3 \ STA SFS5 \ STA READ  \ AND STA SFS7 / STORE IT STA SFS8 / STA SFS9 / STA REED / SPC 1 XOR B500 FORM OTA XX INSTRUCTION (2313B) STA OTA2 \ STA OTA3 \ STA OTA5 > AND STORE IT STA OTA6 / STA OTA7 / SPC 1 IOR B1100 FORM STC XX,C INSTRUCTION (2313B) STA STCC2 \ STA STCC3 \ STA STCC5 \ STA STCC6 \ AND STA STCC7 / STORE IT STA ANRDG / STA STCC8 / STA STCC9 / SPC 1 XOR B9B11 FORM CLC XX INSTRUCTION (2313B) STA CLC2 AND STORE IT SPC 1 XOR B4600 FORM STF XX INSTRUCTION (2313B) STA STF2 AND STORE IT SPC 1 IOR B400 FORM LIA XX INSTRUCTION (2313B) STA LIA1 \ STA LIA2 \ AND STA LIA4 / STORE IT STA LIA5 / LDA OTA6 IOR B4600 STA OTA6 LDA TTYSC SET IOR OTAX MODE STA OTA1 COMMAND IOR B1100 FORM STC XX,C INSTRUCTION (TTY) STA STCC1 AND STORE IT XOR B9B11 FORM CLC XX INSTRUCTION (TTY) STA CLC1 AND STORE IT XOR B4600 FORM STF XX INSTRUCTION (TTY) STA STF1 AND STORE IT LDA TTYSC,I SAVE TRAP AND B77 CELL LINK STA TTYL AND LINK LDA A,I CONTENTS STA TTYLC (TTY) JMP 2B GO ON TO ALGOL SKP ************************************************* * * * GETIT -- GET TTY OR PHOTOREADER SELECT CODE * * * ************************************************* SPC 2 ORB GETIT NOP STA MESS PUT MESSAGE PARAMETERS STB ML INTO CALL TO IOC JSAB .IOC. OUTPUT OCT 20002 REQUEST JMP *-2 FOR A MESS NOP SELECT ML NOP CODE CLA,INA \ CLB,INB \ JSB .DIO. \ DEF FMT3 > INPUT NEW DEF *+2 / SELECT CODE JSB .IOI. / JMP GETIT,I / ORR SPC 3 ************************************************* * * * FRST - SAVE SOME LOCATIONS, FIRST TIME ONLY * * * ************************************************* SPC 2 ORG WHERE FRST NOP LDB LBL4 SAVE ABORT STB ABRT CAPABILITY LDB LBL1 SAVE NORMAL STB LBL3 TAPE MODE LDB DEFIO GET ELB,CLE,ERB AND LDB B,I SAVE ADB B301 *FMT ERROR STB DEFIO ADDRESS LDB DEFER SET UP *FMT STB DEFIO,I ERROR ESCAPE ISZ DEFIO AND RETURN LDB FRST CLEAR THE ADB MIN1 CALL TO STA B,I THIS ROUTINE ADB EQTAD RETURN TO CNFGR ROUTINE JMP B,I AFTER "NOT FIRST TIME" AREA SPC 1 B301 OCT 301 USED ONLY BY DEFER JMP FMTER THIS ROUTINE ORR SKP ***************************************** * * * SCHK -- CHECK FOR VALID SELECT CODE * * * ***************************************** SPC 2 SCHK NOP STA GETIT SAVE SC ADA NB10 IS IT SSA MORE THAN 7? JMP SCHK,I NO - ERROR RETURN SPC 1 LDA GETIT IS IT CMA,INA LESS THAN ADA B67 70? SSA JMP SCHK,I NO - ERROR RETURN LDA GETIT RESTORE SC ISZ SCHK SET OK ISZ SCHK RETURN JMP SCHK,I  SPC 4 ******************************* * * * ADDRS -- FIND EQT ADDRESS * * * ******************************* SPC 2 ORB ADDRS NOP LDB SQTAD GET SQT ADDRESS SSB,RSS IS IT INDIRECT? JMP *+4 NO ELB,CLE,ERB YES - ELIM I BIT LDB B,I GET NEXT LEVEL JMP *-4 GO CHECK AGAIN ADB SIX OK, MAKE EQT ADDRESS JMP ADDRS,I HED 2313B VERIF -- CODE PROCEDURES -- SERVICE ROUTINES ******************************************* * * * CHECK -- WAIT FOR TTY TO BE AVAILABLE * * * ******************************************* SPC 2 CHECK NOP JSB .IOC. STATUS CALL OCT 40001 TO IOC SSA BUSY JMP *-3 YES JMP CHECK,I NO SPC 4 ********************************* * * * ERROR -- PRINT " ??" ON TTY * * * ********************************* SPC 2 ERROR NOP JSB .IOC. OUTPUT OCT 20002 MESSAGE JMP *-2 TO DEF WRONG TTY DEC -3 ( ??) JMP ERROR,I SKP *********************************************** * * * HCHK -- CHECK FOR R=,>, OR < D[J] (HISTO) * * * *********************************************** SPC 2 ORR HCHK NOP LDB PNTR,I \ CPA B R=D[J]? JMP INCR YES SSA NO - R<0? JMP *+4 YES SSB NO - D[J]<0? JMP HCHK,I YES - (R>D[J]) JMP *+3 NO SSB,RSS - D[J]<0? JMP LOWER NO - (^RD[J]? SSB / JMP LOWER NO - (RD[J]) ORB SPC 3 *************************************** * * * FORMATTER OVERLAY FOR *FMT ERRORS * * * *************************************** SPC 2 FMTER LDB BIGST GET LARGE NUMBER LDA NMBR,I \ AND HI.,I > HISTO & READ1? SSA / CLB YES - GET A 0 STB P1,I PUT 0 OR LG # IN PARAMETER JMP DEFIO,I RETURN TO FORMATTER ORR HED 2313B VERIF -- CODE PROCEDURES -- READX 8/22/73 ******************************************** * * * READX -- READ FROM TTY OR PHOTO-READER * * * ******************************************** SPC 1 * THIS ROUTINE READS A 72 CHARACTER * STRING FROM EITHER THE TTY OR * THE PHOTOREADER. * * FOR THE PHOTOREADER, THE ENTIRE * STRING IS PRINTED ON THE TTY. * * FOR NUMBERS THE FORMATTER IS * THEN USED FOR INTERNAL CONVERSION. SPC 2 * ** CALLING PARAMETER LIST ** SPC 1 DVICE NOP NMBR NOP P1 NOP NOP NOP NOP SPC 2 * ** START OF ROUTINE ** SPC 1 READ4 NOP ALL READ1 EQU READ4 ENTRY READ2 EQU READ4 NAMES ARE READ3 EQU READ4 THE SAME READR EQU READ4 JSB .ENTR DEF DVICE SPC 1 LDA NMBR,I SZA,RSS JMP L42 LDA DVICE,I IOR REDIT SET READ REQUEST STA *+2 AND STORE IT JSB .IOC. READ THE OCT 10401 OR OCT 10005 JMP *-2 PHOTOREADER DEF DESC OR TTY LONG DEC -72 (72-CHAR STRING) SKP LDA DVICE,I GET DEVICE TYPE IOR BIT14 @MAKE STATUS REQUEST CODE STA *+2 AND STORE IN CALL STAT JSB .IOC. CHECK INPUT OCT 40005 UNIT STATUS SSA DONE? JMP STAT NO - TRY AGAIN ELB,CLE,ERB YES - USE TRANS LOG LDA B SET NEGATIVE CMA,INA FOR CHARACTERS STA L41 SET OUTPUT STRING LENGTH LDA B SET POINTER INA TO FIRST B1100 ARS UNUSED ADA DEFST BUFFER STA PNTR WORD INB STORE ADB LONG COMMA BRS PAIRS SZB,RSS IN JMP LW1 THE LDA COMMA REST STA PNTR,I OF ISZ PNTR THE INB,SZB STRING JMP *-3 BUFFER SPC 1 LW1 CLB,INB PHOTO- CPB DVICE,I READER? JMP L42 NO - TTY JSB .IOC. OUTPUT OCT 20002 THE JMP *-2 STRING DEF DESC ON TTY L41 DEC -72 SKP L42 LDA NMBR,I FREE-FIELD NUMBERS SSA OR ASCII CHAR? JMP ALPHA ASCII JSB CHECK WAIT FOR TTY TO FINISH LDA NMBR,I IS IT SZA,RSS REAL? JMP REAL YES CLA \\\\\\\\\\\\\ CLB,INB \ JSB .DIO. \ DEFST DEF DESC \ OCT 0 CALL FOR \ DEF L43 INTEGER / LDA NMBR,I CONVERSION / LDB P1 / JSB .IAR. / L43 JMP READ4,I ///////////// REAL LDA D.DIO GET ADDRESS OF RAL,CLE,SLA,ERA INPUT POINTER LDA A,I IN .IOC. ADA TWLVE LDA A,I SET POINTER AND B1777 TO LOCATION LDA A,I OF NEXT INA NUMBaER IN ARS STRING AND STA LOCAT STORE IN CALL LDA A,I IS FIRST AND UPPER CHARACTER CPA COMNL A COMMA? RSS YES JMP *+4 NO LDA LOCAT,I REMOVE AND B377 COMMA AND STA LOCAT,I REPLACE CHAR. CLA SET UP CALL CLB,INB TO CONVERT JSB .DIO. REAL NUMBER LOCAT NOP OCT 0 DEF L44 JSB .IOR. DST P1,I L44 JMP READ4,I SPC 1 D.DIO DEF .DIO. ALPHA LDA DESC MOVE ASCII CHARACTERS STA P1,I INTO PROPER STORAGE JMP READ4,I SPC 2 ****************** * * * END OF READX * * * ****************** HED 2313B VERIF -- CODE PROCEDURES -- GNCHK 8/22/73 **************************************** * * * GNCHK -- TEST FOR VALID LLMPX GAIN * * * **************************************** SPC 1 * THIS ROUTINE CHECKS FOR ONE OF * EIGHT VALID LLMPX GAINS * AND RETURNS THE CORRESPONDING * GAIN CODE TO THE ALGOL SPC 2 ORB IGAIN NOP RGAIN NOP SPC 1 GNCHK NOP JSB .ENTR DEF IGAIN SPC 2 DLD RGAIN,I SSA,RSS NEGATIVE GAIN? JMP AHEAD NO POSITIVE CCA YES - SET UP ABORT COND. OUT STA IGAIN,I JMP GNCHK,I AHEAD CPA G1000 HIGH GAIN MANTISSA? JMP HIGH YES CHECK EXPONENT CPA G100 NO - LO GAIN MANTISSA? JMP LOW YES-CHECK EXPONENT RMR LDA B8 NO SET UP FOR JMP OUT INVALID # LOW LDA B4 INITIALIZE STA GNCOD GAIN CODE AND LDA B16 EXPONENTS FOR JMP CTUE LOW GAIN HIGH CLA INITIALIZE STA GNCOD FOR HIGH LDA B24 GAIN CTUE JSB CMPR \\\\\\\\\\,\\\\ JSB CMPR TRY TO MATCH \ JSB CMPR EXPONENTS / JSB CMPR ////////////// JMP RMR NO MATCH DWG LDA GNCOD MATCH FOUND- SET JMP OUT UP VALID RETURN SPC 2 CMPR NOP HAVE WE FOUND CPB A THE RIGHT EXPONENT? JMP DWG YES ISZ GNCOD NO- PREPARE FOR ADA MIN2 NEXT TIME JMP CMPR,I SPC 1 * ** END OF GNCHK ** HED 2313B VERIF -- CODE PROCEDURES -- CONSTANTS, ETC *************************************** * * * CONSTANTS, STORAGE, MESSAGES, ETC * * * *************************************** SPC 1 * ** CONSTANTS ** SPC 1 A EQU 0 AB ASC 1,AB INTRP ALL OCT 101 INTRP ALSX ALS,ALS DSPLY/HISTO ASTER OCT 25000 INTRP SPC 1 B EQU 1 BA ASC 1,TA INTRP B4 OCT 4 GNCHK B8 DEC 8 GNCHK B11 OCT 11 INTRP,CNFGR B16 OCT 16 GNCHK B24 OCT 24 GNCHK B62 OCT 62 DSPLY/HISTO B67 OCT 67 SCHK B77 OCT 77 CNFGR B377 OCT 377 INTRP B400 OCT 400 INTRP,CNFGR B500 OCT 500 CNFGR B1513 OCT 120000 DSPLY/HISTO B1777 OCT 1777 READX B9B11 OCT 5000 CNFGR B4600 OCT 4600 CNFGR BIT12 OCT 10000 DSPLY/HISTO BIT14 OCT 40000 READX BIGST OCT 77777 FMTER BK OCT 113 INTRP ASC(NULL K) SPC 1 CL ASC 1,CL INTRP CLEAN OCT 120000 DSPLY/HISTO CMND ASC 1,>_ INTRP CO ASC 1,CO INTRP COMMA ASC 1,,, READX COMNL OCT 26000 READX SPC 1 D OCT 104 INTRP ASC(NULL D) D20 DEC 20 DSPLY/HISTO DEFIO DEF .DTA. CNFGR DEVYC OCT 1 INTRP,CNFGR DMES1 DEF MES1 CNFGR DMES2 DEF MES2 CNFGR SPC 1 FEXT ASC 8, EXT STRT/STP? _ I0NTRP FIVE OCT 5 INTRP,CNFGR FMT3 ASC 4,(K6) GETIT FOR1 ASC 9,(" AVG="F10.6"_") STATPAC FOR2 ASC 24,(" PP="F10.6" HI="F10.6" LO="F10.6" RMS="F10.8) SKP * ** CONSTANTS, CONT. ** SPC 1 G OCT 107 INTRP (ASC NULL-G) G100 OCT 62000 GNCHK G1000 OCT 76400 GNCHK SPC 1 IASC DEF NO INTRP INTTY OCT 140000 EXIT SPC 1 L OCT 114 INTRP (ASC NULL-L) LDAX LDA N.16 DSPLY LDAY LDA N.4 DSPLY SPC 1 MES1 OCT 6412 CNFGR ASC 10, 2313 SELECT CODE= _ CNFGR MES2 ASC 12, TAPE-RDR SELECT CODE= _ CNFGR MIN1 OCT -1 INTRP,DSPLY/HISTO,FRST MIN2 OCT -2 GNCHK ML1 DEC 11 CNFGR ML2 DEC 12 CNFGR MSG2 ASC 8, PERIOD,MULT= _ INTRP MSG3 ASC 5, BX,CD= _ INTRP MSG4 ASC 3, COND: INTRP MSG6 ASC 7, BX,CD,GAIN= _ INTRP MSG7 ASC 5, DELAY= _ INTRP SPC 1 NB10 OCT -10 INTRP,SCHK NB12 OCT -12 INTRP NB14 OCT -14 INTRP NB400 OCT -400 INTRP NE ASC 1,NE INTRP N.4 DEC -4 DSPLY/HISTO N.16 DEC -16 DSPLY/HISTO N.200 DEC -200 DELAY SPC 1 OTAX OTA 0 CNFGR SPC 1 P OCT 120 INTRP (ASC NULL-P) PACWD OCT 64000 DSPLY/HISTO PARAM DEF WHERE INTRP SPC 1 R OCT 122 INTRP (ASC, NULL-R) REDIT OCT 10401 READX RSSH OCT 3740 ISSUE SPC 1 SFSX SFS 0 CNFGR SIX OCT 6 ADDRS SPACE OCT 20000 INTRP SQTAD DEF .SQT. ADDRS SSSH OCT 7740 ISSUE SKP * ** CONSTANTS, CONT. ** SPC 1 T OCT 52000 INTRP (ASC T-NULL) TEST OCT 52525 CNVRT TEST2 DEC -10000 DSPLY/HISTO THREE OCT 3 CNFGR TTYIN DEF I.EX EXIT TTY EQU 12B EXIT TWLVE OCT 12 READX TWO OCT 2 INTRP,STATPAC,CNFGR TY̌ ASC 1,KE INTRP SPC 1 UPPER OCT 177400 INTRP,READX SPC 1 WRONG ASC 2, ?? ERROR SPC 1 XL2 DEF FGAIN CNVRT XL3 DEF SGAIN CNVRT SPC 1 YES ASC 1,YE INTRP,DESCR SPC 1 .005 DEC .005 CNVRT .2313 EQU 11B SPC 2 * ** INTRP SPECIAL CONSTANTS ** SPC 1 NO ASC 1,NO \ LI ASC 1,LI \ RE ASC 1,RE \ ASC 1,DI \ ASC 1,HI \ DO NOT SE ASC 1,SE / RE-ARRANGE ASC 1,SS / ASC 1,IN / ASC 1,TW / ASC 1,SI / SKP * ** STORAGE ** SPC 2 * WARNING-DO NOT REARRANGE THE ORDER OF PIN1 THRU PNTR1 SPC 2 ABRT NOP INTRP,CNFGR,FRST SPC 1 CNTR EQU ADDRS INTRP, DESCR CNTR1 NOP INTRP SPC 1 DELC NOP INTRP,DELAY SPC 1 LBL3 NOP CNFGR,INTRP SPC 1 MEAN EQU MSG5 STATPAC SPC 1 NUM EQU K STATPAC SPC 1 PIN1 NOP INTRP PIN NOP INTRP,DESCR OUTBF NOP \ INTRP, DESCR PNTR OCT 57400 INTRP, DSPLY/HISTO, HCHK, READX PNTR1 NOP INTRP SPC 1 QUOT EQU ATEST STATPAC SPC 1 REMDR EQU FROM STATPAC RMS EQU SGAIN STATPAC SPC 1 SC NOP EXIT, DSPLY/HISTO, CNFGR STEP EQU J STATPAC SPC 1 TAD NOP CNFGR TCC NOP CNFGR,EXIT TOTAL EQU FGAIN STATPAC TSC NOP CNFGR TTY11 NOP CNFGR TTYL NOP EXIT,CNFGR TTYLC NOP EXIT,CNFGR TTYSC NOP CNFGR SPC 3 **************************** * * * END OF CODE PROCEDURES * * * **************************** SPC 1 END GHFBBH /,\ 02607-18004 1538 S 0122 2607A LINE PRINTER 24K SIO DRIVER             H0101 0ASMB,A,B,L,T,C HED 24K SIO HP2607 LINE PRINTER DRIVER * CALLING SEQUENCE: * * JSB 102B,I * * AND ENTER WITH; * * (A) = VERTICAL FORMAT CODE (-1 TO -4) * * OR * * (A) = LENGTH OF BUFFER IN CHARACTERS AND * (B) = ADDRESS OF BUFFER * * MAXIMUM LINE LENGTH: 132 CHARACTERS - ONLY THE FIRST * 132 CHARACTERS IN THE BUFFER WILL BE PRINTED IF MORE * THAN 132 CHARACTERS ARE REQUESTED. * * VERTICAL FORMAT CODES CORRESPOND TO VERTICAL FORMAT * CONTROL TAPE CHANNELS ON THE PRINTER. THE STANDARD * CHANNEL ASSIGNMENTS ARE AS FOLLOWS: * * CODE TAPE CHANNEL FUNCTION * ---- ------------ -------- * 0 0 SINGLE SPACE * -1 1 SKIP TO TOP OF NEXT PAGE * -2 2 SKIP TO NEXT HALF PAGE * -3 3 SKIP TO NEXT QUARTER PAGE * -4 4 SKIP TO NEXT SIXTH PAGE * * NOTE THAT A BUFFER LENGTH OF 0 FORCES A LINE FEED * * VERTICAL FORMAT COMMANDS <-4 ARE IGNORED. * ORG 00002B JMP 3,I DEF LINE INITIALIZATION LOCATION * ORG 102B DEF LINEP * KCORE EQU 50000B 24K SKP ORG KCORE+06000B SPC 1 LINE LIA 1 READ IN CHANNEL ADDRESS FROM AND .77 SWITCH REGISTER AND STA 1 STORE IN B LDA L7 FORM OTA CH AND .1777 IOR 1 AND STA L.7 STORE LDA L8 FORM STC CH,C AND .1777 IOR 1 AND STA L.8 STORE LDA L9 FORM SFS CH AND .1777 IOR 1 AND STA L.9 STORE &J HLT 77B HLT JMP LINE SPC 2 .77 OCT 77 .1777 OCT 177700 L7 OTA 0 L8 STC 0,C L9 SFS 0 SKP ORG 00106B ABS KCORE+07404B SPC 2 ORG KCORE+07557B SPC 1 LINEP NOP ENTRY/EXIT CMA,INA FORM NEGATIVE CHAR COUNT OR POS FORMAT CONT # STA CCT SAVE NEGATIVE CHARACTER COUNT OR VERT FORMAT COMMAND SSA,RSS CHECK MODE JMP VFC (A) ZERO OR POSITIVE IS VERT FORMAT COMMAND ADA C132 CHECK FOR CHARACTER COUNT >132 SSA,RSS JMP L.2 LINE LENGTH OK LDA CM132 LINE TOO LONG - SET TO 132 CHARS JMP LINEP+2 SPC 1 L.1 LDB B,I FETCH NEXT LEVEL L.2 RBL,CLE,SLB,ERB IS BUFFER ADDRESS INDIRECT? JMP L.1 YES: FETCH ADDRESS L.3 LDA B,I PICK UP WORD FROM BUFFER SEZ,RSS UPPER CHARACTER? ALF,ALF YES - EXCHANGE CHARACTERS ELB SAVE CHARACTER ADDRESS IN B AND C377 MASK OFF UPPER CHARACTER JSB PRINT OUTPUT TO PRINTER BUFFER INB INCREMENT CHARACTER ADDRESS CLE,ERB AND CONVERT TO BUFFER ADDRESS AND UPPER/LOWER FLAG ISZ CCT INCREMENT AND TEST CHARACTER COUNT JMP L.3 FETCH NEXT CHARACTER * LDA EOM LOAD END OF MESSAGE CODE * JSB PRINT AND OUTPUT TO PRINTER LDA EOM LOAD SINGLE SPACE COMMAND L.5 JSB PRINT AND OUTPUT TO PRINTER JMP LINEP,I RETURN SPC 2 VFC SZA,RSS JMP L.5-1 STA B ADA C.71 CPB DEC1 LDA C.77 ADB M.5 SSB JMP L.5 JMP LINEP,I SPC 2 PRINT NOP ROUTINE TO TRANSMIT CHARACTER OR COMMAND TO PRINTER L.7 OTA 0 OUTPUT CHARACTER L.8 STC 0,C L.9 SFS 0 CHECK IF CHARACTER OUTPUT COMPLE JMP *-1 NO--SO WAIT JMP PRINT,I YES--SO RETURN SPC 2 * CONSTANTS AND MASKS SPC 1 C132 DEC 132 [ MAX CHARACTER COUNT C377 OCT 377 CHARACTER MASK C.71 OCT 100103 EOM OCT 100102 C.77 OCT 100100 CM132 DEC -132 SETS CHAR MAXIMUM TO 132 M.5 DEC -5 DEC1 DEC 1 SPC 2 * TEMPORARY STORAGE * CCT NOP COLUMN COUNT OR PRINTER CHANNEL SELECT SPC 2 * ASSEMBLY PARAMETERS SPC 1 B EQU 1 LOCATION OF B REGISTER SPC 1 END  08 02608-18001 2026 S C0122 &2608 SOURCE CODE 2608 DIAG.             H0101 lASMB,A,L,C,B ORG 0 SUP * * 2608A DIAGNOSTIC 04/30/80 3:00 PM * PART NUMBER 02608-16001 DATE CODE =2026 * * MINIMUM FIRMWARE ID CODE = 12 * DSN IS 105105 * * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * BIT 6: CLEAR = 6 LPI * SET = 8 LPI * BIT 7: CLEAR = 26099A INTERFACE * SET = 59310B INTERFACE * BIT 8: (59310B ONLY) * CLEAR = CR, LF, FF DISABLED * SET = CR, LF, FF ENABLED * BIT 10: (59310B ONLY) * CLEAR = PARITY ENABLED * SET = PARITY DISABLED * BITS 11-15 (59310B ONLY) * HP-IB ADDRESS IN SWITCHES OF REAR PANEL * OF PRINTER * E. PRESS RUN AND WAIT FOR HALTS 106000, 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * * 0 TO 7 = DIAGNOSTIC OPTIONS * BIT 7 = PROGRAMMATICALLY INSTALL A VFC DEFINITION * THAT IS IDENTICAL TO THE STANDARD 2608A * 6 LPI VFC * BIT 1-6 = RESERVED * BIT 0 = SELECT NEW PRIMARY LANGUABGE AT END OF * PASS. THIS BIT IS CLEARED FOLLOWING * EACH CHANGE OR ATTEMPTED CHANGE * OF THE PRIMARY LANGUAGE. * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A & B = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ! ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSU+S 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE WITH HALT SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE ERMC DEF ZERMC ERROR MESSAGE WITHOUT HALT NOP RESERVED NOP RESERVED HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF CLE LDA DSNL A = DIAGNOSTIC SERIAL NUMBER LDB FRBX B = BUFFER ADDRESS JSB 124B,I MAKE CONVERSION TO ASCII LDA FRMWR COMMAND TO READBACK FIRMWARE NUMBER JSB STR,I LIA FIRMWARE ID NUMBER STA FRMID LDB FRBXY ADDRESS TO STORE NUMBER FOR MESSAGE CCE JSB I2AS,I CONVERT TO DECIMAL ASCII AND STORE JSB MSGC,I OUT PUT IT DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LIA SW CLEAR BIT 9 AND MSKS OTA SW NOP LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM NOP NOP NOP LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST  ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS * SELECT LANGUAGES 6/8 LPI SETTINGS AND NORMAL MODE * BEFORE EVERY TEST EXCEPT BASIC I/O CPA TSTP,I BASIC I/O TEST? JMP ZTCHL YES - BYPASS SETUP LDA INPLG DEFAULT OR OPER SELECT PRIM JSB CMNDP LDA LPI68 6/8 LPI OPERATOR SELECTION JSB CMNDP LDA SPRNT NORMAL MODE JSB CMNDP ZTCHL CLA SET SUBTEST AND DATA BYTE CODE TO 0 STA SUB INA STA CODN JSB ZITCH INITILIZE TRAP CELL HALTS LDA TSTN ADA DM2 SSA JMP DUTST LDA TSTN LDB ZTEST CLE JSB 123B,I DUTST JSB ZTSTA,I GO DO TEST LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDB .1 IS OPER REQ'ING MOD TO LANG? JSB SWRT,I YES IF BIT0 =1 JSB LANG,I P+1 RETURN IS REQ FOR LANG MOD LDA ZTSTA NO - CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB I2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,Iw* JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITHOUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * ERROR MESSAGE WITHOUT HALT * ZERMC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK JMP ZERMC,I RETURN TO CALLER SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB "AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT LDB ZTSTN CCE JSB I2AS,I CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 Z.400 OCT 400 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 9,TEST XXXXX DEC/ ZTSTN DEF ZTSTF+3 ZRTLF ASC 1,// ZPSC ASC 8,PASS XXXXXX DEC/ ZA.E OCT 105 CH EQU 10B HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO  SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS JSB ZLNCT SET UP #  LINES PER INCH CLA CLEAR OTA 1 SWITCH REG HLT 74B ALLOW OPERATOR TO CHANGE SWITCH REG JSB STFRM POSITION FORM FOR PRINTED TESTS * INSTALL DEFAULT PRIM AND SEC LANGUAGES LDA LNGCW ALWAYS START WITH P=0 AND S=2 STA INPLG CURRENT LANGUAGE JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * SET UP S-REGISTER OPTIONS * ZLNCT NOP LDA USSC PICK UP SW OPTIONS AND Z.100 BIT6 = 6/8 LPI SZA A=0 IF OPER REQ'D 6 LPI JMP ZLN8 NOT 0 SO 8 LPI LDA IN6LP CW FOR SELECT 6 LPI RSS ZLN8 LDA IN8LP CW FOR SELECT 8 LPI STA LPI68 SAVE PROPER CW AS A FLAG LDB DT1 GET ADDR OF TABLE FOR VFU TEST ADB .2 STEP DOWN 2 IN TABLE CPA IN6LP 6 LPI ? JMP ZSIXL YES * 8 LINES PER INCH LDA D16 SS 16 LINES STA B,I PUT IN TABLE FOR VFU TEST 05 INB INCREMENT TABLE POINTER LDA D8 DS 8 TIMES STA B,I INB LDA .4 TS 4 TIMES STA B,I ADB .3 STEP DOWN 3 IN TABLE LDA .4 EP 4 TIMES STA B,I LDA ETH CHANGE MESSAGE TO EP (1/8) JMP ZMSGU * 6 LINES PER INCH ZSIXL LDA D12 SS 12 LINES STA B,I PUT IN TABLE FOR VFU TEST 05 INB INCREMENT TABLE POINTER LDA .6 DS 6 TIMES STA B,I INB LDA .3 TS 3 TIMES STA B,I ADB .3 STEP DOWN 3 IN TABLE LDA .3 SP 3 TIMES STA B,I LDA STH CHANGE MESSAGE TO SP (1/6) ZMSGU STA MSG8X,I LDA USSC AND Z.200 EXTRACT BIT 7 = I/O TYPE FLAG STA HPIB 0 = PARALLEL 200B = HPIB SZA,RSS IF PARALLEL, RETURN JMP ZLNCT,I LDA USSC BITS 11-15 = HP-IB ADDR ALF,RAL MOVE TO BITS 0-4 JSB ADPAR ADD PARITY & STORE HP-IB ADDRESS LDA USSC MASK AND SAVE CONTROL CHAR STRAP AND Z.400 POSITION ( BIT 8) STA CTLCH LDA USSC MASK, SAVE PARITY STRAP POSITION AND EXP6 (BIT 10) SZA 0=PARITY ENABLED CLA,INA 1=PARITY DISABLED STA PARTY JMP ZLNCT,I RETURN * ETH ASC 1,EP EIGHTH PAGE STH ASC 1,SP SIXTH PAGE MSG8X DEF MSG08 HED BASIC I/O TESTS TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS CLA INSURE OUTPUT REG IS NOT PRINT COMMAND ZBS20 OTA CH * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF CLA,INA WAIT 1 MS FOR INTERRUPT JSB TMRR,I ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZB11 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 ZB11 DEF ZBE11+5 SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * SKP ZBIOD DEF *+1 DEF ZBS20 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * HED HP2608 LINE PRINTER DIAGNOSTIC ORG 126B DSN OCT 105105 DIAGNOSTIC SERIAL NUMBER (REFERENCED BY ERS) SPC 2 ORG 137B FRMID NOP 2608A FIRMWARE ID (REFERENCED BY ERS) IOIP DEF IOID TSTP DEF TSTD STDA OCT 177777 16 OF THE 18 TESTS STDB OCT 3 16 + 2 = THE 18 TESTS SPC 2 ORG 150B * * OCTAL CONSTANTS * .1 OCT 1 .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .7 OCT 7 .10 OCT 10 .11 OCT 11 .12 OCT 12 .13 OCT 13 .14 OCT 14 .15 OCT 15 .16 OCT 16 .17 OCT 17 .20 OCT 20 .37 OCT 37 .40 OCT 40 .57 OCT 57 .70 OCT 70 .100 OCT 100 .177 OCT 177 .200 OCT 200 .201 OCT 201 .204 OCT 204 .377 OCT 377 .400 OCT 400 * * DECIMAL CONSTANTS * D8 EQU .10 D9 EQU .11 D11 EQU .13 D12 EQU .14 D16 EQU .20 D21 DEC 21 D23 DEC 23 D32 EQU .40 D64 EQU .100 D96 DEC 96 * * NEGATIVE CONSTANTS * DM1 DEC -1 DM2 DEC -2 DM3 DEC -3 DM4 DEC -4 DM5 DEC -5 DM6 DEC -6 DM7 DEC -7 DM8 DEC -8 DM9 DEC -9 DM12 DEC -12 DM16 DEC -16 DM20 DEC -20 DM33 DEC -33 DM60 DEC -60 DM66 DEC -66 DM78 DEC -78 DM99 DEC -99 DM116 DEC -116 DM127 DEC -127 DM132 DEC -132 DM136 DEC -136 DM180 DEC -180 DM200 DEC -200 DM690 DEC -690 DM3K DEC -3000 * * IB DRIVER CONSTANTS AND STORAGE * UN OCT 237 IRL OCT 40000 ORA OCT 20000 WORD OCT 4000 DMAIN OCT 2000 BYTE EQU .200 CLST OCT 110 CTLK OCT 120 MLA EQU .40 MTA EQU .100 SCG EQU D96 IB.TO EQU .12 MLTA NOP INOUT NOP WCNT NOP INC NOP DMAX NOP TRANS NOP OSAV NOP SMASK NOP IBSTA NOP * * CHARACTER DEFINITONS * R/ OCT 51057 R; OCT 51073 BS EQU .10 LF OCT 4012 FMFD OCT 4014 CR OCT 4015 SO EQU .16 SI EQU .17 f UNDR OCT 137 CHARA OCT 101 CHARC OCT 103 CHARO OCT 117 CHARI OCT 111 CHART OCT 124 CHARX OCT 130 CHAR# OCT 43 CHAR] OCT 135 CHARM OCT 115 CHAR/ EQU .57 CHAR\ OCT 134 * * 2608 COMMANDS (WITH PARITY FOR HPIB IN BIT 11) * VF0X OCT 100200 VF2X OCT 100202 VF8X OCT 100210 VF11X OCT 100213 VF15X OCT 100216 SL00 OCT 100000 SL01 OCT 100001 SL02 OCT 100002 SL03 OCT 100003 ONLIN OCT 034001 OFLIN OCT 034000 IN6LP EQU ORA 6 LPI CONTROL WORD IN8LP OCT 020200 8 LPI CONTROL WORD LPI68 NOP INIT TO CW FOR 6 OR 8 LPI SWVFC OCT 020102 FRBCW OCT 124000 STATUS READ CONTROL WORD CLBUF OCT 070000 CLEAR BUFFER COMMAND VFCIN OCT 020201 CWD FOR VFC INITIALIZE SLFTS OCT 040001 CWD FOR SELF TEST W/0 PRINTING MASTR OCT 054000 CWD FOR MASTER CLEAR TRAN0 OCT 130020 CWD FOR TRANSPARENT STD PRINT MODE TRAN1 OCT 130021 CWD FOR TRANSPARENT DOUBLE SIZE INPLG NOP CURRENT PRIMARY LANGUAGE CW LNGCW OCT 010000 CW FOR LANGUAGE SELECTION SPRNT OCT 130000 STANDARD SIZE PRINT MODE DPRNT OCT 130001 DOUBLE SIZE PRINT MODE GPRNT OCT 130002 GRAPHICS PRINT MODE MSKS OCT 176777 ROMCW OCT 124200 CWD FOR ASCII CHAR READ BACK PING OCT 064000 CWD FOR PING STAT OCT 212 DSJ EQU .20 DVCLR EQU .20 PONG OCT 206 IBSLF EQU .37 IBPNG OCT 236 SPE OCT 370 CWD FOR SERIAL POLL ENABLE SPD OCT 171 CWD FOR SERIAL POLL DISABLE IBDAT EQU .200 * * STATUS READ DATA ADDRESSES * IO EQU .1 DSPLY EQU .2 PMODE EQU .3 PRSC EQU .4 SLF EQU .5 DR6 EQU .6 LC6 EQU .7 LC8 EQU .12 FRMWR EQU .14 POWUP EQU .20 * * EXPECTED STATUS DEFINITIONS * EX1 OCT 177777 EX2 OCT 176631 EX3 OCT 176630 EX4 OCT 176430 EX6 OCT 177401 EX7 OCT 176634 EX8 OCT 176644 EX10 OCT 177400 EX11 EQU DMAIN EX12 OCT 2004 EX16 OCT 175002 EX17 OCT 175200 EX18 OCT 175020 EX19 OCT 176434 EX20 OCT 6000 EX21 OCT 20001 * * OTHER CONSTANT DEFINITONS * 1HIBY6 OCT 33040 HIBY8 OCT 34040 LBY60 OCT 020060 SR OCT 030060 TIMEA DEC 540 TIMEB DEC -1400 TIMEP DEC -1500 RDYST OCT 301 BTCK OCT 10400 NBYTE DEC -1153 MSK2 OCT 077400 MSK3 EQU EX10 SW4 EQU .20 SW14 EQU IRL EXP6 EQU DMAIN SKP * * STORAGE LOCATIONS * TSTNN OCT 2000 BITS NOP CODN NOP SB NOP BTCNT NOP RD NOP X2FLG NOP 2X SIZE PRINT WHEN SET CHAR NOP TMP NOP HPIB NOP BIT 7: 0 = PARALLEL; 1 = HP-IB CTLCH NOP PARTY NOP ACT NOP ACTUAL STATUS EXP NOP EXPECTED STATUS TSTN NOP TEST NUMBER (REFERENCED BY ERS) SUB NOP SUBTEST NUM ( " " ) PPFLG NOP EVFC NOP STOR NOP PITB NOP EXCT NOP EXPN NOP SWOVR NOP IF 0 THEN STANDARD VFC TEST IBCMD NOP PLTA NOP DEVICE ADDRESS (WITH PARITY) NPLTA NOP DEVICE ADDRESS (WITHOUT PARITY) SV0 NOP SV1 NOP SV2 NOP SV3 NOP SV4 NOP SV5 NOP SV6 NOP SV7 NOP SV8 NOP SV9 NOP SV10 NOP SV11 NOP SV12 NOP SV13 NOP SV14 NOP SV15 NOP SV16 NOP SV17 NOP SV18 NOP SV19 NOP SV20 NOP SV21 NOP SV22 NOP SV23 NOP SV24 NOP SV25 NOP SV26 NOP SV27 NOP SV28 NOP SV29 NOP SV30 NOP SV31 NOP SV32 NOP SV33 NOP SV34 NOP SV35 NOP SV36 NOP CNT1 NOP CNT2 NOP CNT3 NOP CNT4 NOP CNT5 NOP CNT6 NOP CNT7 NOP TM1 NOP TM2 NOP TM3 NOP TM4 NOP TM5 NOP TM6 NOP SKP * * DEFINITIONS * SOFTV DEF SOFT1 DT2E DEF VFU9 FRBX DEF HDMS+18 FRBXY DEF HDMS+33 INCR DEF INCRL LANG DEF LANGX RDY DEF RDYI DT1 DEF TBL1 DT2 DEF TBL2 DT3 DEF TBL3 LIAC DEF LIACH STR DEF STRD ACVAL DEF AVAL SUBM1 DEF SUBM+4 SUBM2 DEF M54+16 IOSUB DEF M54+10 DSCR DEF DSCRP TOFC DEF TOFCK DMAR DEF DMART STABA DEF STAB MSTAB DEF MTABL LNGXP DEF LNGX LNGXB DEF LNGX+8 PRSEC DEF MCT11+15 PRIMX DEF MCT11+19 BINTB DEF BNTAB LPI DEF MCT12+14 M66 DEF MS66+18 M66T DEF MS66T DEV DEF M124+6 CKS DEF CKST CONV DEF CONVR VER DEF VERIF EXB DEF EXTB ZTEST DEF TSTMS+2 TSTX DEF TSTMS M104A DEF M104+9 HDSSX DEF HDSS HDSUB DEF HDSS+9 SKP * POSITION FORM TO TOF-2 FOR PRINTED TESTS * STFRM NOP STA SV0 STORE A REGISTER JSB MSGH,I TELL OPERATOR TO ALIGN TOF DEF M100 LDA MASTR MASTER CLEAR DEFINES TOF JSB CMNDP LDA VF8X ALIGN PAPER TO TOF-2 JSB CMNDP JSB FF LDA SV0 RESTORE A REGISTER JMP STFRM,I RETURN * SPC 2 * PUT CYCLIC PATTERN IN BUFFER * CYBFI NOP LDB CYBFD SET POINTER STB CYBFT TO CYCLIC BUFFER LDB DM132 GET MAX BUFFER COUNT STB SV35 STA CYLC CYBFK CPA NONPR STRIP OUT ANY ONE CHARACTER INA STA CYBFT,I STORE CHARACTER INA MOVE TO NEXT CHARACTER CPA .200 IS IT LAST CHR? LDA STCHR YES - RESTART SEQUENCE ISZ CYBFT MOVE POINTER ISZ SV35 DONE WITH 132 CHARACTERS? JMP CYBFK NO CLB STB NONPR SET NON-PRINTING CHARACTER TO NULL CODE STB STCHR AND SET STARTING CHARACTER TO SAME JMP CYBFI,I RETURN CYBFT NOP CYLC OCT 0 CYBFD DEF FWAA STCHR OCT 0 NONPR OCT 0 SKP * * THIS IS THE PHYSICAL DRIVER FOR HPIB * * ROUTINE LISTEN USED TO ISSUE LISTEN REQUEST TO HPIB DEVICE. * THE ROUTINE RETURNS WITH THE BUS SET TO DATA MODE, DEVICE * SET TO LISTEN MODE, AND PCA SET TO TALK. ALL TRANSFERS ARE * FLAGGED BY THE OUTPUT REGISTER ACCEPTED INTERUPT. * * ROUTINE TALK USED TO ISSUE TALK REQUEST TO HPIB DEVICE. * THE ROUTINE RETURNS WITH THE BUS SET TO DATA MODE, DEVICE SET TO * TALK MODE, AND PCA SET TO LISTEN. ALL TRANSFERS ARE FLAGGED * BY THE INPUT REGISTER LOADED INTERUPT. * * THE MODES OF TRANSFER ARE INDICATED BY THE CONTENTS OF THE * A REGISTER: * A=1 BYTE TRANSFER RECEIVE INTERUPT ON EACH * A=2 WORD TRANSFER RECEIVE INTERUPT ON EACH * A=3 DMA TRANSFER ENABLE DMA EXECUTION * * CALLING SEQUENCE FOR HP-IB * * JSB LSTN OR TALK * DEF *+N RETURN ADDRESS * DEF PLSTN DEVICE ADDRESS * DEF MYSEC1 DEVICE SECONDARY COMMAND 1 * DEF MYSEC2 DEVICE SECONDARY COMMAND 2 * TALK NOP ENTRY POINT FOR DEVICE TO TALK STA TRANS SAVE TYPE OF TRANSFER LDA CTLK GET ENABLE TALK COMMAND STA CMD4 AND PUT IT IN SLOT LDA MTA SET UP MY TALK ADDRESS STA MLTA COMMAND BITS LDA DMAIN SET UP DMA COMMAND STA DMAX FOR INPUT LDA IRL ENABLE INPUT REGISTER LOADED STA INOUT FLAG FOR INPUT. JMP TL0 SPC 1 LSTN NOP ENTRY POINT FOR DEVICE TO LISTEN STA TRANS SAVE TYPE OF TRANSFER LDA LSTN PUT RETURN ADDRESS STA TALK IN TALK RETURN LDA CLST GET ENABLE LISTEN COMMAND STA CMD4 AND PUT IT IN SLOT LDA MLA SET UP MY LISTEN STA MLTA ADDRESS COMMAND BITS CLA SET UP DMA COMMAND STA DMAX FOR OUTPUT LDA ORA ENABLE OUTPUT REGISTER ACCEPTED STA INOUT FLAG FOR OUTPUT SPC 1 TL0 JSB CMND OUTPUT A COMMAND CMD1 OCT 5 ACTIVATE CONTROLLER FUNCTION LDA SW4 CHECK STATUS LDB SW4 BIT 4 TO SEE JSB ISTAT IF CONTROLLER IS ACTIVE JSB CMND OUTPUT A COMMAND CMD2 OCT 20267 SET COMMAND MODE, INITIALIZE FLAGS LDA BYTE CHECK STATUS LDB BYTE BIT 7 TO SEE JSB ISTAT IF IN COMMAND MODE JSB UNADD DO UNIV UNTALK-UNLISTEN SPC 1 LDB TALK,I GET RETURN ADDRESS ISZ TALK MOVE ADDRESS P OINTER TO GET LDA TALK,I TALK/LISTEN ADDRESS LDA A,I IOR MLTA PUT ON MTA OR MLA BITS NOP DEBUG SLOT TL1 JSB OUTA OUTPUT TO DEVICE. ISZ TALK MOVE ADDRESS POINTER CPB TALK IF EQUAL TO RETURN ADDR JMP TL2 THEN DONE LDA TALK,I GET SECONDARY COMMAND LDA A,I XOR SCG ADD SECONDARY COMMAND BITS NOP DEBUG SLOT JMP TL1 SPC 1 TL2 LDA CMD4 GET COMMAND FOR DATA MODE IOR BYTE ASSUME BYTE TRANSFER FIRST LDB .2 IF TRANSFER TYPE CPB TRANS S A 2, ADD ON WORD BIT IOR WORD INB CPB TRANS IF EQUAL TO A 3, SET FOR DMA TRANSFER IOR DMAX SET FOR DMA TRANSFER IOR INOUT SET ORA OR IRL FLAGS STA CMD4 PUT COMMAND IN PLACE JSB CMND OUTPUT A COMMAND CMD4 NOP SET TO TALK OR LISTEN LDA MLTA CHECK STATUS TALK OR LISTEN BITS LDB MLTA JSB ISTAT FOR PROPER MODE NOP JMP TALK,I RETURN SKP SPC 1 CMND NOP ROUTINE TO ACTUALLY DUMP COMMAND TO 59310 STA CSAV SAVE REGISTER A CND1 STF CH SET BOARD TO COMMAND MODE LDA CMND,I GET PARAMETER CND2 OTA CH DUMP COMMAND NOP DEBUG SLOT ISZ CMND BUMP RETURN LDA CSAV RESTORE REGISTER A JMP CMND,I RETURN CSAV NOP SPC 1 * ROUTINE TO ISSUE CLEAR TO BOARD AND BUS. * UNADD NOP LDA MTA SEND UNIVERSAL UNTALK IOR UN JSB OUTA LDA MLA SEND UNIVERSAL UNLISTEN IOR UN JSB OUTA NOP JMP UNADD,I SKP * * ROUTINE TO INITIATE PARALLEL POLL AND RETURN * POLL RESULTS * POLL NOP ENTRY PP0 CLC CH,C CLEAR IFC FLAG JSB CMND DISABLE 310 DATA MODE OCT 100 JSB CMND OCT 70 REQUEST PARALLEL POL&cL LDA TIMEP TIME OUT SET TO 1.5 SECONDS LDB IBCMD CPB .4 IF COMMAND IS SELF TEST RSS - OR - CPB .37 HPIB SELF TEST LDA DM3K THEN SET TIME LIMIT TO 3 SEC STA TM1 PP1 STF CH GET CONTROL MODE PP2 LIA CH,C GET STATUS AND .17 BITS 0-3 MAY RESPOND TO POLL NOP CPA .11 IS RESPONSE FROM IFC? JMP PP5 YES, REPORT ERROR AND EXIT TEST NOP SZA A CLEAR IF NO RESPONSE JMP PP3 INA DO 1 MS DELAY BEFORE NEXT POLL JSB TMRR,I ISZ TM1 DONE WITH 1000 MS? JMP PP1 LDB IBCMD CPB .4 IF COMMAND WAS SELF TEST RSS CPB .37 OR HPIB SELF TEST JMP PP6 THEN JUMP NOP E106 JSB ERMS,I REPORT FAILURE TO RESPOND TO POLL DEF M106 JMP PP0 TRY AGAIN NOP PP3 ADA DM1 CONVERT POLL RESPONSE TO DEV ADDR CMA AND .7 JSB CMND RETURN 59310B TO DATA MODE OCT 40 CPA NPLTA DID PROPER DEVICE RESPOND? JMP POLL,I YES--RETURN STA ACT JSB CONV,I CONVERT ADDR OF RESPONDING DEV STA M104A,I LDA ACT JSB MSGH,I TELL OPERATOR RESPONDING DEV SHOULD DEF M104 BE TAKEN OFF LINE TO CONTINUE TESTING NOP JMP PP0 TRY AGAIN FOR CORRECT RESPONSE NOP PP5 JSB ERMS,I DEF M137 JMP TSTNN,I EXIT TEST PP6 JSB CMND RETURN 59310B TO DATA MODE OCT 40 JMP POLL,I LET CALLING ROUTINE HANDLE ERROR SKP SPC 1 * * ROUTINE TO PERFORM SERIAL POLL * * RETURNS TO P+1 IF RESPONSE WAS POSITIVE * RETURNS TO P+2 IF RESPONSE WAS NEGATIVE * SERPL NOP CLA,INA JSB LSTN ADDRESS PRINTER TO LISTEN DEF *+3 AND ENABLE SERIAL POLL DEF PLTA DEF SPE NOP CLA,INA JSB TALK  ADDRESS PRINTER TO TALK DEF *+2 DEF PLTA NOP LDA DM5 INITIAL TIME OUT VALUE LDB .1 JSB LIAC,I FETCH SERIAL POLL BYTE AND .100 MASK OFF RESPONSE BIT SZA,RSS IF NOT PRESENT, ISZ SERPL INCREMENT RETURN ADDRESS CLA,INA JSB LSTN DISABLE SERIAL POLL DEF *+3 DEF PLTA DEF SPD JSB RDSJ ENSURE 59310 DUMPS SER. POLL RESP JMP SERPL,I * * ROUTINE TO EVALUATE IB STATUS AFTER COMMAND CHANGE * * ASSUMES EXPECTED STATUS IS IN B REG WITH * DESIRED MASK VALUE IN VARIABLE SMASK. * RETURNS IF VALID STATUS -- FATAL HALT IF NOT * ISTAT NOP ENTRY STA SMASK SAVE STATUS MASK IS1 STF CH GET COMMAND MODE IS2 LIA CH GET STATUS WORD STA IBSTA NOP DEBUG SLOT AND SMASK SAVE DESIRED VALUES CPA B CHECK TO SEE IF VALID JMP ISTAT,I YES--RETURN LDA IBSTA NOP FOR DEVELOPMENT REPLACE WITH "HLT 0" JMP ISTAT,I * OUTA NOP STA OSAV STB BSAV1 LDB DM200 GET TIME OUT VALUE STB SV2 OA1 OTA CH,C DUMP DATA/COMMAND OA3 SFS CH IS IT ACCEPTED JMP TOUT NO--GO WAIT OA4 LDA OSAV RESTORE REG A LDB BSAV1 JMP OUTA,I RETURN BSAV1 NOP * TOUT CLA,INA GO WAIT 1 MS JSB TMRR,I ISZ SV2 JMP OA3 NOP FOR DEVELOPMENT REPLACE WITH "HLT 1" JSB ERMS,I REPORT HP-IB TIME OUT ON CMND DEF M107 NOP JMP OA4 SPC 2 * * ROUTINE TO FORCE ODD PARITY ON DEVICE ADDRESS * AND STORE WITH (PLTA) AND WITHOUT (NPLTA) PARITY * ADPAR NOP LDB DM4 INITIALIZE COUNTER STB CNT2 AND .37 EXTRACT 5 BITS OF ADDRESS STA NPLTA AND STORE WITHOUT PARITY STA B SUM RAR ADD (IN B) EACH OF THE 5 BITS ADB A G ISZ CNT2 DONE? JMP SUM NO ALF YES - REPLACE IN ORIGINAL POSITION ERB MOVE PARITY BIT TO "E" SEZ FORCE EVEN PARITY SO THAT WITH MLTA, IOR .200 PARITY BECOMES ODD STA PLTA STORE AWAY JMP ADPAR,I SKP LST * TOP OF FORM * FF NOP STA SV3 SAVE A-REG LDA LC8 JSB STR,I GET LINE PRINTER STATUS LDA STABA,I INA LDA A,I GET I/O STATUS AND .4 SZA JMP ELPI LDA LC6 SIX LPI SET UP LDB HP6 LINE COUNT FOR HALF PAGE MINUS 2 AT 6LPI STB SV4 LDB TF6M2 LINE COUNT FOR TOF MINUS 2 AT 6 LPI JMP GENFF ELPI LDA LC8 EIGHT LPI SET UP LDB HP8 LINE COUNT FOR HALF PAGE MINUS 2 AT 8 LPI STB SV4 LDB TF8M2 LINE COUNT FOR TOF MINUS 2 AT 8 LPI GENFF ADA STABA,I LDA A,I GET CURRENT LINE COUNT CMA,INA STA SV5 STORE NEGATIVE OF LINE COUNT ADA SV4 SUBTRACT LINE COUNT FROM HALF PAGE POSITION SSA,RSS IS LINE COUNT PAST HALF PAGE POINT? JMP OKFF NO LDA SV5 YES--SET UP TO GO TO TOF MINUS 2 ADA B SUBTRACT LINE COUNT FROM TOF MINUS 2 OKFF ADA SL00 ADD NUMBER OF LINES TO SLEW TO PRINT CMNDP JSB CMNDP LDA CLBUF ISSUE 2 OPERATION COMPLETE CMND TO JSB CMNDP INSURE ALL I/O DONE BEFORE EXIT LDA CLBUF JSB CMNDP FF IS FINISHED LDA SV3 RESTORE A-REG. JMP FF,I RETURN P+2 HP6 OCT 34 HALF PAGE MINUS 2 AT 6 LPI TF6M2 EQU .100 TOF MINUS 2 AT 6 LPI HP8 OCT 46 HALF PAGE MINUS 2 AT 6 LPI TF8M2 OCT 126 TOF MINUS 2 AT 8 LPI * * PRINT CURRENT LINE * * A & B ARE SAVED * * THE INTERRUPT SYSTEM IS NOT USED FOR PRINT * PRINT NOP STA SV6 LDA VF2X GET PRINT CMND JSB CMNDP OUTPUT THE COMMAND LDA SV6 RESTORE A JMP PRINT,I RETURN SPC 2 CMNDP NOP STB SV7 LDB HPIB IS THIS HPIB INTERFACE? SZB JMP IBYES YES JSB OTCH NO--EXECUTE AS FOR PARALLEL LDB SV7 RESTORE B REGISTER JMP CMNDP,I EXIT FOR PARALLEL NOP NOP IBYES STA SV8 SAVE A REGISTER ALF SEND COMMAND BYTE FIRST ELA,ARS PLACE PARITY BIT IN "E" AND .17 SAVE ONLY BITS 0-3 SEZ IF PARITY BIT WAS ON, IOR .200 THEN ADD PARITY BIT STA IBCMD NOP LDA SV8 CPA MASTR IF MASTER CLEAR, SKIP RDY CHECK RSS CPA ONLIN IF ON LINE, SKIP RDY CHECK RSS IBY1 JSB RDY,I RSS JMP IBY1 CLA,INA A=1 FOR BYTE TRANSMISSION JSB LSTN SEND COMMAND THRU DRIVER'S LSTN ROUTINE DEF *+3 RETURN ADDRESS DEF PLTA MY TALK, LISTEN ADDRESS DEF IBCMD COMMAND BYTE TO BE SENT TO LP LDA SV8 OUTPUT ASSOCIATED DATA BYTE OF AND .377 COMMAND THRU "OTA CH,C" NOP JSB OTIB NOP LDA SV8 CPA OFLIN IF COMMAND WAS "OFF LINE", JMP OFFSK SKIP POLL JSB POLL TRY PARALLEL POLL CLA,INA ADDRESS LP TO LISTEN JSB LSTN DEF *+3 RETURN ADDRESS DEF PLTA LP TALK,LISTEN ADDRESS DEF IBDAT NOP OFFSK LDB SV7 RESTORE B REGISTER LDA SV8 RESTORE A REGISTER JMP CMNDP,I EXIT COMMAND ROUTINE SKP SPC 2 * * THIS SUBROUTINE READS THE PRINTER'S DSJ RESPONSE AND * RETURNS WITH INFO IN A REGISTER * RDSJ NOP CLA,INA SEND DSJ COMMAND JSB TALK DEF *+3 DEF PLTA DEF DSJ LDA DM5 5 MS TIME LIMIT CLB,INB READ ONE BYTE (DSJ RESPONSE) JSB LIAC,I NOP D JMP RDSJ,I SPC 2 * THIS ROUTINE EXECUTES A STATUS READBACK OF DATA BYTE * IN "CODN" ON HPIB. STATUS IS RETURNED IN BITS 0-7 OF * THE A REGISTER. * IBST NOP CLA,INA JSB LSTN SEND STATUS COMMAND (12B) DEF *+3 DEF PLTA DEV ADDR DEF STAT NOP LDA CODN SEND STATUS DATA BYTE JSB OTIB NOP JSB POLL WAIT FOR POLL RESPONSE NOP CLA,INA LP IN TALK MODE JSB TALK DEF *+3 DEF PLTA DEV ADDR DEF STAT NOP LDB CODN LDA B ALF,ALF IF READ IS FOR DOT MATRIX SSA THEN READ ONLY THE FIRST DATA BYTE CLB,INB (I.E. THE CHAR SET CODE) LDA DM5 5 MS TIME LIMIT FOR FLAG TO SET JSB LIAC,I INPUT DATA NOP JMP IBST,I SKP * * THE A REGISTER IS OUTPUT TO THE LP BY "OTA CH,C". * OTIB NOP STB SV9 STA SV10 STORE OUTPUT TO PRINTER IBO1 OTA CH,C SEND INFORMATION TO LP LDA DM5 5 MS IS TIMEOUT FOR FLAG TO SET STA TM3 IBO2 SFS CH IS FLAG SET YET? JMP IBO3 NO TRY AGAIN LDB SV9 RESTORE B REGISTER JMP OTIB,I FLAG SET, SO RETURN IBO3 CLA,INA DO 1 MS WAIT AND CHECK FLAG AGAIN JSB TMRR,I ISZ TM3 DONE WAITING 5 MS? JMP IBO2 NO CHECK FLAG AGAIN CLA YES - LDB SV10 CPB DM1 WAS DATA = -1? JMP OTIB,I YES - RETURN WITH A REGISTER CLEAR JSB RDY,I NO - SEE IF LP ON LINE, READY JMP E030 LP READY & FLAG DIDNT' SET--ERROR LDA SV10 TRY OUTPUT AGAIN JMP IBO1 NOP SPC 2 * GET LP'S STATUS IN A REG STSIN NOP SIN LIA CH STA ACT JMP STSIN,I SPC 3 * OUTPUT A-REG TO L.P. USING INTERRUPT * SYSTEM FOR PRINT COMPLETED. OUTI NOP STA SV11Ń SAVE A-REG STB SV12 SAVE B-REG OUT2 LDB HPIB IS THIS HP-IB? SZB JMP OUT1 YES LDA TIMEA SET TIMEOUT FOR PARALLEL RSS OUT1 LDA .5 TIMEOUT FOR HPIB IS 5 MS STA TM4 LDA SV11 RESTORE DATA OUTIA OTA CH,C OUTPUT TO CH, CLEAR FLAG OUTIE CLC CH,C OUTIB STC CH,C STF 0 TURN ON INTERRUPT SYSTEM LDA TM4 DELAY APPROPRIATE TIME JSB TMRR,I CLF 0 TURN OFF INTERRUPT JSB RDY,I CHECK LP STATUS RSS IF LP IS ON LINE, REPORT NO INT JMP OUT2 ELSE, TRY OUTPUT AGAIN OUTID CLC CH,C JSB ERMS,I REPORT ERROR DEF MS031 CLC 0,C JSB FF JMP TSTNN,I EXIT CURRENT TEST SPC 1 OUTIC CLC CH,C TRANSMISSION COMPLETED CLF 0 LDA SV11 RESTORE A-REG LDB SV12 RESTOR B-REG JMP OUTI,I RETURN * * * OUTPUT A-REG TO L.P. USING SKIP ON * FLAG SET FOR PRINT COMPLETED. SPC 1 OTCH NOP STA SV13 SAVE A-REG STB SV14 SAVE B-REG LDB HPIB IS THIS HP-IB? SZB,RSS JMP OTCHI NO JSB OTIB USE HPIB TO OUTPUT TO PRINTER JMP OTCHG RESTORE REGISTERS, EXIT OTCHI LDA SV13 IF SELF TEST, ALLOW 3 SEC TIMEOUT LDB TIMEB CPA SLFTS LDB DM3K STB TM5 STORE APPROPRIATE TIMEOUT MAX OTCHA OTA CH OUTPUT TO PRINTER OTCHB STC CH,C SET CONTROL AND CLEAR FLAG CLB OTCHC SFS CH WORD COMPLETED ? JMP OTC1 NO OTCHG LDA SV13 RESTORE A-REG LDB SV14 RESTORE B-REG OTCHE CLC CH,C JMP OTCH,I RETURN OTC1 INB,SZB WHEN B=0, BEGIN 1 MS DELAYS JMP OTCHC NOT=0, TRY FLAG CHECK AGAIN OTC2 CLA,INA DELAY 1 MS AT A TIME JSB TMRR,I OTCHF SFS CH RSS JMP OTCHG EXIT OTCH ISZ TM5 DONE WITH TOTAL DELAY? JMP OTC2 NO, TRY AGAIN LDA SV13 EXIT IF OUTPUT WAS SELF TEST CMND CPA SLFTS JMP OTCHH LDA RD HAS READY BEEN CALLED YET? SZA JMP E030 YES, SO REPORT ERROR AND EXIT TEST JSB RDY,I IS LP ON LINE, READY, AND NOT RESET? RSS YES, REPORT FLAG ERROR JMP OTCHI "OFF LINE" REPORTED, SO TRY OUTPUT AGAIN NOP OTCHH CLA RETURN A-REG=0 IF SELF TEST JMP OTCH,I DID NOT COMPLETE IN 3 SECONDS E030 CLA RESET READY ROUTINE FLAG TO 0 STA RD JSB ERMS,I DEF MS030 FLAG FAILED TO SET AFTER OUTPUT JMP TSTNN,I FATAL ERROR, EXIT TEST SPC 2 TCJMP NOP LDA JMPI TRAP CELL JUMP TCJ STA CH STORE IN TRAP CELL LDA TCJMP,I LOCATION TO JUMP STA JMPIL STORE INSTRUCTION ISZ TCJMP INCREMENT RETURN JMP TCJMP,I RETURN P+2 JMPI JMP *+1,I JUMP INSTRUCTION JMPIL NOP SPC 2 PRTT NOP LDA EVFC GET VFU CODE JSB CMNDP OUTPUT VFU JSB OTLP TELL OPEPETOR JMP PRTT,I RETURN SPC 2 SPC 2 * OTLP PERFORMS TEXT STRING OUTPUT TO LP * B = BUFFER ADDRESS SPC 1 OTLP NOP JSB TCJMP SET TRAP CELL FOR INTERRUPTS DEF OUTIC INTERRUPT ADDRESS NOP OTP1 JSB RDY,I CHECK LP STATUS RSS JMP OTP1 OTPP NOP LDA B,I GET FIRST CHARACTER ALF,ALF POSITION UPPER CHARACTER AND .377 MASK CPA .57 TEST FOR '/' JMP OTLP,I EXIT NOP JSB OUTI WRITE CHARACTER LDA B,I GET CHARACTER AGAIN AND .377 MASK LOWER CHARACTER CPA .57 TEST FOR '/' JMP OTLP,I EXIT NOP JSB OUTI WRITE CHARACTER INB MOVE PTR TO NEXT WORD JMP OTPP CONTINUE SKP ORG 4000B TST.0 EQU * CLEAR LP BSIC NOP BEKFORE LDA BSIC RUN STA TSTNN * LDB HPIB SZB IF HPIB, JMP TST0B DON'T EXECUTE BASIC I/O CLC 0,C * CLA INSURE DATA ON THE INTERFACE TSTO OTA CH * JSB TST0A,I CALL BI/O CLC 0,C CLEAR LP JSB RDY,I CHECK LP STATUS LDA CLBUF JSB CMNDP CLEAR LP BUFFER LDA SLFTS EXECUTE PROG SELF TEST CMNDP JSB CMNDP WITH PRINTING DISABLED SZA,RSS IF A = 0, SLF TST FLAG NOT SET JMP E126 REPORT ERROR AND EXIT LDA SLF LDB EX10 EXPECTED STATUS AND SELECTED BITS JSB STR,I CHECK SELF TEST STATUS JSB CKS,I JMP BSIC,I  EXIT E126 JSB ERMS,I REPORT FLAG FAIL ERROR DEF M126 JMP BSIC,I EXIT TST0A DEF TST00 SPC 1 * TEST 0B SUBTEST 1B TST0B ISZ SUB LDA OFLIN JSB CMNDP TAKE PRINTER OFF LINE LDA D96 WAIT NEARLY 1 MS JSB TMRR,I LDA ONLIN PUT PRINTER BACK ON LINE JSB CMNDP NOP JSB RDSJ GET DSJ RESPONSE LDB .1 CPA B IF DSJ RESPONSE = 1, JMP *+3 THEN CONTINUE ON E121 JSB ERMS,I DSJ ERROR DEF M121 NOP NOP LDA IO JSB STR,I READ I/O STATUS JSB RDSJ GET DSJ RESPONSE CLB SZA,RSS IF DSJ IS ZERO, JMP *+3 THEN CONTINUE E121B JSB ERMS,I DSJ ERROR DEF M121 NOP SPC 1 * TEST 0B SUBTEST 2B ISZ SUB LDA VF0X MOVE PAPER TO TOF JSB CMNDP NOP LDA DPRNT SET DOUBLE SIZE MODE JSB CMNDP CLA,INA SEND DEVICE CLEAR COMMAND JSB LSTN DEF *+3 DEF PLTA DEF DVCLR CLA JSB OTIB JSB POLL LDA PMODE LDB EX10 JSB STR,I TEST PRINT MODE FOR JSB CKS,I =18) SSA JMP RDY3 IF VALID, EXIT ADA DM12 SSA,RSS JMP RDY3 ALSO VALID--EXIT B8PF JSB STFRM TELL OPERATOR TO ALIGN TOF, SEND MASTR LDB TSTN IF TEST 1, RETURN CPB .1 JMP RDYI,I JMP TSTNN,I ELSE EXIT CURRENT TEST E036 JSB ERMS,I SEND OFF LINE MESSAGE DEF DMD3 ISZ RDYI RETURN TO P+2 JMP RDY2 NOW CONTINUE CHECKING BITS 6, 0 E032 LDA ACT LOAD A REGISTER WITH ACTUAL OF 7, 6, 0 JSB ERMS,I REPORT NOT READY MESSAGE DEF RDY32 CLC 0,C LDA SPRNT INSURE STANDARD PRINT MODE OF LP JSB CMNDP JSB FF PERFORM FORM FEED JMP TSTNN,I EXIT CURRENT TEST RDY3 LDA SV32 RESTORE A REGISTER LDB SV33 RESTORE B REGISTER JMP RDYI,I RETURN SKP * THE VERIFY ROUTINE EXECUTES A ROM READBACK * OF THE FIRST BYTE OF LANGUAGE CODE=TMP. * IF THE FIRST BYTE = TMP, THE LANGUAGE * IS AVAILABLE AND ROUTINE RETURNS TO P+2. * IF NOT AVAILABLE, A CLEAR BUFFER RESTORES * THE PRINTER'S I/O STATyUS, RETURNS P+1 * VERIF NOP LDA .200 ATTEMPT TO READBACK REQUESTED ADA CNT4 JSB STR,I LANGUAGE CODE NOP CPA CNT4 DOES READBACK CODE = REQUESTED CODE? ISZ VERIF RETURN TO P+2 IF REQUESTED LNG AVAL LDA CLBUF NO--SEND CLEAR BUFFER TO RESTORE JSB CMNDP I/O STATUS LDA CNT4 JMP VERIF,I RETURN * * INCREMENTS LANGUAGE CODE TO NEXT DEFINED CODE: * 0-17B * EXITS CURRENT TEST IF INCREMENTED BEYOND 17B SPC 1 INCRL NOP ISZ CNT4 INCREMENT CURRENT CODE LDA CNT4 CPA D16 DONE WITH CURRENT TEST? RSS YES--FORM FEED AND EXIT JMP INCRL,I NO--RETURN LDA SPRNT INSURE STANDARD PRINT MODE JSB CMNDP FOR FF ROUTINE LDA LNGCW RETURN TO ASCII ON EXIT JSB CMNDP LDA SI INSURE "SHIFT IN" MODE JSB OTCH JSB FF JMP TSTNN,I EXIT CURRENT TEST SKP SPC 2 * TOFCK VERIFIES THAT PAPER IS AT TOF. * RET P+1 = E065 MSG UNABLE TO FIND TOF * P+2 = STATUS INDICATES AT TOF SPC 1 TOFCK NOP JSB TOF GET PS-1 STATUS ON CH12 BIT AND D16 CPA D16 JMP TOFX2 YES - EXIT AT P+2 LDA VF11X NO - GOTO TOF VIA VFC CH12 JSB CMNDP JSB TOF GET PS-1 STATUS ON CH12 BIT AND D16 CPA D16 JMP TOFX2 YES--NOW EXIT AT P+2 LDB D16 A=ACTUAL: B=EXPECTED STATUS E065 JSB ERMS,I NO VFC CH12 STATUS DEF MS065 JMP TOFCK,I ERROR EXIT AT P+1 TOFX2 ISZ TOFCK ADJUST RETURN TO P + 2 JMP TOFCK,I SPC 2 TOF NOP LDA HPIB IF HPIB, USE IBST RTN FOR PS-1 SZA JMP TOF1 LDA IO GET PS-1 ON PARALLEL ADA FRBCW JSB CMNDP SEND PS-1 COMMAND LDB IO LDA TIMEB MAX TIME TO ALLOW FOR FLAG JSB LIAC,I = GET STATUS BY LIA CH JMP TOF,I RETURN WITH PS-1 STATUS IN A TOF1 CLA,INA STA CODN JSB IBST GET PS-1 FOR HPIB JMP TOF,I RETURN WITH PS-1 STATUS IN A SKP LST * TST18 * OPTIONAL PRINT QUALITY TEST TST18 EQU * TEXT NOP LDA VF0X INSURE PRINT QUALITY AT TOF JSB CMNDP LDA TEXT STA TSTNN JSB DSCR,I SEND TEST # AND DESCRIPTION TO PRINTER NOP NOP LDB DM3 SET FOR NUMBER OF LOOPS STB TST17 NOP TXTS0 CLB TABLE P0INTER FOR TEXT STB TMPTX TXTST LDB TXTAD POINT TO START OF TABLE ADB TMPTX ADD INCREMENT LDB B,I GET ADDRESS (IF IT IS AN ADDRESS) CPB DM1 END OF TABLE? JMP TXTOF YES - EXIT WITH TOF CPB .1 NO - SELECT 2X MODE? JMP X2ON YES CPB .2 SELECT STANDARD MODE? JMP X2OFF YES SZB TIME TO PRINT THE BUFFER? JMP TXDAT NO - SEND MORE DATA LDA VF2X YES - PRINT AND SPACE WITH CH 3 JSB CMNDP LDA VF2X LOOK LIKE DOUBLE SPACE JSB CMNDP JMP TXTLP CONTINUE TXDAT JSB OTLP SEND MORE DATA TO THE PRINTER TXTLP ISZ TMPTX INCREMENT OFFSET JMP TXTST TRY AGAIN NOP NOP TXTOF ISZ TST17 DONE WITH LOOP? JMP TXTS0 NOPE - KEEP TRYING JMP TEXT,I EXIT PRINT QUALITY TEST X2ON LDA DPRNT CW FOR 2X MODE RSS X2OFF LDA SPRNT CW FOR STANDARD MODE JSB CMNDP SEND THE CW JMP TXTLP CONTINUE THROUGH TABLE TMPTX NOP SKP * CODES FOR TABLE * -1 = END OF TABLE * 1 = SELECT 2X PRINT * 2 = SELECT STANDARD SIZE PRINT * 0(NOP)= PRINT BUFFER & GO TO VFC3(TWICE) * OTHER = ASSUMES ADDRESS OF DATA TXTAD DEF *+1 TABLE OF POINTERS TO TEXT MESSAGES OCT 1 DEF TXT00 NOP OCT 2 DEF TXT01 DEF TXT02 DEF TXT03 NOP DEF TXT04 DEF TXT05 DEF TXT06 NOP DEF TXT07 DEF TXT08 DEF TXT09 NOP DEF TXT10 NOP DEF TXT11 DEF TXT12 DEF TXT13 NOP DEF TXT14 DEF TXT15 DEF TXT16 NOP DEF TXT17 NOP DEC -1 TXT00 ASC 24,High Reliability Combined With High Throughput/ TXT01 ASC 28,THE HP 2608A HAS BEEN DESIGNED WITH RELIABILITY IN MIN/ TXT02 ASC 28,D. THE PRINTING MECHANISM HAS FEW MOVING PARTS, OPERA/ TXT03 ASC 11,TES VIRTUALLY WITHOUT/ TXT04 ASC 28,FRICTION, AND REQUIRES MINIMUM MAINTENANCE. THE BASIS/ TXT05 ASC 28, OF THE PRINTING MECHANISM IS A PRINT HAMMER AND COIL / TXT06 ASC 12,SET FOR EACH OF THE 132/ TXT07 ASC 28,PRINT POSITIONS. THE PRINT MECHANISM HORIZONTALLY SCA/ TXT08 ASC 28,NS THE PRINT LINE ALLOWING PRECISE DOT PLACEMENT IN AN/ TXT09 ASC 12,Y OF 924 DOT POSITIONS/ TXT10 ASC 9,ON A PRINT LINE./ TXT11 ASC 28,In addition, the printer is microprocessor controlled / TXT12 ASC 28,for flexibility and increased functional capabilities / TXT13 ASC 9,as well as added/ TXT14 ASC 28,reliability. Microprocessor control also enables inte/ TXT15 ASC 28,rnal diagnostics to be incorporated into the HP 2608A / TXT16 ASC 12,in the form of a self-/ TXT17 ASC 14,test\self-diagnostic mode./ B00 ASC 11, BIT 0 POWER FAIL; _/ B01 ASC 10, BIT 1 RESERVED; _/ B02 ASC 10, BIT 2 6,8 LPI; _/ B03 ASC 10, BIT 3 VFC INIT; _/ B04 ASC 10, BIT 4 VFC CH 12; _/ B05 ASC 10, BIT 5 VFC CH 9; _/ B06 ASC 14, BIT 6 READY, NOT READY; _/ B07 ASC 14, BIT 7 OFF LINE, ON LINE; _/ SPC 2 COD2 ASC 12,E123 DISPLAY STATUS;_ / COD3 ASC 10,E120 PRINT MODE;_ / COD4 ASC 13,E132 PRI-SEC LANGUAGE;_ / COD5 ASC 13,E127 SELF TEST STATUS;_ / COD6 ASC 14,E112 6 LPI DOT ROW COUNT; _/ COD7 ASC 14,E113 6 LPI FORM POSITION; _/ COD11 ASC 14,E115 8 LPI DOT ROW COUNT;{ _/ COD12 ASC 14,E116 8 LPI FORM POSITION; _/ COD20 ASC 21,E131 PRI-SEC POWER ON CONDITION SWITCH;_ / SPC 2 TSTMS ASC 6,TESTXXXXXX / SUBM ASC 6,SUBTEST B/ BIT ASC 7,SHOULD BE XX/ M54 ASC 18,E054 I-O STATUS ERROR; SUBTEST B/ M55 ASC 1,/ RDY32 ASC 09,E032 LP NOT READY/ DMD3 ASC 09,E036 LP OFF LINE/ MS031 ASC 11,E031 LP FAILED TO INT/ MS030 ASC 12,E030 FLAG FAILED TO SET/ MS065 ASC 15,E065 NO VFC CHANNEL 12 STATUS/ MS063 ASC 16,H063 PUT LANGUAGE CODE IN S-REG ASC 06,; PRESS RUN/ MS66 ASC 20,H066 SET HP-IB ADDRESS SWITCHES TO B; ASC 06, PRESS RUN/ MS66T BSS 3 MS67 ASC 21,H067 SET YOUR HP-IB ADDRESS IN SWITCH AND ASC 09,A-REG; PRESS RUN/ M100 ASC 22,H100 REALIGN TOF, PRESS ON LINE; PRESS RUN/ M104 ASC 15,H104 TAKE DEVICE XX OFF LINE/ M106 ASC 17,E106 NO RESPONSE TO PARALLEL POLL/ M107 ASC 10,E107 HP-IB TIME OUT/ M137 ASC 15,E137 IFC FLAG FAILED TO CLEAR/ SPC 1 ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ ZBE11 ASC 14,E011 STF XX SET CARD FLAG// ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ SPC 2 * REP FACTOR OPER VFC CHAN TBL1 DEC 1 TOF 1 DEC 1 BOF 2 DEC 12 SS 3 DEC 6 DS 4 DEC 3 TS 5 DEC 2 QP 7 DEC 2 HP 6 DEC 3 SP 8 DEC 2 7TH LINE 13 DEC 2 6TH LINE 14 DEC 2 5TH LINE 15 DEC 2   4TH LINE 16 DEC 1 BOF-1 10 DEC 1 BOF 9 DEC 1 TOF-1 11 DEC 1 TOF 12 DEC 1 SLEW 000B DEC 1 SLEW 001B DEC 1 SLEW 002B DEC 1 SLEW 004B DEC 1 SLEW 010B DEC 1 SLEW 020B DEC 1 SLEW 040B DEC 1 SLEW 100B SPC 1 SPC 2 * VFU CHAN # TBL2 OCT 100200 1 TOF VFU0 EQU TBL2 VFU1 OCT 100201 2 BOTTOM OF FORM VFU2 OCT 100202 3 SINGLE SPACE VFU3 OCT 100203 4 DOUBLE SPACE VFU4 OCT 100204 5 TRIPLE SPACE VFU6 OCT 100206 7 NEXT QUARTER PAGE VFU5 OCT 100205 6 HALF PAGE LINE VFU7 OCT 100207 8 NEXT SIXTH PAGE VFU12 OCT 100214 13 NEXT SEVENTH LINE VFU13 OCT 100215 14 NEXT SIXTH LINE VFU14 OCT 100216 15 NEXT FIFTH LINE VFU15 OCT 100217 16 NEXT FOURTH LINE VFU9 OCT 100211 10 BOF-1 VFU8 OCT 100210 9 BOF (WITH STATUS) VFU10 OCT 100212 11 TOF-1 VFU11 OCT 100213 12 TOF(WITH STATUS) LS00 OCT 100000 SLEW 0 LINE LS01 OCT 100001 SLEW 1 LINE LS02 OCT 100002 SLEW 2 LINES LS03 OCT 100004 SLEW 4B LINES LS04 OCT 100010 SLEW 10B LINES LS05 OCT 100020 SLEW 20B LINES LS06 OCT 100040 SLEW 40B LINES LS07 OCT 100100 SLEW 100B LINES SPC 2 TBL3 DEF MSG01 TOF DEF MSG02 BOF DEF MSG03 SS DEF MSG04 DS DEF MSG05 TS DEF MSG07 QP DEF MSG06 HP DEF MSG08 SP DEF MSG29 CH13 DEF MSG30 CH14 DEF MSG31 CH15 DEF MSG32 CH16 DEF MSG26 CH10 DEF MSG25 CH9 DEF MSG27 CH11 DEF MSG28 CH12 DEF MSG24 SLEW 0B DEF MSG09 SLEW 1B DEF MSG10 SLEW 2B DEF MSG11 SLEW 4B DEF MSG12 SLEW 10B DEF MSG13 SLEW 20B DEF MSG14 SLEW 40B DEF MSG15 SLEW 100B SPC 2 MSG01 ASC 20,TEST 05 VERTICAL FORMAT TEST -- TOF/ MSG02 ASC 02,BOF/ MSG03 ASC 02,SS/ MSG04 ASC 02,DS/ MSG05 ASC 02,TS/ MSG06 ASC 02,HP/ MSG07 ASC 02,QP/ MSG08 ASC 02,SP/ MSG09 ASC 05,SLEW 001B/ MSG10 ASC 05,SLEW 002B/ MSG11 ASC 05,SLEW 004B/ MSG12 ASC 05,SLEW 010B/ MSG13 ASC 05,SLEW 020B/ MSG14 ASC 05,SLEW 040B/ MSG15 ASC 05,SLEW 100B/ MSG24 ASC 10 SLEW 000B/ MSG25 ASC 02,CH9/ MSG26 ASC 03,CH10/ MSG27 ASC 03,CH11/ MSG28 ASC 03,CH12/ MSG29 ASC 03,CH13/ MSG30 ASC 03,CH14/ MSG31 ASC 03,CH15/ MSG32 ASC 03,CH16/ SPC 2 ERTB DEF B00 DEF B01 DEF B02 DEF B03 DEF B04 DEF B05 DEF B06 DEF B07 SPC 2 RTABL NOP NOP DEF COD2 DEF COD3 DEF COD4 DEF COD5 DEF COD6 DEF COD7 NOP DEF COD11 DEF COD12 NOP NOP NOP NOP NOP DEF COD20 SPC 2 EXTB DEF * OCT 176630 OCT 177200 OCT 017400 OCT 177400 OCT 177400 OCT 177400 OCT 177400 OCT 177502 OCT 177400 OCT 177400 OCT 177530 SPC 2 BNTAB ASC 4,00000001 ASC 4,00000010 ASC 4,00000100 ASC 4,00001000 ASC 4,00010000 ASC 4,00100000 ASC 4,01000000 ASC 4,10000000 ASC 4,00000000 SPC 2 STAB DEF * NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP SKP * SOFTWARE VFC DATA TABLE SOFT1 OCT 174375 OCT 000004 OCT 000014 OCT 000024 OCT 100014 OCT 040004 OCT 020034 OCT 010004 OCT 100014 OCT 000024 OCT 040214 OCT 000004 OCT 120034 OCT 000004 OCT 010014 OCT 040124 OCT 100014 OCT 000004 OCT 020034 OCT 000004 OCT 140214 OCT 010024 OCT 000014 OCT 000004 OCT 120034 OCT 040004 OCT 000014 OCT 000024 OCT 110014 OCT 000004 OCT 060374 OCT 000004 OCT 100014 OCT 000024 OCT 000014 OCT 050004 OCT 120034 OCT 000004 OCT 000014 OCT 000024 OCT 140214 OCT 000004 OCT 130034 OCT 000004 OCT 100014 OCT 040124 OCT 000014 OCT 000004 OCT 120034 OCT 010004 OCT 040214 OCT 000024 OCT 100014 OCT 000004 OCT 020034 OCT 040004 OCT 110014 OCT 000024 OCT 001014 OCT 000406 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 002000 OCT 177777 END OF TABLE LST MTABL NOP ZMX01 NOP ZMX02 NOP ZMX03 NOP ZMX04 DEF ZMS04 ZMX05 NOP ZMX06 DEF ZMS06 ZMX07 DEF ZMS07 ZMXO8 DEF ZMS08 ZMX09 DEF ZMS09 ZMX10 DEF ZMS10 ZMX11 DEF ZMS11 ZMX12 DEF ZMS12 ZMX13 DEF ZMS13 ZMX14 DEF ZMS14 ZMX15 DEF ZMS15 ZMX16 DEF ZMS16 ZMX17 DEF ZMS17 ZMX18 DEF ZMS18 ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT); RUN/ ZBM25 ASC 08,H025 BI-O COMP/ ZMS04 ASC 11,TRIANGULAR PRINT TEST/ ZMS06 ASC 10,CHARACTER SET TEST/ ZMS07 ASC 8,DMA--DCPC TEST/ ZMS08 ASC 10,ROM READ-BACK TEST/ ZMS09 ASC 16,PRIMARY--SECONDARY--SELECT TEST/ ZMS10 ASC 17,PRIMARY--SECONDARY--INTERMIX TEST/ ZMS11 ASC 14,DOUBLE SIZE CHARACTER TEST/ ZMS12 ASC 12,CONTROL CHARACTERS TEST/ ZMS13 ASC 12,GRAPHICS ALIGNMENT TEST/ ZMS14 ASC 14,GRAPHICS COLUMN WIDTH TEST/ %ZMS15 ASC 12,GRAPHICS DIAGONAL TEST/ ZMS16 ASC 11,GRAPHICS PATTERN TEST/ ZMS17 ASC 9,POWER SUPPLY TEST/ ZMS18 ASC 10,PRINT QUALITY TEST/ HDMS ASC 22,2608A LINE PRINTER DIAGNOSTIC DSN = XXXXXXB, ASC 17, FIRMWARE ID NUMBER = XXXXX DEC/ SPC 2 IOID EQU * DEF LIA0 DEF LIA1 DEF LIA2 DEF LIA3 DEF LIA6 DEF STRD2 DEF TSTO DEF OTCHA DEF OTCHB DEF OTCHC DEF OTCHE DEF OTCHF DEF RDY5 DEF OUTIA DEF OUTIB DEF OUTIC DEF OUTIE DEF OUTID DEF IBO1 DEF IBO2 DEF SIN DEF TCJ DEF DMSC1 DEF DMSC2 DEF DMACW DEF LPX DEF CND1 DEF CND2 DEF PP0 DEF PP1 DEF PP2 DEF IS1 DEF IS2 DEF OA1 DEF OA3 DEF SWOTA DEF SWSFC DEC -1 SPC 2 TSTD EQU * DEF TST.0 BASIC I/O DEF TST01 MANUAL CONTROL DEF TST02 PING-PONG DEF TST03 PARITY DEF TST04 TRIANGULAR PRINT DEF TST05 VERTICAL FORMAT CONTROL DEF TST06 CHARACTER SET DEF TST07 DMA/DCPC DEF TST08 ROM READ-BACK DEF TST09 PRIMARY/SECONDARY SELECT DEF TST10 PRIMARY/SECONDARY/BACKSPACE DEF TST11 2X SIZE CHARACTER DEF TST12 CONTROL CHARACTERS DEF TST13 GRAPHICS ALIGNMENT DEF TST14 GRAPHICS COLUMN WIDTH DEF TST15 GRAPHICS DIAGONAL DEF TST16 GRAPHICS PATTERN DEF TST17 POWER SUPPLY TEST DEF TST18 PRINT QUALITY TEST DEC -1 MCT00 ASC 18,H040 POWER OFF LP (BACK, LOWER LEFT) ASC 06,; PRESS RUN/ MCT01 ASC 17,H041 POWER ON, READY THE PRINTER, ASC 22,CLEAR POWER ON SWITCHES, ON LINE; PRESS RUN/ MCT02 ASC 19,H042 PRESS RESET, ON LINE; PRESS RUN/ MCT03 ASC 16,H043 PRESS OFF LINE; PRESS RUN/ MCT04 ASC 17,H044 PRESS ON LINE, OPEN PLATEN; ASC 06,PRE;SS RUN/ MCT05 ASC 19,H045 CLOSE PLATEN, ON LINE; PRESS RUN/ MCT06 ASC 14,H046 TEAR PAPER IMMEDIATELY ASC 13, BELOW PRINTER; PRESS RUN/ MCT07 ASC 16,H047 REINSTALL PAPER, ALIGN TOF, ASC 13,PRESS ON LINE; PRESS RUN/ MCT08 ASC 14,H050 PRESS 8LPI; PRESS RUN/ MCT09 ASC 21,H052 PRESS FORM FEED, ON LINE; PRESS RUN/ MCT10 ASC 21,H051 PRESS OFF LINE, LINE FEED; PRESS RUN/ MCT11 ASC 20,H053 SET POWER ON LANGUAGES = XXXXXXXX; ASC 06,PRESS RUN/ MCT12 ASC 21,H055 SET POWER ON 6-8 LPI = X; PRESS RESET ASC 06,; PRESS RUN/ M126 ASC 12,E126 SELF TEST TIMEOUT/ M122 ASC 8,E122 PING-PONG/ M124 ASC 12,E124 SWITCH XXB FAILED/ M121 ASC 5,E121 DSJ/ M130 ASC 11,E130 DEVICE IDENTIFY/ M125 ASC 25,E125 HP-IB SELF TEST STATUS/ M133 ASC 15,E133 ILLEGAL SERVICE REQUEST/ M134 ASC 19,E134 ILLEGAL RESPONSE TO SERIAL POLL/ M135 ASC 12,E135 NO SERVICE REQUEST/ M136 ASC 16,E136 NO RESPONSE TO SERIAL POLL/ M140 ASC 11,E140 HP-IB PING-PONG/ M141 ASC 16,E141 PARITY ERROR NOT DETECTED/ M142 ASC 16,E142 PARITY ERROR NOT REPORTED/ PATTB OCT 130000 OCT 054000 OCT 026000 OCT 013000 OCT 005400 OCT 002600 OCT 001300 OCT 000540 OCT 000260 OCT 000130 OCT 000054 OCT 000026 OCT 000013 OCT 100005 OCT 140002 OCT 060001 OCT 130000 OCT 054000 OCT 026000 OCT 013000 OCT 005400 SPC 3 DMA2 ASC 9,E034 DMA TIME OUT/ DMA1 ASC 10,H033 DMA NOT CONFIG/ DMA3 ASC 19,E035 I-O FLAG NOT SET AFTER DMA COMP/ SPC 1 LNGX ASC 10,LANGUAGE CODE = XXB/ SPC 1 HDSS OCT 7524 PACKED ASCII FOR "SI", "T" ASC 10,EST 12, SUBTEST XXB/ SPC 2 FWAA EQU * END @ 1Ew 02615-18001 1502 S 0122 012615A DG. TSB/E              H0101  0M...65VDϠMNA̠DAGNSà(000ŠSB 0M... 30DM۸ݬA۲ݬS$36 0DMA$۲ݬB$۲ݬ$۲ݬD$۲ݬ$۲ݬH$۲ݬ$۲ݬK$۲ 50DMM$3ݬN$۴ݬ$۷ݬ$۱ݬV$۱ 60ADA$B$$D$$H$$K$ 0DAA"A""B""""D""""H""""K" 0MAԠADA 90DAA356 00DAA35 0DAA65 0DAA53 30S$"HAAҠNԠVDY-" 0PNԠ$"65VDϠMNA̠DAGNS" 50$"ASԠƠHŠAVAABŠSS" 60GSUB60 0Ơҽ0HN0 0PNԠ"SԠUNN" 90PNԠ"MMY" 00PNԠ"DԠMA" 0PNԠ"3HAAҠS" 0PNԠ"USҠN" 30PNԠ"5ASŠN" 0PNԠ"6ASŠϠNDƠSN" 50PNԠ"KYBAD" 60PNԠ"AGNMN" 0PN 0$"ϠUNA̠SS" 90GSUB60 300Ơҽ0HN330 30MAԠԽN 30GϠ0 330PNԠ"NҠNUMBҠƠAHSԠDSDMNAŠBYNNGZ" 30MAԠԽZ 350NPUԠ 360Ơ<9HN390 30PNԠ"NUMBҠDSNUMBҠƠAVAABŠSSYAGAN" 30GϠ350 390ƠҾ0HN60 00Ơҽ0HN30 0PNԠ"NVADNYYAGAN" 0GϠ350 30Ơ۱+۲+3+۴+5+6+۷+۸ݾ0HN0 0PNԠ"Ҡ-NϠNSMAD" 50GϠ0 60ݽ 0GϠ350 0ҠNϠ 90ƠNݽ0HN50 500PNԠ$"S"N"-" 50GSUBNƠ60099005060930530 50ҠɽϠ30000 530NԠ 50NԠN 550PNԠ$ 560$"ϠUNAGAN" 50GSUB60 50Ơҽ0HN630 590$"ϠUNHŠSAMŠSS" 600GSUB60 60ƠҽHN0 60GϠ50 630SP 60M... 650M...SԠ-MMY 660M... 60PNԠ"MMYHK" 60PNԠ"" 690N36 00ҠɽϠ 0M$"?" 0GSUB0 30M$"?" 0GSUB0 50NԠ =j60ҠɽϠ0 0ҠʽϠ5000 0NԠ 90PN 00NԠ 0UN 0M... 30M...SԠ-DԠMA 0M... 50PNԠ"DԠMAؠHK" 60N 0M$"NZ+" 0GSUB0 90M$"Z+N" 900GSUB0 90M$"Z+N" 90GSUB0 930M$"+NZ" 90GSUB0 950UN 960M... 90M...SԠ3-HAAҠS 90M... 990PNԠ"HAAҠS" 000PN 00M$"!$'(+-.03569: 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS JSB ZLNCT SET UP # LINES PER INCH CLA CLEAR OTA 1 SWITCH R_EG HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * SET VFU COUNTERS FOR 6 OR 8 LINES PER INCH * ZLNCT NOP LDA USSC PICK UP SW OPTIONS AND Z.200 TEST FOR BIT 7; 1=8 LPI LDB DT1 GET ADDR OF TABLE FOR VFU TEST ADB .4 STEP DOWN 4 IN TABLE SZA,RSS JMP ZSIXL * 8 LINES PER INCH LDA D160 #LINES SS TO 2 PAGES STA B,I PUT IN TABLE FOR VFU TEST 04 INB INCREMENT TABLE POINTER LDA D80 #LINES DS TO 2 PAGES STA B,I INB LDA D54 #LINES TS TO 2 PAGES STA B,I ADB .4 STEP DOWN 4 IN TABLE LDA D16 # 1/8 TH PAGES STA B,I LDA ETH CHANGE MESSAGE TO EP (1/8) STA MSG08 JMP ZLNCT,I RETURN * 6 LINES PER INCH ZSIXL LDA D120 #LINES SS TO 2 PAGES STA B,I PUT IN TABLE FOR VFU TEST 04 INB INCREMENT TABLE POINTER LDA D60 # LINES DS TO 2 PAGES STA B,I INB LDA D40 # LINES TS TO 2 PAGES STA B,I ADB .4 STEP DOWN 4 IN TABLE LDA D12 # 1/6TH PAGES STA B,I LDA STH CHANGE MESSAGE TO SP (1/6) STA MSG08 JMP ZLNCT,I RETURN * D160 DEC 160 D120 DEC 120 D80 DEC 80 D54 DEC 54 D40 DEC 40 D16 DEC 16 D12 DEC 12 ETH ASC 1,EP EIGHTH PAGE STH ASC 1,SP SIXTH PAGE * * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC IN[TP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF LDA .D25 WAIT 25 MS FOR INT TO OCCUR JSB TMRR,I ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * <:6* * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * < 3B 02618-18002 1633 S 0146 2613A/2618A LINE PRINTER DIAG             H0101  SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * c * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURNV OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * * * * HED HP2613/2617/2618 LINE PRINTER DIAGNOSTIC * ORG 126B * DSN OCT 145103 * ORG 140B * IOIP DEF IOID TSTP DEF TSTD HDMP DEF HDMS STDA OCT 377 STDB OCT 0 STUD DEF STUDD * ORG 150B * HDMS ASC 14,2613-2618 LINE PRINTER DIAG/ SPC 2 IOID EQU * DEF TSTO DEF OTCHA DEF OTCHB DEF OTCHC 8 DEF OTCHE DEF OTCHF DEF OUTIA DEF OUTIB DEF OUTID DEF TCJ DEF DMSC1 DEF DMSC2 DEF MCTA DEF OSC01 DEF OSC02 DEF RDY1 DEF DMD1 DEC -1 SPC 2 TSTD EQU * DEF TST.0 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF OPDSN .M1 DEC -1 SKP .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .15 OCT 15 .177 OCT 177 .D25 DEC 25 .M2 DEC -2 .M3 DEC -3 .M4 DEC -4 .M10 DEC -10 .M60 OCT -60 CULN OCT 0 AA OCT 101 DBC NOP DBT NOP DBD DEF DBDD .40 OCT 40 .77 OCT 77 .200 OCT 200 .204 OCT 204 D27 DEC 27 D136 DEC 136 DM60 DEC -60 DM96 DEC -96 DM136 DEC -136 DM137 DEC -137 M1000 DEC -1000 RDY DEF RDYI TIMEA DEC 5000 CHARM OCT 115 CNTR NOP CHAR NOP CHAR1 NOP BTCK OCT 10400 SKP DT1 DEF TBL1 TBL1 DEC 1 TOF DEC 1 BOF DEC 1 TOF DEC 1 BOF DEC 120 SS DEC 60 DS DEC 40 TS DEC 8 QP DEC 4 HP DEC 1 BOF DEC 12 SP DEC 1 BOF DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 DEC 1 SPC 1 SPC 2 * VFU CHANNEL # DT2 DEF TBL2 TBL2 OCT 100100 TOF VFU1 OCT 100101 2 BOTTOM OF FORM VFU0 OCT 100100 1 TOP OF FORM OCT 100101 BOF VFU2 OCT 100102 3 SINGLE SPACE VFU3 OCT 100103 4 DOUBLE SPACE VFU4 OCT 100104 5 TRIPLE SPACE VFU6 OCT 100106 7 NEXT QUARTER PAGE VFU5 OCT 100105 6 HALF PAGE LINE OCT 100101 BOF VFU7 OCT 100107 8 NEXT SIXTH P$AGE OCT 100100 TOF LS00 OCT 100000 SLEW 0 LINE LS01 OCT 100001 SLEW 1 LINE LS02 OCT 100002 SLEW 2 LINES LS03 OCT 100003 SLEW 3 LINES LS04 OCT 100004 SLEW 4 LINES LS05 OCT 100005 SLEW 5 LINES LS06 OCT 100006 SLEW 6 LINES LS07 OCT 100007 SLEW 7 LINES LS08 OCT 100010 SLEW 8 LINES LS09 OCT 100011 SLEW 9 LINES LS10 OCT 100012 SLEW 10 LINES LS11 OCT 100013 SLEW 11 LINES LS12 OCT 100014 SLEW 12 LINES LS13 OCT 100015 SLEW 13 LINES LS14 OCT 100016 SLEW 14 LINES LS15 OCT 100017 SLEW 15 LINES SPC 2 DT3 DEF TBL3 TBL3 DEF MSG01 TOF DEF MSG02 BOF DEF MSG01 TOF DEF MSG02 BOF DEF MSG03 SS DEF MSG04 DS DEF MSG05 TS DEF MSG07 QP DEF MSG06 HP DEF MSG02 BOF DEF MSG08 SP DEF MSG01 DEF MSG24 DEF MSG09 DEF MSG10 DEF MSG11 DEF MSG12 DEF MSG13 DEF MSG14 DEF MSG15 DEF MSG16 DEF MSG17 DEF MSG18 DEF MSG19 DEF MSG20 DEF MSG21 DEF MSG22 DEF MSG23 SPC 2 MSG01 ASC 02,TOF/ MSG02 ASC 02,BOF/ MSG03 ASC 02,SS/ MSG04 ASC 02,DS/ MSG05 ASC 02,TS/ MSG06 ASC 02,HP/ MSG07 ASC 02,QP/ MSG08 ASC 02,SP/ MSG09 ASC 02,S1/ MSG10 ASC 02,S2/ MSG11 ASC 02,S3/ MSG12 ASC 02,S4/ MSG13 ASC 02,S5/ MSG14 ASC 02,S6/ MSG15 ASC 02,S7/ MSG16 ASC 02,S8/ MSG17 ASC 02,S9/ MSG18 ASC 02,S10/ MSG19 ASC 03,S11/ MSG20 ASC 03,S12/ MSG21 ASC 03,S13/ MSG22 ASC 03,S14/ MSG23 ASC 03,S15/ MSG24 ASC 04, S0/ SPC 2 * LINKS FOR VFC TEST VF1X DEF VF1 VFCTX DEF VFCT,I CONTAINS RETURN ADDR * DT1E DEF EX1 DT3E DEF MSG DT2E DEF VFU10 DT4E DEF ER60 DH OCT 110 DI OCT 111 SPC 1 TSTNN NOP TMP OCT 0 NOP NOP NOP SKP * * LINKAGES FOR OP DESIGN * DBDD BSS 15n0 OPTR DEF RUNR * * STATUS REPORT * SRP NOP LDB SRPM SET UP CLA,CLE FOR MESSAGE JSB FMTR,I OUTPUT LDB CULN SET UP CLA,INA FOR LINE JSB FMTR,I NUMBER INSERTION OSC01 LIA CH LOAD STATUS FROM LP AND STMK MASK OFF UNUSED BITS LDB A CCA SET UP FOR JSB FMTR,I STATUS INSERTION JMP SRP,I EXIT SRPM DEF SRPMS SRPMS ASC 07,# STATUS IS #/ SPC 3 * * STATUS CHECK * SCP NOP STA SAVA SAVE STATUS STB SAVB SAVE LINE NUMBER OSC02 LIA CH LOAD STATUS FROM LP AND STMK MASK OFF UNUSED BITS LDB A LDA SAVB LOAD A WITH REQUESTED LINE NO CPB SAVA TEST STATUS CLA LOAD A WITH DEFAULT LINE NO JMP SCP,I EXIT SAVA OCT 0 SAVB OCT 0 STMK OCT 140001 SKP * CYCLIC PATTERN PRINT * CPP NOP SZA,RSS IF CHRS = 0 CPP.1 LDA DM136 THEN DEFAULT TO 136 SSA,RSS IF CHRS IS POS. CMA,INA THEN MAKE IT NEG. STA CPC SAVE NUMBER OF CHRS ADA D136 CHRS NOT> 136 SSA ? JMP CPP.1 YES USE 136 CHARS SZB,RSS IF LINE COUNT = 0 CPP.2 LDB DM60 THEN DEFAULT TO 60 SSB,RSS IF LNCNT IS POS. CMB,INB THEN MAKE IT NEG. STB CNTR SAVE LINE COUNT ADB D60 IF LNCNT> 60 SSB ? JMP CPP.2 THEN USE 60 LINES CPPL0 JSB CYBFI SET UP CYCLIC BUFFER LDA CYBFD GET ADDRESS LDB CPC AND COUNT JSB OTP OUTPUT BUFFER JSB RTLF OUTPUT A LINE FEED ISZ CNTR DONE? JMP CPPL0 NO CLA YES JMP CPP,I RETURN TO EXEC * CPC NOP D60 DEC 60 SKP * * OUTPUT BUFFER ONLY * OCP NOP c JSB OTBF CLA NO LINE CHANGE JMP OCP,I RETURN SPC 2 * * CARRIAGE RETURN/LINE FEED * CLP NOP JSB RTLF OUTPUT RETURN/LINE FEED CLA NO LINE CHANGE JMP CLP,I RETURN SPC 2 * * FORM FEED (AND PRINT) * FFP NOP JSB OTBF OUTPUT BUFFER IF REQUIRED JSB FF OUTPUT FORMFEED CLA NO LINE CHANGE JMP FFP,I RETURN SKP VFP NOP STA SAVA SAVE A CPA ALC IS IT A LC COMMAND ? JMP LCO YES ADB .M1 DECREMENT B STB SAVB ADB DM8 LDA SAVB SSB,RSS IS IT IN THE RANGE CLA DEFAULT ADA TBL2 ADD COMMAND CODE JSB OTCH CALL FOR OUTPUT FCR CLA LOAD A WITH DEFAULT LINE NO. JMP VFP,I EXIT LCO STB SAVB SAVE B ADB DM16 LDA SAVB SSB,RSS IS IT IN THE RANGE CLA DEFAULT ADA LS00 ADD COMMAND CODE JSB OTCH CALL FOR OUTPUT JMP FCR EXIT ALC ASC 01,LC DM8 DEC -8 DM16 DEC -16 SKP * PUT CYCLIC PATTERN IN BUFFER * CYBFI NOP LDB CYBFD SET POINTER STB CYBFT TO CYCLIC BUFFER LDA CYLC GET LAST STARTING CHARACTER INA MOVE UP ONE CPA .200 LAST CHARACTER? LDA .40 YES STA CYLC SAVE FOR NEXT BUFFER LDB DM136 GET MAX BUFFER COUNT CYBFL STA CYBFT,I STORE CHARACTER INA MOVE TO NEXT CHARACTER CPA .200 IS IT LAST CHR? LDA .40 YES ISZ CYBFT MOVE POINTER INB,SZB IS BUFFER FULL JMP CYBFL NO JMP CYBFI,I YES RETURN * CYBFT NOP CYLC OCT 40 CYBFD DEF *+1 BSS 136 OCT 100102 SKP * OUTPUT A CHARACTER OR THE USER BUFFER * OTBF NOP CPA AUB CHECK FOR USER BUFFER JMLP OTUB YES - SO DO IT STA OTBFA SAVE CHARACTERS IOR B SZA,RSS ANY BUFFER REQUESTED? JMP OTBF,I NO SZB,RSS IF B IS ZERO THEN INB MAKE IT ONE SSB,RSS IF B IS POS. CMB,INB MAKE IT NEG. STB OTBFB SAVE COUNT LDA OTBFA RETRIEVE CHARACTERS ALF,ALF CHECK UPPER CHR. AND .177 FOR $ SYMBOLE CPA A$ ? JMP *+3 OK CLA NO - THEN TAKE NO ACTION JMP OTBF,I AND RETURN LDA OTBFA GET CHR AND .177 FOR OUTPUT JSB OTCH OUTPUT A TO THE LINE PRINTER ISZ OTBFB IS THERE ANOTHER REQUESTED? JMP *-4 YES CCA NO - INDICATE A PRINT JMP OTBF,I AND RETURN AUB ASC 01,UB A$ OCT 44 SKP * OUTPUT USER BUFFER * OTUB SZB IF NUMBER IS ZERO JMP OTUBN LDB DBC DEFAULT TO BUFFER COUNT SZB,RSS PROTECT IF NO BUFFER DEFINED JMP OTBF,I OTUBN SSB,RSS IF NOT NEG CMB,INB MAKE IT NEG STB OTBFB AND SAVE IT LDA DBC CHECK IF CMB,INB BUFFER HAS ADB A ENOUGH IN IT SSB ? LDA OTBFB IF NO USE BUFFER COUNT STA B SAVE COUNT LDA DBT GET BUFFER TYPE CPA .APA IS IT PACKED ? JMP *+4 YES LDA DBD NO GET POINTER JSB OTP JMP OTBF,I LDA B LDB DBD BUFFER ADDRESS JSB OTP2 JMP OTBF,I RETURN * OTBFA NOP OTBFB NOP .APA ASC 01,PA SKP * OUTPUT A CHR OR BUFFER * * A = CHR OR ADDRESS * B = +^ OR -^ * OTP NOP STA OTPT SAVE CHR OR ADDRESS SSB CHR OR ADDRESS? JMP OTPB IT'S A BUFFER OUTPUT CMB,INB CHR, MAKE COUNT NEG. STB OTPC SAVE COUNT LDA OTPT RETRIEVE CHARACTER JSB OTCH OUTPUT IT ISZ OTPC ALL DONE? JMP *-3 NO JMP OTP,I AND RETURN * OTPB STB OTPC SAVE COUNT LDA OTPT,I GET CHARACTER JSB OTCH OUTPUT IT ISZ OTPT MOVE POINTER ISZ OTPC ALL DONE? JMP *-4 NO JMP OTP,I RETURN OTPT NOP OTPC NOP * * OUTPUT PACKED BUFFER * OTP2 NOP STA OTPC SAVE NUMBER OF CHARACTERS CLE,ELB STB OTPT AND ADDRESS POINTER OTP2L LDB OTPT GET CHARACTER ADDRESS CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2 CHR TO A REG SEZ,RSS UP ALF,ALF YES AND .177 MASK OFF OPPSITE CHARACTER JSB OTCH OUTPUT A TO LINE PRINTER ISZ OTPT MOVE TO NEXT CHARACTER ISZ OTPC IS THERE MORE OUTPUT? JMP OTP2L YES JMP OTP2,I NOW RETURN SKP * * CKST PERFORMS STATUS CHECK OF LP * CKST NOP STB MSG50+1 STORE ERROR NUMBER IN MESSAGE STA EXP EXPECTED DATA LDB EXP1 SET UP VARIABLE LDA TSTN MASK CPA .4 * LDB EXP5 * STB MSK1 * MCTA LIA CH GET STATUS AND MSK1 MASK STA ACT STORE ACTUAL STATUS CPA EXP IS STATUS OK ? JMP CKST,I YES, EXIT LDA ACT CNVRT LDB ACTD ACT CLE JSB O2AS,I LDA EXP CNVRT LDB EXPD EXP CLE JSB O2AS,I E050 JSB ERMS,I PRINT ERROR DEF MSG50 JMP CKST,I EXIT SPC 1 ACTD DEF MSG50+8 EXPD DEF MSG50+17 ACT OCT 0 EXP OCT 0 EXP1 OCT 140001 EXP2 OCT 100001 EXP3 OCT 0 EXP4 OCT 040000 EXP5 OCT 170001 MSK1 OCT 0 MSG50 ASC 21,E050 STATUS IS XXXXXX SHOULD BE XXXXXX/ <:66< 4C 02618-18003 1633 S 0146 2613A/2618A LINE PRINTER DIAG             H0101  SKP * TOP OF FORM SPC 1 FF NOP STA SAVE3 SAVE A-REG LDA VFU0 TOP OF FORM CODE JSB OTCH TRANSMIT CODE LDA LS00 DELAY UNTIL JSB OTCH FF IS FINISHED LDA SAVE3 RESTORE A-REG. JMP FF,I RETURN P+2 SAVE3 OCT 0 SPC 4 * OUTPUT A CR/LF TO LINE PRINTER SPC 1 RTLF NOP STA SAVE LDA VFU2 SINGLE SPACE CODE JSB OTCH SEND CHARACTER LDA SAVE RESTORE A JMP RTLF,I SAVE OCT 0 SKP * OUTPUT A-REG TO L.P. USING INTERRUPT * SYSTEM FOR PRINT COMPLETED. SPC 1 OUTI NOP STA SAVE1 SAVE A-REG STB SAVE2 SAVE B-REG OUTIA OTA CH TRANSFER WORD STF 0 TURN ON INTERRUPT SYS OUTIB STC CH,C SEND WORD SPC 1 LDA TIMEA DELAY FOR JSB TMRR,I TRANSMISSION CLF 0 TURN OFF INTERRUPT JSB RDY,I CHECK LP STATUS RSS LP NOT READY JMP *+3 LP READY LDA SAVE1 RESTORE A-REG JMP OUTIA TRY AGAIN OUTID CLC CH,C E031 JSB ERMS,I REPORT ERROR DEF MS031 CLC 0,C JMP TSTNN,I EXIT CURRENT TEST SPC 1 OUTIC CLF 0 TRANSMISSION COMPLETED LDA SAVE1 RESTORE A-REG LDB SAVE2 RESTOR B-REG JMP OUTI,I RETURN * * * OUTPUT A-REG TO L.P. USING SKIP ON * FLAG SET FOR PRINT COMPLETED. SPC 1 OTCH NOP STA SAVE1 SAVE A-REG STB SAVE2 SAVE B-REG CLB SET UP TIMEOUT COUNT OTCHA OTA CH TRANSFER WORD TO BUFFER OTCHB STC CH,C TRANSMIT WORD OTCHC SFS CH WORD COMPLETED ? JMP OTC1 NO OTCHG LDA SAVE1 RESTORE A-REG LDB SAVE2 RESTORE B-REG OTCHE CLC CH,C JMP OTCH,I RETURN OTC1 INB,SZB TIMEOUT ? JMP OTCHC LOOP LDA M1000 WAIT =1000 MS MAX FOR FORM FEED STA SCP OTCHX CLA,INA =1 FOR A 1 MS WAIT JSB TMRR,I OTCHF SFC CH INCREASE DELAY TIME JMP OTCHG FOR A ISZ SCP DONE WITH 48 1 MS WAITS? JMP OTCHX NO - GO DO ANOTHER 1 MS WAIT JSB RDY,I CHECK LP STATUS RSS LP NOT RDY JMP *+4 REPORT ERROR TIMEOUT LDA SAVE1 RESTORE A-REG CLB RESET TIMEOUT COUNT JMP OTCHA TRY AGAIN E030 JSB ERMS,I FLAG FAILED TO SET AFTER OUTPUT DEF MS030 CLC 0,C JMP TSTNN,I EXIT CURRENT TEST SAVE1 BSS 1 SAVE2 BSS 1 SAVE4 OCT 0 MS031 ASC 11,E031 LP FAILED TO INT/ MS030 ASC 12,E030 FLAG FAILED TO SET/ SKP TCJMP NOP LDA JMPI TRAP CELL JUMP TCJ STA CH STORE IN TRAP CELL LDA TCJMP,I LOCATION TO JUMP STA JMPIL STORE INSTRUCTION ISZ TCJMP INCREMENT RETURN JMP TCJMP,I RETURN P+2 JMPI JMP *+1,I JUMP INSTRUCTION JMPIL NOP SPC 4 PRTT NOP LDA EVFC GET VFU CODE JSB OUTI OUTPUT VFU JSB OTLP TELL OPERATOR JMP PRTT,I RETURN EVFC NOP PITB NOP EXCT NOP EXPN NOP SKP * OTLP PERFORMS TEXT STRING OUTPUT TO LP SPC 1 OTLP NOP JSB RDY,I CHECK LP STATUS NOP OTPP LDA B,I GET FIRST CHARACTER ALF,ALF POSITION UPPER CHARACTER AND .377 MASK CPA .57 TEST FOR '/' JMP OTLP,I EXIT JSB OUTI WRITE CHARACTER LDA B,I GET CHARACTER AGAIN AND .377 MASK LOWER CHARACTER CPA .57 TEST FOR '/' JMP OTLP,I EXIT JSB OUTI WRITE CHARACTER INB MOVE PTR TO NEXT WORD JMP OTPP CONTINUE SPC 2 .377 OCT 377 .57 OCT 57 SKP ORG ZCEND TST.0 EQU * CLEAR LP TST1 NOP BEFORE LDA TST1 RUN STA TSTNN Q * CLC 0,C * CLA INSURE WD ON CONTROLLER NOT PRINT CM TSTO OTA CH * JSB TST2,I CALL BI/O JMP *+2 TST2 DEF TST00 CLC 0,C CLEAR LP JSB RDY,I CHECK LP STATUS NOP JMP TST.0,I SPC 2 * TEST 01 * MANUAL CONTROL TEST (MCT) SPC 1 TST01 EQU * MCT NOP MANUAL CONTROL TEST LDA MCT STORE STA TSTNN RETURN ADDRESS LDB BTCK CHECK JSB SWRT,I FOR OPERATOR JMP MCT,I INTERVENTION H040 JSB MSGH,I TURN LP PWR OFF PRESS RUN DEF MCTM0 LDA EXP1 EXPECTED DATA LDB ER50 STATUS ERROR MESSAGE JSB CKST CHECK STATUS SPC 1 H041 JSB MSGH,I TURN LP PWR ON, DEF MCTM1 READY LP,PRESS RUN LDA EXP2 EXPECTED STATUS LDB ER51 STATUS ERROR MESSAGE JSB CKST CHECK STATUS SPC 1 H042 JSB MSGH,I SET LP TO OFF LINE PRESS RUN DEF MCTM2 LDA EXP3 EXPECTED STATUS LDB ER52 STATUS ERROR MESSAGE JSB CKST CHECK STATUS SPC 1 H043 JSB MSGH,I SET LP TO ON LINE PRESS RUN DEF MCTM3 LDA EXP2 EXPECTED STATUS LDB ER53 STATUS ERROR MESAGE JSB CKST CHECK STATUS SPC 1 H044 JSB MSGH,I OPEN DRUM GATE DEF MCTM4 LDA EXP4 EXPECTED STATUS LDB ER54 STATUS ERROR MESSAGE JSB CKST CHECK STATUS SPC 1 SPC 1 H046 JSB MSGH,I REMOVE PAPER,CLOSE DRUM GATE DEF MCTM6 LDA EXP4 EXPECTED STATUS LDB ER55 STATUS ERROR MESSAGE JSB CKST CHECK STATUS SPC 1 H047 JSB MSGH,I RESTORE PAPER DEF MCTM7 JSB FF TOP OF FORM JMP MCT,I EXIT SPC 2 ER50 ASC 01,50 ER51 ASC 01,51 ER52 ASC 01,52 ER53 ASC 01,53 ER54 ASC 01,54 ER55 ASC 01,55 DMSG DEF 3MSG50 SKP * TEST 02 * RIPPLE PRINT TEST (RPT) SPC 1 TST02 EQU * RPT NOP RIPPLE PRINT TEST LDA RPT STORE STA TSTNN RETURN ADDRESS JSB TCJMP TRAP CELL JUMP DEF OUTIC LDA DM96 -96 NUMBER OF PRINTING STA CNTR CHARACTERS LDA .40 FIRST PRINTING CHARACTER STA CHAR STORE STA CHAR1 CHARACTER RPTC LDB DM136 -136 NUMBER OF CHARACTER/LINE RPTA LDA CHAR GET CHARACTER JSB OUTI SEND CHARACTER ISZ CHAR NEXT LDA CHAR CHARACTER CPA .200 LAST CHARACTER ? JMP *+2 YES JMP RPTB NO LDA .40 FIRST CHARACTER STA CHAR RESTORE CHARACTER RPTB INB,SZB LAST CHARACTER/LINE JMP RPTA NO JSB RTLF CARRIAGE RETURN LINE FEED ISZ CHAR1 INCREMENT CHARACTER LDA CHAR1 FOR NEXT STA CHAR ROW ISZ CNTR LAST ROW ? JMP RPTC LOOP JSB FF TOP OF FORM JMP RPT,I EXIT SKP * TEST 03 * TRIANGULAR PRINT TEST (TPT) SPC 1 TST03 EQU * TPT NOP TRIANGULAR PRINT TEST LDA TPT STORE STA TSTNN RETURN ADDRESS JSB TCJMP TRAP CELL JUMP DEF OUTIC LDB DM136 -136 STB TMP STORE COUNT TPTA LDA CHARM " M " LDB TMP NUMBER OF PRINT POSITION/LINE TPTB JSB OUTI SEND CHARACTER INB,SZB END OF LINE JMP TPTB NO ISZ TMP DECREMENT LINE NUMBER RSS JMP TPTC EXIT JSB RTLF CARRIAGE RETURN LINE FEED JMP TPTA LOOP TPTC JSB FF TOP OF FORM JMP TPT,I EXIT SKP * TEST 04 * VERTICAL FORMAT CONTROL TEST (VFCT) SPC 1 TST04 EQU * VFCT NOP VERTICAL FORMAT CONTROL TESTM LDA VFCT STORE STA TSTNN RETURN ADDRESS JSB TCJMP TRAP CELL JUMP DEF OUTIC CLA POINT TO STA PITB TABLE VF1 LDA DT1 NUMBER OF TIMES, TABLE ADDRESS ADA PITB NEXT ADDRESS LDA A,I GET NUMBER CMA,INA MAKE NEG STA EXCT STORE NUMBER LDA DT2 VFU TABLE ADDRESS ADA PITB NEXT ADDRESS LDA A,I GET VFU CODE STA EVFC STORE CODE EVFD LDA DT3 MESSAGE TABLE ADDRESS ADA PITB NEXT ADDRESS LDB A,I GET MESSAGE JSB PRTT PRINT VFU CODE AND MESSAGE ISZ EXCT PRINT CODE AGAIN ? JMP EVFD YES LDA PITB TABLE POINTER CPA D27 LAST VFU CODE & MESSAGE ? JMP VF2 ISZ PITB NEXT POINT IN TABLE JMP VF1X,I LOOP (USE BASE PAGE LINK) SPC 1 VF2 CLA POINT TO STA PITB TABLE VF3 LDA DT1E EXPECTED DATA TABLE ADA PITB NEXT ADDRESS LDA A,I GET DATA STA EXPN AND STORE LDA DT2E VFU TABLE ADDRESS ADA PITB NEXT ADDRESS LDA A,I GET VFU CODE STA EVFC AND STORE LDA DT3E MESSAGE TABLE ADDRESS ADA PITB NEXT ADDRESS LDB A,I GET MESSAGE JSB PRTT PRINT VFU CODE AND MESSAGE LDA DT4E ERROR CODE TABLE ADA PITB NEXT ADDRESS LDB A,I GET ERROR CODE LDA EXPN AND STORE JSB CKST CHECK STATUS LDA PITB TABLE POINTER CPA .3 LAST VFU CODE & MESSAGE ? JMP VF4 YES ISZ PITB NEXT POINTER IN TABLE JMP VF3 LOOP VF4 JSB FF TOP OF FORM JMP VFCTX,I EXIT (DOUBLE INDIR THRU BASE PAGE) SPC 1 SKP * TEST 05 * CHARACTER SET TEST (CST) SPC 1 TST05 EQU * CST NOP CHARACTER SET TESTn LDA CST STORE STA TSTNN RETURN ADDRESS CLA FIRST CHARACTER CSTA LDB DM136 -136 NUMBER OF CHARACTER/LINE JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER IN COLUMN JMP *-2 NO JSB RTLF CR/LF INA NEXT CHARACTER CPA .200 LAST CHARACTER ? RSS YES JMP CSTA NO JSB FF TOP OF FORM JMP CST,I EXIT SKP * TEST 06 * OVER PRINT TEST SPC 1 TST06 EQU * OPT NOP OVER PRINT TEST LDA OPT STA TSTNN LDA DH CHARACTER "H" LDB DM136 -136 NUMBER OF CHARACTER/LINE JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER IN COLUMN ? JMP *-2 NO LDA LS00 JSB OTCH LDA DI CHARACTER "I" LDB DM136 -136 JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER IN COLUMN ? JMP *-2 NO JSB RTLF PRINT CHARACTER LDB DM136 SET UP COUNT LDA AA ASCII A JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER ? JMP *-2 NO LOOP LDB DM136 SET UP COUNT INA ASCII B JSB OTCH SEND CHARACTER INB,SZB LAST CHARACTER ? JMP *-2 NO LOOP JSB RTLF PRINT ONLY CHARACTER ' A ' JSB FF TOP OF FORM JMP OPT,I EXIT SKP * TEST 07 * DMA OPERATION TEST (DMA) SPC 1 TST07 EQU * DMA NOP DMA OPERATION TEST LDA DMA STORE STA TSTNN RETURN ADDRESS LDA CPTO CHECK FOR AND .204 DMA OPTION SZA,RSS DMA HARDWARE ? JMP H033 NO DMA JSB RDY,I CHECK LP STATUS NOP LDA DM96 NUMBER OF STA TMP LINE TO PRINT LDA .177 RESET PRINTING STA CYLC CHARACTER DMAA JSB CYBFI SET CYCLIC PATTERN IN BUFFER LDA USSC CONFIGURE DMA CONTROL AND .77 MASK OFF OPTION BITS IOR CW " OR " IN CONTROL BITS OTA DMAH INITALIZE DMA CLC DMAL * LDA CYBFD * OTA DMAL * STC DMAL * LDA WCNT * OTA DMAL * DMSC1 STF CH START LP STC DMAH,C START DMA OPERATION CLB START TIME-OUT- LPA INB,SZB LOOP FOR DMA RSS * JMP LPB * SFS DMAH * JMP LPA * JMP LCC1 * LPB CLC 0 REPORT TIME-OUT ERROR E034 JSB ERMS,I DMA FLAG FAILED DEF DMA2 TO SET AFTER DMA COMPLETION JMP DMAB ABORT CURRENT TEST LCC1 CLB START TIME-OUT- LPD INB,SZB LOOP FOR INTERFACE RSS * JMP LPC * DMSC2 SFS CH * JMP LPD * JMP LCC * LPC CLC 0 REPORT TIME-OUT ERROR E035 JSB ERMS,I INTERFACE FLAG DID'NT SET DEF DMA3 AFTER DMA COMPLETION JMP DMAB ABORT CURRENT TEST LCC CLC DMAH IS DMA TEST ISZ TMP FINISHED ? JMP DMAA NO DMAB JSB FF TOP OF FORM JMP DMA,I EXIT H033 JSB MSGC,I REPORT MESSAGE DEF DMA1 MESSAGE ADDRESS JMP DMA,I EXIT SPC 1 DMAL EQU 2 DMAH EQU 6 WCNT EQU DM137 SPC 1 CW OCT 100000 DMA2 ASC 9,E034 DMA TIME OUT/ DMA1 ASC 10,H033 DMA NOT CONFIG/ DMA3 ASC 19,E035 I-O FLAG NOT SET AFTER DMA COMP/ SKP * OPERATOR DESIGN SECTION * OPDSN NOP LDA 112B CHECK FOR CONSOLE DEVICE SZA,RSS JMP OPDSN,I NO SO DONT DO OPDSN LDB BTCK CHECK JSB SWRT,I FOR OPERATOR JMP OPDSN,I INTERVENTION LDA OPTR STORNE STA TSTNN RETURN ADDRESS CLA,CLE TELL OPERATOR THAT LDB MSG1 HE IS IN OPERATOR DESIGN JSB FMTR,I OPDSI LDA FWAM INITIALIZE PROGRAM STA PRPTR POINTER CLA AND STA PRPTR,I END OF PROGRAM STA DBC BUFFER COUNT STA DBT BUFFER TYPE IRQ LDA .2 LDB .MSG1 OUTPUT @ JSB SLOP,I LDB IBUFD LDA .D25 JSB SLIN,I GET INPUT FROM OPERATOR SZA,RSS WAS THERE ANY INPUT JMP *-4 NO - SO ASK AGAIN * LDB IBUFD * RBL * ADB A * STB IBUFP * ADD CR TO LDA .15 * END OF BUFFER JSB A2BUF * LDB IBUFD SET-UP RBL INPUT BUFFER STB IBUFP POINTER * JSB GETB GET INPUT BLOCK JMP INER NO INPUT SEZ,RSS IF IT'S ASCII JMP PCMD IT'S A COMMAND STA TMP SAVE IT * SZA,RSS IF IT'S A ZERO JMP INER THEN IT'S AN ERROR SSA IF NEG THEN ERROR JMP INER LDA MXNM CHECK FOR MAX NUMBER CMA ADA TMP SSA,RSS IF OVER 999 JMP INER THEN ERROR JSB GETB GET STATEMENT TYPE JMP INER NO MORE ERROR SEZ SHOULD BE ASCII JMP INER NO-SO ERROR SKP JSB FNDST FIND STATEMENT TYPE JMP INER NOT FOUND STA SVB STB TMP+1 ALF,ALF INPRN AND .177 CPA AA IS IT ASCII? JMP TAA YES CPA AI IS IT INTEGER? JMP TAI YES CPA AK IS IT OCTAL? JMP TAK YES JMP INPRC-1 * TAA JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ IS IT ASCII JMP INER NO - THEN ERROR JMP INPRC OK * TAI JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR JMP INPRC OK * TAK JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR LDA B OK JMP INPRC * CLA NO DATA SO MAKE IT ZERO INPRC LDB SVB SZB STA TMP+2 SZB,RSS STA TMP+3 LDA SVB IS THIS FIRST PRAM SZA,RSS ? JMP *+4 CLB STB SVB JMP INPRN SKP * PUT STATEMENT IN QUE * JSB FNDLN FIND LINE NUMBER JMP INSTR NOT FOUND ISZ PRPTR FOUND IT LDA TMP+1 JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+2 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+3 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT JMP IRQ ASK FOR MORE * INSTR LDA PRPTR CHECK ADA .5 TO CMA,INA SEE IF ADA LWAM QUE FULL SSA,RSS ? JMP .STR NO - OK STORE IT LDB MSG4 YES- TELL OPERATOR CLA,CLE JSB FMTR,I JMP IRQ * MSG4 DEF *+1 ASC 15,QUE FULL STATEMENT NOT LOADED/ .STR LDA TMP MOVE LINE NUMBER LDB PRPTR,I INTO PLACE STA PRPTR,I SZA,RSS IF NUMBER=0 THEN JMP IRQ STOP STB TMP ELSE ISZ PRPTR MOVE BLOCK LDA TMP+1 IN LDB PRPTR,I TO END STA PRPTR,I OF STB TMP+1 PROGRAM ISZ PRPTR LDA TMP+2 LDB PRPTR,I STA PRPTR,I STB TMP+2 ISZ PRPTR LDA TMP+3 LDB PRPTR,I STA PRPTR,I STB TMP+3 ISZ PRPTR JMP .STR SKP * FIND STATEMENT * E=0=ASCII COMPARE * E=1=POINTER COMPARE * FNDST NOP STA SVB SAVE TYPE LDB STTBD STATEMENT TABLE DEF SEZ ASCII OR POINTER? ADB .2 IT'S THE POINTER FNDSL LDA B,I CPA .M2 END OF STANDARD TABLE RSS YES JMP *+3 NO LDB STUD GET STANDARD USER TABLE JMP FNDST+3 TRY IT CPA .M1 IS IT THE TERMINATOR JMP FNDST,I YES - NOT FOUND CPA SVB IS IT THIS CHARACTER JMP *+3 YES ADB .3 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT ISZ FNDST FOUND - ADJUST RETURN SEZ ASCII OR POINTER? ADB .M3 IT'S THE POINTER INB LDA B,I RETRIEVE PARAMETER TYPES INB AND LDB B,I PROCESSOR POINTER JMP FNDST,I * * FIND LINE NUMBER IN QUE =TMP * FNDLN NOP LDB FWAM START AT FIRST STATEMENT STB PRPTR LDA B,I SZA,RSS IF ZERO JMP FNDLN,I THEN NOT FOUND CMA,INA ADD THE TWO ADA TMP NUMBERS SZA,RSS IF EQUAL JMP *+5 THEN FOUND SSA IF IT GOES NEG. JMP FNDLN,I THEN NOT FOUND ADB .4 TRY NEXT STATEMENT JMP FNDLN+2 ISZ FNDLN JMP FNDLN,I SKP * GET A CHARACTER FROM INPUT BUFFER * GETC NOP LDB IBUFP JSB BUF2A CPA .15 IF CR RETURN P+1 JMP GETC,I YES ISZ IBUFP MOVE POINTER TO NEXT CHARACTER ISZ GETC ADJUS GOOD RETURN P+2 JMP GETC,I RETURN * BUF2A NOP CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2CHR TO AREG SEZ,RSS UPPER OR LOWER? ALF,ALF UPPER AND .177 MASK UNWANTED CHARACTER JMP BUF2A,I RETURN. * A2BUF NOP STA GETC SAVE CHARACTER LDB IBUFP GET SLB,INB OPPSITE ADB .M2 CHARACTER JSB BUF2A v ALF,ALF IOR GETC ADD NEW CHARACTER SEZ SHOULD IT BE SWAPPED? ALF,ALF YES STA B,I STORE IT ISZ IBUFP MOVE TO NEXT CHR. SPACE JMP A2BUF,I * * * * * * * * * * * * * * * SKP * GET INPUT BLOCK FROM INPUT BUFFER * GETB NOP JSB GETC GET A CHARACTER JMP GETB,I NO DATA JSB CSC COMMA OR SPACE CHECK ISZ GETB ADJUST RETURN CPA MINUS IF IT'S NEG SIGN JMP NUMIN+1 THEN PROCESS AS A NUMBER JSB DGCK IF IT'S A NUMBER JMP NUMIN THEN PROCESS AS A NUMBER ALF,ALF NO - PROCESS A ASCII STA AIN SAVE FIRST CHARACTER JSB GETC GET SECOND CHARACTER LDA SPC NO DATA USE SPACE CLE INDICATE ASCII JSB CSC IOR AIN ADD FIRST STA AIN SAVE IT JSB GETC MOVE TO COMMA OR SPACE LDA SPC NO DATA USE SPACE CLE JSB CSC READ TO JMP *-4 NEXT SPACE OR COMMA * CSC NOP CPA COMA IS IT A COMMA JMP *+4 YES CPA SPC IS IT A SPACE JMP *+2 YES JMP CSC,I NEITHER SO RETURN LDA AIN RETRIEVE CHR LDB BIN JMP GETB,I RETURN * * * * * * * * * * * * * * * SKP NUMIN CCB,RSS INDICATE POSITIVE CLB INDICATE NEGATIVE STB NFLG SAVE FLAG ADB IBUFP MOVE POINTER BACK IF NECESSARY CLE,ERB SET UPPER LOWER FLAG CLA CALL FOR INTEGER JSB AS2N,I CONVERT IT STA AIN SAVE IT LDB NFLG ADB IBUFP CLE,ERB CCA CALL FOR OCTAL JSB AS2N,I CONVERT IT STA BIN SAVE IT LDA AIN RETRIEVE LDB BIN NUMBERS ISZ NFLG WAS A NEG ENTERED? RSS JMP *+3 QHFB NO CMA,INA YES CMB,INB STA AIN SAVE NUMBER STB BIN JSB GETC GET NEXT CHARACTER LDA SPC NO DATA USE SPACE CCE INDICATE IT'S A NUMBER JSB CSC READ TO JMP *-4 NEXT SPACE OR COMMA * AIN NOP BIN NOP NFLG NOP * * CHECK IF AREG = DIGIT * DGCK NOP STA BUF2A SAVE CHARACTER ADA .M60 ADD -60 OCTAL SSA SHOULD STILL BE POS.? ISZ DGCK NO - NOT A DIGIT ADA .M10 ADD -10 SSA,RSS SHOULD GO NEG? ISZ DGCK NO - ADJUST RETURN LDA BUF2A RETRIEVE CHARACTER JMP DGCK,I RETURN ;sH 5F 02618-18004 1633 S 0146 2613A/2618A LINE PRINTER DIAG             H0101  SKP * PROGRAM COMMAND * PCMD CPA ABY EXIT OPDSN? JMP OPDSN,I YES CPA ALI LIST REQUEST? JMP PLI YES CPA ADL DELETE A LINE? JMP PDL YES CPA AGO START EXECUTION? JMP PGO YES CPA ADB DEFINE BUFFER? JMP PDB YES * NOT FOUND - ERROR INER LDB MSG2 INPUT ERROR CLA,CLE MESSAGE JSB FMTR,I JMP IRQ TRY AGAIN * MSG1 DEF *+1 ASC 7,OPDSN SECTION/ .MSG1 DEF *+1 OCT 40177 MSG2 DEF *+1 ASC 7,ILLEGAL INPUT/ * RUNER STA SVB SAVE ERROR NUMBER ADA .M4 IF >3 THEN SSA ? JMP *+4 FORCE PRINT LDB SW11 CHECK TO PRINT ERROR JSB SWRT,I JMP RUNN NO DON'T PRINT LDB .MSG2 GET MESSAGE CLA,CLE JSB FMTR,I LDB SVB OUTPUT ERROR NUMBER CLA,INA JSB FMTR,I LDB CULN OUTPUT LINE NUMBER CLA,INA JSB FMTR,I RUNN LDA SVB IF >3 THEN ADA .M4 SSA ? JMP IRQ STOP RUNR LDB SW14 CHECK TO CONTINUE JSB SWRT,I RSS JMP IRQ CLA JMP PGOR * .MSG2 DEF *+1 ASC 9,ERROR # IN LINE #/ SKP * LIST PROGRAM PLI LDA FWAM SET STARTING OF LIST STA PRPTR POINTER JSB GETB GET NEXT BLOCK CLA,INA NO DATA SEZ,SZA,RSS IF ASCII OR ZERO THEN ERROR JMP INER CMA,INA STA TMP SAVE FIRST LINE NUMBER JSB GETB GET NEXT BLOCK LDA MXNM NO DATA SEZ,SZA,RSS IF ASCII OR ZERO THEN ERROR JMP INER CMA STA TMP+1 SAVE LAST LINE NUMBER CMA,INA CHECK FIRST <= LAST ADA TMP SSA ? JMP INER NO - INPUT ERROR PLIL LDA PRPTR,I CHECK TO PRINT STATEMNET SZA,RSS IS IT THE END hOF LIST JMP LIEND YES ADA TMP NO SSA < FIRST REQ JMP LINXT YES LDA PRPTR,I ADA TMP+1 SSA,RSS > LAST REQ JMP LIEND YES LDA PRPTR,I CONVERT AND CCB ADB IBUFD PACK CLE STATEMENT JSB I2AS,I NUMBER LDB IBUFD ADD NUMBER TO POINTER ADB .2 RBL STB IBUFP LDA SPC PUT SPACE IN BUFFER JSB A2BUF ISZ PRPTR LDA PRPTR,I * ISZ PRPTR * CCE * SET TO LOOK FOR POINTER JSB FNDST * FIND STATEMENT JMP OPDSN+1 * ABORT IF ANY ERROR STA TMP+2 * SAVE STATEMENT STB SVB * SAVE PRAM TYPES ALF,ALF * AND .177 * PUT JSB A2BUF * STATEMENT TYPE LDA TMP+2 * IN AND .177 * BUFFER JSB A2BUF LDA SPC ADD SPACE TO BUFFER JSB A2BUF SKP LDA SVB RETRIEVE PRMS TYPES ALF,ALF MOVE TO FIRST PARAMETER PLIP LDB PRPTR,I CHECK IF NO PARAMETER SZB,RSS ? JMP PLIC NO SO DON'T PROCESS IT AND .177 CPA AA IS IT ASCII? JMP PAA YES CPA AI IS IT INTEGER? JMP PAI YES CPA AK IS IT OCTAL? JMP PAK YES JMP PLIC TYPE NOT FOUND SO SKIP IT * PAA LDA PRPTR,I GET CHARACTERS ALF,ALF AND .177 FIRST ONE TO BUFFER JSB A2BUF LDA PRPTR,I AND .177 SECOND ONE TO BUFFER JSB A2BUF JMP PLIC * PAI LDA PRPTR,I CLB SSA,RSS IF POS CCB MOVE BUFFER POINTER BACK ONE ADB IBUFP STB IBUFP CLE,ERB JSB 123B,I PAE LDA IBUFP ADA .6 STA IBUFP JMP PLIC * PAK LDA PRPTR,I LDB IBUFP CLE,ERB JSB 124B,I e JMP PAE SKP PLIC ISZ PRPTR MOVE TO NEXT PARAMETER LDA SPC ADD SPACE TO BUFFER JSB A2BUF LDA SVB SZA,RSS JMP *+4 CLB STB SVB JMP PLIP LDA A/ ADD TERMINATOR JSB A2BUF LDB IBUFD CLA,CLE OUTPUT TO SLOW DEVICE JSB FMTR,I JMP PLIL DO NEXT INSTRUCTION * LIEND LDB MSG3 OUTPUT CLA,CLE LIST END JSB FMTR,I JMP IRQ * MSG3 DEF *+1 ASC 7,**LIST END**/ * LINXT LDA PRPTR SKIP OVER ADA .4 STATEMENT STA PRPTR JMP PLIL * SKP * DELETE A LINE OR THE PROGRAM * PDL JSB GETB GET LINE NUMBER JMP INER NOT FOUND THEN ERROR SEZ,RSS IF IT'S ASCII JMP PDLA THEN CHECK FOR ALL STA TMP SAVE IT JSB FNDLN FIND IT JMP IRQ NOT FOUND ADB .4 PDLL LDA B,I DELETE STA PRPTR,I THE LINE ISZ PRPTR AND MOVE LDA B REST CMA OF PROGRAM ADA LWAM UP SSA JMP IRQ INB JMP PDLL * PDLA CPA AAL IF ASCII AL THEN DELETE ALL JMP OPDSI OF THE CURRENT PROGRAM JMP INER IF NOT IT'S AN ERROR * AAL ASC 1,AL * * * * * * * * * * * * * * * SKP * PROCESS GO * PGO LDA GSPTS CLEAR GO SUB TABLE STA GSPTR JSB GETB GET STARTING LINE NUMBER CLA,CCE NO NUMBER FAKE IT SEZ,RSS IF IT'S ASCII JMP INER THEN IT'S AN ERROR SZA IF IT'S ZERO JMP *+6 LDB FWAM START AT BEGINNING STB PRPTR LDA PRPTR,I STA TMP JMP *+4 STA TMP PGOL JSB FNDLN JMP INER ISZ PRPTR LDA PRPTR,I STA TMP+1 ASCII STATEMENT ISZ PRPTR LDA PRPTR,I STA TMP+2 PARAM A ISZ PRPTR LDA PRPTR,I STA TMP+3 PARAM B ISZ PRPTR LDA TMP STA CULN SAVE CURRENT LINE NUMBER SZA,RSS JMP IRQ LDA PRPTR,I STA TMP NEXT LINE NUMBER LDA TMP+2 GET PARAM A LDB TMP+3 GET PARAM B JSB TMP+1,I GO TO ROUTINE PGOR STA SVB LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP IRQ LDA SVB SSA,RSS WAS THERE AN ERROR? JMP *+3 NO CMA,INA YES - MAKE NUMBER POSITIVE JMP RUNER AND REPORT IT SZA,RSS WAS THERE A LINE CHANGE JMP PGOL+2 STA TMP YES JSB FNDLN FIND IT RSS JMP PGOL+2 FOUND PGOE CLA,INA NOT FOUND JMP RUNER SO RUN ERROR SKP * DEFINE BUFFER * PDB JSB GETB GET BUFFER COUNT JMP INER NO INPUT SO ERROR SEZ,RSS IF IT'S ASCII JMP INER THEN IT'S AN ERROR SZA,RSS IF IT'S ZERO JMP INER THEN IT'S AN ERROR CMA,INA STA TMP SAVE THE NUMBER JSB GETB GET TYPE JMP INER NO INPUT SO ERROR SEZ IF IT'S A NUMBER JMP INER IT'S AN ERROR CPA APA IS IT PACKED ASCII JMP DBPA YES ALF,ALF MOVE CHR TO LOW ORDER AND .177 MASK OFF UPPER CPA AA IS IT ASCII JMP DBA YES CPA AI IS IT INTEGER JMP DBI YES CPA AK IS IT OCTAL JMP DBK YES JMP INER NONE OF ABOVE SO ERROR * DBIC NOP LDB TMP CHECK IF ADB DBIC,I NUMBER SSB IS TOO LARGE? JMP INER YES STA DBT SAVE BUFFER TYPE LDA TMP STA DBC AND COUNT LDA DBD SET-UP BUFFER STA IBUFP POINTER ISZ DBIC JMP DBIC,I * DBIN NOP CALL FOR INPUT STA SVB SAK)VE INPUT NUMBER LDA SVB LDB IBUFD JSB 104B,I SZA,RSS JMP *-4 JMP DBIN,I SKP DBINC NOP CLA CLEAR STA IBUF * STA IBUF+1 * STA IBUF+2 * STA IBUF+3 BUFFER LDA .6 CALL JSB DBIN FOR INPUT CPA SVB TEST FOR CR/LF RSS YES JMP DBINC,I NO CLA JSB SLOP,I DO CR/LF JMP DBINC,I EXIT SKP DBPA JSB DBIC INPUT COUNT CHECH DEC 300 MAX INPUT LDA DBD SET-UP BUFFER RAL POINTER STA IBUFP DBPAL CLA,INA GET ONE CHARACTER JSB DBIN LDA IBUF PUT IT ALF,ALF IN AND .177 JSB A2BUF THE BUFFER ISZ TMP IS THAT ALL JMP DBPAL NO JMP DBEX YES DBA JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT ALLOWED DBAC CLA,INA GET ONE CHARACTER JSB DBIN LDA IBUF LOAD IT ALF,ALF ROTATE IT AND .177 MASK OFF UPPER STA IBUFP,I PUT IT IN BUFFER ISZ IBUFP MOVE TO NEXT LOCATION ISZ TMP IS THAT ALL JMP DBAC NO DBEX CLA YES - DO A CR-LF JSB SLOP,I JMP IRQ * DBI JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT DBIL JSB DBINC CALL FOR INPUT LDB IBUFD CONVERT CLA,CLE INPUT JSB AS2N,I STA IBUFP,I STOR IT ISZ IBUFP MOVE TO NEXT SPOT ISZ TMP IS THAT ALL JMP DBIL JMP DBEX * DBK JSB DBIC INPUT COUNT CHECK DEC 150 MAX INPUT DBKL JSB DBINC CALL FOR INPUT LDB IBUFD CONVERT IT CCA,CLE JSB AS2N,I STA IBUFP,I STORE IT ISZ IBUFP MOVE TO NEXT ISZ TMP IS THAT ALL JMP DBKL NO JMP DBEX YES SKP O^ * WAIT FOR OPERATOR * WAP NOP LDB WAPM GET MESSAGE CLA,CLE JSB FMTR,I OUTPUT IT LDB CULN WITH CURRENT LINE NUMBER CLA,INA JSB FMTR,I WAPL LDA .D25 CALL FOR JSB DBIN INPUT LDA IBUF CHECK IF "CO" CPA ACO ? JMP WAPX YES CPA AST STOP JMP IRQ YES * WAPE LDB MSG2 TELL OPERATOR OF ERROR CLA,CLE JSB FMTR,I JMP WAPL AND TRY AGAIN * WAPX CLA NOP JMP WAP,I CONTINUE * WAPM DEF *+1 ASC 4,# WAIT/ * * * * * PROCESS GO TO STATEMENT * GTP NOP SZA IF ZERO SSA OR NEG. JMP PGOE THEN ERROR JMP GTP,I SKP * PROCESS GOSUB * GSP NOP SZA IF LINE =0 SSA OR NEG. JMP PGOE THEN ERROR ISZ GSPTR MOVE TO NEXT BLOCK STB SVB SAVE REP COUNT LDB GSPTR CHECK CPB GSPTE IF THERE IS ROOM JMP GSPE NO - SO ERROR LDB PRPTR SAVE PROGRAM POINTER STB GSPTR,I LOCATION ISZ GSPTR LDB SVB GET REP COUNT SZB,RSS INB SSB,RSS IF NOT NEG. CMB,INB MAKE IT NEG STB GSPTR,I JMP GSP,I * GSPE LDA .2 JMP RUNER * GSPTR NOP GSPTS DEF * BSS 30 GSPTE DEF *-2 * * * * * * * * * * * * * * * * * * * * SKP * PROCESS RTN STATEMENT * RTP NOP LDA GSPTR CHECK IF THERE HAS CPA GSPTS BEEN A GOSUB JMP RTPE NO - THEN ERROR ISZ GSPTR,I FINISHED WITH LOOP JMP RTPN NO LDA GSPTR YES ADA .M2 MOVE POINTER BACK TWO STA GSPTR INA RESET LINE NUMBER LDA A,I STA PRPTR LDA PRPTR,I STA TMP CLA =JMP RTP,I * RTPN CCA ADA GSPTR LDA A,I ADA .M2 LDA A,I JMP RTP,I * RTPE LDA .3 JMP RUNER * * * * * * * * SKP * OUTPUT A MESSAGE * MSP NOP STA MSPM+2 STB MSP2 LDB MSPM CLA,CLE JSB FMTR,I CLA,INA LDB MSP2 JSB FMTR,I LDA MSPM+2 CHECK IF STOP CPA AST ? JMP *+3,I YES CLA JMP MSP,I * DEF IRQ MSP2 NOP MSPM DEF *+1 ASC 4,* XX #/ * * * * PROCESS DELAY STATEMENT * DLP NOP SZA IF IT'S ZERO FORGET IT JSB TMRR,I GO WAIT JMP DLP,I NOW RETURN TO CALLER * * * * * * * * * * * * * * * * * * * * SKP MXNM DEC 9999 SW14 OCT 40000 SW11 OCT 4000 SW9 OCT 1000 A/ OCT 57 AI OCT 111 AK OCT 113 ABY ASC 1,BY ALI ASC 1,LI ADL ASC 1,DL AGO ASC 1,GO ADB ASC 1,DB APA ASC 1,PA ACO ASC 1,CO AST ASC 1,ST MINUS OCT 55 COMA OCT 54 SPC OCT 40 IBUFP NOP SVB NOP PRPTR NOP IBUFD DEF IBUF NOP IBUF BSS 13 OPEND EQU * * * * SKP STTBD DEF *+1 * ASC 1,WA ASC 1, DEF WAP * ASC 1,GT ASC 1,I DEF GTP * ASC 1,GS ASC 1,II DEF GSP * ASC 1,RT ASC 1, DEF RTP * ASC 1,MS ASC 1,AI DEF MSP * ASC 1,TD ASC 1,I DEF DLP * DEC -2 DEC -2 DEC -2 * * * * * * * * SKP STUDD ASC 1,SR ASC 1, DEF SRP * ASC 1,SC ASC 1,KI DEF SCP * ASC 1,CP ASC 1,II DEF CPP * ASC 1,OC ASC 1,AI DEF OCP * ASC 1,PC ASC 1, DEF CLP * ASC 1,FF ASC 1,AI DEF FFP * ASC 1,VF ASC 1,AI DEF VFP * DEC -1 DEC -1 DEC -1 80.* SKP MCTM0 ASC 13,H040 PWR OFF LP,PRESS RUN/ MCTM1 ASC 17,H041 PWR ON, ON LINE LP,PRESS RUN/ MCTM2 ASC 15,H042 LP TO OFF LINE,PRESS RUN/ MCTM3 ASC 15,H043 LP TO ON LINE,PRESS RUN/ MCTM4 ASC 15,H044 OPEN DRUM GATE,PRESS RUN/ MCTM6 ASC 17,H046 REMOVE PAPER,CLOSE DRUM GATE, ASC 05,PRESS RUN/ MCTM7 ASC 16,H047 RESTORE PAPER, ON LINE LP, MCTM8 ASC 5,PRESS RUN/ SPC 2 EX1 OCT 100001 OCT 120001 OCT 100001 OCT 110001 SPC 1 MSG DEF MSG26 DEF MSG25 DEF MSG27 DEF MSG28 SPC 1 VFU10 OCT 100111 VFU9 OCT 100110 VFU11 OCT 100112 VFU12 OCT 100113 SPC 1 ER60 ASC 01,60 ER61 ASC 01,61 ER62 ASC 01,62 ER63 ASC 01,63 SPC 1 MSG25 ASC 02,CH9/ MSG26 ASC 03,CH10/ MSG27 ASC 03,CH11/ MSG28 ASC 03,CH12/ SPC 1 SKP RDYI NOP STA SAVE5 SAVE A STB SAVE6 AND B-REG RDY1 LIA CH GET STATUS AND MSK MASK OFF BITS 15 & 14 CPA RDY4 IS LP RDY ? JMP RDY2 YES EQ32 JSB ERMS,I REPORT ERROR DEF RDY3 LP NOT RDY JMP RDYI,I RETURN P+1 RDY2 CLB CHECK DEMAND BIT DMD1 LIA CH GET STATUS SLA,RSS BUSY ? JMP DMD2 YES LDA SAVE5 RESTORE LDB SAVE6 A&B-REG ISZ RDYI RETURN P+2 JMP RDYI,I EXIT DMD2 INB,SZB TIMEOUT ? JMP DMD1 LOOP E036 JSB ERMS,I REPORT TIMEOUT ERROR DEF DMD3 E036 DEMAND BUSY CLC 0,C JMP TSTNN,I ABORT CURRENT TEST SPC 1 SAVE5 OCT 0 SAVE6 OCT 0 MSK OCT 140000 RDY4 EQU LS00 RDY3 ASC 08,E032 LP NOT RDY/ DMD3 ASC 09,E036 DEMAND BUSY/ FWAA EQU * END 50 6 C 07200-90003 A S 0111 HP7200A/7202A VERIFY 10&15 CPS ONLY             H0101  7200 PERFORMANCE VERIFICATION TAPE HEWLETT-PACKARD PART NO. 07200-90003 STOP THE TAPE READER WITHIN TWO SECONDS EACH TIME THE BELL RINGS. PERFORM THE NECESSARY CHECKS OR OPERATIONS WHICH THIS TAPE SPECIFIES, THEN RESTART THE TAPE READER. NO ACTION OTHER THAN THAT SPECIFIED SHOULD OCCUR.  TURN POWER AND CHART HOLD "ON"  SCALE THE PLOTTING SURFACE (USING THE GRAPH LIMIT CONTROLS) FOR 15 MAJOR DIVISIONS IN X AND 10 MAJOR DIVISIONS IN Y  DEPRESS "LOWER LEFT"; RELEASE "TTY MUTE"  PLTL PLOT LAMP "ON"  PLTT PLOT LAMP "OFF"  PLTP PLOT LAMP "ON"  PLTL 0000 0000 PEN "DOWN"  IMPROPER FORMAT (IF) LAMP "ON" 9999 IF LAMP "OFF"; PEN "UP"  9999 99999 IF LAMP "ON" 9 IF LAMP "ON" 9 IF LAMP "ON" 9A IF LAMP "ON" 0 0 00 0000 1111 1111 2222 2222 3333 3333 4444 4444 5555 5555  6666 6666 7777 7777 8888 8888 9999 9999 STRAIGHT LINE FROM LOWER LEFT TO UPPER RIGHT  PLTP 0000 0000 9999 0000 9999 9999 0000 9999 ONE DOT AT EACH CORNER OF PLOTTING SURFACE  PLTL 0500 7500 1000 8500 A1# 2000 9000 3000. 90.00 4000^ ^8500 4500 7500 4500> 6500 4500 7500 4000 8500 3000 9000 2000 9000 1000 8500 0500 7500 2500 7000^ 0500 7500^ PLTL< <0500 7500> <0500>< 6500> A1#<1000 ><5500> <2000>A1#< 5000> <3000 >< 5000>A1# A1#<4000 5500> <4500 6500>A1# <2500 7000^> <4500^ ^6500^> <4000. 5500.> <3000 5000 2000 5000> <1000 5500> <0500 6500> 12 SIDED POLYGON WITH DOT IN CENTER  PLTL 6000 3500 5500 1500 5750 2500 6750 2500 7000 3500 6500 1500 7000 1500^ 7500 3500 8500 3500 8250 2500 7250 2500 9999 9999^ Pԍ TEST COMPLETE ALL .T  LINES SHOULD BE STRAIGHT WITHIN PEN WIDTH + 0.04 INCHES. DOUBLE LINES SHOULD OVERLAP WITH NO MORE THAN 0.04 INCHES SEPARATION. b  7> 07260-18001 1515 S 0111 ACR01-ASYNC.DOS DVR. FOR 7260 MARK READER             H0101 ZASMB,R,B,L,T,C HED *** ASYNCHRONOUS CARD READER DRIVER ACR01 *** NAM ACR01,6 ENT ACR01,H7260 EXT .ENTR,EXEC * * * LOGICAL DRIVER FOR THE 7260A CARD READER *** * * LU NOP H7260 NOP LINE NOP IXT NOP * * INITIALIZATION SECTION *** * * ACR01 NOP JSB .ENTR GET PARAMETERS DEF LU FROM CALLING PROGRAM LDB IXT SET EXTENSION ADDRESS STB X1 FOR EXEC ADB P04$ *EQT22 LDA READ READ SECTION ENTRY POINT STA B,I CONFIGURE EQT 22 INB *EQT23 LDA WRITE WRITE SECTION ENTRY POINT STA B,I CONFIGURE EQT23 INB *EQT24 LDA CONTL CONTROL SECTION ENTRY POINT STA B,I CONFIGURE EQT24 LDA IXT SET UP EQT ADDRESSES JSB SETQI OF EXTENSION EQT LDA IQT18,I GET EQT EXTENSION LENGTH LDB D28 PRIME FOR TRACE TABLE CPA D31 TRACE SPECIFIED ? CLB NO - CLEAR POINTER STB IQT48,I SET UP INDEX LDA LINE,I GET THE PLEX DATA RAR,RAR ROTATE RAR,SLA IS IT RIGHT SPEED ? RSS YES - GO AHEAD JMP BAD NO - REJECT AND P17$ MASK OUT JUNK STA B SAVE THE BAUD RATE BLF,BLF ROTATE IOR B SET UP INPUT RATE STA IQT21,I = OUTPUT RATE BLF,BLF RESET BAUD RATE CPB P01$ IS IT 110 BPS ? CLA,INA,RSS YES - SET TWO STOP BITS CLA NO - ONLY ONE RAL,RAL ROTATE A INA EVEN - SET A REG. RAL,ALF ROTATE AGAIN IOR P07$ SET UP CHARACTER LENGTH ALF,RAR PRE-ROTATE OF 3 LDB LINE,I GET LINE PLEX SLB WITH ECHO ? JMP BAD YES - REJECT RRR 3 NO - SET UP 15/14 STA IQT19,I SAVE FINAL WORD LDB P20.$ SET UP STB IQT41,I "HOT 7260". LDA LU,I GET LOGICAL UNIT AND P77$ AND CONFIGURE ADA P100$ EXEC CALL TO STA LU PHYSICAL DRIVER LDA SPEC PASS ADDRESS OF STA IQT25,I SPECIAL CHAR. ADDRESS LDA N80$ INITIALIZE A STA IQT45,I COLUMN REGISTER * JSB EXEC CALL EXEC DEF *+5 TO CALL THE DEF P03$ PHYSICAL DRIVER DEF LU LOGICAL UNIT DEF P00$ DUMMY X1 DEF * EXTENSION ADDR. AND P377$ PRESERVE STATUS JMP ACR01,I RETURN TO THE USER * BAD LDA P01$ A=1 FOR JMP ACR01,I REJECTING SKP * * CONTROL REQUESTS PROCESSING *** * * CONTL DEF *+1 CONTROL SECTION ADDRESS NOP JSB SETQ SET UP EQT'S ADDRESSES CLA JSB LOG LOG TO TRACE TABLE JSB CLEAR CLEAR FLAGS LDA EQT9,I GET REQUEST CODE AND P7700 MASK OUT JUNK CPA P200$ IS IT LINE OPEN ? JMP OPEN YES - CPA P4000 IS IT SELECT HOPPER ? JMP CNT40 YES CPA P4100 IS IT BELL ? JMP CNT41 YES CPA P4200 IS IT PASS JMP LNGTH # OF COLUMNS ? CPA P4300 STOP COMMAND ? JMP STOP YES CPA P4400 IS IT FOR "HOT 7260" ? JMP TCS1 YES CPA P4500 IS IT CLEAR "HOT" ? JMP TCS2 YES CPA P4600 IS IT MID CARD TERMINATION ? JMP MID YES - CNRT3 CLA NO - OTHER CNRT1 ISZ CONTL+1 AND EXECUTE JMP CONTL+1,I CONTINUATION * HOPPER SELECT *** CNT40 LDA P200$ FLAG=BIT 7 OF SWRT STA EQT39,I EQT 39 LDA BWRT$ WRITE CODE FOR PHY. IOR P12$ INSERT LF JMP CNRT1 AND START A WRITE OP. * BELL *** CNT41 LDA P04$ FLAG=BIT 2 JMP SWRT AND START WRITING BAD1 ISZ EQT4,I STATUS=ILL. REQUEST JMP CONTL+1,I AND COMPLETION * NUMBER OF COLUMNS *** LNGTH LDA rEQT10,I GET # OF ADA N97$ COLUMNS SSA,RSS IF MORE THAN JMP BAD1 96 - REJECT LDA EQT10,I FETCH AGAIN CMA,INA IF ZERO OR SSA,RSS NEGATIVE JMP BAD1 REJECT STA EQT45,I SET UP VALUE JMP CONTL+1,I COMPLETE * STOP COMMAND *** STOP LDA P400$ SET FLAG BIT JMP SWRT AND START A WRITE * TCS PROCESSING *** TCS1 LDA EQT41,I SET FLAG IOR P20.$ IN EQT41 JMP *+3 FOR "HOT" TCS2 LDA EQT41,I CLEAR FLAG AND P1757 FOR "HOT" STA EQT41,I IN EQT41,I JMP CONTL+1,I COMPLETION. * MID CARD TERMINATION *** MID LDB EQT10,I GET PARAMETERS LDA EQT41,I GET FLAG WORD RAL,CLE,RAL ROTATE RIGHT TWO SZB CHECK PARAM. CCE SET FLAG ERA,RAR ROTATE LEFT TWO STA EQT41,I STORE IT JMP CONTL+1,I COMPLETION * LINE OPEN PROCESSING *** OPEN LDA EQT10,I GET LINE OPEN PARAM. RAL,CLE,ERA CLEAR AUTO-SPEED OPTION STA EQT10,I STORE IT BACK JMP CNRT3 CONTINUATION SKP * * WRITE REQUESTS PROCESSING *** * * WRITE DEF *+1 WRITE SECTION ADDRESS NOP JSB SETQ SET UP EQT'S ADDRESSES LDA P02$ A=2 FOR WRITING JSB LOG LOG TO TRACE TABLE SSB,RSS IS IT INITIALIZED ? JMP WRIT1 NO - GO AHEAD CLB,INB YES - SET ILLEGAL JSB STATS REQUEST BELL1 CLA CLEAR STA EQT39,I FLAGS JMP WRITE+1,I AND COMPLETE * * WRIT1 JSB BITCK CHECK STATUS JMP WRIT2 - TIME OUT JMP WRIT3 - LINE ERROR NOP - DATA ERROR JSB TMCK CLEAR TIME OUT LDA EQT39,I GET FLAG WORD WRIT4 CLB CLEAR A COUNTER RAR,SLA COMMAND SEND ? JMP X.ON YES - GO SEND X-ON RAR,SLA AND SCAN TO JMP FOUND FIND THE O INB COMMAND JMP *-3 LOOP BACK FOUND ADB TADD COMMAND TABLE LDA EQT39,I SET UP IOR P02$ FLAG IN STA EQT39,I EQT 39 LDA B,I GET COMMAND CNRT2 LDB TIME NO TIME OUT CHANGE ISZ WRITE+1 AND KEEP ON JMP WRITE+1,I OUTPUTTING * X.ON CCE,SSA OUTPUT X-ON ? JMP CHECK NO - ALREADY DONE ELA YES - SET FLAG STA EQT39,I IN EQT 39 LDA P21$ LOAD X-ON JMP CNRT2 AND CONTINUATION * CHECK RAR,CLE,ELA CLEAR BOTH CLE,ELA FLAGS STA EQT39,I IN EQT39 AND P434$ IS IT RETRANSMIT SZA,RSS DEMAND OR REJECT ? JMP BACK YES - RETURN TO READ SECTION AND P404$ NO - MASK OUT SZA IS IT BELL OR STOP ? JMP BELL1 YES - COMPLETE LDB EQT40,I NO - IMAGE OFF / ON LDA P100$ RBR,SLB GET USER'S REQUEST LDA P40$ AND SET UP RE X-MIT STA EQT39,I OR DEMAND . JMP WRIT4 OUTPUT THE COMMAND BACK LDA BREAD READ CODE JMP CNRT2 AND START READING * * WRIT2 LDB P03$ SET THREE JSB STATS AS STATUS. JSB TRANS SET TRANSMISSION LOG JMP WRITE+1,I COMPLETE * * WRIT3 JSB ERRL SET 2 SECONDS CLA ISZ WRITE+1 RETURN TO JMP WRITE+1,I PHYSICAL DRIVER * * TADD DEF *+1 P07$ OCT 7 BELL OCT 24 IMAGE OFF P22$ OCT 22 IMAGE ON P10$ OCT 10 RETRANSMIT OCT 31 DEMAND P13$ OCT 13 REJECT OCT 11 STOP * SPEC DEF *+1 DEC -1 CR OCT 15 CARRIAGE RETURN * TIME NOP SKP * * * CLEAR NOP ENTRY POINT CLB CLEAR STB EQT14,I TRANSMISSION LOG LDA EQT41,I CLEAR FIRST FLAG AND P760. AND # OF STA EQT41,I RE X-MIT RAL SET UP A MID STA EQT47,I CARD TERMINATION FLAG LDA EQT45,I INITIALIZE STA EQT43,I A COUNTER. STB EQT39,I FLAGS WORD STB TIME TIME OUT VALUE STB EQT46,I CLEAR WORD JSB STATS CLEAR STATUS JMP CLEAR,I RETURN * * STATS NOP ENTRY POINT LDA EQT4,I GET STATUS AND P1774 KEEP LEFT BYTE IOR B MERGE STATUS STA EQT4,I STORE IT JMP STATS,I RETURN * * TMCK NOP ENTRY POINT LDA EQT39,I GET FLAG WORD RAL,CLE,RAL ROTATE CLB CLEAR TIME-OUT SSA TIME-OUT IN PROGRESS ? INB YES - KILL IT RAL,CLE,ERA CLEAR BIT IN RAR,RAR EQT39 STA EQT39,I AND STB TIME RETURN JMP TMCK,I * * ERRL NOP LDB N20$ SET 2 SECONDS LDA EQT39,I AS TIME OUT AND P2000 IF NO TIME SZA WAS NOT ALREADY CLB RUNNING STB TIME SAVE IT LDA EQT39,I SET UP IOR P2000 FLAG IN STA EQT39,I EQT39 TO JMP ERRL,I TWO SECONDS * * TRANS NOP LDA EQT14,I GET TRANSMISSION LDB EQT11,I CHECK THE SSB MODE OF REQUEST JMP TRANS,I CHARACTER ? INA WORD - CONVERT ARS IN WORD STA EQT14,I STORE AND JMP TRANS,I RETURN * * BITCK NOP LDB N03$ CHECK RAL,SLA BIT OF JMP BITCK,I A REGISTER ISZ BITCK AND INB,SZB RETURN JMP *-4 DEPEND ON JMP BITCK,I BIT 15-14-13 SKP * * * READ REQUESTS PROCESSING *** * * READ DEF *+1 READ SECTION ENTRY POINT NOP JSB SETQ SET UP EQT ADDRESSES CLA,INA A=1 FOR READING JSB LOG LOG TO TRACE TABLE SSB,RSS INITIATE ? JMP READ1 NO * * INITIALIZATION SECTION OF READ REQUEST *** * JSB CLEAR YES - CLEAR FLAG^S LDA N10$ INITIATE TO -10 STA EQT13,I A COUNTER OF RETRY LDB EQT9,I GET REQUEST CODE BLF,CLE,RBL ROTATE AND STUCK IN ELB,RBL BIT 10 INTO BIT 8 ELB,RBL THEN, CHECK IF CLE,SLB PACKED BINARY REQUEST CCE YES - SET A FLAG RBR,SLB,RBL CHECK IF JMP RXMIT RETRANSMIT STB EQT44,I SAVE REQUEST OK STB EQT40,I TWICE LDA P20$ SET IMAGE ON SSB BINARY ? JMP BINRY YES - GO AHEAD SEZ,RSS NO - ASCII ? JMP ASCI1 YES BAD2 CLB,INB NO - ILLEGAL REQUEST JSB STATS UPDATE STATUS JMP READ+1,I COMPLETION * RETRANSMIT REQUEST *** RXMIT LDA EQT44,I FIRST OF ALL ALF,ALF CHECK IF A RAR,SLA PREVIOUS READ RSS HAS BEEN MADE JMP BAD2 NO - REJECT LDA EQT44,I GET PREVIOUS REQUEST SSA ASCII ? JMP BINR NO - WAS BINARY SSB,RSS NEW ASCII TOO ? JMP OK YES - NOTHING SPECIAL LDA EQT47,I NO - MID CARD SSA TERMINATION ? JMP OK NO - NOTHING SPECIAL LDA P04$ YES - BINARY AFTER IOR B ASCII WITH MID CARD TERM. LDB A JMP OK SET SPECIAL FLAG BINR SSB NEW BINARY TOO ? JMP OK YES - NOTHING SPECIAL LDA P10$ NO - ASCII AFTER IOR B IMAGE - SET LDB A JMP OK SPECIAL FLAG * ASCII REQUESTS *** ASCI1 LDB EQT11,I CHECK THE LENGTH SZB,RSS IF ZERO JMP READ+1,I COMPLETION RIGHT AWAY LDA P10$ SET IMAGE OFF SAVE3 STA EQT39,I IN EQT 39 LDA BWRT$ WRITE CODE IOR P12$ INSERT LF CONTR LDB TIME TIME OUT PURPOSE ISZ READ+1 AND ASK A JMP READ+1,I CONTINUATION * IMAGE REQUESTS *** BINRY LDB EQT11,I IS IT SSB IN WORD ? JMP BAD2 *($ NO - REJECT JMP SAVE3 YES - OK * * CONTINUATION SECTION OF READ REQUESTS *** * READ1 JSB BITCK CHECK STATUS OF THE LINE JMP READ2 - TIME OUT JMP READ3 - LINE ERROR JMP READ4 - DATA ERROR JSB TMCK STOP TIME-OUT START LDA EQT39,I CHECK IF SSA CR WAS JMP CMPL1 EXPECTED LDA SAVA NO - GET DATA AND P177$ MASK OUT JUNK STA SAVA SAVE IT LDB EQT41,I GET FIRST DATA FLAG SSB CHECK IT JMP DATA2 NOT THE FIRST * FIRST INTERRUPT = STATUS *** CLB CLEAR A FLAG CPA P37$ IS IT NOT READY ? LDB P02$ YES - NOT READY STATUS CPA P07$ IS IT HOPPER BAD JMP TCS3 YES - CHECK "HOT" CPA P13$ IS IT REJECT BAD ? LDB P06$ YES . REJECT FAIL STATUS CPA P14$ IS IT REJECT SUCCESFUL ? JMP CR1 YES - GO WAIT THE CR CPA P22$ IS IT READY ? JMP TCS3 YES - CHECK "HOT" CPA P11$ IS IT PICK FAIL ? JMP FAIL1 YES CCE,SZB,RSS IS IT FIRST DATA ? JMP DATA1 YES JSB STATS NO - WRONG STATUS CR1 LDA EQT39,I SET BIT 15 CCE TO ONE RAL,ERA TO WAIT STA EQT39,I THE CR JMP READ6 CONTINUATION RETURN TCS3 LDA EQT41,I CHECK IF AND P20.$ " HOT " PROCESSING. SZA,RSS JMP NOTCS NO - GO SET STATUS LDA EQT40,I YES - SET UP IOR P2000 FLAG IN v* 8 D 07260-18002 1515 S 0111 ACR01-ASYNC.DOS DVR. FOR 7260 MARK READER             H0101 Z STA EQT40,I EQT40 FOR NO JMP CR1 COMPLETION NOTCS LDB P04$ HOPPER BAD STATUS LDA SAVA IS IT HOPPER CPA P07$ BAD ? JSB STATS YES - SET UP STATUS JMP CR1 GO WAIT THE C.R. DATA1 LDB EQT41,I GET FLAG RBL,ERB AND SET FIRST STB EQT41,I DATA FLAG LDB EQT40,I REQUEST FOR SLB,RSS PACKED BINARY ? JMP NOTPK NO - LDB N80$ YES - INITIALIZE STB EQT43,I A COUNTER NUMBER LDA EQT10,I SET UP BUFFER STA EQT47,I ADDRESS LDA EQT11,I AND COUNT CMA,INA WORD IN STA EQT42,I EQT 42 CLA CLEAR FLAG STA EQT12,I AND WAIT JMP CONTR DATA NOTPK LDA EQT11,I ASCII ? SSA CHARACTER ? JMP *+3 YES ALS NO - WORD CMA,INA CONVERT STA EQT42,I THEN,SAVE LDA EQT10,I SET UP RAL A CHARACTER STA EQT12,I ADDRESS READ6 CLA AND WAIT JMP CONTR FIRST ACTUAL DATA * DATA PROCESSING *** DATA2 LDB EQT40,I CHECK THE MODE RBL,SLB IS IT BINARY ? JMP BNRY1 BINARY. * * ASCII MODE *** * CPA CR ASCII - IS IT CR ? JMP READ8 YES - CHECK MODE READ9 LDB EQT42,I NO - DATA SZB,RSS BUFFER FULL ? JMP RED11 YES - GO AHEAD. LDB EQT12,I NO - STORE THE CHAR. CLE,ERB CHANGE TO WORD ADDRESS SEZ,RSS CHECK EVEN OR ODD ? JMP STOR1 EVEN - GO AHEAD LDA B,I GET PREVIOUS CHAR. AND P1774 SAVE LEFT BYTE IOR SAVA INSERT NEW CHAR. JMP STOR2 GO AHEAD STOR1 ALF,ALF EVEN - ROTATE STA LOGA SAVE IT LDA B,I GET PREVIOUS CHAR. STB SAVB SAVE ADDRESS LDB EQT11,I CHECK IF REQUEST SSB,RSS IN WORD ORCHAR ? LDA P40$ WORD - SET LOW TO BLNK LDB SA;VB RESTORE B REGISTER AND P377$ PRESERVE RIGHT IOR LOGA MERGE NEW STOR2 STA B,I STORE CHAR. ISZ EQT12,I BUMP CHAR. ADDRESS ISZ EQT46,I INCREM. COUNTER LDB EQT46,I GET IT LDA SAVA IF TRAILING AND P177$ BLANK DON'T CPA CR CR IN NO MID CARD TERM ? JMP *+4 YES - SKIP IT CPA P40$ INCREMENT RSS THE STB EQT14,I TRANS LOG ISZ EQT42,I BUMP COUNTER NOP RED11 ISZ EQT43,I BUMP COUNTER NOP OF COLUMNS LDB EQT47,I GET FLAG SSB,RSS IS IT MID CARD TERM. ? JMP READ6 YES - WAIT CR LDA EQT43,I NO - ALL COLUMNS CCE,SZA HAVE BEEN INPUT ? JMP READ6 NO - CONTINUE BNRY5 LDA EQT39,I YES - SET UP RAL,ERA FLAG TO STA EQT39,I WAIT CR JSB TRANS SET UP TRANS LOG JMP READ6 AND WAIT READ8 LDB EQT47,I IS IT MID CARD TERM. ? SSB JMP READ9 NO - STORE CHARACTER LDA EQT40,I GET RE X-MIT FLAG AND P10$ AND CHECK SZA SPECIAL CASE JMP NOYET (ASCII AFTER BINARY) RED12 JSB TRANS SET TRANS LOG JMP CMPL2 AND COMPLETE * * COMPLETION SECTION OF READ REQUEST *** * CMPL1 LDA EQT39,I GET A FLAG ALF,SLA WORD AND JMP FAIL2 CHECK IF PICK-FAIL LDA EQT40,I IS IT IN ALF,RAR "HOT" SLA PROCESSING ? JMP TCS4 YES - DON'T COMPLETE ! CMPL2 LDA EQT41,I NO - CHECK SLA,RSS DATA IN ERROR JMP READ+1,I NO - COMPLETE AND P06$ YES CPA P06$ THIRD TIME ? JMP LAST1 YES - STOP LDA EQT41,I GET WORD AND RAL,CLE,ERA CLEAR BIT RAR,CLE,ELA 0 AND BIT 15 STA EQT41,I CLB CLEAR STB EQT14,I TRANSMISSION LOG STB EQT46,I CLEAR LDA EQT45,I COLUMN NUMBER ]LDB EQT40,I IF FOR SLB PACKED LDA N80$ SET 80 INTO STA EQT43,I COUNTER OF COLUMNS LDA EQT40,I CHANGE USER'S REQUEST AND P5000 CLEAR FLAGS IOR P02$ AND SET STA EQT40,I RETRANSMIT LDA P40$ AND ASK TO JMP SAVE3 RETRANSMIT DATA NOYET LDA EQT43,I CR FOR END SZA,RSS OF CARD ? JMP RED12 YES - COMPLETE CLA NOT YET STA EQT42,I SET BUFFER FULL ISZ EQT43,I INCREM. COLUMN COUNTER JMP READ6 GO WAIT THE NEXT JMP BNRY5 CR FROM END OF CARD * LAST1 LDB P07$ OVER - SET UP JSB STATS WRONG STATUS JMP READ+1,I AND COMPLETE. * HOT 7260 PROCESSING *** TCS4 LDB EQT39,I CLEAR CR RBL,CLE,ERB EXPECTED STB EQT39,I FLAG LDA EQT40,I AND CLEAR AND P1577 "HOT" PROCESSING STA EQT40,I FLAG JMP READ6 WAIT DATA. * PICK FAIL PROCESSING *** FAIL1 LDA EQT39,I SET A FLAG IOR P1000 BIT 12 OF EQT 39 STA EQT39,I THEN WAIT JMP CR1 THE CR FAIL2 ISZ EQT13,I CHECK RETRY COUNTER JMP ASCI2 NO YET - TRY AGAIN LDB P05$ OVER - SET JSB STATS STATUS JMP READ+1,I AND COMPLETE ASCI2 LDB EQT40,I GET REQUEST LDA P100$ SET DEMAND RBR,SLB RETRANSMIT ? LDA P40$ YES - SET IT JMP SAVE3 GO SET THE FLAG * TIME OUT PROCESSING *** READ2 LDB P03$ SET STATUS JSB STATS AND THEN JSB TRANS TRANS LOG JMP READ+1,I AND COMPLETE * LINE ERROR PROCESSING *** READ3 JSB ERRL SET 2 SECONDS CLA ISZ READ+1 AS TIME-OUT JMP READ+1,I CONTINUATION * DATA ERROR PROCESSING *** READ4 LDA EQT41,I ALREADY IN ERROR SLA,RAR FOR THIS REQUEST JMP YES1 YES - GO AHEAD CCE,INA NO - INCREM. COUNTER ELA AND SET UP STA EQT41,I j A FLAG YES1 JSB ERRL SET TIME OUT JMP START STORE DATA ANYWAY * * BINARY IMAGE PROCESSING *** * BNRY1 RBL,SLB CHECK IF JMP BNRY2 SECOND DATA ? CCE NO - ACTUAL DATA ERB,RBR YES - SET STB EQT40,I FLAG FOR JMP READ6 THE NEXTS BNRY2 LDB EQT42,I FIRST OF ALL, CHECK SSB,RSS IF THE BUFFER JMP BNRY3 IS FULL AND P77$ NOT FULL LDB EQT40,I IS IT PACKED SLB BINARY REQUEST ? JMP PACK1 YES - GO AHEAD ISZ EQT14,I NO - INCREM. TRANS LOG ISZ EQT42,I INCREM. CHARACTER NOP COUNTER LDB EQT12,I CHARACTER ADDRESS ISZ EQT12,I INCREM. CHARACTER ADD. CLE,ERB CONVERT IN WORD ADD. SEZ,RSS FIRST OR SECOND ? JMP FIRST FIRST ALF,RAL RAL INSERT WITH IOR EQT47,I THE PREVIOUS OK2 STA B,I STORE THE CHARACTER BNRY6 ISZ EQT43,I INCREM. COLUMN COUNTER JMP READ6 AND WAIT THE NEXT OVER CCE OVER - SET JMP BNRY5 FLAG FOR CR FIRST STA EQT47,I SAVE FIRST DATUM CPA CR IS IT CR ? JMP YES2 YES - CHECK RE X MIT JMP READ6 AND WAIT NEXT BNRY3 LDB EQT12,I GET CHARACTER ADDR. ISZ EQT12,I INCREM. FLAG SLB FIRST OR SECOND JMP BNRY6 SECOND JMP FIRST FIRST YES2 LDA EQT40,I GET SPECIAL FLAG AND P04$ SZA,RSS RE-XMIT IMAGE AFTER ASCII ? JMP OK2 NO - KEEP ON GOING JSB TRANS SET TRANS LOG JMP CMPL2 AND COMPLETE * * PACKED BINARY PROCESSING *** * FRST ALF SET UP IN LDB EQT47,I RIGHT FIELD STA B,I AND STORE IT JMP READ6 WAIT NEXT * SCND ALF,ALF SET UP IN RAL,RAL RIGHT PLACE LDB EQT47,I INSERT WITH SCND1 IOR B,I THE FIRST STA B,I AND STORE IT 0y LDB EQT40,I THEN, CHECK BLF,SLB IF THE JMP SCND2 LENGTH INB HAS BEEN BLF,BLF PROCESSED BLF NO - SET UP STB EQT40,I THE FLAG ALF,ALF AND COMPUTE AND P377$ THE LENGTH CMA,INA,SZA,RSS LENGTH JMP ERROR EQUAL TO ZERO ? ADA D60 OR GREATER SSA THAN 60 JMP ERROR YES - ERROR ADA N60$ COMPUTE LDB A THE LEAST CMA,INA OF LENGTH ADA EQT42,I BUFFER SSA AND STB EQT42,I STORE IT LDA EQT42,I COMPUTE CMA,INA TRANS LOG ALS AND STA EQT14,I SAVE IT SCND2 ISZ EQT42,I INCREM. COUNTER NOP SCND3 ISZ EQT43,I INCREM. COLUMN COUNTER JMP READ6 NOT OVER JMP OVER OVER * THRD ALF,ALF INSERT AND LDB EQT47,I STORE INB INTO STA B,I WORD. JMP READ6 WAIT NEXT * FOUR LDB EQT47,I SAVE STB SAVB BUFFER CLB ADDRESS RRR 2 SET UP IOR SAVB,I FIRST WORD STA SAVB,I (FOUR BITS) STB A AND THEN, ISZ EQT47,I TWO IN LDB EQT47,I SECOND IOR B,I WORD STA B,I GO INCREM. JMP SCND2 COUNTERS * FIFTH LDB EQT47,I SAVE STB SAVB BUFFER CLB ADDRESS RRR 4 SET UP IOR SAVB,I 2 BITS IN STA SAVB,I SECOND WORD STB A AND THEN LDB EQT47,I TWO IN INB THIRD STA B,I WORD JMP READ6 WAIT NEXT * SIX RAL,RAL INSERT LDB EQT47,I AND STORE IOR B,I INTO THE STA B,I THIRD ISZ EQT47,I WORD JMP SCND3 INCREM. COUNTER * SEVEN LDB EQT47,I INSERT AND IOR B,I STORE STA B,I INTO THE JMP READ6 THIRD WORD *  EIGHT CLB RESET STB EQT46,I INDEX TO LDB EQT47,I ZERO ISZ EQT47,I INSERT AND ALF STORE RAL,RAL INTO THE JMP SCND1 THIRD WORD * PACK1 ISZ EQT12,I INCREM. FLAG ISZ EQT46,I AND JUMP LDB EQT46,I TO THE ADB JMPT ROUTINE LDB B,I JMP B,I ADDRESS. * ERROR ISZ EQT42,I INCREMENT COUNTER ISZ EQT43,I INCREM. COLUMN NUMBER CLB,INB SET BUFFER STB EQT42,I FULL JSB STATS WAIT CR JMP READ6 WITH BAD STATUS * JMPT DEF * DEF FRST DEF SCND DEF THRD DEF FOUR DEF FIFTH DEF SIX DEF SEVEN DEF EIGHT * * SKP * * * EQT4 NOP EQT9 NOP EQT10 NOP EQT11 NOP EQT12 NOP EQT13 NOP EQT14 NOP EQT18 NOP EQT25 NOP EQT39 NOP EQT40 NOP EQT41 NOP EQT42 NOP EQT43 NOP EQT44 NOP EQT45 NOP EQT46 NOP EQT47 NOP EQT48 NOP EQTAD DEF EQT39 * * IQT18 NOP IQT19 NOP IQT21 NOP IQT25 NOP IQT41 NOP IQT45 NOP IQT48 NOP * SETQ NOP STA SAVA STB SAVB LDA EQTB ADA P03$ CPA EQT4 JMP SETQ,I STA EQT4 ADA P05$ STA EQT9 INA STA EQT10 INA STA EQT11 INA STA EQT12 INA STA EQT13 INA STA EQT14 ADA P03$ LDA A,I STA EQT18 ADA P07$ STA EQT25 ADA P16$ LDB N10$ STB LOGA LDB EQTAD LOOP STA B,I INA INB ISZ LOGA JMP LOOP JMP SETQ,I * * SETQI NOP STA IQT18 INA STA IQT19 ADA P02$ STA IQT21 ADA P04$ STA IQT25 ADA P20$ STA IQT41 ADA P04$ STA IQT45 ADA P03$ STA IQT48 JMP SETQI,I * * LOG NOP LDB EQT48,I SZB,RSS TRACE TABLE PRESENT ? JMP LOGX NO -3*($ STA LOGA YES ISZ SEQ INCR SEQ COUNTER NOP LDA SEQ ALF,ALF POSITION LEFT BYTE AND P1774 IOR LOGA MERGE IN ID ADB P04$ BUMP POINTER STB EQT48,I CMB,INB ADB EQT18,I SSB,RSS END OF TABLE JMP LOG1 LDB P40$ YES STB EQT48,I RESET POINTER LOG1 CCB ADB EQT48,I ADB EQT18 FORM ENTRY ADDRESS STA B,I SEQ/ID INB LDA SAVA A STA B,I INB LDA SAVB STA B,I INB LDA EQT25,I STATUS STA B,I LOGX LDA SAVA LDB SAVB JMP LOG,I SKP * P00$ EQU 53B P01$ EQU 54B P02$ EQU 55B P03$ EQU 56B P04$ EQU 57B P05$ EQU 60B P06$ EQU 61B P11$ EQU 64B P12$ EQU 65B P21$ EQU 66B P100$ EQU 67B P17$ EQU 70B P37$ EQU 71B P77$ EQU 72B P177$ EQU 73B P377$ EQU 74B P1774 EQU 75B N10$ EQU 41B N03$ EQU 50B * EQTB EQU 300B A EQU 0 B EQU 1 * D28 DEC 28 D31 DEC 31 D60 DEC 60 P7700 OCT 7700 P4000 OCT 4000 P4100 OCT 4100 P4200 OCT 4200 P4300 OCT 4300 P4400 OCT 4400 P4500 OCT 4500 P4600 OCT 4600 P200$ OCT 200 BWRT$ OCT 40000 P760. OCT 76000 P400$ OCT 400 P404$ OCT 404 P434$ OCT 434 P2000 OCT 20000 P20.$ OCT 2000 P1577 OCT 157777 P1757 OCT 175777 N20$ DEC -20 N60$ DEC -60 N80$ DEC -80 N97$ DEC -97 P40$ OCT 40 P14$ OCT 14 P16$ OCT 16 P20$ OCT 20 P1000 OCT 10000 P5000 OCT 50000 BREAD OCT 100000 SAVA NOP SAVB NOP LOGA NOP SEQ NOP END * 9 E 07260-18003 1626 S 0163 DOS-III SWITCH ROUTINE FOR 7260A MARK READER             H0101 *ASMB,R,L,C NAM SWTCH,7 EXT EXEC,.ENTR ENT SWTCH * * ERR NOP LU NOP EQTX NOP * * SWTCH NOP JSB .ENTR GET PARAMETERS DEF ERR FROM CALLING PROGRAM LDA LU,I GET LOGICAL UNIT STA B AND SAVE IT ADA DM1 FIRST, CHECK SSA IF THE JMP ILLG LOGICAL UNIT CMB,INB IS GOOD ADB 122B AND THEN SSB COMPUTE THE JMP ILLG EQT17 ADA 121B ADDRESS LDA A,I CALL EXEC ADA DM1 TO STORE MPY D17 THE SUPPLIED ADA 117B EQT EXTENSION ADA D3 ADDRESS LDB A,I GET AVABLITY FIELD SSB AND CHECK IF BUSY JMP BUSY YES - RETURN ADA D13 NO - OK STA TEMP STORE TEMPORARY LDA A,I GET EQT EXTENSION ADA D18 AND EQT 36 ADDRESS LDA A,I AND EQT 36 LDB EQTX NEW EQT EXTENSION ADB D18 NEW EQT 36 STA B,I STORE BOARD STATUS LDB TEMP RESTORE B REGISTER LDA EQTX EQT AND JSB EXEC RETURN WITH DEF *+2 A-REGISTER TO DEF DM19 ZERO CLA,RSS ILLG CCA ILLEGAL CODE STA ERR,I INTO FIRST PAR. JMP SWTCH,I AND RETURN BUSY LDA DM2 BUSY RETURN STA ERR,I INTO FIRST PAR. JMP SWTCH,I WITH A=2 * * A EQU 0 B EQU 1 D18 DEC 18 TEMP NOP DM2 DEC -2 DM1 DEC -1 DM19 DEC -19 D3 DEC 3 D17 DEC 17 D13 DEC 13 END END$ ݻ :@ 07261-18005 1546 S 0163 7261A OPTICAL MARK READER DIAGNOSTIC             H0101 FASMB,A,B,L,T ORG 105B OCT 6264 HED CONSTANTS AND VARIABLES ORG 126B OCT 113003 SERIAL NUMBER ORG 130B JMP BEGIN * SFLAG OCT 000000 SEQPT OCT 0 SEQUN DEF SLIST TSTPT DEF LSTST SAVSW OCT 0 PTCNT OCT 0 SUP * * * NBASE OCT 000060 PERFT DEF *+1 ASC 8,ALL TESTS OKAY./ REPER DEF *+1 OCT 000000 ASC 9, ERRORS DETECTED./ * * NOESS OCT 000040 ANESS OCT 051440 ADESS DEF ROPER+4 AROPR DEF ROPER BELLS OCT 000010 BCFLG OCT 000000 BAD CHAR REPORT FLAG RFCT1 DEC 81 RFCT2 DEC 41 COFL1 DEF ACFL1 COFL2 DEF ACFL2 COFL4 DEF ACFL4 DAFIL DEF ADAFL FLCMS DEF AFLCM CRLFD DEF ACRLF STERM DEF * DEF STM01 DEF STM02 DEF STM03 DEF STM04 DEF STM05 DEF STM06 RDCON OCT 050050 * SAVEA OCT 0 SAVEC OCT 0 ASCNO OCT 0 ASCNU OCT 0 AHEAD DEF MHEAD ACT01 DEF CMES1 ACT02 DEF CMES2 ACT03 DEF CMES3 ACT04 DEF CMES4 ACT05 DEF CMES5 * * HPCNT OCT 0 HPMAX DEC -50 HPMIN DEC -30 AHPHD DEF HOPHD TIMEC DEC +10 STCNT OCT 0 PACRD OCT 0 ADCRD DEF CDSTG MREAD OCT 0 AIOTS DEF IOTST AREAD DEF READR ADMAR DEF DMARD ABCRP DEF BCRPT MBLNO DEC 3 BLTIM DEC 200 BLCNT OCT 0 ATEMP OCT 0 ADTIM DEF TIMES AOLT0 DEF OLT00 * MSK01 OCT 170000 MSK02 OCT 030000 MSK03 OCT 007777 MSK04 OCT 160000 MSK05 OCT 000077 ALONE OCT 177777 NZERO DEC 0 MTEN4 DEC -10000 N0128 DEC -128 N0011 DEC -11 N0010 DEC -10 N0004 DEC -4 N0003 DEC -3 N0001 DEC -1 P0001 DEC 1 P0002 DEC 2 P0003 DEC 3 P0004 DEC 4 P0005 DEC 5 P0006 DEC 6 P0007 DEC 7 P0008 DEC 8 P0010 DEC 10 P0011 DEC 11 * C2100 OCT 070000 BIAS1 OCT 140000 BIAS2 OCT 150000 CNU16 DEC 160 CNU15 DEC 200 CNU00 DEC 098 CNUMX DEC 120 CNUMB OCT 0 HIWRD OCT 0 * IEC01 OCT 000001 IEC02 OCT 000002 IEC03 OCT 000003 IEC04 OCT 000004 IEC05 OCT 000005 IEC06 OCT 000006 IEC07 OCT 000007 IEC08 OCT 000010 IEC09 OCT 000011 IEC10 OCT 000012 IEC11 OCT 000013 IEC12 OCT 000014 IEC13 OCT 000015 IEC14 OCT 000016 STS00 OCT 000000 STS01 OCT 010000 STS02 OCT 020000 STS03 OCT 030000 STS04 OCT 040000 STS05 OCT 050000 STS06 OCT 060000 STS07 OCT 070000 STS10 OCT 100000 STS11 OCT 110000 STS12 OCT 120000 STS13 OCT 130000 STS14 OCT 140000 STS15 OCT 150000 STS16 OCT 160000 STS17 OCT 170000 * * * ***** TIME ADJUSTMENT CODE * * TTM11 DEF *+1,I TTM10 DEF *+1,I TTM09 DEF *+1,I TTM08 DEF *+1,I TTM07 DEF *+1,I TTM06 DEF *+1,I TTM05 DEF *+1,I TTM04 DEF *+1,I TTM03 DEF 0B * * OLT10 DEF *+1,I OLT09 DEF *+1,I OLT08 DEF *+1,I OLT07 DEF *+1,I OLT06 DEF *+1,I OLT05 DEF *+1,I OLT04 DEF *+1,I OLT03 DEF *+1,I OLT02 DEF *+1,I OLT01 DEF *+1,I OLT00 DEF *+1,I DEF 0B * * ERC01 OCT 000002 ERC02 OCT 000003 ERC03 OCT 000001 * ERC80 OCT 100004 * ERC90 OCT 100001 ERC91 OCT 100002 ERC92 OCT 100003 ERC93 OCT 100005 ERC99 OCT 100006 ERC70 OCT 000007 ERC95 OCT 000010 ERC96 OCT 000006 ERC97 OCT 000005 ERC98 OCT 000004 * DMACC EQU 6B DMAAC EQU 2B DMACW OCT 0 * ECCNT OCT 0 DMACT OCT 0 CYCNT OCT 0 CRCNT OCT 0 SCRW1 OCT 0 BUFLN DEC 128 EXCNT OCT 0 LWPTR OCT 0 * * * RWADD OCT 0 IWADD OCT 0 IWPTR OCT 0 RWPTR OCT 0 FLCNT OCT 0 BWCNT OCT 0 BSCNT OCT 0 BCCNT OCT 0 HSCNT OCT 0 READT OCT 0 ECODE OCT 0 RFCNT OCT 0 CCMSK ASC 1,00 BCC53 OCT 020053 BCC55 OCT 020055 BCC60 OCT 020060 BCC61 OCT 020061 REFWD OCT 0 ERRWD OCT 0 CCNT1 OCT 0 CCNT2 OCT 0 BCOAD DEF *+4 BCMAD DEF *+1 BCM01 ASC 1,00 ASC 1, ASC 15, ASC 7, / E7 DEF *+1 ASC 1,EC * * * PNTR1 OCT 0 PNTR2 OCT 0 PNTR9 OCT 0 * CNTR1 OCT 0 CNTR8 OCT 0 CNTR9 OCT 0 SCVAL ABS *-* IRQIN ISZ IRQFL IRQFL OCT 0 * * * * * MWHLT OCT 102000 * * CONSTANTS BTM00 OCT 000001 BTM01 OCT 000002 BTM02 OCT 000004 BTM03 OCT 000010 BTM04 OCT 000020 BTM05 OCT 000040 BTM06 OCT 000100 BTM07 OCT 000200 BTM08 OCT 000400D BTM09 OCT 001000 BTM10 OCT 002000 BTM11 OCT 004000 BTM12 OCT 010000 BTM13 OCT 020000 BTM14 OCT 040000 BTM15 OCT 100000 BM2.4 OCT 000024 * INTSW OCT 0 ERCNT OCT 0 .0770 OCT 000770 MNINE DEC -9 SC OCT 0 * TIMAX DEC +220 TIMIN DEC +150 * * LSTST DEF * DEF TEST1 DEF TEST2 DEF TEST3 DEF TEST4 DEF TEST5 DEF TEST6 DEF TEST7 DEF TEST8 DEF TEST9 * HED GET SELECT CODE AND OPTIONS BEGIN LDB N0010 STB SAVEC SAVEC=-10 NXTCD LDB OLT00 LDA 115B AND MSK01 A=COMPUTER TYPE CPA C2100 2100? JMP *+2 YES ADB SAVEC B=OLT00+SAVEC LDA AOLT0 ADA SAVEC A=AOLT0+SAVEC STB 0B,I ISZ SAVEC JMP NXTCD ** SET THE TIMING CONSTANT LDA 115B SSA IS IT 21MX ? JMP L21MX YES. ADA BIAS1 SSA JMP L2116 ADA BIAS2 SSA JMP L2115 L2100 LDA CNU00 STA CNUMB JMP COLET L21MX LDA CNUMX SET UP TIMING STA CNUMB FOR 21MX. JMP COLET L2115 LDA CNU15 STA CNUMB JMP COLET L2116 LDA CNU16 STA CNUMB COLET LDA ADCRD RESTORE POINTER STA PACRD CLB STB INTSW JSB LOAD LOAD SELECT CODE HLT 01B CLB STB INTSW AND MSK05 STA DMACW STORE FOR DMA STA SCVAL DOINS LDB PACRD,I B=BASE NO. SZB,RSS B=0? JMP GTOPT YES, GET OPTIONS ADA 1B ADD BASE TO S.C. ISZ PACRD INC. POINTER LDB PACRD,I B=-NO. INSTR. STB STCNT STCNT=-NO. INSTR. ISZ PACRD INC. POINTER LDB PACRD,I B=ADDRESS OF INSTR. STA 1B,I STORE INSTR. ISZ STCNT INC. STCNT, =0? JMP *-4 NO, NEXT INSTR. ISZ PACRD YES, INCR8. POINT. JMP DOINS DO INSTR. GTOPT JSB LOAD HLT 02B HED DIAGNOSTIC TEST STRUCTURE BEGTS LDA INTSW GET SWITCH AND BTM09 MASK ALL BUT BIT 9 SZA JMP TBLST JMP TO TROUBLESHOOT * *** PERFORM ALL RELEVANT TESTS * PERFR CLB STB ERCNT INITIALIZE ERROR COUNTER JSB TEST PERFORM TEST 1 DEF TEST1 DEF TEST1 JSB TEST PERFORM TEST 2 DEF TEST2 DEF TEST2 JSB TEST PERFORM TEST 3 DEF TEST3 DEF TEST3 LDA INTSW AND BTM03 MASK ALL BUT BIT 3 SZA,RSS JMP SK4.5 JSB TEST PERFORM TEST 4 DEF TEST4 DEF TEST4 JSB TEST PERFORM TEST 5 DEF TEST5 DEF TEST5 SK4.5 JSB TEST PERFORM TEST 6 DEF TEST6 DEF TEST6 LDA INTSW AND BTM02 MASK ALL BUT BIT 2 SZA,RSS DO TEST 7? JMP SK7 NO JSB TEST PERFORM TEST 7 DEF TEST7 DEF TEST7 SK7 JSB TEST PERFORM TEST 8 DEF TEST8 DEF TEST8 LDB BTM04 JSB FINAL CHECK IF FINAL TEST LDA INTSW AND BTM04 MASK ALL BUT BIT 4 SZA,RSS JMP SK9 JSB TEST PERFORM TEST 9 DEF TEST9 DEF TEST9 SK9 JSB LOAD HLT 05B JMP BEGTS RETURN TO BEGINNING * *** PERFORM SELECTED TESTS * TBLST LDA INTSW SLA SINGLE TEST OR SEQUENCE? JMP SQTST SEQUENCE JSB VALID SINGLE. INPUT VALID? JSB LOAD NO, RELOAD INPUT HLT 06B,C INPUT ERROR HALT JMP *-3 JSB GTTST GET TEST AND PERFORM JMP SK9 RETURN FOR NEW OPTIONS SQTST LDA INTSW SAVE INTSW STA SAVSW AND BTM12 BIT 12 SZA,RSS PERHFORM LAST SEQUENCE? JMP GTSEQ NO, GET NEW SEQUENCE LDA SFLAG YES, LOAD SFLAG SZA DOES LAST SEQUENCE EXIST? JMP EXCTS YES, EXECUTE THE SEQUENCE JMP GTOPT NO, GET OPTIONS GTSEQ LDA SEQUN A=FIRST SEQ. LOCATION STA SEQPT STORE IN POINTER LDA INTSW JMP *+3 LDTST JSB LOAD LOAD NEXT TEST IN SEQUENCE HLT 17B JSB VALID INPUT VALID? JSB LOAD NO, RELOAD INPUT. HLT 17B,C JMP *-3 STA SEQPT,I STORE IN SEQUENCE LIST SZA,RSS ADD ANOTHER TEST TO SEQ.? JMP *+3 NO ISZ SEQPT INCREMENT POINTER JMP LDTST NEXT INPUT EXCTS CLA STA PTCNT RESET SEQ. TEST NUMBER INA STA SFLAG SIGNAL THAT SEQ. EXISTS LDA SEQUN STA SEQPT RESET SEQ. POINTER DOTST LDA SEQPT,I A=TEST NUMBER SZA,RSS A=0? (END OF STRING?) JMP RPINT YES, REPLACE SWITCH LDB SAVSW STB INTSW JSB GTTST GET TEST AND PERFORM ISZ PTCNT INCREMENT SEQ. TEST NUMBER ISZ SEQPT INCREMENT SEQ. POINTER LDA PTCNT A=SEQ. TEST NUMBER LDB SAVSW LOAD B= SWITCH SSB HALT TO SHOW TEST NUMBER? HLT 76B YES, A=SEQ. TEST NUMBER JMP DOTST NEXT TEST RPINT LDA SAVSW REPLACE SWITCH BEFORE LEAVING STA INTSW JMP SK9 RETURN FOR NEW OPTIONS * * SUBROUTINE VALID * ENTER:A=INPUT WORD * RETURN:A=TEST NUMBER IF VALID, SKIP NEXT 2 INSTR. * RELOAD IF INVALID. * VALID NOP SZA,RSS JMP VAL01 AND .0770 MASK ALL BUT TEST NUMBER ARS,ARS RIGHT ARS JUSTIFY LDB 0B TRANSFER TO B SZB,RSS ILLEGAL IF B=0 JMP VA;LID,I ILLEGAL, LOAD AGAIN ADB N0010 ADD -10 SSB,RSS LEGAL IF B NEGATIVE JMP VALID,I ILLEGAL, LOAD AGAIN VAL01 LDB VALID LEGAL, SKIP RELOAD ADB P0003 JMP 1B,I RETURN * *SUBROUTINE GTTST *ENTER:A=TEST NUMBER GTTST NOP ADA TSTPT ADD TEST POINTER LDB 0B,I STB TSNUM STORE THE RIGHT ARGUMENTS STB TSNUM+1 JSB TEST PERFORM PROPER TEST TSNUM OCT 0 OCT 0 JMP GTTST,I * * * * SUBROUTINE TEST TEST NOP LDB TEST,I RESTORE ARGUMENT ISZ TEST STB TEST,I DONE JSB REPRT REPORT MESSAGE JSB REPRT REPORT MESSAGE LDA TEST,I IOR BTM15 JSB 0B,I PEFORM TEST,A=ERR.+MESS. CODE STA SAVEC SAVE CODE ISZ TEST,I INCREMENT POINTER LDB TEST,I SSA ERROR MESSAGE? JMP ERROR YES ADB 0B ADD TO POINTER STB TEST,I STORE AS NEW POINTER JSB REPRT JMP RQUES ERROR ADA BTM15 CHANGE SIGN BIT ADB 0B ADD TO POINTER STB TEST,I STORE AS NEW POINTER JSB REPRT LDA INTSW AND BTM14 SZA SUPRESS ERROR HALT? JMP RQUES YES JSB LOAD NO HLT 03B JMP SKRTS RQUES LDA INTSW AND BTM13 ISOLATE REPEAT BIT SZA,RSS WAS REPEAT? JMP *+3 NO SKIP HALT JSB LOAD HLT 04B SKRTS LDA INTSW AND BTM13 SZA,RSS REPEAT LAST TEST? JMP NXTST NO LDA SAVEC YES, LOAD CODE SSA,RSS ERROR IF NEGATIVE JMP STTST NO ERROR , SKIP DEC OF ERCNT CCA ADA ERCNT STA ERCNT ERCNT DECREMENTED STTST CCA DECREMENT TEST ADA TEST STGA TEST JMP TEST+1 REPEAT TEST NXTST ISZ TEST LDB CRLFD SEPARATE TESTS BY CR-LF CLA,CLE JSB 127B,I JMP TEST,I * REPRT NOP LDA TEST,I LDB 0B,I CLA CLE JSB 127B,I OUTPUT MESSAGE ISZ TEST,I INCREMENT POINTER LDA BCFLG SZA,RSS BAD CHAR REPORT? JMP *+4 NO CLA STA BCFLG RESET THE FLAG JSB ABCRP,I REPORT BAD CHARACTERS JMP REPRT,I * LOAD NOP LDA LOAD,I STA LHLT LDA INTSW LDB INTSW LHLT NOP CPA INTSW JMP *+3 STA INTSW JMP LEXR CPB INTSW JMP *+3 STB INTSW JMP LEXR LDA LHLT CPA LOAD,I JMP *+2 STA INTSW LEXR ISZ LOAD LDA INTSW LEAVE WITH LOADED WORD JMP LOAD,I * * *FINAL REPORT SUBROUTINE FOR TESTS 6 AND 7. * *ENTER WITH B=BIT MASK. *FOR TEST 6 B=BM2.4, FOR TEST 7 B=BTM04. FINAL NOP LDA INTSW AND 1B MASK SWITCH SZA ANY MORE TESTS? JMP FINAL,I YES LDA ERCNT NO, A=ERCNT SZA ANY ERRORS? JMP *+3 YES, SET UP MESSAGE LDB PERFT NO, SET UP MESSAGE JMP *+9 CPA P0001 PLURAL OR SINGULAR IN MESS? JMP *+2 SINGULAR JMP *+3 PLURAL LDB NOESS STB REPER+5 ADA NBASE MAKE INTO ASCII STA REPER,I STORE STRING LDB REPER SET UP MESSAGE ADDR. CLA CLE JSB 127B,I OUTPUT MESSAGE LDB ANESS REPLACE "S" STB REPER+5 JMP FINAL,I * HED INDIVIDUAL TEST SUBROUTINES * *TESTS: * TST01 NOP HLT 22B JSB AIOTS,I CHECK INTERFACE SZA,RSS SKIP IF ERROR JMP TST01,I RETURN ADA BTM15 PVLACE ERROR BIT ISZ ERCNT INC. ERROR COUNTER NOP JMP TST01,I * * TST02 NOP LDA RFCT1 STA RFCNT LDA COFL2 STA RWADD LDA AREAD STA MREAD JSB TSTCD JMP TST02,I * * TST03 NOP LDA RFCT2 STA RFCNT LDA COFL1 STA RWADD LDA AREAD STA MREAD JSB TSTCD JMP TST03,I * * TST04 NOP LDA RFCT2 STA RFCNT LDA COFL1 STA RWADD LDA AREAD STA MREAD JSB TSTCD JMP TST04,I * * TST05 NOP LDA RFCT1 STA RFCNT LDA COFL4 STA RWADD LDA AREAD STA MREAD JSB TSTCD JMP TST05,I * * TST06 NOP LDA RFCT1 STA RFCNT LDA COFL2 STA RWADD LDA ADMAR STA MREAD JSB TSTCD JMP TST06,I * * TST07 NOP HPLB1 CLA INITIALIZE HPCNT=0 STA HPCNT HLT 10B LDA DAFIL SET UP FOR READ STA IWADD LDA RDCON STA READT NEXTC JSB AREAD,I READ CARD NOP SSA SKIP IF NO STATUS ERROR JMP STERT TEST STATUS ERROR LDB BTM02 LDA TIMEC TIMEC=NO. MILLISEC. WAIT OTB04 OTB *-* SEND REJECT COMMAND JSB 121B,I LEAVE FOR 1 MILLISEC. ISZ HPCNT INCREMENT HOPPER COUNT LIA02 LIA *-* LOAD STATUS AND MSK01 MASK ALL BUT STATUS CPA STS00 HOPPER FULL? (0000 STATUS) JMP MNTST YES LDA HPCNT NO ADA HPMAX SSA TOO MANY CARDS? JMP NEXTC NO ISZ ERCNT YES, REPORT LDA ERC91 A=100002 JMP HPOUT OUTPUT COUNT STERT CPA ERC91 JMP MNTST JSB UTILR JMP HPLB1 MNTST LDA HPCNT ADA HPMIN SSA HPCNT BIG ENOUGH? JMP I*+3 NO CLA A=000000 JMP HPOUT ISZ ERCNT LDA ERC90 A=100001 HPOUT STA SAVEA LDB AHPHD LDA HPCNT STA ASCNO JSB NOOUT LDA SAVEA JMP TST07,I * * TST08 NOP LDA RFCT1 STA RFCNT LDA COFL2 STA RWADD LDA DAFIL STA IWADD LDA RDCON STA READT CLA STA PKFLG INITIALIZE PICK FAIL FLAG T8.01 HLT 20B HALT TO MAKE CRD RDR READY T8.02 JSB AREAD,I READ CARD SSA UTILITY ERROR? JMP T8.03 YES CPA ERC02 NO, EOD? JMP T8.04 YES CPA ERC03 EOD? JMP T8.04 YES JMP T8.02 NO, READ CARD T8.03 CPA ERC80 UTIL. ERR., PICK FAIL? JMP *+2 YES JMP *+3 NO CLB,INB SET PICK FAIL FLAG STB PKFLG JSB UTILR REPORT ERROR JMP T8.01 T8.04 LDA PKFLG TEST FLAG SZA,RSS WAS THERE A PICK FAIL? JMP *+3 YES CLA JMP TST08,I LDA ERC90 JMP TST08,I * PKFLG OCT 0 * TSTCD NOP LDA DAFIL STA IWADD LDA RDCON STA READT FIXRD HLT 20B HALT TO FIX READER. CARDR JSB MREAD,I READ CARD, A=CODE STA SAVEA SAVE A SSA JMP SKRDT * ** MULTIPLY BY CNUMB, DIVIDE BY 10000 * * ENTER:B=TIMING NUMBER,T; CNUMB IS SET * RETURN:B=T*CNUMB/10000 NOP CLA MULTIPLY FIRST STA HIWRD CLE LDA CNUMB CMA,INA STA SAVEC SAVEC=-CNUMB CLA A=0 MLOOP ADA 1B A=A+T SEZ EXTEND? ISZ HIWRD YES, INCR. HIWRD NOP CLE ISZ SAVEC INCR. SAVEC JMP MLOOP * A=T*CNUMB, SAVEC=0 DIVIDE SECOND LDB HIWR<:6D B-A DLOOP ADB ALONE CLE ADA MTEN4 A=A-10000 SEZ EXTEND? INB YES CLE SSB B<0? JMP *+3 YES ISZ SAVEC JMP DLOOP LDB SAVEC NOP * LDA INTSW AND BTM01 SZA JMP SKRDT LDA TIMAX CMA ADA 1B SSA,RSS >TIMAX? JMP BDRDT YES LDA TIMIN NO CMA,INA ADA 1B SSA,RSS 1 SZA,RSS JMP ENDCT CPA P0001 A=1? JMP ENDCT YES, DO NOT PRINT. STA ASCNO JSB CTHED LDB ACT05 JSB NOOUT ENDCT LDA SAVEA SZA,RSS JMP CARDR CPA BTM01 A=2? JMP MON01 YES,BAD WORD CPA BTM00 A=1? JMP MON01 YES, BAD WORD ON LAST CARD SSA ERROR CODE? JMP MON02 YES CPA ERC02 JMP ALLOK JUMP IF NORM EOD ISZ ERCNT INC. ERR. COUNTER NOP IN CASE ERCNT=0 ADA BTM15 GIVE ERROR FLAG JMP MON03 JUMP TO COUNT TEST ALLOK CLA JMP MON03 JUMP TO COUNT TEST MON01 ADA BTM15 BAD WORD (ON LAST CARD) CCB STB BCFLG BCFLG=-1 ISZ ERCNT INCREMENT ERROR COUNTER NOP IN CASE ERCNT=0 MON03 LDB FLCNT COUNT TEST CPB RFCNT COUNTS EQUAL? JMP TSTCD,I YES,RETURN SZA TEST OTHERWISE OKAY? JMP *+3 NO LDA ERC92 ISZ ERCNT INC ERR COUNTER STA SAVEA SAVE CODE CLA,CLE SET UP FOR +'OUTPUT LDB FLCMS JSB 127B,I OUTPUT MESSAGE CLA,INA LDB FLCNT JSB 127B,I OUTPUT NUMBER LDA SAVEA JMP TSTCD,I * MON02 JSB UTILR JMP FIXRD RETURN TO READ CARD. * * SUBROUTINE TWONO OUTPUTS MESSAGE AND TWO NUMBERS * TO ENTER: * B=ADDRESS OF MESSAGE * ASCNO=FIRST NUMBER * ASCNU=SECOND NUMBER * * * SUBROUTINE NOOUT OUTPUTS MESSAGE AND NUMBER. * TO ENTER: * B=ADDRESS OF MESSAGE * ASCNO=THE NUMBER * TWONO NOP LDA RET02 STA RETRN JMP *+4 NOOUT NOP LDA RET01 STA RETRN CLA,CLE JSB 127B,I CLA,INA LDB ASCNO JSB 127B,I RETRN OCT 0 LDB ASCNU JSB 127B,I JMP TWONO,I RET01 JMP NOOUT,I RET02 NOP * * ROUTINE TO PRINT PART OF A MESSAGE * CTHED NOP LDB AHEAD CLA,CLE JSB 127B,I JMP CTHED,I * * UTILITY ERROR MESSAGE OUTPUT * A=ERROR CODE FROM READR UTILR NOP ADA BTM15 ADA STERM LDB 0B,I CLA,CLE JSB 127B,I JMP UTILR,I * ORG 2000B * * TST09 NOP LDA INTSW AND BTM09 ISOLATE BIT 9 SZA TYPE OF DIAGNOSTIC JMP TROTS TROUBLESHOOT LDB ANESS REPLACE "S" FROM TIME BEFORE STB ADESS,I LDA ERCNT A=ERCNT SZA,RSS JMP RBELL A=0 IF ERCNT=0 CPA P0001 PLURAL OR SING IN MESS? JMP *+2 SINGULAR JMP *+3 PLURAL LDB NOESS STB ADESS,I ADA NBASE MAKE INTO ASCII STA AROPR,I STORE FOR OUTPUT LDA BTM00 A=1 IF ERCNT#0 JMP *+2 TROTS LDA BTM01 A=2 IF TROUBLESHOOT RBELL STA ATEMP LDB MBLNO B=NO. TIMES TO RING BELL CMB,INB MAKE NEGATIVE STB BLCNT STORE IN BLCNT DOBEL LDA TIMEC SET ON BELL BIT LDB BELLS CO8MMAND OTB01 OTB *-* FOR ONE MS JSB 121B,I WAITING LOOP CLB SET OFF BELL BIT OTB02 OTB *-* COMMAND, THEN LDA BLTIM WAIT FOR JSB 121B,I 20 MS BETWEEN RINGS. ISZ BLCNT JMP DOBEL LDA ATEMP JMP TST09,I * HED SUBROUTINE IOTST * * ***** SUBROUTINE IOTST * * * * NO ARGUMENTS ARE REQUIRED * * * ON RETURN * * A = ERROR CODE (A=0 IF NO ERRORS) * * * ERROR CODES * * 000001(IEC01) = SFS AND SFC GIVE SAME RESULT * 000002(IEC02) = FLAG NOT SET BY STF * 000003(IEC03) = FLAG NOT CLEARED BY CLF * 000004(IEC04) = CLC DOES NOT CLEAR CONTROL * 000005(IEC05) = STC DOES NOT SET CONTROL * 000006(IEC06) = PRESET DOES NOT SET FLAG * 000007(IEC07) = PRESET DOES NOT CLEAR CONTROL * 000010(IEC08) = PRESET DOES NOT SET FLAG OR CLEAR CONTROL * 000011(IEC09) = CONTENTS OF CENTRAL INTERRUPT REGISTER BAD * 000012(IEC10) = DEVICE COMMAND DOES NOT SET FLAG * 000013(IEC11) = BITS STUCK ON * 000014(IEC12) = BITS STUCK OFF * 000015(IEC13) = STATUS BITS LATCH * 000016(IEC14) = DATA BITS FLOAT * * *************** * * IOTST NOP * CLF 0B CLC 0B LDA IRQIN LDB SCVAL STA 1B,I * * ***** TEST CLF, STF, SFS, SFC * * STF01 STF *-* SFS06 SFS *-* JMP *+4 FLAG NOT SENT SFC02 SFC *-* JMP *+5 FLAG IS SET JMP IOT51 SFS AND SFC GIVE SAME RESULT SFC05 SFC *-* JMP IOT51 SFS AND SFC GIVE SAME RESULT JMP IOT52 FLAG NOT SET BY STF * * CLF03 CLF *-* SFC03 SFC *-* JMP *+4 FLAG NOT CLEAR SFS07 SFS *-* JMP *+5 FLAG IS CLEARED BY CLF JMP IOT51 SFS AND SFC GIVE SAME RESULT SFS08 SFS *-* JMP IOT51 SFS AND SFC GIVE SAME RESULT JMP IOT53 FLAG NOT CLEARED BY CLF * * STF02 STF *-* SFS09 SFS *-* JMP IOT52 FLAG NOT SET BY STF * * ***** TEST CLC, STC, IRQ CIRCUTS * * CLF04 CLF *-* STF 0B TURN ON INTERRUPT SYSTEM * CLC01 CLC *-* JSB SIRQS JMP *+2 JMP IOT54 CONTROL DOES NOT CLEAR * STC01 STC *-* JSB SIRQS JMP IOT55 CONTROL DOES NOT SET CLC02 CLC *-* JSB SIRQS JMP *+2 JMP IOT54 CONTROL DOES NOT CLEAR * * ***** PRESET TEST * * STC02 STC *-* JSB SIRQS JMP IOT55 CONTROL DOES NOT SET CLF05 CLF *-* SFC04 SFC *-* JMP IOT53 FLAG DOES NOT CLEAR CLA,CLE LDB IOTM1 CLF 0B JSB 127B,I HLT 44B STF 0B SFS10 SFS *-* JMP *+5 CLF06 CLF *-* JSB SIRQS JMP *+6 JMP IOT57 PRESET DOES NOT CLERA CONTROL CLF07 CLF *-* JSB SIRQS JMP IOT56 PRESET DOES NOT SET FLAG JMP IOT58 FLAG AND CONTROL BAD * * ***** TEST DEVICE COMMAND AND FLAG CIRCUITRY * * CLF 0B DISABLE INTERRUPT CLA,CLE LDB IOTM2 JSB 127B,I HLT 66B SCC03 STC *-*,C CLA,INA JSB 121B,I SFS11 SFS *-* JMP IOT60 COMMAND DOES NOT SET FLAG * * ***** TEST DATA BITS * * CLA JSB IOBTS SZA JMP IOT61 DATA BITS STUCK ON CCA OTA01 OTA *-* CLA,INA JSB 121B,I LIA11 LIA *-* CPA MSK01 JMP *+6 XOR MSK01 AND MSK01 SZA JMP IOT63 STATUS BITS LATCH JMP IOT64 DATA BITS FLOAT CCA JSB IOBTS CMA,SZA JMP IOT62 BITS STUCK OFF CLA OTA02 OTA *-* CLA,INA JSB 121B,I LIA12 LIA *-* CPA MSK03 JMP IOT00 SUCESSFUL COMPLETION XOR MSK03 AND MSK01 SZA JMP IOT63 STATUS BITS LATCH JMP IOT64 DATA BITS FLOAT * * ***** REPORT SUCESSFUL COMPLETION * * IOT00 CLA JMP IOTEX * * ***** ERROR CODE REPORTING * ***** SFS AND SFC GIVE SAME RESULT * IOT51 LDA IEC01 JMP IOTEX * ****4* FLAG NOT SET BY STF * IOT52 LDA IEC02 JMP IOTEX * ***** FLAG NOT CLEARED BY CLF * IOT53 LDA IEC03 JMP IOTEX * ***** CLC DOES NOT CLEAR CONTROL * IOT54 LDA IEC04 JMP IOTEX * ***** STC DOES NOT SET CONTROL * IOT55 LDA IEC05 JMP IOTEX * ***** PRESET DOES NOT SET FLAG * IOT56 LDA IEC06 JMP IOTEX * ***** PRESET DOES NOT CLEAR CONTROL * IOT57 LDA IEC07 JMP IOTEX * ***** PRESET DOES NOT SET FLAG AND DOES NOT CLEAR CONTROL * IOT58 LDA IEC08 JMP IOTEX * ***** CONTENTS OF CENTRAL INTERRUPT REGISTER ARE BAD * IOT59 LDA IEC09 JMP IOTEX * ***** DEVICE COMMAND DOES NOT SET FLAG * IOT60 LDA IEC10 JMP IOTEX * ***** BITS STUCK ON * IOT61 LDA IEC11 JMP IOTEX * ***** BITS STUCK OFF * IOT62 LDA IEC12 JMP IOTEX * ***** STATUS BITS LATCH * IOT63 LDA IEC13 JMP IOTEX * ***** DATA BITS FLOAT * IOT64 LDA IEC14 IOTEX CLF 0B JMP IOTST,I * * ***** INTERNAL SUBROUTINES * ***** SUBROUTINE SIRQS (SKIP-IRQ-SET) * SIRQS NOP CLA STA IRQFL STF03 STF *-* CLA,INA JSB 121B,I LDA IRQFL SZA,RSS JMP SIRQS,I NOT SKIP * ISZ SIRQS SET SKIP LIA 4B GET CIR VALUE CPA SCVAL JMP SIRQS,I SKIP JMP IOT59 CENTRAL INTERRUPT REG PROBLEM * * * * ***** SUBROUTINE IOBTS * * IOBTS NOP OTA03 OTA *-* SCC04 STC *-*,C CLA,INA JSB 121B,I SFS12 SFS *-* JMP IOT60 LIA13 LIA *-* JMP IOBTS,I * * IOTM1 DEF AIOT1 IOTM2 DEF AIOT2 HED SUBROUTINE READR HED SUBROUTINR BCRPT * ***** BAD COLUMN REPORT SUBROUTINE * BCRPT NOP LDA RWADD STA PNTR1 LDA IWADD STA PNTR2 LDA RFCNT CMA,INA STA CNTR1 CLA STA CCNT1 STA CCNT2 BCRP1 LDA CCNT1 CLE,INA CPA P0010 CLA,CCE STA CCNT1 ۊ SEZ ISZ CCNT2 LDA CCNT2 ALF,ALF ADA CCMSK ADA CCNT1 STA BCM01 LDA PNTR1,I XOR PNTR2,I SZA,RSS JMP BCRP9 ALF STA ERRWD LDA PNTR1,I ALF STA REFWD CLA STA CNTR9 LDA N0003 STA CNTR8 LDA BCOAD STA PNTR9 BCRP6 LDA ERRWD CLE,ELA STA ERRWD LDA REFWD RAL STA REFWD SEZ JMP *+5 LDB BCC55 SLA LDB BCC53 JMP *+4 LDB BCC61 SLA LDB BCC60 STB PNTR9,I ISZ PNTR9 ISZ CNTR8 JMP BCRP6 ISZ PNTR9 ISZ CNTR9 LDA CNTR9 CPA P0005 JMP BCRP7 LDB N0004 CPA P0004 RSS INB,RSS ISZ PNTR9 STB CNTR8 JMP BCRP6 BCRP7 CLA,CCE LDB BCMAD JSB 127B,I BCRP9 ISZ PNTR1 ISZ PNTR2 ISZ CNTR1 JMP BCRP1 JMP BCRPT,I * HED SUBROUTINE READR ***** SUBROUTINE READR * * ARGUMENTS * * RWADD IS ADDRESS OF 1ST REFFERENCE WORD * IWADD IS ADDRESS OF 1ST TEST DATA WORD * READT IS TIME ALLOWED FOR COMPLETION OF READ * AS A NEGATIVE NUMBER OF UNITS OF 10T * * DATA RETURNED * * A IS ERROR CODE (=0 IF NO ERRORS) * B IS READ TIME IN UNITS OF 10T * FLCNT IS COUNT OF FLAGS DETECTED * BWCNT IS COUNT OF DATA WORDS WITH ANY TYPE OF ERRORS * BSCNT IS COUNT OF DATA WORDS WITH ANY BAD STATUS * HSCNT IS COUNT OF DATA WORDS WITH BAD HOPPERS STATUS * BCCNT IS COUNT OF DATA WORDS WITH BAD CHARACTERS * * * ERROR CODES * * 100006(ERC99) = READ EXCEEDED TIME ALLOWED * * BEFORE READ * * 100001(ERC90) = CK POWER HOPPER STACKER * 100002(ERC91) = REJECT HOPPER FULL * 100003(ERC92) = PRESS READY * 100005(ERC93) = ILLEGAL READY STATUS * * AT TIME OF 1ST FLAG * * 100004(ERC80) = PICK FAIL * * AFTER READ * * 000003(ERC02) = END OF DECK NORMAL * 0000T01(ERC03) = END OF DECK - BAD WORDS * * 000002(ERC01) = END OF CARD - BAD WORDS * 000000 = END OF CARD - NORMAL * * * * * READR NOP LDA RWADD STA RWPTR LDA IWADD STA IWPTR CLA STA FLCNT STA BWCNT STA BSCNT STA BCCNT STA HSCNT STA CRCNT STA ECODE STA 1B OTB03 OTB *-* * ***** MAKE CR READY * LIA01 LIA *-* AND MSK01 CLB CPA STS00 JMP *+2 JMP *+3 LDB ERC90 NOP CPA STS01 LDB ERC91 CPA STS02 LDB ERC92 CPA STS03 JMP *+7 CPA STS06 JMP *+5 LDA 1B SZB,RSS LDA ERC93 JMP READR,I * * ***** PICK CARD * RDR10 CLB ZERO TIME COUNTER SCC01 NOP * ***** WAIT FOR DATA WORD * SFC01 EQU * RDR11 SFC *-* 2T 1T+1C JMP RDR12 CLE 2T 1T+1C LDA 1B 2T 2T ADA READT 2T 2T SEZ 2T 1T+1C JMP RDR51 LDA OLT04,I 4T 8T-4C LDA 0B 2T 2T ADB P0002 2T 2T JMP RDR11 2T 1T+1C * 20T 20T * ***** PROCESS IST FLAG * RDR12 LDA NZERO 2T 2T CPA FLCNT 2T 2T JMP *+2 2T 1T JMP RDR13 LCA01 LIA *-*,C 2T 1T+1C STA IWPTR,I 3T 3T CPA RWPTR,I 3T 3T JMP RDR31 2T 1T * 16T 13T+3C AND MSK01 2T 2T CPA STS03 2T 2T JMP RDR71 LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK01 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BSCNT 2T 2T STA BSCNT 2T 2T LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK03 c2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C ADA BCCNT 2T 2T STA BCCNT 2T 2T LDA P0001 2T 2T ADA BWCNT 2T 2T STA BWCNT 2T 2T LDA OLT02,I 4T 6T-2C LDA TTM08,I 8T 8T ADB P0006 2T 2T * 60T 60T * JMP RDR31 2T 1T+1C * * ***** PROCESS REMAINING FLAGS * LCA02 EQU * RDR13 LIA *-*,C 2T 1T,1C STA IWPTR,I 3T 3T CPA RWPTR,I 3T 3T JMP RDR31 2T 1T XOR RWPTR,I 3T 3T AND MSK01 2T 2T CPA STS02 2T 2T JMP *+3 LDA NZERO 2T 2T JMP *+2 2T 1T+1C LDA P0001 ADA HSCNT 2T 2T STA HSCNT 2T 2T LDA IWPTR,I XOR RWPTR,I AND MSK01 CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BSCNT 2T 2T STA BSCNT 2T 2T LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T AND MSK03 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BCCNT 2T 2T STA BCCNT 2T 2T LDA P0001 2T 2T ADA BWCNT 2T 2T STA BWCNT 2T 2T LDA OLT03,I 4T 7T-3C LDA TTM05,I 5T 5T ADB P0006 2T 2T * 60T 60T * JMP RDR31 * RDR31 LDA IWPTR,I 3T 3T AND MSK04 2T 2T CPA STS04 2T 2T JMP RDR61 CPA STS06 2T 2T JMP RDR63 * LDA IWPTR 2T 2T ADA P0001 2T 2T STA IWPTR 2T 2T LDA RWPTR 2T 2T ADA P000/1 2T 2T STA RWPTR 2T 2T LDA FLCNT 2T 2T ADA P0001 2T 2T STA FLCNT 2T 2T LDA TTM05,I 5T 5T LDA OLT06,I 4T 10T-6C ADB P0006 2T 2T JMP RDR11 2T 1T+1C * ***** READ TIMED OUT * RDR51 LDA ERC99 JMP READR,I * ***** END OF DECK - END OF CARD * RDR61 ISZ FLCNT LDA BSCNT CPA HSCNT JMP *+3 LDA BWCNT JMP *+2 LDA BCCNT SZA BAD CHARACTERS ? JMP *+3 LDA ERC02 JMP READR,I LDA ERC03 JMP READR,I * ***** END OF CARD ONLY * RDR63 ISZ FLCNT LDA BWCNT SZA LDA ERC01 JMP READR,I * ***** * RDR71 LDA ERC80 JMP READR,I * * HED SUBROUTINE DMARD * ***** SUBROUTINE DMARD * * * * ARGUMENTS * * RWADD IS ADDRESS OF 1ST REFFERENCE WORD * IWADD IS ADDRESS OF 1ST TEST DATA WORD * ECCNT IS NO. OF DATA WORDS EXPECTED INCLUDING EOC WORD * READT IS TIME ALLOWED FOR READ AS A NEGATIVE NUMBER OF UNITS OF 10T * * DATA RETURNED * * A IS ERROR CODE (=0 IF NO ERRORS) * B IS READ TIME IN UNITS OF 10T * FLCNT IS COUNT OF FLAGS DETECTED * BWCNT IS COUNT OF DATA WORDS WITH ANY TYPE OF ERRORS * BSCNT IS COUNT OF DATA WORDS WITH BAD STATUS * HSCNT IS COUNT OF DATA WORDS WITH BAD HOPPERS STATUS * BCCNT IS COUNT OF DATA WORDS WITH BAD CHARACTERS * * CRCNT IS COUNT OF DATA WORDS TRANSFERED WITH OUT DMA * * * ERROR CODES * * 100006(ERC99) = READ TIMED OUT * * 000004(ERC98) = DMA LOG NOT UP TO DATE * 000005(ERC97) = DMA HARDWARE PROBLEM * 000006(ERC96) = MORE THAN 128 WORDS IN READ * 000007(ERC70) = DMA CANNOT OPERATE IN I/O SLOT * 000010(ERC95) = SRQ DETECTED WHEN BIT 15 = 0 * * BEFORE READ * * 100001(ERC90) = CK POWER HOPPER STACKER * 100002(ERC91) = EMPTY REJECT HOPPER * 100003(ERC92) = PRESS READY * 100005(ERC93) = ILLEGAL READY STATUS * * AT TIME OF 1ST FLAG * <:6 * 100004(ERC80) = PICK FAIL * * AFTER READ * * 000003(ERC02) = END OF DECK NORMAL * 000001(ERC03) = END OF DECK - BAD WORDS * 000002(ERC01) = END OF CARD - BAD WORDS * 000000 = END OF CARD - NORMAL * * * * * DMARD NOP LDA RWADD STA RWPTR LDA IWADD STA IWPTR LDA ECCNT STA DMACT CMA ADA IWPTR STA LWPTR LDA BUFLN ADA ECCNT CMA,INA STA EXCNT CLA STA FLCNT STA BWCNT STA BSCNT < <K 07261-18007 1546 S 0163 7261A OPTICAL MARK READER DIAGNOSTIC             H0101 F STA HSCNT STA BCCNT STA CRCNT STA ECODE * ***** MAKE CR READY * LIA03 LIA *-* AND MSK01 CLB CPA STS00 LDB ERC90 CPA STS01 LDB ERC91 CPA STS02 LDB ERC92 CPA STS03 JMP DRD10 CPA STS06 JMP DRD10 LDA 1B SZB,RSS LDA ERC93 JMP DMARD,I * * ***** SET UP READ * DRD10 CLB LDA DMACW OTA DMACC LDA IWADD CCE RAL,ERA CLC DMAAC OTA DMAAC LDA ECCNT STC DMAAC OTA DMAAC OTB05 OTB *-* STC DMACC,C SCC02 STC *-*,C * ***** MONITOR READ * DRD11 SFC DMACC 2T 1T+1C JMP DRD31 SFS01 SFS *-* JMP *+2 SFS02 SFS *-* JMP *+2 SFS03 SFS *-* JMP *+2 2T 1T+1C JMP DRD12 CR OFF LIA DMAAC 2T 1T+1C CPA DMACT 2T 2T JMP *+8 2T 1T+1C LDA IWPTR,I 3T 3T SSA,RSS 2T 1T+1C JMP DRD94 LDA OLT01,I 4T 5T-1C LDA TTM09,I 9T 9T ADB P0002 2T 2T JSB DWLOG LOG IN DATA WORD CLE 2T 1T+1C LDA 1B 2T 2T ADA READT 2T 2T SEZ 2T 1T+1C JMP DRD99 READ TIMED OUT LDA OLT10,I 4T 14T-10C LDA OLT01,I 4T 5T-1C LDA TTM04,I 4T 4T ADB P0004 2T 2T JMP DRD11 2T 1T+1C * 30T 30T * * *****PROCESS CARD READER FLAG * * DRD12 SFC DMACC 2T 1T+1C JMP DRD30 LIA DMAAC 2T 1T+1C CPA DMACT 2T 2T JMP *+2 2T 1T+1C JMP DRD98 UP TO DATE ERROR CPA ECCNT 2T 2T JMP DRD13 2T 1T+1C JMP DRD14 PARRALLEL TO ABOVE * ***** PROCESS CR FLAG ON 1ST WORD * 0 LIA04 EQU * DRD13 LIA *-* 2T 1T+1C AND MSK01 2T 2T CPA STS03 2T 2T JMP DRD61 LDA 0B 2T 2T JMP DRD15 2T 1T+1C * ***** PROCESS CR FLAG ON SUBSEQUENT WORD * LIA05 EQU * DRD14 LIA *-* 2T 1T+1C AND MSK01 2T 2T CPA STS04 2T 2T JMP DRD71 CPA STS06 2T 2T JMP DRD75 JMP DRD15 2T 1T+1C * ***** PROCESS NON-DMA DATA WORD * DRD15 STF DMACC 2T 1T+1C LIA06 LIA *-* 2T 1T+1C STA IWPTR,I 3T 3T JSB DWLOG 2T 1T+1C (SIMULATED) LDA CYCNT 2T 2T ADA N0001 2T 2T STA CYCNT 2T 2T LDA IWPTR 2T 2T CCE 2T 1T+1C RAL,ERA 2T 1T+1C CLC DMAAC 2T 1T+1C OTA DMAAC 2T 1T+1C LIA DMAAC 2T 1T+1C ADA P0001 2T 2T SZA,RSS 2T 1T+1C JMP DRD16 STC DMAAC 2T 1T+1C OTA DMAAC 2T 1T+1C LDA CRCNT 2T 2T ADA P0001 2T 2T STA CRCNT 2T 2T CLF01 CLF *-* STC DMACC,C 2T 1T+1C LDA OLT10,I 4T 14T-10C LDA OLT10,I 4T 14T-10C LDA OLT03,I 4T 7T-3C LDA TTM11,I 11T 11T ADB P0010 2T 2T JMP DRD11 2T 1T+1C * ***** PROCESS NON DMA WORD NEXT TO LAST * DRD16 LDA OLT09,I 4T 13T-9C LDA TTM08,I 8T 8T ADB P0003 2T 2T JMP DRD34 2T 1T+1C * 100T 100T * * ****** PROCESS DMA OFF CONDITION * * DRD30 LDA OLT04,I 4T 8T-4C LDA TTM06,I 6T 6T ADB P0002 2T 2T * 20T 20T * * * DRD31 LIA DMAAC 2T 1T+1C SZA 2T 1T+1C JMP DRD97 CPA DMACT 2T 2T JMP *+5 2T 1T+1C G ADA N0001 CPA DMACT JMP *+4 JMP DRD98 LDA TTM04,I 4T 4T CCA,RSS 2T 1T+1C CLA ADA IWPTR 2T 2T LDA 0B,I 3T 3T SSA,RSS 2T 1T+1C JMP DRD95 * * * SFS04 EQU * DRD32 SFS *-* 2T 1T+1C JMP *+2 SFS05 SFS *-* 2T 1T+1C JMP *+2 JMP DRD33 LDA OLT04,I 4T 8T-4C LDA TTM06,I 6T 6T ADB P0002 2T 2T JMP DRD32 2T 1T+1C * ***** RESET DMA IF EXTRA CHARACTERS * LIA07 EQU * DRD33 LIA *-* 2T 1T+1C AND MSK01 2T 2T CPA STS04 2T 2T JMP DRD71 CPA STS06 2T 2T JMP DRD75 LIA08 EQU * LIA *-* 2T 1T+1C STA IWPTR,I 3T 3T JSB DWLOG 2T 1T+1C (SIMULATED) LDA CRCNT 2T 2T ADA P0001 2T 2T STA CRCNT 2T 2T * * * DRD34 LDA FLCNT ADA N0128 SSA 2T 1T+1C JMP DRD96 LDA EXCNT 2T 2T STC DMAAC 2T 1T+1C OTA DMAAC 2T 1T+1C CLF02 CLF *-* 2T 1T+1C STC DMACC,C 2T 1T+1C LDA OLT10,I 4T 14T-10C LDA OLT08,I 4T 12T-8C LDA 0B 2T 2T ADB P0008 2T 2T JMP DRD11 2T 1T+1C * * ***** SUBROUTINE TO LOG IN DATA WORD FROM DMA * * DWLOG NOP LDA IWPTR,I 3T 3T XOR RWPTR,I 3T 3T STA SCRW1 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BWCNT 2T 2T STA BWCNT 2T 2T LDA SCRW1 2T 2T AND MSK01 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 1T+1C LDA NZERO ADA BSCNT 2T 2T STA BSCNT 2T  2T LDA SCRW1 2T 2T AND MSK01 2T 2T CPA STS02 2T 2T JMP *+3 LDA NZERO 2T 2T JMP *+2 2T 1T+1C LDA P0001 ADA HSCNT 2T 2T STA HSCNT 2T 2T LDA SCRW1 2T 2T AND MSK03 2T 2T CPA NZERO 2T 2T JMP *+3 LDA P0001 2T 2T JMP *+2 2T 2T LDA NZERO ADA BCCNT 2T 2T STA BCCNT 2T 2T * 60T 56T+4C * * LDA CYCNT 2T 2T ADA P0001 2T 2T CPA P0010 2T 2T JMP *+3 2T 1T+1C LDA TTM04,I JMP *+3 ADB P0001 2T 2T LDA NZERO 2T 2T STA CYCNT 2T 2T * 14T 13T+1C * * LDA IWPTR 2T 2T ADA P0001 2T 2T STA IWPTR 2T 2T LDA RWPTR 2T 2T ADA P0001 2T 2T STA RWPTR 2T 2T LDA FLCNT 2T 2T ADA P0001 2T 2T STA FLCNT 2T 2T LDA DMACT 2T 2T ADA P0001 2T 2T STA DMACT 2T 2T * 20T 20T * * LDA OLT05,I 4T 9T-5C LDA TTM07,I 7T 7T ADB P0011 2T 2T JMP DWLOG,I 3T 2T+1C * 16T 16T-4C * * TOTAL 112T 111T+1C * * UNCORRECTED(JSB=JMP) 2T 1T+1C * * * ***** ERROR CODE PROCESSING * * ***** PICK FAIL DRD61 LDA ERC80 JMP DMARD,I * ***** EOD PROCESSING * DRD71 STF DMACC LIA09 LIA *-* STA IWPTR,I JSB DWLOG ADB N0011 LDA CRCNT ADA P0001 STA CRCNT LDA BWCNT CPA HSCNT JMP *+3 LDA BWCNT JMP *+3 LDA BCCNT STA BWCNT SZA y JMP *+3 LDA ERC02 JMP DRD72 LDA ERC03 JMP DMARD,I * ***** EOC PROCESSING * DRD75 STF DMACC LIA10 LIA *-* STA IWPTR,I JSB DWLOG ADB N0011 LDA CRCNT ADA P0001 STA CRCNT LDA BWCNT SZA LDA ERC01 JMP DRD72 * ***** READ TIMED OUT * DRD99 LDA ERC99 JMP DMARD,I * ***** UP TO DATE ERROR * DRD98 LDA ERC98 * ***** REPORT DMA HARDWARE PROBLEM * DRD97 LDA ERC97 JMP DMARD,I * ***** REPORT MORE THAN 128 WORDS FOR READ * DRD96 LDA ERC96 JMP DMARD,I * ***** SRQ ERROR WITH DMA ON * DRD94 STF DMACC CLC DMACC * ***** SRQ ERROR WITH DMA OFF * CLC03 EQU * DRD95 CLC *-* LDA ERC95 JMP DMARD,I * SAVCD OCT 0 * DRD72 STA SAVCD SAVE CODE LDA CRCNT CPA FLCNT CRCNT=FLCNT? JMP *+2 YES, CHANGE ERROR CODE JMP *+3 NO, RESTORE ERROR CODE LDA ERC70 JMP DMARD,I LDA SAVCD JMP DMARD,I * HED I/O INSTRUCTION TABLE * CDSTG OCT 102100 STF DEC -3 DEF STF01 DEF STF02 DEF STF03 OCT 000100 SFC DEC -5 DEF SFC01 DEF SFC02 DEF SFC03 DEF SFC04 DEF SFC05 OCT 000100 SFS DEC -12 DEF SFS01 DEF SFS02 DEF SFS03 DEF SFS04 DEF SFS05 DEF SFS06 DEF SFS07 DEF SFS08 DEF SFS09 DEF SFS10 DEF SFS11 DEF SFS12 OCT 000200 LIA DEC -13 DEF LIA01 DEF LIA02 DEF LIA03 DEF LIA04 DEF LIA05 DEF LIA06 DEF LIA07 DEF LIA08 DEF LIA09 DEF LIA10 DEF LIA11 DEF LIA12 DEF LIA13 OCT 000100 OTA DEC -3 DEF OTA01 DEF OTA02 DEF OTA03 OCT 000100 STC RDEC -2 DEF STC01 DEF STC02 OCT 000200 CLF DEC -7 DEF CLF01 DEF CLF02 DEF CLF03 DEF CLF04 DEF CLF05 DEF CLF06 DEF CLF07 OCT 000400 LCA DEC -2 DEF LCA01 DEF LCA02 OCT 000200 SCC DEC -4 DEF SCC01 DEF SCC02 DEF SCC03 DEF SCC04 OCT 002700 OTB DEC -4 DEF OTB01 DEF OTB02 DEF OTB03 DEF OTB04 OCT 000100 CLC DEC -3 DEF CLC01 DEF CLC02 DEF CLC03 OCT 000000 * HED TEST POINTER TABLE TEST1 DEF ANN01 DEF INP01 DEF TST01 DEF ER001 DEF ER201 DEF ER301 DEF ER401 DEF ER501 DEF ER601 DEF ER701 DEF ER801 DEF ER901 DEF E1001 DEF E1101 DEF E1201 DEF E1301 DEF E1401 DEF E1501 TEST2 DEF ANN02 DEF INP02 DEF TST02 DEF ER101 DEF ER202 DEF ER302 DEF ER402 TEST3 DEF ANN03 DEF INP03 DEF TST03 DEF ER101 DEF ER202 DEF ER302 DEF ER402 TEST4 DEF ANN04 DEF INP04 DEF TST04 DEF ER101 DEF ER202 DEF ER302 DEF ER402 TEST5 DEF ANN05 DEF INP05 DEF TST05 DEF ER101 DEF ER202 DEF ER302 DEF ER402 TEST6 DEF ANN06 DEF INP02 DEF TST06 DEF ER101 DEF ER202 DEF ER302 DEF ER402 DEF ER206 DEF ER306 DEF ER406 DEF ER506 DEF ER606 TEST7 DEF ANN07 DEF INP07 DEF TST07 DEF ER101 DEF ER207 DEF ER307 TEST9 DEF ANN08 DEF ER402 DEF TST09 DEF ER108 DEF ER208 DEF ER308 TEST8 DEF ANN09 DEF INP09 DEF TST08 DEF ER101 DEF ER209 HED MESfSAGES * * ANN01 ASC 13,TEST 1. INTERFACE CHECK./ INP01 ASC 24,REMOVE MARK READER'S CONNECTOR FROM INTERFACE./ ER001 ASC 22,TEST OKAY. REPLACE MARK READER'S CONNECTOR./ ER101 ASC 6,TEST OKAY./ ER201 ASC 15,SFS AND SFC GIVE SAME RESULT./ ER301 ASC 11,FLAG NOT SET BY STF./ ER401 ASC 13,FLAG NOT CLEARED BY CLF./ ER501 ASC 14,CLC DOES NOT CLEAR CONTROL./ ER601 ASC 13,STC DOES NOT SET CONTROL./ ER701 ASC 13,PRESET DOES NOT SET FLAG./ ER801 ASC 16,PRESET DOES NOT CLEAR CONTROL./ ER901 ASC 22,PRESET DOES NOT SET FLAG OR CLEAR CONTROL./ E1001 ASC 22,CONTENTS OF CENTRAL INTERRUPT REGISTER BAD./ E1101 ASC 17,DEVICE COMMAND DOES NOT SET FLAG./ E1201 ASC 8,BITS STUCK ON./ E1301 ASC 8,BITS STUCK OFF./ E1401 ASC 10,STATUS BITS LATCH./ E1501 ASC 9,DATA BITS FLOAT./ AIOT1 ASC 12,PRESS (EXTERNAL) PRESET/ AIOT2 ASC 12,INSTALL TEST CONNECTOR/ ANN02 ASC 19,TEST 2. READ CLOCK-AFTER-DATA CHECK:/ INP02 ASC 14,PLACE 40-50 CLOCK-AFTER-DATA ASC 16, CARDS IN HOPPER (02760-9067)./ ER202 ASC 11,LAST CARD IN DECK HAD ER302 ASC 6,BAD WORDS./ ER402 ASC 1,_ ANN03 ASC 17,TEST 3. READ CLOCK-ON-DATA CHECK:/ INP03 ASC 16,PLACE 40-50 CLOCK-ON-DATA CARDS ASC 13,IN HOPPER (09869-90130)./ ANN04 ASC 24,TEST 4. (OPTION 3) READ 40 COL. NO CLOCK CHECK:/ INP04 ASC 14,PLACE 40-50 40-COL.-NO-CLOCK ASC 16, CARDS IN HOPPER (09869-90120)./ ANN05 ASC 24,TEST 5. (OPTION 3) READ 80 COL. NO CLOCK CHECK:/ INP05 ASC 14,PLACE 40-50 80-COL.-NO-CLOCK ASC 16, CARDS IN HOPPER (07261-90140)./ ANN06 ASC 15,TEST 6. READ USING DMA CHECK:/ ER206 ASC 12,DMA LOG NOT UP TO DATE./ ER306 ASC 11,DMA HARDWARE PROBLEM./ ER406 ASC 15,MORE THAN 128 WORDS IN READ./ ER506 ASC 21,DMA CANNOT OPERATE WITH THIS SELECT CODE./ ER606 ASC 14,SRQ DETECTED WHEN BIT 15=0./ ANN07 ASC 25,TEST 7. (OPTION 2) SELECT HOPPER CAPACITY CHECK:/ INP07 ASC 22,PLACE 40-50 OF ANY TYPE OF CARDS IN HOPPER./ HOPHD ASC 12,HOPPER HOLDS # CARDS./ ER207 ASC 10,COUNT IS TOO SMALL./ ER307 ASC 10,COUNT IS TOO LARGE./ o ANN09 ASC 13,TEST 8. PICK FAIL CHECK./ INP09 ASC 22,PLACE 40-50 OF ANY TYPE OF CARDS IN HOPPER. OCT 006412 ASC 17,FORCE PICK FAIL BY HOLDING CARDS./ ER209 ASC 12,THERE WAS NO PICK FAIL./ ANN08 ASC 18,TEST 9. (OPTION 4) LISTEN FOR BELL./ ER108 ASC 15,IF BELL HONKS ALL TESTS OKAY./ ER208 ASC 17,IF BELL HONKS TEST OKAY, HOWEVER, ROPER OCT 0 ASC 15, ERRORS DETECTED BEFORE BELL./ TIMES ASC 12,READ TIME: # MILLISEC./ ER308 ASC 13,IF BELL HONKS TEST OKAY./ AFLCM ASC 9,BAD FLAG COUNT: # ACRLF ASC 1,/ STM01 ASC 14,CK POWER, HOPPER, STACKER./ STM02 ASC 10,SELECT HOPPER FULL./ STM03 ASC 7,PRESS READY./ STM04 ASC 6,PICK FAIL./ STM05 ASC 11,ILLEGAL READY STATUS./ STM06 ASC 14,READ EXCEEDED TIME ALLOWED./ MHEAD ASC 6,DATA WORDS _* CMES1 ASC 13,WITH ANY TYPE OF ERRORS:#/ CMES2 ASC 13,WITH ANY BAD STATUS: #/ CMES3 ASC 13,WITH BAD HOPPERS STATUS:#/ CMES4 ASC 13,WITH BAD CHARACTERS: #/ CMES5 ASC 13,TRANSFERRED WITHOUT DMA:#/ HED COMPARISON FILES * COMPARISON FILES: * * TEST 3. CLOCK ON DATA * TEST 4. 40 COLUMN NO CLOCK ACFL1 OCT 160010 OCT 162041 OCT 160020 OCT 160040 OCT 160100 OCT 160200 OCT 160400 OCT 161000 OCT 162000 OCT 164000 OCT 160000 OCT 164000 OCT 162000 OCT 162041 OCT 161000 OCT 160400 OCT 160200 OCT 160100 OCT 160040 OCT 160020 OCT 160010 OCT 160010 OCT 160000 OCT 160010 OCT 160201 OCT 160000 OCT 160020 OCT 160000 OCT 160002 OCT 160010 OCT 160201 OCT 160002 OCT 160020 OCT 160000 OCT 160000 OCT 160000 OCT 160002 OCT 160010 OCT 160004 OCT 160004 OCT 060000 * * TEST 2. CLOCK AFTER DATA ACFL2 OCT 167777 OCT 160000 OCT 160001 OCT 160002 OCT 160004 OCT 160010 OCT 160020 OCT 160040 OCT 160100 (OCT 160200 OCT 160400 OCT 161000 OCT 162000 OCT 164000 OCT 167776 OCT 167775 OCT 167773 OCT 167767 OCT 167757 OCT 167737 OCT 167677 OCT 167577 OCT 167377 OCT 166777 OCT 165777 OCT 163777 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 162525 OCT 165252 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 060000 * * TEST 5. 80 COLUMN NO CLOCK. ACFL4 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 164001 OCT 160002 OCT 160004 OCT 160010 OCT 160020 OCT 1600<:640 OCT 160100 OCT 160200 OCT 160400 OCT 161000 OCT 162000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 160000 OCT 164001 OCT 060000 ADAFL BSS 200B SLIST BSS 30B END P< =L 09570-18293 1830 S 0122 &TODAY FORM DATE AND TIME STR             H0101 >ASMB,R,L,C HED "TODAY" RTE UTIL TO FORM STRING OF TODAY'S DATE AND TIME (DLB) * NAM TODAY,7 PRE-REL 3-26-76 (DLB) NAM TODAY,7 09570-16293 REV. A 761013 * *-------------------------------------------------------- * * RELOC. 09570-16293 * SOURCE 09570-18293 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- ENT TODAY EXT EXEC SPC 1 A EQU 0 B EQU 1 SUP SPC 1 * PURPOSE: * TO BUILD CALLERS 14 WORD BUFFER INTO A DATE/TIME MESSAGE IN * THE FOLLOWING FORM: * * "FRI 26 MAR 1976 18:24:30.09" * ---- ------ * WHERE: * TODAYS DATE IS FRIDAY, MARCH 26, 1976 AND THE TIME IS * 6:24 PM & 30.09 SECONDS. * * NOTES: * THE 1ST 2 WORDS MAY BE STRIPED OFF THE BUFFER AND THE LAST * THREE WORDS MAY BE STRIPPED OFF TO LOOK LIKE THIS: * * "26 MAR 1976 18:24" * * CALLING & EXAMPLE PROGRAM: * * FTN,L * PROGRAM DATE * DIMENSION IB(14),IP(5) * CALL RMPAR(IP) * 1 CALL TODAY(IB) * CALL EXEC (2,IP,IB,14) * CALL EXEC (2,IP,IB(3),9) * IB(13) = IB(13) - 14 * CALL EXEC (2,IP,IB,13) * END * * WHERE: IBUF IS A 14 WORD BUFFER AND IS STORED INTO BY * THE TODAY SUBROUTINE. SPC 1 YEAR NOP TMSEC NOP SEC NOP MIN NOP HOUR NOP DAY NOP TODAY NOP ENTRY POINT LDB TODAY,I ISZ TODAY GET PARAMETER ADDRESS LDA TODAY STB TODAY SAVE RETURN ADDRESS LDA A,I TRACK DOWN DIRECT PARAMETER RAL,CLE,SLA,ERA JMP *-2 CLE,ELA CALCULATE STARTING CHARACTOR STA CHRAD OF THE CALLERS BUFFER JSB EXEC NOW GET TIME FROM SYSTEM DEF *+4 DEF D11 CALL EXEC (11,IBUF,IYEAR) DEF TMSEC DEF YEAR LDA YEAR GET THE DAY OF WEEK ADA OM1 ARS,ARS WATCH OUT FOR LEAP YEAR ADA YEAR ADA DAY CLB DIV O7 RBL CALCULATE BUFFER ADDRESS ADB DAYWK POINT TO BUFFER JSB PUT2A PUT 4 CHARS FROM B-REG TO CALLERS BUF JSB PUT2A PUT THE NEXT TWO LDB DAY ADB DM60 SUBTRACT 2 MONTHS LDA YEAR GET YEAR AND O3 CHECK IF LEAP YEAR SZA LEAP YEAR? SSB OR BEFORE THE 29 FEB ADB OM1 NO, LEAP YEAR OR BEFORE FEB 29 SSB ADB D366 MAR 1 OR LATER ANY YEAR ADB D31 LDA B MPY BY 5 MPY O5 DIV D153 LIKE MAGIC, HUH! RAL MPY BY 2 ADA DEFMO GET MONTH ADDRESS STA PUT2A AND SAVE FOR LATER USE LDA B GET REMAINDER CLB AND DIVIDE BY 5 DIV O5 TO GET DAY OF MONTH INA MINUS ONE JSB PUT2# PUT 2 DIGIT NUMBER IN BUFFER LDB PUT2A GET MONTH ADDRES JSB PUT2A AND MOVE 4 CHARS JSB PUT2A AND THE NEXT TWO LDA O40 PUT IN SPACE JSB PUTCR IN BETWEEN MONTH & YEAR LDA YEAR CLB DIV D100 STB PUT2A SAVE FRACTION CENTURY FOR LATER JSB PUT2# PUT TWO DIGIT 19 IN BUFFER LDA PUT2A RETRIVE THE 76 JSB PUT2# AND PUT FRACTION OF CENTURY IN BUFFER ISZ CHRAD CHEAT BY BUMPING PAST SPACE IN BUFFER LDA O40 PUT SPACE IN BUFFER JSB PUTCR FOR TWO SPACES LDA HOUR JSB PUT2# SET IN HOUR LDA COLON JSB PUTCR PUT IN COLON LDA MIN JSB PUT2# SET IN MINUTES LDA COLON PUT IN COLON JSB PUTCR LDA SEC JSB PUT2# SET IN SECONDS LDA PEROD GET DECEMAL POINT JSB PUTCR LDA TMSEC JSB PUT2# SET IN TENS OF MILLISECONDS JMP TODAY,I RETURN DONE SPC 1 CHRAD NOP HOLD S CURRENT CHARACTOR ADDRESS PUTC1 NOP PUTCR NOP ENTRY A=CHARACTOR TO PUT AND O377 MASK OFF HIGH CHARACTOR STB PUTC1 SAVE THE B-REG LDB CHRAD GET CHARACTOR ADDRESS TO PUT CLE,ERB CONVERT TO WORD ADDRESS ISZ CHRAD SEZ,RSS ALF,SLA,ALF POSITION IF NECESSARY XOR B,I MERGE IN OLD XOR O40 PUT IN/TAKE OUT SPACE STA B,I AND PUT IN BUFFER LDB PUTC1 RESTORE B-REG JMP PUTCR,I RETURN DONE SPC 1 PUT2A NOP MOVE 4 CHARACTORS FROM ADDRESS LDA B,I GET 1ST CHAR ALF,ALF POSITION JSB PUTCR AND PUT LDA B,I GET 2ND CHAR JSB PUTCR INB BUMP TO NEXT WORD JMP PUT2A,I RETURN SPC 1 PUT2# NOP CONVERT AND PUT 2 DIGIT # IN A-REG CLB FIRST CONVERT DIV D10 NUMBER TO BASE TEN ADB O60 CONVERT TO ASCII ADA O60 CONVERT TO ASCII JSB PUTCR PUT HIGH DIGIT LDA B JSB PUTCR PUT LOW DIGIT JMP PUT2#,I RETURN SPC 1 OM1 OCT -1 DM60 DEC -60 O3 OCT 3 O5 OCT 5 O7 OCT 7 D10 DEC 10 D11 DEC 11 D31 DEC 31 O40 OCT 40 PEROD OCT 56 COLON OCT 72 O60 OCT 60 D100 DEC 100 D153 DEC 153 O377 OCT 377 D366 DEC 366 DAYWK DEF *+1 ASC 14,FRI SAT SUN MON TUE WED THU DEFMO DEF *-1 ASC 12, MAR APR MAY JUN JUL AUG ASC 12, SEP OCT NOV DEC JAN FEB ORR END  >F 09570-18496 1830 S 0122 &GRUPM GET RUN PARAMETERS             H0101 ASMB,R,L,C HED "GRUPM" GET RUN PARAMETERS FROM CALLER 7-76 (DLB) * NAM GRUPM,7 PRE-REL 7-21-76 (DLB) * NAM GRUPM,7 09570-16496 REV. A 761013 NAM GRUPM,7 PRE-REL 771128 (DLB) ENT GRUPM EXT EXEC,PAU.E,NAMR,REIO,.ENTR SPC 1 * *-------------------------------------------------------- * * RELOC. 09570-16496 * SOURCE 09570-18496 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- A EQU 0 B EQU 1 SPC 1 * PURPOSE: * TO GET A "RUN STRING" FROM THE SCHEDULING PROGRAM (I.E. FMGR) * CALLED: * CALL GRUPM(IBUF,IENDCR,ISTRCR,IASKMS,MESLN) * WHERE: * IBUF = 40 WORD BUFFER WHERE THE CALLERS STRING WILL BE STORED. * ISTRCR = THE START CHARACTOR IN BUFFER TO BEGIN PARSING. * IENDCR = THE LAST CHARACTOR NUMBER STORED IN STRING BUFFER (IBUF) * IASKMS = THE MESSAGE BUFFER OUTPUTTED TO OPERATOR IF A STRING * BUFFER WAS NOT PASSED BY THE CALLING PROGRAM. * MESLN = THE NEGATIVE NUMBER OF CHARACTORS OR POSITIVE * NUMBER OF WORDS IN "IASKMS" * EXTERNALS USED: * PAU.E = THE LOGICAL UNIT OF TERMINAL FOR OUTPUTTING MESSAGE. * TEST PROGRAM *FTN,L * PROGRAM TEST * DIMENSION IBUF(40),IASKMS(16) * DATA IASKMS/2HIN,2HPU,2HT ,2HTH,2HE ,2HST,2HRI,2HNG,2H O,2HF * 1,2H Y,2HOU,2HR ,2HDR,2HEA,2HMS/,MESLN/16/ * LU = ITMLU(IBATCH) * CALL GRUPM (IBUF,IENDCR,ISTRCR,IASKMS,MESLN) * LEN = (IENDCR+1)/2 * LENST = ISTRCR-1 * WRITE (LU,100) LENST,(IBUF(I),I=1,LEN) * 100 FORMAT("THE PASSED STRING WAS AS FOLLOWS, MINUS "I2" CHARACTORS" * 1,/,40A2) * STOP * END * END$ * NOTES: * THE STRING CAN COME FROM TWO PLACES. ONE IS FROM THE OPERATOR. * IN THIS CASE THE "ISTRCR" IS RETURNED = 1. TWO IS FROM THE CALLING * PROGRAM SUCH AS THE "FMGR". IN THIS CASE THE PASSED STRING IS * PASSED THUR SYSTEM MEpMORY WITH A ":RUN,PROGM,," IN FRONT OF THE * BUFFER OF INTEREST. THEREFORE THIS SUBROUTINE WILL RETURN A START * CHARACTOR (ISTRCR) = 13 SO THE CALL MAY BEGIN HIS PARSE AT THE * 4TH PARAMETER DELIMITED BY COMMAS. THE WHOLE STRING IS LEFT IN * "IBUF" SO THAT THE CALLER MAY PRINT IT OUT IF DESIRED. SPC 1 IBUF NOP DESTINATION BUFFER IENDR NOP BUFFER LENGTH IN CHARACTORS ISTCR NOP STARTING CHARACTOR NUMBER IASKM NOP BUFFER OF OPERATOR MESSAGE MESLN NOP MESSAGE BUFFER LENGTH GRUPM NOP ENTRY POINT JSB .ENTR DEF IBUF TOP OF STACK CLA,INA PRESET START CHAR AS ONE STA START AND SET UP FOR PARSE ROUTINE LDA PAU.E GET THE MESSAGE LOGICAL UNIT # IOR O400 MERGE IN THE PRINT BIT STA LGLU SAVE FOR REIO CALLS JSB EXEC GET STRING FROM SYSTEM DEF *+5 DEF NA14 NO ABORT 14 DEF O1 READ REQUEST DEF IBUF,I INPUT BUFFER DEF DM80 BUFFER LENGTH IN CHARACTORS CLB ABORTED!!, MAKE TLOG = 0 STB IENDR,I SAVE LAST CHARACTOR NUMBER JSB PARSE GO PARSE THE PASSES BUFFER JSB PARSE IGNORE THE 1ST TWO PARAMETERS STB ISTCR,I SET START CHAR IN CASE OF 1 COMMA JSB PARSE GET 3RD PARAMETER LDA PARMB GET PARAMETER VALUE SZA IS PARAMETER = 0? CPA PAU.E OR IS PARAMETER = TERMINAL LU? RSS GO GET NEXT ONE & CHECK IF HAS RUN STRING JMP CKFME MUST BE GOOD PARAMETER, CHECK FUTHER STB ISTCR,I TWO COMMAS, SET NEW STARTING CHARACTOR SPC 1 * NOW CHECK IF THERE IS ANY DATA IN THE RUN STRING SPC 1 CKFMD JSB PARSE NOW GET NEXT PARAMETER CKFME LDA PARMB+3 GET THE PARAMETER TYPE SZA,RSS CHECK IF CONTAINS DATA? JMP CKFMD NO, CHECK IF NEXT PARAMETER CONTAINS DATA JMP DONE YES, EXIT IN BATCH MODE SP C 1 ASK JSB REIO NO, GO ASK OPERATOR DEF *+5 DEF O2 WRITE OUT PROMPT MESSAGE DEF LGLU TERMINAL LU WITH PRINT BIT DEF IASKM,I MESSAGE BUFFER DEF MESLN,I MESSAGE LENGTH JSB REIO NOW GET ANSWER DEF *+5 DEF O1 READ DEF LGLU DEF IBUF,I INPUT BUFFER DEF DM80 BUFFER LENGTH IN CHARACTORS STB IENDR,I SAVE LENGTH FOR CALLER CLA,INA PRESET THE START CHARACTOR TO (1) STA ISTCR,I IN CALLERS PARAMETERS DONE JMP GRUPM,I YES, RETURN SPC 1 * PARSE THE NEXT PARAMETER IN RUN STRING SPC 1 START NOP CURRENT STARTING CHARACTOR NUMBER PARSE NOP ENTRY START & END CHARACTOR ALREADY SET JSB NAMR USE THE SYSTEM PARSE ROUTINE DEF *+5 DEF PARMB OUTPUT PARSE BUFFER (10 WORDS) DEF IBUF,I INPUT STRING BUFFER DEF IENDR,I LENGTH OF STRING BUFFER DEF START AND THE STARTING CHARACTOR SSA CHECK IF NO MORE DATA JMP ASK NO DATA, GO ASK OPERATOR FOR INFO LDB START GET STARTING CHARACTOR NUMBER FOR JMP PARSE,I NEXT PARAMETER IN B-REG SPC 1 O1 OCT 1 O2 OCT 2 O400 OCT 400 DM80 DEC -80 NA14 ABS 100000B+14 LGLU NOP PARMB REP 10 TEN WORDS IN PARSE BUFFER NOP END | ?G 09570-18497 1830 S 0122 >LU# GET LOGICAL UNIT NUMBER             H0101 NASMB,R,L,C HED "GTLU#" GET LOGICAL UNIT FROM PROGENITORS NAMES 9-76 (DLB) * NAM GTLU#,7 PRE-REL 9-6-76 (DLB) * NAM GTLU#,7 09570-16497 REV. A 761013 * NAM GTLU#,7 09570-16497 REV. B 761129 NAM GTLU#,7 PRE-REL (RTE-IV) 780327 (DLB) * *-------------------------------------------------------- * * RELOC. 09570-16497 * SOURCE 09570-18497 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT GTLU#,ISN EXT .XLB,.XLA SPC 1 A EQU 0 B EQU 1 KEYWD EQU 1657B XEQT EQU 1717B SPC 1 * PURPOSE: * THIS ROUTINE WILL GET THE LOGICAL UNIT OF THE STATION TERMINAL. * METHOD: * THE LAST TWO CHARACTORS OF THE PROGRAMS PROGENITORS NAME * ARE CHECKED FOR BEING NUMERIC FROM 1 TO 63 AND THE SESSION BIT SET. * IF THIS FAILS, THEN A LU = 0 IS RETURNED AND THE E-REG IS SET. * CALLED: * LU = ISN(IDMY) -OR- JSB GTLU# * * WHERE: * LU = THE LOGICAL UNIT OF THE TERMINAL OF THE STATION. * IDMY = ANY OLD DUMMY VERIABLE TO TELL FTN IT IS A FUNCTION. * NOTES: * IF THE LU IS NOT FOUND, THEN LU = 0 * IF LU IS NOT FOUND E-REG = 1, ELSE = 0 * TEST PROGRAM: *FTN,L * PROGRAM TEST * LU = ISN(LU) * WRITE (LU,100) LU * 100 FORMAT ("THE LOGICAL UNIT OF THIS MESSAGE IS "I2) * END * END$ SPC 1 ISN NOP FORTRAN ENTRY JSB GTLU# LDB ISN,I GET RETURN ADDRESS JMP B,I RETURN DONE SPC 1 GTLU# NOP ASMB ENTRY LDB XEQT GET ADDRESS OF THIS PROGRAM MORE1 ADB D13 BUMP TO ADDRESS OF 3&4 CHARS OF NAME STB GTLU1 SAVE ADDRESS OF CHARS 3 & 4 ADB O7 BUMP TO ID(21) JSB .XLA GET FATHER POINTER WORD OCT 100001 * LDA B,I RAL,RAL FATHER WAITING? SLA,RSS JMP CHECK NO, NOW GO CHECK IF LU IK  S IN LAST 2 CHARS JSB .XLA YES, GET HIS ID NUMBER OCT 100001 * LDA B,I AND O377 IN LO BYTE ADA OM1 SUBTRACT ONE ADA KEYWD INDEX INTO KEYWORD TABLE JSB .XLB GET ID ADDRESS OF FATHER OCT 100000 * LDB A,I JMP MORE1 AND GO PROCESS SPC 1 CHECK CLE,SSA,RSS CHECK IF SESSION BIT IS SET? JMP NOFAT NO, RETURN ERROR LDB GTLU1 GET ADDRESS OF CHARS 3 & 4 JSB .XLA GET 3 & 4 CHARS OCT 100001 * LDA B,I AND O377 MASK OFF TO LEAVE 4TH CHAR ADA OM72 CHECK IF > THAN 9 SEZ,CLE,RSS LEAVE E=0 IF ERROR ADA D10 NOW CHECK => 0 SEZ,CLE,INB,RSS OK? JMP NOFAT NO, RETURN A = 0 STA GTLU1 YES, SAVE FOR LATER JSB .XLA GET 5TH CHARS OCT 100001 * LDA B,I ALF,ALF POSTITION IN LOW BYTE AND O377 MASK TO 5TH CHAR ADA OM72 CHECK IF 0 TO 9 SEZ,CLE,RSS CHECK IF OK ADA D10 SEZ,CLE,RSS OK? JMP NOFAT NO, RETURN A=0 LDB GTLU1 YES, GET MOST SIGNF CHAR BLF,RBR MPY BY 8 ADB GTLU1 ADB GTLU1 AND ADD IN 2 ADA B AND FORM NUMBER STA B NOW CHECK IF 0 TO 63 FOR LEGAL LU AND O77 MASK OFF POSSIBLE BITS CPA B NUMBER 0 - 63? CLE,SZA,RSS YES, GOOD RETURN NOFAT CLA,CCE NO, BAD RETURN JMP GTLU#,I RETRUN A-REG = ANSWER SPC 1 GTLU1 NOP TEMP OM72 OCT -72 O7 OCT 7 D10 DEC 10 D13 DEC 13 O77 OCT 77 O377 OCT 377 OM1 OCT -1 END eY  @G 09570-18499 1830 S 0122 &IDGT# DUPLICATE ID SEGMENT             H0101 ASMB,R,L,C HED TYPE 5 MANAGER INTERFACE * NAM IDGT#,7 PRE-REL 7-22-76 (MOS) * NAM IDGT#,7 09570-16499 REV. A 761013 * NAM IDGT#,7 PRE-REL 770213 (DLB) NAM IDGT#,7 PRE-REL 780402 (DLB) (RTE-IV) * *-------------------------------------------------------- * * RELOC. 09570-16499 * SOURCE 09570-18499 * * M. SPANN 13 OCT 76 REV. * *--------------------------------------------------------- * ENT IDGT#,IDMG# EXT EXEC,.XLB * A EQU 0 B EQU 1 XEQT EQU 1717B TAT EQU 1656B TATSD EQU 1756B * IDMG# NOP LDB IDMG# STB IDGT# CLB,INB,RSS IDGT# NOP STB IDMG# SAVE NUMBER OF MODULES TO :RP, STA TEMP INA STA TEMP+1 INA STA TEMP+2 LDA XEQT GET IDSEGMENT ADDRESS OF THIS PROGRAM ADA D26 BUMP TO THE DISC ADDRESS WORD JSB .XLB GET THE DISC ADDRESS WORD DEF A,I * LDB A,I CLE,ELB GET THE DISC LU IN E-REG LSR 8 POSITION DISC TRACK TO LO 8 BITS CLA,SEZ CHECK IF ON LU = 3 ADB TATSD YES, LU = 3, ADD IN TRACKS IN LU = 2 ADB TAT INDEX INTO THE TAT TABLE JSB .XLB GET THE VALUE IN THE TAT TABLE DEF B,I * LDB B,I CPB FMPTK CHECK IF IS ON A FMGR TRACK? CLA,INA,RSS YES, CONTINUE JMP EXIT NO, SKIP CALL TO T5IDM ELA NOW CALCULATE IF ON LU = 2 OR 3 CMA,INA MAKE NEGATIVE STA CRN AND SET TO CRN = -2 OR -3 JSB EXEC DEF RTN DEFER DEF SCHD DEF T5IDM TEMP NOP PARAMETERS TO PASS NOP NOP DEF IDMG# NUMBER OF SEGMENTS DEF CRN THE CARTRAGE OF THIS PROGRAM RTN NOP T5IDM NOT FOUND EXIT JMP IDGT#,I * SCHD OCT 100027 D26 DEC 26 FMPTK OCT 77776 T5IDM ASC 3,T5IDM CRN NOP END    AH 09570-18504 1830 S 0122 &INAMR INVERSE PARSE BUF TO NAM             H0101 5$ASMB,R,L,C HED "INAMR" RTE FMGR "NAMR" INVERSE PARSING ROUTINE 3-27-76 (DLB) * NAM INAMR,7 PRE-REL 3-29-76 (DLB) NAM INAMR,7 09570-16504 REV. A 761013 * *-------------------------------------------------------- * * RELOC. 09570-16504 * SOURCE 09570-18504 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT INAMR EXT .ENTR SPC 1 A EQU 0 B EQU 1 * THIS ROUTINE WILL DO A CAREFULL AND COMPLETE INVERSE PARSE OF A * BUFFER IN THE FORMAT THAT THE "NAMR" ROUTINE BUILDS IT. THE STRING * GENERATED WILL BE VOID OF TRAILING SPACES, COLONS AND LEADING * ASCII ZERO'S. THE STRING GENERATED WILL BE EQUAL OR SHORTER THAN * THE ORIGIONAL AND WILL PARSE USING THE "NAMR" ROUTINE BACK TO THE * ORIGIONAL TEN WORD BUFFER. SPC 1 * THE TEN WORDS AS INPUT TO THIS ROUTINE ARE DESCRIBED AS FOLLOWS: SPC 1 * WORD 1 = 0 IF TYPE = 0 (SEE BELOW) * WORD 1 = 16 BIT TWO'S COMPLEMENT NUMBER IF TYPE = 1 * WORD 1 = CHARS 1 & 2 IF TYPE = 3 * WORD 2 = 0 IF TYPE = 0 OR 1, CHARS 2 & 3 OR TRAILING SPACE(S) IF 3. * WORD 3 = SAME AS WORD 2. (TYPE 3 PARAM. IS LEFT JUSTIFIED) * WORD 4 = PARAMETER TYPE OF ALL 7 PARAMETERS IN 2 BIT PAIRS. * 0 = NULL PARAMETER * 1 = INTEGER NUMERIC PARAMETER * 2 = NOT IMPLEMENTED YET. (FMGR?) * 3 = LEFT JUSTIFIED 6 ASCII CHARACTER PARAMETER. * BITS FOR ,FNAME : P1 : P2 : P3 : P4 : P5 : P6 , * 0,1 2,3 4,5 6,7 8,9 10,11 12,13 * NOTE: IF THE TYPE BITS ARE = 0 AND THE FIRST WORD IN THE PARAMETER * IS NOT = 0, THEN THE PARAMETER IS TAKEN TO BE ASCII AND * THE SUB-PARAMETERS ARE TAKEN TO BE NUMERIC. * WORD 5 = 1ST SUB-PARAMETER AND HAS CHARACTERISTICS OF WORD 1. * WORD 6 = 2ND SUB-PARAMETER DELIMETED BY COLONS AS IN WORD 5. * WORD 7 = 3RD SUB-PARAM. AS 5 & 6. (MAY BE 0, NUMBER OR 2 CHARS) * WORD 8 = 4TH H " * WORD 9 = 5TH " * WORD 10 = 6TH SUB-PARAM. (FOR POSSIBLE FUTURES I.E. SYSTEM #) SKP * CALLED: * IF(INAMR(IPBUF,OTBUF,LENTH,NCHRS)) 10,20 * * WHERE: * IPBUF = TEN WORD INPUT PARAMETER BUFFER * OTBUF = STARTING ADDRESS OF BUFFER TO STORE OUTPUT STRING. * LENTH = CHARACTER LENGTH OF "OTBUF". (MUST BE POSITIVE) * NCHRS = THE CURRENT NUMBER OF CHARACTORS IN "OTBUF". THIS * PARAMETER WILL BE UPDATED FOR POSSIBLE NEXT CALL * TO "INAMR" AS THE CURRENT "TRANSMISSION LOG". * CAUTION!!!! * NCHRS SHOULD START AS A ZERO IF NO CHARACTORS ARE IN "OTBUF". * NCHRS IS MODIFIED BY THIS ROUTINE, THEREFORE IT MUST * BE PASSED AS A VARIABLE (NOT A CONSTANT) FROM CALLER.(FTN) * * 10 BRANCH = A-REG RETURNS NEG IF PASSED A BUFFER OF IN- * SUFFICIENT LENGTH TO STORE STRING. (I.E. NCHRS => LENTH) * 20 BRANCH = THIS ROUTINE WAS PASSED A BUFFER WITH SUFFICIENT * LENGTH TO STORE INVERSE PARSED STRING. SKP * EXAMPLES THAT CAN BE INVERSED PARSED: * * STRING PASSED TO THE "NAMR" ROUTINE: * +12345, DOUG:DB:-12B:,,GEORGE: A, &PARSE:JB::4:-1:1775:123456B * * BUFFERS PRODUCED BY THE "NAMR" ROUTINE: * NAMR # W1 W2 W3 W4 W5 W6 W7 W8 W9 W10 * * 1 12345 0 0 00001B 0 0 0 0 0 * 2 DO UG 00037B DB -10 0 0 0 0 * 3 0 0 0 00000B 0 0 0 0 0 0 * 4 GE OR GE 00017B A 0 0 0 0 0 * 5 &P AR SE 12517B JB 0 4 -1 1775 -22738 * * STRING PRODUCED (INPARSED) FROM THE BUFFER: * 12345,DOUG:DB:-10,,GEORGE:A,&PARSE:JB::4:-1:1775:-22738, * * TEST PROGRAM *FTN,L * PROGRAM TESTI * DIMENSION IB2(18),IB1(36),IPBUF(100) * CALL RMPAR(IB1) * LU = IB1 * IF (LU.EQ.0) LU = 1 * 1 WRITE (LU,100) * 1{00 FORMAT ("INPUT ASCII NAMR'S TO PARSE ?") * READ (LU,101) IB1 * 101 FORMAT (36A2) * CALL ITLOG(LEN) * IF (LEN.EQ.0) STOP 77 * ISTRC = 1 * NCHRS = 0 * 200 IFLG1 = NAMR(IPBUF,IB1,LEN,ISTRC) * IF (IFLG1.LT.0) WRITE (LU,206) * 206 FORMAT ("NAMR OUT OF DATA") * IFLG2 = INAMR(IPBUF,IB2,36,NCHRS) * IF (IFLG2.LT.0) WRITE (LU,207) * 207 FORMAT ("INAMR OUT OF BUFFER") * IF(IFLG1.LT.0.OR.IFLG2.LT.0) GO TO 1 * CALL EXEC (2,LU,IB2,-NCHRS) * GO TO 200 * END * END$ SKP * CHECK CALLERS PARAMETERS FOR CORRECTNESS SPC 1 IPBUF NOP TEN WORD INPUT BUFFER OTBUF NOP OUTPUT BUFFER ADDRESS LENTH NOP LENGTH OF OUTPUT BUFFER IN CHARACTERS NCHRS NOP CURRENT STARTING CHARACTER IN OTBUF INAMR NOP ENTRY POINT JSB .ENTR GET PARAMS ADDRESS DEF IPBUF LDA OTBUF FORM STARTING CHARACTER CLE,ELA ADDRESS OF OUTPUT BUFFER STA OTBUF SAVE AS CHARACTER ADDRESS. LDB LENTH,I GET CHARACTER LENGTH ADA B CHECK IF IN CORE BOUNDS LDA NCHRS,I GET START CHAR-1 IN "OTBUF" STA SAVST SAVE START CHARACTOR NUMBER CMB,SSB,INB,SZB CHECK FOR 0 & NEG. SSA CHECK NCHRS FOR ZERO OR POSITIVE ERREX CCE FORCE ERROR EXIT ADB A NCHRS MUST BE < LENTH CCA,SEZ TEST E FOR ERROR JMP INAMR,I RETURN A= -1 FOR ERROR CLA INITITIALIZE STA SPACT TRAILING SPACE COUNT STA COLCT TRAILING COLON COUNT LDA IPBUF GET INPUT BUFFER ADDRESS LDB D3 GET LENGTH OF BUFFER (WORDS) ADB A GET ADDRESS OF PARAMETER TYPE STB IPBUF SAVE ADDRESS OF WORD4 LDB B,I GET PARAMETER TYPE WORD STB WORD4 SAVE FOR FUTURE EXAMINATION LDB D3 GET LENGTH OF PARAMETER JSB SCAN GET 1ST PARAMETER LDB DM6 NOW SCAN FOR NEXT C5 SUB-PARAMS STB SUBCT MORE1 ISZ IPBUF BUMP TO NEXT PARAMETER LDA WORD4 NOW POSITION PARAMETER TYPE RAR,RAR BITS FOR NEXT PARAMETER STA WORD4 LDA IPBUF GET DESTINATION BUFFER ADDRESS CLB,INB AND THE LENGTH JSB SCAN GET NEXT SUB PARAM ISZ SUBCT DONE WITH ALL SIX? JMP MORE1 NO, CONTINUE LDB LENTH,I CHECK IF AT END OF BUFFER BEFORE STORING CPB NCHRS,I THE COMMA IN THE BUFFER JMP *+3 SKIP COMMA STORE AND START CHARACTOR STORE LDA COMMA JSB PUTCR PUT COMMA IN BUFFER CLA,CLE RETURN A-REG = 0 JMP INAMR,I RETURN DONE SPC 1 SCAN NOP A=DEST BUFFER ADDRS, B=LENGTH(WORDS) STA DESTA SAVE DESTINATION ADDRESS CMB,INB MAKE NEG. STB DESTL SAVE DEST. BUFFER LENGTH (WORDS) LDA WORD4 GET PARAMETER TYPE AND D3 GET TYPE BITS CPA D3 IF = 3 THEN ASCII JMP ASCII SLA IF = 1 THEN NUMBERIC JMP NUMBR IOR DESTA,I MUST BE 0 OR 2, CHECK IF PARM IS NULL SZA,RSS NULL? JMP STOCL YES, GO STORE COLON INB,SZB CHECK IF LENGTH = 1 WORD JMP ASCII OR ASCII IF MORE THAN 1 WORD. SPC 1 NUMBR LDA O60 GET AN ASCII 0 IN CASE NUMB. IS = 0 STA LDFLG SET THE LEADING 0 SUPPRESS FLAG LDB DESTA,I GET NUMBER CMB,CCE,SSB,INB,SZB CHECK IF NUMBER IS 0 OR - CMB,CLE,INB POSITIVE, CLE STB CURVL SAVE ABS VALUE OF NUMBER SEZ,SZB IF + OR 0 SKIP LDA MINUS IF NEG STORE "-" IN BUFFER CLB,SEZ IF POSITIVE SKIP STORE IF - OR 0 JSB PUTCR STORE A "0" OR "-" LDA D10K INITIALIZE THE POWER WORD MORNM STA POWER LDA CURVL GET CURRENT VALUE OF NUMB. DIV POWER FROM NUMBER STB CURVL AND SAVE THE REMAINDER ADA O60 CONVERT TO ASCII NUMBER CPA ;LDFLG CHECK IF LEADING ZERO? JMP *+3 YES, SKIP STORE JSB PUTCR AND PUT IN STRING BUFFER STB LDFLG CLEAR LEADING ZERO SUPPRESS FLAG LDA POWER NOW DIVIDE THE POWER BY 10 CLB IN CASE OF LEADING ZERO DIV D10 SZA CHECK IF POWER IS = ZERO? JMP MORNM NO, MORE DIGITS TO CONVERT STOCL LDA COLON GET THE : JSB PUTCR AND PUT IN BUFFER JMP SCAN,I RETURN TO CALLER SPC 1 ASCII LDA DESTA,I MOVE ASCII BUFFER INTO OUTPUT STRING ALF,ALF POSITION AND ASSUME LEFT JUSTIFIED JSB PUTCR AND PUT IN DEST BUFFER LDA DESTA,I GET 2ND CHAR JSB PUTCR ISZ DESTA BUMP TO NEXT WORD ISZ DESTL CHECK IF DONE? JMP ASCII NO, MOVE MORE WORDS JMP STOCL STORE : AND EXIT SPC 1 PUTCR NOP STORE CHAR IN CALLERS BUFFER AND O177 MASK TO ONE CHAR STA SAVCR SAVE THE CHARACTOR CPA COLON CHECK IF CHAR IS ":" CLB,RSS ZERO SPACE COUNT AND BUMP : COUNT JMP *+4 STB SPACT ZERO SPACE COUNT ISZ COLCT BUMP COLON COUNTER JMP PUTEX RETURN CPA O40 CHECK IF CHAR IS ASCII SPACE CLB,RSS YES, BUMP THE SPACE COUNT JMP *+3 ISZ SPACT BUMP THE SPACE COUNT JMP PUTEX AND RETURN CPA COMMA CHECK IF CHAR IS COMMA? CLB,RSS YES, ZERO COLON & SPACE COUNT JMP *+3 SKIP ZERO SPACE & : STB COLCT ZERO COLON COUNT STB SPACT ZERO SPACE COUNT LDB COLCT GET CURRENT COLON COUNTER CMB,INB,SZB,RSS JMP NOCOL NO COLONS, LOOK FOR SPACES STB COLCT SAVE COUNTER LDA COLON NOW STORE COLONS UNTIL COUNT EXAUSTED JSB STOCR GO STORE THE COLONS ISZ COLCT DONE? JMP *-3 NO, DO ANOTHER NOCOL LDB SPACT GET THE SPACE COUNT CMB,INB,SZB,RSS CHECK IF ANY SPACES? V JMP STORE NO SPACES, GO STORE CHARACTOR STB SPACT SAVE SPACE COUNT LDA O40 GET AN ASCII SPACE JSB STOCR STORE IN LEADING OR IMBEDDED SPACES ISZ SPACT DONE? JMP *-3 NO GO STORE ANOTHER ONE STORE LDA SAVCR RETRIVE THE ORIGIONAL STORE CHAR JSB STOCR GO STORE IT. PUTEX CLB JMP PUTCR,I RETURN B-REG = 0 SPC 1 STOCR NOP STORE CHARACTOR IN A-REG IN CALLERS BUFFER LDB NCHRS,I GET NUMB CHARS IN BUFFER CPB LENTH,I IF EQUAL TO BUFFER LENGTH>NO MORE STORE JMP ENDBF YES, ERROR ADB OTBUF NO, CALCULATE CHARACTOR BUFFER ADDRESS ISZ NCHRS,I BUMP THE NUMBER OF CHARS COUNTER CLE,ERB CHANGE TO WORD ADDRESS SEZ,RSS CHECK EVEN/ODD FLAG ALF,SLA,ALF AND POSITION XOR B,I MERGE IN WITH OLD WORD XOR O40 AND PUT IN/TAKE OUT SPACE STA B,I AND PUT BACK IN BUFFER JMP STOCR,I AND RETURN P+1 SPC 1 ENDBF LDA SAVST RESTORE THE START CHARACTOR STA NCHRS,I POINTER JMP ERREX AND RETURN ERROR EXIT SPC 1 SPACT NOP NUMBER OF TRAILING SPACES COLCT NOP NUMBER OF TRAILING COLONS SAVST NOP START CHARACTOR SAVE LOCATION SAVCR NOP SAVED STORE CHARACTOR LDFLG NOP LEADING ZERO SUPPRESS FLAG POWER NOP WORKING WORD CURVL NOP WORKING WORD DESTA NOP DESTINATION BUFFER ADDRESS DESTL NOP DEST. BUFFER LENGTH IN CHARACTERS SPC 1 O177 OCT 177 MINUS OCT 55 O60 OCT 60 O40 OCT 40 COMMA OCT 54 COLON OCT 72 D3 DEC 3 D10 DEC 10 D10K DEC 10000 DM6 DEC -6 SUBCT NOP HOLDS SUB-PARAM. COUNTER WORD4 NOP HOLDS VALUE OF IPBUF(4) END =*($$* B N 09570-18507 1830 S 0122 &ITMLU GET TERMINAL LU             H0101 ASMB,R,L,C HED "ITMLU" ROUTINE TO GET THE TERMINAL LOGICAL UNIT # 6-76 (DLB) *9-28 NAM ITMLU,7 PRE-REL 7-21-76 (DLB) * NAM ITMLU,7 PRE-REL 9-30-76 (DLB) * NAM ITMLU,7 09570-16507 REV. A 761013 * NAM ITMLU,7 09570-16507 REV. B 761129 NAM ITMLU,7 PRE-REL REV D. 780402 (DLB) (RTE-IV) * *-------------------------------------------------------- * * RELOC. 09570-16507 * SOURCE 09570-18507 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT ITMLU *9-28 BCHF#,LGLU# EXT BCHF#,LGLU# *9-28 EXT EXEC,GTLU# EXT PAU.E,FMT.E,ER0.E,IND.E EXT .XLA,.XLB SPC 1 A EQU 0 B EQU 1 * PURPOSE: * THIS SUBROUTINE IS THE 1ST EXECUTED CODE BY A PROGRAM IN THE * DTS70 SERIES. IT WILL DETERMINE THE TERMINAL LOGICAL UNIT AS * PASSED BY THE ENVIORMNENT. (RTE II/III) * * THE FOLLOWING ALGORITHM IS USED TO FIND THE TERMINAL LU. * * A. GET LU FROM RMPAR(1) PARAMETER. * CHECK IF < 2000B & AND O77 = DVR00 OR DVR05 * B. CALL GTLU# TO GET THE LU FROM SESSION MONITOR? * CHECK IF < 2000B & AND O77 = DVR00 OR DVR05 * C. DEFAULT LU = 1 AS THE LAST RESORT. SPC 1 * CALLED: * * FTN,L * PROGRAM GTPRM * LU = ITMLU(IBATCH) * IF (IBATCH.NE.0) GO TO 200 * WRITE (LU,101) * 101 FORMAT ("RUN PARAMETERS SHOULD BE ASKED FOR FROM OPERATOR") * STOP 2 * 200 WRITE (LU,201) * 201 FORMAT("RUN PARAMETERS CAN BE OPTAINED FROM A CALL EXEC 14") * STOP 1 * END * * NOTES: * CAUTION!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! * "LU = ITMLU(IBATCH)" MUST BE THE 1ST EXECUTED CODE * (B-REG IS SET UP BY SYSTEM FOR ITMLU) * THE TERMINAL LU IS ALSO LEFT IN THE ENTRY POINT "LGLU#" * THE 2ND PARAMETER RMPAR PARAMETER IS LEFT IN "BCHF3" SPC 1 *9-28LGLU# NOP FIRST RMPAR PARAMETER *9-28BCHF# NOP o; SECOND RMPAR PARAMETER SPC 1 ITMK1 OCT 3777 ITMK2 OCT 77 ITMK3 NOP TEMP ITMK4 NOP TEMP ITMK5 OCT 5 ITMK6 OCT 100015 DEC 13+100000B ITMK7 ABS -2 ITMK8 NOP TEMP SPC 1 ITMLU NOP ENTRY FROM SYSTEM ITMK9 JSB .XLA GET 1ST PARAMETER PASSED THRU RMPAR DEF B,I INB JSB .XLB DEF B,I STB BCHF# SET BATCH FLAG 0 OR #0 RSS GO TEST THE PARAMETER NXTRY JSB GTLU# GET FROM SESSION MONITOR STA LGLU# SAVE POTENTION LU AND ITMK1 CHECK IF > 3777B ? CPA LGLU# SAME? SZA,RSS YES, CHECK NOT = 0 JMP NXTR1 FOURCE ILLEGAL LU AND ITMK2 MASK FOR DRIVER CHECK DVR00 OR DVR05 STA ITMK4 JSB EXEC DO STATUS CHECK DEF *+6 *9-30 DEF ITMK6 NO ABORT OF CALL EXEC(13 DEF ITMK4 DEF ITMK9 DEF ITMK8 *9-30DUMMY FILLER DEF ITMK3 JMP NXTR1 ILLEGAL LU > TRY NEXT WAY LDA ITMK8 GET THE S.C. OF DRIVER AND ITMK2 MASK DOWN TO THE SLOT SZA,RSS JMP NXTR1 ZERO!! ,NOT FOUND YET. LDA ITMK9 GET THE DRIVER TYPE CODE ALF,ALF AND ITMK2 CPA ITMK5 LDA ITMK3 GET THE SUBCHANNEL BITS IF DVR05 SZA,RSS CHECK IF INTERACTIVE DEVICE? JMP FOUND YES NXTR1 ISZ ITMK7 DEFAULT?? JMP NXTRY NO, CLA,INA,RSS DEFAULT = 1 FOUND LDA LGLU# STA LGLU# SAVE THE LOG LU STA PAU.E SET THE "STOP & PAUSE ROUTINE LU STA FMT.E SET THE FORMATTER LU STA ER0.E SET THE ERR0 LU STA IND.E FOR ALGOL LDB ITMLU,I GET RETURN ADDRESS ISZ ITMLU BUMP TO P+2 LDA ITMLU,I GET ADDRESS OF 1ST PARAMETER CPB ITMLU CHECK IF PARAMETER PASSED? CLA NO, DUMMY UP PARAMETER ADDRESS STB ITMLU SAVE RETURN ADDRESS LDB BCHF# GET BATCH FLAG (2P) STB  A,I AND PASS BACK TO CALLER LDA LGLU# JMP ITMLU,I RETURN A-REG = TO TERMINAL LOGICAL UNIT NUMBER END Y CK 09570-18514 1830 S 0122 &LGLU# LOG DEVICE LU NO.             H0101 hASMB,R,L HED "LGLU#" ROUTINE IF "TDCB"# ROUTINE IS NOT USED 9-76 (DLB) * NAM LGLU#,7 PRE-REL 9-28-76 (DLB) NAM LGLU#,7 09570-16514 REV. A 761013 * *-------------------------------------------------------- * * RELOC. 09570-16514 * SOURCE 09570-18514 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT LGLU#,BCHF# SPC 1 LGLU# NOP HOLDS FASTRACE LOGICAL KEYBOARD UNIT NUMBER BCHF# NOP END  DJ 09570-18515 1830 S 0122 &LOPEN FILE OPEN             H0101 <ASMB,R,L,C HED "LOPEN" ROUTINE TO DO CONTENTION FMP "OPEN"'S & "CLOSE"'S * NAM LOPEN,7 PRE-REL 4-17-76 (DLB) * NAM LOPEN,7 09570-16515 REV. A 761013 NAM LOPEN,7 PRE-REL 780327 (DLB) (RTE-IV) * *-------------------------------------------------------- * * RELOC. 09570-16515 * SOURCE 09570-18515 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT LOPEN,LCLOS EXT .ENTR,OPEN,CLOSE,EXEC,IDSGA EXT .XLA SPC 1 A EQU 0 B EQU 1 XEQT EQU 1717B MXPRM EQU 10 MAX NUMBER OF PARAMETERS FOR OPEN ROUTINE SUP PRESS MULTIPLE LISTINGS * PURPOSE: * TO OPEN OR CLOSE A FILE AND DO A CORE LOCK IF IT WILL NOT * CAUSE A DEAD LOCK IN AN RTE-II ENVIORNMENT. THIS SUBROUTINE * SHOULD BE USED INSTEAD OF THE FMP "OPEN" OR "CLOSE" ROUTINE * IF FASTER FILE OPEN'S AND CLOSES ARE DESIRED. THE OVERHEAD * OF THIS ROUTINE IS APPROXIMENTLY ZERO, EXCEPT FOR THE CORE * IT USES. * CALLED: * THIS ROUTINE IS CALLED IN EXACTLY THE SAME WAY AS THE FMP * OPEN AND CLOSE SUBROUTINES ARE, EXCEPT FOR THE NAME. SPC 1 OPENI JSB OPEN CALL OPEN OR CLOSE DEFRN DEF * TELL HOW MANY PASSED PARMS REP MXPRM MAX PARAMETERS ABOUT 10 NOP JMPST JMP LASTP SPC 1 LOPEN NOP ENTRY JSB .ENTR GET CALLERS PARAMETERS DEF DEFRN+1 CLA ZERO THE UNPASSED PARAMETERS STB DEFRN SAVE THE RETURN ADDRESS MORE CPB RTNAD DONE? JMP CORLK YES STA B,I NO, KEEP ON TRUCKING INB JMP MORE SPC 1 LASTP LDB OPNJS GET OPEN JSB STB OPENI RESTORE JSB OPEN INSTRUCTION STA LCLOS SAVE A-REG FOR OPEN RETURN LDA SAVST GET LOCK STATUS WORD LSR 6 POSITION CL BIT SLA,RSS SET? CLA NO, DO CORE UNLOCK JSB CLOCK LDA LCLOS REST}:  ORE A-REG JMP LOPEN,I RETURN SPC 1 RTNAD DEF JMPST LAST PARAMETER+1 ADDRESS SPC 1 LCLOS NOP CLOSE ENTRY LDA LCLOS GET RETURN ADDRESS STA LOPEN FAKE OUT ALL LDA CLSJS GET JSB CLOSE INSTRUCTION STA OPENI AND POSITION JMP LOPEN+1 AND DO THE THING SPC 1 CORLK LDA XEQT GET MY IDSEG ADDRESS ADA D14 CHECK MY OWN CORE LOCK BIT JSB .XLA GET ID(15) WORD DEF A,I * LDA A,I STA SAVST SAVE THE LOCK STATUS JSB IDSGA NOW CHECK D.RTR'S PARTITION DEF *+2 DEF D.RTR TO SEE IF SAME AS MY OWN ADA D14 BUMP TO IT'S TYPE JSB .XLA DEF A,I * LDA A,I XOR SAVST IF SAME TYPE AS ME, AND O7 DO NOT CORE LOCK JSB CLOCK DO CORE LOCK IF NOT = 0 JMP OPENI NOW GO OPEN OR CLOSE THE FILE SPC 1 CLOCK NOP ENTRY A=0>UNLOCK, ELSE LOCK SZA CHECK IF LOCK OR UNLOCK CLA,INA STA LFLAG JSB EXEC DEF *+3 DEF NA22 DEF LFLAG NOP IGNORE ABORT ERRORS JMP CLOCK,I RETURN SPC 1 LFLAG NOP OPNJS JSB OPEN CLSJS JSB CLOSE D.RTR ASC 3,D.RTR SAVST NOP SAVE CORE LOCK BIT O7 OCT 7 D14 DEC 14 NA22 ABS 100000B+22 END E!  EL 09570-18518 1830 S 0122 &MYNAM GET PROGRAM NAME             H0101 }ASMB,R,L,C HED "MYNAM" ROUTINE TO FIND PROGRAMS NAME 7-76 (DLB) * NAM MYNAM,7 PRE-REL 7-6-76 (DLB) * NAM MYNAM,7 09570-16518 REV. A 761013 NAM MYNAM,7 PRE-REL 780330 (DLB) RTE-IV ENT MYNAM EXT .ENTR,.XLA SPC 1 * *-------------------------------------------------------- * * RELOC. 09570-16518 * SOURCE 09570-18518 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- B EQU 1 XEQT EQU 1717B * PURPOSE: * THIS ROUTINE WILL RETURN THE CURRENT EXECUTING PROGRAMS'S NAME * (THE CALLER) IN A 3 WORD CALLERS BUFFER WITH A TRAILING ASCII * SPACE. IT WILL ALSO RETURN THE PROGRAMS ID SEGMENT ADDRESS IN * A-REGISTER. * CALLED: * DIMENSION NAMEBF(3) * IDADR = MYNAM(NAMEBF) * -OR- * CALL MYNAM(NAMEBF) * WHERE: NAMEBF = THREE WORD BUFFER THAT NAME IS RETURNED * IDADR = IDSEGMENT ADDRESS OF PROGRAM * TEST PROGRAM: *FTN,L * PROGRAM TEST * DIMENSION NAMEBF(3) * IDADR = MYNAM(NAMEBF) * WRITE (1,100) NAMEBF,IDADR * 100 FORMAT("THE NAME OF THIS PROGRAM IS "3A2"WITH AN ID ADDRESS" * 1" OF "@6"B") * STOP * END SPC 1 TEMP1 NOP MYNAM NOP ENTRY JSB .ENTR GET CALLERS PARAMETERS DEF TEMP1 LDB XEQT GET IDSEG ADDRESS OF THIS PROGRAM ADB D12 BUMP TO NAME BUFFER JSB .XLA DEF B,I * LDA B,I GET 1ST TWO CHARACTORS OF NAME STA TEMP1,I SAVE IN CALLERS BUFFER INB BUMP TO NEXT WORD ISZ TEMP1 BUMP TO NEXT DEST WORD JSB .XLA DEF B,I * LDA B,I GET NEXT 2 CHARACTORS IN BUFFER STA TEMP1,I PUT IN CALLERS BUFFER INB ISZ TEMP1 JSB .XLA DEF B,I * LDA B,I GET LAST WORD IN BUFFER AND OM400 MASK OFF LAST CHARACTOR IOR O40 AND MIRGE IN SPACE STA TEMP1,I AND PUT IN CAL  LERS BUFFER LDA XEQT RETURN WITH ID ADDRESS IN A-REG JMP MYNAM,I SPC 1 OM400 OCT -400 D12 DEC 12 O40 OCT 40 END  FM 09570-18538 1830 S 0122 &T0DCB TYPE 0 DATA CONTROL BLK             H0101 ASMB,R,L,C HED T0DCB - FMP DCB MAKER FOR TYPE 0 FILES 9/10/73 (DLB) *5-9 NAM T0DCB,7 PRE-REL 3-10-76 (DLB) * NAM T0DCB,7 PRE-REL 5-14-76 (DLB) * NAM T0DCB,7 PRE-REL 10-20-76 (DLB) NAM T0DCB,7 09570-16538 REV. A 761020 * *-------------------------------------------------------- * * RELOC. 09570-16538 * SOURCE 09570-18538 * * D. BASKINS 13 OCT 76 REV. A * *--------------------------------------------------------- * ENT T0DCB EXT P.PAS,.ENTR,EXEC,CLOSE SPC 1 A EQU 0 B EQU 1 XEQT EQU 1717B SPC 1 * PURPOSE: * TO BUILD A PHONY TYPE 0 FILE DCB FOR FMP GIVEN AN LOGICAL UNIT NUMB. * USED: * * IF (T0DCB(IDCB,IERR,LU) 99,10 * 99 GO TO * 10 GO TO * * WHERE: * IDCB IS A 16 WORD DCB FOR USE WITH READF/WRITF * IERR IS = 0 IF NO ERROR -OR- -6 IF ILLEGAL LOGICAL UNIT #. * LU IS THE LOGICAL UNIT # WITH -OR- WITHOUT CONWORD BITS. * * NOTE: * IF CONWORD BITS ARE NOT SUPPLIED IN THE LOGICAL UNIT, THE FOLLOWING * TABLE IS USED TO DEFAULT THEM BASED ON DRIVER TYPE FOR THE LU. * ASCII DATA WITH THE PRINT BIT IS THE GENERAL DEFAULT. SPC 1 DEF0 DEF ZER0 DTABL DEF ZER0-2 * DVRXX WR/RE FS/BS EOFC XAKVM ZER0 OCT 0,160704 1 1 0 0 07 04 CONSOLE OCT 1,050700 0 1 0 0 07 04 READER OCT 2,161000 1 0 0 0 10 00 PUNCH OCT 5,160704 1 1 0 0 07 04 CONSOLE OCT 10,100000 1 0 0 0 00 00 PLOTTER OCT 11,060700 0 1 0 0 07 00 CARD RD OCT 12,101100 1 0 0 0 11 00 LINE PT OCT 15,060700 0 1 0 0 07 00 CARD RD OCT 23,170100 1 1 1 1 01 00 MAGTAPE OCT 24,170100 1 1 1 1 01 00 MAGTAPE OCT 25,170100 1 1 1 1 01 00 MAGTAPE OCT -1,160100 1 1 0 0 01 00 DEFAULT SPC 1 DCB NOP ERR NO=P LU DEF ZER0 T0DCB NOP ENTRY JSB .ENTR GET PARAMETER ADDRESSES DEF DCB TOP OF STACK JSB CLOSE CLOSE UP THE DCB DEF *+2 DEF DCB,I JUST IN CASE IT IS OPEN LDA DM10 GET PARAMETER ERROR VALUE LDB LU CHECK IF NAME PASSED? CPB DEF0 SAME? JMP EXIT YES, RETURN NOT ENOUGH PRAMS. ADA DM6 FORM -16 IN A-REG STA TEMP1 SAVE THE ZERO COUNTER LDA DCB GET DCB ADDRESS CLB,CLE GET DCB ADDRESSES ZERO1 STB A,I ZERO OUT THE DCB 1ST INA ISZ TEMP1 DONE? JMP ZERO1 NO, CONTINUE LDA DCB GET THE DCB ADDRESS JSB P.PAS USING FMP UTILITY DM10 DEC -10 TEMP1 NOP TEMP2 NOP TYPE NOP TYPE CODE ADDRESS LU0 NOP LOGICAL UNIT ADDRESS EOF0 NOP EOF CODE ADDRESS SPAC NOP SPACING CODE ADDRESS R/WCD NOP READ/WRITE VALITY CODES OPFLG NOP SECURITY FLAGS ADDRESS #SC/T NOP NUMBER SECTORS/TRACK IDSEG NOP OPEN TEST (ID SEG. ADDRS) LDA LU,I GET THE LOGICAL UNIT AND O3777 CHECK IF LEGAL CPA LU,I RSS YES, CONTINUE JMP FMPM6 NO, FMP ERROR -6 AND O77 MASK OFF ICON BITS STA TEMP1 AND SAVE JSB EXEC GET EQUIPMENT TYPE CODE DEF *+4 CALL EXEC (13,LU,IEQT5) DEF NA13 DEC 13+100000B DEF TEMP1 LU OF DEVICE DEF TEMP2 VALUE OF EQT 5 JMP FMPM6 ILLEGAL LU = FMP ERR -6 LDA TEMP2 CONVERT EQT 5 TO THE ALF,ALF POSITION AND O77 DRIVER NAME STA TEMP2 LDB DTABL GET START OF TABLE MEQTS ADB D2 AND FIND A MATCH WITH LDA B,I THE DRIVER NAME. SSA,RSS TABLE TERMINATES WITH -1 CPA TEMP2 = TO DRIVER NAME? INB,RSS YES, PICK UP BITS JMP MEQTS NO, TRY NEXT ONE LDB B,I NOW, DEFINE DCB VALUES  RRL 2 POSITION READ/WRIT CODE AND D3 MASK OFF EXTRANIOUS BITS RAR POSITION BITS 0 & 15 STA R/WCD,I SAVE IN DCB RRL 2 POSITION SPACING CODES AND D3 RAR POSITION BIT 0-15 STA SPAC,I PUT IN DCB RRL 6 ALF POSITION RAL,RAL AND POSITION TO CONWD BITS AND O3700 MASK OF OTHER BITS IOR TEMP1 MIRGE IN LOGICAL UNIT STA EOF0,I AND PUT IN DCB LDA LU,I GET THE PASSED CONWORD BITS XOR TEMP1 TAKE OUT THE LU RRR 4 THE CONWORD BITS IN TABLE SZA CHECK IF ANY CONWORD BITS RRR 12 SUPPLIED BY CALLER SWP AND O3700 MASK TO CONWORD BITS IOR TEMP1 MIRGE IN LOGICAL UNIT STA LU0,I PUT IN DCB LDA XEQT GET IDSEG ADDRESS FOR STA IDSEG,I THIS PROGRAM CLA,CCE SET FILE TYPE STA TYPE,I ERA SET TO NON EXCULSIVE STA OPFLG,I OPEN CLA,INA PRESET THE LINE NUMBER TO 1 LDB IDSEG CALCULATE ADDRESS OF THE RECORD NUMBER ADB O5 WORD IN THE DCB STA B,I RECORD = #1 FOR NEXT READ OR WRITE CLA,RSS NOW RETURN TO CALLER FMPM6 LDA DM6 GET -6 ERROR RETURN EXIT LDB DEF0 RESET FOR NEXT CALLER STB LU STA ERR,I SET ERROR CODE JMP T0DCB,I AND RETURN SPC 1 NA13 OCT 100015 DEC 13 + 100000B D2 DEC 2 D3 DEC 3 O5 OCT 5 DM6 DEC -6 O3700 OCT 3700 O3777 OCT 3777 O77 OCT 77 END M GO 09570-18539 1830 S 0222 &T5IDM ID MANAGER             H0102 uASMB,R,L,C HED TYPE 5 ID MANAGER FOR RTE II/III * NAM T5IDM,3,40 PRE REL 10-14-76 (MOS) * NAM T5IDM,3,40 09570-16539 REV. A 761013 * NAM T5IDM,3,40 PRE RELEASE REV. B 770324 NAM T5IDM,3,40 PRE-REL REV. D 780604 (DLB) RTE-IV * * *-------------------------------------------------------- * * RELOC. 09570-16539 * SOURCE 09570-18539 * * M. SPANN 24 MAR 77 REV. B * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY,1976. * ALL RIGHTS RESERVED.THE INFORMATION CONTAINED ON * THIS MEDIUM MAY BE USED WITH ONLY ONE COMPUTER * AT A TIME.IT SHALL NOT OTHERWISE BE RECORDED, * TRANSMITTED,OR STORED IN A RETRIEVAL SYSTEM. * COPYING OR OTHER REPRODUCTION WITHOUT PRIOR WRITTEN * CONSENT OF HEWLETT-PACKARD COMPANY IS PROHIBITED, * EXCEPT THAT ONE COPY MAY BE MADE AND RETAINED FOR ARCHIVE * PURPOSES ONLY. * * --------------- * * THE INFORMATION CONTAINED ON THIS MEDIUM IS PROPRIETARY * TO HEWLETT-PACKARD COMPANY. IT MAY BE USED WITH ONE * COMPUTER ONLY AND IS NOT TO BE DISCLOSED TO ANY THIRD * PARTIES OR REPRODUCED IN ANY FORM EXCEPT THAT IT MAY BE * TRANSFERRED TO ONE BACKUP COMPUTER DURING A COMPUTER * MALFUNCTION OR DURING PREVENTIVE MAINTENANCE. * *--------------------------------------------------------- ENT T5IDM EXT EXEC,PRTN,NAM.. EXT RMPAR,LOPEN,LCLOS,FSTAT EXT IDSGA,IDRPD,$LIBR,$LIBX *780604 EXT .OPSY * A EQU 0 B EQU 1 EQTA EQU 1650B KEYWD EQU 1657B XEQT EQU 1717B BPA1 EQU 1742B BPA3 EQU 1744B SECT2 EQU 1757B SECT3 EQU 1760B TATSD EQU 1756B SUP SKP TSIZE EQU 1270 ROOM FOR 254 ENTRIES PNTR NOP TABLE - 5 HPNTR NOP MPNTR NOP BPNTR NOP TPNTR NOP TABLE EQU * START OF TABLE UNL REP TSIZE DEC -1 LST TEND DEF * END OF TABLE + 1 TBLA DEF PNTR TABLE - 5 TBLAD DEF TABLE RROBN DE"F TEND-5 ROUND ROBIN POINTER CRN# NOP NUMBER OF DISC LU'S CRN NOP TOP OF STACK OF DISC LU'S * DCB BSS 144 DCB SYSID EQU DCB ORG DCB CCA CALCULATE THE LAST TRACK NUMBER ON ADA TATSD SYSTEM DISC STA TEMP SAVE FOR LATER JSB EXEC GO READ THE :CL OF THE DISC DEF *+7 DEF O1 DEF PRC2 SYSTEM DISC DEF SYSIA DEF D128 DEF TEMP DEF D0 SECTOR ZERO LDA SYSIA+125 GET SYSTEM SETUP CODE STA SYSUP AND SAVE FOR LATER USE CLA EXIT TO NEVER RETURN STA SYSI1 JMP SYSI1 SYSIA BSS 128 ORR DUMY EQU DCB+16-SYSIA ERROR HERE MEANS YOUR IN TROUBLE ORR NAME BSS 4 NAME OF ROOT SEGMT NUM NOP # OF SEGMTS TEMP NOP TEMPORARY STORAGE EFLAG NOP ERROR FLAG IERR NOP FOR FMGR CALLS NAME2 NOP FATHER'S NAME NOP NOP NOP ENTR# NOP NUMBER OF SEGMENTS REMAINING+1 BUFF EQU DCB BUFFER FOR CATRIDGE LIST SEARCH TAIL EQU EFLAG IDBUF BSS 35 BUFFER FOR HEADER RECORD ID EQU IDBUF-1 DID12 DEF ID+12 DID23 DEF ID+23 * D0 DEC 0 D1 DEC 1 O1 EQU D1 D2 DEC 2 O2 EQU D2 D3 DEC 3 D4 DEC 4 D5 DEC 5 SEGT EQU D5 D6 DEC 6 D11 DEC 11 D12 DEC 12 D14 DEC 14 D15 DEC 15 B17 EQU D15 B20 OCT 20 D20 DEC 20 D23 DEC 23 D28 DEC 28 D35 DEC 35 B40 OCT 40 B77 OCT 77 B177 OCT 177 HBIT OCT 100 B200 OCT 200 D128 EQU B200 B220 OCT 220 B377 OCT 377 DBLNK OCT 20040 OM20 OCT -20 OM360 OCT -360 OM200 OCT -200 MASK OCT 177400 DM1 DEC -1 DM3 DEC -3 DM9 DEC -9 RT4FL EQU DM9 * ***************************************************** UNL PRC OCT 74000 PRC2 OCT 74002 SKP LST * * ! T5IDM INTERNAL CIRCULAR LINKED LIST STRUCTURE ! * * LIST POINTER BACK/FWD * NA$ME1 N/A * NAME2 M/E * NAME/TYPE A/T * DISC WORD 27TH WRD OF ID * * CALLING SEQUENCE * * :RU,T5IDM,FN,AM,E,#IDS,CRN * ***************************************************** * * TEST PROGRAM SHOWS PARAMETER PASSING TO SEGMENT *FTN,L * PROGRAM TEST1 * DIMENSION IP(5),ITESTA(3) * DATA ITESTA/2HTE,2HST,2HA / * CALL RMPAR(IP) * CALL CLOVL(ITESTA,IP) * STOP 0 * END * PROGRAM TESTA(5) * DIMENSION IP(5) * CALL RMPAR(IP) * WRITE (1,100) IP * 100 FORMAT ("THE INPUT PARAMETERS WERE "5I7) * STOP 77 * END * END$ * * TEST PROGRAM SHOWS RETURN TO MAIN FROM SEGMENTS *FTN,L * PROGRAM TEST2 * DIMENSION ITESTB(3) * DATA ITESTB/2HTE,2HST,2HB / * CALL RPIDS(ITESTB,5) * CALL CLOVL(ITESTB) * ITESTB(3) = 2HC * CALL CLOVL(ITESTB) * ITESTB(3) = 2HD * CALL CLOVL(ITESTB) * ITESTB(3) = 2HE * CALL CLOVL(ITESTB) * ITESTB(3) = 2HF * CALL CLOVL(ITESTB) * STOP 77 * END * PROGRAM TESTB(5) * DIMENSION IDMY(5) * EQUIVALENCE (IDMY,IRTN) * CALL RMPAR(IDMY) * WRITE (1,100) * 100 FORMAT ("I AM NOW IN THE TESTB OVERLAY SEGMENT") * GO TO IRTN * END * PROGRAM TESTC(5) * DIMENSION IDMY(5) * EQUIVALENCE (IDMY,IRTN) * CALL RMPAR(IDMY) * WRITE (1,100) * 100 FORMAT ("I AM NOW IN THE TESTC OVERLAY SEGMENT") * GO TO IRTN * END * PROGRAM TESTD(5) * DIMENSION IDMY(5) * EQUIVALENCE (IDMY,IRTN) * CALL RMPAR(IDMY) * WRITE (1,100) * 100 FORMAT ("I AM NOW IN THE TESTD OVERLAY SEGMENT") * GO TO IRTN * END * PROGRAM TESTE(5) * DIMENSION IDMY(5) * EQUIVALENCE (IDMY,IRTN) * CALL RMPAR(IDMY) * WRITE (1,100) * 100 FORMAT ("I AM NOW IN THE TESTE OVERLAY SEGMENT") * GO TO IRTN * END * PROGRAM TESTF(5) * DIMENSION IDMY(5) * EQUIVALENCE (IDMY,IRTN) * CALL RMPAR(IDMY) * WRITE (1,100) * 100 FORMAT ("I AM NOW IN THE TESTF OVERLAY SEGMENT") * GO TO IRTN * END * END$ SKP * EXAMPLE CALLING INTERFACE *ASMB,R,L,C * HED "CLOVL" ROUTINE TO CALL IN AN OVERLAY 2-77 (DLB) * NAM CLOVL,7 EXAMPLE ROUTINE TO USE TYPE 5 ID MANAGER * ENT CLOVL,RPIDS * EXT IDMG#,IDGT#,EXEC,.ENTR,PAU.E,.DFER * SPC 1 *A EQU 0 *B EQU 1 *XEQT EQU 1717B * SPC 1 ** PURPOSE (1): TO PRODUCE AND CALL AN RTE OVERLAY PROGRAM ** ** CALLING: ** ** CALL CLOVL(NAME) ** -OR- ** CALL CLOVL(NAME,IPBUF) ** ** ** WHERE: ** ** NAME = 3 WORD BUFFER CONTAINNING SEGMENT PROGRAM NAME. ** IPBUF = OPTIONAL 5 WORD BUFFER TO PASS TO SEGMENT PROGRAM. ** ** PURPOSE (2): TO PRODUCE MULTIPLE SHORT IDSEGMENTS SO THAT THEIR SIZE ** CAN BE EXAMINED. ** ** CALLING: ** ** CALL RPIDS(NAME,NUMBR) ** ** WHERE: ** ** NAME = 3 WORD BUFFER CONTAINNING SEGMENT PROGRAM NAME. ** NUMBR = NUMBER OF SEGMENTS THAT NEED TO BE PRODUCED, WHERE ** THE LAST NON-BLANK CHARACTER WILL BE INCREMENTED TO ** DETERMINE THE NEXT NAME TO BE USED. ** ** * SPC 1 *NAME NOP *PRAMS DEF *+1 DEFAULT CALLED ADDRESS (IF FROM ROOT CODE) *CLOVL NOP * JSB .ENTR *DFNAM DEF NAME * LDA PRAMS GET PARAMETER BUFFER ADDRESS * STA PRMBF+0 * INA * STA PRMBF+1 * INA * STA PRMBF+2 * INA * STA PRMBF+3 * INA * STA PRMBF+4 * LDA DFNAM RESET THE OPTIONAL PARAMETER ADDRESS WORD * ADA O2 * STA PRAMS *AGAIN JSB EXEC CALL THE OVERLAY * DEF *+8 * DEF NA8 NO ABORT CALL EXEC (8 * DEF NAME,I *PRMBF REP 5 * DEF * * LDA NAME GET NAMES DIRECT ADDRESS * JSB IDMG# USE T5IDM TO PRODUCE TH8E OVERLAY * JSB EXEC NOW TRY AGAIN * DEF *+8 * DEF NA8 * DEF NAME,I * DEF PRMBF+0,I * DEF PRMBF+1,I * DEF PRMBF+2,I * DEF PRMBF+3,I * DEF PRMBF+4,I * JSB .DFER MOVE THE SEGMENT NAME INTO THE MESSAGE BUFFER * DEF MESS * DEF NAME,I * LDA XEQT GET ADDRESS OF MY OWN NAME * ADA D12 INDEX INTO THE IDSEGMENT * LDB A,I GET 1ST TWO CHARS * STB PNAME * INA * DLD A,I GET LAST FOUR CHARS * STA PNAME+1 SAVE CHARS 3 & 4 * LSR 8 STRIP OFF LAST CHAR * BLF,BLF REPOSITION * ADB O40 * STB PNAME+2 SET THE LAST CHAR + SPACE * JSB EXEC NOW WRITE OUT THE NOT FOUND MESSAGE * DEF *+5 * DEF O2 WRITE * DEF PAU.E USE SAME LU AS THE "STOP" ROUTINE * DEF MESS * DEF D15 * JSB EXEC NOW PAUSE * DEF *+2 * DEF O7 NOW PAUSE FOR ID TO BE PRODUCED * JMP AGAIN NOW TRY SAME ALL OVER AGAIN * SPC 1 *O2 OCT 2 *O7 OCT 7 *D12 DEC 12 *D15 DEC 15 *O40 OCT 40 *NA8 OCT 100010 *MESS ASC 7,PROGA MISSING-PROGM SUSPENDED! *PNAME ASC 3,PROGM SUSPENDED! * ASC 5,SUSPENDED! *NAME1 NOP *NUMBR NOP *RPIDS NOP * JSB .ENTR GET CALLERS PARAMETERS * DEF NAME1 * LDA NAME1 GET ADDRESS OF SEGMENT NAME * LDB NUMBR,I GET THE NUMBER OF SEGMENTS NECESSARY * JSB IDGT# CALL TYPE 5 ID MANAGER INTERFACE ROUTINE * JMP RPIDS,I RETURN DONE * END SKP *ASMB,R,L,C * HED TYPE 5 MANAGER INTERFACE ** NAM IDGT#,7 PRE-REL 7-22-76 (MOS) ** NAM IDGT#,7 09570-16499 REV. A 761013 * NAM IDGT#,7 PRE-REL 770213 (DLB) ** **-------------------------------------------------------- ** ** RELOC. 09570-16499 ** SOURCE 09570-18499 ** ** M. SPANN 13 OCT 76 REV. ** **--------------------------------------------------------- ** * ENT IDGT#,IDMG# * EXT EXEC ** *A EQU 0 *B EQU 1 *XEQT EQU 1717B *TAT EQU 1656B *TATSD EQU 1756B ** *IDMG# NOP * LDB IDMG# * STB IDGT# * CLB,INB,RSS *IDGT# NOP * STB IDMG# SAVE NUMBER OF MODULES TO :RP, * STA TEMP * INA * STA TEMP+1 * INA * STA TEMP+2 * LDA XEQT GET IDSEGMENT ADDRESS OF THIS PROGRAM * ADA D26 BUMP TO THE DISC ADDRESS WORD * LDB A,I GET THE DISC ADDRESS WORD * CLE,ELB GET THE DISC LU IN E-REG * LSR 8 POSITION DISC TRACK TO LO 8 BITS * CLA,SEZ CHECK IF ON LU = 3 * ADB TATSD YES, LU = 3, ADD IN TRACKS IN LU = 2 * ADB TAT INDEX INTO THE TAT TABLE * LDB B,I GET THE VALUE IN THE TAT TABLE * CPB FMPTK CHECK IF IS ON A FMGR TRACK? * CLA,INA,RSS YES, CONTINUE * JMP EXIT NO, SKIP CALL TO T5IDM * ELA NOW CALCULATE IF ON LU = 2 OR 3 * CMA,INA MAKE NEGATIVE * STA CRN AND SET TO CRN = -2 OR -3 * JSB EXEC * DEF RTN *DEFER DEF SCHD * DEF T5IDM *TEMP NOP PARAMETERS TO PASS * NOP * NOP * DEF IDMG# NUMBER OF SEGMENTS * DEF CRN THE CARTRAGE OF THIS PROGRAM *RTN LDB DEFER T5IDM NOT FOUND * DLD B,I ERROR FLAG TO A *EXIT JMP IDGT#,I ** *SCHD OCT 100027 *D26 DEC 26 *FMPTK OCT 77776 *T5IDM ASC 3,T5IDM *CRN NOP * END SKP T5IDM JSB RMPAR GET SCHED PARMS DEF *+2 DEF NAME SYSI1 JMP SYSID GO GET THE SYSTEM ID WORD * PREVIOUS WORD IS PATCHED OUT AFTER 1ST EXECUTION LDA NUM GET USER SPECIFIED DISC LU SSA,RSS MAKE SURE IT'S NEGATIVE CMA,INA STA CRN AND SAVE LDA NAME+3 GET NUMBER OF SEG FROM USER SZA IF HE SPECIFIED 0 SSA OR NEGATIVE CLA,INA DEFAULT TO 1 STA NUM SAVE STA ENTR# * DO T7HE DOUG BASKINS' TABLE FLUSH LDB BPA3 GET START OF BCKGND BP CPB D2 IF RTE III CPA D1 AND LONG REQUEST JMP T50 SKIP IF SHORT OR RTE II LDB TBLA GET START OF TABLE STB IDBUF SAVE TEMP T5 LDB IDBUF LAST ENTRY PROCESSED ADB D5 BUMP TO NEXT CPB TEND END OF TABLE ? JMP T50 YES - DONE STB IDBUF SAVE POINTER ADB D3 TYPE STATUS WORD LDA B,I GET IT CPA DM1 VALID DATA ? JMP T50 NO AND B17 EXTRACT TYPE CPA D3 TYPE 3 ? JMP T5 YES - SKIP LDB IDBUF CURRENT ENTRY JSB FLUSH TRY TO DO AN RP,, JMP T5 TRY NEXT * T50 LDA NAME+1 SECOND WORD OF NAME SZA,RSS IF NULL LDA DBLNK DEFAULT TO BLANK STA NAME+1 RESTORE AND B377 LOOK AT LOW BYTE SZA IF NULL JMP T51 NOT NULL LDA B40 IOR NAME+1 ADD BLANK STA NAME+1 RESTORE T51 LDA NAME+2 GET 3RD WORD OF NAME SZA,RSS IF NULL LDA DBLNK DEFAULT TO BLANK AND MASK SAVE 5TH CHARACTER IOR B40 PUT BLANK IN 6TH POSITION STA NAME+2 SO MATCH WILL WORK CLA,CLE STA HPNTR INITIALIZE HEAD POINTER SKP SRCH CLA INITIALIZE STA BPNTR BLANK POINTER STA MPNTR MATCH POINTER LDB TBLAD TABLE ADDRESS LOOP STB PNTR POINTER FOR SEARCH LOOP LDA B,I GET LINK WORD SZA,RSS IS IT A BLANK ? JMP BLANK -YES- CPA DM1 END OF ENTRIES ? JMP ENTR YES JSB MATCH IS IT ONE WE WANT ? DEF NAME STB MPNTR YES-SAVE ADDRESS AND HBIT [A] IS TYPE/STATUS SZA,RSS IS ENTRY A HEAD ? JMP NEXT NO CPB MPNTR IS HEAD A MATCH ? STB HPNTR YES SAVE ADDRESS JSOB GOBCK LOOK AT TAIL OF LIST CPA D3 IS IT A TYPE 3 (FATHER) ? RSS YES JMP NEXT NO CHECK NEXT ENTRY CHCK JSB DRMNT REMOVE DORMANT TYPE 3 FROM LIST CPA D3 IS BACK TYPE 3? JMP CHCK YES- CHECK IT JSB GOFWD SEE IF ANY TYPE 3'S REMAIN CPA D3 JMP NEXT YES - LIST STILL MUST REMAIN CHC2 JSB FLUSH DO RP,, THING JSB GOFWD UNTILL CPA SEGT SKIP WHEN BACK TO HEAD JMP CHC2 NEXT LDB PNTR BUMP POINTER ADB D5 TO NEXT ENTRY CPB TEND END OF TABLE ? JMP ENTR YES JMP LOOP CONTINUE CHECKING * BLANK LDA BPNTR PREVIOUS BLANK ? SZA,RSS YES-SKIP STB BPNTR SAVE ADDRESS OF BLANK ENTRY JMP NEXT SKP * *TABLE HAS BEEN UPDATED ,CHECK ON CALLER ENTR LDB XEQT OUR ID ADDRESS ADB D20 21'ST WORD LDA B,I AND B377 EXTRACT FATHER'S ID # SZA,RSS DO WE HAVE A FATHER ? JMP EXIT NO! ADA DM1 WHY ??? ADA KEYWD CALCULATE HIS ID ADDRESS LDA A,I GET ID ADDRESS ADA D12 POINT TO HIS NAME LDB A,I GET 1ST WORD OF HIS NAME INA STB NAME2 SAVE LDB A,I GET 2ND WORD SZB,RSS IF NULL LDB DBLNK DEFAULT TO BLANK STB NAME2+1 SAVE INA LDB D12 ADD 12 TO POINT TO ADB A DISC ADD LDA A,I GET 3RD WORD SZA,RSS IF NULL LDA DBLNK DEFAULT TO BLANK AND MASK SAVE 5TH CHARACTER IOR B40 PUT IN BLANK FOR MATCH STA NAME2+2 SAVE LDA B,I GET DISC ADD STA NAME2+3 SAVE JSB NAM.. CHECK IF NAME IS LEGAL ? DEF *+2 DEF NAME SZA JMP MORE? NOT LEGAL SO FORGET IT LDB MPNTR DID WE FIND A MATCH ? SZB,RSS JMP NMTCH MATCH NOT WFOUND * MATCH FOUND IN TABLE STB BPNTR SET POINTER FOR OPEN ADB D4 ADDRESS OF DISC WORD LDA B,I CHECK THE DISC WORD SZA DO WE HAVE A DISC ADDRESS ? CPA DM1 JMP NMTCH NO - OPEN FILE CLE,ELA PUT LU IN E REG. LDA CRN USER SPECIFIED LU RAR,ELA PUT E REG. IN LSB CPA CRN STILL SAME ? JMP ENT0 YES-THEY AGREE * ENL0 LDB MPNTR WE GOT THE WRONG DUDE !!! JSB GOBCK SEE IF WE CAN CHANGE HORSES CPA D3 TYPE THREE ? ENL1 JSB DRMNT IF DORMANT REMOVE FROM LIST CPA D3 IS BACK TYPE 3 ? JMP ENL1 YES - KEEP TRYING JSB GOFWD SEE IF ANY TYPE THREES CPA D3 REMAIN JSB ENL4 CHECK IF SAME FATHER ON DIFF LU. ENL3 JSB GOBCK BACK AROUND LIST CLA CLEAR OUT OLD DATA ADB D4 BUMP TO DISC WORD STA B,I CLEAR IT ADB DM4 RESTORE B REG. JSB FLUSH TRY RP,, IN CASE SZA IF SUCCESS CPA D14 OR NOT FOUND CPB MPNTR CHECK FULL CIRCLE JMP NMTCH YES -GO OPEN CORRECT FILE JMP ENL3 KEEP ON TRUCKING * ENL4 NOP JSB MATCH SEE IF SAME FATHER DEF NAME2 RSS YES SKIP JSB ERR GET OUT GRACEFULLY ADB D4 BUMP TO DISC WORD LDA B,I GET IT CLE,ELA LU TO E REG. LDA CRN USER SPECIFIED LU RAR,ELA REPLACE LSB CPA CRN STILL SAME ? JSB ERR YES - GET OUT LDA NAME2+3 GET NEW DISC WORD STA B,I PUT IN ENTRY ADB DM4 RESTORE B REG. JMP ENL4,I RETURN * ENT0 JSB IDSGA SEE IF NOW IN CORE DEF *+2 DEF NAME SZA IN CORE ? JMP ENTR1 YES LDB BPNTR ENTRY ADDRESS ADB D4 LDA B,I GET DISC WORD RAL,CLE,ERA PUT LU IN E REG  STA B AND B177 EXTRACT SECTOR STA DCB+4 PUT IN DCB WORD XOR B REMOVE SECTOR FROM B ALF,ALF POSITION RAL STA DCB+3 PUT IN DCB LDA SECT2 IF LU=2 SEZ LDA SECT3 LU=3 STA DCB+8 PUT IN DCB CLA,INA FORM DISC LU ELA IF E SET IT'S LU=3 STA DCB PUT IN DCB LDB XEQT GET OUR ID ADDRESS STB DCB+9 SHOW FILE OPEN TO US JSB LOOK READ FILE HEADER JMP RPACK CHECKSUM ERROR LDB DID12 NAME IN FILE HEADER JSB MATCH SEE IF SAME AS DNAME DEF NAME REQUESTED NAME RSS YES - SKIP JMP ENL0 TRY FOR DESIRED ONE ENT00 JSB FID DO RP THING SZA ANY ERROR ? CPA D23 DUPLICATE ID ? JMP ENTR1 DUP OR NO ERROR CPA D14 NO ID AVAILABLE ? RSS YES DO ROUND ROBIN JMP MORE? NO - IGNORE JSB ROBIN MAKE AN ID AVAILABLE JMP ENT00 TRY AGAIN * RPACK LDB TBLAD TABLE ADDRESS CLA RPK CPB TEND END OF TABLE ? JMP NMTCH YES - GO OPEN FILE ADB D4 WORD 5 STA B,I CLEAR DISC WORD INB JMP RPK LOOP FULL TABLE SKP * *NOW MAKE ENTRY IN OUR TABLE ENTR1 LDB HPNTR HEAD POINTER SZB FOUND ? JMP ENTR3 YES LDB BPNTR NOT FOUND SEARCH NTRL JSB GOBCK LOOK BACK AND HBIT SZA,RSS IS THIS THE HEAD OF THIS LIST ? CPB BPNTR LIST EXHUSTED ? RSS SKIP JMP NTRL NO KEEP LOOKING STB HPNTR SAVE HEAD ADDRESS ADB D3 LDA B,I GET WORD 4 IOR HBIT MARK AS HEAD STA B,I IN ENTRY ENTR2 LDB HPNTR JMP EN1 LOOK FOR FATHER ENTR3 CPB BPNTR IF ENTRY IS HEAD JMP EN1 LOOK FOR FATHER LDB BPNTR OTHERWISE JSB GOFWUgD CHECK CPB BPNTR IF ONLY ENTRY RSS YES - SKIP JMP ENTR2 NO LDB HPNTR HEAD OF NEW LIST JSB GOFWD LDA B LINK IN FRONT OF NEW HEAD LDB BPNTR JSB INSRT LDA DNAME GET NAME ADDRESS INB BUMP TO WHERE NAME GOES JSB MOVE DEC -4 JMP ENTR2 * EN0 JSB MATCH IS THIS FATHER DNAM2 DEF NAME2 FATHER'S NAME JMP MORE? YES-ALREADY IN LIST EN1 JSB GOBCK LOOK BACK CPA D3 IS THIS A FATHER ? JMP EN0 YES-SEE IF IT'S OURS * FATHER NOT IN LIST MAKE ENTRY JSB QBLNK LOOK FOR BLANK SZB,RSS FOUND ONE ? JMP MORE? NO-CHECK FOR MORE LDA NAME2+2 GET WORD 4 AND MASK SAVE 5TH CHAR OF NAME IOR D3 PUT IN TYPE STA NAME2+2 PUT IN ENTRY LDA HPNTR HEAD ADDRESS JSB INSRT INSERT BEHIND HEAD LDA DNAM2 FATHERS' NAME ADDRESS INB WHERE IT GOES JSB MOVE DEC -4 SKP * *MORE THAN 1 SEGMENT ? MORE? LDA ENTR# GET ENTRY NUMBER ADA DM1 SUBTRACT 1 STA ENTR# CCE,SZA,RSS MORE? JMP EXIT NO- LDA NAME+2 GET 3RD. WORD OF NAME AND MASK STRIP TYPE/STATUS IOR B40 PUT IN BLANK STA NAME+2 AND RESTORE LDB DNAM ADDRESS OF SEG NAME ADB D2 START WITH 3RD. WORD NOT LDA B,I GET WORD SEZ E=0,LOW BYTE ALF,ALF POSITION HIGH TO LOW AND B377 MASK CPA B40 IF BLANK CPB DNAM OR ONE CHAR NAME JMP NOT1 DONE CMB,SEZ,CME,INB IF NOW HIGH BYTE CMB,RSS DECREMENT B WITHOUT SETTING E-REG CMB,INB BACK UP ONE WORD JMP NOT NOT1 LDA B,I GET THE WORD SEZ IF HIGH BYTE ALF,ALF SHIFT TO LOW SEZ,INA INCREMDHFBENT NAME ALF,ALF REPOSITION STA B,I RESTORE JMP SRCH SEE IF IT IS IN LIST 5H SKP * *HERE IF ENTRY NOT FOUND IN TABLE NMTCH JSB IDSGA SEE IF ALREADY IN CORE DEF *+2 DNAM DEF NAME SZA IN CORE ? JMP MORE? YES CCB DETERMINE DISK LU STB CRN# DEFAULT TO ONE DISC LDA CRN USER SPECIFIED DISC SZA IF IT IS ZERO CLB,RSS NOT ZERO USE IT LDA DM2 ZERO - SO DEFAULT IS LU 2 STA CRN SAVE FOR OPEN SZB USER SPECIFIED LU ? LDB SECT3 NO - DO WE HAVE AN LU 3 ? SZB,RSS USER SPECIFIED OR NO LU 3 JMP NMCH1 GO DO OPEN '(A)_DISC LU' JSB FSTAT REQUEST CATRIDGE LIST DEF *+2 ADBUF DEF BUFF BUFFER LDB ADBUF ADDRESS OF BUFFER CLOP LDA B,I ENTRY SZA,RSS END OF LIST ? JMP NMCA YES AND B77 MASK OF LU CPA D2 LU=2 ? JMP FOUND YES CPA D3 LU=3 ? JMP FOUND YES ADB D4 BUMP ADDRESS JMP CLOP KEEP LOOKING FOUND CMA,INA MAKE LU NEGATIVE STA CRN SAVE LDB DM2 NOW HAVE TWO STB CRN# DISC LU'S NMCA LDA CRN NMCH1 STA TEMP FOR OPEN JSB LOPEN OPEN THE FILE DEF ORTN RETURN DEF DCB DEF IERR DEF NAME DEF D1 NON-EXCLUSIVE OPEN DEF D0 SECURITY DEF TEMP LU ORTN CPA D6 DID WE OPEN TYPE 6 ? JMP NMCH2 YES - GOOD OPEN LDB CRN# GET NUMBER OF DISC LU'S TO SEARCH LDA TEMP WHERE WE LOOKED CPA CRN TOP OF STACK ? CPB DM1 AND MORE THAN 1 DISC LU ? JMP NMC14 NO - NOT FOUND ,CLOSE THE DCB SLA,INA,RSS TRY OTHER DISC LDA DM3 JMP NMCH1 * NMCH2 LDA TEMP RETREIVE DISC LU STA CRN ALL SEGMT'S MUST BE ON SAME LU JMP NMCH3 SKIP NMC12 LDB NUM REQUESTED NO. OF SEGMENTS  CPB D1 SHORT REQUEST RSS YES - PROCEED JMP NMC14 LONG - HE WILL CALL AGAIN JSB ROBIN MAKE AN ID AVAILABLE NMCH3 LDA CRN RETREIVE DISC LU CMA,INA MAKE POSITIVE JSB LOOK READ FILE HEADER JMP NMC14 CHECKSUM ERROR LDB DID12 CHECK NAME IN FILE HEADER JSB MATCH MUST MATCH DNAMN DEF NAME NAME REQUESTED RSS OK JMP NMC14 NO GO - CLOSE FILE JSB FID DO THE RP SZA,RSS ANY ERRORS ? JMP NMCH5 SUCCESS CPA D14 NO ID AVAILABLE ? JMP NMC12 YES - TRY TO FREE AN ID * NMC14 JSB LCLOS CLOSE DCB DEF *+2 DEF DCB JMP MORE? LOOK FOR MORE * NMCH5 JSB LCLOS CLOSE DCB DEF *+2 DEF DCB * LDA NAME+2 MAKE UP ENTRY FOR SEGMENT AND MASK SAVE 5TH CHARACTER IOR SEGT INSERT TYPE LDB NUM REQUESTED NO OF ENTRIES CPB ENTR# IF FIRST ENTRY IOR HBIT IT'S A HEAD STA NAME+2 LDB HPNTR ADDRESS OF HEAD JSB GOFWD ADVANCE FORWARD STB TEMP SAVE LINK ADDRESS LDB BPNTR ENTRY ADDRESS TO B SZB,RSS DO WE HAVE A BLANK ? JSB QBLNK FIND ONE STB BPNTR SAVE ADDRESS SZB,RSS FOUND ? JSB ERR NO - TABLE FULL CPB MPNTR DID WE FIND IN TABLE ? JMP NMCH6 YES LDA TEMP LINK ADDRESS TO A JSB INSRT INSERT IN FRONT OF HEAD NMCH6 LDA DNAMN ADDRESS OF NAME INB WHERE IT GOES JSB MOVE DM4 DEC -4 LDA HPNTR DID WE HAVE A HEAD ? SZA,RSS LDA BPNTR N0 - NEW ENTRY IS HEAD STA HPNTR JMP ENTR1 GO PUT FATHER IN LIST SKP HED TERMINATE SAVING RESOURCES AND REPORT STATUS ERR NOP LDA *-1 GET ERROR ADDRESS STA NAME2 REPORT CLA,CCE,RSS EXIT CLA,CLE  ERA STA EFLAG JSB PRTN RETURN ANY ERROR DEF *+2 TO CALLER DEF EFLAG JSB EXEC DEF *+9 DEF D6 TERMINATE DEF D0 ME DEF D1 SAVING RESOURSES DEF D0 CLEAR OUT XTEMP DEF D0 CLEAR OUT XTEMP DEF D0 CLEAR OUT XTEMP DEF D0 CLEAR OUT XTEMP DEF D0 CLEAR OUT XTEMP JMP T5IDM SKP HED SUBROUTINES * [B] ADDRESS OF ENTRY * JSB MATCH * DEF NAME NAME TO MATCH * IF MATCH * IF NO MATCH * [A] TYPE/STATUS OF ENTRY * MATCH NOP STB TPNTR SAVE ENTRY ADDRESS LDA MATCH,I GET NAME ADDRESS ISZ MATCH STA TEMP SAVE NAME ADDRESS INB DLD B,I 1ST TWO WORDS OF ENTRY NAME CPA TEMP,I SAME ? RSS YES-POSSIBLE MATCH JMP NXIT TAKE NO MATCH EXIT ISZ TEMP BUMP NAME POINTER CPB TEMP,I COMPARE ? RSS SAME JMP NXIT NO MATCH LDB TPNTR FIND ADDR OF LAST WORD ADB D3 IE WORD 4 ISZ TEMP LDA B,I GET LAST CHAR AND MASK IOR B40 BLANK CPA TEMP,I SAME ? JMP MXIT MATCH ! NXIT ISZ MATCH LDB TPNTR ENTRY ADDRESS ADB D3 POINT TO MXIT LDA B,I TYPE STATUS AND B377 EXTRACT LDB TPNTR RESTORE ADDRESS JMP MATCH,I RETURN * * FIND A BLANK ENTRY IF IT EXISTS IN TABLE * QBLNK NOP LDB TBLAD TABLE ADDRESS RSS QLP ADB D5 BUMP TO NEXT ENTRY CPB TEND END OF TABLE ? CLB,RSS YES LDA B,I GET ENTRY'S LINK WORD CPA DM1 UNUSED ENTRY ? CLA YES - USE AS BLANK SZB END OF TABLE ? SZA,RSS OR BLANK FOUND ? JMP QBLNK,I RETURN JMP QLP ELSE SKVP * * [A] LINK POINTER - INSERT BEFORE * [B] ENTRY POINTER * JSB INSRT * INSRT NOP STA TEMP STB TPNTR LDA TBLA TABLE ADDRESS CMA,INA ADA TPNTR CALCULATE NEW ENTRY LINK CLB DIV D5 STA B SAVE IN B BLF,BLF POSITION TO HIGH BYTE IOR B MERGE TOGETHER LDB TEMP GET LINK POINTER SZB,RSS START OF NEW LIST ? JMP INSR1 YES STA IERR TEMPORARY LDA B,I BACK UP ALF,ALF AND B377 EXTRACT BACK LINK MPY D5 ADA TBLA ADDR OF PREVIOUS STA TAIL SAVE TAIL ADDRESS LDA TAIL,I GET TAIL POINTERS LDB TEMP,I AND HEAD POINTERS RRL 8 ALF,ALF REVERSE LINKS STA TPNTR,I PUT IT IN ENTRY LDA IERR RETREIVE TEMPORARY CPB TAIL,I SPECIAL CASE ? JMP *+3 YES TWO ENTRY LIST RRR 8 STB TEMP,I NEW HEAD POINTERS STA TAIL,I NEW TAIL POINTERS LDA TPNTR,I NEW ENTRY POINTERS INSR1 STA TPNTR,I PUT IN NEW LINKS LDB TPNTR JMP INSRT,I RETURN SKP * * [B] ENTRY ADDRESS * JSB GOFWD OR GOBCK * [A] TYPE STATUS * [B] NEXT ENTRY IN LIST ADDRESS * GOFWD NOP LDA B,I SZB IF NO ADDRESS SZA,RSS OR NO LINK JMP GOFWD,I RETURN AND B377 GET FWD LINK MPY D5 ADA TBLA CALCULATE STA B SAVE ADDRESS IN B REG. ADA D3 LDA A,I GET WORD 4 AND B377 EXTRACT TYPE/STATUS JMP GOFWD,I * GOBCK NOP LDA B,I SZB IF NO ADDRESS SZA,RSS OR NO LINK JMP GOBCK,I RETURN ALF,ALF AND B377 GET BACK LINK MPY D5 ADA TBLA STA B ADDRESS OF PREVIOUS ENTRY ADA D3 LDA A,I WORD 4 AND B377 EXTRACT TYPE/STATUS JMP GOBC%K,I SKP * [B] ADDRESS OF ENTRY * JSB DRMNT CHECK IF PRGM DORMANT * [A] TYPE STATUS * [B] ADDRESS OF NEXT ENTRY * DRMNT NOP STB TPNTR SAVE CURRENT POINTER INB ADDRESS OF NAME IN ENTRY STB DDEF FOR CALL JSB IDSGA GET ID ADDRESS DEF *+2 DDEF NOP NAME ADDRESS LDB TPNTR RESTORE POINTER SZA,RSS DOES IT EXIST ? JMP RMOVE N0-DORMANT ADA D15 STATUS WORD FROM ID LDA A,I AND B17 EXTRACT STATUS SZA,RSS 0=DORMANT JMP RMOVE DORMANT SO REMOVE FROM LIST JSB GOBCK LOOK AT BACK JMP DRMNT,I * RMOVE STB TAIL IF ONLY ENTRY JSB GOBCK GET ADDRESS OF BACK CPB TPNTR IF ONLY ENTRY JMP RXIT JUST MARK AS BLANK STB TAIL SAVE TAIL ADDRESS LDA B,I GET LINK WORD AND MASK GET BACK STA TEMP SAVE LDA TPNTR,I AND B377 GET ENTRY'S FWD LINK IOR TEMP FORM NEW LINK STA B,I NEW LINK FOR BACK LDB TPNTR JSB GOFWD ADDRESS OF FORWARD LDA B,I CPB TAIL ONLY TWO ENTRIES ? LDA TPNTR,I YES - SPECIAL CASE AND B377 EXTRACT ITS FWD STA TEMP AND SAVE LDA TPNTR,I GET ENTRIES FROM BACK AND MASK IOR TEMP FORM NEW LINK STA B,I PUT IN FORWARD'S LINK WORD RXIT LDB TPNTR RESTORE B CLA STA B,I MARK ENTRY AS BLANK LDB TAIL RETURN WITH BACK ADDR LDA B ADA D3 LDA A,I AND B377 AND TYPE/STATUS JMP DRMNT,I RETURN SKP * * [B] ENTRY ADDRESS * JSB FLUSH - DO RP ,, ON ENTRY'S ID * [A] ERROR CODE * [B] UNCHANGED FLUSH NOP STB TPNTR SAVE ADDRESS INB ADDRESS OF NAME STB FNAM SAVE FOR CALL ADB D2 LDA B,I GET WORD 4 STvA TEMP SAVE AND MASK EXTRACT TYPE/STATUS IOR B40 PUT IN BLANK STA B,I JSB IDRPD DO RP,, THING DEF *+2 FNAM NOP ID ADDRESS STA IERR SAVE ERROR CODE LDA TEMP RETREIVE SAVED TYPE STATUS LDB TPNTR ADB D3 STA B,I RESTORE WORD 4 LDB TPNTR AND B LDA IERR RETREIVE ERROR JMP FLUSH,I * * DO ROUND ROBIN TO MAKE ID AVAILABLE * JSB ROBIN * ROBIN NOP LDB RROBN GET ROUND ROBIN POINTER STB QBLNK SAVE TEMP JMP RR1 SKIP FIRST TIME RLP1 LDB RROBN GET ROUND ROBIN POINTER CPB QBLNK FULL CIRCLE ? JMP ROBIN,I YES - EXIT RR1 CPB TBLAD BEGINING OF TABLE ? LDB TEND YES - START AT BOTTOM ADB DM5 ADJUST TO PREVIOUS ENTRY STB RROBN SAVE ADB D3 TYPE STATUS WORD LDA B,I GET TYPE/STATUS CPA DM1 VALID ENTRY ? JMP RLP1 NO - KEEP LOOKING AND B17 EXTRACT TYPE CPA D3 IS IT TYPE 3 ? JMP RLP1 YES - LOOK AGAIN LDB RROBN JSB FLUSH DO RP,, SZA SUCCESS ? JMP RLP1 THIS ID NOT AVAIL TRY NEXT JMP ROBIN,I GOOD EXIT * SKP * * READ HEADER RECORD OF TYPE 6 FILE * FILE MUST BE OPEN AND DISC LU IN A REG. * SYSUP NOP SYSTEM SETUP CODE WORD LOOK NOP IOR PRC MERGE IN PRIVILEDGE CODE STA TEMP SAVE DISC LU FOR EXEC CALL JSB EXEC DEF *+7 DEF D1 READ DEF TEMP DISC LU DFIDB DEF IDBUF DEST BUFFER ADDRESS DEF D35 LENGTH DEF DCB+3 DISC TRACK DEF DCB+4 DISC SECTOR *780604 JSB .OPSY CHECK IF RTE-IV SYSTEM *780604 LDB D28 *780604 CPA RT4FL IF RTE-IV, USE MORE WORDS FOR CHECKSUB *780604 ADB D5 MAKE IT 33 FOR RTE-IV *780604 STB LOOK1 SAVE FOR CH*ECKSUM CLA,CLE NOW CHECK FOR BELONGS THIS SYSTEM JSB SUM DEF IDBUF LOOK1 DEC 33 LDB LOOK1 GET INDEX INTO SKELITON DCB ADB DFIDB CPA B,I SAME ? INB,RSS YES - SKIP JMP ERR19 CHECKSUM ERROR LDA SYSUP GET THE SYSTEM SETUP CODE WORD CPA B,I SAME AS THIS SYSTEM? RSS YES - SKIP JMP ERR19 CHECKSUM ERROR LDA ID+15 GET TYPE WORD AND B17 MASK TO TYPE CPA SEGT SEGMENT ? RSS YES - SKIP JMP ERR19 NO - CLOSE FILE LDA DCB GET DISC LU ERA LSB 'LU' TO E REG. LDA DCB+3 GET TRACK ALF,ALF FOR DISC WORD ERA ADD LU IN BIT 15 LDB DCB+4 GET SECTOR ADA B PUT TOGETHER DISC WORD STA NAME+3 PUT IN OUR TABLE AND OM200 STRIP OUT SECTOR ADB D2 BUMP TO WHERE CODE STARTS CPB DCB+8 CHECK FOR TRACK CROSSING LDB B200 BUMP TRACK AND ZERO SECTOR ADA B FORM DISC WORD FOR ID STA ID+27 PUT IN SKELETON ID ISZ LOOK GOOD RETURN ERR19 JMP LOOK,I SPC 1 SKP * * FIND A BLANK SHORT ID AND SET IT UP * FID NOP JSB $LIBR GO PRIVILEDGE NOP TO PREVENT CONFLICTS JSB IDSGA SEE IF ID NOW IN CORE DEF *+2 DNAMF DEF NAME SEZ,CME NOT FOUND CLEAR E REG. JMP SERCH LDA D23 FOUND IN CORE JMP FXIT ERROR 23 ! LOOP1 LDA D14 SEZ,RSS IF DOWN TO DONT CARE ? JMP FXIT NO ID AVAILABLE * E=1 SEARCH FOR ID W/O TRACKS, E=0 DONT CARE ABOUT TRACKS SERCH CME TOGGLR E REG. LDA KEYWD ADDRESS OF ID TABLE STA TEMP RSS SKIP FIRST ISZ FIDL ISZ TEMP LDB TEMP,I GET ENTRY SZB,RSS END OF TABLE ? JMP LOOP1 TRY WITH TRACKS ADB D14 BUMP TO WORD0.* 15 LDA B,I GET NAME/TYPE AND OM360 MASK TO CHAR 5 AND SHORT BIT CPA B20 NULL AND SHORT ? RSS YES - SKIP JMP FIDL LOOK SOME MORE ADB D5 CHECK FOR TRACKS LDB B,I WORD 20 SEZ,SZB IF HAS TRACKS AND CARE JMP FIDL SKIP THIS ONE * NOW SET UP THE ID LDB TEMP,I GET AVAILABLE ID ADDRESS ADB D11 CORRECT FOR SHORT ID LDA ID+8 ENTRY POINT ADDRESS STA B,I TO THE ID INB LDA DNAMF SEGMENT NAME JSB MOVE MOVE FIRST DM2 DEC -2 TWO WORDS LDA NAME+2 GET THIRD WORD AND MASK SAVE CHAR 5 XOR ID+15 MERGE IN PROG TYPE AND OM20 MASK OF BITS 4-14 XOR ID+15 IOR B220 PUT IN TEMP & SHORT BITS STA B,I MOVE TO ID INB LDA DID23 ADDRESS OF LOW MAIN ADDRESS JSB MOVE MOVE WORDS 23-27 DM5 DEC -5 CLA GOOD EXIT FXIT JSB $LIBX DEF FID * * MOVE ROUTINE A=SOURCE , B=DESTINATION ADDRESSES * MOVE NOP STA ID+18 SAVE SOURCE ADDRESS LDA MOVE,I GET COUNTER STA ID+19 SAVE ISZ MOVE SET RETURN MORE LDA ID+18,I GET NEXT WORD STA B,I PUT IT INB ISZ ID+18 ISZ ID+19 JMP MORE JMP MOVE,I RETURN - B=NEXT ADDRESS * * SUM ! P+1=ADDR. ,P+2=# OF WORDS * SUM NOP LDB SUM,I ISZ SUM STB MOVE TEMP LDB SUM,I GET # OF WORDS CMB,INB NEGATE ISZ SUM ADA MOVE,I ACCUMULATE SUM ISZ MOVE INB,SZB JMP *-3 JMP SUM,I * END T5IDM /0 Ic 09570-18560 2001 S C0122 &XSERN              H0101 ASMB,L * NAM XSERN,7 09570-16560 REV. A 761013 NAM XSERN,7 09570-16560 REV. D 790315 ENT XSERN EXT REIO,ERRNM,.ENTR * * *-------------------------------------------------------- * * RELOC. 09570-16560 * SOURCE 09570-18560 * * OCTOBER 13 1976 REV. A * *-------------------------------------------------------- * * * * THIS SUBROUTINE PRINTS OUT ERROR MESSAGES FROM THE ERROR * CODES GENERATED BY DEVICE SUBROUTINES. * * CALL XSERN(LUOP,IERR) * WHERE: * LUOP = LU OF CRT * IERR = 4 ELEMENT ERROR ARRAY * IERR(1) = ERROR CODE * IERR(2)-(4) = DEVICE SUBROUTINE NAME * * * LUOP NOP IERR NOP XSERN NOP JSB .ENTR DEF LUOP * * TEST ERROR CODE * LDA IERR,I SSA,RSS JMP XSERN,I POSITIVE,RETURN ADA .9 SSA JMP XSERN,I < -8,RETURN * * POINT TO DS NAME * LDA IERR INA STA NMERR * * TEST ERROR CODES * LDA IERR,I CMA,INA CLB CPA .1 PARAMETER ERROR ? LDB .1 YES SZB COMMON ERROR ? JMP COMER * * SEPARATE DTU/HPIB ERRORS * LDA IERR INA LDB A,I CPB PO POWER ? JMP HPIB CPB RN RNSET ? JMP HPIB CPB CT COUNTER ? JMP HPIB CPB DV DVM ? JMP HPIB CPB SP SPOUT ? JMP HPIB CPB CB CBUS ? JMP HPIB INA LDB A,I CPB PG PSPGM ? JMP HPIB CPB IN PSINF ? JMP PSINF * * DTU ERRORS * LDA IERR,I CMA,INA CPA .2 CONFIG ERRORS ? JMP DTCNF LDB MSLDT ADB A LDB B,I STB MESLN LDB MSGDT ADB A LDB B,I STB MESSG f ADB .2 STB ERRPT JMP OUTMS * * * COMMON ERRORS * COMER LDB MSLPA,I STB MESLN LDB MSGPA STB MESSG ADB .2 STB ERRPT JMP OUTMS * * * PSINF ERRORS * PSINF LDB MSLIN,I STB MESLN LDB MSGIN STB MESSG ADB .2 STB ERRPT JMP OUTMS * * * DTU CONFIGURATION ERROR * DTCNF LDA IERR ADA .2 LDA A,I CLB CPA RE STREF ? LDB .1 CPA TC SWTCH ? LDB .2 CPA LA RELAY ? LDB .2 CPA CO ITCOD ? LDB .2 CPA SE SWSET ? LDB .3 CPA LS PULSE ? LDB .4 LDA IERR INA LDA A,I CPA FP FPXXX ? CLB LDA MSLCF ADA B LDA A,I STA MESLN LDA MSGCF ADA B LDA A,I STA MESSG ADA .2 STA ERRPT JMP OUTMS * * * HPIB ERRORS * HPIB LDA IERR ADA .2 LDA A,I CPA WE JMP PWRCF * LDA IERR,I CMA,INA LDB MSLIB ADB A LDB B,I STB MESLN LDB MSGIB ADB A LDB B,I STB MESSG ADB .2 STB ERRPT JMP OUTMS * * * POWER CONFIGURATION ERROR * PWRCF LDA MSLPW,I STA MESLN LDA MSGPW STA MESSG ADA .2 STA ERRPT JMP OUTMS * * * OUTPUT MESSAGE * OUTMS JSB ERRNM DEF *+3 DEF ERRPT,I DEF NMERR,I * * PUT 'X' IN MESSAGE * LDB ERRPT INB LDA B,I AND B377 SAVE 2ND CHAR IOR BX STA B,I * * OUTPUT MESSAGE * JSB REIO DEF *+5 DEF WRITE DEF LUOP,I DEF MESSG,I DEF MESLN * NOP JMP XSERN,I * * * * .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .5 DEC 5 .9 DEC 9 * ZERO DEC 0 * B377 OCT 37d7 BX OCT 054000 WRITE OCT 100002 * MESSG NOP MESLN NOP ERRPT NOP NMERR NOP * PO ASC 1,PO RN ASC 1,RN CT ASC 1,CT DV ASC 1,DV SP ASC 1,SP CB ASC 1,CB PG ASC 1,PG IN ASC 1,IN WE ASC 1,WE RE ASC 1,RE SE ASC 1,SE TC ASC 1,TC LA ASC 1,LA CO ASC 1,CO LS ASC 1,LS FP ASC 1,FP * * * * * PARAMETER ERROR * MSLPA DEF MSL1 MSGPA DEF MSG1 * * PSINF ERROR * MSLIN DEF MSL7 MSGIN DEF MSG7 * * DTU ERRORS * MSLDT DEF *-2,I DEF MSL9 DTU POWER OFF DEF MSL12 DTU TIMEOUT DEF MSL14 EXEC CALL REJECTED DEF MSL15 DTU DOWN DEF MSL17 IMPROPER LU # DEF MSL19 IPINS IMPROPERLY CONFIGURED DEF MSL21 ARRAY IPINS MISSING * MSGDT DEF *-2 DEF MSG9 DEF MSG12 DEF MSG14 DEF MSG15 DEF MSG17 DEF MSG19 DEF MSG21 * * POWER CONFIG ERROR * MSLPW DEF MSL6 MSGPW DEF MSG6 * * HPIB ERRORS * MSLIB DEF *-1,I DEF MSL11 BAD DATA DEF MSL10 HPIB I/O ERROR DEF MSL13 HPIB TIMEOUT DEF MSL14 EXEC CALL REJECTED DEF MSL16 HPIB DOWN DEF MSL18 IMPROPER LU # DEF MSL20 HPIB BUSY DEF ZERO NO ERROR -9 * MSGIB DEF *-1 DEF MSG11 DEF MSG10 DEF MSG13 DEF MSG14 DEF MSG16 DEF MSG18 DEF MSG20 * * DTU CONFIGURATION ERRORS * MSLCF DEF *+1,I DEF MSL2 PROBE CARD MESSAGE DEF MSL3 PRV CARD MESSAGE DEF MSL4 SWITCH MESSAGE DEF MSL5 PROG D/C MESSAGE DEF MSL8 PRG MESSAGE * MSGCF DEF *+1 DEF MSG2 DEF MSG3 DEF MSG4 DEF MSG5 DEF MSG8 * * * * ERROR MESSAGES * MSG1 ASC 15, , PARAMETER ERROR MSG2 ASC 24, , NO PROBE CARD IN UPPER DTU SLOT C MSG3 ASC 24, , NO PRV CARD FOR SELECTED REF SET MSG4 ASC 25, , NO SWITNCH CARD IN SELECTED DTU SLOT MSG5 ASC 26, , NO PROG. D/C CARD IN SELECTED DTU SLOT MSG6 ASC 22, , LU OF DTU OR PS PROG. MISSING MSG7 ASC 26, , PSCNF NOT CALLED BEFORE CALLING POWER * 790315 MSG8 ASC 23, , NO PRG CARD IN UPPER DTU SLOT C MSG8 ASC 23, , NO PRG CARD IN UPPER DTU SLOT D MSG9 ASC 14, , DTU POWER OFF MSG10 ASC 14, , HPIB I/O ERROR MSG11 ASC 21, , BAD DATA RECEIVED FROM HPIB MSG12 ASC 13, , DTU TIMEOUT MSG13 ASC 13, , HPIB TIMEOUT MSG14 ASC 16, , EXEC CALL REJECTED MSG15 ASC 11, , DTU DOWN MSG16 ASC 12, , HPIB DOWN MSG17 ASC 25, , CONFIG. ERROR, LU GIVEN NOT FOR DTU MSG18 ASC 25, , CONFIG. ERROR, LU GIVEN NOT FOR HPIB MSG19 ASC 25, , ARRAY 'IPINS' IMPROPERLY CONFIGURED MSG20 ASC 12, , HPIB BUSY MSG21 ASC 18, , ARRAY 'IPINS' MISSING * MSL1 DEC -30 MSL2 DEC -48 MSL3 DEC -48 MSL4 DEC -50 MSL5 DEC -52 MSL6 DEC -44 MSL7 DEC -52 MSL8 DEC -46 MSL9 DEC -28 MSL10 DEC -28 MSL11 DEC -42 MSL12 DEC -26 MSL13 DEC -26 MSL14 DEC -32 MSL15 DEC -22 MSL16 DEC -24 MSL17 DEC -50 MSL18 DEC -50 MSL19 DEC -50 MSL20 DEC -24 MSL21 DEC -36 * A EQU 0 B EQU 1 END 3 JS 09570-18652 1830 S 0122 &DTSXX TEST MONITOR             H0101 XFTN4,L C PROGRAM DTSXX(3,99),PRE-REL 780522 (DLB) RTE-IV PROGRAM DTSXX(3,99),PRE-REL 780615 (DLB) RTE-IV C C-------------------------------------------------------- C C RELOC. 09570-16652 C SOURCE 09570-18652 C C W A GROVES 13 OCT 76 REV. A C W A GROVES 23 FEB 77 PRE-REL C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY,1976. C ALL RIGHTS RESERVED.THE INFORMATION CONTAINED ON C THIS MEDIUM MAY BE USED WITH ONLY ONE COMPUTER C AT A TIME.IT SHALL NOT OTHERWISE BE RECORDED, C TRANSMITTED,OR STORED IN A RETRIEVAL SYSTEM. C COPYING OR OTHER REPRODUCTION WITHOUT PRIOR WRITTEN C CONSENT OF HEWLETT-PACKARD COMPANY IS PROHIBITED, C EXCEPT THAT ONE COPY MAY BE MADE AND RETAINED FOR ARCHIVE C PURPOSES ONLY. C C --------------- C C THE INFORMATION CONTAINED ON THIS MEDIUM IS PROPRIETARY C TO HEWLETT-PACKARD COMPANY. IT MAY BE USED WITH ONE C COMPUTER ONLY AND IS NOT TO BE DISCLOSED TO ANY THIRD C PARTIES OR REPRODUCED IN ANY FORM EXCEPT THAT IT MAY BE C TRANSFERRED TO ONE BACKUP COMPUTER DURING A COMPUTER C MALFUNCTION OR DURING PREVENTIVE MAINTENANCE. C C-------------------------------------------------------- DIMENSION IOPBF(40),IDCB(528),NMDIR(3),IRBUF(40) DIMENSION IPBUF(10),IRSTR(40),IDCBT(144) DIMENSION IP(5),ILOGOF(3),IPRTN(5),IFMSEQ(10) DATA NMDIR/2H/D,2HIR,2H /,IRSTR/2H::/ DATA IDCRN/-2/,ILOGOF/2HLO,2HGO,2HF / DATA IFMSEQ/2HFM,2HSE,2HQ ,23B,0,-2/ C C DEFINE STATEMENT FUNCTIONS TO DO "GET BYTE" IN FORTRAN C IBYT1(IOF)=IAND(IOPBF(IOF/2+1)/(256-(IAND(IOF,1)*255)),177B) IBYT2(IOF)=IAND(IRBUF(IOF/2+1)/(256-(IAND(IOF,1)*255)),177B) C C DEFINE THE ROUTINE TO GET THE FATHER WAITING BIT C IWAIT(IDMY) = IAND(40000B,KGET(KGET(1717B)+20)) C C GET LOG DEVICE C DUMMY=ABREG(I,J) LOG=ITMLU(I) DUMMY=DUMMY CALL RMPAR(IP) C C PRODUCE THE F%MSXX TO EXECUTE THE :TR, COMMAND TO FOLLOW C CALL PUTID(IDCBT,IERR,IFMSEQ,LOG,IRPD) IF (IERR.EQ.0) GO TO 50 WRITE (LOG,11000) IERR,(IFMSEQ(I),I=1,3) 11000 FORMAT (/"/FMGR: ERROR#"I6, +/"/DTSXX COULD NOT PRODUCE "3A2" IDSEGMENT") GO TO 115 C C CLOSE DIRECTORY AFTER EACH RETRY. C 50 CALL CLOSE(IDCB) 100 DO 110 I=1,40 110 IOPBF(I)=2H IXFR=0 IF(IP(3) .EQ. 0) WRITE (LOG,10000) IF (IP(3) .NE. 0) WRITE (LOG,10050) 10000 FORMAT (/"ENTER UUT NAME: _") 10050 FORMAT (/"ENTER SELECTION: _") 111 READ (LOG,10100) IOPBF 10100 FORMAT (40A2) C C DID TERMINAL TIME-OUT? C CALL EXEC(13,LOG,IEQT5,IEQT4) IF(IAND(IEQT4,4000B) .NE. 0) GO TO 111 C C PARSE TO ELIMINATE LEADING SPACES C ISTR=1 IEND=80 CALL NAMR(IPBUF,IOPBF,IEND,ISTR) C C IS FIRST WORD "EX" (EXIT)? C IF (IPBUF .NE. 2HEX) GO TO 120 C C SCHEDULE LOGOFF PROGRAM C IF SCHEDULE ABORTED TERMINATE SELF C IF SON OF ANYBODY, THEN PASS BACK LOGOF FLAG IN 1P C IF (IWAIT(IDMY).NE.0) GO TO 115 C C FATHER IS NOT WAITING, SO DO THE LOGOF THING C CALL EXEC(23+100000B,ILOGOF) GO TO 115 114 I=I 115 IPRTN = -32767 GO TO 9999 C C IF TEST OPERATOR, ONLY TESTING IS PERMITTED. C 120 IF (IP(3) .EQ. 0) GO TO 180 C C VALID XFER FILE? C CALL LOPEN(IDCBT,IERR,IPBUF,1,IPBUF(5),IPBUF(6)) IF (IERR .LT. 0) GO TO 180 CALL CLOSE(IDCBT) C C TYPE 3 OR 4? C IF(IERR .NE. 3 .AND. IERR .NE. 4) GO TO 180 IXFR=1 INSTR=0 C C INVERSE PARSE XFER NAMR. C CALL INAMR(IPBUF,IRSTR(2),78,INSTR) C C IF NAME BEGINS WITH "?" OR "#" SCHEDULE DIRECTLY. C IF (IPBUF/256 .EQ. 77B) GO TO 400 IF (IPBUF/256 .EQ. 43B) GO TO 400 DO 170 I=1,40 170 IOPBF(I)=2H WRITE (LOG,10000) C C GET UUT NAME. C 175 READ(LOG,10100)IOPBF C C DID TERMINAL TIME-OUT? C CALL EXEC(13,LOG,IEQT5,IEQT4)  IF (IAND(IEQT4,4000B) .NE. 0) GO TO 175 C C PARSE TO ELIMINATE LEADING SPACES C ISTR=1 IEND=80 CALL NAMR(IPBUF,IOPBF,IEND,ISTR) IF (IPBUF .EQ. 2HEX) GO TO 100 C C OPEN DIRECTORY WITH CARTRIDGE SEARCH FIRST TIME THROUGH C THEREAFTER, USE DEFAULT "CRN" OF FIRST OPEN. C 180 CALL LOPEN(IDCB,IERR,NMDIR,1,0,IDCRN,528) IF (IERR .GE. 0) GO TO 190 WRITE (LOG,10200)IERR 10200 FORMAT (/"/FMGR: ERR#"I6/"DTSXX: COULD NOT OPEN /DIR NAMR") GO TO 100 190 IF (IERR .EQ. 3 .OR. IERR .EQ. 4) GO TO 205 WRITE (LOG,10300) 10300 FORMAT (/"/DTSXX: /DIR MUST BE TYPE 3 OR 4") GO TO 50 C C GET DEFAULT DISC LU FOR UNQUALIFIED NAMR'S C C C START READIND DIRECTORY C 205 CALL READF(IDCB,IERR,IRBUF,40,LEN) IF (LEN .NE. -1) GO TO 208 C C EOF MEANS COULDN'T FIND ENTRY C DO 206 I=79,0,-1 IF (IBYT1(I) .NE. 40B) GO TO 207 206 CONTINUE I=0 207 IF (I .EQ. 79) I=78 I=I+1 J=I/2+1 IF(MOD(I,2) .EQ. 0) IOPBF(J)=IAND(IOPBF(J),377B)+37400B IF(MOD(I,2) .EQ. 1) IOPBF(J)=IAND(IOPBF(J),77400B)+77B C C PUT OUT ENTRY FOLLOWED BY "?" C WRITE (LOG,10100) (IOPBF(K),K=1,J) GO TO 50 208 IF (IERR .GE. 0) GO TO 210 209 WRITE (LOG,10400)IERR 10400 FORMAT (/"/FMGR: ERR#"I6/"/DTSXX: COULD NOT READ /DIR NAMR") GO TO 50 210 IF (LEN .EQ. 0) GO TO 205 C C IGNORE RECORDS STARTING WITH "*" C IF(IBYT2(0) .EQ. 52B) GO TO 205 C C BLANK TRAILING BYTES C THEN TRY TO MATCH RECORDS C DO 215 I=LEN+1,40 215 IRBUF(I)=2H DO 220 I=1,40 IF (IOPBF(I) .NE. IRBUF(I)) GO TO 205 220 CONTINUE C C RECORDS MATCH, GET RUN STRING FOLLOWING UUT NAME C 225 CALL READF(IDCB,IERR,IRBUF,40,LEN) IF(LEN .EQ. -1) GO TO 250 IF(IERR .LT. 0) GO TO 209 IF(IBYT2(0) .EQ. 52B) GO TO 225 C C PARSE STRING FOR TEST SEQUENCE NAMR C ISTR=1 IEND=LEN*2 IF (NAMR(IPBUF,IRBUF,IEND,ISTRb)) 250,260 250 WRITE (LOG,10500) 10500 FORMAT (/"/DTSXX: IMPROPER TEST SEQUENCE NAMR IN /DIR") GO TO 50 260 IF(IAND(IPBUF(4),3) .NE. 3) GO TO 250 CALL CLOSE(IDCB) C C IF PROCESSING XFER FILE, SKIP TEST SEQUENCE NAMR. C IF (IXFR .NE. 0) GO TO 300 C C IF NAMR IS UNQUALIFIED, DEFAULT TO /DIR LU C IF (IAND(IPBUF(4),60B)/16 .NE. 0) GO TO 270 IPBUF(4)=IPBUF(4)+40B IPBUF(6)=IDCRN 270 CALL LOPEN(IDCBT,IERR,IPBUF,1,IPBUF(5),IPBUF(6)) IF (IERR .GE. 0) GO TO 280 WRITE (LOG,10600)IERR 10600 FORMAT (/"/FMGR: ERR#"I6/"/DTSXX: COULD NOT OPEN" +" TEST SEQUENCE NAMR") GO TO 100 280 CALL CLOSE (IDCBT) IF (IERR .EQ. 3 .OR. IERR .EQ. 4) GO TO 290 WRITE (LOG,10700) 10700 FORMAT (/"/DTSXX: TEST SEQUENCE NAMR MUST BR TYPE 3 OR 4") GO TO 100 290 INSTR=0 C C INVERSE PARSE TSEQ NAMR INTO C RUN STRING FOR FMSEQ (::TSEQ::-2,PARM1,PARM2 ETC...) C IF (INAMR(IPBUF,IRSTR(2),78,INSTR)) 295,300 295 WRITE (LOG,10750) 10750 FORMAT (/"/DTSXX: RUN STRING TOO LONG IN /DIR") GO TO 100 C C PASS NEXT 10 PARAMETERS INTO RUN-STRING. C 300 DO 360 I=1,10 IF(NAMR(IPBUF,IRBUF,IEND,ISTR))400,350 350 IF(INAMR(IPBUF,IRSTR(2),78,INSTR)) 295,360 360 CONTINUE 400 INSTR=INSTR+1 C C DOES DTSXX HAVE A FATHER? C IF (IWAIT(IDMY).EQ.0) GO TO 500 C C YES, PASS BACK RUN STRING TO FATHER. C CALL EXEC(14,2,IRSTR,-INSTR) IPRTN = 0 GO TO 9999 C C SCHEDULE FMSXX C 500 CALL EXEC(23+100000B,IFMSEQ,LOG,LOG,LOG,4,0,IRSTR,-INSTR) GO TO 8900 C C RELEASE FMSXX'S ID SEGMENT C (UNLESS NOT SET UP BY ME) C 510 IF (IRPD .EQ. 0) CALL IDRPD(IOPBF,IERR) GO TO 100 8900 WRITE (LOG,11200)(IOPBF(I),I=1,3) 11200 FORMAT (/"/DTSXX: ERROR SCHEDULING "3A2) CALL IDRPD(IOPBF,IERR) GO TO 100 9999 CALL PRTN(IPRTN) END END$  K U 09570-18653 1830 S 0122 &ISESN INPUT TO SESSION TABLE             H0101 ZASMB,R,L,C HED "ISESN" SUB TO SET THE SESSION NAME IN CORE 9-76 (DLB) *10-14 NAM ISESN,7 PRE-REL 9-13-76 (DLB) * NAM ISESN,7 PRE-REL 10-15-76 (DLB) * NAM ISESN,7 09570-16653 REV. A 761013 * NAM ISESN,7 09570-16653 REV. A 761110 NAM ISESN,7 PRE-REL 780515 (DLB) RTE-IV ENT ISESN EXT .ENTR,$LIBR,$LIBX EXT KYBRD,.XSA,.XLA,.XLB EXT TBLH#,TBLE# SPC 1 * *-------------------------------------------------------- * * RELOC. 09570-16653 * SOURCE 09570-18653 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- A EQU 0 B EQU 1 SPC 1 * PURPOSE: * THIS ROUTINE WILL PUT THE PASSED PARAMETERS INTO THE CORE * RESIDENT TABLE. IE 1) SESSION PROGRAM NAME, 2) LOGICAL UNIT * OF SESSION, 3) 5 PARAMETERS TO BE PASSED TO SESSION MONITOR * WHEN SCHEDULED BY PROMPT. * CALLED: * CALL ISESN(NAME,LU,IPRAM,IAUTHR,IERR) * WHERE: * NAME = PROGRAM NAME OF SESSION MONITOR (I.E. "FMG07") * LU = LOGICAL UNIT OF TERMINAL OF SESSION (I.E. 7) * IPRAM = FIVE WORD BUFFER OF SCHEDULING PARAMETERS * IAUTHR= AUTHORIZATION CODE (LEAST TWO BITS I.E. 0 TO 3) * WHERE 0 = "BR" AS ONLY COMMAND THAT CAN EFFECT RUNNING * PROGRAM, 1 = COMMA COUNT OF 0, 2= COMMA COUNT OF 1 & * 3 = NO RESTRICTION OF USE OF MTM COMMANDS. * IERR = RETURNED ERROR PARAMETER (ALSO IN A-REG) * ERRORS: * IERR = -14 >> NO MORE ROOM IN-CORE TABLE FOR PROGRAM NAME * IERR = -20 >> ILLEGAL LOGICAL UNIT FOR SESSION TERMINAL * IERR = 0 >> GOOD EXIT SPC 1 NAME NOP NAME OF SESSION MONITOR LU NOP LOGICAL UNIT OF SESSION TERMINAL PARAM NOP FIVE WORD SCHEDULING BUFFER AUTHR NOP AUTHORIZATION CODE IERR NOP RETURNED ERROR PARAMETER ISESN NOP ENTRY POINT JSB .ENTR DEF NAME JSB KYBRD CHECK IF LEGAL TERMINAL LUh? DEF *+2 DEF LU,I SSA CHECK IF OK? JMP ERR20 RETURN ERROR CLA STA TEMP1 ZERO TEMP1 JSB .XLA GO GET THE ADDRESS DEF TBLE#+0 OF THE END OF THE SESSION TABLE SZA,RSS CHECK IF IN SYSTEM? JMP ERR14 NO, EXIT WITH NO TABLE ENTRY STA TBLEA AND SAVE LOCALLY JSB .XLB GET THE ADDRESS DEF TBLH#+0 OF THE START SESSION TABLE SPC 1 * NOW FIND A TABLE ENTRY FOR NEW PROGENITOR SPC 1 JSB $LIBR NOW TURN OFF INTERRUPTS NOP MORE2 ADB O2 BUMP TO THE LOGICAL UNIT WORD JSB .XLA GET THE LU WORD DEF B,I AND O77 MASK DOWN TO LU SZA,RSS SAVE ADDRESS OF LAST BLANK ENTRY STB TEMP1 ADDRESS CPA LU,I EQUAL? JMP FOUND YES ADB O6 NO BUMP TO NEXT TABLE ENTRY CPB TBLEA CHECK IF END? JMP FNDMT YES, FIND EMPTY ENTRY JMP MORE2 NO, CONTINUE SPC 1 * NO MATCH, NOW CHECK A BLANK ENTRY SPC 1 FNDMT LDB TEMP1 CHECK ADDRESS OF TEMP1 ENTRY LDA DM14 GET ERROR NUMBER FOR NO MORE ENTRYS SZB,RSS CHECK IF A BLANK ENTRY JMP EXIT NO, RETURN FOUND ADB OM2 BACK UP B-REG TO START OF ENTRY LDA NAME,I GET THE NAME CHARS 1 & 2 JSB .XSA AND PUT IN CORE TABLE DEF B,I INB BUMP TO NEXT WORD IN TABLE ISZ NAME AND CHARS 3 & 4 IN PROGRAM NAME LDA NAME,I GET CHARS 3 & 4 JSB .XSA AND PUT DEF B,I INB STB TEMP3 SAVE ADDRESS OF 3RD WORD OF NAME ISZ NAME LDA NAME,I GET 5TH CHAR ALF,ALF POSITION TO LOW PART OF A LDB AUTHR,I GET AUTHORIZATION CODE RBR,RBR POSITION LEAST TWO BITS TO 14 & 15 RRL 2 PUT IN A-REG NEXT TO NAME(5) LSL 6 MAKE WAY FOR LU BITS IOR LU,I AND MERGE THEM IN JSB .XSAJ AND TUCK IN IN-CORE TABLE TEMP3 DEF * LDA OM5 SET UP COUNTER TO MOVE IN PARAMETERS STA TEMP2 SAVE AS COUNTER MORE3 LDA PARAM,I GET NEXT WORD ISZ PARAM BUMP TO NEXT PARAMETER ISZ TEMP3 BUMP TO NEXT DESTINATION PARAMETER JSB .XSA AND PUT DEF TEMP3,I ISZ TEMP2 BUMP COUNTER JMP MORE3 KEEP ON TRUCKING CLA RETURN DONE!!! EXIT JSB $LIBX TURN ON INTERRUPT SYSTEM DEF *+1 RETURN ADDRESS DEF EREXT SPC 1 ERR14 LDA DM14 RSS AND EXIT ERR20 LDA DM20 GET ERROR -20 EREXT STA IERR,I RETURN JMP ISESN,I ERROR IN A-REG TEMP1 NOP TEMP2 NOP TBLEA DEF * POINTER TO END OF SESSION TABLE O2 OCT 2 O6 OCT 6 O77 OCT 77 OM2 OCT -2 OM5 OCT -5 DM14 DEC -14 DM20 DEC -20 END g LT 09570-18654 1830 S 0122 &LOGON INIT. SESSION MONITOR             H0101 =ASMB,R,L,C HED "LOGON" AMD SESSION LOGON ROUTINE 9-76 (DLB) * NAM LOGON,2,50 09570-16654 REV. A 761110 * NAM LOGON,2,50 09570-16654 REV. B 761129 NAM LOGON,1,40 PRE-REL REV. D 780512 (DLB) RTE-IV * *-------------------------------------------------------- * * RELOC. 09570-16654 * SOURCE 09570-18654 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- EXT EXEC,CLAS% EXT KYBRD,ICLRW,.XLA A EQU 0 B EQU 1 SPC 1 * :RUIH,LOGON, TO OUTPUT LOGON MESSAGE SPC 1 LOGON NOP ENTRY JSB .XLA GET THE LOGICAL UNIT OF TERMINAL DEF B,I STA LU SAVE IOR O400 FORM LU WITH PRINT BIT STA RLU IOR O2400 STA CNWD1 SAVE UNFLUSH COMMAND JSB EXEC SWAP ONLY ME DEF *+3 DEF D22 DEF O2 JSB EXEC GET RID OF ANY STRING MEMORY NOW DEF *+5 DEF D14 DEF O1 DEF LENTH SCRATCH LOCATION DEF O1 ANY CONVIENENT LENGTH JSB KYBRD CHECK IF LEGAL KEYBOARD LOGICAL UNIT? DEF *+2 DEF LU SSA LEGAL? JMP EXIT NO, IGNORE THE REQUEST LDA CLASS CHECK IF ENTRY POINT EXISTS? SZA,RSS EXISTS? JMP ERR2 NO, EXIT RSS YES, FORCE TO DIRECT ADDRESS LDA A,I GET NEXT LEVEL RAL,CLE,SLA,ERA STRIP BIT 15 AND TEST JMP *-2 STA CLASS SAVE DIRECT ADDRESS SPC 1 JSB ICLRW GO DO A BUFFER UNFLUSH DEF *+4 DEF O3 CONTROL REQUEST DEF CLASS ADDRESS OF CLASS WORD IN SYSTEM MAP DEF CNWD1 SZA CHECK IF ANY ERRORS JMP ERR3 YES, IGNORE JSB ICLRW NOW OUTPUT A CR/LF DEF *+4 DEF O2 DEF CLASS DEF LU JSB ICLRW NOW OUTPUT THE PLEASE LOGON MESSAGE DEF *+7 U  DEF O2 DEF CLASS DEF LU DEF O0 DEF PLGON DEF PLLEN JSB ICLRW NOW DO THE CLASS READ DEF *+7 DEF O1 DEF CLASS DEF RLU DEF O0 LOGON FLAG >> OPT 1 = 0 DEF O0 DUMMY BUFFER ADDRESS DEF D20 INPUT 40 CHARACTERS MAX SZA CHECK IF ANY ERRORS? JMP ERR3 JSB EXEC NOW SCHEDULE "LSPNS" DEF *+3 DEF NA10 DEF LSPNS JMP ERR1 LSPNS MISSING EXIT JSB EXEC ALL OK, TERMINATE DEF *+4 DEF O6 DEF O0 DEF OM1 SERIAL RE-USABLE SPC 1 ERROR NOP ENTRY TO OUTPUT ERROR MESSAGE LDA ERROR,I GET MESSAGE LENGTH STA LENTH ISZ ERROR JSB EXEC USE STANDARD EXEC CALL DEF *+5 DEF O2 DEF LU DEF ERROR,I DEF LENTH JMP EXIT AND EXIT SPC 1 CNWD1 NOP LU NOP RLU NOP LENTH NOP SPC 1 PLLEN DEC 8 PLGON ASC 8,PLEASE LOG ON: _ PLEASE LOG ON: SPC 1 ERR1 JSB ERROR WRITE OUT LSPNS MISSING MESSAGE DEC 16 LSMIS ASC 16,PROGRAM LSPNS MISSING >> ABORT LSPNS EQU LSMIS+4 ERR2 JSB ERROR WRITE OUT CLAS% ENTRY MISSING DEC 15 ASC 15,CLAS% ENTRY MISSING >> ABORT SPC 1 ERR3 JSB ERROR WRITE OUT TOO LITTLE S.A.M. DEC 18 ASC 18,INSUFFICIENT SYSTEM MEMORY >> ABORT O400 OCT 400 O2400 OCT 2400 O0 OCT 0 O1 OCT 1 O2 OCT 2 O3 OCT 3 O6 OCT 6 D14 DEC 14 D20 DEC 20 D22 DEC 22 NA10 ABS 10+100000B OM1 OCT -1 CLASS DEF CLAS%+0 END LOGON M  MT 09570-18655 1830 S 0122 &LOGOF INIT. SES. TERMINATION             H0101 )ASMB,R,L,C HED "LOGOF" PROGRAM LOGOF PROCEDURE 10-76 (DLB) * NAM LOGOF,3,99 09570-16655 REV. A 761013 * NAM LOGOF,2,50 09570-16655 REV. A 761110 NAM LOGOF,1,40 PRE-REL 780515 (DLB) (RTE-IV) 15:40 EXT EXEC,CLAS#,$LIBR,$LIBX EXT IDSGA,GTLU#,.XLA EXT GTSTB,ICLRW A EQU 0 B EQU 1 * SPC 1 *-------------------------------------------------------- * * RELOC. 09570-16655 * SOURCE 09570-18655 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- SPC 1 * TEST PROGRAM: *FTN,L * PROGRAM TEST * DIMENSION LOGOF(3) * DATA LOGOF/2HLO,2HGO,2HF / * LU = ITMLU(IBATCH) * WRITE (LU,100) * 100 FORMAT ("THIS PROGRAM IS GOING TO DO A LOGOF") * CALL EXEC (23+100000B,LOGOF) * GO TO 9999 * 9998 STOP 11 * 9999 END * END$ SPC 1 LOGOF NOP ENTRY WITH NO PARAMETERS, NO RETURN JSB EXEC DEF *+3 DEF D22 DEF O2 JSB GTLU# FIND OUT THE LOGICAL UNIT OF TERMINAL STA LU SZA,RSS CHECK IF FOUND? JMP EXIT NO, JUST TERMINATE LDA CLASS GET CLASS NUMBER ADDRESS SZA,RSS CHECK IF ONE? JMP EXIT NO, SKIP RSS NOW MAKE A DIRECT ADDRESS LDA A,I GET NEXT LEVEL RAL,CLE,SLA,ERA JMP *-2 STA CLASS JSB GTSTB GO FIND IF THERE IS A SESSION TABLE DEF *+4 ENTRY? DEF LU DEF PNAME DEF SYSAD ADDRESS OF ENTRY IN SESSION TABLE SSA CHECK IF TERMINAL IS BUSY? JMP EXIT YES, IGNORE REQUEST JSB IDSGA FIND OUT IF PROGENITOR EXISTS DEF *+2 DEF PNAME NAME OF PROGENITOR SZA,RSS JMP EXIT NO, JUST CALL EXEC (6 LDB SYSAD CHECK IF TABLE ENTRY EXISTS CCE,SZB,RSS JMP EXIT NO, SKIP LOGOF JSB $LIBR NOW SET THE DISA  BLE TERMINAL BIT NOP JSB .XLA DEF B,I RAL,ERA SET BIT 15 JSB .XLA DEF B,I JSB $LIBX DEF *+1 DEF *+1 SPC 1 JSB ICLRW DEF *+7 DEF O0 SEND "LOGOF" TO R$PN$ DEF CLASS DEF LU DEF SYSAD ENTRY INTO THE SESSION TABLE DEF LOGO DEF OM4 FOUR CHARACTERS JSB EXEC SCHEDULE R$PN$ W/O WAIT DEF *+3 DEF D10 DEF R$PN$ SPC 1 EXIT JSB EXEC TERMINATE DEF *+4 DEF O6 & DEF O0 SERIAL RE-USABLE DEF OM1 SPC 1 LU NOP O0 OCT 0 OM1 OCT -1 OM4 OCT -4 O2 OCT 2 O6 DEC 6 D22 DEC 22 D10 DEC 10 R$PN$ ASC 3,R$PN$ LOGO ASC 2,LOGOF CLASS DEF CLAS#+0 SYSAD NOP SYSTEM MAP ADDRESS OF SESSION TABLE ENTRY PNAME BSS 8 ORR END LOGOF 7  NU 09570-18657 1830 S 0122 &LSPNS LOGON RESPONSE PROCESSOR             H0101 dFTN,L PROGRAM LSPNS(3,40),09570-16657 REV. 1826 780628 C C-------------------------------------------------------- C C RELOC. 09570-16657 C SOURCE 09570-18657 C C D. L. BASKINS 13 OCT 76 REV. A C C-------------------------------------------------------- C C C PROGRAM SCHEDULED BY LOGON TO SET UP THE SESSION MONITOR C DIMENSION IP(16),NAME(68),LOGMS(28) DIMENSION IPROG(10),LOGON(3),IDRTR(3),NUNAM(3) C C 6000 WORD ARRAY = ABOUT A 48 BLOCK MAX /IDNAM FILE SIZE C DIMENSION NAMBF(6000),IDCB(528),IDNAM(3) DIMENSION MES0(26),MES1(22),MES2(25),MES3(22),MES4(23),MES5(7) C C /IDNAM IS THE FILE NAME ON DISC LU=2 FOR LOGON ID. C DATA IDNAM/2H/I,2HDN,2HAM/,IDRTR/2HD.,2HRT,2HR / DATA IRLN/67/,IPR/74000B/,MISSFL/1/,LOGON/2HLO,2HGO,2HN / DATA ICLADR/0/ DATA LOGMS/2HLO,2HGO,2HN ,2HT=,2H01,2H / DATA MES0/2HUN,2HAB,2HLE,2H T,2HO ,2HOP,2HEN,2H /,2HID, 12HNA,2HM ,2HFI,2HLE,2H >,2H> ,2HTR,2HY ,2HYO,2HUR,2H L, 12HOG,2HON,2H S,2HTR,2HIN,2HG / DATA MES1/2HRE,2HAD,2HF ,2HER,2HRO,2HR ,2HIN,2H /,2HID, 12HNA,2HM ,2H>>,2H I,2HGN,2HOR,2HE ,2HRE,2HST,2H O,2HF , 12HFI,2HLE/ DATA MES2/2HFM,2HGR,2H E,2HRR,2H: ,2H- ,2H15,2H >,2H> , 12HUN,2HAB,2HLE,2H T,2HO ,2HCR,2HEA,2HTE,2H P,2HRO,2HGR, 12HAM,2H ,2HXX,2HXX,2HXX/ DATA MES3/2HTO,2HO ,2HMA,2HNY,2H N,2HAM,2HES,2H I,2HN , 12H/I,2HDN,2HAM,2H F,2HIL,2HE ,2H>>,2H I,2HGN,2HOR,2HE , 12HRE,2HST/ DATA MES4/2HSE,2HSS,2HIO,2HN ,2HIN,2HCO,2HRE,2H T,2HAB, 12HLE,2H F,2HUL,2HL ,2H>>,2H R,2HE-,2HBO,2HOT,2H O,2HR , 12HRE,2H-G,2HEN/ DATA MES5/2HIL,2HLE,2HGA,2HL ,2HAC,2HCE,2HSS/ C IKVT(IDMY) = 2H00+(IDMY/10*256)+IDMY-(IDMY/10*10) C C GET THE TERMINAL LOGICAL UNIT AND CLASS NUMBER ADDRESS FROM LOGON C IF(IGTSM(5HCLAS%,ICLADR).EQ.0) GO TO 1000 ICLASS = IAND(KGET(ICLADR),17777B) C C IGNORE IF CLASS NUMBER HAS NOT BEEN ALLOCATED C n IF (ICLASS.EQ.0) GO TO 1000 C C JUST SWAP ME >> NOT THE WHOLE PARTITION C CALL EXEC (22,2) C C C IF SECURITY IS NEEDED, THE /IDNAM FILE MUST HAVE -(MSC) OF SYSTEM C ITRK = KGET(1756B) - 1 CALL EXEC (1,2+IPR,IDCB,128,ITRK,0) MSC = -IDCB(127) C C CHECK IF LOGON OR LOGOF OR DONE C 1 IWAIT = 120000B 2 IFLAG = -1 CALL EXEC (21,ICLASS+IWAIT,NAME,IRLN,IFLAG,LU,IRCOD) CALL ABREG(IA,IB) IF (IA.EQ.-1) GO TO 1000 C C IF LOGOF AND CLASS IS MATURE (ALWAYS?), DO IT. C IF (IA.GE.0.AND.IFLAG.GT.0.AND.IRCOD.EQ.1) GO TO 3000 C C PENDING CLASSES, SO SET FLAG TO WAIT FOR THEM TO MATURE. C IWAIT = 20000B C C CHECK IF ALREADY HAVE FILES C IF (MISSFL.EQ.0) GO TO 3 C C THE /IDNAM FILE MUST BE ON THE SYSTEM DISC OR SECURITY IS NOT POSSIBLE C CALL LOPEN(IDCB,IERR,IDNAM,1,MSC,-2,528) IF (IERR.LT.0) GO TO 300 C C READ ALL ID'S OUT OF THE /IDNAM FILE INTO CORE C IWRDNM = 1 100 NAMBF(IWRDNM) = 0 IF (IWRDNM+IRLN+1.GT.6000) GO TO 160 CALL READF(IDCB,IERR,NAMBF(IWRDNM+1),IRLN,LEN) IF (IERR.GE.0) GO TO 125 CALL REIO(2,LU,MES1,22) LEN = -1 125 IF (LEN) 250,100,150 C C IF RECORD STARTS WITH '*' THEN IGNORE THE RECORD C 150 IF (IAND(NAMBF(IWRDNM+1),177400B).EQ.25000B) GO TO 100 NAMBF(IWRDNM) = LEN IWRDNM = IWRDNM + LEN + 1 GO TO 100 160 CALL REIO(2,LU,MES3,22) 250 MISSFL = 0 GO TO 350 300 MISSFL = 1 350 CALL LCLOS (IDCB) C C CHECK IF THE CLASS IS MATURE YET. C 3 IF (IA.LT.0) GO TO 2 IF (IRCOD.NE.1) GO TO 1 C C YES, CHECK THE LENGTH OF CALLERS BUFFER C IF (IB.EQ.0) GO TO 800 IF (IB.GT.IRLN) IB = IRLN DO 400 I = IB+1,IRLN 400 NAME(I) = 2H IF (MISSFL.EQ.0) GO TO 485 C C /IDNAM FILE MISSING, OUTPUT ERROR AND USE INPUT STRING AS LOGON STRING C CALL REIO(2,LU,MES0,26) DO 475 I = 1,IB NAMBF(I+1) = NAME(I)  475 NAMBF(I+IB+2) = NAME(I) NAMBF = IB NAMBF(IB+2) = IB NAMBF(IB+IB+3) = 0 C C NOW LOOK FOR A MATCHING STRING WITH /IDNAM FILE AND USER LOGON STRING C 485 IWRDNM = 1 490 LEN = NAMBF(IWRDNM) IF (LEN.LE.0) GO TO 850 DO 500 I = 1,LEN IF (NAME(I).NE.NAMBF(IWRDNM+I)) GO TO 530 500 CONTINUE DO 510 I = LEN+1,IRLN IF (NAME(I).NE.2H ) GO TO 530 510 CONTINUE GO TO 520 C C TRY NEXT ENTRY IN THE /IDNAM FILE C 530 INXRLN = NAMBF(IWRDNM+LEN+1) C C CHECK IF POSSIBLE AN ODD NUMBER OF RECORDS IN FILE? C IF (INXRLN.LE.0) GO TO 850 C C BUMP PAST THE PROGENITORS NAME TO THE NEXT IDNAM RECORD C IWRDNM = IWRDNM + LEN + INXRLN + 2 GO TO 490 C C MATCH FOUND, NOW PARSE THE NEXT RECORD TO SETUP CORE TABLE OF SESSION C 520 ISTRC = 1 INDEX = IWRDNM + LEN + 2 LENTH = NAMBF(INDEX-1) * 2 CALL NAMR(IPROG,NAMBF(INDEX),LENTH,ISTRC) DO 550 I = 1,6 IFRST = ISTRC CALL NAMR(IP(I),NAMBF(INDEX),LENTH,ISTRC) C C REPLACE ANY '0G' SUBPARAMETERS BY THE LOGICAL UNIT OF TERMINAL C IPTYPE = IP(I+3) IF (IPTYPE.EQ.3.AND.IP(I).EQ.2H0G) IP(I) = LU IF (I.EQ.1.AND.IPTYPE.EQ.0) IP(I) = LU 550 CONTINUE C C GET OPTIONAL STRING BUFFER TO PASS PROGENITOR PROGRAM 1ST TIME C IF (IPTYPE.EQ.0) GO TO 700 C C LEFT JUSTIFY THE OPTIONAL STRING BUFFER INTO "NAME" C IPTYPE = 0 ICNT = LENTH - IFRST + 1 IF (ICNT.LE.0) GO TO 700 IPTYPE = (ICNT+1)/2 DO 600 K = 1,ICNT KK = (K-1)/2 + 1 IOFF = (IFRST+K)/2 KKK = INDEX + IOFF - 1 ICHAR = IAND(NAMBF(KKK),377B) IF (IOFF+IOFF.EQ.IFRST+K) ICHAR = IXOR(NAMBF(KKK),ICHAR)/256 IF (KK+KK-K) 610,620,610 610 NAME(KK) = ICHAR*256 + 40B GO TO 600 620 NAME(KK) = IAND(NAME(KK),77400B) + ICHAR 600 CONTINUE C C NOW FORM THE ALTERNATE NAME FOR THE SESSION I.E. FMGR = FMG07 (LU=7) C 700 NUNAM = IPROG NUA NAM(2) = IPROG(2) IF (IAND(NUNAM,377B).EQ.40B) NUNAM = IAND(NUNAM,177400B)+56B IF (IAND(NUNAM(2),177400B).EQ.20000B) NUNAM(2) = 2H. NUNAM(2) = IAND(NUNAM(2),177400B) + (LU/10+60B) NUNAM(3) = (MOD(LU,10) + 60B) * 256 + 40B C C NOW TRY FOR THE GENERIC NAME ALREADY IN CORE C CALL IDDUP(IPROG,NUNAM,IERR) C C SKIP THE :RP,PROG IF NAME ALREADY EXISTS IN CORE. C IF (IERR.EQ.23.OR.IERR.EQ.0) GO TO 750 CALL LOPEN(IDCB,IERR,IPROG,1,0,-2) IF (IERR.EQ.-6.AND.KGET(1760B).EQ.0) GO TO 760 IF (IERR.GE.0) GO TO 725 CALL LOPEN(IDCB,IERR,IPROG,1,0,-3) IF (IERR.LT.0) GO TO 760 725 CALL IDRPL(IDCB,IERR,NUNAM) CALL LCLOS(IDCB) IF (IERR.EQ.0.OR.IERR.EQ.23) GO TO 750 C C UNABLE TO CREATE SESSION PROGRAM ID >> WRITE ERROR MESSAGE C 760 IERRR = IABS(IERR) MES2(7) = IKVT(IERRR) MES2(6) = 2H+ IF (IERR.LT.0) MES2(6) = 2H- MES2(23) = NUNAM MES2(24) = NUNAM(2) MES2(25) = NUNAM(3) CALL REIO(2,LU,MES2,25) GO TO 800 C C NOW SET THE SESSION PROGRAM NAME AND 5 P PARAMETERS IN CORE TABLE C 750 CALL ISESN(NUNAM,LU,IP,IP(5),IERR) IF (IERR.EQ.0) GO TO 775 CALL REIO(2,LU,MES4,23) C C FORM THE LOGON MESSAGE C 775 IASLU = IKVT(LU) CALL TODAY (LOGMS(7)) LOGMS(5) = IASLU LOGMS(3) = 2HN C C DO A BUFFER UNFLUSH SO THAT THE DRIVER CANNOT EAT LOGON MESSAGE C CALL ICLRW(3,ICLADR,LU+2400B) C C WRITE OUT THE LOGON MESSAGE C CALL ICLRW(2,ICLADR,LU,0,LOGMS,-37) C C SCHEDULE THE PROGENITOR WITH THE OPTIONAL STRING BUFFER C CALL EXEC(10,NUNAM,IP,IP(2),IP(3),IP(4),IP(5),NAME,IPTYPE) C C NOW PUT IN THE SESSION STUFF INTO THE IDSEGMENT C CALL MKIDS(NUNAM,LU) C C CHECK IF TERMINAL ENABLE IS REQUESTED FROM THE /IDNAM FILE C IF (IP(5)) 780,790 C C NOW DO A TERMINAL DISABLE C 780 CALL ICLRW(3,ICLADR,LU+2100B) GO TO 1 C C SET UP A NULL SESSION ANDY ENABLE TERMINAL FOR ATTENTION INTO LOGON C 800 CALL ISESN(0D0,LU,IP,0,IERR) C C DO A TERMINAL ENABLE REQUEST C 790 CALL ICLRW(3,ICLADR,LU+2000B) GO TO 1 C C WRITE OUT THE "ILLEGAL ACCESS" MESSAGE AND START ALL OVER AGAIN C 850 CALL ICLRW(2,ICLADR,LU,0,MES5,7) GO TO 800 C C NOW DO THE LOGOF THING (MORE WORK HERE IS DESERVED) C NOTE: THE SESSION TABLE SHOULD HAVE AN ILLEGAL NAME C IN IT FROM R$PN$, AND THE DISABLE TERMINAL BIT SHOULD C BE SET SO THAT "LOGON" WILL SCHEDULE "LSPNS" TO C RE-ENABLE THE TERMINAL WHEN LOGON IS ACCOMPLISHED. C 3000 CALL TODAY(LOGMS(7)) IASLU = IKVT(LU) LOGMS(5) = IASLU LOGMS(3) = 2HF C C DO A BUFFER UNFLUSH COMMAND TO THE DRIVER C CALL ICLRW(3,ICLADR,LU+2400B) C C NOW WRITE A CR/LF TO GET THE CURSER TO LEFT SIDE C CALL ICLRW(2,ICLADR,LU) C C NOW WRITE THE LOGOF MESSAGE TO THE TERMINAL C CALL ICLRW(2,ICLADR,LU,0,LOGMS,-37) C C NOW DO A BUFFER FLUSH TO CLEAN OUT ANY RESIDUAL MESSAGES C CALL ICLRW(3,ICLADR,LU+2300B) IP(5) = 0 C C NOW DISMOUNT ALL SESSION CARTRIDGES C ISES = LU * 4000B MYID = KGET (1717B) C C CALL D.RTR TO DISMOUNT ALL SESSION CARTRIDGES TO THIS TERMINAL C CALL EXEC (23,IDRTR,MYID,0,ISES,0,10) C C NOW CLEAN UP ALL FILES LEFT OPEN ON GLOBAL CRN'S C BY DOING AN UNQUALIFIED SEARCH ON ALL GLOBAL CRN'S C CALL LOPEN(IDCB,IERR,6H!)"(#') C C NOW OUTPUT THE LOGON MESSAGE C CALL EXEC (23,LOGON,LU) GO TO 1 1000 END END$  O Y 09570-18658 1830 S 0222 &OPGET OPERATOR INPUT ROUTINE             H0102 ASMB,R,L,C HED "OPGET" FMGR UTILITY READ ROUTINE 1-77 (DLB) NAM OPGET,3,99 PRE-REL 770113 (DLB) EXT REIO,EXEC,NAMR,INAMR EXT PRTN,.DFER,ITMLU SPC 1 A EQU 0 B EQU 1 SPC 1 * *-------------------------------------------------------- * * RELOC. 09570-16658 * SOURCE 09570-18658 * * DOUGLAS L. BASKINS 13 OCT 76 REV. AC * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY,1976. * ALL RIGHTS RESERVED.THE INFORMATION CONTAINED ON * THIS MEDIUM MAY BE USED WITH ONLY ONE COMPUTER * AT A TIME.IT SHALL NOT OTHERWISE BE RECORDED, * TRANSMITTED,OR STORED IN A RETRIEVAL SYSTEM. * COPYING OR OTHER REPRODUCTION WITHOUT PRIOR WRITTEN * CONSENT OF HEWLETT-PACKARD COMPANY IS PROHIBITED, * EXCEPT THAT ONE COPY MAY BE MADE AND RETAINED FOR ARCHIVE * PURPOSES ONLY. * *------------------------------------------------------- * * TYPICAL CALLING SEQUENCES: * * :RU,OPGET,1ST PARM,2ND PARM,3RD PARM,4TH PARM ETC. * * WHERE: * * 1ST PARM = LOGICAL UNIT OF TERMINAL (NULL DEFAULT >> 0G) * 2ND PARM = FIRST PART OF OPTIONAL OUTPUT MESSAGE * 3ND-16TH PARM = CONTINUATION OF OPTIONAL OUTPUT MESSAGE -OR- * IF ,:XX, WHERE XX IS ASCII, THEN THIS BEGINS A * RETURN STRING THAT WILL BE EXECUTED BY THE FMGR PROGRAM. * IF ANY PARAMETER BEGINS WITH A 2 CHARACTOR KEY FIELD * 1V 2V THRU 9V, THEN OPGET WILL REPLACE THIS WITH THE * PARAMETERS INPUT BY THE OPERATOR IN ACCENDING "?V" ORDER. * IF ANY CHARACTORS FOLLOW THE KEY FIELD, THEN THIS WILL * BE OUTPUT AS PART OF THE PROMPT MESSAGE WITH COMMA * DELIMETERS. IF A "?V" PARAMETER IS SPECIFIED WITH A MESSAGE * STRING MORE THAN ONCE, ONLY THE 1ST MESSAGE STRING IS OUTPUT. * IF A "?V" FIELD WITH A MESSAGE IS IN THE "NAME" PART OF A * "NAMR" FIELD, THEN THE WHOLE "NAMR" FIELD IS OUTPUT AS PART *  OF THE MESSAGE. IF THE "?V" FIELD IS IN THE SUBPARAMETER * PART OF THE "NAMR" PARAMETER, THEN JUST THE MESSAGE IS OUTPUT. * * NONSENSE EXAMPLES: RUN STRING OUTPUT MESSAGE * * ,1VTHIS IS A MESSAGE::-2, ,THIS IS A MESSAGE::-2, * ,2VTHIS:3V:ABCDEF, ,THIS:3V:ABCDEF, * ,FILE:2VSECURITY:1VCRN, ,CRN,SECURITY, * ,1VABC,1VTHIS IS ILLEGAL, ,ABC, * * * REAL LIVE EXAMPLES: (LOOK AT THEM CLOSELY) * * 1) (SIMPLE) * :RU,OPGET,0G,DO YOU WANT A LISTING? _, * :IF,1P,EQ,22853,2 * :IF,1P,EQ,20047,1 * :IF,1,EQ,1,-4 * * * 2) (INTERESTING) * :RU,OPGET,0G,INPUT UP TO 4 PARAMETERS,:RU,XXX,1V,6,4V,2V,3V * INPUT UP TO 4 PARAMETERS * ABCDEF:RT:-2,,D * ":RU,XXX,ABCDEF:RT:-2,6,,,D" WILL BE EXECUTED * * 3) (WILD!) * :SE,1VLIST,-12 * :RU,OPGET,,,:RU,COMPL,,2VSOURCE:RT:2G,1G,-,3VC.S?,4V,5V,6V,7V * LIST,SOURCE:RT:-12,C.S? * 6,&DOUG:DB,ASMB * :RU,COMPL,,&DOUG:DB:-12,6,-,ASMB * * * NOTES: * * A NULL PARAMETER BEFORE THE ,:RU WILL FORCE ECHO OF COMMAND STRING. * (OTHER ^ THAN THE 3RD) * SUBPARAMETERS MAY BE OVERWRITTEN IF AN "?V" IS IN PARAMETER FIELD. * "?V" MAY BE A 1V 2V 3V 4V 5V 6V 7V 8V 9V >> IMPLYING UP TO 9 INPUTS. * ONLY THE 1ST SUB-MESSAGE PER ?V PARAMETER IS WRITTEN OUT AS PROMPT. SPC 1 DFWR1 DEF WRKBF ADDRESS OF WORK BUFFER DFENW DEF WRKBF+130 ADDRESS OF END+1 OF WORK BUFFER WRKBF BSS 260 MPY BY 2 FOR LINKED LISTS DFADB DEF ADSBF PARAMETER CHAR COUNT PARAM BUFFER ADSBF BSS 14 CHARACTOR NUMBER OF START OF ALL INPUT STRING DFHLL DEF LINKL BUFFER FOR HEAD OF "?V" LISTS LINKL BSS 9 PRMBF BSS 15 SCRATCH PARSE BUFFER INBUF BSS 40 RUN STRING INPUT BUFFER OTBUF BSS 40 MESSAGE OUTPUT BUFFER QUSTM ASC 1,?_ QUESTION MARK WITHOUT CR/LF O1 OCT 1 O2 OCT 2 O3 OCT 3 O4 OCT 4 O6 OCT 6 D10 DEC 10 O14 OCT 14 D13 DEC 13 D14 DEC 14 O17 OCT 17 D22 DEC 22 O40 OCT 40 COMMA OCT 54 COLON OCT 72 ASC0V ASC 1,0V ASC9V ASC 1,9V D80 DEC 80 D130 DEC 130 OM2 OCT -2 OM3 OCT -3 OM4 OCT -4 OM6 OCT -6 OM7 OCT -7 DM9 DEC -9 DM80 DEC -80 DM130 DEC -130 FROMA NOP TOADD NOP TEMP1 NOP TEMP2 NOP TEMP3 NOP TEMP5 NOP TEMP6 NOP SPC 1 OTLEN NOP LENGTH OF OUTPUT MESSAGE (CHARS) INLEN NOP INPUT BUFFER LENGTHS (STRING & OPERATORS) LU NOP TERMINAL LU PLU NOP TERMINAL LU WITH PRINT BIT NCOTL NOP SAME EXCEPT EXCLUSIVE OF TRAILING COMMAS & SPACES PMCNT NOP NUMBER OF COMMAS IN FMGR PASSED COMMAND ECHFL ABS 1 RETURNED FMGR COMMAND STRING ECHO FLAG STRCR ABS 1 1ST CHARACTOR NUMBER IN NEXT PARAMETER PTADD NOP ADDRESS OF CURRENT PARAMETER TYPE WORD IN WORK BUFFER O377 OCT 377 O400 OCT 400 SPC 1 START NOP ENTRY FROM EXEC JSB ITMLU GET THE LOGICAL UNIT OF TERMINAL DEF *+1 STA LU IOR O400 STA PLU SAVE LU WITH PRINT BIT SPC 1 JSB EXEC SWAP ONLY ME DEF *+3 DEF D22 DEF O2 CCA CALCULATE A CHARACTOR ADDRESS INDEX ADA DFINB INTO THE INPUT BUFFER ADA DFINB STA DFINM FOR LATER USE LDA DOTBF GET MESSAGE BUFFER ADDRESS RAL MPY BY 2 STA OTCRD SAVE FOR PUTCR ROUTINE CLA NOW INITIALIZE SOME GLOBAL POINTER AND COUNTERS STA OTLEN SET THE LENGTH OF OUTPUT BUFFER MESSAGE STA NCOTL OUTPUT LEN WITHOUT TRAILING COMMA'S AND SPACES STA PMCNT SET THE NUMBER OF FMGR PARAMETERS CLA,INA STA ECHFL SET PREVIOUS PARAMETER NOT NULL FLAG STA STRCR SET THE NEXT CHARACTOR NUMBER OF INPUT BUFFER  SPC 1 JSB EXEC GET THE PASSED STRING BUFFER DEF *+5 DEF D14 DEF O1 READ DFINB DEF INBUF DEF DM80 80 CHARS MAX STB INLEN SAVE # CHARS IN INPUT STRING SZB,RSS CHECK IF ONE PASSED? JMP CONTE NO, DO THE NULL OUTPUT WITH "?" LDA OM3 SPACE PAST FIRST 3 PARMS STA TEMP1 LDB DFPRM GET ADDRESS OF A SCRTCH 10 WORD BUFFER AGIN1 JSB PARSE PARSE THE NEXT PARAMETER JMP CONTE OUT OF DATA, NULL >> DO "?" THING ISZ TEMP1 DONE ? JMP AGIN1 NO, SKIP NEXT PARAMETER SPC 1 * NOW PARSE TO FIND A PARAMETER THAT IS THE BEGINNING OF A * COMMAND/RETURN STRING BUFFER. (,:XX >> WHERE XX IS ASCII) * IF THE PREVIOUS PARAMETER TO THE ",:XX" WAS NULL, THEN THE ECHO * (NULL) FLAG IS SET. ANYTHING NOT NULL BEFORE THE BEGINNING OF * THE RETURN STRING BUFFER IS PUT INTO THE MESSAGE BUFFER (AFTER * THE 3RD PASSED PARAMETER.) SPC 1 AGIN2 LDA STRCR GET THE STARTING CHARACTOR NUMBER STA TEMP1 SAVE STA DFADB,I SAVE ENDING CHARACTOR NUMBER+1 LDB DFWR1 GET ADDRESS OF WORK BUFFER JSB PARSE PARSE IT JMP CONTX NONE, LEFT, MOVE BYTES TO OUTPUT BUFFER LDA ECHFL GET PREVIOUS PARAMETER TYPE CODE CLE,SZA LEAVE E=1 IF PREVIOUS PARAMETER WAS # 0 CCE LDA WRKBF+3 GET THE TYPE WORD FROM PARSE OUTPUT BUFFER STA ECHFL SET OR CLEAR LEADING NULL BUFFER FLAG SZA,RSS NULL PARAMETER? JMP AGIN2 YES, SKIP IT AND O17 MASK TO LEAST 4 BITS CPA O14 POSSIBLE FMGR COMMAND? JMP CONTD YES, MOVE BYTES TO OUTPUT BUFFER AGIN3 LDA STRCR NO, MOVE UP THE END CHARACTOR FOR LATER MOVE STA DFADB,I SET 1ST CHARACTOR # OF COMMAND BUFFER LDB DFWR1 GET ADDRESS OF WORK BUFFER JSB PARSE GO PARSE NEXT PARAMETER JMP CONTX NONE LEFT, MOVE BYTES TO OUTPUT BUFFER LDA ECHFL ^V GET LEADING NULL FLAG CLE,SZA AND PUT IN E-REG CCE LDA WRKBF+3 STA ECHFL UPDATE LEADING NULL FLAG AND O17 CHECK IF A POSSIBLE FMGR COMMAND ? CPA O14 BEGINNING OF FMGR COMMAND BUFFER CONTD CLA,RSS YES, E-REG = LEADING NULL FLAG JMP AGIN3 NO, MORE MESSAGE BUFFER ELA MAKE UP THE ECHO FLAG STA ECHFL SET OR CLEAR ECHO RETURN STRING FLAG ISZ PMCNT SET THE NUMBER OF FMGR PARMS PASSED WORD SPC 1 * NOW MOVE MESSAGE STRING TO OUTPUT BUFFER SPC 1 CONTX LDB TEMP1 GET STARTING CHARACTOR NUMBER ADB DFINM CALCULATE START CHARACTOR ADDRESS LDA DFADB,I GET LAST+1 OR 2 CHARACTOR NUMBER ADA DFINM CALCULATE CHARACTOR ADDRESS STA TEMP1 SAVE AS TERMINATOR ADDRESS AGIN4 CPB TEMP1 CHECK IF DONE? JMP CONTU YES, CHECK IF TRAILING COMMA NEEDED? JSB GETCR GET THE NEXT CHARACTOR JSB PUTCR AND PUT IN MESSAGE BUFFER JMP AGIN4 NO, GET NEXT CHARACTOR SPC 1 CONTU LDA PMCNT CHECK IF FMGR COMMAND IN STRING? SZA,RSS JMP CONTE NO, SKIP THAT WORK LDA DFADB GET ADDRESS OF CHARACTOR BUFFER (14 WORD) STA TEMP1 SAVE LDB DFWR1 GET ADDRESS OF PARSED WORKING BUFFER AGIN5 LDA STRCR GET START CHARACTOR NUMBER OF ISZ TEMP1 BUMP TO NEXT PARAMETER IN WORK BUFFER STA TEMP1,I PRAMETER BUFFER & SAVE ADB D10 BUMP TO NEXT PARAMETER IN WORK BUFFER CPB DFENW CHECK IF END OF WORK BUFFER? JMP CONT3 YES, JSB PARSE PARSE THE NEXT PARAMETER JMP CONT3 NO MORE CONTINUE ISZ PMCNT PARAMETER PASSED, COUNT IT JMP AGIN5 NO, PARSE NEXT PARAMETER SPC 1 * NOW MAKE 9 PASSES OF WORK BUFFER TO FIND ALL "1V" THUR "9V" * PARAMETER VALUE DEFINITION OF PARAMETER REQUIRED FROM INPUT * STRING. MAKE 9 LINKED LISTS FOR 1V THRU 9V IVLST BUFFER SPC 1 LI*STP NOP CURRENT LIST TAIL ADDRESS NEXTP NOP ADDRESS OF NEXT PARSE BUFFER IN WORK BUFFER PRM?V NOP CURRENT ASCII "?V" PARAMETER PRMNM NOP CURRENT PASSED PARAMETER NUMBER PTYPE NOP CURRENT PARAMETER TYPE WORD CONT3 LDA DFHLL GET ADDRESS OF HEAD OF 1V LIST STA TEMP3 SAVE AS ADDRESS OF HEAD POINTER LDA ASC0V INITIALIZE THE "?V" PARAMETER TO 1V STA PRM?V PRESET THE ?V PARAMETER WORD SPC 1 * BUMP THE ?V PARAMETER AND RE-SCAN THE WORK BUFFER SPC 1 AGIN6 CLA CLEAR MOVED MESSAGE FLAG STA MESFL TELL MVMES TO AGAIN MOVE MESSAGES LDA TEMP3 GET LIST HEAD ADDRESS STA LISTP SAVE FOR LIST CONSTRUCTION TAIL ADDRESS ISZ TEMP3 BUMP TO NEW LIST HEAD ADDRESS LDA PRM?V BUMP THE "?V" PARAMETER CPA ASC9V CHECK IF DONE? JMP CONTE YES, GO OUTPUT MESSAGE TO OPERATOR ADA O400 I.E. 1V TO 2V STA PRM?V SAVE CURRENT 1V THRU 9V IN ASCII LDB DFWR1 GET THE WORK BUFFER ADDRESS CLA INITIALIZE PARAMETER NUMBER COUNTER AGIN7 CPA PMCNT CHECK IF DONE? JMP AGIN6 YES, DO NEXT "?V" PARAMETER STA PRMNM SAVE PARAMETER NUMBER (0-12) LDA B,I GET 1ST 2 CHARS OF MAIN PARAMETER ADB D10 BUMP TO ADDRESS OF NEXT MAIN PARAMETER STB NEXTP SAVE THE ADDRESS AS A TERMINATOR ADB OM7 BACK UP TO PTYPE & SET E-REG STB PTADD SAVE ADDRESS OF PTYPE CPA PRM?V DOES THE "?V" TYPE MATCH? CLE YES, SET FLAG TO MARK ?V MATCH LDA B,I CHECK IF ASCII PARAMETER RAR SEZ,RSS MATCH? SSA,SLA,RSS ASCII PARAMETER? JMP CONTN NO, SKIP CLEAR OF 3 WORDS ADB OM3 SET B=1ST WORD CLA STA B,I ZERO 1ST WORD INB STA B,I ZERO 2ND WORD INB STA B,I ZERO 3RD WORD CLE,INB POINT TO TͼYPE WORD & FLAG AS MATCH LDA B,I GET PARAMETER TYPE WORD RAR POSITION JMP CONTN CONTINUE SPC 1 AGIN8 LDA B,I GET NEXT PARAMETER CPA PRM?V CHECK IF "?V" PARAMETER CLE YES, CHECK IF IT IS ASCII LDA PTYPE GET NEXT TYPE BITS RAR,RAR POSITION CONTN STA PTYPE SAVE TYPE CODE WORD SEZ,RSS E=1 IF NO MATCH WITH "?V" SSA,SLA,RSS CHECK IF ASCII PARAMETER? JMP NVPRM NO, CONTINUE ARS,ALR STRIP OF TYPE BITS STA PTYPE AND PUT BACK CLA AND CLEAR THE PARAMETER STA B,I LDA PRMNM GET PARAMETER NUMBER STB TEMP6 SAVE POINTER INTO WORK BUFFER CMB,INB CALCULATE THE COLON NUMBER 0 - 6 ADB NEXTP CALCULATE COLON NUMBER 0 TO -6 ADB OM7 AND CALL THE MESSAGE ROUTINE JSB MVMES PUT OPTIONAL MESSAGE IN OUTPUT BUFFER LDB TEMP6 GET THE WORK BUFFER POINTER ADB D130 BUMP INTO THE LIST BUFFER STB LISTP,I ADD TO LINKED LIST STB LISTP AND SAVE NEW LAST ELEMENT ADDRESS LDB TEMP6 RESTORE THE WORK BUFFER ADDRESS NVPRM CCE,INB BUMP TO NEXT PARAMETER IN WORK CPB NEXTP CHECK IF PARAMETER NUMBER NEEDS CHECKING? RSS YES JMP AGIN8 NO, TRY NEXT SUBPARMETER LDA PTYPE GET THE PTYPE RAR,RAR RAR RESTORE TO ORIGIONAL POSITION STA PTADD,I AND PUT BACK INTO TABLE LDA PRMNM GET THE PARAMETER NUMBER INA JMP AGIN7 YES, SEE IF MORE PARAMETERS SPC 1 * * NOW OUTPUT THE MESSAGE TO OPERATOR * CONTE LDA NCOTL GET THE LENGTH OF THE MESSAGE BUFFER CMA,INA,SZA CHECK IF ANY CHARACTORS? JMP CONTT YES LDA QUSTM GET THE QUESTION MARK STA OTBUF PUT IN 1ST CHARS OF MESSAGE BUFFER LDA OM2 CONTT STA NCOTL SAVE FOR EXEC CALL JSB REIO DEF *+5  DEF O2 DEF LU DOTBF DEF OTBUF DEF NCOTL -NUMBER OF CHARS TO OUTPUT (NON-TRAILING COMMAS) CONTF JSB REIO NOW GO READ REPLY DEF *+5 DEF O1 DEF PLU WITH ECHO DEF INBUF DEF DM80 OF 80 CHARS STB INLEN SAVE NUMB CHARS INPUT JSB EXEC IGNORE TIME-OUTS DEF *+5 DEF D13 DEF LU DEF TEMP5 DEF TEMP4 LDA TEMP4 ALF SSA JMP CONTF CLA,INA SET THE START CHARACTOR FOR PARSE ROUTINE STA STRCR LDA PMCNT CHECK IF A FMGR COMMAND PASSED? SZA,RSS JMP CONTG NO, PASS BACK INPUT PARAMETERS IN 10G SPC 1 * NOW PARSE A MAX OF 9 INPUT PARAMETERS SPC 1 LDA DM9 YES, CONVERT ANY ?V PARAMETERS IN INPUT STRING STA TEMP1 LDA DFHLL GET ADDRESS TO LIST HEAD BUFFER STA TEMP2 SAVE AGIN9 LDA TEMP2,I SKIP ANY NULL (UN-ASKED FOR) ?V PARAMETERS SZA,RSS JMP CONTQ LEFT JUSTIFY ALL ASKED FOR ?V'S LDB DFPRM JSB PARSE NOP IGNORE NOT PASSED ERROR LDA TEMP2 GET CURRENT LIST HEAD STA TEMP3 SAVE IN CURRENT LIST ELEMENT POINTER SPC 1 * SEARCH ALL ENTRYS FOR CURRENT "?V" LIST SPC 1 AGN10 LDA TEMP3,I GET NEXT PARAMETER ON LIST SZA,RSS ANY ENTRYS FOR THIS PARAMETER? JMP CONTQ NO, GO TO NEXT ONE STA TEMP3 SAVE FOR NEXT PASS ADA DM130 YES, CALCULATE ADDRESS OF PARAMETER STA TEMP4 SAVE LDB DFWR1 GET BASE ADDRESS OF WORK BUFFER CMB,INB ADA B GET OFFSET INTO WORK BUFFER CLB DIV D10 PRODUCE A MOD ADB OM3 STB TEMP6 B-REG = 0 THRU 6 MPY D10 ADA DFWR1 CALCULATE 1ST WORD ADDRESS OF PARAMETER ADA O3 STA PTADD SAVE PARAMETER TYPE ADDRESS LDB TEMP6 GET PARAMETER NUMBER 0 - 6 CMB,INB,SZB,RSS CHECK IF MAIHiN OR SUBPARMETERS? JMP CONTR MAIN PARAMETER >> SPECIAL CONSIDERATION LDA PRMBF+3 GET PARAMETER TYPE WORD AND O3 MASK TO JUST TYPE BITS RAL,RAL POSITION THE TYPES BITS INB,SZB MORE POSITIONING NEEDED? JMP *-2 YES IOR PTADD,I MIRGE IN WITH PASSED PARAMETER STA PTADD,I AND STORE BACK LDA PRMBF+0 GET THE VALUE OF PARAMETER STA TEMP4,I AND PUT IN WORK BUFFER JMP AGN10 CONTINUE TO NEXT ELEMENT ON LIST SPC 1 * NOW MOVE 3 WORDS OF MAIN PARAMETER AND A CONDITIONAL MOVE * OF THE SUB-PARAMETERS, >> ONLY IF THEY WERE INPUT. SPC 1 CONTR LDA TEMP4 ADA OM3 STA TEMP4 JSB .DFER MOVE 3 WORDS OF PARAMETER TO WORK BUFFER TEMP4 DEF * DFPRM DEF PRMBF FROM THE SCRATCH BUFFER LDA OM6 SET UP COUNTER FOR MOVE OF SUB-PARAMS STA TEMP6 LDB PTADD GET THE PTYPE ADDRESS WORD FOR DEST BUFFER STB TOADD SAVE AS THE TO ADDRESS LDA DFPRM GET ADDRESS OF SCRATCH BUFFER ADA O3 POINT TO TYPE WORD STA FROMA SET UP FROM POINTER LDA A,I GET THE FROM TYPE BITS LDB B,I GET THE TO TYPE BITS RAR,RAR FORCE THE MAIN'S TYPE PARAMETER BITS RBR,RBR IGNORE DEST PTYPE BITS AGN11 ISZ TOADD BUMP THE DEST BUFFER ADDRESS ISZ FROMA BUMP THE FROM BUFFER ADDRESS SLA CHECK IF PARAMETER IS NULL? JMP CONTC NO RRR 2 YES, MOVE IN OLD BITS JMP CONTB CONTINUE CONTC RAR,RAR NO, MOVE IN NEW BITS RBR,RBR THROW AWAY TYPE BITS OF DEST BUFFER STA TEMP5 SAVE A-REG TEMP LDA FROMA,I MOVE THE SUBPARAMETER TO DEST BUFFER STA TOADD,I BECAUSE OPERATOR INPUT IT LDA TEMP5 RESTORE A-REG CONTB ISZ TEMP6 DONE? JMP AGN11 NO, TRY NEXT PARAMETER RAR,RAR POSITION TYPE WORD STA PTADD,I AND STORE IN DEST BUFFER TYPE WORD JMP AGN10 CONTINUE TO NEXT ELEMENT ON LIST SPC 1 CONTQ ISZ TEMP2 BUMP TO NEXT LIST HEAD ISZ TEMP1 CHECK IF ALL 9 "?V" PARAMETERS CHECKED? JMP AGIN9 CONTINUE UNTIL UP TO 9 ARE DONE SPC 1 * NOW DO AN INVERSE PARSE OF THE WORK BUFFER TO PASS IT BACK TO FMGR SPC 1 LDA PMCNT GET NUMBER OF PASSED PARAMETERS CMA,INA,SZA,RSS SET UP NUMBER TIMES TO CALL INAMR HLT 0 TEMP DIAGINOSTIC STA TEMP1 SAVE AS LOOP COUNTER CLA STA TEMP2 SAVE STARTING CHARACTOR NUMBER LDB DFWR1 GET THE WORK BUFFER AGN12 STB INAMB SET THE INPUT BUFFER ADDRESS TO IPARSE LDA TEMP2 SUPPRESS TRAILING COMMAS INA STA TEMP3 EQUALS CHARACTOR COUNT + 1 JSB INAMR DO INVERSE PARSE OF WORK BUFFER DEF *+5 INAMB DEF * DEF OTBUF USE THE MESSAGE BUFFER DEF D80 MAX OF 80 CHARS LONG DEF TEMP2 STARTING CHARACTOR LDA TEMP2 CHECK IF INCREASED BY ONLY ONE CPA TEMP3 RSS YES, DO NOT UPDATE TLOG STA TEMP4 UPDATE STRING LENGTH LDB INAMB BUMP THE INPUT BUFFER BY 10 WORDS ADB D10 ISZ TEMP1 DONE? JMP AGN12 NO, TRY NEXT BUFFER LDA TEMP4 DECREMENT BUFFER LENGTH BY ONE CHARACTOR CMA,INA,SZA AND MAKE NEGATIVE INA MINUS ONE STA TEMP2 JSB EXEC AND PASS BACK THE STRING TO FMGR DEF *+5 DEF D14 DEF O2 DEF OTBUF DEF TEMP2 LDA ECHFL CHECK IF THE ECHO FLAG IS SET? SZA JMP CONTH NO, SKIP ECHO JSB REIO AND ECHO THE MESSAGE ON THE LOG TERMINAL DEF *+5 DEF O2 DEF PLU DEF OTBUF DEF TEMP2 JMP CONTH SPC 1 * FMGR COMMAND NOT REQUESTED, RETURN IN 10G SPC 1 CONTG LDB DFPRM GET ADDRESS OF SCRATCH BUFFER JSB PARSE GO PARSE THE 1ST INPUT PARAMETER J NOP IGNORE NULL RESPONSE LDA PRMBF+3 GET THE TYPE OF PARAMETER TYPED AND O3 CPA O3 LOOK LIKE A NAMR? JMP RNAMR YES, RETURN NAME:SC:CRN IN 10G LDA OM4 NO, GO PARSE 4 MORE PARAMETERS STA TEMP1 TO BE RETURNED IN 1P - 5P AGN13 INB BUMP TO NEXT "?P" PARAMETER JSB PARSE NOP ISZ TEMP1 JMP AGN13 JMP CONTJ NOW RETURN THEM TO FMGR SPC 1 * MOVE 5TH & 6TH WORDS TO 4TH & 5TH POSITION SPC 1 RNAMR DLD PRMBF+4 DST PRMBF+3 MOVE DOWN LAST TWO WORDS CONTJ JSB PRTN DEF *+2 DEF PRMBF CONTH JSB EXEC TERMINATE DEF *+2 DEF O6 SPC 1 * NOW START WITH THE "?V" PARAMETER LISTS AND MIRGE IN THE INPUT * PARAMETERS RETURN BY THE OPERATOR SPC 1 * PARSE WILL CALL NAMR TO PARSE THE NEXT PARAMETER IN INBUF * B-REG = ADDRESS OF DESTINATION PARSED BUFFER * B-REG RETURNED AS PASSED * RETURN P+1 IF NO DATA IN INPUT BUFFER TO PARSE, ELSE P+2 RETURN SPC 1 PARSE NOP B-REG = ADDRESS OF 10 WORD OUTPUT BUFFER STB DESBF SET THE ADDRESS JSB NAMR DEF *+5 DESBF DEF * DEF INBUF DEF INLEN DEF STRCR STARTING CHARACTOR NUMBER TO PARSE AT SSA,RSS ISZ PARSE P+2 RETURN IF DATA TO PARSE LDB DESBF RESTORE THE B-REG JMP PARSE,I SPC 1 * GETCR WILL GET A CHARACTOR RIGHT JUSTIFIED OF THE CHARACTOR ADDRESS * IN THE B-REG & RETURN WITH B = B+1 SPC 1 GETCR NOP B-REG = CHARACTOR ADDRESS OF CHAR TO GET CLE,ERB CHANGE TO WORD ADDRESS LDA B,I GET WORD SEZ,RSS CHECK IF HI OR LO ALF,ALF HI, RIGHT JUSTIFY AND O377 MASK OFF OTHER BYTE ELB RESTORE B-REG INB AND BUMP JMP GETCR,I AND RETURN A-REG = CHARACTOR SPC 1 * PUTCR WILL ADD A CHARACTOR TO THE MESSAGE BUFFER & COUNT ITS LENTH 2 SPC 1 OTCRD NOP PUTCR NOP ENTRY A=CHARACTOR STB PUTC1 SAVE B-REG ISZ OTLEN COUNT LENGTH OF OUTPUT BUFFER LDB OTLEN UPDATE THE NON TRAILING COMMA CPA COMMA OUTPUT LENGTH RSS CPA O40 ALSO DELETE TRAILING SPACES RSS STB NCOTL SET THE NON COMMA LENGTH LDB OTCRD GET OUTPUT CHARACTOR ADDRESS WORD ISZ OTCRD AND BUMP FOR NEXT TIME CLE,ERB CHANGE TO WORD ADDRESS SEZ,CCE,RSS CHECK IF HI OR LO CHARACTOR ALF,SLA,ALF HI, POSITION & SKIP MIRGE OF OLD CHARACTOR XOR B,I MIRGE IN OLD HI CHARACTOR XOR O40 PUT IN OR TAKE OUT LO SPACE CHARACTOR STA B,I AND PUT IN BUFFER LDB PUTC1 RESTORE B-REG JMP PUTCR,I RETURN P+1 SPC 1 PUTC1 NOP B-REG SAVE STORAGE SPC 1 * MOVE MESSAGE STRING FROM INPUT TO OUTPUT MESSAGE BUFFER * LDA 1 - 13 * LDB 0 - 6 * JSB MVMES MOVE THE MESSAGE * * IGNORE IF MVFLG IS SET & SET IT BEFORE EXIT * IF A=0 MOVE WHOLE MESSAGE (EXCEPT "?V") FROM COMMA+1 TO COMMA * UNLESS NULL MESSAGE * IF A#0 COUNT COLONS & TERMINATE ON NEXT COMMA OR COLON (LEAVE * COMMA IN MESSAGE BUFFER SPC 1 MESFL NOP PREVIOUS OUTPUT MESSAGE FLAG OTHTM NOP COLCT NOP IGNORE LEADING COLON COUNTER MAXCR NOP CHARACTOR ADDRESS PAST PARAMETER DFINM NOP CHARACTOR ADDRESS OF INPUT BUFFER - 1 MVMES NOP STB COLCT SAVE COLON COUNTER FOR LATER LDB MESFL CHECK IF ALREADY OUTPUTED? SZB JMP MVMES,I YES, IGNORE REQUEST ADA DFADB ARRAY DLD A,I GET 1ST CHRAD OF CURRENT & NEXT PARAMETER ADA DFINM FORM CHARACTOR INDEX INTO INPUT BUFFER ADB DFINM FORM CHARACTOR INDEX INTO INPUT BUFFER STB MAXCR SAVE LAST+1 ADDRESS AS TERMINATOR STA B >NLH SAVE 1ST CHARACTOR ADDRESS IN B ADB O2 AND BUMP PAST THE "1V" LDA COLCT GET THE COLON COUNTER SZA,RSS CHECK IF = 0? JMP MVCT2 YES, SKIP COLON COUNTING MVCT1 CPB MAXCR CHECK IF MORE DATA IN INPUT BUFFER JMP MVDON NO, EXIT MESSAGE BUFFER UNTOUCHED JSB GETCR GET NEXT CHARACTOR CPA COMMA IF COMMA, THEN DONE JMP MVDON YES, GET OUT WITH NO CHANGE TO INPUT BUFFER CPA COLON IF COLON, BUMP COUNTER ISZ COLCT DONE COUNTING? JMP MVCT1 NO ADB O2 YES, BUMP PAST THE ?V MVCT2 STA OTHTM SET A COLON OR NULL ALSO AS A TERMINATOR MVCT3 CPB MAXCR EXCEEDED THE PARAMETER? JMP MVDON DONE JSB GETCR YES, START MOVING IT *N CPA COMMA CHECK IF DONE JMP MVDON YES CLEAN UP AND GET OUT CPA OTHTM CHECK IF COMMA OR COLON ? JMP MVDON CLEAN AND GET OUT STA MESFL SET THE MESSAGE OUTPUTED FLAG JSB PUTCR NO, PUT IN BUFFER JMP MVCT3 TRY FOR NEXT CHARACTOR SPC 1 MVDON LDA MESFL CHECK IF ANY MESSAGE OUTPUTED? SZA,RSS JMP MVMES,I NO, DON'T PUT IN TRAILING COMMA LDA COMMA PUT TRAILING COMMA IN BUFFER JSB PUTCR AND PUT COMMA IN BUFFER JMP MVMES,I RETURN SPC 1 END START f Qe 09570-18659 1830 S 0122 &PATCH CHANGE SYS CON TO SES             H0101 +FTN,L PROGRAM PATCH(3,99),PRE-REL 780519 (DLB) RTE-IV DIMENSION IBUF(64) C C !!!!!!!!!!!!NOTE!!!!!!!!!! EXTERNALS MUST BE DEFINED !!!!!!!!! C PRE-REL 1-7-77 (DLB) C PRE-REL 4-4-78 (DLB) C C THIS PROGRAM WILL PATCH THE RTE II/III EXEC TO INHIBIT THE SYSTEM C MESSAGE WHEN THE ABORT PROCESSER IS CALLED AND INHIBIT THE SYSTEM C CONSOLE ATTENTION FEATURE. THE "PROGM ABORTED" MESSAGE IS CONSIDERED C REDUNDENT IN NATURE AND IS CONFUSING. THE SYSTEM ATTENTION C FUNCTION IS REPLACED BY THE LOGON PROGRAMS (MTM). IF THE SYSTEM C ATTENTION IS DESIRED, IT MAY BE RESTORED BY ASSIGNING LOGICAL UNIT C 1 FROM MTM, OR IF MTM IS DEAD, THEN SETTING CORE LOCATION 1734B C TO A OCT 1 AND THEN HITTING THE KEYBOARD AND ASSIGNING LU = 1. C C PATCH OUT THE SYSTEM ATTENTION FEATURE. CALL CPUT(1675B,0) C C NOW FIND ADDRESS OF THE "$ABRT" AND "$SYMG" IN CORE C ISYMG = 0 IABRT = 0 IDSCLB = KGET(1761B) ITK = IDSCLB/128 IDSKAD = ITK*96 + (IDSCLB - ITK*128) C C NOW SEARCH FOR $ABRT & $SYMG ADDRESS ON DISC "ENT" TABLE C DO 500 ISYMB = 0,KGET(1762B)-1 ISYMA = MOD (ISYMB,16) * 4 IF (ISYMA.NE.0) GO TO 100 ITK = IDSKAD/96 ISECT = IDSKAD - ITK*96 IDSKAD = IDSKAD + 1 CALL EXEC (1,2,IBUF,64,ITK,ISECT) 100 IWORD1 = IBUF(ISYMA+1) IWORD2 = IBUF(ISYMA+2) IWORD3 = IBUF(ISYMA+3) IWORD4 = IBUF(ISYMA+4) IF (IWORD1.NE.2H$A) GO TO 200 IF (IWORD2.NE.2HBR) GO TO 200 IF (IWORD3.EQ.52000B) GO TO 300 200 IF (IWORD1.NE.2H$S) GO TO 500 IF (IWORD2.NE.2HYM) GO TO 500 IF (IWORD3.NE.43400B) GO TO 500 ISYMG = IWORD4 GO TO 400 300 IABRT = IWORD4 400 IF (IABRT.NE.0.AND.ISYMG.NE.0) GO TO 600 500 CONTINUE C C NOT FOUND >> ERROR C STOP 11 C C NOW SEARCH FOR "JSB $SYMG" IN 100 SEQUENTIAL INSTRUCTIONS PASS C THE ENTRY POINT $ABRT. C 600 DO 1000 I=IABRT,IABRT+100 INSTRU = KGET (I) ^  IJSB = IAND(INSTRU,176000B) C C CHECK IF JSB TO CURRENT PAGE C IF (IJSB.NE.16000B) GO TO 700 IADRS = IAND(I,76000B) + IAND (INSTRU,1777B) GO TO 900 C C CHECK IF JSB ,I TO BASE PAGE C 700 IF (IJSB.NE.114000B) GO TO 800 IADRS = KGET(IAND(INSTRU,1777B)) GO TO 900 C C CHECK IF CURRENT PAGE JSB ,I C 800 IF (IJSB.NE.116000B) GO TO 1000 IADRS = KGET(IAND(I,76000B) + IAND (INSTRU,1777B)) 900 IF (IADRS.EQ.ISYMG) GO TO 1100 1000 CONTINUE C C "JSB $SYMG" NOT FOUND >> ERROR C STOP 12 C C NOW NOP THE "JSB $SYMG" INSTRUCTION IN THE SCHED MODULE. C 1100 CALL CPUT (I,0) END END$ hP  RY 09570-18661 1830 S 0122 &PRMPT PROMPT ROUTINE             H0101 ASMB,R,L,C HED "PRMPT" AMD SESSION ATTENTION ROUTINE 9-76 (DLB) *9-7 NAM PRMPT,2,1 PRE-REL 7-29-76 (DLB) *10-5 NAM PRMPT,2,1 PRE-REL 9-13-76 (DLB) *10-10 NAM PRMPT,2,1 PRE-REL 10-5-76 (DLB) * NAM PRMPT,2,1 PRE-REL 10-14-76 (DLB) * NAM PRMPT,2,1 09570-16661 REV. A 761013 * NAM PRMPT,2,1 09570-16661 REV. A 761110 NAM PRMPT,1,1 PRE-REL REV D. 780526 (DLB) RTE-IV * *-------------------------------------------------------- * * RELOC. 09570-16661 * SOURCE 09570-18661 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- EXT EXEC,KYBRD,IDSGA EXT $LIBR,$LIBX EXT .XSA,.XLA,.XLB *780405 EXT ICLRW,GTSTB,MKIDS,CLAS# A EQU 0 B EQU 1 EQTA EQU 1650B DRT EQU 1652B LUMAX EQU 1653B XTEMP EQU 1721B SPC 1 * :RUIH,PRMPT,, TO FAKE AN ATTENTION INTERRUPT TO * SCHEDULE THE LOGON OR PROGENITIOR MODULE. SPC 1 PRMPT STB EQT4 SAVE B-REG VALUE CPB XTEMP CHECK IF DIRECT CALL? JMP PRMP2 YES, CHECK IF KEY SUPPLIED? SPC 1 * PROBABLY SCHEDULED FROM DV.00 OR DV.05 SPC 1 CLA INIT LU = 0 STA LU GET CURRENT LU # -1 PRMP1 LDA LU GET CURRENT LU # CPA LUMAX CHECK IF SEARCHED ALL JMP PRMP8 YES, IGNORE THE SCHEDULE ISZ LU BUMP TO CURRENT LU ADA DRT INDEX INTO THE DRT LDA A,I AND GET CONTENTS AND O77 MASK TO EQU NUMBER MPY D15 CALCULATE ADDRESS OF WORD 4 ADA DM12 SUBTRACT ONE EQT + 3 WORDS ADA EQTA INDEX TO EQT TABLE CPA EQT4 MATCH? RSS YES, GO CHECK IF IT IS A TERMINAL? JMP PRMP1 NO, TRY NEXT LU JSB KYBRD CHECK IF LU IS A TERMINAL DEF *+2 DEF LU CLE,SSA CHECK IF OK? JMP PRMP1 NO, TRY NEXT EQT LDA LU  JSB CASCI CONVERT TO ASCII FOR PROMPT JMP PRMPZ YES, GO CONVERT TO ASCII SPC 1 * DIRECT SCHEDULE (OPERATOR?) -- CHECK IF KEY SUPPLIED? SPC 1 PRMP2 JSB .XLA GET 1ST PARAMETER EQT4 DEF * B-REG POINTS TO XTEMP ISZ EQT4 BUMP TO NEXT PARAMETER JSB CASCI CONVERT TO ASCII JSB .XLB CHECK IF PASSED BY CALLER CORRRECTLY DEF EQT4,I ADDRESS OF XTEMP(2) CPB ASCLU P2 PARAMETER = ASCII LU? SZA,RSS YES, CHECK IF NON ZERO JMP PRMP8 IGNORE IMPROPER DIRECT CALL SPC 1 PRMPZ IOR O400 READY PRINT BACK STA RLU SAVE READ LU + PRINT BIT SPC 1 * NOW GET THE CLASS NUMBER ADDRESS IN THE SYSTEM MAP SPC 1 LDA CLASS GET CLASS NUMBER ADDRESS SZA,RSS CHECK IF FOUND? HLT 0 NO, SORRY ABOUT THAT!! RSS NOW GET THE DIRECT ADDRESS LDA A,I FOR THE RTE-III GENERATOR RAL,CLE,SLA,ERA BUG WORK AROUND JMP *-2 STA CLASS SPC 1 * ROUTINE TO FIND A LOGICAL UNIT MATCH IN TABLE * THE TABLE ENTRYS LOOK AS FOLLOWS * !S! F ! M ! * ! G ! 0 ! * ! 7 !AT! LU=7 ! * ! 1ST PARAM ! * ! 2ND PARAM ! * ! 3RD PARAM ! * ! 4TH PARAM ! * ! 5TH PARAM ! * * WHERE 'AT' = AUTHORIZATION LEVEL 0 TO 3 (2 BITS) * WHERE 'S' = PRMPT WILL IGNORE ATTENTION IF SET. * THE 1ST WORD HAS THREE POSSIBILITIES. * 1) 0 >> SCHEDULE LOGON * 2) - >> IGNORE INTERRUPT * 3) + >> CONTINUE * JSB GTSTB GET PROGENTORS SESSION TABLE ENTRY DEF *+4 DEF LU FROM THE TERMINAL LU NUMBER DEF PNAME 8 WORD ARRAY DEF SYSAD LOCATION IN SYSTEM MAP SPC 1 * NOTE: THIS ROUTINE WILL RETURN PNAME = 0 IF NO SESSION ENTRY * AND SYSAD = 0 IF NO SESSION TABLE * SYSAD = ADDRESS OF NEW ENTRY IF PNAME = 0 *  A-REG IS NEG IF TERMINAL IS BUSY, = 0 IF NO SESSION PROGENTOR SPC 1 * BEGIN THE FOUR WAY BRANCH * 1) R$PN$ IS BUSY PROCESSING A REQUEST FOR THIS TERMINAL--IGNORE. * 2) PROGENITOR IS NON-EXISTANT, RUN LOGON PROGRAM * 2A. LOGON IS NON-EXISTANT, DO MTM THING. * 3) PROGENITOR IS DORMANT, SCHEDULE AND EXIT. * 4) PROGENITOR IS BUSY, DO THE MTM THING. SPC 1 SSA SIGN BIT SET = DISABLED! JMP PRMP7 IGNORE SCHEDULE, R$PN$ IS BUSY!! SZA,RSS CHECK IF THERE IS ONE? JMP PRMP4 NO, GO SCHEDULE LOGON JSB IDSGA CHECK IF A PROGENITOR ID? DEF *+2 DEF PNAME SZA,RSS CHECK IF ONE? JMP PRMP4 NO, DO THE LOGON THING ADA D8 INDEX TO THE POINT OF SUSPENSION WORD JSB .XLA IN THE ID & AND CHECK IF BUSY DEF A,I SZA TRULY DORMANT? JMP PRMP5 NO, DO THE MTM THING JSB EXEC SCHEDULE PROGENITOR IF DORMANT DEF *+8 DEF NA10 NO ABORT IF NON-EXISTANT DEF PNAME DEF PNAME+3 DEF PNAME+4 DEF PNAME+5 DEF PNAME+6 DEF PNAME+7 JMP PRMP4 IF NON-EXISTANT, DO LOGON SZA CHECK IF SCHEDULED? JMP PRMP5 NO, DO THE MTM THING JSB MKIDS MAKE THE PROGENITORS ID SESSION-FIED DEF *+3 DEF PNAME PROGRAMS NAME DEF LU JSB ICLRW GO DO CLASS WRITE OF PROGENTOR DEF *+7 DEF O2 WRITE DEF CLASS ADDRESS OF CLASS NUMBER DEF LU DEF SYSAD ADDRESS OF SESSION TABLE ENTRY DEF PNAME NAME OF PROGENITOR DEF OM5 FIVE CHARACTERS JMP PRMP7 DONE!!!, CLASS GET FROM R$PN$ SPC 1 * WE MAY NOT HAVE A SESSION TABLE ENTRY, SO DEFAULT THE ADDRESS * TO SOME SEMI-SAFE LOCATION IN SYSTEM MAP. SPC 1 PRMP4 LDA SYSAD CHECK IF SESSION TABLE ENTRY SZA,RSS IF = 0, THEN NO SESSION TABLE ENTRY JMP PRMP6 GO DO THE STOCK MTM THING JSB EXEC SCHEDULE THE LOGON PROGRAM DEF *+4 DEF NA10 WITH CALL EXEC(10 NO ABORT) DEF LOGON PROGRAM NAME = LOGON DEF LU PASS THE LOGICAL UNIT NUMBER JMP PRMP5 NON-EXISTANT, PLAY STOCK MTM SZA,RSS CHECK IF DORMANT? JSB IGNOR YES, SET THE IGNORE BIT JMP PRMP8 LET OPERATOR TRY AGAIN IF BUSY SPC 1 * IN THIS NEXT SERIES OF CLASS I/O THERE IS LITTLE CHANCE OF * ANYBODY GETTING IN BETWEEN THEM, NO MATTER WHAT THE PRIORITY SPC 1 PRMP5 JSB IGNOR SET THE IGNORE BIT PRMP6 JSB ICLRW WRITE ZERO LENGTH RECORD DEF *+5 DEF O2 DEF CLASS DEF LU DEF SYSAD JSB ICLRW NOW WRITE OUT THE PRMPT DEF *+7 DEF O2 DEF CLASS DEF LU DEF SYSAD DEF ASCLU ASCII LU BUFFER DEF O2 TWO WORDS JSB ICLRW GO DO CLASS READ OF 52 CHARACTERS DEF *+7 DEF O1 DEF CLASS DEF RLU LOGICAL UNIT WITH PRINT BIT DEF SYSAD PROGENITORS KEYWORD DEF O0 DUMMY BUFFER DEF DM52 AND BUFFER LENGTH PRMP7 JSB EXEC SCHEDULE R$PN$ W/O WAIT DEF *+3 DEF D10 DEF R$PN$ * * IGNORE NOT SCHEDULED ERRORS SINCE R$PN$ IS CLASS GET SUSPENDED * PRMP8 JSB EXEC TERMINATE DEF *+4 DEF O6 & DEF O0 DEF OM1 MAKE SERIAL RE-USABLE SPC 1 IGNOR NOP ENTRY TO SET THE IGNORE BIT LDB SYSAD CHECK IF A SESSION ENTRY CCE,SZB,RSS TO SET THE DISABLE THE TERMINAL BIT? JMP IGNOR,I NO, SKIP THE DISABLE STUFF JSB $LIBR O0 NOP JSB .XLA GET THE 1ST WORD OF SESSION ENTRY DEF B,I ADDRESS THRU THE SYSTEM MAP RAL,ERA SET BIT 15 JSB .XSA AND SET THE R$PN$ BUSY BIT DEF B,I JSB $LIBX DEF IGNOR RETURN SPC 1 * CONVERT A-REG TO ASCII SPC 1 CASCI NOP ENTRY A-REG = LU STA LU SAVE IN GLOBAL CLB DIV D10 ALF,ALF POSITION MOST SIG DIGIT ADB A MERGE IN WITH LEAST DIGIT ADB ASC00 CHANGE TO ASCII LDA LU RESTORE A-REG STB ASCLU AND SAVE THE ASCII LOGICAL UNIT NUMBER JMP CASCI,I AND RETURN SPC 1 O400 OCT 400 NA10 OCT 100012 NO ABORT 10 O1 OCT 1 O2 OCT 2 O6 OCT 6 D8 DEC 8 D10 DEC 10 D15 DEC 15 O77 OCT 77 OM1 OCT -1 OM5 OCT -5 DM12 DEC -12 DM52 DEC -52 LU NOP LU OF TERMINAL RLU NOP LU + 400B LOGON ASC 3,LOGON !!!!!!LOG ON PROGRAM NAME!!!!!!!!! ASCLU ASC 2,00>_ PROMPT MESSAGE ASC00 ASC 1,00 R$PN$ ASC 3,R$PN$ PNAME BSS 8 HOLDS CURRENT SESSION TABLE ENTRY CLASS DEF CLAS#+0 ADDRESS OF CLASS NUMBER IN SYSTEM MAP. SYSAD ABS 0 ADDRESS OF CURRENT SESSION ENTRY PROGENITORS NAME END PRMPT r S ] 09570-18662 1830 S 0122 &R$PN$ RESPONSE PROCESSOR             H0101 ASMB,R,L,C HED R$PN$ MTM RESPONSE *9-10 NAM R$PN$,2,1 PRE-REL 8-2-76 (DLB) *10-5 NAM R$PN$,2,1 PRE-REL 9-10-76 (DLB) *10-12 NAM R$PN$,2,1 PRE-REL 10-5-76 (DLB) * NAM R$PN$,2,1 PRE-REL 10-18-76 (DLB) * NAM R$PN$,2,1 09570-16662 REV. A 761013 * NAM R$PN$,2,1 09570-16662 REV. A 761110 * NAM R$PN$,2,1 09570-16662 REV. B 761129 NAM R$PN$,1,1 09570-16662 REV.1830 780821 * *-------------------------------------------------------- * * RELOC. 09570-16662 * SOURCE 09570-18662 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- EXT MESSS,EXEC,IDSGA,CLAS#,CLAS% EXT $LIBR,$LIBX,ICLRW,IGTSM EXT .XLA,.XLB,.XSA,.XSB,$OPSY SPC 1 A EQU 0 B EQU 1 DRT EQU 1652B LUMAX EQU 1653B FENCE EQU 1775B SPC 1 R$PN$ NOP ENTRY JSB EXEC SWAP ONLY ME DEF *+3 DEF D22 DEF O2 JSB DIRCT CHECK IF EXITS AND MAKE DIRECT CLSAD DEF CLAS#+0 ADDRESS OF CLASS NUMBER IN SYSTEM MAP JSB IDSGA FIND THE PROGRAM "LOADR" DEF *+2 DEF ASCLO STA LOADR JSB IDSGA FIND PROGRAM "BASIC" DEF *+2 DEF ASCBA STA BASIC SPC 1 WAIT1 CCE SETUP FOR NO WAIT FOR CLASS GET WAIT2 JSB .XLA GET CLASS NUMBER DEF CLSAD,I SZA,RSS CHECK IF ALREADY ALLOCATED? JMP EXIT NO, IGNORE THE REQUEST AND O17KK MASK OFF 13,14,15 RAL,ERA SET OR CLEAR WAIT BIT (15) STA RQCLS & SAVE IT IOR O20K SET FOR SAVE CLASS STA CLASS SAVE CLASS WITH NO DEALLOCATE SPC 1 JSB EXEC CLASS I/O GET DEF *+8 DEF D21 DEF CLASS SOURB DEF BUFF+1 DEF DM52 DEF SESTB ADDRESS OF SESSION TABLE ENTRY DEF LU TERMINAL LU DEF RCLAS INA,SZA,RSS CHECK IF ANY PENDING CLASS BUFFERS? JMѶP EXIT NO, TERMINATE CLE,SSA DID WE OBTAIN ANY DATA? JMP WAIT2 WAIT FOR CLASS TO MATURE SPC 1 LDA RCLAS RAR,SLA WAS THIS A READ RETURN? JMP WAIT1 NO WRITE, IGNORE IT & GET ANY MORE STB IB YES, SAVE XFER LOG CHARS CMB,INB,SZB,RSS IF ZERO-LENGTH JMP ENABL SKIP PROCESSING CODE. STB TEMP3 SAVE NEG CHAR COUNT SPC 1 * STRIP OUT ALL SPACES & COUNT COMMAS IN BUFFER SPC 1 LDB SOURB GET COMMAND BUFFER ADDRESS RBL FORM CHARACTOR COUNT STB TEMP2 SAVE CHAR ADDRESS OF SOURCE BUFFER ADB OM2 CALCULATE DEST BUFF ADDRESS STB TEMP1 SAVE THE DEST BUFF ADDRESS CLA PRESET THE COMMA COUNTER STA CMCNT TO ZERO STA BUFF AND PRESET BUFF TO ILLEGAL COMMAND MOREA LDB TEMP2 GET CURRENT SOURCE CHAR ADDRESS ISZ TEMP2 BUMP CLE,ERB FROM WORD ADDRESS LDA B,I GET THE WORD SEZ,RSS CHECK IF NEED POSITION? ALF,ALF YES AND O177 MASK DOWN TO ONE CHAR CPA COMMA CHECK IF COMMA? ISZ CMCNT YES, BUMP THE COMMA COUNTER CPA O40 CHECK IF SPACE? JMP MOREB YES, DO NOT STORE IN OUTPUT BUFFER LDB TEMP1 GET CURRENT DESTINATION BUFFER CHAR ADDRESS ISZ TEMP1 BUMP DEST BUFFER CLE,ERB FORM WORD COUNT SEZ,RSS CHECK IF CHARACTER NEED POSITIONING? ALF,SLA,ALF YES, AND SKIP NEXT INSTRUCTION XOR B,I NO, MIRGE IN WITH PREVIOUS CHARACTOR IN WORD XOR O40 PUT IN/TAKE OUT SPACE CHARACTOR STA B,I AND PUT IN DESTINATION BUFFER MOREB ISZ TEMP3 CHECK IF MORE CHARACTERS IN SOURCE BUFFER? JMP MOREA YES, KEEP ON TRUCKING SPC 1 * NOW FIND IDSEG ADDRESS OF PROGENITOR SPC 1 LDA SESTB CHECK IF THERE IS A SESSION TABLE SZA,RSS ENTRY? JMP PROCS NO, ODO THE STOCK MTM THING JSB .XLA GET THE 1ST WORD OF SESSION DEF A,I 1ST WORD IN SESSION TABLE CLE,SZA,RSS CHECK IF LOGGED ON? JMP WAIT1 NO, IGNORE JSB SCFLG MABY, CLEAR INHIBIT FLAG LDB SESTB GET SESSION TABLE ENTRY LDA DFNAM GET TO BUFFER ADDRESS JSB TMOVE MOVE IT LOCALLY JSB IDSGA FIND PROGENITOR'S IDSEG ADDRESS DEF *+2 DFNAM DEF PNAME STA TEMP1 SAVE HIS IDSEGMENT ADDRESS SZA,RSS CHECK IF THERE IS ONE? JMP PROCS NO, DO THE STOCK MTM THING SPC 1 * NOW GO GET THE AUTHORIZATION CODE BITS FROM TABLE SPC 1 LDA PNAME+2 3RD WORD OF TABLE ENTRY LSR 6 POSITION TO LO BITS AND O3 AND MASK OFF REST STA AUTCD SAVE THE AUTHORIZATION CODE LDB BUFF CHECK IF WHZAT IS REQUESTED? CPB WHZAT JMP WHZ YES, GO PROCESS LDB CMCNT GET THE COMMA COUNT SZB,RSS CHECK IF ANY COMMAS JMP SPCMD NO, DO SPECIAL SESSION COMMANDS CPA O3 CHECK IF HIGHEST AUTHORIZATION ? JMP PROCS YES, GO DOIT. WITH COMMAS CPA O2 CHECK IF AUTHORIZED TO USE ONE COMMA? RSS YES, DONT BOUNCE HIM YET STA BUFF BOUNCE HIM WITH OP CODE ERR LDA BUFF GET COMMAND IN A-REG CPB O1 CHECK IF COMMA COUNT = 1 CPA ASCOF YES,MADE IT,CHECK IF ONE COMMA "OF"? STB BUFF FORCE "OP CODE ERR" JMP PROCS NOW GO PROCESS THE BUFF SPC 1 * NO COMMA, CHECK FOR SPECIAL COMMANDS SPC 1 SPCMD LDB BUFF CHECK CHARS 1 & 2 OF MESSAGE CPB ASCLO CHECK IF "LOGOF" RSS YES ON THE "LO" JMP CONT1 NO, CONTINUE LDB BUFF+1 CHECK CHARS 3 & 4 CPB ASCGO CHECK IF "GOF" JMP LOGOF YES, DO LOGOF THING JMP PROCS NONE, DO THE MTM THING SPC 1 CONT1 ADB M0SPA ADD IN -"0 " BLF,BLF SWAP THE TWO BYTES STB TEMP3 SAVE THE TRAP NUMBER 0 TO 7 LSR 3 AND STRIP LEAST 3 BITS SZB,RSS AND CHECK IF IN RANGE? JMP TRAP YES, GO EXECUTE LDB BUFF NO, CONTINUE CPB ASCUP CHECK IF UP COMMAND? JMP UPIT YES, GO PROCESS CLA CPB ASCAB DONOT ALLOW "AB" WITHOUT COMMAS STA BUFF CLEAR BUFFER TO MAKE "OP CODE ERR" CPB ASCFL CHECK IF FLUSH? JMP FL YES CPB ASCUN *3-1 CHECK IF UNBREAK? RSS CPB ASCBR CHECK IF BREAK? RSS CPB ASCSS CHECK IF "SS" RSS CPB ASCST CHECK IF STATUS? RSS GO CALCULATE MESSAGE LENGTH CPB ASCGO CHECK IF "GO" CCA,RSS YES, MAKE A-REG = -1 CPB ASCOF CHECK IF "OFF" RSS A-REG = 0 JMP PROCS NO, DO THE MTM THING SPC 1 ADA O6 PRESET MESSAGE LENGTHS STA IA FOR PRINTING OUT ALS TURN IN TO CHARACTOR LENGTH STA IB FOR THE MESSS ROUTINE LDA TEMP1 GET IDSEGMENT ADDRESS OF PROGENITOR CONT2 STA TEMP2 SAVE AS SON IF NONE CLE LDB BUFF CHECK IF "BR" OR "UN" COMMAND CPB ASCBR *3-1 BREAK COMMAND? CCE,RSS YES CPB ASCUN *3-1 UNBREAK COMMAND? JSB PBRUN CLEAR OR SET THE BREAK BIT JSB FNDSN FIND SON IF ANY SZA ANY FOUND? JMP CONT2 YES, FIND NEXT ONE SPC 1 LDB TEMP2 GET SON'S IDSEG ADDRESS JSB SETNA SET UP THE NAME IN BUFF LDA COMON GET ",1" STA BUFF+5 AND SET INTO BUFFER LDB BUFF GET COMMAND CHARS IN B-REG CPB ASCST CHECK IF STATUS COMMAND? JMP PRNT YES, SKIP COMMAND EXECUTION CPB ASCUN CHECK IF UNBREAK COMMAND JMP ENABL YES, SKIP FUTHER PROCESSING CPB ASCSS IF "SS" OR "OF" AND PERMANENT PROG lRSS CPB ASCOF JUST PRINT THE COMMAND RSS YES, CHECK IF AUTHORIZED? JMP PROCS NO, GO PROCESS THE COMMAND LDA AUTCD GET THE AUTHORIZATION CODE SZA IF = 0, THEN OF & SS ILLEGAL JMP CONT3 OK, CHECK IF ALLOWED? STA BUFF SET UP ILLEGAL MESSAGE JMP PROCS AND OUTPUT OP CODE ERR CONT3 SEZ,RSS CHECK IF PERMANENT PROG? JMP PRNT YES, JUST PRINT THE MESSAGE LDA TEMP2 NO, CHECK IF DEADLY EMBRACE CPB ASCOF CHECK IF "OF" RSS JMP PROCS NO, GO PROCESS THE COMMAND CPA TEMP1 CHECK IF ANY SON'S INA,RSS NO, CHECK IF DEADLY EMBRACE JMP PROCS NO, PROCESS "OF" JSB .XLA GET XTEMP(1) DEF A,I CPA TEMP1 EQUAL TO DAD? JMP PROCS YES, PROCESS "OF" CPA O4 EQUAL TO SUSPEND TO DOWN I/O? JMP PROCS YES, PROCESS "OF" LDA ASCBR NO, CHANGE "OF" TO "BR" STA BUFF COMMAND SPC 1 PROCS JSB MESS GIVE REQUEST SZA,RSS ANY MESSAGES ? JMP ENABL NO,WAIT FOR NEXT INPUT STA IA SAVE TLOG SPC 1 PRNT JSB ICLRW DO CLASS WRITE OF ERROR MESSAGE DEF *+7 DEF O2 WRITE DEF CLSAD ADDRESS OF CLASS NUMBER IN SYSTEM MAP DEF LU LOGICAL UNIT NUMBER DEF SESTB DUMMY? DEF BUFF BUFFER DEF IA MESSAGE LENGTH JMP ENABL NOW WAIT SPC 1 WHZ JSB EXEC SCHEDULE WHZAT DEF *+5 DEF NA10 NO ABORT CALL EXEC (10 DEF WHZAT DEF LU DEF CMCNT *3-1 JMP PROCS NON-EXISTANT, FORCE ERROR JMP ENABL SPC 1 TRAP JSB IGTSM GET ENTRY POINT "TRPNT"'S ADDRESS DEF *+3 DEF TRPNT DEF DFPNT ADDRESS OF ENTRY CMA,CLE,INA CHECK IF ONE FOUND? LDB $OPSY CHECK IF RTE-IV? CPB DM9 RTE-IV ? ADA FENCTE YES, ADD IN THE FENCE VALUE LDA TEMP3 GET TRAP NUMBER LDB LU AND TERMINAL LU SEZ,RSS CHECK IF LEGAL TO CALL? JSB DFPNT,I YES, CALL TRPNT JMP PROCS ERROR RETURN JMP ENABL NORMAL RETURN SPC 1 LOGOF JSB DIRCT GET CLASS NUMBER ADDRESS FOR LOGOF CLASP DEF CLAS%+0 JSB FLUSH FLUSH ANY REMAINING BUFFER LDA D12 SET NUMBER OF CHARS FOR MESS STA IB 12 CHARS FOR THE MESSS ROUTINE LOGO1 LDB TEMP1 NOW '*OF,PROG,8' OF PROGENITOR SZB,RSS CHECK IF ANY? JMP LOG02 NO, FINISH UP JSB SETNA PUT NAME INTO BUFFER LDA TEMP1 FIND NEXT SON JSB FNDSN AND LEAVE E= TEMP/PERM DAD FLAG STA TEMP1 PUT SON IDSEGMENT ADDRESS IN DAD SEZ,RSS ONLY OFF TEMPORARY PROGMS JMP LOGO1 SKIP OFFING LDA ASCOF PUT 'OF' COMMAND IN BUFFER STA BUFF+0 LDA COMC8 PUT ',8' IN COMMAND BUFFER STA BUFF+5 JSB MESS OFF,PROG,8 TWICE INCASE OF I/O SUSPEND JSB MESS JMP LOGO1 TRY NEXT SON SPC 1 * PASS LOGOF FLAG TO "LSPNS" & DISABLE TERMINAL SPC 1 LOG02 JSB LOG03 TELL LSPNS TO DO LOGOF JSB EXEC NOW SCHEDULE "LSPNS# DEF *+3 DEF D10 DEF LSPNS JMP WAIT1 LET LSPNS ENABLE TERMINAL SPC 1 UPIT LDA TEMP1 FIND GRANDSON OF THIS SESSION UPIT1 STA UPITA SAVE ID ADDRESS OF LAST SON JSB FNDSN FIND NEXT SON SZA DONE? JMP UPIT1 NO, GO AFTER NEXT SON LDA UPITA GET ID(1) ADDRESS ISZ UPITA BUMP TO ID(2) JSB .XLB GET THE WORD UPITA DEF * SET ABOVE ISZ UPITA BUMP TO ID(3), XTEMP(2) ADDRESS ADA D15 BUMP TO THE STATUS WORD JSB .XLA AND GET THE PROGRAM'S STATUS DEF A,I AND O7 MASK OF OTHER BITS INA CHECK IF IN WAIT LIST FOR DOWN LU? CPA B  FOUR? RSS YES, CONTINUE JMP PROCS NO, OUTPUT INPUT ERROR MESSAGE LDA LUMAX GET MAX LU'S IN SYSTEM CMA,CLE NEGATE TO MAX+1 JSB .XLB GET ID(3) - XTEMP(2) WORD DEF UPITA,I ADA B NOW CHECK IF LEGAL LU NUMBER? LDA $OPSY GET SYSTEM TYPE CODE CPA DM9 CHECK IF RTE-IV? SEZ IF LEGAL & RTE-IV, ASSUME = DOWN LU LDB LU IF NOT RTE-IV, ASSUME THAT IT IS THIS TERMINAL EQT ADB OM1 DECREMENT FOR INDEX INTO DRT ADB DRT ADDRESS OF LU ENTRY INTO TABLE LDA B,I GET VALUE AND O77 AND MASK OFF SUBCHANNEL BITS STA TEMP3 SAVE FOR LATER TESTS CLB INITIALIZE LOOP UPLOP LDA B GET CURRENT LU-1 IN A-REG CPA LUMAX CHECK IF AT THE END OF LU TABLE? JMP UPIT3 YES, GO PROCESS ADA DRT NOW CHECK IF IT IS DOWN ADA LUMAX BY LOOKING AT THE SIGN BIT IN DOWN LU LIST LDA A,I GET THE DOWN BIT SSA,RSS DOWN? JMP UPIT2 NO, CONTINUE LDA B YES, GO GET THE EQT NUMBER ADA DRT INDEX INTO THE LU TABLE LDA A,I GET VALUE AND O77 MASK OFF THE SUBCHANNEL BITS STA TEMP1 SAVE DOWN EQT NUMBER CPA TEMP3 SAME AS MINE? JMP UPIT3 YES, GO *UP, IT!! UPIT2 INB NO, BUMP THE LU NUMBER JMP UPLOP GO TRY THE NEXT ONE SPC 1 UPIT3 LDA TEMP1 CALCULATE THE ASCII EQT NUMBER CLB DIV D10 CONVERT TO ASCII ALF,ALF POSITION MOST SIGF. CHAR TO HIGH BYTE ADA B MIRGE IN LOW BYTE ADA ASC00 AND CONVERT TO ASCII STA BUFF+2 SAVE IN BUFFER LDA COMSP GET A COMMA SPACE STA BUFF+1 AND SET UP THE MESSAGE LDA O6 AND SET UP THE MESSAGE LENGTH STA IB SAVE FOR MESSS JMP PROCS AND GO EXECUTE IT SPC 1 PBRUN NOP  ENTRY TO SET OR CLEAR BREAK BIT STA FLUSH SAVE A-REG ADA D20 BUMP TO ID(21) JSB $LIBR O0 NOP TURN OFF INTERRUPT SYSTEM JSB .XLB GET WORD THAT HAS BREAK BIT DEF A,I BLF,ERB EXCHANGE BREAK BIT WITH E-REG RBR,RBR AND POSITION THE WORD RBR BACK TO ITS ORIGIONAL POSITION JSB .XSB AND PUT BACK INTO THE ID DEF A,I LDA FLUSH RESTORE A-REG JSB $LIBX DEF PBRUN AND RETURN SPC 1 DIRCT NOP ENTRY TO PRODUCE DIRECT ADDRESS LDA DIRCT GET THE ADDRESS LDA A,I GET NEXT LEVEL RAL,CLE,SLA,ERA TEST IF ALREADY DIRECT? JMP *-2 NO, GET NEXT LEVEL STA DIRCT,I YES, STORE BACK SZA,RSS CHECK IF FOUND? HLT 0 SORRY ABOUT THAT ISZ DIRCT EXIT P+2 JMP DIRCT,I AND EXIT SPC 1 FLUSH NOP EXECUTE FLUSH COMMAND LDA B2300 GET FLUSH COMMAND IOR LU TO FLUSH STA TEMP3 JSB ICLRW PERFORM DEF *+4 I/O DEF O3 CONTROL DEF CLSAD DEF TEMP3 JMP FLUSH,I RETURN SPC 1 FL JSB FLUSH GO FLUSH THE BUFFER SPC 1 ENABL CLE CLEAR THE TERMINAL INHIBIT FLAG JSB SCFLG JMP WAIT1 CHECK IF ANY PENDING CLASSES SPC 1 SCFLG NOP E-REG = INHIBIT FLAG BIT (15 1ST WORD OF SESSION) JSB $LIBR TURN OFF INTERRUPTS NOP JSB .XLA GET THE DISABLE FLAG WORD SESTB DEF 0 RAL,ERA PUT E-REG IN BIT 15 JSB .XSA PUT BACK DEF SESTB,I JSB $LIBX DEF SCFLG SPC 1 PRINT NOP ENTRY A=LEN, B=ADDRESS STA PRNT1 SAVE MESSAGE LENGTH STB PRNT2 AND MESSAGE BUFFER ADDRESS JSB ICLRW NOW DO CLASS WRITE OF MESSAGE DEF *+7 DEF O2 DEF CLSAD ADDRESS OF CLASS NUMBER IN S yYSTEM MAP DEF LU DEF SESTB SESSION TABLE ADDRESS PRNT2 DEF * MESSAGE BUFFER ADDRESS DEF PRNT1 MESSAGE LENGTH JMP PRINT,I RETURN DONE SPC 1 PRNT1 NOP TEMP FOR MESSAGE LENGTH SPC 1 MESS NOP ENTRY TO EXECUTE MESSAGE IN BUFF JSB MESSS USE SYSTEM ROUTINE DEF *+4 DEF BUFF DEF IB CHARACTOR +LENGTH OF MESSAGE DEF LU LOGICAL UNIT OF POSSIBLE RETURNED MESSAGE JMP MESS,I RETURN A-REG = RETURNED MESSAGE LEN SPC 1 * FIND SON'S IDSEGMENT ADDRESS, E=1 IF DAD IS TEMPORARY PROGRAM SPC 1 FNDSN NOP ENTRY TO FIND SON'S IDSEGMENT ADDRESS CPA LOADR CHECK IF DAD = LOADR RSS CPA BASIC CHECK IF DAD = BASIC CCE,INA,RSS SET THE E-REG CLE,INA BUMP TO XTEMP(2) STA FNDSA SAVE ID(2) ADDRESS ADA D13 BUMP TO ID(15) JSB .XLB GET PROGRAM TYPE WORD & STATUS WORD DEF A,I INA BUMP TO STATUS WORD JSB .XLA GET THE STATUS WORD DEF A,I BLF,BLF POSITION SEZ,RSS IF BASIC OR LOADR, TREAT AS TEMP ELB PUT TYPE BIT IN E-REG ALF,SLA SEE IF WAITING FOR SON? JMP FNDS1 YES, GET HIS ID ADDRESS CLA NO, RETURN A=0 JMP FNDSN,I NO, EXIT A=0 FNDS1 JSB .XLA GET SON'S ADDRESS FNDSA DEF * JMP FNDSN,I RETURN A=0 OR IDSEG OF SON SPC 1 * SET PROGRAM NAME IN BUFF GIVEN IDSEGMENT ADDRESS IN B-REG. SPC 1 SETNA NOP B-REG = IDSEG OF PROGRAM ADB D12 BUMP TO PROGRAMS NAME LDA SOURB GET BUFF+1 ADDRESS INA BUMP TO BUFF+2 ADDRESS JSB TMOVE AND MOVE THE WORDS LDA BUFF+4 GET 6TH CHARACTER AND OM400 EXTRACT LAST CHAR IOR O40 AND PUT IN TRAILING SPACE STA BUFF+4 AND SAVE IN BUFFER LDA COMSP GET COMMA & SPACE kSTA BUFF+1 NOW BUFFER = "XX, PROGM ,1" JMP SETNA,I RETURN B=IDSEG(15) SPC 1 TOADR NOP TO ADDRESS IN CURRENT USER MAP TMOVE NOP ENTRY TO MOVE 3 WORDS FROM SYSTEM MAP TO USER STA TOADR STB FROMA LDB OM3 GET COUNTER TMOV1 JSB .XLA FROMA DEF * STA TOADR,I AND SAVE ISZ FROMA ISZ TOADR ISZ B CHECK IF DONE? JMP TMOV1 NO, CONTINUE JMP TMOVE,I AND EXIT DONE SPC 1 EXIT JSB EXEC NORMAL TERMINATE DEF *+4 DEF O6 MAKING IT SERIAL REUSEABLE DEF O0 DEF OM1 SPC 1 LOG03 NOP ENTRY TO PASS LOGOF FLAG TO LSPNS CCA DISABLE TERMINAL & PROGENITOR JSB $LIBR TURN OFF INTERRUPTS NOP JSB .XSA "LSPNS" MUST RE-ENABLE TERMINAL DEF SESTB,I JSB $LIBX DEF *+1 DEF *+1 JSB ICLRW DO CORE WRITE TO LSPNS DEF *+5 DEF O0 DEF CLASP CLASS ADDRESS OF CLAS% DEF LU LOGICAL UNIT OF SESSION DEF O1 LOGOF FLAG MUST BE > 0 JMP LOG03,I AND RETURN SPC 1 TEMP3 NOP NEG CHAR COUNT IA NOP IB NOP LU NOP LOADR NOP IDSEGMENT ADDRESS OF LOADR BASIC NOP IDSEGMENT ADDRESS OF BASIC D21 DEC 21 NA10 ABS 10+100000B D10 DEC 10 D12 DEC 12 D13 DEC 13 D15 DEC 15 O1 OCT 1 O2 OCT 2 O3 OCT 3 O4 OCT 4 O6 OCT 6 O7 OCT 7 O20K OCT 20000 OM1 OCT -1 OM2 OCT -2 OM3 OCT -3 DM9 DEC -9 DM52 DEC -52 BUFF BSS 27 D20 DEC 20 D22 DEC 22 RCLAS NOP ASCUP ASC 1,UP ASCFL ASC 1,FLUSH ASCBR ASC 1,BREAK ASCUN ASC 1,UNBREAK ASCOF ASC 1,OFF ASCST ASC 1,STATUS ASCSS ASC 1,SSSUSPEND ASCGO ASC 1,GO AFTER A SS ASCAB ASC 1,ABORT M0SPA OCT -30040 NEG ASC 1,0 TEMP1 NOP TEMP2 NOP CMCNT NOP COMMA COUNTER AUTCD NOP *3-1 AUTHORIZATION CODE O77 OCT 77 O177 OCT 177 O40 B@LU,7","07>EQ,7",...). * 3 = UNRESTRICTED USE OF ALL RTE COMMANDS * -N = ANY NEGATIVE NUMBER PREVENTS THE TERMINAL FROM BEING ENABLED. * ITS "ATTENTION INTERRUPT" IS DISABLED UNTIL THE TERMINAL IS * ENABLED (:CN,,16) FROM ANOTHER TERMINAL. * * CHARACTERS BEYOND THE 5TH PARAMETER (AUTHORIZATION) ARE PASSED TO * THE SCHEDULED PROGRAM IN A "STRING BUFFER" (SEE RTE MANUAL UNDER * CALL EXEC 14). THIS FEATURE IS USED BY FMSEQ TO EXECUTE A PASSED * COMMAND BEFORE GIVING CONTROL TO THE SESSION TERMINAL (EXAMPLES BELOW). * * LINES BEGINNING WITH ASTERISK (*) ARE COMc8  MENTS AND MAY BE PLACED * ANYWHERE WITHIN THIS FILE. THEY ARE IGNORED BY THE LOGON PROCESS. * * IF USER ID SECURITY IS REQUIRED, THE "/IDNAM" FILE MAY BE READ- * PROTECTED WITH A NEGATIVE SECURITY CODE, PROVIDED THAT THIS SECURITY * CODE IS THE NEGATION OF THE MASTER SECURITY CODE. * !!!!!!!!!!!!! * !! CAUTION !! * !!!!!!!!!!!!! * CARE MUST BE TAKEN WHENEVER THE MASTER SECURITY CODE IS BEING CHANGED * TO ALSO CHANGE THE SECURITY CODE OF THIS FILE. A NEGATIVE SECURITY * CODE THAT IS NOT THE NEGATED MASTER SECURITY CODE WILL STOP ALL ACCESS * TO THIS SYSTEM. * * LOWEST AUTHORIZATION F FMSEQ,0G,0G,0G,,0 * HIGHEST AUTHORIZATION FMGR FMSEQ,0G,0G,0G,,3,:DP,YOU HAVE THE HIGHEST AUTHORIZATION. * * THIS IS HOW TO SCHEDULE DTSXX IN SIMPLE TESTING MODE. TEST FMSEQ,0G,0G,0G,4,0,:TR,TEST::-2 * * THIS IS HOW TO SCHEDULE DTSXX IN TECH MODE. TECH FMSEQ,0G,0G,0G,4,1,:TR,TECH::-2 * * THIS AUTHORIZATION GIVES FULL RTE ACCESS AND WILL EXECUTE THE * THE FMGR COMMAND ":DP, MESSAGE" SERVICE FMSEQ,0G,0G,0G,,3,:DP,OK SERVICEPERSON, THIS IS REV D. DTS-70 * * THIS LOGON STRING WILL GIVE YOU A DIRECTORY LISTING RIGHT UP FRONT. DL FMSEQ,0G,0G,0G,,0,:DL,-2 * * THIS LOGON STRING WILL GIVE YOU THE "UPMESS" FILE FOR LOGON. DEMO1 FMSEQ,0G,0G,0G,,2,:DU,UPMESS::-2,0G P  U\ 09570-18696 1830 S 0122 &TBLH# SESSION TABLE             H0101 OASMB,R,L * NAM TBLH#,14 PRE-REL 771222 (DLB) 10 TERMINALS NAM TBLH#,13 09570-16696 REV. D 780601 (10 TERMINALS) ENT TBLH#,TBLE#,CLAS#,CLAS% * *-------------------------------------------------------- * * RELOC. 09570-16696 * SOURCE 09570-18696 * * D. L. BASKINS 13 OCT 76 REV. A * *-------------------------------------------------------- CLAS# NOP CLAS% NOP TBLH# DEF *+1 REP 10 BSS 8 TBLE# DEF * END |+ V\ 09570-18723 1830 S 0122 &PUTID PRODUCE ID SEGMENT             H0101 ASMB,R,L,C * NAM PUTID,7 09570-16723 PRE-REL 770302 NAM PUTID,7 PRE-REL (RTE-IV) 780327 (DLB) * *-------------------------------------------------------- * * RELOC. 09570-16723 * SOURCE 09570-18723 * * W A GROVES 22 FEB 77 PRE-RELEASE * MODIFIED 3-3-77 (DLB) * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY,1976. * ALL RIGHTS RESERVED.THE INFORMATION CONTAINED ON * THIS MEDIUM MAY BE USED WITH ONLY ONE COMPUTER * AT A TIME.IT SHALL NOT OTHERWISE BE RECORDED, * TRANSMITTED,OR STORED IN A RETRIEVAL SYSTEM. * COPYING OR OTHER REPRODUCTION WITHOUT PRIOR WRITTEN * CONSENT OF HEWLETT-PACKARD COMPANY IS PROHIBITED, * EXCEPT THAT ONE COPY MAY BE MADE AND RETAINED FOR ARCHIVE * PURPOSES ONLY. * * --------------- * * THE INFORMATION CONTAINED ON THIS MEDIUM IS PROPRIETARY * TO HEWLETT-PACKARD COMPANY. IT MAY BE USED WITH ONE * COMPUTER ONLY AND IS NOT TO BE DISCLOSED TO ANY THIRD * PARTIES OR REPRODUCED IN ANY FORM EXCEPT THAT IT MAY BE * TRANSFERRED TO ONE BACKUP COMPUTER DURING A COMPUTER * MALFUNCTION OR DURING PREVENTIVE MAINTENANCE. * *-------------------------------------------------------- ENT PUTID EXT IDRPL,IDDUP,IDSGA,.DFER EXT .ENTR,FSTAT,LOPEN EXT LCLOS EXT .XLA A EQU 0 B EQU 1 XEQT EQU 1717B SECT3 EQU 1760B * * THIS SUBROUTINE WILL DO WHATEVER IS NECESSARY * TO MAKE A PROGRAM SCHEDULEABLE BY AN EXEC CALL. * THE PROGRAM WILL BE RENAMED WITH TERMINAL LU * AS THE LAST 2 CHARACTERS OF THE NAME IF THE * ID SESSION BIT OF THE CALLING PROGRAM IS SET * AND THE "IH" FLAG IS NOT SET UNLESS THE PROGRAM * TO BE SCHEDULED IS A NON-DUPLICATABLE PROGRAM. * (NOT SET UP AS TYPE 6 FILE OR IF ID-SEGMENT IS * IN CORE, ID SEGMENT WAS NOT SET UP BY ":RP") * * CALLING SEQUENCE: * CALL PUTID(IDCB,IERR,NAME,LU,IRPFLG) * * WHERE: *  IDCB= 144 WORD FMGR DCB BUFFER FOR SUBROUTINE USE * IERR= FMGR ERROR RETURN VARIABLE * NAME= 6-ELEMENT ARRAY AS FOLLOWS: * * NAME(1-3)= PROGRAM NAME * NAME(4)= NOT USED FOR * "NAMR" COMPATABILITY. * NAME(5)= TYPE 6 FILE SECURITY * IF "IH", INHIBIT RENAMING. * NAME(6)= TYPE 6 FILE CRN * IF "0", SEARCH LU 2,3 * NAME(1-3) WILL BE CHANGED BY PUTID * TO THE APPROPRIATE SESSION NAME * IF SESSION CONDITIONS ARE MET. * LU= TERMINAL LU * IRPFLG= NON-ZERO IF CALLING PROGRAM * SHOULD RELEASE PROGRAM'S ID * SEGMENT (CALL IDRPD) AFTER PROGRAM * HAS COMPLETED. * HED FORTRAN EXAMPLE * FORTRAN EXAMPLE: * FTN4,L * PROGRAM RPTST(3,1000) * DIMENSION NAME(13),IBUF(10),IDCB(144) * C GET TERMINAL LU (ITMLU MUST BE CALLED FIRST!) * LU=ITMLU(IDMY) * WRITE (LU,10000) * 10000 FORMAT ("ENTER PROGRAM NAMR") * READ (LU,10100)NAME * 10100 FORMAT (13A2) * C * C PARSE USING NAMR * C * IST=1 * IEND=26 * CALL NAMR(IBUF,NAME,IEND,IST) * CALL PUTID(IDCB,IERR,IBUF,LU,IRP) * IF (IERR .NE. 0) GO TO 9000 * C * C SCHEDULE PROGRAM * C * CALL EXEC(100027B,IBUF,LU) * GO TO 8000 * 100 IF (IRP .NE. 0) CALL IDRPD(IBUF) * STOP * 8000 WRITE (LU,10200) * 10200 FORMAT ("SCHEDULE CALL FAILED.") * GO TO 100 * 9000 WRITE (LU,10300) IERR,(IBUF(I),I=1,3) * 10300 FORMAT (/"/FMGR: ERR#"I6" ON "3A2) * GO TO 100 * END * END$ HED SUBROUTINE T?yO MAKE PROGRAM SCHEDULEABLE ADDCB NOP * ADERR NOP * ADNAM NOP * ADLU NOP * ADRPF NOP * PUTID NOP * JSB .ENTR * DEF ADDCB * JSB .DFER * MOVE PROGRAM NAME DEF NWNAM * TO INTERNAL BUFFER. DEF ADNAM,I * LDB ADNAM * ADB =D4 * LDA B,I * GET FILE SECURITY. STA SEC * INB * LDA B,I * GET FILE CRN STA CRN * CLA * STA ADRPF,I * CLEAR RP FLAG STA RNFLG * CLEAR RENAME FLAG. STA ADERR,I * CLEAR ERROR VARIABLE LDA IH * CPA SEC * INHIBIT OPTION? JMP TRYOV * YES. LDA XEQT * ADA =D20 * CHECK IF SESSION BIT IS SET JSB .XLA * DEF A,I * LDA A,I AND SESBT * SZA,RSS * IN SESSION? JMP TRYOV * NO. CCA * YES. SET RENAMING FLAG. STA RNFLG * CLB * LDA ADLU,I * GET TERMINAL LU DIV =D10 * CHANGE TERMINAL LU TO ASCII ALF,ALF * IOR B * IOR "00" * STA TEMP * DLD NWNAM * GET FIRST 2 CHARACTERS OF AND =B377 * PROGRAM NAME CPA =B40 * IMBEDDED SPACE? LDA DOT * YES. REPLACE WITH DOT. IOR NWNAM * STA NWNAM * LSR 8 * CHECK THIRD CHARACTER. CPB =B40 * BLANK? LDB DOT * YES. MAKE DOT. LDA TEMP * RRL 8 * IOR =B40 * MAKE LAST CHARACTER BLANK. STB NWNAM+1 * STA NWNAM+2 * TRYOV JSB IDSGA * IS GENERIC ID-SEGMENT IN CORE? DEF *+2 * DEF ADNAM,I * USE GENERIC NAME. SZA,RSS * FIND IT? JMP RPIT * NO. LDB RNFLG * YES. SZB,RSS * NEED TO RENAME IT? JMP PUTID,I * NO. EXIT.  ADA =D26 * INDX TO DISC ADDRESS WORD JSB .XLA * GET DISC ADDRESS DEF A,I * LDA A,I STA TEMP * SAVE TILL LATER JSB IDDUP * TRY IN-CORE DUPLICATE. DEF *+4 * DEF ADNAM,I * OLD NAME DEF NWNAM * NEW NAME DEF ADERR,I * ERROR VARIABLE SZA,RSS * ERROR? JMP RPFEX * NO. EXIT. CPA =D16 * (UNKNOWN BASKINS ERROR) JMP OKERR * EXIT. CPA =D17 * ID SEGMENT NOT SET-UP BR ":RP" ? JMP OKERR * YES. USE GENERIC NAME ID. CPA =D23 * DUPLICATE ID ? RSS * YES. JMP PUTID,I * ERROR EXIT. JSB IDSGA * GET ID# OF DUPLICATE ID. DEF *+2 * DEF NWNAM * SZA,RSS * FIND ID? JMP TRYOV * NO. WHO OFF'D MY ID? ADA =D26 * YES. BUMP TO DISC TRACK ADDRESS. JSB .XLA * DEF A,I * LDA A,I CPA TEMP * DISC ADDRESS SAME AS GENERIC ID? JMP RPFEX * YES. USE IT, BUT SET ":RP,," FLAG. JMP BDERR * NO. ERROR EXIT. RPIT JSB IDSGA * DEF *+2 * SEE IF RENAMED ID IS IN CORE DEF NWNAM * SZA * FIND IT? JMP RPFEX * YES. EXIT. LDA CRN * NO. STA LUCRN * SZA * CRN SEARCH? JMP ONECR * NO. USE GIVEN CRN. LDA SECT3 * YES. GET# OF LU 3 SECTOR/TRACK SZA * LU 3 MISSING? JMP GTCRN * NO. LDA =D-2 * YES. SEARCH LU 2 ONLY. STA LUCRN * ONECR CCA * ONLY ONE CARTRIDGE TO SEARCH. STA #CRNS * JMP OPNIT * TRY TO OPEN. GTCRN JSB FSTAT * GET MOUNTED CARTRIDGE LIST DEF *+2 * DEF ADDCB,I *3-3 USE PASSED DCB BUFFER CLA * STA LUCRN * LDA ADDCB * STA CRADD * SET CURRENT ADDRESS TO START OF BUFFER GTLOP LDA CRADD,I * GET CARTRIDGE LU SZA,RSS * END OF LIST? JMP OPNIT * YES. AND =B77 * CPA =D2 * LU=2? JMP FOUND * YES. CPA =D3 * NO. IS THIS LU 3? JMP FOUND * YES. LDA CRADD * NO. ADA =D4 * BUMP ADDRESS STA CRADD * JMP GTLOP * DO SOME MORE. FOUND CMA,INA * STA LUCRN * SAVE STARTING LU. LDA =D-2 * SET # CRN'S TO SEARCH AS 2. STA #CRNS * OPNIT JSB LOPEN * OPEN TYPE 6 FILE DEF *+7 * FOR THIS PROGRAM DEF ADDCB,I * DEF ADERR,I * DEF ADNAM,I * USE GENERIC NAME DEF D1 * DEF SEC * DEF LUCRN * USE APPROPRIATE CRN SSA,RSS * OPEN SUCCESSFUL? JMP RPLIT * YES. CPA =D-6 * NO. VALID ERROR (NOT FOUND) ? RSS * YES. JMP PUTID,I * NO. BAIL OUT. ISZ #CRNS * SEARCH ANOTHER CRN? RSS * YES. JMP PUTID,I * NO. BAIL OUT. LDA LUCRN * GET CURRENT CRN. CLB,INB * CPA =D-2 * WAS THIS LU 2? CCB * YES. ADA B * BUMP CRN UP OR DOWN APPROPRIATELY. STA LUCRN * JMP OPNIT * TRY OPEN AGAIN RPLIT JSB IDRPL * DEF *+4 * DO ":RP" ON PROGRAM DEF ADDCB,I * DEF ADERR,I * DEF NWNAM * PUT IN NEW NAME JSB LCLOS * DEF *+2 * CLOSE PROGRAM FILE DEF ADDCB,I * LDA ADERR,I * SZA,RSS * ANY ERROR? JMP RPFEX * NO. EXIT. CPA =D23 * YES. DUPLICATE ID? JMP RPFEX * USE THE ID ALREADY THERE. JMP PUTID,I * ERROR EXIT. RPFEX CCA * STA ADRPF,I * SET ":RP,," FLAG. CLA * STA ADERR,I * CLEAR ERROR VARIABLE. BDERR JSB .DFER * DEF ADNAM,I * RETURN NEW NAME (IF CHANGED) DEF NWNAM * JMP PUTID,I * EXIT OKERR CLA * STA ADERR,I * $"RESET ERROR PARAMETER JMP PUTID,I * DON'T SET ":RP,," SWITCH. DON'T RENAME. HED PUTID VARIABLES CRADD NOP * CRN NOP * #CRNS NOP * D1 DEC 1 * DOT OCT 56 * IH ASC 1,IH * LUCRN NOP * NWNAM BSS 3 * "00" ASC 1,00 * RNFLG NOP * SEC NOP * SESBT OCT 20000 * TEMP NOP * END $ W b 09570-18737 1830 S 0122 &IFATN TEST FOR BREAK             H0101 GASMB,R,L,C HED "IFATN" TEST BREAK BIT IN THIS PROG & CLEAR IN FATHERS 12-77 (DLB) * NAME: IFATN * NAM IFATN,7 PRE-REL 771215 (DLB) 20:45 NAM IFATN,7 PRE-REL 780406 (DLB) (RTE-IV) * ENT IFATN EXT $LIBR,$LIBX EXT .XLA,.XSA,.XLB SPC 1 A EQU 0 B EQU 1 XEQT EQU 1717B KEYWD EQU 1657B SPC 1 * CALLING SEQUENCE: * * IF(IFATN(IDMY)) 10,20 * * WHERE: 10 BRANCH WILL BE TAKEN IF SET & WILL CLEAR IT. * 20 BRANCH WILL BE TAKEN IF NOT SET * * JSB IFATN * DEF *+1 * A-REG. = -1 IF SET, ELSE A-REG = 0 * BREAK BIT WILL ALWAYS BE CLEARED IF SET! SPC 1 IFATN NOP ENTRY FROM FTN LDA IFATN,I GET P+1 ADDRESS STA IFATN SET RETURN ADDRESS LDB XEQT GET IDSEG ADDRESS OF THIS PROG ADB D20 GET ID(21) ADDRESS JSB .XLA GET CONTENTS OCT 100001 (LDA B,I) OR (XLA B,I) ALF,CLE,SLA,ERA PUT BIT IN E-REG AND TEST IF SET? JMP IFAT1 SET, CONTINUE CLA,CLE NO, EXIT JMP IFATN,I NO, RETURN A=0 SPC 1 IFAT1 JSB $LIBR TURN OFF INTERRUPTS NOP GO PRIV IFAT2 RAR,CLE,SLA PUT FATHER WAITING BIT IN E-REG CCE FATHER IS WAITING!! RAR,RAR AND POSITION WORD BACK TO PROPER POSITION JSB .XSA RESTORE WORD 21 OCT 100001 (STA B,I) CCB,SEZ,RSS CHECK IF FATHER IS WAITING? JMP IFAT3 NO, EXIT DONE AND O377 GET POSSIBLE FATHERS ID ADDRESS ADB KEYWD MINUS ONE ADB A JSB .XLB GET CONTENTS OF KEYWORD OCT 100001 ADB D20 AND INDEX INTO WORD 21 JSB .XLA AND GET THE CONTENTS OCT 100001 INDIRECT POINTER INTO B-REG ALF,CLE,SLA,ERA SWALLOW BIT AND TEST IF SET? JMP IFAT2 YES, CONTINUE IFAT3 CCA,CCE EXIT A-REG = -1 JSB $LIBX DEF IFATN SPC 1 D20 DEC 20 Z  O377 OCT 377 END ,  X_ 09570-18742 1830 S 0122 &ICLRW ICLRW             H0101 ASMB,R,L,C HED "ICLRW" CLASS READ/WRITE ROUTINE 4-78 (DLB) NAM ICLRW,6 PRE-REL 780509 (DLB) RTE-IV ENT ICLRW EXT .ENTP,.XSB,.XLA,EXEC EXT $LIBR,$LIBX,KYBRD SPC 1 A EQU 0 B EQU 1 SPC 1 * PURPOSE: * THIS ROUTINE WILL DO FOOLPROOF CLASS I/O FOR A SET OF * PROGRAMS THAT TALK TO MULTIPLE TERMINALS IN A NON-STOP * FASHION. (I.E. MTM & THE LID SESSION MONITOR ETC.) * TO USE THIS SUBROUTINE, A TERMINAL AND A PRE-ASSIGNED * WORD IN SYSTEM MEMORY FOR SAVING CLASS NUMBER MUST BE * DEFINED. THIS ROUTINE ESTABLISHES A CONSISTENT METHOD OF * PASSING PARAMETERS AND I/O AROUND A SET OF GLOBAL (NON-SESSION) * PROGRAMS FOR THE PURPOSE OF SUPPORTING A SESSION MONITOR * IN AN RTE II, III & IV SYSTEM. * * FEATURES: * 1) "ICNWD" IS THE PARAMETER THAT IS USED TO PASS THE TERMINAL * LU OF A SESSION FROM PROGRAM TO PROGRAM & I/O DEVICE. * 2) "ISTBL" IS THE PARAMETER THAT IS USED TO PASS THE ADDRESS * IN THE SYSTEM MAP FOR A PETICULAR SESSION TABLE ENTRY. * 3) THIS SUBROUTINE IS "NON-STOP". THIS MEANS THERE IS * NO LACK OF A RESOURCE OR CONDITION OF AN I/O DEVICE * THAT CAN STOP OR PREVENT IMMEDIATE RETURN TO THE * CALLER. THE A-REG WILL RETURN 0 IF SUCCESSFUL EXECUTION * OR A NEGATIVE NUMBER NOTING THE REASON FOR FAILURE. * * THIS ROUTINE WILL CHECK FOR THE FOLLOWING ERROR CONDITIONS: * * 1) NOT ENOUGH S.A.M TO PROCESS THE REQUEST * 2) DEVICE LU/EQT IS DOWN. * 3) AN LU LOCK ON TERMINAL WILL NOT STOP THE I/O * 4) GET A NEW CLASS NUMBER IF THE PASSED ADDRESS * DOES NOT POINT TO A LEGAL ONE AND PUT THE NEWLY * ALLOCATED NUMBER IN THAT MEMORY LOCATION. (NOTE: * THE ADDRESS MUST POINT TO MEMORY IN SYSTEM MAP!) * 5) WILL NOT WAIT FOR A NEW CLASS NUMBER IF REQUIRED. * 6) TEST IF "ICNWD" IS A TERMINAL. * * CALLED: * * BUFFER PASS DEVICE READ DEVICE WRITE DEVICE CONTROL * JSB ICLRW JSB ICLRW JSB ICLRW JSB ICLRW * 4DEF *+7 DEF *+7 DEF *+7 DEF *+5 OR 6 * DEF ZERO DEF ONE DEF TWO DEF THREE * DEF CLADR DEF CLADR DEF CLADR DEF CLADR * DEF ICNWD DEF ICNWD DEF ICNWD DEF ICNWD * DEF ISTBL DEF ISTBL DEF ISTBL DEF ISTBL * DEF IBUFR DEF ZERO DEF IBUFR DEF IPARM (OPT) * DEF IBUFL DEF IBUFL DEF IBUFL * * * WHERE: * ZERO = WRITE TO CORE, CLASS GET PROGRAM PROCESSES AS READ. * ONE = DEVICE READ, CLASS GET PROGRAM PROCESSES AS READ. * TWO = DEVICE WRITE, CLASS GET PROGRAM IGNORES. * THREE = DEVICE CONTROL, CLASS GET PROGRAM IGNORES. * CLADR = POINTER TO ADDRESS OF CLASS WORD IN SYSTEM MAP. * (CLASS WORD MUST BE IN SYSTEM MAP AND MAY BE BELOW FENCE.) * (SOOOOOO BE VERY CAREFULL ABOUT WHERE THIS POINTS!!!!!!!!) * ICNWD = LOGICAL UNIT OF SESSION + CONWD BITS IF DEVICE ACCESS. * (ALSO PASSED AS 1ST OPTION WORD FOR CLASS GET CALL) * MUST!! BE KEYBOARD DEVICE (DVR00 OR DVR05) * ISTBL = POINTER TO ADDRESS OF SESSION PROGENITOR PROGRAM. * (OR MORE SIMPLY, 2ND OPTION WORD FOR CLASS GET CALL) * IBUFR = OUTPUT BUFFER OR OPTIONAL PARAMETER FOR DEVICE CONTROL * IBUFL = OUTPUT BUFFER LENGTH OR MAX INPUT BUFFER LENGTH * * ERRORS: RETURN IN A-REG ONLY * * 0 = NO ERROR * -1 = NO CLASS NUMBER AVAILABLE * -2 = NO MEMORY NOW OR BUFFER LIMIT EXCEEDED * -7 = TERMINAL DEVICE IS DOWN * -6 = SPECIFIED LU IS NOT A TERMINAL * -5 = ICODE IS NOT 0 TO 3 SPC 1 TDB NOP D14 DEC 14 NOP RNUMB NOP CURRENT LOCAL CLASS WORD DCLAS NOP ADDRESS OF CLASS WORD IN SYSTEM MAP ICWRD NOP ADDRESS OF CURRENT CLASS LU LU NOP CURRENT LOGICAL UNIT NUMBER CLASS NOP CURRENT CLASS NUMBER SPC 1 ICODE NOP REQUEST CODE 0 - 3 CLADR NOP ADDRESS OF ADDRESS OF CLASS WORD ICNWD NOP  I/O LU, SESSION LU & 1ST OPTION WORD ISTBL NOP ADDRESS OF ADDRESS OF PROGENITOR & 2ND OPTION WORD IBUFR NOP I/O BUFFER OR IPRAM IF EXEC(3.. IBUFL NOP BUFFER LENGTH -CHARS, +WORDS ICLRW NOP ENTRY POINT JSB $LIBR MAKE THIS ROUTINE RE-ENTRENT DEF TDB BUT IT CANNOT BE RE-ENTERED!! JSB .ENTP GET PARAMETER ADDRESSES DEF ICODE TOP OF LIST JSB $LIBR GO PRIVLEDGE TO PREVENT RE-ENTRY NOP STA TDB+2 SAVE RETURN ADDRESS LDA DZERO GET A DEF TO A ZERO ICLR1 CPB DFENT CHECK IF MORE UNPASSED PARAMS JMP ICLR2 NO, CONTINUE STA B,I STORE DEF'S TO ZERO INB IN UN-PASSED PARAMETERS JMP ICLR1 CONTINUE SPC 1 ICLR2 LDA ICODE,I GET THE REQUEST CODE AND O3 CHECK IF IN BOUNDS CPA ICODE,I CHECK IF CHANGED RSS OK, 0 - 3 JMP RQERR NO, REQUEST CODE ERROR LDB ICNWD GET DEF TO CONTROL WORD SZA,RSS CHECK IF = 0 LDA O4 CHANGE 0 TO 20 CPA O4 CHECK IF WAS = 0 LDB DZERO GET A DEF TO ZERO STB ICWRD SAVE FOR CALL EXEC LDB DFCLA GET A DEF TO CLASS CPA O3 CHECK IF CONTROL REQUEST STB IBUFL YES, PUT CLASS WORD AT 4TH PARM ADA NA16 FORM EXEC REQUEST CODE STA ICODE AND SAVE FOR EXEC CALL JSB KYBRD CHECK IF LEGAL TERMINAL? DEF *+3 DEF ICNWD,I DEF RNUMB ALSO EXTRACT LU LOCK OVERRIDE WORD SSA CHECK IF ANY ERRORS? JMP LUERR YES, ERROR EXIT STA LU SAVE LOGICAL UNIT NUMBER LDA CLADR,I GET THE CLASS NUMBER ADDRESS STA DCLAS SAVE FOR POSSIBLE STORE JSB .XLA GET THE POSSIBLE CLASS NUMBER DEF DCLAS,I FROM THE SYSTEM MAP CCE,RSS SKIP 1ST TIME BADCL CLA,CCE BAD CLASS NUMBER, GET ANOTHER ONE RAL,ERA MERGE IN NȧO WAIT BIT STA CLASS SAVE FOR LOCAL USE JSB $LIBX DEF *+1 DEF *+1 JSB EXEC DEF *+10 DEF ICODE NA17, NA18, NA19 OR NA20 DEF ICWRD,I LOGICAL UNIT OF I/O DEF IBUFR,I BUFFER ADDRESS DEF IBUFL,I BUFFER LENGTH DEF ISTBL,I ADDRESS OF PROGENITORS NAME DEF LU PASS TERMINAL LU THRU CLASS PARAMETERS DFCLA DEF CLASS THE IN LIBRARY ENTRY FOR HOLDING CLASS # DZERO DEF ZERO PLACE HOLDER FOR LU LOCK OVERRIDE DEF RNUMB RN NUMBER OF PUSH THRU * DESIGN IN A LITTLE AIR IN CASE ABORT EXIT IS NOT FROM A BAD CLASS # LDA NA16 BAD CLASS NUMBER, GET ANOTHER ONE JSB $LIBR TURN OFF INTERRUPTS OCT 0 CPA NA16 CHECK IF BAD CLASS NUMBER JMP BADCL YES, GO TRY FRESH LDB CLASS NOW PUT CLASS NUMBER BACK JSB .XSB IN ITS PROPER PLACE DEF DCLAS,I IN THE SYSTEM MAP EEXIT JSB $LIBX EXIT A=0 >> GOOD EXIT DEF *+1 DEF *+1 JSB $LIBX DEF TDB ZERO DEC 0 SPC 1 RQERR CLA,CCE ERROR -5 LUERR ADA OM5 ERROR -6 OR -7 JMP EEXIT AND EXIT SPC 1 O3 OCT 3 O4 OCT 4 OM5 OCT -5 NA16 ABS 16+100000B DFENT DEF ICLRW END r Yb 09570-18749 1830 S 0122 >STB GTSTB             H0101 ASMB,R,L,C HED "GTSTB" ROUTINE TO GET SESSION TABLE ENTRY 5-78 (DLB) NAM GTSTB,6 PRE-REL 780512 (DLB) 15:25 ENT GTSTB EXT .ENTP,.XLA,.XLB,.ZPRV EXT TBLH#,TBLE# SPC 1 A EQU 0 B EQU 1 SPC 1 * PURPOSE: TO GET THE SESSION TABLE ENTRY AND ADDRESS * GIVEN AN LU NUMBER * * CALLED: * JSB GTSTB * DEF *+4 * DEF LU LOGICAL UNIT OF SESSION * DEF PNAME RETURNED 8 WORD BUFFER (SESSION ENTRY) * DEF SYSAD RETURNED SESSION TABLE ENTRY IN SYSTEM MAP * A-REG = 0 IF NO SESSION ENTRY * A-REG BIT 15 = 1 IF TERMINAL DISABLED SPC 1 LU NOP PNAME NOP SYSAD NOP GTSTB NOP ENTRY JSB .ZPRV DEF LIBX JSB .ENTP DEF LU JSB .XLB GET THE STARTING ADDRESS OF SESSION TABLE DEF TBLH#+0 MORE ADB O2 BUMP TO THE LU WORD JSB .XLA AND GET THE CONTENTS DEF B,I AND O77 MASK TO JUST LU CPA LU,I CHECK IF SAME AS CALLERS? JMP FOUND YES, GOT IT ADB O6 NO, BUMP TO NEXT ENTRY JSB .XLA GET END ADDRESS OF SESSION TABLE DEF TBLE#+0 CPB A CHECK IF END? JMP MISSG YES, EXIT NOT FOUND JMP MORE NO, CONTINUE SPC 1 FOUND ADB OM2 BACK UP THE START ADDRESS STB TABLE SAVE THE STARTING TABLE ADDRESS STB SYSAD,I AND SEND BACK TO CALLER JSB .XLA GET 1ST WORD DEF B,I STA SAVA SAVE FOR EXIT RAL,CLE,ERA STRIP OFF BIT 15 LDB DM8 GET COUNTER JMP FOUN2 FOUN1 JSB .XLA GET NEXT WORD FROM TABLE TABLE DEF * FOUN2 STA PNAME,I AND SENT BACK TO CALLER ISZ TABLE BUMP TO NEXT WORD ISZ PNAME INB,SZB CHECK IF END OF TABLE? JMP FOUN1 NO, CONTINUE LDA SAVA LIBX JMP GTSTB,I AND RETURN DEF GTSTB SPC 1 MISSG CCA i   ERROR RETURN STA PNAME,I SET NAME BAD INA SET E-REG AND EXIT A=0 STA SYSAD,I SET ADDRESS TO 0 JMP LIBX AND RETURN TO CALLER SPC 1 O2 OCT 2 O6 OCT 6 O77 OCT 77 OM2 OCT -2 DM8 DEC -8 SAVA NOP END   Za 09570-18754 1830 S 0122 &KYBRD KYBRD             H0101 ASMB,R,L,C HED "KYBRD" ROUTINE TO CHECK IF LU IS A TERMINAL 4-78 (DLB) NAM KYBRD,6 PRE-REL 780509 (DLB) RTE-IV ENT KYBRD EXT .ENTP,$RNTB,.XLA,$LIBR,$LIBX SPC 1 A EQU 0 B EQU 1 EQTA EQU 1650B DRT EQU 1652B LUMAX EQU 1653B SPC 1 * PURPOSE: * THIS ROUTINE CHECKS IF THE GIVEN LU IS AN INTERACTIVE DEVICE * AND IT IS UP AND THEORITICALLY OPERABLE. * * CALLED: * * JSB KYBRD JSB KYBRD * DEF *+2 DEF *+3 * DEF LU DEF LU * DEF LULOK * * WHERE: * * LU = LOGICAL UNIT NUMBER TO TEST (MAY INCLUDE CONWD BITS) * LULOK = OPTIONAL PARAMETER THAT PASSES BACK THE LU LOCK * OVERRIDE WORD THAT MAY BE PASSED IN THE EXEC CALL. * * EXIT: * A-REG = 6 BIT LU >> PASSED LU IS A TERMINAL THAT IS NOT DOWN * E-REG = 0 >> LU IS OK * ERRORS: * A-REG = -2 >> THE LU OR EQT IS DOWN * A-REG = -1 >> THE PASSED LU IS NOT A LEGAL TERMINAL * E-REG = 1 >> ERROR SPC 1 ICNWD NOP LOGICAL UNIT TO TEST RNUMB DEF DFCLU RETURNED LU-LOCK PUSHTHRU KYBRD NOP ENTRY POINT JSB $LIBR MAKE PRIVLEDGE TO AVOID REAL NOP TIME CHANGES TO TABLES JSB .ENTP GET PARAMETER ADDRESSES DEF ICNWD LDA ICNWD,I GET THE LOGICAL UNIT NUMBER AND O77 MASK OFF CONTROL BITS STA ICNWD SAVE FOR EXIT LDB LUMAX GET HIGHEST LU NUMBER CMB,CLE NEGATE - 1 ADB A CHECK IF < HIGHEST + 1 CMA,INA SET E-REG IF LU = 0 CMA,SEZ CHECK IF 0>LU->LUMAX JMP LUERR YES, IGNORE ADA DRT TO CHECK IF LEGAL TERMINAL DEVICE STA DFCLU SAVE THE ADDRESS OF THE LU ENTRY ADA LUMAX AND INDEX INTO 2ND HALF OF TABLE LDA A,I TO GET UP/DOWN BIT SSA CHECK IF LU IS UP? JMP DNERR NO LU IS DOWN--FORGET IT  LDA DFCLU,I GET THE LU ENTRY AND O77 GET THE EQT ENTRY CMA,INA,SZA,RSS CHECK IF EQT = 0? JMP LUERR YES, IGNORE CMA SUBTRACT ONE MPY D15 INDEX INTO THE EQT TABLE ADA EQTA ADD IN START ADDRESS ADA O4 BUMP EQUIPMENT STATUS/TYPE CODE LDA A,I AND GET THE VALUE RAL,CLE,ELA POSITION DOWN BIT TO E-REG CLB,SEZ CHECK IF EQT IS DOWN? JMP DNERR YES, EQT DOWN--FORGET IT LSL 6 PUT EQUIPMENT TYPE CODE IN B-REG LDA DFCLU,I GET THE SUBCH/LOCK/EQT# AGAIN AND OM4K MASK TO JUST SUBCHANNEL BITS CPB O5 CHECK IF DRIVER TYPE IS 05? LDB A YES, SUBCHANNEL BITS MUST = 0 SZB NO, IS DRIVER = DV.00? JMP LUERR NOT LEGAL DRIVER/SUBCHANNEL XOR DFCLU,I NOW GET LOCK/EQT# BITS LSL 10 PUT LOCK BITS IN B-REG STB RNUMB,I SAVE FOR LATER CLE,SZB,RSS CHECK IF ANY? JMP KYBR1 NO, LEAVE AT ZERO LDA DRNTB RTE-III GENERATOR SOMEHOW LOST RSS ITS ACT IN THE DSD PROCESS LDA A,I GET NEXT LEVEL RAL,CLE,SLA,ERA CHECK AND STRIP INDIRECT BIT JMP *-2 SET, STRIP TO NEXT LEVEL ADB A INDEX INTO TABLE JSB .XLA AND GET THE CONTENTS DEF B,I AND O377 MASK TO JUST LO BITS ALF,CLE,ALF AND POSITION IOR RNUMB,I MERGE IN LOCK FLAG BITS STA RNUMB,I AND SAVE FOR I/O PUSH THRU KYBR1 LDA ICNWD EXIT OK A-REG = LU KYBR2 LDB DFTMP GET A DEF TO LOCAL TEMP STB RNUMB SAVE FOR NEXT CALLER JSB $LIBX NOW EXIT DEF KYBRD SPC 1 LUERR CLA,RSS EXIT A-REG = -1 DNERR CLA,INA EXIT A-REG = -2 CMA,CCE JMP KYBR2 AND EXIT O377 OCT 377 O4 OCT 4 O5 OCT 5 D15 DEC 15 O77 OCT 77 OM4K OCT -4000 DFTMP DEF DFCLU USE INPLACE OF RNUMB DFCLU NOP ADDRESS OF LU IN TO THE DRT DRNTB DEF $RNTB+0 DIRECT ADDRESS OF RESOURCE NUMB TABLE END  [c 09570-18755 1830 S 0122 &MKIDS MKIDS             H0101 ASMB,R,L,C HED "MKIDS" ROUTINE TO PUT SESSION STUFF IN IDSEGMENTS 4-78 (DLB) NAM MKIDS,6 PRE-REL 780417 (DLB) RTE-IV SPC 1 ENT MKIDS EXT $OPSY,$LIBR,$LIBX,IDSGA,.XLA,.XSA EXT .ENTP SPC 1 A EQU 0 B EQU 1 SPC 1 * PURPOSE: THIS ROUTINE SETS THE SESSION BIT IN WORD 21 * OF THE IDSEGMENT OF GIVEN PROGRAM. IN RTE-IV * THE SESSION WORD (ID(XX)) IS SETUP WITH THE * NEGATIVE LU THAT IS PASSED TO THIS SUBROUTINE. * * CALLED: * * JSB MKIDS * DEF *+3 * DEF INAME PROGENITORS PROGRAM NAME * DEF LU SESSION LOGICAL UNIT NUMBER * A= IDSEGMENT ADDRESS OF PROGENITOR * A=0 IF UNSUCCESSFUL SPC 1 PNAME NOP PROGRAM NAME LU NOP SESSION LOGICAL UNIT NUMBER MKIDS NOP SESSION-FY THE PROGRAMS IDSEGMENT JSB $LIBR MAKE THIS A PRIVLEDGED SUBROUTINE NOP JSB .ENTP DEF PNAME LDA PNAME,I GUARD AGAINST NULL NAME SZA,RSS JMP MKID2 ITS NOT NICE TO FOOL MOTHER-- JSB IDSGA FIND IDSEGMENT ADDRESS SO THAT DEF *+2 DEF PNAME,I I CAN SET UP THE SESSION BIT SZA,RSS NOTE: E-REG = 0 IF A#=0 !!! JMP MKID2 IF SOMEHOW IT DISAPPEARED, GET OUT STA IDSEG SAVE FOR EXIT ADA D14 INDEX TO ID(15) TO GET STA B SAVE IN B-REG JSB .XLA AND THE THE PROGRAM TYPE DEF A,I CODE AND O17 MASK TO JUST PROGRAM TYPE WORD CPA O1 CHECK IF CORE-RESIDENT IN RTE-IV CCE YES,SET FLAG FOR USE LATER ADB O6 BUMP TO STATUS FLAG WORD JSB .XLA DEF B,I GET THE WORD 21 FROM IDSEGMENT IOR O20K MIRGE IN THE SESSION BIT JSB .XSA DEF B,I AND PUT BACK LDA DM9 CHECK IF RTE-IV? CPA $OPSY ? LDA LU,I YES, GET THE TERMINAL LU CMA,SSA,IN   A,RSS NEGATE & TEST IF RTE-IV? JMP MKID1 NOT RTE-IV, SKIP ADB D8 INDEX TO SESSION WORD IF CORE-RES SEZ,CLE,RSS CHECK IF DISC RESIDENT PROGRAM? ADB O4 YES, BUMP TO SESSION WORD FOR DISC RES-ID JSB .XSA AND STORE - LU IN ID DEF B,I MKID1 LDA IDSEG GET THE IDSEGMENT VALUE MKID2 JSB $LIBX TURN BACK ON INTERRUPT SYSTEM DEF MKIDS AND EXIT SPC 1 IDSEG NOP HOLDS PROGENITORS IDSEGMENT ADDRESS O1 OCT 1 O4 OCT 4 O6 DEC 6 D8 DEC 8 D14 DEC 14 O17 OCT 17 DM9 DEC -9 O20K OCT 20000 END   \c 09570-18756 2026 S C0122 &IGTSM SUBR              H0101 ASMB,Q,C HED "IGTSM" ROUTINE TO GET A SYMBOL ADDRESS FROM SYSTEM 4-78 (DLB) NAM IGTSM,7 09570-16756 REV.2026 800430 ENT IGTSM EXT .ENTR,.DFER,EXEC SPC 1 A EQU 0 B EQU 1 DSCLB EQU 1761B DISC ADDRESS OF SYSTEM SYMBOL TABLE SECT2 EQU 1757B NUMBER OF SECTORS/TRACK ON LU = 2 SPC 1 * PURPOSE: THIS ROUTINE WILL SEARCH THE SYSTEM "ENT" * TABLE TO DETERMINE THE INCORE ADDRESS OF THAT SYMBOL. * * CALLED: * * JSB IGTSM * DEF *+3 * DEF INAME * DEF IADRS * * WHERE: * * INAME = 3 WORD ADDRESS OF THE ASCII SYMBOL NAME * A-REG = RETURNED IN-CORE ADDRESS OF THE SYMBOL * IADRS = THE IN-CORE ADDRESS OF THE SYMBOL. * * ERRORS: A-REG = 0 IF SYMBOL NOT FOUND * * TEST PROGRAM: * * FTN,L * PROGRAM TEST * DIMENSION NAME(3) * LU = ITMLU(IDMY) * 1 WRITE (LU,10) * 10 FORMAT ("INPUT SYMBOL YOU WANT FIND FROM SYSTEM ENT TABL") * READ (LU,11) NAME * 11 FORMAT (3A2) * IF (IGTSM(NAME,IADDRS).EQ.0) GO TO 1 * WRITE (LU,12) NAME,IADDRS * 12 FORMAT (3A2" IS AT "O6) * END * END$ * * NOTE: INAME MUST BE A TYPE 0 (ADDRESS) ENT. * TYPE 1,3 & 4 ARE NOT FOUND IF PRESENT IN TABLE * IADRS MUST = 0 BEFORE CALL 1ST TIME. SPC 1 INAME NOP ADDRESS OF SYMBOL NAME IADRS NOP IGTSM NOP ENTRY JSB .ENTR DEF INAME GET PARAMETER ADDRESSES LDA IADRS,I CHECK IF SYMBOL HAS SZA ALREADY BEEN FOUND? JMP IGTS3 YES, SKIP DISC SEARCH JSB .DFER GET THE NAME OF SYMBOL LOCALLY DEF NAME+0 DEF INAME,I LDA NAME+2 AND OM400 MASK OFF LAST CHAR STA NAME+2 AND SAVE LDB DSCLB CALCULATE STARTING TRACK NUMBER LSR 7 STB TRACK SAVE STARTING TRACK NUMBER LDA DSCLB GET THE STARTING TRACK/SECTOR OF ENT TABLE AND O177 MASK OFF THE TRACK NUMBER RAR,CLE,ELA *#781011 PUT LEAST BIT IN E-REG. CLB,SEZ *781011 SET OR CLEAR FLAG PER E-REG VALUE CCB *781011 STB INAME *781011 SAVE INTO 1ST TIME FLAG WORD IGTS1 CPA SECT2 CHECK IF AT END OF TRACK? CLA,RSS YES SET TO ZERO RSS SKIP BUMPING TRACK NUMBER ISZ TRACK BUMP TRACK NUMBER STA SECTR SET CURRENT READING SECTOR JSB EXEC GO READ THE NEXT DISC BUFFER DEF *+7 DEF O1 READ DEF O2 LOGICAL UNIT TWO IBUFF DEF IBUF BUFFER = 128 WORDS DEF D128 LENGTH IN WORDS DEF TRACK TRACK NUMBER DEF SECTR SECTOR NUMBER LDB IBUFF GET BUFFER ADDRESS ISZ INAME *781011 CHECK IF 1ST TIME FLAG IS SET? RSS *781011 NO, USE WHOLE DISC READ BUFFER ADB D64 *781011 YES, USE ONLY SECOND HALF OF DISC READ BUFFER IGTS2 LDA B,I GET THE 1ST WORD CPA NAME+0 DO 1ST CHARS MATCH? INB,RSS YES, CHECK 3RD AND 4TH JMP IGTS4 NO TRY NEXT ENTRY LDA B,I GET CHARS 3 & 4 CPA NAME+1 MATCH? INB,RSS YES, TRY LAST CHARACTER JMP IGTS5 NO TRY NEXT ENTRY LDA B,I GET LAST ENTRY & TYPE CPA NAME+2 MATCH? CLE,INB,RSS YES, FOUND, GET THE ADDRESS JMP IGTS6 NO LDA B,I GET THE ADDRESS STA IADRS,I AND PASS BACK TO CALLER IGTS3 JMP IGTSM,I AND EXIT A-REG = SAME SPC 1 IGTS4 INB BUMP TO TYPE OF ENTRY IGTS5 INB BUMP TO TYPE OF ENTRY LDA B,I GET ENTRY TYPE CODE IGTS6 AND O177 NO, CHECK IF END OF LIST? CMA,INA TYPE ONE ENTRY TERMINATES LIST INA,SZA,RSS CHECK IF TYPE ONE ENTRY? JMP IGTS3 SORRY NOT FOUND ADB O2 BUMP TO NEXT ENTRY LDA SECTR GET THE NEXT READ SECTOR ADA O2 BUMP TO NEXT BLOCK CPB LAST1 CHECK IF LAST ONE? JMP IGTS1 YES, GO READ NEXT DISC By UFFER JMP IGTS2 NO, TRY NEXT ENTRY SPC 1 TRACK NOP CURRENT TRACK NUMBER SECTR NOP CURRENT SECTOR NUMBER O1 OCT 1 O2 OCT 2 O177 OCT 177 D64 DEC 64 OM400 OCT -400 NAME BSS 3 NAME TO SEARCH FOR D128 DEC 128 BUFFER LENGTH IBUF BSS 128 LAST1 DEF * LAST + 1 WORD ADDRESS OF BUFFER ORR END  ]e 09570-18757 1830 S 0122 &.XLA CROSS LOAD             H0101 /ASMB,R,L NAM .XLA,6 XLA SYSTEM INDEPENDENT INSTRUCTION 780417 (DLB) ENT .XLA EXT .ZPRV SPC 1 BPA3 EQU 1744B FWA OF DISC RESIDENT BASE PAGE FOR DMS SYSTEMS XLA OCT 101724 SPC 1 * PURPOSE: * THIS CODE WILL ALLOW PROGRAMS THAT GENERALLY WILL GO AFTER * DATA THAT IS IN A SYSTEM MAP FOR RTE-IV SYSTEMS, BUT ALLOW * THE SAME PROGRAMS TO WORD IN AN RTE-III & RTE-II SYSTEM. SPC 1 .TMP1 NOP .TMP2 NOP SPC 1 .XLA NOP ENTRY TO EXECUTE THE XLA INSTRUCTION JSB .ZPRV MAKE CALLABLE FROM TYPE 6 CODE DEF LIBX STA .TMP1 SAVE A-REG CONTENTS LDA O2 CHECK IF A MAPPING SYSTEM? CPA BPA3 (RTE-2?) JMP .XLA1 NO, MUST BE A MAPPING SYSTEM LDA .XLA,I GET OPERAND ADDRESS STA .TMP2 SAVE IT LDA .TMP1 RESTORE A-REG LDA .TMP2,I AND GET THE CONTENTS ISZ .XLA BUMP TO P+2 RETURN LIBX JMP .XLA,I AND EXIT DEF .XLA SPC 1 .XLA1 LDA .XLA GET P+1 ADDRESS CMA,INA DECREMENT WITHOUT DISTURBING CMA THE E-REG STA .XLA AND PUT BACK P+0 ADDRESS LDA XLA GET THE REAL INSTRUCTION STA .XLA,I AND CHANGE THE JSB TO XLA LDA .TMP1 RESTORE A-REG JMP LIBX AND GO EXECUTE THE INSTRUCTION SPC 1 O2 OCT 2 END 3 ^d 09570-18758 1830 S 0122 &.XLB CROSS LOAD             H0101 1ASMB,R,L NAM .XLB,6 XLB SYSTEM INDEPENDENT INSTRUCTION 780417 (DLB) ENT .XLB EXT .ZPRV SPC 1 BPA3 EQU 1744B FWA OF DISC RESIDENT BASE PAGE FOR DMS SYSTEMS XLB OCT 105724 SPC 1 * PURPOSE: * THIS CODE WILL ALLOW PROGRAMS THAT GENERALLY WILL GO AFTER * DATA THAT IS IN A SYSTEM MAP FOR RTE-IV SYSTEMS, BUT ALLOW * THE SAME PROGRAMS TO WORD IN AN RTE-III & RTE-II SYSTEM. SPC 1 .TMP1 NOP .TMP2 NOP SPC 1 .XLB NOP ENTRY TO EXECUTE THE XLB INSTRUCTION JSB .ZPRV MAKE CALLABLE FROM TYPE 6 CODE DEF LIBX STA .TMP1 SAVE A-REG CONTENTS LDA O2 CHECK IF A MAPPING SYSTEM? CPA BPA3 (RTE-2?) JMP .XLB1 NO, MUST BE A MAPPING SYSTEM LDA .XLB,I GET OPERAND ADDRESS STA .TMP2 SAVE IT LDA .TMP1 RESTORE A-REG LDB .TMP2,I AND GET THE CONTENTS ISZ .XLB BUMP TO P+2 RETURN LIBX JMP .XLB,I AND EXIT DEF .XLB SPC 1 .XLB1 LDA .XLB GET P+1 ADDRESS CMA,INA DECREMENT WITHOUT DISTURBING CMA THE E-REG STA .XLB AND PUT BACK P+0 ADDRESS LDA XLB GET THE REAL INSTRUCTION STA .XLB,I AND CHANGE THE JSB TO XLB LDA .TMP1 RESTORE A-REG JMP LIBX AND GO EXECUTE THE INSTRUCTION SPC 1 O2 OCT 2 END ; _e 09570-18759 1830 S 0122 &.XSA CROSS STORE             H0101 k ASMB,R,L NAM .XSA,6 XSA SYSTEM INDEPENDENT INSTRUCTION 780512 (DLB) ENT .XSA EXT .ZPRV SPC 1 BPA3 EQU 1744B FWA OF DISC RESIDENT BASE PAGE FOR DMS SYSTEMS XSA OCT 101725 SPC 1 * PURPOSE: * THIS CODE WILL ALLOW PROGRAMS THAT GENERALLY WILL GO AFTER * DATA THAT IS IN A SYSTEM MAP FOR RTE-IV SYSTEMS, BUT ALLOW * THE SAME PROGRAMS TO WORK IN AN RTE-III & RTE-II SYSTEM. SPC 1 .TMP1 NOP .TMP2 NOP SPC 1 .XSA NOP ENTRY TO EXECUTE THE XLA INSTRUCTION JSB .ZPRV DEF LIBX STA .TMP1 SAVE A-REG CONTENTS LDA O2 CHECK IF A MAPPING SYSTEM? CPA BPA3 (RTE-2?) JMP .XSA1 NO, MUST BE A MAPPING SYSTEM LDA .XSA,I GET OPERAND ADDRESS STA .TMP2 SAVE IT LDA .TMP1 RESTORE A-REG STA .TMP2,I AND PUT THE CONTENTS ISZ .XSA BUMP TO P+2 RETURN LIBX JMP .XSA,I AND EXIT DEF .XSA SPC 1 .XSA1 LDA .XSA GET P+1 ADDRESS CMA,INA DECREMENT WITHOUT DISTURBING CMA THE E-REG STA .XSA AND PUT BACK P+0 ADDRESS LDA XSA GET THE REAL INSTRUCTION STA .XSA,I AND CHANGE THE JSB TO XSA LDA .TMP1 RESTORE A-REG JMP LIBX AND GO EXECUTE THE INSTRUCTION SPC 1 O2 OCT 2 END  `f 09570-18760 1830 S 0122 &.XSB CROSS STORE             H0101 c!ASMB,R,L NAM .XSB,6 XSB SYSTEM INDEPENDENT INSTRUCTION 780512 (DLB) ENT .XSB EXT .ZPRV SPC 1 BPA3 EQU 1744B FWA OF DISC RESIDENT BASE PAGE FOR DMS SYSTEMS XSB OCT 105725 SPC 1 * PURPOSE: * THIS CODE WILL ALLOW PROGRAMS THAT GENERALLY WILL GO AFTER * DATA THAT IS IN A SYSTEM MAP FOR RTE-IV SYSTEMS, BUT ALLOW * THE SAME PROGRAMS TO WORK IN AN RTE-III & RTE-II SYSTEM. SPC 1 .TMP1 NOP .TMP2 NOP SPC 1 .XSB NOP ENTRY TO EXECUTE THE XLA INSTRUCTION JSB .ZPRV DEF LIBX STB .TMP1 SAVE B-REG CONTENTS LDB O2 CHECK IF A MAPPING SYSTEM? CPB BPA3 (RTE-2?) JMP .XSB1 NO, MUST BE A MAPPING SYSTEM LDB .XSB,I GET OPERAND ADDRESS STB .TMP2 SAVE IT LDB .TMP1 RESTORE B-REG STB .TMP2,I AND PUT THE CONTENTS ISZ .XSB BUMP TO P+2 RETURN LIBX JMP .XSB,I AND EXIT DEF .XSB SPC 1 .XSB1 LDB .XSB GET P+1 ADDRESS CMB,INB DECREMENT WITHOUT DISTURBING CMB THE E-REG STB .XSB AND PUT BACK P+0 ADDRESS LDB XSB GET THE REAL INSTRUCTION STB .XSB,I AND CHANGE THE JSB TO XSB LDB .TMP1 RESTORE B-REG JMP LIBX AND GO EXECUTE THE INSTRUCTION SPC 1 O2 OCT 2 END  ag 09570-18762 1830 S 0122 &KGET DISABLE FENCE AND GET             H0101 vASMB,R,L HED "KGET" SAME AS IGET BUT THRU SYSTEM MAP IF ONE 5-78 (DLB) NAM KGET,7 PRE-REL 780519 (DLB) RTE-IV ENT KGET SPC 1 A EQU 0 B EQU 1 BPA3 EQU 1744B * PURPOSE: TO ALLOW FTN PROGRAM TO GET DATA FROM SYSTEM AND * BASE PAGE. * CALLED: * IVALU = KGET(IADDRS) * WHERE: * IADDRS = DESIRED ADDRESS OF WORD TO GET THUR SYSTEM MAP. * IVALU = VALUE OF DESIRED WORD. SPC 1 KGET NOP ENTRY LDA BPA3 CHECK IF MAPPING SYSTEM? CPA O2 CHECK IF MAPPED SYSTEM? JMP KGET1 YES, CONTINUE LDA LDAAI NO, MUST BE RTE-II OR DOS STA IOPTN LDA JMPBI GET THE JMP B,I INSTRUCTION STA IOPTN+1 KGET1 LDB KGET,I GET RETURN ADDRESS ISZ KGET BUMP TO PASSED PARAMETER ADDRESS LDA KGET,I GET PARAMETER ADDRESS LDAAI LDA A,I GET PARAMETER VALUE (=ADDRESS) IOPTN XLA A,I OR LDA A,I JMPBI JMP B,I AND EXIT WITH A-REG = ANSWER O2 OCT 2 END e~ bh 09570-18768 1830 S 0122 &CPUT DISABLE FENCE AND PUT             H0101 )ASMB,R,L HED "CPUT" SAME AS IPUT BUT THRU SYSTEM MAP IF ONE 5-78 (DLB) NAM CPUT,7 PRE-REL 780519 (DLB) RTE-IV ENT CPUT EXT $LIBR,$LIBX SPC 1 A EQU 0 B EQU 1 BPA3 EQU 1744B * PURPOSE: TO ALLOW FTN PROGRAM TO PUT DATA TO SYSTEM AND * BASE PAGE. * CALLED: * CALL CPUT(IADDRS,IVALU) * WHERE: * IADDRS = DESIRED ADDRESS OF WORD TO PUT THUR SYSTEM MAP. * IVALU = VALUE OF DESIRED WORD. SPC 1 ADDR NOP ADDRESS OF IADRS PARAMETER CPUT NOP ENTRY JSB $LIBR TURN OFF INTERRUPTS NOP LDA BPA3 CHECK IF MAPPING SYSTEM? CPA O2 CHECK IF MAPPED SYSTEM? JMP CPUT1 YES, CONTINUE LDA STABI NO, MUST BE RTE-II OR DOS STA IOPTN CLA NOW ZERO THE DEF STA IOPTN+1 CPUT1 LDB CPUT,I GET RETURN ADDRESS ISZ CPUT BUMP TO PARAMETER ADDRESS LDA CPUT,I GET ADDRESS OF 1ST PARAMETER STA ADDR SAVE PARAMETER ADDRESSES ISZ CPUT BUMP TO NEXT PARAMETER LDA CPUT,I GET THE VALUE'S ADDRESS STB CPUT SAVE THE RETURN ADDRESS LDA A,I AND GET THE VALUE LDB ADDR,I GET THE ADDRESS TO STORE TO IOPTN XSA B,I OR STA B,I JSB $LIBX AND EXIT WITH A-REG = ANSWER DEF CPUT SPC 1 O2 OCT 2 STABI STA B,I END  ci 09580-18009 2026 S C0122 &ADCSU              H0101 xFTN4,L SUBROUTINE ADCSU(IUNIT,IFUNC,IVOLT),09580-16009 REV.2026 800219 C C**************************************** C C RELOCATABLE 09580-16009 C SOURCE 09580-18009 C C V.POVIO 10-4-76 C BOB RICHARDS 790927 (REMOVE 'WAIT' CALLS) C BOB RICHARDS 800219 C C********************************************************************* C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C********************************************************************* C C C**************************************** C C GERTSCH ADC-1R-HP/CC1 C --------------------- C C GENERAL: C ------- C C THE TWO FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM A GERTSCH ADC-1R-HP/CC1 ANGLE-TO- C DIGITAL CONVERTER. C C HARDWARE CONFIGURATION: C ---------------------- C C HP 21MX SERIES COMPUTER C C GERTSCH ADC-1R-HP/CC1 ANGLE-TO-DIGITAL CONVERTER C C HP 09510-60080 CABLE C C 2 HP 12566-60025 MICROCIRCUIT CARDS C BOTH CARDS JUMPERED AS FOLLOWS C C W1-A C W2-C C W3-A C W4-B C W5 THRU W8-NONE C W9-A C C DATA WORD FORMAT: C ---------------- C C DATA TO MICROCIRCUIT CARD #1 C C !15!14 13 12!11 10 9 8! 7 6 5 4! 3 2 1 0! C ------------------------------------------------- C ! ! 10^2 ! 10^1 ! 10^0 ! 10^-1 ! C ------------------------------------------------- C C ALL SECTIOINS OF DATA ARE IN BCD C C C DATA TO MICROCIRCUIT CARD #2 C C !15 14 13 12 11 10 9! 8! 7 6 5 4! 3 2 1 0! C ------------------------------------------------- C ! !OL! 10^-2 ! 10^-3 ! C ------------------------------------------------- C C OL=1 OVERLOAD C C BITS 0-7 ARE BCD C C DATA FROM MICROCIRCUIT CARD #2 C C !15 14 13 12 11 10 9 8 7! 6! 5! 4 3! 2 1 0! C ------------------------------------------------- C ! !H !S ! FC ! VC ! C ------------------------------------------------- C C H=HOLD INPUT COMMAND BIT (MUST BE 1 C TO START NEW CONVERSION, 0 TO STORE C A READING.) C C S=START INPUT COMMAND BIT (MUST BE 0 C TO CLEAR STORAGE, 1 TO START NEW C CONVERSION.) C C FC=FUNCTION CODE C =00 45 DEGREE TEST C =10 SYNCHRO MODE C =11 RESOLVER MODE C C VC=VOLTAGE CODE C =110 8-16V C =101 16-32V C =011 32-64V C =111 64-128V C C CONFIGURATION TABLE: C ------------------- C C THE FOLLOWING IS AN EXAMPLE OF THE C CONFIGURATION TABLE C C R38,1,1 C U 1 C 0 STORAGE FOR SET-UP CALL C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C C ADCSU(I,I,I), OV=X, ENT=ADCSU, FIL=%ADCSU C ADCMU(I,I,RV), OV=X, ENT=ADCMU, FIL=%ADCSU C C**************************************** C C NOTE: C C THE WELCOM FILE REQUIRES TWO ENTRIES FOR EACH ADC-1 BECAUSE C TWO I/O SLOTS (I.E. LU'S) ARE REQUIRED TO INTERFACE THE ADC-1. C THEREFORE, THE UNIT 1 'UNIT' ENTRIES WOULD BE 1 AND 2, THE C UNIT 2 ENTRIES WOULD BE 3 AND 4, ETC. BASIC CALLS WOULD BE TO C UNITS 1, 3, ETC. C C********************************************************************* C DIMENSION IERMS(5) DATA IERMS/10,5,2HAD,2HCS,2HU / DATA IDTN/38/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN,IUNIT) ILU2=LUDV(ISTN,IDTN,IUNIT+1) IF(ILU1 .EQ. 0 .OR. ILU2 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XDCSU(ILU1,ILU2,IERMS,IFUNC,IVOLT) IF(IERMS)800,20,800 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XDCSU(ILU1,ILU2,IERMS,IFUNC,IVOLT), +09580-16009 REV.2026 800219 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C C**************************************** C C ADCSU(IUNIT,IFUNC,IVOLT) C C WHERE C C IUNIT=UNIT C C 1=FIRST ADC C 3=SECOND ADC C 5=THIRD ADC C ETC. C C IFUNC=FUNCTION C C 1=45 DEG SELF TEST C 2=SYNCHRO C 3=RESOLVER C C IVOLT=REFERANCE VOLTAGE C C 1=8-16V C 2=16-32V C 3=32-64V C 4=64-128V C C**************************************** C C INITILIZE C IU=1 IDTN=38 IERMS=1 C C CHECK PARAMETERS C IF((IFUNC .LT.0) .OR. (IFUNC .GT. 3)) GOTO 8001 IF((IVOLT .LT. 0) .OR. (IVOLT .GT. 4)) GOTO 8001 IERMS=2 C C SET ADC TO 128V REF VOLTAGE C IDATA(1)=7 ICNWD=300B+ILU2 CALL EXEC(100002B,ICNWD,IDATA,1) GOTO 8002 8900 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 ICNWD=13100B+ILU2 IDATA(1)=11 IDATA(2)=3 CALL EXEC(100001B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 8901 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C CHANGE REF VOLTAGE AND FUNCTION C IF(IVOLT .EQ. 1)IVOLT=6B IF(IVOLT .EQ. 2)IVOLT=5B IF(IVOLT .EQ. 4)IVOLT=7B IF(IFUNC .EQ. 1)IFUNC=0 IF(IFUNC .EQ. 2)IFUNC=20B IF(IFUNC .EQ. 3)IFUNC=30B C C MERGE FUNCTION AND VOLTAGE AND STORE IN CONFIG FILE C IBUF(1)=IOR(IVOLT,IFUNC) CALL TIM(IDTN,IU,2,IBUF,1,N) IF(N .LT. 0)GOTO 8001 C C OUTPUT FUNCTION AND VOLTAGE TO ADC C IDATA(1)=IBUF(1) ># ICNWD=300B+ILU2 CALL EXEC(100002B,ICNWD,IDATA,1) GOTO 8002 8902 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 ICNWD=13100B+ILU2 IDATA(1)=11 IDATA(2)=3 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 8903 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C WAIT 30 MSEC C CALL EXEC(12+100000B,0,1,0,-3) GOTO 8002 C C CHECK FOR OVERLOAD STATUS BIT C 8904 ICNWD=300B+ILU2 CALL EXEC(100001B,ICNWD,IDATA,1) GOTO 8002 8905 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 IERMS=5 IF((IAND(IDATA(1),400B)) .NE. 0)GOTO 8001 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HAD IERMS(4)=2HCS IERMS(5)=2HU RETURN END C C****************************************** C SUBROUTINE ADCMU(IUNIT,ITRIG,RMEAS),09580-16009 REV.2026 800219 DIMENSION IERMS(5) DATA IERMS/10,5,2HAD,2HCM,2HU / DATA IDTN/38/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN,IUNIT) ILU2=LUDV(ISTN,IDTN,IUNIT+1) IF(ILU1 .EQ. 0 .OR. ILU2 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XDCMU(ILU1,ILU2,IERMS,ITRIG,RMEAS) IF(IERMS)800,20,800 20 RETURN C C ERROR RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XDCMU(ILU1,ILU2,IERMS,ITRIG,RMEAS), +09580-16009 REV.2026 800219 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C**************************************** C C ADCMU(IUNIT,ITRIG,RMEAS) C C WHERE C C IUNIT=UNIT C C 1=FIRST ADC C 3=SECOND ADC C 5=THIRD ADC C ETC. C C ITRIG=TRIGGER C C 0=FREE RUN MODE C 1=TRIGGER MODE (wFROM COMPUTER) C C RMEAS=VARIABLE WHERE RESULTS ARE TO BE STORED C C NOTE: 1.IF ITRIG=0 THE 'HOLD' SWITCH ON THE C ANGLE-TO-DIGITAL CONVERTER MUST BE C IN THE OUT POSITION. C C 2.IF ITRIG=1 THE 'HOLD' SWITCH ON THE C ANGLE-TO-DIGITAL CONVERTER MUST BE C DEPRESSED IN. C C**************************************** C C INITILIZE C IU=1 IDTN=38 IERMS=1 C C RETRIEVE DATA FROM CONFIGURATION FILE C AND CHECK IF SET-UP HAS BEEN CALLED C IF YES WRITE A 0 BACK ON CONF FILE C CALL TIM(IDTN,IU,1,IBUF,1,N) IF(N .LT. 0)RETURN IF(IBUF(1) .EQ. 0)GOTO 8001 IDATA(1)=IBUF(1) IBUFR=IBUF(1) IBUF(1)=0 CALL TIM(IDTN,IU,2,IBUF,1,N) IF(N .LT. 0) RETURN C C CHECK PARAMETER C IF((ITRIG .LT. 0) .OR. (ITRIG .GT. 1))GOTO 8001 IF(ITRIG .EQ. 0)GOTO 100 IERMS=2 C C OUTPUT TO ADC TRIGGER =1 C ICNWD=300B+ILU2 CALL EXEC(100002B,ICNWD,IDATA,1) GOTO 8002 8900 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 ICNWD=11100B+ILU2 IDATA(1)=11 IDATA(2)=3 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 8901 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C WAIT 30 MSEC C CALL EXEC(12+100000B,0,1,0,-3) GOTO 8002 C C OUTPUT TO ADC TRIGGER =0 OR 1 C 100 ICNWD=300B+ILU2 IDATA(1)=IOR(IBUFR,140B) CALL EXEC(100002B,ICNWD,IDATA,1) GOTO 8002 8905 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 ICNWD=11100B+ILU2 IDATA(1)=11 IDATA(2)=3 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 8902 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 IF(ITRIG .EQ. 0)GOTO 200 C C WAIT 30 MSEC C CALL EXEC(12+100000B,0,1,0,-3) GOTO 8002 C C IF TRIGGER =1 CLEAR START BIT C 8909 IDATA(1)=(IAND(IBUFR,77B))p$"+40B ICNWD=300B+ILU2 CALL EXEC(100002B,ICNWD,IDATA,1) GOTO 8002 8903 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 IDATA(1)=11 IDATA(2)=3 ICNWD=11100B+ILU2 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 C C WAIT 300 MSEC C 8904 CALL EXEC(12+100000B,0,1,0,-30) GOTO 8002 C C ARM DATA CARD C 200 ICNWD=11100B+ILU1 IDATA(1)=11 IDATA(2)=3 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 C C WAIT 300 MSEC C 8906 CALL EXEC(12+100000B,0,1,0,-30) GOTO 8002 C C READ DATA BACK FROM ADC C 8910 ICNWD=300B+ILU1 CALL EXEC(100001B,ICNWD,IDATA(1),1) GOTO 8002 8907 ICNWD=300B+ILU2 CALL EXEC(100001B,ICNWD,IDATA(2),1) GOTO 8002 C C COMPUTE FLOATING POINT NUMBER FROM IDATA C 8908 R1=IAND(IDATA(2),17B)*.001 R2=(IAND(IDATA(2),360B)/2**4)*.01 R3=IAND(IDATA(1),17B)*.1 R4=(IAND(IDATA(1),360B))/2**4 R5=(IAND(IDATA(1),7400B)/2**8)*10.0 R6=(IAND(IDATA(1),30000B)/2**12)*100.00 RMEAS=R1+R2+R3+R4+R5+R6 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HAD IERMS(4)=2HCM IERMS(5)=2HU RETURN END $ d o 09580-18010 2001 S C0122 &GRTST              H0101 {FTN4,L SUBROUTINE GRTST(IUNIT,ANGLE,VEL),09580-16010 REV.2001 +791005 C C**************************************** C C RELOCATABLE 09580-16010 C SOURCE 09580-18010 C C V.POVIO 10-4-76 C BOB RICHARDS 791005 C C********************************************************************* C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1978. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C********************************************************************* C C C*************************************** C C GERTSH PSS-2613R C ---------------- C C GENERAL: C ------- C C THE FOLLOWING TWO DEVICE SUBROUTINES ARE USED C TO PROGRAM THE GERTSCH PSS-2613R DIGITAL TO C SYNCHRO CONVERTER. C C HARDWARE CONFIGURATION: C ---------------------- C C HP 21MX SERIES COMPUTER C C GERTSCH PSS-2613R DIGITAL TO SYNCHRO CONVERTER C C HP 09200-60006 CONTROL CABLE C C HP 12566-60024 MICROCIRCUIT CARD C JUMPERED AS FOLLOWS C C W1-A C W2-C C W3-A C W4-B C W5 THRU W8-OUT C W9-A C C C DATA WORD FORMAT: C ---------------- C C OUTPUT/INPUT WORD #1 C C !15 14 13 12!11 10 9 8! 7 6 5 4! 3 2 1 0! C ------------------------------------------------- C ! 10^2 ! 10^1 ! 10^0 ! 10^-1 ! C ------------------------------------------------- C C ALL SECTIONS ARE BCD C C OUTPUT WORD #2 C C !15!14!13 12 11 10 9 8 7 6 5 4 3! 2! 1 0! C ------------------------------------------------- C !SB!MB!--------NOT USED----------------!D ! VEL ! C ------------------------------------------------- C C SB=STOP BIT C =0 NORMAL OPERATION C =1 STOP C C MB=MODE BIT C =0 STATIC MODE C =1 DYNAMIC MODE C C D=DIRECTION C =0 DECREASING ANGLE (CLOCK-WISE) C =1 INCREASING ANGLE )COUNTER-CLOCK-WISE) C C VEL=VELOCITY C =00 1.5 DEGREES/SEC. C =01 5.0 DEGREES/SEC. C =10 30.0 DEGREES/SEC. C =11 200.0 DEGREES/SEC. C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C C GRTST(I,R,R), OV=X, ENT=GRTST, FIL=%GRTST C GRTSP(I), OV=X, ENT=GRTSP, FIL=%GRTST C C**************************************** C DIMENSION IERMS(5) DATA IERMS/10,5,2HGR,2HTS,2HT / DATA IDTN/39/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XRTST(ILU1,IERMS,IUNIT,ANGLE,VEL) IF(IERMS)800,20,800 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XRTST(ILU1,IERMS,IUNIT,ANGLE,VEL),09580-16010 +REV.2001 791005 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C**************************************** C C GRTST(U,A,V) C C WHERE C C U=UNIT NUMBER C C 0=ALL UNITS C 1=FIRST UNIT C 2=SECOND UNIT,ETC C C A=ANGLE 0.0-359.9 DEG. WITH .1 DEG. RESOLUTION C C V=VELOCITY DYNAMIC C C +/- 1.5 DEG./SEC. C +/- 5.0 DEG./SEC. C +/- 30.0 DEG./SEC. C +/- 200.0 DEG./SEC. C 0.0=STATIC C C**************************************** C C INITILIZE C IDTN=39 IERMS=1 IU=1 IF(IUNIT .EQ. 0)IU=0 IF(IUNIT .EQ. 0)IUNIT=1 C C RETRIEVE DATA FROM CONFIGURATION FILE C CALL TIM(IDTN,1,1,IBUF,1,N) IF(N .LT. 0)RETURN IF(IUNIT .GT. IBUF(1)) GOTO 8001 C C CHECK PARAMETERS C IF((ANGLE .LT. 0.0) .OR. (ANGLE .GT. 359.9))GOTO 8001 TVEL=ABS(VEL) IF((TVEL .EQ. 1.5) .OR. (TVEL .EQ. 5.0) .OR. (TVEL .EQ. 30.0) 1.OR. (TVEL .EQ. 200.0) .OR. (TVEL .EQ. 0.0))GOTO 20 GOTO 8001 20 IERMS=2 C C MAKE ANGLE A BCD NUMBER C IX1=(ANGLE/100.0) IAX1=IX1*2**12 C IX2=(ANGLE-(IX1*100))/10.0 IAX2=IX2*2**8 C IX3=ANGLE-((IX1*100)+(IX2*10)) IAX3=IX3*2**4 C IX4=(ANGLE*10.0)-((IX1*1000)+(IX2*100)+(IX3*10)) C IDATA(1)=IAX1+IAX2+IAX3+IX4 C C OUTPUT TO D/S C 10 IF(IUNIT .GT. IBUF(1))GOTO 500 ICNWD=100B+ILU1 100 CALL EXEC(100002B,ICNWD,IDATA,1,IDUMY,0) GOTO 8002 C C WAIT 10 MSEC C 8900 CALL EXEC(12+100000B,0,1,0,-1) GOTO 8002 C C READ BACK DATA C 8910 ICNWD=300B+ILU1 CALL EXEC(100001B,ICNWD,IDATA(2),1,IDUMY,0) GOTO 8002 C C CHECK IF DATA READ BACK IS OK C 8901 IF(IDATA(1) .NE. IDATA(2))GOTO 8002 C C IF VELOCITY >0 OUTPUT VELOCITY WORD TO D/S C IF(VEL .EQ. 0)GOTO 200 IF(VEL .LT. 0)IX1=0 IF(VEL .GT. 0)IX1=4B IF(TVEL .EQ. 1.5)IX2=40000B IF(TVEL .EQ. 5.0)IX2=40001B IF(TVEL .EQ. 30.0)IX2=40002B IF(TVEL .EQ. 200.0)IX2=40003B IDATA(2)=IX2+IX1 C ICNWD=100B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(2),1,IDUMY,0) GOTO 8002 C C CHECK IF ANOTHER UNIT C 200 IF(IU .EQ. 1)GOTO 500 IUNIT=IUNIT+1 GOTO 10 C C EXIT C 500 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HGR IERMS(4)=2HTS IERMS(5)=2HT RETURN END C C**************************************** C SUBROUTINE GRTSP(IUNIT),09580-16010 REV.2001 791005 DIMENSION IERMS(5) DATA IERMS/10,5,2HGR,2HTS,2HP / DATA IDTN/39/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XRTSP(ILU1,IERMS,IUNIT) IF(IERMS)800,20,800 20 RETURN C C ERROR ROUTINE C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XRTSP(ILU1,IERMS,IUNIT),09580-16010 REV.2001 +791005 DIMENSION IBUF(3),IDATA(2),IREG(2),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C**************************************** C C GRTSP(U) C C WHERE C C U=UNIT NUMBER C C 0=ALL UNITS C 1=FIRST UNIT C 2=SECOND UNIT,ETC C C**************************************** C C INITILIZE C IDTN=39 IERMS=1 IU=1 IDATA(1)=100000B IF(IUNIT .EQ. 0)IU=0 IF(IUNIT .EQ. 0)IUNIT=1 C C RETRIEVE DATA FROM CONFIGURATION FILE C CALL TIM(IDTN,1,1,IBUF,1,N) IF(N .LT. 0)RETURN IERMS=2 C C OUTPUT TO D/S C 10 IF(IUNIT .GT. IBUF(1))GOTO 500 ICNWD=100B+ILU1 100 CALL EXEC(100002B,ICNWD,IDATA,1,IDUMY,0) GOTO 8002 C C CHECK IF ANOTHER UNIT C 200 IF(IU .EQ. 1)GOTO 500 IUNIT=IUNIT+1 GOTO 10 C C EXIT C 500 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HGR IERMS(4)=2HTS IERMS(5)=2HP RETURN END g en 09580-18011 2001 S C0122 &ACP              H0101 :[FTN4,L SUBROUTINE ACP(IUNIT,IMODE,FREQ,AMP,PHAZ), +09580-16011 REV.2001 791023 C C*************************************** C C RELOCATABLE 09580-16011 C SOURCE 09580-18011 C C C.NELSON 10-11-76 C BOB RICHARDS 791023 C C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C*************************************** C ELGAR DDP-3-AF2-242 C -------------------- C C GENERAL: C -------- C C HARDWARE CONFIGURATION C ----------------------- C HP 21MX COMPUTER C C ELGAR DDP-3-AF2-242 DECODER PROGRAMMER C C HP 09580-60016 I/O CABLE ASSY. C C HP 11629 I/O CARD C C C DATA WORD FORMAT C ---------------- C C C OUTPUT WORD #1 ADDRESS STROBES C -------------- C C !15 14 13 12!11 10 9 8! 7 6 5 4! 3 2 1 0! C ------------------------------------------------- C !------------N/C-------------! A0 B0 FR C0 B0 A0! C !-----------------------------------------------! C C BITS 0 THRU 2 ARE AMPLITUDE ADDRESS STROBES C BIT 3 IS THE FREQUENCY STROBE C BITS 4 AND 5 ARE PHASE ADDRESS STROBES C C OUTPUT WORD II BCD DATA FREQ,AMP. & PHASE C C !15 14 13 12!11 10 9 8! 7 6 5 4! 3 2 1 0! C -------------------------------------------------- C ! 10^2 ! 10^1 ! 10^0 ! 10^-1 ! C ------------------------------------------------- C C CAL2L STATEMENT SUMMARY C ---------------------- C C ACP(U,M,F,A,P) C C U=UNIT # 1 THRU 3 C C M=MODE (0 OR 1) C 0=INDIVIDUAL UNIT CONTROL C 1=ALL UNITS PROGRAMMED TO SAME VALUES C C F=FREQUENCY IN HERTZ (45 TO 9990) C C A=AMPLITUDE IN VRMS (0 TO 260) C C P=PHASE ANGLE IN DEGREES (0 TO 360) C C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C C ACP(I,I,R,R,R), OV=X, ENT=ACP, FIL=%ACP C C**************************************** C C CONFIGURATION TABLE ENTRY EXAMPLE (ALLFL) C ----------------------------------------- C C R 42,1,1 *TYPE 42,1 ENTRY/UNIT, 1 UNIT C U1 *UNIT 1 C 1 *NUMBER OF UNITS IN STATION C C********************************************************** DIMENSION IERMS(5) DATA IERMS/10,5,2HAC,2HP ,2H / DATA IDTN/42/ C C FIND STATION # AND LU # C IERR=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XCP(ILU1,IERMS,IUNIT,IMODE,FREQ,AMP,PHAZ) IF(IERMS)800,20,800 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C***************************************** C SUBROUTINE XCP(ILU1,IERMS,IUNIT,IMODE,FREQ,AMP,PHAZ), +09580-16011 REV.2001 791023 DIMENSION IBUF(3),IDATA(12),IREG(2),IBUFR(1),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C********************************************** C C INITIALIZE C IU=1 IDTN=42 IERMS=1 DO 45 I1=1,12 45 IDATA(I1)=0 C C READ DATA FROM CONFIGURATION TABLE C 110 CALL TIM(IDTN,IU,1,IBUFR,1,N) IF(N.NE.0)RETURN C C CHECK PARAMETERS C IF((IUNIT.LT.0) .OR. (IUNIT.GT.IBUFR(1)))GO TO 8001 IF((IMODE.LT.0) .OR. (IMODE.GT.1))GO TO 8001 IF((FREQ.LT.45) .OR. (FREQ.GT.9990))GO TQ/O 8001 IF((AMP.LT.0) .OR. (AMP.GT.260))GO TO 8001 IF((PHAZ.LT.0) .OR. (PHAZ.GT.360))GO TO 8001 IERMS=2 C C SET DO LOOP ACCORDING TO MODE PARAMETER PROGRAMMED C IF(IMODE.EQ.1)IX=3 IF(IMODE.EQ.0)IX=1 C DO 1000 I=1,IX C C AMPLITUDE ADDRESS STROBE (IDATA(3)) C IDATA(2)=IUNIT IF (IX.EQ.3)IDATA(2)=I IF(IUNIT.EQ.3)IDATA(2)=4B IF(I.EQ.3)IDATA(2)=4B IDATA(2)=IXOR(IDATA(2),177777B) IF((IMODE .EQ. 1) .AND. (I .GT. 1))GOTO 500 C C MAKE AMPLITUDE A BCD NUMBER C IA1=(AMP/100.0) IAX1=IA1*2**12 C IA2=(AMP-(IA1*100))/10.0 IAX2=IA2*2**8 C IA3=AMP-((IA1*100)+(IA2*10)) IAX3=IA3*2**4 C IA4=(AMP*10.0)-((IA1*1000)+(IA2*100)+(IA3*10)) C IDATA(3)=IAX1+IAX2+IAX3+IA4 C C MAKE PHAZ A BCD NUMBER C IP1=(PHAZ/100.0) IPX1=IP1*2**8 IP2=(PHAZ-(IP1*100))/10.0 IPX2=IP2*2**4 IP3=PHAZ-((IP1*100)+(IP2*10)) IDATA(11)=IPX1+IPX2+IP3 C C PHASE ADDRESS STROBE (IDATA(9)) C 500 IDATA(10)=20B IF(IUNIT .EQ. 3)IDATA(10)=40B IF(I.EQ.3)IDATA(10)=40B IDATA(10)=IXOR(IDATA(10),177777B) IF((IMODE .EQ. 1) .AND. (I .GT. 1))GOTO 501 C C C C MAKE FREQUENCY A BCD NUMBER C FREQR=FREQ IF(FREQ .LT. 999.5)IDATA(7)=20000B IF(FREQ .LT. 99.9)IDATA(7)=10000B IF(FREQ .GT. 999.0)FREQR=FREQ/10.0 IF(FREQ .LT. 99.9)FREQR=FREQ*10.0 IF1=(FREQR/100.0) IFX1=IF1*2**8 IF2=(FREQR-(IF1*100))/10.0 IFX2=IF2*2**4 IF3=FREQR-((IF1*100)+(IF2*10)) IDATA(7)=IDATA(7)+IFX1+IFX2+IF3 C C SET FREQ STROBE C 501 IDATA(6)=177767B C C C OUTPUT AMPLITUDE PROGRAM WORD & AMP. ADDRESS STROBE C IDATA(1)=15 ICNWD=1300B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(1),4,IDUMY,0) GOTO 8002 8900 CALL WAIT(ILU1,3) IDATA(2)=177777B CALL EXEC(100002B,ICNWD,IDATA(1),4,IDUMY,0) GOTO 8002 8901os CALL WAIT(ILU1,3) C C OUTPUT FREQUENCY TO ELGAR & FREQ STROBE C ICNWD=1300B+ILU1 IDATA(5)=15 CALL EXEC(100002B,ICNWD,IDATA(5),4,IDUMY,0) GOTO 8002 8902 CALL WAIT(ILU1,3) IDATA(6)=177777B CALL EXEC(100002B,ICNWD,IDATA(5),4,IDUMY,0) GOTO 8002 8903 CALL WAIT(ILU1,3) C C OUTPUT PHAZ TO ELGAR UNIT & PHASE STROBE C IF((IMODE.EQ.1).AND.(I.EQ.1)) GO TO 1000 IF((IUNIT.EQ.1).AND.(IMODE.EQ.0))GO TO 1000 ICNWD=1300B+ILU1 IDATA(9)=15 CALL EXEC(100002B,ICNWD,IDATA(9),4,IDUMY,0) GOTO 8002 8904 CALL WAIT(ILU1,3) IDATA(10)=177777B CALL EXEC(100002B,ICNWD,IDATA(9),4,IDUMY,0) GOTO 8002 C C 1000 CONTINUE C CLEAR STROBES AND SET DATA BITS HI C IDATA(3)=0 CALL EXEC(100002B,ICNWD,IDATA(1),4,IDUMY,0) GOTO 8002 8906 IERMS=0 RETURN C C ERROR EXIT ROUTINE C 8002 IERMS=9 8001 IERMS(2)=5 IERMS(3)=2HAC IERMS(4)=2HP IERMS(5)=2H RETURN END END$ } fo 09580-18012 2001 S C0122 &GFMRD              H0101 pFTN4,L SUBROUTINE GFMRD(IUNIT,IMODE,IREF,ITRIG,FREQ,RETL,RETR), +09580-16012 REV.2001 791023 C C**************************************** C C RELOCATABLE 09580-16012 C SOURCE 09580-18012 C C V.POVIO 10-4-76 C BOB RICHARDS 4-27-79 C BOB RICHARDS 791023 C C********************************************************************* C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C********************************************************************* C C C**************************************** C C HP 3575 GAIN PHASE METER C ------------------------ C C GENERAL: C ------- C C THE FOLLOWING DEVICE SUBROUTINE PROGRAMS C ANY FUNCTION OF THE HP 3575 GAIN PHASE METER C (OPT 002) AND RETURNS THE MEASUREMENT DATA, C APPEARING ON THE LEFT AND RIGHT FRONT PANEL C DISPLAYS, TO THE CALLING PROGRAM AS A FLOATING C POINT VALUE. C C HARDWARE ENVIRONMENT: C -------------------- C C HP 21MX SERIES COMPUTER C C HP 3575 GAIN PHASE METER WITH OPT 002 C C 2 HP 12566-60024 MICROCIRCUIT CARDS C WITH JUMPERS SET AS FOLLOWS C C W1 - A C W2 - A C W3 - B C W4 - B C W5 THRU W8 - REMOVED C W9 - A C C HP 09500-60281 INTERFACE CABLE C C INPUT AND OUTPUT WORD FORMAT: C ---------------------------- C C PROGRAM WORD FROM MICROCIRCUIT CARD #1 C C 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C ------------------------------------------------- C !RL!TM!PR!CF! ! !F1!F2! ! !AF!BF! ! !BA!AA! C ------------------------------------------------- C C REMOTE/LOCAL C RL=1 REMOTE C =0 LOCAL C C TRIGGER MODE C TM=1 NON DELAYED C =0 DELAYED C C PHASE REFERENCE C PR=1 -A C =0 A C C RIGHT DISPLAY C CF=1 PHASE C =0 B C C FREQUENCY RANGE C F1&F2 00=1-1K C 01=10-10K C 10=100-1M C 11=1K-13M C C AMPLITUDE FUNCTION C AF&BF 00=B/A C 01=A C 10=B C C VOLTAGE RANGE C BA OR AA 0=HIGH RANGE C 1=LOW RANGE C C C LEFT DISPLAY DATA TO MICROCIRCUIT CARD #1 C C 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C ------------------------------------------------- C !BO!AO!S !H ! TENS ! UNITS ! TENTHS ! C ------------------------------------------------- C C OVERLOAD C BO=1 OVERLOAD B C AO=1 OVERLOAD A C C SIGN C 1=+ C 0=- C C H=HUNDEEDS C C BITS 0-11 ARE IN BCD C C C RIGHT DISPLAY DATA TO MICROCIRCUIT CARD #2 C C SAME AS ABOVE EXCEPT BIT 15 =1 OVERLOAD ON C A OR B AND BIT 14 IS NOT USED C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C C GFMRD(I,I,I,I,R,RV,RV), OV=X, ENT=GFMRD, FIL=%GFMRD C C**************************************** C C NOTE: C C THE WELCOM FILE REQUIRES TWO ENTRIES FOR EACH HP3575 BECAUSE C TWO I/O SLOTS (I.E. LU'S) ARE REQUIRED TO INTERFACE THE HP3575. C THEREFORE, THE UNIT 1 'UNIT' ENTRIES WOULD BE 1 AND 2, THE UNIT C 2 ENTRIES WOULD BE 3 AND 4, ETC. BASIC CALLS WOULD BE TO UNITS C 1, 3, ETC. C C C C ERRORS: C C 1 = PARAMETER INPUT ERROR C C 2 = HP-3575 OVERLOAD/TIMEOUT ERROR C C 9 = EXEC CALL ERROR C C C DIMENSION IERMS(5) DATA IERMS/10,5,2HGF,2HMR,2HD / DATA IDTN/40/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN,IUNIT) ILU2=LUDV(ISTN,IDTN,IUNIT+1) IF(ILU1 .EQ. 0 .OR. ILU2 .EQ. 0)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XFMRD(ILU1,ILU2,IERMS,IMODE,IREF,ITRIG,FREQ,RETL,RETR) IF(IERMS)800,20,800 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C C GFMRD(IUNIT,IMODE,IREF,ITRIG,FREQ,RETL,RETR) C C WHERE C C IUNIT=UNIT NUMBER (1,3,5, ETC.) C C IMODE=MODE C C 1=RETURN B/A DB INTO RETL C 2=RETURN A DBV INTO RETL C 3=RETURN B DBV INTO RETL C C IREF=PHASE REFERENCE OR RIGHT HAND DISPLAY SELECTION C C 0=RIGHT HAND DISPLAY IS B SIGNAL LEVEL IN DBV C 1=RIGHT HAND DISPLAY IS PHASE ANGLE USING 'A' C SIGNAL AS THE REFERENCE. C -1=RIGHT HAND DISPLAY IS PHASE ANGLE USING '-A' C SIGNAL AS THE REFERENCE. C C ITRIG=TRIGGER MODE C C 0=NON DELAYED C 1=DELAYED C C FREQ=FREQUENCY C C -1=1HZ TO 1KHZ RANGE C -2=10HZ TO 100KHZ RANGE C -3=100HZ TO 1MHZ RANGE C -4=1KHZ TO 13MHZ RANGE C OR C FREQUENCY OF INPUT SIGNAL IN KHZ (.001 TO 13000) C C RETL=RETURNED LEFT PANEL READING. C C RETR=RETURNED RIGHT PANEL READING C C *THIS CALL INITIATES AND COMPLETES A MEASUREMENT. C THE MOST ACCURATE MEASUREMENTS ARE MADE IF ITRIG=1 C C WITH THE FREQUENCY MODE SET TO THE LOWEST RANGE ("-1") IN- C STRUMENT TIMEOUT IS SET TO 60 SECONDS AS OPPOSED TO 10 C SECONDS FOR OTHER MODES. C C***************************************** C SUBROUTINE XFMRD(ILU1,ILU2,IERMS,IMODE,IREF,ITRIG,FREQ,RETL,RETR), +09580-16012 REV.2001 791023 DIMENSION IBUF(2),IDATA(5),IREG(2),ITIME(4),IERMS(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C INITILIZE C ICNT=0 IERMS=1 ITIME(1)=1000 IF(FREQ .EQ. -1.0) ITIME(1) = 6000 C C CHECK PARAMETERS C IF((IMODE .L:T. 1) .OR. (IMODE .GT. 3))GOTO 8001 IF((IREF .LT. -1) .OR. (IREF .GT. 1))GOTO 8001 IF((ITRIG .LT. 0) .OR. (ITRIG .GT. 1))GOTO 8001 IF((FREQ .LT. -4.0) .OR. (FREQ .GT. 13000.0))GOTO 8001 IERMS=2 C C SET IREF AND ITRIG C ITRIA = 0 IF(IREF .EQ. 1)IREF=10000B IF(IREF .EQ. -1)IREF=30000B IF(ITRIG .EQ. 0)ITRIA=40000B C C SET AMP WORD C IF(IMODE .EQ. 1)IMODE=0 IF(IMODE .EQ. 2)IMODE=20B IF(IMODE .EQ. 3)IMODE=40B C C SET FREQUENCY C IF(FREQ .LT. 0.0)GOTO 300 IF(IREF .NE. 0)GOTO 200 C C AMPLITUDE MEASUREMENT SET HIGHEST RANGE C IRNGE=0 IF(FREQ .GT. 0.01)IRNGE=400B IF(FREQ .GT. 0.1)IRNGE=1000B IF(FREQ .GT.1.0)IRNGE=1400B GOTO 400 C C PHASE MEASUREMENT SET LOWEST RANGE C 200 IRNGE=1400B IF(FREQ .LT. 1.0)IRNGE=1000B IF(FREQ .LT. 0.1)IRNGE=400B IF(FREQ .LT. 0.01)IRNGE=0 GOTO 400 C C SET RANGE C 300 IF(FREQ .EQ. -1.0)IRNGE=0 IF(FREQ .EQ. -2.0)IRNGE=400B IF(FREQ .EQ. -3.0)IRNGE=1000B IF(FREQ .EQ. -4.0)IRNGE=1400B 400 IBUF(1)=IMODE+IREF+ITRIA+IRNGE+100003B C C IF OVERLOAD RETRY UP TO 10 TIMES C 110 IF(ICNT .GT. 10)GOTO 8001 C C TRY ATTENUATOR SETTING C IDATA(1)=IOR(IBUF(1),40000B) ICNWD=300B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDUMY,0) GOTO 8002 8900 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C WAIT TO SETTLE C CALL EXEC(12+100000B,0,1,0,-1) GOTO 8002 450 IF(ICNT .LE. 0) GOTO 8901 CALL EXEC(12+100000B,0,1,0,-300) GOTO 8002 C C CHECK FOR OVERLOADS C 8901 ICNWD=300B+ILU1 CALL EXEC(100001B,ICNWD,IDATA(1),1,IDUMY,0) GOTO 8002 8910 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 IF((IAND(IDATA(1),140000B)) .EQ. 0)GOTO 700 C C OVERLOADED , WHICH CHANNEL C ITEMP=1 ITEMQ=2 IF(IAND(IDATA(1),40000B) .NE. 0)ITEMP=0 IF(IAND(IDATA(1),100000B) .NE. 0)ITEMQ=0 IBUF(1)=(IAND(IBUF(1),177774B))+ITEMP+ITEMQ ICNT=ICNT+1 GOTO 110 C C PROGRAM 3575 C 700 IDATA(1)=IBUF(1) ICNWD=300B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDUMY,0) GOTO 8002 8902 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C WAIT TO SETTLE C CALL EXEC(12+100000B,0,1,0,-15) GOTO 8002 C C ENCODE 3575 C 500 IDATA(1)=12 IDATA(2)=3 IDATA(3)=11 IDATA(4)=4 IDATA(5)=5 C ICNWD=11100B+ILU2 CALL EXEC(100003B,ICNWD,IDATA(3),1,IDATA(4),2) GOTO 8002 8903 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C SET TIME OUT VALUE C CALL EXEC(100003B,100B+ILU1,ITIME(1)) GOTO 8002 8904 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C ICNWD=13100B+ILU1 CALL EXEC(100002B,ICNWD,IDATA(1),1,IDATA(2),1) GOTO 8002 8905 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C EVERYTHING OK NOW TAKE READING C 210 CALL EXEC(12+100000B,0,1,0,-3) GOTO 8002 C 212 ICNWD=300B+ILU1 CALL EXEC(100001B,ICNWD,IDATA(1),1,IDUMY,0) GOTO 8002 8906 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C ICNWD=300B+ILU2 CALL EXEC(100001B,ICNWD,IDATA(2),1,IDUMY,0) GOTO 8002 8907 CALL ABREG(IA,IB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 230 CONTINUE C C CONVERT DATA C RETL=(IAND(IDATA(1),17B))*.1 RETL=RETL+((IAND(IDATA(1),360B))/2**4) RETL=RETL+(((IAND(IDATA(1),7400B))/2**8)*10.0) RETL=RETL+(((IAND(IDATA(1),10000B))/2**12)*100.0) IF((IAND(IDATA(1),20000B)) .EQ. 0)RETL=RETL*(-1.0) C 330 RETR=(IAND(IDATA(2),17B))*.1 RETR=RETR+((IAND(IDATA(2),360B))/2**4) RETR=RETR+(((IAND(IDATA(2),7400B))/2**8)*10.0) RETR=RETR+(((IAND(IDATA(2),10000B))/2**12)*100.0) IF((IAND(IDA4J$"TA(2),20000B)) .EQ. 0)RETR=RETR*(-1.0) C C EXIT C 340 IERMS=0 RETURN C C ERROR EXIT C 8002 IERMS=9 8001 IERMS(2) = 5 IERMS(3)=2HGF IERMS(4)=2HMR IERMS(5)=2HD RETURN END END$ l;$ g r 09580-18019 2013 S C0122 &MOUTP              H0101 FTN4,L SUBROUTINE MOUTP(IU),09580-16019 REV.2013 800128 C C THIS DEVICE SUBROUTINE IS USED TO PROGRAM A MEMORY OUTPUT CALL C AS USED WITH THE BIOMATION 8100. C C**************************************** C C RELOCATABLE 09580-16019 C SOURCE 09580-18019 C C V.POVIO 11-23-76 C REY UNTALAN 10-23-79 C BOB RICHARDS 800128 C C C C********************************************************************* C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C********************************************************************* C C C*************************************** C DIMENSION IERMS(5),INUM(13) DATA IERMS/10,5,2HMO,2HUT,2HP / DATA IDTN/41/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) ILU1=LUDV(ISTN,IDTN) IF(ILU1 .EQ. 0)GOTO 800 C C RETRIEVE DATA FROM CONFIGURATION FILE C IERMS=1 CALL TIM(IDTN,1,1,INUM,13,N) IF(N .NE. 0)RETURN IF(IU .GT. INUM)GOTO 800 C C JUMP TO DEVICE SUBROUTINE C CALL XOUTP(ILU1,IERMS,IU) RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C**************************************** C SUBROUTINE XOUTP(ILU1,IERMS,IU),09580-16019 REV.2013 800128 DIMENSION IUNIT(7),IREG(2),IDATA(10), 1IDCB(144),NAME(3),IERMS(5), 1IXFER(2),IA(128),IB(2048) EQUIVALENCE (REG,IREG,LA),(IREG(2),LB) DATA IUNIT / 25400B,45400B,65400B,105400B, 1125400B,145400B,165400B / DATA NAME / 2HDM,2HOU,2HTP/ C C*************************************** C C F) MEMORY DATA OUTPUT CALL: C ------------------------ C C MOUTP(IU) C C WHERE C C IU=UNIT NUMBER (1-7) C C C C ERRORS HAVE THE FOLLOWING MEANING: C C 1= PARAMETER ERROR C 2= TIME OUT OR I/O INCOMPLETE C 3= FAILED TO OPEN DATA FILE (DMOUTP) C 9= I/O CALL REJECTED C C C COMMENT:A TYPE 1 FILE CALLED DMOUTP WITH A SECURITY CODE C OF VP AND 32 SECTORS LONG WILL HAVE TO BE C CREATED BEFORE THIS DEVICE SUBROUTINE CAN BE USED. C C :CR,DMOUTP:VP:-2:1:32 C C C*************************************** C C INITIALIZE C IDTN=41 IERMS=0 ITEMP=0 C C OPEN DATA FILE DMOUTP C CALL OPEN(IDCB,IERMS,NAME,5,2HVP) IF(IERMS .NE. 1)GOTO 8003 IERMS=2 C C SET UP OUTPUT DATA WORD C IDATA(1)=IUNIT(IU) C C OUTPUT DATA WORD C 400 ICNWD=300B+ILU1 IDATA(1)=IUNIT(IU) CALL EXEC(100002B,ICNWD,IDATA(1),1) GOTO 8002 8900 CALL ABREG(LA,LB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C READ DATA BACK C C ICNWD=500B+ILU1 CALL EXEC(100001B,ICNWD,IB(1),2048) GOTO 8002 8901 CALL ABREG(LA,LB) IF(IAND(IREG(1),177B) .NE. 0)GOTO 8001 C C CONVERT AND STORE IN RETURN VARIABLE C ISTRT=1 IEND=64 C C DO 470 J3=1,32 K=1 DO 410 J=ISTRT,IEND IXFER(2)=20B INEG=IAND(IB(J),200B) IF(INEG .EQ. 0)GOTO 430 C IXFER(1)=IOR(IB(J),177600B) IF(IXFER(1) .EQ. 177777B)IXFER(2)=67363B IF(IXFER(1) .EQ. 177776B)IXFER(2)=67365B IF(IXFER(1) .GT. 177775B)IXFER(1)=100064B GOTO 440 C 430 IXFER(1)=IAND(IB(J),177B) C 440 IA(K)=IXFER(1) IF(IA(K) .EQ. 0)IA(K)=1 IA(K+1)=IXFER(2) K=K+2 410 CONTINUE IERMS=0 C C WRITE TO DATA FILE C CALL WRITF(IDCB,IERMS,IA,128,J3) IF(IERMS .LT. 0)GOTO 8000 ISTRT=ISTRT+64 IENDL =IEND+64 470 CONTINUE C C CLOSE DATA FILE C CALL CLOSE(IDCB,IERMS) IF(IERMS .LT. 0)GOTO 8000 C C EXIT C IERMS=0 500 RETURN C C ERROR EXIT C C 8003 IERMS=3 GOTO 8001 C C 8002 IERMS=9 8000 IF(IERMS .LT. 0)IERMS=IABS(IERMS) 8001 IERMS(2)=5 IERMS(3)=2HMO IERMS(4)=2HUT IERMS(5)=2HP RETURN END  hp 09580-18020 A S 0122 &LUDV GET LU FOR DEVICE TYPE             H0101 ASMB,R,L,C NAM LUDV,7 09580-16020 REV.A 770101 * *--------------------------------------------------------------- * * RELOC. 09580-16020 * SOURCE 09580-18020 * * M.KAESSNER REV.A 770101 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * * LUDV(STN,TYPE,NUMBER) * LUDV(STN,TYPE) * * WHERE STN = STATION # (LUN OF CRT) * TYPE= DEVICE TYPE * NUMB= UNIT NUMBER * * RETURNS LUN OF DEVICE * * THE DRTXX WORD CONTAINS TYPE IN BITS 15 - 7 * NUMBER IN BITS 6 - 3 * FAKE STN BITS 2 - 0 * * ENT LUDV EXT DRTXX,.ENTR * A EQU 0 B EQU 1 * AISN NOP ATYP NOP ANUM DEF D1 POINT TO DEFAULT VALUE LUDV NOP JSB .ENTR DEF AISN LDA AISN,I .A. = LU OF CRT SZA,RSS LU=0 ? JMP NONE YES! EXIT SSA NO, IS IT NEGATIVE? JMP NONE YES! EXIT LDB DRTXX,I CHECK IF LU > SIZE OF DRTXX CMB,INB ADB A SSB,RSS JMP NONE GREATER THAN TABLE SIZE, EXIT! LDB DRTXX ADB A CREATE ADDRESS OF CRT'S ENTRY LDA B,I GET ENTRY AND D7 GET PHONY STATION # FROM ENTRY LDB ATYP,I GET TYPE # BLF ADB ANUM,I ADD IN UNIT NUMBER BLF,BRS POSTION TYPE AND UNIT NUMBER ADB A .B. CONTAIW  NS WORD TO SEARCH FOR SPC 2 LDA DRTXX GET ADDRESS OF STARTING LOCATION STA ADDR CLA SPC 1 LOOP INA INCREMENT LUN COUNTER CPA D64 DONE? JMP NONE YES,GET OUT -- NONE FOUND ISZ ADDR GET ADDRESS CPB ADDR,I FOUND IT? JMP DONE YES, GET OUT -- FOUND JMP LOOP NO, KEEP GOING * NONE CLA NONE FOUND, RETURN ZERO DONE LDB AD1 RESTORE 2ND PARM DEFAULT VALUE STB ANUM JMP LUDV,I * AD1 DEF D1 D1 DEC 1 D7 DEC 7 D64 DEC 64 ADDR BSS 1 END `  ip 09580-18021 A S 0122 &ERROR ERROR             H0101 ASMB,R,L,C HED <<9580 ERROR ROUTINE>> 09580-16021 REV.A NAM ERROR,7 09580-16021 REV.A 770501 * *--------------------------------------------------------------- * * RELOC. 09580-16021 * SOURCE 09580-18021 * * M.KAESSNER REV.A 770501 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * 9580 STANDARD ERROR ROUTINE (CALSB COMPATABLE) * ENT ERROR,LUERR,ERRCD,.LNUM ENT IERR,IERCD EXT EXEC,.ENTR,ISN,CNUMD * * * * CALLING SEQUENCE: * * JSB ERROR * DEF *+3 * DEF NUMBR DECIMAL NUMBER * DEF STRING ERROR MNEMONIC * : * : * THE ERROR MESSAGE IS OF THE FORMAT: * * ERROR XXXXXX-KK IN LINE NNNN * * * WHERE: XXXXXX IS THE MNEMONIC STRING * KK IS THE ERROR NUMBER * NNNN IS THE CURRENT BASIC LINE NUMBER * * NUMB NOP MESS NOP ERROR NOP JSB .ENTR DEF NUMB SKP * * INITIALIZATION * LDA OSTRT \ INITIALIZE OUTPUT BUFFER POINTER STA OPTR / LDA LUERR IF LUERR IS 1, CALL ISN FOR STATION ADA M1 SZA JMP PKMSG LU SET PREVIOUSLY JSB ISN GET STATION NUMBER DEF *+1 STA LUERR REPLACE WITH STATION NUMBER * * PACK ERROR STRING INTO OUTPUT BUFFER * PKMSG LDB MESS,I GET NUMBER OF CHARACTERS SZB,RSS IF ZERO LENGTH MESSAGE JMP PKDSH THEN PACK DASH CLE,ERB DIVIypDE BY 2, IF 'E' SET THEN ODD SEZ TEST REMAINDER INB INCREMENT ON ODD COUNT LDA B TEST NUMBER OF WORDS ADA M28 WORD COUNT MUST BE =< 27 SSA JMP *+3 OK, DON'T TRUNCATE LDB D27 TRUNCATE TO 27 WORDS (54 CHARACTERS) CLE CLEAR ODD BIT LDA MESS GET STRING ADDRESS INA 'A' POINTS TO STRING JSB PAK STORE STRING INTO OUTPUT BUFFER SEZ,RSS IF ODD COUNT, ADD A BLANK TO JMP PKDSH LDB OPTR LAST WORD. GET POINTER ADB M1 BACK UP ONE WORD LDA B,I GET LAST WORD AND UMSK CLEAR LOWER BITS ADA BLNK STORE A BLANK STA B,I REPLACE * * STORE DASH * PKDSH LDA DASH GET DASH/BLANK STA OPTR,I STORE INTO OUTPUT BUFFER ISZ OPTR INCREMENT BUFFER POINTER * * CONVERT ERROR NUMBER AND STORE IN OUTPUT BUFFER * LDA NUMB,I LOAD ERROR CODE SSA IF NEGATIVE, CMA,INA CONVERT TO POSITIVE STA ERRCD STORE FOR OTHER FUNCTIONS JSB CNUMD CONVERT TO ASCII DEF *+3 DEF ERRCD DEF BUF LDA ABUF1 GET ADDRESS OF BUFFER LDB D1 ONE WORD JSB PAK ADD TO OUTPUT BUFFER * * STORE " IN LINE " INTO OUTPUT BUFFER * LDA INLNE LOAD ADDRESS OF BUFFER LDB D4 LOAD WORD COUNT JSB PAK STORE INTO OUTPUT BUFFER * * CONVERT LINE NUMBER AND STORE INTO OUTPUT BUFFER * JSB CNUMD CONVERT TO ASCII DEF *+3 DEF .LNUM DEF BUF LDA ABUF2 GET ADDRESS OF BUFFER LDB D3 THREE WORDS JSB PAK ADD TO OUTPUT BUFFER * * WRITE OUTPUT BUFFER * LDA OPTR CALCULATE LDB OFRNT SIZE OF CMB,INB OUTPUT ADA B BUFFER STA SIZE JSB EXEC ACTUALLY WRITE IT OUT DEF *+5 DEheF D2 DEF LUERR OFRNT DEF OBUF DEF SIZE JMP ERROR,I RETURN SPC 5 ************** * PAK * ************** PAK NOP A=ADDRESS B=COUNT(WORDS) CMB,INB COMPLEMENT COUNT FOR LOOP COUNTER STB LUP LP LDB A,I GET WORD STB OPTR,I STORE IN OUTPUT BUFFER ISZ OPTR INCREMENT OUTPUT POINTER INA INCREMENT STRING POINTER ISZ LUP JMP LP JMP PAK,I RETURN SKP SKP *------------------------------------------------------------------ * * THIS ROUTINE ALLOWS FORTRAN PROGRAMS TO TEST THE ERROR CODE * SET WHEN CALLS ARE MADE TO "ERROR" * * CALLING SEQUENCE: * * JSB IERR (OR JSB IERCD) * DEF *+1 * : * : VALUE OF ERRCD IS SET IN A REGISTER THEN CLEARED * * DUM NOP IERCD EQU * ENTRY POINT WITH TWO NAMES IERR NOP JSB .ENTR DEF DUM SPC 1 LDA ERRCD GET ERROR CODE IN A REG CLB STORE 0 IN STB ERRCD ERRCD JMP IERR,I EXIT WITH ERRCD IN A REG SKP * WORKING STORAGE AND CONSTANTS * * * EXTERNAL ENTRY VALUES * ERRCD DEC 0 ERROR CODE VALUE (INITIALLY 0) LUERR DEC 1 ERROR LU SET BY CALSB .LNUM NOP LINE NUMBER OF ERROR * * ASCII BUFFERS ETC. * OBUF OCT 3505 'BELL/E' ASC 3,RROR OUTPUT BUFFER BSS 37 OSTRT DEF OBUF+4 STARTING ADDRESS OPTR NOP BUFFER POINTER DASH OCT 26440 INLNE DEF *+1 ASC 4, IN LINE BUF BSS 3 BUFFER FOR NUMBER CONVERSION ABUF1 DEF BUF+2 ABUF2 DEF BUF * * INTERNAL VALUES AND VARIBLES * A EQU 0 B EQU 1 M1 DEC -1 M28 DEC -28 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D27 DEC 27 BLNK OCT 40 UMSK OCT 177400 LUP NOP SIZE BSS 1 END  js 09580-18022 1926 S 0122 &TIM CONFIGURATION TABLE             H0101 ASMB,R,Q,C NAM TIM,7 09580-16022 REV.1926 790312 *------------------------------------------------------------------- * * RELOC. 09580-16022 * SOURCE 09580-18022 * * C. LEATH 03/15/77 REV. A * 790307 REV 1926 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *------------------------------------------------------------------- EXT EXEC,RTCLN,ISN,.ENTR EXT ERROR ENT TIM A EQU 0 B EQU 1 SKP * * * COMMENTS ************************************************** * * THIS IS THE TABLE INTERFACE MODULE FOR THE 9580 SYSTEM * RESPONSIBLE FOR RETRIEVING DATA FROM SYSTEM AVAILABLE * MEMORY (SAM) AND RETURNING THE DATA OF INTEREST TO * THE REQUESTING DEVICE SUBROUTINE. THE PARAMETERS * IN THE CALLING SEQUENCE DETERMINE WHAT DATA IS TO * BE RETURNED AND HOW MUCH. THE DEVICE SUBROUTINE * IS RESPONSIBLE FOR KNOWING WHAT DATA IS IN THE TABLE * AND WHAT FORMAT IT IS IN. * THE PARAMETERS IN THE CALLING SEQUENCE ARE DEFINED AS * AS FOLLOWS: * IDTN = DEVICE TYPE NUMBER, UNIQUE FOR EACH DEVICE * IUN = UNIT NUMBER * IRW = 1(READ),2(WRITE),3(# UNITS) * IBUF= DEVICE SUBROUTINE BUFFER IN WHICH DATA IS TO * BE RETURNED. * IBL = IBUF LENGTH * N = ERROR INDICATOR, * WHERE: * 1 = DEVICE TYPE NOT EXISTENT IN TABLE * 2 = LENGTH OF REQUEST BUFFER IBL DOES NOT * JIBE WITH THE LENGTH OF THE RECORD SET. * 3 = UNIT # DOES NOT EXIST IN THE TABLE. * 4 = NO CLASS # * 5 =s ILLEGAL IRW REQUEST # * * ERRORS ARE RECOVERABLE BY CHANGING THE ASCII TABLE * OR BY CHANGING THE TEST PROGRAM. * * SUBROUTINE TIM IS INCLUDED WITH EACH BASIC OVERLAY * IN ORDER TO ENABLE EACH DEVICE SUBROUTINE THAT * NEEDS VARIABLE DATA TO ACCESS TABLE DATA. * * PRIOR TO USING THIS PROGRAM IT IS ASSUMED THAT THE * ALLOC PROGRAM HAS BEEN RUN. ALLOC IS THE PROGRAM THAT TAKES * THE ASCII FILE CONTAINING THE CONFIGURATION INFORMATION * AND PLACES IT IN SAM (SYSTEM AVAILABLE MEMORY). OF COURSE * THE DATA IN SAM IS BINARY. THE FORMAT OF THE TABLE IN * IS AS SHOWN IN THE FOLLOWING FIGURE. EACH TABLE IN SAM * IS LINKED BY THE FIRST IN THE TABLE WHICH IS THE CLASS * NUMBER FOR THE SUCCEEDING TABLE. THE LAST TABLE IN SAM * HAS THE FIRST WORD POINTING TO THE FIRST TABLE OF THE GROUP, * SO THAT WE HAVE IN A SENSE A CIRCULARLY LINKED LIST. * THE SECOND WORD OF THE TABLE CONTAINS THE ACTUAL LENGTH * OF THE TABLE, WITH THE MAXIMUM SIZE ANY ONE TABLE CAN BE * IS 130 WORDS. * * ----------------------------------------- * WORD 1 * CLASS # FOR NEXT TABLE IF ANY * * * (MAY POINT TO ITSELF) * * ----------------------------------------- * WORD 2 * LENGTH (MAXIMUM 130 WORDS) * * *---------------------------------------- * WORD 3 * DEVICE TYPE NUMBER * * *---------------------------------------- * WORD 4 * # UNITS * * *---------------------------------------* * WORD 5 * # OF ENTRIES * * *---------------------------------------* * WORD 6 * DATA AND INFO SIMILAR TO WORDS 3-5 * * *---------------------------------------* * * NOTE: WORDS 3-5 ARE HEADER INFORMATION FOR EACH DEVICE * * * COMMENTS RELATED TO THE PROGRAM, KEYED TO THE NUMBERS. * ****#1 * * * SOME ERROR CHECKING IS DONE TO VERIFY IRW IS CORRECT.  * THE STATION NUMBER IS RETRIEVED VIA ISN AND THE CLASS * NUMBER FOR THE FIRST BUFFER IN SAM IS ALSO RETRIEVED * VIA "RTCLN". * ****#2 * RETRIEVE THE BUFFER WITH A CLASS GET REQUEST, USING * SUBROUTINE "GTBUF". LDT IS THE POINTER INTO IBC AND * IT IS INITIALIZED TO 3 TO POINT TO THE THIRD WORD SINCE * WORDS 1 AND 2 CONTAIN RESPECTIVELY THE CLASS NUMBER * FOR THE NEXT BUFFER IF ANY AND THE LENGTH OF THE BUFFER. * ****#3 * * AT THIS POINT WE BEGIN SEARCHING THRU THE BUFFER IBC TO * FIND THE DEVICE TYPE NUMBER (IDTN). THE FOLLOWING ALGORITHM * IS USED TO INDEX TO EACH IDTN IN THE TABLE: * * LDT(N) = [IBC(LDT(N-1) + 2) + 1] *[IBC(LDT(N-1)] + [LDT(N-1)+3] * A B C * * WHERE: LDT IS THE INDEX THAT IS UPDATED EACH TIME THRU LOOP(TM3). * A = THE NUMBER OF ENTRIES PLUS ONE FOR EACH UNIT NUMBER WORD. * B = THE NUMBER OF UNITS * C = THREE WORDS OF OVERHEAD FOR EACH DEVICE TYPE. * * IF AFTER COMPUTING EACH LDT IT IS DISCOVERED THAT THE VALUE * EXCEEDS THE TABLE LENGTH THE NEXT TABLE IS RETRIEVED FROM * SAM. * ****#4 * * THIS PORTION SEARCHES FOR THE UNIT NUMBER "IUN". * THE POINTER LDT AT THIS TIME POINTS TO THE * FIRST UNIT NUMBER OF A PARTICULAR DEVICE TYPE (IDTN) * AND THE COUNTER "IUCNT" IS INITIALIZED WITH * THE NUMBER OF UNITS ASSIGNED TO THE DEVICE TYPE. * IF THE UNIT NUMBER (IUN) IS NOT FOUND * A RETURN IS MADE TO THE CALLING ROUTINE WITH THE * THE ERROR FLAG (N) = -2. * THE ALGORITHM USED TO COMPUTE THE INDEX (LDT) FOR EACH * UNIT NUMBER IS: * * LDT(N) = LDT(N-1) +IUPTR + 1 * A B C * * WHERE: A = THE PREVIOUS INDEX TO A UNIT NUMBER. * B = THE NUMBER OF ENTRIES PER UNIT. * C = ONE WORD FOR UNIT # * * ****#5 * * HERE THE READ/WRITE INDICATOR (IRW) IS EXAMINED TO * DETERMINE WHICH DIRECTION DATA IS TO FLOW, AND IF * A WRITE (IRW = 2) WE hGO TO TM16. IF A * READ THE DATA OF INTEREST IS TRANSFERRED TO THE * DEVICE SUBROUTINE BUFFER (IBUF). IN CASE THE DATA * OVERFLOWS INTO ANOTHER BUFFER A CLASS GET REQUEST (GTBUF) * IS MADE TO RETRIEVE THE OTHER BUFFER. * ****#6 * * THIS IS THE WRITE SECTION, WITH THE ONLY DIFFERNCE FROM * THE READ REQUEST BEING THAT "ICL" IN THE GET REQUEST * HAS BIT 14 =0 TO INDICATE TO THE SYSTEM THAT WE WANT * TO RELEASE THE BUFFER BU RETAIN THE CLASS NUMBER. * OVERFLOWS ARE HANDLED PRETTY MUCH THE SAME WAY AS IN THE * READ REQUEST. * * * SAME #6 EXCEPT THIS IS FOR A WRITE REQUEST. SKP SPC 3 IDTN NOP IUN NOP IRW NOP IBUF NOP IBL NOP N NOP TIM NOP JSB .ENTR RETRIEVE PARAMETER ADDRESSES DEF IDTN CLA STA N,I STA IFND STA J ************************** # 1 PARAMETER CHECK AND INITIALIZATION * OF STATION #(ISTN) AND CLASS # (ICLAS). * SEE IF IRW IS < 0 OR > 3 * LDA IRW,I SZA,RSS JMP ERR5 SSA JMP ERR5 CMA,INA ADA .2 SSA JMP ERR5 JSB ISN GET STATION # DEF *+2 DEF IDMY STA ISTN JSB RTCLN GET CLASS # FOR STATION DEF *+3 DEF ISTN DEF ICLAS STA IFCLS SAVE FIRST CLASS # SZA,RSS IS CLASS # = 0 JMP ERR4 YES ERROR TM1 LDA .3 INITIALIZE LDT(POINTER FOR SEARCHING) STA LDT LDA IDTN,I DEVICE TYPE NUMBER STA ISV SEARCH VARIABLE * ************************* # 2 GET TABLES AND SEARCH FOR IDTN. * TM2 LDB ICLAS LDA IC1 MASK (BITS 13 1AND 14 SET) JSB GTBUF GET CLASS BUFFER JSB FOUND SEE IF IBC(LDT) = ISV JMP TM5 EUREKA!! * **************************** # 3 * TM3 LDA LDT CHECK IF NUMBER OF CPA .130 INITS IS CURRENT BUFFER JMP *+2 IF NOT, READ NEXT BUFFER JMP TM3A * LDB IBC SET CLASS# OF NEXT BUFFER STB ICLAS * LDA IC1 GET NEXT BUFFER JSB GTBUF * LDA .2 SET CURRENT LOCATION OF STA LDT DEVICE TYPE TO PSEUDO LOCATION. * LDA .2 SET TO (FIRST DATA LOC.) - 1 * * TM3A ADA IBCPT GET NUMBER OF UNITS INA LDB A,I STB TEMP * LDB LDT CHECK IF NUMBER OF INB CPB .130 ENTRIES IS IN CURRENT BUFFER JMP *+2 IF NOT, READ NEXT BUFFER JMP TM3B * LDB IBC SET CLASS # OF NEXT BUFFER STB ICLAS * LDA IC1 GET NEXT BUFFER JSB GTBUF * CLB,INB SET CURRENT LOCATION OF STB LDT DEVICE TYPE TO PSEUDO LOCATION * LDB .2 SET TO (FIRST DATA LOC.) - 1 * TM3B ADB IBCPT FETCH NUMBER OF ENTRIES INB LDA B,I * INA ADJUST NUMBER OF ENTRIES CLB MPY TEMP STA TEMP ADA LDT ADA .3 LDT = TEMP +(LDT+3) STA LDT CMA,INA SEE IF LDT > LENGTH OF TABLE(IBC(2)) ADA IBC2 SSA,RSS JMP TM4 LDA LDT LDT = LDT - 128 ADA M128 STA LDT LDA IBC CPA IFCLS HAVE WE EXAMINED ALL CLASS BUFFERS? JMP ERR1 YES THEN IDTN DOES NOT EXIST IN CONFIG TABLE LDB IBC STB ICLAS JMP TM2 TRY AGAIN (READ IN ANOTHER BUFFER) TM4 JSB FOUND JMP TM5 FOUND IT THIS TIME JMP TM3 GO LOOP DE LOOP * * SKP SPC 3 * ************************** # 4 * DEVICE TYPE NUMBER HAS BEEN FOUND SO THEREFORE WE MUST * NOW FIND THE UNIT # AND ENTRIES * TM5 LDA LDT MAKE SURE LDT+1 .NE. 130 INA CPA .130 JMP *+2 JMP TM6 LDA IB130 STA IUCNT NUMBER OF UNITS LDB IBC STB ICLAS KEEP ICLAS CURRENT LDA IC1 JSB GTBUF LDA .4 SET POINTEGkR TO FIRST UNIT NUMBER STA LDT LDB IBCPT ADB .3 PICK UP # OF ENTRIES LDA B,I STA IUPTR CPA IBL,I SEE IF IBL(BUFFER LENGTH) = #ENTRIES(SUBRECORDS) JMP TM10 JMP ERR2 TM6 LDA LDT SEE IF LDT = 130(END OF BUFFER). CPA .130 JMP *+2 JMP TM7 LDB IBC SINCE LDT= 130, THE INFORMATION WE NEED IS IN STB ICLAS LDA IC1 THE NEXT CLASS BUFFER JSB GTBUF LDA .2 SET LDT TO POINT TO IBC LENGTH WORD (IBC(2)) STA LDT TM7 LDB IBCPT ADB LDT COMPUTE IBC(LDT+2) AND IBC(LDT+1), #ENTRIES AND INB # UNITS RESPECTIVELY LDA B,I STA IUCNT INB LDA B,I STA IUPTR CPA IBL,I SEE IF IBL = #ENTRIES JMP *+2 JMP ERR2 LDA LDT LDT = LDT + 3, POINT IT TO FIRST UNIT # ADA .3 STA LDT * * TM10 LDA IRW,I SEE IF THIS IS A UNIT COUNT REQUEST ONLY CPA .3 JMP TM20 * LDA IUN,I SET UP UNIT# TO BE TESTED FOR. STA ISV * LDA IUCNT PRESET COUNTER FOR #UNITS + 1. CMA STA IFND * TM11 ISZ IFND TEST IF #UNITS HAS BEEN EXCEEDED. JMP *+2 JMP ERR3 * TM12 LDA LDT CHECK IF UNIT # IS IN CURRENT BUFFER. CMA,INA ADA IBC2 SSA,RSS JMP TM13 YES. UNIT# IS IN CURRENT BUFFER. * LDA LDT ADJUST UNIT# POINTER FOR POSISTION IN ADA M128 NEXT BUFFER. STA LDT * LDA IC1 READ NEXT BUFFER. LDB IBC (NOTE. ENTRIES FOR A UNIT MAY SPAN MORE STB ICLAS THAN ONE BUFFER.) JSB GTBUF JMP TM12 * TM13 JSB FOUND CHECK IF UNIT# IS RIGHT ONE. JMP TM14 YES. * LDA LDT INDEX TO NEXT UNIT# POSITION. ADA IUPTR INA STA LDT * JMP TM11 * SKP SPC 3 ************************ # 5 * AT THIS POINT #THE UNIT # AND DEVICE TYPE HAVE BEEN FOUND * AND WE ARE READY TO TRANSFER DATA TO OR FROM THE CLASS * TABLES IN SAM. * TM14 ISZ LDT POINT LDT TO FIRST SUBRECORD ENTRY IN TABLE LDA IBL,I INITIALIZE COUNTER CMA,INA STA TRCNT LDA IRW,I READ OR WRITE REQUEST? CPA .2 JMP TM16 WRITE REQUEST * * READ REQUEST * LDA IBUF INITIALIZE ADDRESS POINTERS STA TO TM15 LDA IBCPT ADA LDT STA FROM JSB TRFER BEGIN TO TRANSFER JMP TIM,I ALL DONE LDB IBC GET THE REST LDA IC1 JSB GTBUF CLA STA J RE-INIT POINTERS LDA .3 STA LDT JMP TM15 SPC 3 ********************** #6 * WRITE REQUEST * TM16 LDB ICLAS LDA IC2 (BIT 13 ONLY SET) RELEASE BUFFER,KEEP CLASS # JSB GTBUF LDA IBUF STA FROM TM17 LDA IBCPT ADA LDT STA TO JSB TRFER JMP TM18 * * CLASS READ/WRITE * LDA IBC STA TEMP SAVE CURRENT CLASS # JSB WRTBF LDB TEMP GET THE NEXT BUFFER STB ICLAS LDA IC2 JSB GTBUF CLA RE-INIT POINTERS STA J LDA .3 STA LDT JMP TM17 TM18 JSB WRTBF JMP TIM,I GET HAT TM20 LDA IUCNT STA IBUF,I JMP TIM,I * SKP SPC 3 * * SPECIAL SUBROUTINES THAT MAKE THE JOB OF ALL THE PREVIOUS * BIT CRUNCHING IN THIS ROUTINE EASIER. * ************************************************************** * ******CLASS GET REQUEST UPON ENTRY A=MASK B=CLASS # * GTBUF NOP IOR B A /\ B STA ICL JSB EXEC DEF RTG DEF .21 DEF ICL DEF IBC DEF .130 RTG JMP GTBUF,I * .21 DEC 21 .130 DEC 130 ICL NOP * SPC 2 * *CLASS READ/WRITE REQUEST * WRTBF NOP JSB EXEC DEF RTW DEF .20 DEF .0  DEF IBC DEF IBC+1 LENGTH DEF IDMY DEF JDMY DEF ICLAS RTW JMP WRTBF,I * .20 DEC 20 .0 OCT 0 IDMY NOP JDMY NOP ICLAS NOP * SPC 2 * * MATCH CHECKING ROUTINE WHICH SEES WHETHER IBC(LDT) = ISV * WHERE ISV IS EITHER THE IDTN OR THE IUN. * * IF A MATCH RETURN IS P+1 * IF NO MATCH RETURN IS P+2 * FOUND NOP LDB IBCPT ADB LDT LDA B,I CPA ISV JMP FOUND,I ISZ FOUND JMP FOUND,I * SPC 2 * * DATA TRANSFER ROUTINE, TAKES DATA FROM ONE LOCATION(FROM) * AND TRANSFERS IT TO ANOTHER (TO). * P+1 RETURN INDICATES ALL DATA TRANSFERRED * P+2 RETURN " MORE TO GO * !!ATTENTION!! ZERO WORDS CANNOT MOVED.(IE TRCNT.NE.0) * TRFER NOP * TRLOP LDA J CHECK IF WORD ABOUT TO BE MOVED ADA LDT IS IN CURRENT BUFFER. CMA,INA ADA IBC2 SSA,RSS JMP *+3 * ISZ TRFER RETURN TO GET NEXT BUFFER. JMP TRFER,I * LDA FROM,I MOVE DATA WORD. STA TO,I * ISZ J SET POINTER TO NEXT WORD. ISZ FROM ISZ TO * ISZ TRCNT CHECK IF ALL WORDS HAVE BEEN MOVED. JMP TRLOP * JMP TRFER,I MAKE "FINISHED (P+1)" RETURN. * FROM NOP TO NOP J NOP TRCNT NOP SKP SPC 3 * * ERROR MESSAGES * ERR5 ISZ N,I ERR4 ISZ N,I ERR3 ISZ N,I ERR2 ISZ N,I ERR1 ISZ N,I JSB ERROR DEF *+3 DEF N,I DEF IERMS JMP TIM,I * IERMS DEC 5 ASC 3,TIM * SPC 3 * * STORAGE, CONSTANTS ETC * IBC BSS 130 IFND NOP .3 DEC 3 IBC2 EQU IBC+1 IBCPT DEF IBC-1 IB130 EQU IBC+129 .4 DEC 4 .2 DEC 2 IUCNT NOP IUPTR NOP IC1 OCT 60000 IC2 OCT 20000 ISV NOP TEMP NOP IFCLS NOP ISTN NOP M128 DEC -128 LDT NOP END m*64006 k y 09580-18023 A S 0122 &CLASS CLASS             H0101 ASMB,R,L NAM CLASS,7 09580-16023 770120 *------------------------------------------------------------------- * * RELOC. 09580-16023 * SOURCE 09580-18023 * ERS A-09580-16023-1 * * C. LEATH 01/20/77 REV. A * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *------------------------------------------------------------------- EXT SVCLN EXT DRTXX EXT IPUT EXT .ENTR ENT STCLN,RTCLN B EQU 1 * * THIS SUBROUTINE IS USED TO STORE AND RETRIEVE * CLASS NUMBERS FROM/TO THE 8 WORD CORE RESIDENT * BUFFER SVCLN. * THE PARAMETERS IN THE CALLING SEQUENCE HAVE * THE FOLLOWING MEANINGS: * * INDX = STATION NUMBER USED TO INDEX INTO SVCLN * ICLASS = CLASS NUMBER TO BE STORED * INDX NOP ICLAS NOP STCLN NOP JSB .ENTR RETRIEVE ADDRESSES DEF INDX LDB INDX,I JSB DRTX COMPUTE INDEX INTO DRTXX TABLE TO GET REAL LU# ADB SV,I FORM ADDR[SVCLN] + INDX ->[B] INB ACCOUNT FOR # OF STATIONS STB ADDR JSB IPUT DEF RTN DEF ADDR DEF ICLAS,I RTN JMP STCLN,I * *RETRIEVE CLASS NUMBER * INDEX NOP ICLS NOP RTCLN NOP JSB .ENTR DEF INDEX LDB INDEX,I JSB DRTX ADB SV,I INB LDA B,I STA ICLS,I JMP RTCLN,I * DRTX NOP ADB DRT,I ADDRESS OF DRTXX TABLE LDA B,I AND .7 LU # STA B JMP DRTX,I SV DEF SVCLN DRT DEF DRTXX .7 DEC 7 ADDR NOP END C   ls 09580-18038 2001 S C0122 &DCVSH              H0101 tFTN4,L SUBROUTINE DCVSH(UNIT,VOLT,CURLIM),09580-16038 REV.2001 +791023 C------------------------------------------------------------------- C C RELOC. 09580-16038 C SOURCE 09580-18038 C C C. LEATH 03/15/77 REV. A C R. UNTALAN 05/15/77 REV. B C V.POVIO 780422 REV. C C BOB RICHARDS 791023 C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- INTEGER UNIT DIMENSION IERMS(5) DATA IDTN/22/ DATA IERMS/10,5,2HDC,2HVS,2HH / C C INTERFACE MODULE 61XX HIGH OUTPUT DEVICE SUBROUTINE C C IERMS= 10 ISTN = ISN(DUMMY) IU = ((UNIT - 1)/8) + 1 LU = LUDV(ISTN,IDTN,IU) IF(LU)800,800,10 10 IF(UNIT .GT. 8)UNIT=UNIT-8 CALL XCVSH(LU,IERMS,UNIT,VOLT,CURLIM) IF(IERMS)800,20,800 20 RETURN 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE DCISH(UNIT,CURR,VOLLIM),09580-16038 REV.2001 +791023 C------------------------------------------------------------------- C INTEGER UNIT DIMENSION IERMS(5) DATA IDTN/22/ DATA IERMS/10,5,2HDC,2HIS,2HH / C C INTERFACE MODULE 6140A HIGH CURRENT DEVICE SUBROUTINE C C IERMS= 10 ISTN = ISN(DUMMY) IU = ((UNIT - 1)/8) + 1 LU = LUDV(ISTN,IDTN,IU) IF(LU)800,800,10 10 IF(UNIT .GT. 8)UNIT=UNIT-8 CALL XCVSH(LU,IERMS,UNIT,CURR,VOLLIM) IF(IERMS)800,20,800 20 RETURN 800 CALL ERROR(IERMS,IERMS(2)) RETURN  END SUBROUTINE XCVSH(LU,IERR ,UNIT,VI,VILIM), +09580-16038 REV.2001 791023 C********************************************************************* C C THIS SUBROUTINE SETS THE DVS/DCS TO THE HIGH V/I RANGE. C THE PARAMETERS IN THE CALLING SEQUENCE ARE DEFINED C AS FOLLOWS: C C C LU = LOGICAL UNIT NUMBER FOR INSTRUMENT C IERR = 5 WORD ERROR ARRAY C WHERE IERR(1) = ERROR CODE WITH: C 0 = NO ERROR C 1 = PARAMETER ERROR C 2 = I/O DEVICE DOWN OR TIME OUT C 9 = I/O CALL REJECTED C 10 = DEVICE NOT ASSIGNED TO STATION OR NONEXISTENT C IERR(2) = CHARACTER COUNT C IERR(3) - IERR(4) = DEVICE SUBROUTINE MNEMONICS C C IUNIT IS THE UNIT NUMBER C VI IS THE DESIRED OUTPUT(V OR I) C -50.00<= VI <= 50.00 FOR 6129 AND 6130 (VOLTS) C -100.00<=VI <= 100.00 FOR 6131 (VOLTS) C -163.84<= VI <= 163.835 FOR 6140A (MA) C N/A FOR 6128 OR 6933 SINCE THEY HAVE NO HIGH C VOLTAGE RANGE. C C VILIM IS THE DESIRED VOLTAGE/CURRENT LIMIT C C C VOLTAGE/CURRENT LIMIT TABLE C-------------------------------------------------------------- C POWER SUPPLIES 6128C 6129C 6130C 6131C 6140A C-------------------------------------------------------------- C (MA) (MA) (MA) (MA) (V) C 250 100 20 20 2 C 625 250 50 50 5 C 875 350 70 70 7 C 1250 500 100 100 10 C 2500 1000 200 200 20 C 6250 2500 500 500 50 C 8750 3500 700 - 70 C 12500 5000 1000 - 100 C-------------------------------------------------------------- C C********************************************************************* INTEGER UNIT, IBUF(2), CL, CLISZ INTEGER CONWD, IDBUF1(3), WORD1, WORD2 INTEGER IDBUF2(3), ICBUF(3), IREG(2) INTEGER IERR(5) REAL LIMIT, CLMT(8) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA CLMT/20.,50.,70.,100.,200.,500.,700.,1000./ DATA ICBL/3/, IDBL/3/, IDBUF1/13,0,0/ DATA ICBUF/4,1,3/ C********************************************************************* C THE CONFIGURATION TABLE CONTAINS TWO ENTRIES FOR THE C POWER SUPPLIES: C C IBUF(1)= TYPE OF PWR SUPPLY (6128,6129, ETC.) C IBUF(2)= OUTPUT WORD2 WITHOUT THE CURRENT/VOLTAGE LIMIT C THE FOLLOWING IS AN EXAMPLE OF THE CONFIGURATION TABLE DATA FOR THE C 61XX POWER SUPPLIES. C C R 22,6,2 DEVICE TYPE #,6UNITS,2ENTRIES EACH C U1 C 6130 C 0 C U2 C 6140 C 0 C U3 C 6131 C 0 C U4 C 6129 C 0 C U5 C 6129 C 0 C U6 C 6131 C 0 C********************************************************************* C C BRANCH AND MNEMONIC TABLE ENTRIES C C DCVSH(I,R,R), OV=N, ENT=DCVSH, FIL=%DCVSH C DCISH(I,R,R), OV=N, ENT=DCISH, FIL=%DCVSH C DCVSL(I,R,R), OV=N, ENT=DCVSL, FIL=%DCVSL C DCISL(I,R,R), OV=N, ENT=DCISL, FIL=%DCVSL C DCV(I,R,R), OV=N, ENT=DCV, FIL=%DCV C DCI(I,R,R), OV=N, ENT=DCI, FIL=%DCV C DCOPL(IVA), OV=N, ENT=DCOPL, FIL=%DCOPL C C C****************************************************************** C C IERR = 0 CALL TIM(22,UNIT,1,IBUF,2,N) IF(N.NE.0)RETURN IERR = 1 C********************************************************************* C CHECK IF TYPE IS 6128 OR 6933 WHICH HAVE NO HIGH RANGE C*** ****************************************************************** IF(IBUF .EQ.6128.OR.IBUF .EQ.6933) GO TO 99 C********************************************************************* C SET APPROPRIATE LIMIT C LIMIT= 50.00001 IF(IBUF .EQ.6131) LIMIT= 100.00001 IF(IBUF .EQ.6140) LIMIT= 163.83501 C C SET # OF ENTRIES IN I-LIMIT TABLE C CLISZ= 8 IF(IBUF .EQ.6131) CLISZ= 6 C C DETERMINE APPLICABLE OUTPUT LIMIT TABLE C DIVFA= 1.0 IF(IBUF .EQ. 6140) DIVFA = 0.100 IF(IBUF .EQ.6129) DIVFA= 5.0 IF(IBUF .EQ.6128.OR.IBUF .EQ.6933) DIVFA= 15.0 C********************************************************************* C CHECK IF LIMIT IS EXCEEDED C********************************************************************* IF(ABS(VI)-LIMIT.GT.0.) GO TO 99 C********************************************************************* C SET UP OUTPUT WORD1 C********************************************************************* WORD1= IFIX(VI*200.) C********************************************************************* C PROCESS CURRENT LIMIT C********************************************************************* SAVEA= -VILIM/DIVFA IF(SAVEA.GT.0.) GO TO 99 CL= 0 45 IF(CLMT(CL+1) + SAVEA) 50,60 50 CL= CL+1 C********************************************************************* C DOES CURRENT LIMIT EXCEED THE MAXIMUM? C********************************************************************* IF(CL+1.GT.CLISZ) GO TO 99 GO TO 45 C********************************************************************* C SET UP OUTPUT WORD2, AND OTHER PARAMETERS NEEDED FOR OUTPUT C********************************************************************* 60 WORD2= (CL*10B) + (UNIT-1) CONWD= 11300B + LU IDBUF1(3)= WORD2 IDBUF2 = 13 IDBUF2(2)= WORD1 IDBUF2(3)= WORD2 C********************************************************************* C IS NEW RANGE THE SAME AS PREVIOUS RANGE? C********************************************************************* IERR = 2 C C DISARM ANY PREVIOUS ALARM PROGRAM. C CALL EXEC(100003B,400B+LU) GO TO 88 69 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 99 ITST1 = IAND(IBUF(2),177707B) ITEST= IAND(WORD2,177707B) IF(ITST1 .NE.ITEST) GO TO 70 ITST1 = IAND(IBUF(2),70B) ITEST = IAND(WORD2,70B) IF(ITEST.LE.ITST1)GO TO 75 C********************************************************************* C SEND UPDATED BUFFER TO TABLE C ESTABLISH ALARM MODE, SET RANGE, SET OUTPUT TO ZERO C********************************************************************* 70 CALL EXEC(100002B,CONWD,IDBUF1,IDBL,ICBUF,ICBL) GO TO 88 73 CALL ABREG(IA,IB) 77 IF(IAND(IREG,377B ).NE.0)GO TO 99 C C ESTABLISH ALARM MODE AND SET NEW OUTPUT CALL EXEC(100003B,500B+LU) GO TO 88 C 75 CALL EXEC(100002B ,CONWD,IDBUF2,IDBL,ICBUF,ICBL) GO TO 88 80 IBUF(2) = WORD2 CALL TIM(22,UNIT,2,IBUF,2,N) C C IERR = 0 RETURN 88 IERR = 9 99 IERR(2) = 5 IERR(3) = 2HDC IERR(4) = 2HVS IF (IBUF .EQ. 6140) IERR(4) = 2HIS IERR(5) = 2HH RETURN END END$  m w 09580-18039 2001 S C0122 &DCVSL              H0101 uFTN4,L SUBROUTINE DCVSL(UNIT,VOLT,CURLIM),09580-16039 REV.2001 +791023 C------------------------------------------------------------------- C C RELOC. 09580-16039 C SOURCE 09580-18039 C C C. LEATH 03/15/77 REV. A C C. LEATH 05/20/77 REV. B C R. UNTALAN 07/15/77 REV. C C V.POVIO 780422 REV. D C BOB RICHARDS 791023 C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- INTEGER UNIT DIMENSION IERMS(5) DATA IDTN/22/ DATA IERMS/10,5,2HDC,2HVS,2HL / C C INTERFACE MODULE FOR 61XX POWER SUPPLY DEVICE C SUBROUTINE. C C ISTN = ISN(DUMMY) IERMS= 10 IU = ((UNIT - 1)/8) + 1 LU = LUDV(ISTN,IDTN,IU) IF(LU)800,800,10 10 IF(UNIT .GT. 8)UNIT=UNIT-8 CALL XCVSL(LU,IERMS,UNIT,VOLT,CURLIM) IF(IERMS)800,20,800 20 RETURN 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE DCISL(UNIT,CURR,VOLLIM),09580-16039 REV.2001 +791023 INTEGER UNIT DIMENSION IERMS(5) DATA IDTN/22/ DATA IERMS/10,5,2HDC,2HIS,2HL / C C INTERFACE MODULE FOR 6140 LOW CURRENT DEVICE C SUBROUTINE. C C ISTN = ISN(DUMMY) IERMS= 10 IU = ((UNIT - 1)/8) + 1 LU = LUDV(ISTN,IDTN,IU) IF(LU)800,800,10 10 IF(UNIT .GT. 8)UNIT=UNIT-8 CALL XCVSL(LU,IERMS,UNIT,CURR,VOLLIM) IF(IERMS)800,20,800 20 RETURN 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTI5KNE XCVSL(LU,IERR ,UNIT,VI,VILIM), +09580-16039 REV.2001 791023 C********************************************************************* C C THIS SUBROUTINE SETS THE DVS/DCS TO THE LOW OUTPUT RANGE. C THE PARAMETERS IN THE CALLING SEQUENCE ARE DEFINED AS C FOLLOWS: C C C C LU = LOGICAL UNIT NUMBER FOR INSTRUMENT C IERR = 5 WORD ERROR ARRAY C WHERE IERR(1) = ERROR CODE WITH: C 0 = NO ERROR C 1 = PARAMETER ERROR C 2 = I/O DEVICE DOWN OR TIME OUT C 9 = I/O CALL REJECTED C 10 = DEVICE NOT ASSIGNED TO STATION OR NONEXISTENT C IERR(2) = CHARACTER COUNT C IERR(3) - IERR(4) = DEVICE SUBROUTINE MNEMONICS C C IUNIT IS THE UNIT NUMBER C VI IS THE DESIRED OUTPUT C -16.3835 <= VI<= +16.3835 C VILIM IS THE DESIRED CURRENT/VOLTAGE LIMIT C C OUTPUT LIMIT TABLE C C----------------------------------------------------------------- C POWER SUPPLIES 6128C 6129C 6130C 6131C 6140A C----------------------------------------------------------------- C (MA) (MA) (MA) (MA) (V) C 250 100 20 20 2 C 625 250 50 50 5 C 875 350 70 70 7 C 1250 500 100 100 10 C 2500 1000 200 200 20 C 6250 2500 500 500 50 C 8750 3500 700 - 70 C 12500 5000 1000 - 100 C----------------------------------------------------------------- C C C********************************************************************* INTEGER UNIT, IBUF(2), CL, CLISZ INTEGER CONWD, IDBUF1(3), WORD2, WORD1 INTEGER IERR(5) INKTEGER IDBUF2(3), ICBUF(3), IREG(2) REAL CLMT(8) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA CLMT/20.,50.,70.,100.,200.,500.,700.,1000./ DATA ICBL/3/, IDBL/3/, IDBUF1/13,0,0/ DATA ICBUF/4,1,3/ C********************************************************************* C RETRIEVE IBUF,FROM THE CONFIGURATION TABLE, WHICH C CONTAINS: C IBUF(1)= TYPE OF PWR SUPPLY (6128,6129, ETC.) C IBUF(2)= OUTPUT WORD2 WITHOUT THE CURRENT LIMIT C C SEE &DCVSH LISTING FOR CONFIGURATION TABLE EXAMPLE C IERR = 0 CALL TIM(22,UNIT,1,IBUF,2,N) IF(N.NE.0) RETURN IERR = 1 C********************************************************************* C********************************************************************* C SET # OF ENTRIES IN I-LIMIT TABLE C********************************************************************* CLISZ= 8 IF(IBUF .EQ.6131) CLISZ= 6 C********************************************************************* C DETERMINE APPLICABLE CURRENT/VOLTAGE LIMIT TABLE C DIVFA= 1.0 IF(IBUF .EQ.6129) DIVFA= 5.0 IF(IBUF .EQ.6128.OR.IBUF .EQ.6933) DIVFA= 15.0 IF(IBUF .EQ. 6140) DIVFA = 0.100 C********************************************************************* C CHECK IF OUTPUT EXCEEDS LIMIT C IF(ABS(VI)-16.383502.GT.0.)GO TO 99 C********************************************************************* C SET UP OUTPUT WORD1 C WORD1= IFIX(VI*2000.002) C********************************************************************* C PROCESS CURRENT/VOLTAGE LIMIT C********************************************************************* SAVEA= -VILIM/DIVFA IF(SAVEA.GT.0.)GO TO 99 CL= 0 45 IF(CLMT(CL+1) + SAVEA) 50,60 50 CL= CL+1 C********************************************************************* C DOES CURRENT/VOLTAGE LIMIT EXCEED THE MAXIMUM? C IF(CL+1.GT.CLISZ) GOR TO 99 GO TO 45 C********************************************************************* C SET UP OUTPUT WORD2, AND OTHER OUTPUT PARAMETERS C 60 WORD2= (CL*10B) + (UNIT-1) + 100B CONWD= 11300B + LU IDBUF1(3)= WORD2 IDBUF2 = 13 IDBUF2(2)= WORD1 IDBUF2(3)= WORD2 C********************************************************************* C IS THE NEW OUTPUT RANGE THE SAME AS PREVIOUS OUTPUT RANGE? C IERR = 2 C C DISARM ANY PREVIOUS ALARM PROGRAMS C CALL EXEC(100003B,400B+LU) GO TO 88 69 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 99 ITST1 = IAND(IBUF(2),177707B) ITEST= IAND(WORD2,177707B) IF(ITST1 .NE.ITEST) GO TO 70 ITST1 = IAND(IBUF(2),70B) ITEST = IAND(WORD2,70B) IF(ITEST.LE.ITST1)GO TO 75 C********************************************************************* C ESTABLISH ALARM MODE, SET OUTPUT RANGE, SET OUTPUT TO ZERO C 70 CALL EXEC(100002B,CONWD,IDBUF1,IDBL,ICBUF,ICBL) GO TO 88 77 IF(IAND(IREG,377B).NE.0)GO TO 99 C********************************************************************* C ESTABLISH ALARM MODE AND SET NEW VOLTAGE C C REARM INTERRUPT PROGRAM C CALL EXEC(100003B,500B+LU) GO TO 88 75 CALL EXEC(100002B ,CONWD,IDBUF2,IDBL,ICBUF,ICBL) GO TO 88 79 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 99 IBUF(2) = WORD2 C C CALL TIM(22,UNIT,2,IBUF,2,N) C IERR = 0 RETURN 88 IERR = 9 99 IERR(2) = 5 IERR(3) = 2HDC IERR(4) = 2HVS IF(IBUF .EQ. 6140) IERR(4) = 2HIS IERR(5) = 2HL RETURN END END$ 0m nw 09580-18040 2001 S C0122 &DCV              H0101 9gFTN4,L SUBROUTINE DCV(UNIT,VOLT,CURLIM),09580-16040 REV.2001 +791023 C------------------------------------------------------------------- C C RELOC. 09580-16040 C SOURCE 09580-18040 C C C. LEATH 03/15/77 REV. A C BOB RICHARDS 791023 C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- C********************************************************************* C C THIS SUBROUTINE SETS THE DVS TO THE HIGH OR LOW VOLTAGE C RANGE DEPENDING ON THE DESIRED VOLTAGE. THE LOW RANGE C IS SELECTED IF ABS(VOLT) <= 16.3835 VDC AND THE HIGH C RANGE IS SELECTED IF ABS(VOLT) > 16.3835 VDC. C C THE CALL IS MADE AS FOLLOWS: C C CALL DCV(IUNIT,VOLT,CURLIM) C C IUNIT IS THE UNIT NUMBER (MUST BE BETWEEN 1 AND 8) C VOLT IS DESIRED VOLTAGE C CURLIM IS THE CURRENT LIMIT C C IERR = 0 = NO ERRORS C IERR = 2 = CALLED UNIT IS NOT A DVS. C C C********************************************************************* INTEGER UNIT, IBUF(2) DIMENSION IERMS(5) DATA IERMS/10,5,2HDC,2HV ,2H / C********************************************************************* C RETRIEVE IBUF, FROM THE CONFIGURATION TABLE, WHICH C CONTAINS: C IBUF(1)= TYPE OF PWR SUPPLY (6128,6129,ETC.) C IBUF(2)= PRESENT CURRENT LIMIT C********************************************************************* CALLc0 TIM(22,UNIT,1,IBUF,2,N) C********************************************************************* C USE LOW RANGE FOR 6128 AND 6933 C******************************************************************** IF(IBUF(1).EQ.6128.OR.IBUF(1).EQ.6933) GO TO 50 C******************************************************************** C SEE IF CALLED UNIT IS REALLY A DVS. C******************************************************************** IF(IBUF(1) .EQ. 6140) GOTO 9000 C******************************************************************** C DETERMINE APPROPRIATE RANGE DEPENDING ON WHETHER C VOLT IS > OR <= TO 16.383502, THEN CALL EITHER C DCVSH FOR THE HIGH RANGE OR DCVSL FOR THE LOW RANGE. C********************************************************************* IF(ABS(VOLT).LE.16.383502) GO TO 50 CALL DCVSH(UNIT,VOLT,CURLIM) RETURN 50 CALL DCVSL(UNIT,VOLT,CURLIM) RETURN C C ERROR - CALLED UNIT IS NOT A DVS. C 9000 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE DCI(UNIT,CURR,VOLLIM),09580-16040 REV.2001 +791023 C********************************************************************* C C THIS SUBROUTINE SETS THE DCS TO THE HIGH OR LOW CURRENT C RANGE DEPENDING ON THE DESIRED CURRENT. THE LOW RANGE C IS SELECTED IF ABS(CURR) <= 16.3835 MA AND THE HIGH C RANGE IS SELECTED IF ABS(CURR) > 16.3835 MA. C C THE CALL IS MADE AS FOLLOWS: C C CALL DCI(IUNIT,CURR,VOLLIM) C C IUNIT IS THE UNIT NUMBER (MUST BE BETWEEN 1 AND 8) C CURR IS DESIRED CURRENT C VOLLIM IS THE VOLTAGE LIMIT C C********************************************************************* INTEGER UNIT, IBUF(2) DIMENSION IERMS(5) DATA IERMS/10,5,2HDC,2HI ,2H / C********************************************************************* C RETRIEVE IBUF, FROM THE CONFIGURATION TABLE, I WHICH C CONTAINS: C IBUF(1)= TYPE OF PWR SUPPLY (6140) C IBUF(2)= PRESENT VOLTAGE LIMIT C C IERR = 0 = NO ERRORS C IERR = 2 = CALLED UNIT IS NOT A 6140 DCS C C********************************************************************* CALL TIM(22,UNIT,1,IBUF,2,N) C********************************************************************* C SEE IF CALLED UNIT IS A 6140 DCS C******************************************************************** IF(IBUF(1) .NE. 6140) GOTO 9000 C******************************************************************** C DETERMINE APPROPRIATE RANGE DEPENDING ON WHETHER C CURR IS > OR <= TO 16.383502, THEN CALL EITHER C DCISH FOR THE HIGH RANGE OR DCISL FOR THE LOW RANGE. C********************************************************************* IF(ABS(CURR).LE.16.383502) GO TO 50 CALL DCISH(UNIT,CURR,VOLLIM) RETURN 50 CALL DCISL(UNIT,CURR,VOLLIM) RETURN C C ERROR - CALLED UNIT IS NOT A DCS C 9000 CALL ERROR(IERMS,IERMS(2)) RETURN END END$ '& ow 09580-18060 1926 S 0122 &TRAP TRAP SUB FOR BASIC             H0101 ZASMB,R,Q,X HED << 09580 MULTI-STATION TRAP ROUTINE >> 09580-16060 790426 NAM TRAP,7 09580-16060 REV.1926 790426 * *--------------------------------------------------------------- * * RELOC. 09580-16060 * SOURCE 09580-18060 * * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * ENTRY POINTS: * ENT TRAP * * * * EXTERNAL REFERENCES: * EXT $LIBR,$LIBX EXT TABL$,STN$,TRTBL,TREND,ISN * * * * ** TRAP ** DO VARIOUS TRAP NUMBER ORIENTED OPERATIONS * * THIS ROUTINE HAS FOUR CALLING SEQUENCES DEPENDING ON ITS FUNCTION. * THE NOMINAL CALLING SEQUENCE, ASSOCIATED WITH EXECUTION OF THE * BASIC TRAP STATEMENT, IS AS FOLLOWS: * * LDA MINUS THE TRAP NUMBER * LDB SEQUENCE NUMBER (FROM TRAP STMT,MAY BE - ) * JSB TRAP * JMP ERR1 (ERROR RETURN) * RETURN * **************************************************** * * THIS ROUTINE IS CALLED JUST * BEFORE EXECUTING EACH LINE OF BASIC CODE: * * LDA MINUS 1000 DECIMAL (USED TO FLAG THIS CASE) * LDB POINTER TO STATEMENT ABOUT TO BE EXECUTED * JSB TRAP * JMP ERR (ERROR RETURN) * RETURN (SEE NOTE) * * NOTE: WHEN THIS CALL IS RECOGNIZED (.A.=-1000) THE * TRAP TABLE IS POLLED TO DETERMINE IF PROGRAM * SHOULD BE INTERRUPTED BY A TIME OR EVENT * SCHEDULED TASK. * * RETURN VALUES IF PROGRAM IS TO BE INTERRUPTED * * .A.= SEQUENCE NUMBER FROM TRAP TABLE * .B.= SEQUENCE NBR THAT WOULD HAVE BEEN EXECUTED OTHERWISE * * Ra:ETURN VALUES IF PROGRAM IS NOT TO BE INTERRUPTED * * .A.= -1 (SERVES AS FLAG FOR THIS CASE) * .B.= ADDRESS OF STATEMENT TO BE EXECUTED NEXT * **************************************************** * * WHEN A TASK IS SCHEDULED IN THE ABOVE MANNER, ITS * RETURN STATEMENT RESULTS IN YET ANOTHER CALL: * * LDA MINUS 256 DECIMAL (USED AS FLAG) * LDB MINUS SEQ NBR TO BE RETURNED TO * JSB TRAP * JMP ERR (ERROR RETURN, NOT USED WITH THIS CALL) * RETURN .A.= RETURN SEQUENCE NUMBER * **************************************************** * * WHEN TRAP IS CALLED TO INITIALIZE THE TRAP * TABLE AT THE BEGINNING OF EXECUTION PHASE: * * LDA 1 DECIMAL INDICATES AN INITIALIZE REQUEST * JSB TRAP * JMP ERR (ERROR RETURN, NOT USED WITH THIS CALL) * RETURN IF .B.= -1, THEN TRAP TABLE NOT AVAILABLE * **************************************************** * * WHEN TRAP IS CALLED TO FREE UP A TRAP TABLE AT THE END OF * EXECUTION PHASE: * * LDA 2 DECIMAL INDICATES A TERMINATE REQUEST * JSB TRAP * JMP ERROR (ERROR RETURN NOT USED WITH THIS CALL) * RETURN * ********************************************************* SKP **************************************************** * * PCO 1926 * 1. ENHANCED INIT FUNCTION TO CLEAR ALL TABLES FOR CURRENT * STATION BEFORE SETTING UP NEW TABLE. PREVIOUS VERSION * OF THIS ROUTINE ASSUMED THAT NO TABLE WAS SET UP. AS A * RESULT MULTIPLE TABLES WERE SETUP DUE TO "CHAIN" COMMANDS * (WHICH "INIT"'S A TABLE WITHOUT "TERM"ING PREVIOUS TABLE) AND * "OF,BASIC,1" (WHICH ENDS BASIC WITHOUT CLEARING THE TABLE). * 2. ENHANCED TERM (CASE 5) TO CLEAR ALL TABLES FOR CURRENT * STATION INSTEAD OF JUST FIRST TABLE FOUND. THIS WAS DONE * TO TAKE CARE OF ANY EXTRA TABLES THAT MIGHT BE SETUP * INSPITE OF THE ENHANCEMENTS TO "INIT" (CASE 4). * 3. NOTE: SERIOUS PROBLEMS MAY OCCUR FOR FOLLOWING CASES: * -THE LENGTH OF A TRAP TABLE IuS LESS THAN THE MINIMUM * NEEDED FOR ONE TRAP (CURRENTLY FIVE WORDS). * -THIS ROUTINE IS CALLED FROM OTHER THAN SESSION MODE. * IE. THE VALUE RETURNED BY "ISN" IS ZERO. * A CHECK WAS PUT IN THE "CLTBL" SUBROUTINE TO CHECK * FOR THIS CASE * ********************************************************* SKP TRAP NOP JSB $LIBR TURN OFF INTERRUPTS NOP NOW STA .X. SAVE A REG STB SEQ SAVE B REG JSB ISN GET STATION # DEF *+1 STA STN * JSB FNDTB FIND TABLE FOR CURRENT STATAION. JMP TER1 TABLE FOR THIS STATION NOT FOUND. * LDA .X. RETRIEVE CALL PARAMETER. CPA M1000 TEST IF THIS IS POLL REQUEST. JMP POLL YES. (CASE 2) * CPA M256 TEST IF RETURN FROM TRAP PROCESSING. JMP TRRET YES. (CASE 3) * CPA D1 INITIALIZATION REQUEST? JMP INIT YES. (CASE 4) * CPA D2 BASIC TERMINATION REQUEST? JMP TERM YES. (CASE 5) * JMP CASE1 IF NONE OF ABOVE, ASSUME CREATE TRAP. * TER1 LDA .X. ERROR IN SEARCH FOR TABLE OK IF INIT CPA D1 REQUEST. JMP INIT OK. (CASE 4) * JMP ERR1 NOT INIT. MAKE ERROR EXIT. SKP * CASE 1 CREATE TRAP ENTRY * * TEST FOR LEGAL TRAP NUMBER TABL$>=TRAP#>0 * CASE1 CMA MAKE TRAP NUMBER POSITIVE - 1 SSA TEST TRAP # NOT >= 0 JMP ERR1 ERROR, TRAP >= 0 INA ADD 1 TO FINISH COMPLEMENTING LDB TABL$ CREATE THE COMPLEMENT OF THE CMB EXPRS (TABLE SIZE + 1) ADB .A. SSB,RSS TRAP # > TABL$? JMP ERR1 YES, EXIT STA ADFLG,I NO, ITS OK. STORE IN FLG TO ENABLE SEARCH SPC 2 * INSURE SEQ NUMBER >0. IF NOT, SET .X. = -1 * CLB USE .X. AS FLAG FOR NEG SEQ LDA SEQ \ SS9A,RSS \ SET E IF SEQ # IS NEG. JMP FINDS > IF NEG THEN COMPLEMENT CMB / CMA,INA / STA SEQ SPC 2 * TEST IF SEQ # ALREADY USED => ILLEGAL * FINDS STB .X. STORE FLAG FOR NEG SEQ IN .X. LDA ADTBL SET ADDRESS TO ACTUAL TRAP STA .Y. STORE ADDRESS IN Y REG CLB USE .B. AS TRAP INDEX FIND1 INB INCREMENT INDEX LDA .Y.,I LOAD TRAP CELL CONTENTS AND MASK LOOK AT SEQUENCE # ONLY CPA SEQ SAME AS NEW SEQ # ? JMP FIND2 YES, CHECK FOR TRAP # ISZ .Y. NO TRY AGAIN CPB TABL$ END OF TABLE ? JMP CRTRP PHEW, YES, CREATE TRAP CELL JMP FIND1 NO, ONE MORE TIME! SPC 2 FIND2 CPB ADFLG,I SEQ # AT SAME TRAP? JMP CRTRP YES, OK, CREATE IT AGAIN ERR2 LDA D2 NO ERROR 2 JMP RTRAP+1 EXIT SPC 2 * CREATE NEW TRAP CELL * CRTRP LDB ADTBL GET ADDRESS TRAP TABLE - 1 ADB M1 ADB ADFLG,I ADD IN TRAP # CLA ISZ .X. PRESERVE OLD TRAPS? JMP CRTR1 NO LDA .B.,I YES AND BITS PRESERVE PROCESS & TRAP BITS CRTR1 IOR SEQ ADD IN SEQ # STA .B.,I STORE IN TABLE JMP RTRAP EXIT SKP * CASE 2 CHECK TRAP TABLE * PRIOR TO EACH BASIC LINE * POLL LDB ADFLG,I SEARCH TRAP TABLE? SZB,RSS JMP POLEX NO,EXIT SPC 2 * SEARCH TRAP TABLE * LDB ADPRI,I LOAD CURRENT PRIORITY LEVEL CMB,INB POL1 INB SZB,RSS DONE? JMP NOPOL YES, EXIT! LDA ADTBL,I NO, GET TRAP CELL SSA TRAP SET? JMP POL3 YES POL2 ISZ ADTBL NO, LOOP AGAIN JMP POL1 SPC 2 * TRAP SET, TEST SEQ # > 0 * POL3 AND MASK SZA,RSS IS SEQ# > 0? JMP POL2 NO, KEEP SEARCHING STA .X. YES, KEEP NEW SEQ# IOR BIT14 SET 'IN PROCESS' BIT STA ADTBL,I STORE TRAP CELL IN TABLE (CLEAR TRAP) ADB ADPRI,I CALCULATE NEW PRIORITY STB ADPRI,I SPC 2 * SET UP FOR RETURN * LDA .X. RETURN WITH NEW TRAP LDB SEQ,I CMB,INB JMP RTRAP SPC 2 NOPOL CLA NO TRAPS SET STA ADFLG,I EXIT POLEX LDA M1 NO SEARCH LDB SEQ EXIT JMP RTRAP SKP * CASE 3 RETURN FROM INTERRUPT STARTED TASK * TRRET LDA ADTBL ADA M1 ADA ADPRI,I STA ADTBL LDA ADTBL,I AND MASK2 CLEAR 'IN PROCESS' BIT STA ADTBL,I LDB TABL$ CREATE LOOP INDEX CMB,INB ADB ADPRI,I TRRT1 ISZ ADTBL SEARCH TRAP TABLE SZB,RSS FOR JMP SETPR NEXT LDA ADTBL,I CELL AND BIT14 WITH SZA 'IN PROCESS' JMP SETPR BIT INB SET JMP TRRT1 SPC 2 SETPR LDA TABL$ THEN UPDATE CURRENT ADA .B. PRIORITY INA STA ADPRI,I LDA SEQ MAKE SEQ# CMA,INA POSITIVE STA ADFLG,I FLG # 0, SO SEARCH TABLE JMP RTRAP EXIT SKP * CASE 4 INITIALIZE TRAP TABLES * INIT JSB CLTBL CLEAR ALL TABLES FOR THIS STATION. * CLA OLD TABLES HAVE BEEN DESTROYED. JSB FNDTB NOW FIND EMPTY TABLE. * JMP ERR1 OOPS. NO EMPTY TABLE. * LDA STN EMPTY TABLE FOUND. STA PTR,I MARK TABLES FOR STN LDB STN$ LOAD B WITH STATION'S SIZE ADB M1 CLA INIT1 ISZ PTR CLEAR ALL CELLS IN STATION'S TABLE STA PTR,I ADB M1 SZB JMP INIT1 SPC 2 * SET MINIMUM PRIORITY * LDA TABL$ SET PRIORITY TO TABLE INA SIZE + 1 STA ADPRI,I  JMP RTRAP SKP * CASE 5 BASIC TERMINATION TERM JSB CLTBL CLEAR ALL TABLES FOR THIS STATION. * RTRAP ISZ TRAP NORMAL EXIT JSB $LIBX ERROR EXIT DEF TRAP SPC 5 ERR1 CLB IF THIS IS THE INITIALIZATION CASE LDA D1 SEND .B.= -1 TO DISABLE LINE POLLING CPA .X. LDB M1 JMP RTRAP+1 SKP * SUBROUTINE TO SEARCH FOR TABLE FOR CURRENT STATION. FNDTB NOP STA .Y. SAVE STATION NUMBER TO BE LOOKED FOR. * LDA TRTBL FINDC STA PTR LDB TREND CHECK IF AT END OF TABLE. CMB,INB ADB .A. SSB,RSS * JMP FNDTB,I END OF TABLE. STATION NOT FOUND. * LDB .A.,I CHECK IF CURRENT TABLE IS CPB .Y. RIGHT ONE. * JMP ENDSU YES! SET UP POINTERS * ADA STN$ NO. GO TO NEXT TABLE AND TRY JMP FINDC AGAIN. * ENDSU ADA D2 CREATE ADDRESS FOR STA ADPRI 'CURRENT PRIORITY' * INA CREATE ADDRESS FOR STA ADFLG 'SEARCH TABLE FLAG' * INA CREATE ADDRESS FOR STA ADTBL 'FIRST ENTRY IN TABLE' * ISZ FNDTB SET SUCCESSFUL RETURN. JMP FNDTB,I SKP * SUBROUTINE TO CLEAR ALL TABLES FOR GIVEN STATION. * "STN" CONTAINS NUMBER OF STAION TO BE CLEARED. * CLTBL NOP CLTB1 LDA STN JSB FNDTB SEARCH FOR TABLE FOR CURRENT STATION. * JMP CLTBL,I TABLE NOT FOUND. END OF SEARCH. * CLB CLEAR TABLE OF PREVIOUS ENTRIES. STB PTR,I SET STN# TO ZERO. * ISZ PTR STB PTR,I SET CRT# TO ZERO. * CPB STN CHECK FOR NONE SESSION MODE. JMP CLTBL,I RETURN AFTER "CLEARING" FIRST UNUSED TABLE. * JMP CLTB1 SEARCH FOR NEXT TABLE. SKP * CONSTANTS AND VARIBLES * PTR NOP ADPRI NOP ADFLG NOP ADTBL NOP SEQ NOP STN NOP .X. NOP .Y. NOP .A|*($. EQU 0 .B. EQU 1 SPC 5 D1 DEC 1 D2 DEC 2 M1 DEC -1 M256 DEC -256 M1000 DEC -1000 SPC 5 MASK OCT 37777 MASK2 OCT 137777 BITS OCT 140000 BIT14 OCT 40000 END oo* p | 09580-18061 A S 0122 &TRTBL BASIC TRAP TABLE             H0101 bASMB,R,L,C HED << 9580 MULTIPLE STATION TRAP TABLE >> 09580-16061 770519 NAM TRTBL,14 09580-16061 REV.A 770101 << 4 STN, 16 TRAPS >> * *--------------------------------------------------------------- * * RELOC. 09580-16061 * SOURCE 09580-18061 * * REV.A 770519 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * ENT TABL$,STN$,TRTBL,TREND,SRQ.T SUP * *---------------------------------------------------------------- * * WRD FUNCTION * --- -------- * 1 STATION # FOR THIS TRAP BLOCK * 2 NOT USED CURRENTLY * 3 PRIORITY OF CURRENT INTERRUPT (1 TO 16, 1=HI) * 4 FLAG: #0 SEARCH TABLE BEFORE EVERY LINE * =0 DON'T SEARCH TABLE BEFORE EVERY LINE * * 5 TRAP CELLS: * TO BIT 15 1=TRAP SET/ 0=CLEAR * 20 BIT 14 1=TRAP IN PROCESS/ 0=CLEAR * BIT 13-0 SEQUENCE NUMBER, 0=> NOT ENABLED * *--------------------------------------------------------------- * TABL$ DEC 16 16 ENTRIES/STATION STN$ DEC 20 TOTAL SIZE OF A STATION'S TABLE SRQ.T EQU * DUMMY ENTRY POINT FOR HPIB SUBROUTINE. DON'T USE! TRTBL DEF *+1 REP 80 NOP TREND DEF * END $   qx 09580-18064 A S 0122 &START SET DEVICE TO LU TABLE             H0101 FTN4,L PROGRAM START C C------------------------------------------------------------- C C RELOC. 09580-16064 C SOURCE 09580-18064 C C M. KAESSNER 770504 REV.A C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------- C C USES THE FOLLOWING SUBROUTINES: C DATE SCAN CLOSE C TIMEX RMPAR EXEC C TABS MESSS C ATACH OPEN C ASCII READF C INTV JDRTP C C C C THIS ROUTINE PROMPTS THE OPERATOR FOR THE DATE AND TIME TO C INITIALIZE THE RTE CLOCK. IT THEN OPENS THE WELCOM FILE AND LOOKS C FOR RECORDS BEGINNING WITH ':* #' . THE FOUR NUMBERS FOLLOWING C REPRESENT: (1) THE STATION NUMBER; (2) THE LU OF THE DEVICE; (3) C THE UNIT NUMBER; AND (4) THE DEVICE TYPE. THESE ARE THEN STORED C IN THE DRTXX WHICH IS IN THE MEMORY RESIDENT LIBRARY IN THE C FOLLOWING WAY: C POSITION WITHIN THE TABLE REPRESENTS THE LU C BITS 0-2 STATION NUMBER C BITS 3-6 UNIT# C BITS 7-15 DEVICE TYPE C C ALTHOUGH THE STATION NUMBER IS THE LOGICAL UNIT NUMBER OF C THE CRT, THE STATION NUMBER WITHIN THIS TABLE IS A RELATIVE NUMBER. C THE FIRST STATION ENCOUNTERED IS STATION 1, THE SECOND IS #2 C IRREGARDLESS OF ACTUAL LU. USE ROUINTES C ISN TO RETURN REAL STATION CRT LU C LUDV TO GET THE LU OF A PARTICULAR DEVICE C LU2ST IF YOU HAVE AN LU AND WANT IT'S STATION (CRT LU) C C C C C DIMENSION IDCB(150) DIMENSION NAME3(3), IPARM(5), NAME5({3) DIMENSION NAME4(3), IBUF(50), IDSEG(30), LU6SW(4) DIMENSION ITOKN(30), ISTR1(9), NAME6(3) DIMENSION NAME7(3), ICOMA(2), IHR(5), MIN(5), IYR(5) DIMENSION IDAYR(5), MON(5), MONDA(12), ISTAT(128) DIMENSION ISTNS(20) C DATA NAME4 / 2HWE, 2HLC, 2HOM / DATA ICOMA / 1, 2H, / DATA MONDA / 0, 31, 59 ,90, 120, 151, 181, 212, X 243, 273, 304, 334 / DATA ISTNS/0,0,-1,1,-1,2,-1,3,-1,4,-1,5,-1,6,-1,7/ C CALL RMPAR(IPARM) LUOP = IPARM(1) IF (LUOP .EQ. 0) LUOP = 1 C C GET TIME SET UP C WRITE (LUOP, 1003) 1003 FORMAT ("BY ENTERING DATE AS MO/DA/YR #_") READ (LUOP, 1002) (IBUF(J), J = 2,10) IBUF(1) = 8 NTOKN = 0 CALL SCAN (IBUF, MON, NTOKN, IQT) CALL SCAN (IBUF, ITOKN, NTOKN, IQT) CALL SCAN (IBUF, IDAYR, NTOKN, IQT) CALL SCAN (IBUF, ITOKN, NTOKN, IQT) CALL SCAN (IBUF, IYR, NTOKN, IQT) WRITE (LUOP, 1001) 1001 FORMAT ("AND ENTERING TIME AS HR:MM (24-HOUR CLOCK) #_") READ (LUOP, 1002) (IBUF(I), I=2,10) 1002 FORMAT (10A2) IBUF(1) = 5 NTOKN = 0 CALL SCAN (IBUF, IHR, NTOKN, IQT) CALL SCAN (IBUF, ITOKN, NTOKN, IQT) CALL SCAN (IBUF, MIN, NTOKN, IQT) IDCB(1) = 5 IDCB(2) = 2HTM IDCB(3) = 2H,1 IDCB(4) = 2H9 M = INTV(MON, IERR) IDAY = INTV (IDAYR) IXX = MONDA(M) + IDAY JYR = INTV (IYR, IERR) ILPYR = JYR - 4 * (JYR / 4) IF ((ILPYR .EQ. 0) .AND. (M .GT. 2)) IXX = IXX + 1 CALL ASCII (IDAYR, IXX) CALL ATACH (IDCB, IYR) CALL ATACH (IDCB, ICOMA) CALL ATACH (IDCB, IDAYR) CALL ATACH (IDCB, ICOMA) CALL ATACH (IDCB, IHR) CALL ATACH (IDCB, ICOMA) CALL ATACH (IDCB, MIN) I = MESSS (IDCB(2), IDCB(1)) IBUF(1) = 0 CALL DATE (IBUF) CALL TIMEX(ITOKN) CALL TABS (IBUF, 20) CALL ATACH (IBUF, ITOKN) WRITE (LUOP, 100 4) (IBUF(J), J=2,18) 1004 FORMAT ("SYSTEM DATE AND TIME ARE ",20A2) C C C CLEAR DRTXX BEFORE STORING INTO IT C C 100 DO 150 J=1,63 CALL JDRTP(J,0) 150 CONTINUE C C C PROCESS WELCOM FILE C 200 CALL OPEN (IDCB, IERR, NAME4, 1) IF (IERR .LT. 0) GO TO 900 4001 CALL READF (IDCB, IERR, IBUF(2), 50, LEN) IF (LEN .LT. 0) GO TO 4099 IBUF(1) = 2 * LEN IF (IBUF(2) .NE. 2H:*) GO TO 4001 IF (LEN .LT. 2) GO TO 4001 IF (IBUF(3) .EQ. 2H #) GO TO 250 GO TO 4001 C C SCAN FOR C 250 NTOKN = 5 CALL SCAN (IBUF, ITOKN, NTOKN, IQT) ISTN = INTV(ITOKN, IERR) IF (IERR .NE. 0) GO TO 800 DO 300 I=1,15,2 IF (ISTN.EQ.ISTNS(I)) GOTO 350 IF (ISTNS(I)) 325,300 300 CONTINUE GOTO 800 C 325 ISTNS(I) = ISTN 350 ISTN = ISTNS(I+1) C CALL SCAN (IBUF, ITOKN, NTOKN, IQT) ILUN = INTV (ITOKN, IERR) IF (IERR .NE. 0) GO TO 800 CALL SCAN (IBUF, ITOKN, NTOKN, IQT) IDVNM = INTV (ITOKN, IERR) IF (IERR .NE. 0) GO TO 800 CALL SCAN (IBUF, ITOKN, NTOKN, IQT) IDVTP = INTV (ITOKN, IERR) IF (IERR .NE. 0) GO TO 800 C C MAKE ENTRY IN LU-TO-STATION TABLE C JJ = IDVTP * 128 + IDVNM * 8 + ISTN CALL JDRTP (ILUN, JJ) GO TO 4001 C 4099 CALL CLOSE(IDCB) GO TO 900 C C ERROR C 800 WRITE (LUOP, 8001) 8001 FORMAT ("*** CONVERSION ERROR IN SETTING DRTXX TABLE") WRITE (LUOP, 8002) (IBUF(J), J = 2, LEN+1) 8002 FORMAT (40A2) GO TO 4001 C C DONE C 900 CALL EXEC(6) END END$ 4` rz 09580-18065 A S 0122 &JDRTP JDRTP             H0101 ASMB,R,L,C NAM JDRTP,7 09580-16065 REV.A 770101 * *--------------------------------------------------------------- * * RELOC. 09580-16065 * SOURCE 09580-18065 * * M.KAESSNER REV.A 770101 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * A EQU 0 B EQU 1 * ENT JDRTP EXT DRTXX,.ENTR,$LIBR,$LIBX * AI NOP AIVAL NOP JDRTP NOP JSB .ENTR DEF AI * LDA ADRTX SSA,RSS IS INIDIRECT BIT SET? JMP STADR NO AND MASK LDA A,I STADR STA ADRTZ CLA STA ADDR LDA AI,I CHECK PARAMETER SZA,RSS JMP EX INDEX = 0 SSA JMP EX INDEX IS NEGATIVE LDB ADRTZ SZB,RSS NO EXTERNAL, SO GET OUT JMP EX INB CMA INA ADA B,I SSA INDEX IS TOO BIG JMP EX * LDA ADRTZ COMPUTE ADDRESS INA ADA AI,I STA ADDR * JSB $LIBR *** GO PRIVELEGED TO PERFORM STORE NOP *** LDA AIVAL,I *** STA ADDR,I *** JSB $LIBX *** DEF *+1 *** DEF EX *** * EX LDA ADDR JMP JDRTP,I * ADDR BSS 1 ADRTZ BSS 1 MASK OCT 77777 ADRTX DEF DRTXX END    sz 09580-18067 2026 S C0122 &ALLOC ALLOCATE CONF TBL              H0101 FTN,Q,C PROGRAM ALLOC (3,99),09580-16067 REV.2026 800415 C------------------------------------------------------------------- C C RELOC. 09580-16067 C SOURCE 09580-18067 C C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- C C TO BUILD ALLOC, THE FOLLOWING ARE REQUIRED: C C ALLOC 09580-16067 C TRACE 09580-16068 C NUMB 09580-16072 C ALERR 09580-16116 C C------------------------------------------------------------------ DIMENSION NAME(20) ,IDCB(144),IBUF(42) DIMENSION IREG(2) DIMENSION NAME1(10) DIMENSION IRBUF(82) DIMENSION ICLTB(30) EQUIVALENCE(IREG,REG) DATA IBLNK/20040B/ DATA IOUT/1/ DATA IOPTN/0/ C C******************************************************** C********COMMENTS***** ROUTINE # 1 FOR DBUG ************* C******************************************************** C************************* C C***** #1 C USE EXEC 14 TO RETRIEVE PARAMETER STRING ASSOCIATED C WITH ...... RU,ALLOC,FILNAM,[IOUT] C WHERE: FILNAM IS THE ASCII CONFIGURATION TABLE (NAMR) C IOUT OPTIONAL IS OUTPUT DEVICE FOR ERORRS C C****** #2 C CHECK TO TO SEE IF ANY SAM HAS ALREADY BEEN ALLOCATED C FOR THE PARTICULAR STATION AND IF SO DEALLOCATE IT C AND PUT OUT WARNING MESSAGE. C C******** #3 C OPEN UP THE DEVICE TABLE FILE WITH A FILE MANAGER C CALL AND IF THE FILE DOES NOT EXIST OR IT IS MISNAMED C INFORM THE OPERATOR. C STATEMENTS 100 AND 200 FILLS THE BUFFER USED FOR C READING RECORDS WITH BLANKS. C C******** #4 C READ A RECORD, AND CHECK FOR EOF MARK (LEN = -#) C OR FILE OVERFLOW (LEN = IL). C THE SUBROUTINE TRACE IS CALLED TO DETERMINE THE TYPE C OF FIELD AND TO PARSE THE CHARACTERS INTO IRBUF. THE C VARIABLE "IFLG" IS SET BY TRACE WITH THE CODE INDICATING C THE TYPE OF FIELD ENCOUNTERED. C C******** #5 C SUBROUTINE TRFER (TRANSFER) IS INVOKED TO PERFORM THE C TRANSFERRING OF THE ASCII DATA FROM "IRBUF" TO THE CLASS I/O C BUFFERS. C AT STATEMENT 500 AFTER THE CALL TO TRFER THE FILE IS C CLOSED AND THE NUMBER OF RECORD SETS REPORTED. C***************************************************************/ C C***** #1 SET UP STATION AND DEFAULTS, THEN RETRIEVE PARAMETER STRING IER = 2 ISTN = ISN(DUMY) IF (ISTN.LE.0) GOTO 800 IOUT = ISTN C CALL EXEC(14,1,NAME(2),19) CALL ABREG (IREG,IREG(2)) NCHR = 1 C C NAME(1) = NUMBER OF CHARACTERS. WE LOOP THREE TIMES C IN CALLING NAMR TO GET TO FILE NAME. C NAME(1) = IREG(2)*2 DO 20 I=1,3 20 CALL NAMR(NAME1,NAME(2),NAME,NCHR) C C NOW SEE IF A FILE NAME HAS BEEN ENTERED IF NOT REQUEST ONE C IF(IAND(NAME1(4),3).EQ.3) GOTO 40 30 WRITE(ISTN,31) 31 FORMAT(2X," ENTER CONFIGURATION FILE NAME _") READ(ISTN,35) (NAME(J),J=2,11) 35 FORMAT(10A2) NCHR = 1 NAME = 20 CALL NAMR(NAME1,NAME(2),NAME,NCHR) C C 40 ISECU = NAME1(5) ICR = NAME1(6) IERFG = 0 LINE = 0 C C************#2 CHECK FOR ALLOCATED SAM C CALL RTCLN(ISTN,IRBUF) IF(IRBUF.EQ.0) GOTO 50 CALL DALOC(ISTN) C C*********#3 OPEN CNFG FILE C 50 IER = 4 CALL OPEN(IDCB,IERR,NAME1,IOPTN,ISECU,ICR) CALL NAMR(NAME1,NAME(2),NAME,NCHR) IF(NAME1(4).EQ.1)IOUT = NAME1 CALL NAMR(NAME1,NAME(2),NAME,NCHR) CALL DBUG(NAME1(1),0,0) IF(IERR.LT.0) GOTO 800 C C********#4 CLEAR BUNFFER AND READ A LINE FROM FILE AND PARSE STRING C 100 DO 200 I=1,40 200 IBUF(I) = IBLNK IER = 5 CALL READF(IDCB,IERR,IBUF(2),41,LEN) LINE = LINE + 1 CALL DBUG(1,200,LINE) IF(LEN.LT.0) GOTO 500 IBUF(1) = LEN * 2 IF(LEN.EQ.41)GO TO 800 250 CALL TRACE(IBUF,IFLG,IRBUF,IERFG) CALL DBUG(1,250,IFLG) CALL DBUG(1,250,IERFG) C C******* #5 CHECK IFLG TO SEE WHERE TO BRANCH C IF (IERFG.LT.0) GOTO 300 IF (IFLG.EQ.0) GOTO 100 IF (IFLG.EQ.5) GOTO 500 C C********* #6 INVOKE TRFER TO TRANSFER DATA C CALL TRFER(IFLG,IRBUF,ICLTB,IERFG) CALL DBUG(1,299,IERFG) 300 CALL ERCNT(LINE,IERFG,ISTN,IOUT) GOTO 100 C C********#7 END OF FILE TRANSFER LAST DATA AND CLOSE C 500 IFLG = 5 CALL TRFER(IFLG,IRBUF,ICLTB,IERFG) CALL CLOSE(IDCB,IERR) CALL ERCNT(LINE,IFLG,ISTN,IOUT) CALL PRTN(0) CALL EXEC(6,0) 800 CALL DALOC(ISTN) CALL ALERR(IER,IOUT,LINE) CALL PRTN(-1) CALL EXEC(6,0) END SUBROUTINE TRFER(IFLG,IRBUF,ICLTB,IERFG) C C DIMENSION IRBUF(82),IDBUF(130) DIMENSION ICLTB(10),IREG(2) EQUIVALENCE (IREG,REG) DATA INIT/0/ DATA IVF/10/ DATA IX/2HXX/ C C C******************************************************* C********** COMMENTS SUBROUTINE # 2 FOR DBUG **** C******************************************************* C C******** #1 C INITIALIZE VARIABLES THE FIRST TIME THRU (WHEN C INIT = 0). IDPTR: THIS IS THE POINTER FOR THE BUFFER C WHERE THE BINARY DEVICE DATA GOES. C IC: THIS IS THE INDEX FOR THE TABLE (ICLTB) WHERE C THE POINTERS FOR THE CLASS NUMBERS ARE STORED. C IUCNT KEEPS TRACK OF THE NUMBER OF UNITS FOR EACH IDTN C C******** #2 C C IFLG IS CHECKED TO SEE IF IT INDICATES A NEW RECORD (IFLG C =1),END OF FILE (IFLG = 5), OR A NEW UNIT (IFLG=6). C C********** #3 C C TRANSFER DATA FROM IRBUF TO IDBUF USING THE FIRST WORD C OF IRBUF TO INDICATE HOW MANY WORDS TO TRANSFER. C C C********** #4 C C NOTIFY SUBROUTINE KPCNT THAT A NEW UNIT NUMBER HAS C BEEN ENCOUNTERED. KPCNT WILL DO SOME ERROR CHECKING C AND CHANGE IELG TO NEGATIVE NUMBER IF AN ERROR C OCCURS. C SUBROUTINE "CNTR" LOOKS FOR DUPLICATE UNIT AND DEVICE TYPE C NUMBERS. C C C********* #5 C C A NEW RECORD SET (IFLG =1),CHECK UNIT COUNT AND SET ICLTB C ICLTB(IC) POSITIVE TO INDICATE THAT A RECORD SET HEADER C DOES EXIST IN THE PRESENT BUFFER. C C********* #6 C C OUTPUT FILLED BUFFER TO SAM AND SET THE NEXT ICLTB(IC) C NEGATIVE, AND RESET IDPTR TO POINT TO THIRD WORD OF IDBUF. C C********* #7 C C DAS EST ALLES (FINISHED) SO DO CLEANUP. TRANSFER C THE REMAINING BUFFER TO SAM. C C**************************************************************** C C********** #1 C IF(INIT.NE.0)GO TO 50 IDPTR = 2 IUCNT = 0 IECNT = 0 I = 0 IC = 1 ICLTB(IC) = -1 INIT = 1 C C********* #2 DETERMINE WHERE TO BRANCH C 50 CALL DBUG(2,50,IFLG) IF(IFLG.EQ.1)GO TO 200 IF(IFLG.EQ.5)GO TO 500 IF(IFLG.EQ.6)GO TO 150 C C********* #3 STORE DATA C 100 K =2 IWCTR = IRBUF(1)+1 110 DO 120 JJ = K,IWCTR IDPTR = IDPTR + 1 IF(IDPTR.GT.130)GO TO 300 IF(IFLG.EQ.1.OR.IFLG.EQ.6)GO TO 120 CALL KPCNT(IFLG,IECNT,IUCNT,IERFG) 120 IDBUF(IDPTR) = IRBUF(JJ) RETURN C C********* #4 NEW UNIT NUMBER C 150 CALL KPCNT(IFLG,IECNT,IUCNT,IERFG) CALL CNTR(IRBUF(2),IERFG,1) GO TO 100 C C C********** #5 NEW RECORD SET HEADER C 200 IUCNT = IRBUF(3) IECNT = IRBUF(4) CALL CNTR(IRBUF(2),IERFG,2) CALL KPCNT(IFLG,IECNT,IUCNT,IERFG) IF(ICLTB(IC).LT.0)ICLTB(IC) = -ICLTB(IC) GO TO 100 C C*********6 OUTPUT FILLED BUFFER TO SAM C 300 ICLAS = 0 K = JJ IDPTR = 2 CALL SAM(I,IFLG,IC,ICLAS,ICLTB,IDBUF,130) y IC = IC + 1 ICLTB(IC) = -1 GO TO 110 C C C******** #7 END OF FILE -TRANSFER LAST BUFFER TO SAM C 500 CALL KPCNT(IFLG ,IECNT,IUCNT,IERFG) I = 0 ICLAS = 0 IDBUF(IDPTR+1) = IX CALL SAM(I,INIT,IC,ICLAS,ICLTB,IDBUF,IDPTR+1) DO 520 I = 1,IC ICLAS = ICLTB(I) CALL SAM(I,IFLG,IC,ICLAS,ICLTB,IDBUF,IDPTR) 520 CONTINUE RETURN END SUBROUTINE DALOC(ISTN) C C SUBROUTINE # 3 FOR DBUG C DIMENSION IBUF(2),IREG(2) EQUIVALENCE(REG,IREG) C C*********** C THIS PROGRAM IS RESPONSIBLE FOR DEALLOCATING C CLASS BUFFERS. IT OPERATES BY FIRST RETRIEVING C THE CLASS NUMBER OF THE FIRST BUFFER FROM C THE CORE RESIDENT SVTBL AND USING THE SUB- C SEQUENT LAST WORD OF EACH BUFFER TO DEALLOCATE C EACH SUCCEEDING BUFFER. C AN ERROR MESSAGE IS EMITTED IF FOR SOME C STRANGE REASON A BUFFER BCOMES POLLUTED AND C AND THE IMPROPER CLASS NUMBER IS USED. C C*** #1 GET THE STATION NUMBER AND FIRST CLASS# C 10 CALL DBUG(3,10,ISTN) CALL RTCLN(ISTN,IBUF(1)) IFCLS = IBUF(1) IF(IBUF(1).EQ.0)RETURN C C*** #2 START DEALLOCATING (BITS 13&14 = 0) C 100 ICL = IAND(IBUF(1),17777B) CALL DBUG(3,100,ICL) CALL EXEC(21,ICL,IBUF,2) IF(IBUF(1).NE.IFCLS)GO TO 100 IF(IBUF(1).EQ.0)GO TO 200 ICL = 0 CALL STCLN(ISTN,ICL) RETURN C C*** #3 ERROR MESSAGE, CORRUPT TABLE IN SAM C 200 CALL ALERR(6,ISTN) RETURN END SUBROUTINE ERCNT(LINE,IFLAG,ISTN,IOUT) C C C********************************************************************* C* C* **** ERROR COUNT **** SUBROUTINE # 4 FOR DBUG C* C* COUNTS NUMBER OF ERRORS C* C* IF ANY ERRORS ARE FOUND DE-ALLOCATES SPACE USED TO STORE C* CONFIGURATION TABLE C* C* PUTS ERROR CODES AND LINE NUMBERS IN ERBUF C* C********************************************************************* INTEGER ERBUF(64,2),ERPTR DATA LASTL/0/ C C* CHECK FOR END OF FILE C 5 CALL DBUG(4,5,IFLAG) CALL DBUG(4,5,LINE) IF(IFLAG.EQ.5) GO TO 10 C C* CHECK TO SEE IF THERE IS AN ERROR C IF(IFLAG.GE.0) RETURN C C* THERE IS AN ERROR C* C* CHECK IF AN ERROR ALREADY FOUND ON THAT LINE C IF(IFLAG.EQ.LASTL) RETURN C C* INCREMENT ERROR COUNTER C* PUT CODEWORD IN ERBUF C ERPTR=ERPTR+1 15 CALL DBUG(4,15,ERPTR) ERBUF(ERPTR,1) = -IFLAG ERBUF(ERPTR,2) = LINE C C* SET IFLAG EQUAL TO ZERO C IFLAG=0 C C* IF SIXTY-FOUR ERRORS OR ANY ERRORS AT END OF FILE- C* DE-ALLOCATION OF BUFFERS CONTAINING CONFIGUARATION TABLES C* STORE ERBUF USING CLASS I/O C IF(ERPTR.LT.64) RETURN 20 CALL DALOC(ISTN) WRITE(IOUT,25) 25 FORMAT("1",17X,"CONFIGURATION TABLE GENERATION ERRORS"//) DO 50 I=1,64 IF (ERBUF(I,1).EQ.0) GOTO 60 CALL ALERR(ERBUF(I,1),IOUT,ERBUF(I,2)) 50 CONTINUE 60 CALL PRTN(-1) CALL EXEC(6) C C* CHECKS TO SEE IF ANY ERRORS WERE FOUND IN FILE C 10 IF(ERPTR.GT.0) GO TO 20 RETURN END SUBROUTINE STORE(ICLS,IBC,ICLAS,IERR) C C SUBROUTINE #5 FOR DBUG C DIMENSION IBC(130) DIMENSION IREG(2) EQUIVALENCE(REG,IREG) C C THIS ROUTINE IS RESPONSIBLE FOR STORING C THE VARIABLE IST2(CLASS #) INTO WORD ONE C OF THE CLASS BUFFER IBC C AN THEN REWRITE THE BUFFER OUT TO SAM. C C*** #1 C 10 CALL DBUG(5,10,ICLS) IERR = 0 IF(ICLS.LT.0)ICLS = -ICLS C C*** #2 C 20 IBC(1) = ICLS ICLAS = IAND(ICLAS,17777B) CALL DBUG(5,20,ICLAS) CALL EXEC(20,0,IBC,IBC(2),IDMY,JDMY,ICLAS) CALL ABREG (IREG,IREG(2)) IF(IREG.EQ.-2) IERR = -1 RETURN END END$ .*($$* t 09580-18068 2001 S C0122 &TRACE SUB FOR ALLOC             H0101 HFTN,C,Q SUBROUTINE TRACE(IBUF,IFLG,IRBUF,IERFG),09580-16068 REV.2001 79101 C7 C------------------------------------------------------------------- C C RELOC. 09580-16068 C SOURCE 09580-18068 C C C. LEATH REV.A 770519 C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IBUF(40) DIMENSION IRBUF(10) INTEGER STATE DATA IAST,IA,IR,IBLNK,IU/ 52B,101B,122B,40B,125B/ DATA ISPC/20000B/,STATE/0/ DATA IE/105B/ DATA IB/41000B/ C C THIS SUBROUTINE IS RESPONSIBLE FOR TRACING THROUGH C THE CONTENTS OF IBUF, AND BASED ON THE CHARACTER IN C FIRST COLUMN, AND DETERMINES WHICH PORTION OF TRACE C WILL ANALYZE THE STRING. THIS ROUTINE ALSO USE THE STRING C PROCESSING ROUTINES: C LJUST - LEFT JUSTIFY STRING DELETING LEADING BLANKS C SCAN - PUTS A TOKEN INTO LOCATION DESIGNATED. C THE VALUES RETURNED IN "IFLG"HAVE THE FOLLOWING MEANINGS C C FLG = 0 COMMENT (* IN THE FIRST COLUMN) C FLG = 1 RECORD (R " " " " ) C " = 2 INTEGER ( " " " " ) C " = 2 FLOAT C " = 4 ASCII (A IN THE FIRST COLUMN) C " = 5 END OF FILE C " = 6 UNIT # (U IN THE FIRST COLUMN) C********** C THE VARIBLE 'STATE' IS USED TO CHECK FOR ILLEGAL STATE TRANSITIONS C C STATE = 0 INITIAL STATE. RETURN TO THIS STATE ON CONTEXT ERROR. C 1 RECORD HEADER RECEIVED. LEGAL ENTRANCEdS FROM STATES C 0 (INIT) AND 3 (DATA RECEIVED). C 2 UNIT HEADER RECEIVED. LEGAL ENTRANCES FROM STATES C 1 (RECORD) AND 3 (DATA RECEIVED) C 3 DATA RECEIVED. LEGAL ENTRANCES FROM STATES 2 (UNIT) C AND 3 (DATA RECEIVED). C 4 END. LEGAL ENTRANCES FROM 0 (INIT) AND 3 (DATA). C C AN ILLEGAL ENTRANCE CAUSES ERROR -16, 'MISSING REC OR UNIT HEADER' C********** C C COMMENTS SUBROUTINE # 6 FOR DBUG C C*******1 EAXMININE THE FIRST WORD OF IBUF (INPUT BUFFER) C TO DETERMINE WHAT THE ASCII CHARACTER IS. THIS CHARACTER C IS REPLACED WITH A BLANK AND THE WHOLE IS LEFT JUSTIFIED. C THE VARIABLE "ITST" IS EXAMINED TO DETERMINE WHERE TO GO. C C C*******2 C THIS SECTION PROCESSES AN ASCII STRING. THE NUMBER C OF CHARACTERS IS ASCERTAINED, AND THEN THE FIRST C WORD OF IRBUF IS FILLED WITH THE CHARACTER COUNT C AND THE REMAINDER IS FILLED WITH THE STRING STARTING C FROM COLUMN 7. C C C*******4 C THIS IS A NEW RECORD HEADER FIELD SO TRANSFER C RECORD HEADER INFORMATION (DEVICE TYPE,# OF UNITS, AND C THE NUMBER OF ENTRIES PER UNIT). THE FIRST WORD OF THE C RETURN BUFFER (IRBUF) CONTAINS THE WORD LENGTH 3. C C*******5 C THE SUBROUTINE NUMB IS INVOKED TO ANALYZE A NUMERIC FIELD. C IFLG = 0 IFL = 0 IRBUF(1) = 1 C C*******1 COLUMN 1 ANALYSIS C ITST = (IAND(IBUF(2),177400B))/400B IBUF(2) = IOR((IAND(IBUF(2),177B)),ISPC) IF(ITST.EQ.IA)GO TO 200 CALL LJUST(IBUF) 10 CALL DBUG(6,10,ITST) CALL DBUG(6,11,STATE) IF(ITST.EQ.IAST) RETURN IF(ITST .EQ.IE)GO TO 500 IF(ITST .EQ.IR)GO TO 300 IF(ITST.EQ.IBLNK)GO TO 400 IF(ITST.EQ.IU)GO TO 450 C IERFG = -9 RETURN C C C*******2 ASCII STRING C 200 IF ((STATE.NE.2).AND.(STATE.NE.3)) GOTO 700 CALL DBUG(6,200,STATE) STATE = 3 IFLG = 4 NIN = 0 CALL SEKCAN(IBUF,IRBUF,NIN,Q) ICHR = INTV(IRBUF,IFL) IF(IFL.EQ.-1)GO TO 800 IF((IAND(ICHR,1)).NE.0)ICHR = ICHR + 1 IRBUF(1) =(ICHR/2) LL = IRBUF(1) + 4 DO 250 J = 5,LL 250 IRBUF(J-3) = IBUF(J) RETURN C C*******4 NEW RECORD SET C 300 IF ((STATE.NE.0).AND.(STATE.NE.3)) GOTO 700 CALL DBUG(6,300,STATE) STATE = 1 IFLG =1 NIN = 0 DO 350 J = 2,4 CALL SCAN(IBUF,IRBUF(J),NIN,Q) IRBUF(J) = INTV(IRBUF(J),IFL) IF(IFL.EQ.-1)GO TO 800 350 CONTINUE IRBUF(1) = 3 RETURN C C*******5 NUMERIC FIELD C 400 IF ((STATE.NE.2).AND.(STATE.NE.3)) GOTO 700 CALL DBUG(6,400,STATE) STATE = 3 CALL NUMB(IBUF,IRBUF,IFLG,IERFG) RETURN C C********#6 UNIT NUMBER C 450 IF ((STATE.NE.1).AND.(STATE.NE.3)) GOTO 700 CALL DBUG(6,450,STATE) STATE = 2 IFLG = 6 NIN = 0 CALL SCAN(IBUF,IRBUF,NIN,Q) IRBUF(2) = INTV(IRBUF,IFL) IF(IFL.EQ.-1.OR.IRBUF(1).EQ.-1)GO TO 800 IRBUF(1) = 1 RETURN C C******* CHECK CONTEXT C 700 IERFG = -16 STATE = 0 CALL DBUG(6,700,STATE) RETURN C C******* ERRORS -NEGATE IFLG C 800 IERFG= -IFLG-6 CALL DBUG(6,800,IERFG) RETURN C C*******8 END OF FILE C 500 IF ((STATE.NE.0).AND.(STATE.NE.3)) GOTO 700 CALL DBUG(6,500,STATE) IFLG = 5 RETURN END SUBROUTINE KPCNT(IFLG,IECNT,IUCNT,IERFG) C C SUBROUTINE # 7 FOR DBUG C DATA INIT/0/ C C C THIS ROUTINE IS RESPONSIBLE FOR SAVING AND COUNTING C THE NUMBER OF ENTRIES FOR EACH RECORD SET THAT C GOES INTO THE BINARY FILE IN SAM. C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS: C IFLG= GLOBAL VARIABLE WHICH IS USED TO INDICATE C THE TYPE OF FIELD BEING ANALYZED. C C IUCNT = UNIT COUNT FOR THE CURRENT RECORD SET BEING C CRACKED TO BINARY. C THIS V;ARIABLE IS USED FOR ERROR CHECKING, TO C VERIFY THAT THE NUMBER OF UNITS DESIGNATED C IN THE RECORD SET ACTUALLY CONFORM TO THE C NUMBER STORED IN THE TABLE FOR A PARTICULAR C RECORD SET. C C IERFG = ERROR FLG C WHERE: C -10 = UNIT COUNT > UNIT DESIGNATION IN CONFIG. TABLE C -11 = " " < " " " " " C -13 = # ENTRIES NOT CONSISTENT WITH CONFIG. TABLE C C C*** #1 DETERMINE WHERE TO BRANCH C 10 CALL DBUG(7,10,IFLG) C THE FIRST TIME THRU HERE MUST BE FOR A RECORD. IF (INIT.EQ.0 .AND. IFLG.NE.1) IERFG = -16 IF(IFLG.EQ.1)GO TO 100 IF(IFLG.EQ.6)GO TO 200 IF(IFLG.EQ.5)GO TO 150 IECTR = IECTR + 1 RETURN C C*** #2 INITIALIZE POINTERS (FIRST TIME THRU) C 100 IF(INIT.NE.0)GO TO 150 INIT = 1 IUCHK = 0 IECHK = 0 IECTR = 0 IUCTR = 0 C C*******# 3 ERROR CHECKS FOR NEW RECORD. C 150 CONTINUE C C CHECK THE ENTRY COUNT OF THE LAST UNIT OF THE LAST RECORD. IF (IECHK.NE.IECTR)IERFG= -13 C C CHECK THE UNIT COUNT OF THE LAST RECORD. C IS UNIT COUNT > UNIT DESIG.? IF(IUCTR.GT.IUCHK)IERFG = -10 C IS UNIT COUNT < UNIT DESIG.? IF(IUCTR.LT.IUCHK)IERFG = -11 C C SET THE UNIT AND ENTRY CHECK VALUES OF THE NEW RECORD. IUCHK = IUCNT IECHK = IECNT C SET THE COUNTS OF ENTRIES AND UNITS FOR THIS RECORD TO ZERO. IUCTR = 0 IECTR = 0 C REJECT ILLEGAL VALUES OF UNITS, ENTRIES. IF (IUCNT.LE.0.OR.IUCNT.GT.15)IERFG = -7 IF (IECNT.LE.0)IERFG = -7 RETURN C C*** #5 UNIT FLAG C 200 CONTINUE C IF THIS IS FIRST UNIT LINE FOR THIS RECORD, C THEN THE ENTRY COUNT MUST BE ZERO. IF (IUCTR.EQ.0 .AND. IECTR.NE.0) IERFG = -16 C CHECK LAST ENTRY COUNT OF LAST UNIT (IF ANY) OF THIS RECORD. IF (IECHK.NE.IECTR .AND. IUCTR.GT.0) IERFG = -13 C COUNT THE NEW UNIT.  IUCTR = IUCTR + 1 C SET THE COUNT OF ENTRIES FOR THIS NEW UNIT TO ZERO. IECTR = 0 RETURN END SUBROUTINE SAM(I,IFLG,IC,ICLAS,ICLTB,IBC,IDPTR) C C SUBROUTINE # 8 FOR DBUG C DIMENSION ICLTB(30),IBC(130) DIMENSION IREG(2) C C THIS IS THE ROUTINE THAT HANDLES CLASS I/O C FOR THE CONFIGURATION TABLES. C C************************ C************************ C***#1 CLASS READ WRITE - A NEGATIVE ICLAS # MEANS C NO RECORD SET HEADER IN THE BUFFER PERTAINING C TO THAT PARTICULAR CLASS NUMBER. C IBC(2) WILL CONTAIN IDPTR (BUFFER LENGTH) C C BIT 15 OF ICLAS IS SET TO 1 (NO WAIT BIT) -THIS IS C SO THAT IS CASE THERE IS NO MEMORY AVAILABLE OR C NO CLASS NUMBER ALLOC WILL NOT GO INTO A WAIT STATE C AND WE CAN EMIT MESSAGES TO THE OPERATOR. C C C 10 CALL DBUG(8,10,ICLAS) II = 1 IF(ICLAS.LT.0)ICLAS = -ICLAS IF(IFLG.EQ.5)GO TO 100 IBC(2) = IDPTR ICLAS = 100000B CALL EXEC(20,0,IBC,IDPTR,IDMY,JDMY,ICLAS) CALL ABREG(IREG,IREG(2)) IF(IREG.LT.0)GO TO 800 ICLAS = IAND(ICLAS,77777B) IF(IC.NE.1)GO TO 50 ISTN = ISN(DUMMY) CALL STCLN(ISTN,ICLAS) 50 IF(ICLTB(IC).LT.0)ICLAS = -ICLAS ICLTB(IC) = ICLAS RETURN C C*** #2 CLASS GET - BIT 13 IS ET TO SAVE CLASS #, WITH C BIT 14 = 0 TO RELEASE BUFFER. C C 100 ICL = IOR(ICLAS,20000B) IREG = EXEC(21,ICL,IBC,130) IF(ICLTB( I ).LT.0)GO TO 150 C C*** #3 PUT CLASS # FOR NEXT BUFFER INTO FIRST WORD OF IBC C 150 IF(I.EQ.IC)GO TO 300 CALL STORE(ICLTB(I+1),IBC,ICLAS,IERR) IF (IERR.EQ.-1) GOTO 800 RETURN C 300 CALL STORE(ICLTB(1),IBC,ICLAS,IERR) IF (IERR.EQ.-1) GOTO 800 RETURN C C PURGE TABLE, REPORT ERROR (NO SAM/NO CLASS #), TERMINATE C 800 CALL DALOC(ISTN) CALL ALERR(17,ISTN) CALL PRTN(-1) CALL EXEC(6) END SUBROUTINE DBUG(ISUB,LINE,4$"IVALU) DATA INIT/0/ C C THIS ROUTINE IS USED TO DISPLAY DE-BUG INFORMATION WHEN THE OPERATOR C HAS ENTERED "ZX" (55130B) AFTER THE ERROR OUTPUT PARAMETER IN THE C SCHEDULING STRING, EG. :RU,ALLOC,&CONFG::80,6,55130B C C EACH ROUTINE IN ALLOC HAS AN IDENTIFING NUMBER: C ALLOC = 1 C TRFER = 2 C DALOC = 3 C ERCNT = 4 C STORE = 5 C TRACE = 6 C KPCNT = 7 C SAM = 8 C NUMB = 9 C FLCNT = 10 DELETED FROM &TRACE REV. 2001 C CNTR = 11 C ALERR = 12 C C THIS ROUTINE ALWAYS PRINTS ON LU 6. IT ALSO PRINTS THE VALUE C IN DECIMAL, OCTAL, AND ASCII. C IF (ISUB-55130B) 10,300,10 10 IF (INIT) 100,200 100 WRITE(6,110) ISUB,LINE,IVALU,IVALU,IVALU 110 FORMAT(" SUBR "I2" LINE "I4" DEC "I5" OCT "K6" ASC "A2) 200 RETURN C 300 INIT = -1 RETURN END END$ tR$ u 09580-18072 2001 S C0122 &NUMB SUB FOR ALLOC             H0101 *FTN,Q,C SUBROUTINE NUMB(IBUF,IRBUF,IFLG,IERFG),09580-16072 REV.2001 791015 C------------------------------------------------------------------- C C RELOC. 09580-16072 C SOURCE 09580-18072 C C C. LEATH REV.A 770504 C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IBUF(40) DIMENSION IRBUF(10) DIMENSION INBUF(2) EQUIVALENCE(INBUF,AFLT) DATA IPLUS,MINUS/53B,55B/ DATA IDPT,IEXP/27000B,42400B/ C C SUBROUTINE # 9 FOR DBUG C C THIS SUBROUTINE IS RESPONSIBLE FOR ANALYSING A C NUMERIC FIELD, DETERMINING WHETHER THE NUMBER C IS OCTAL, INTEGER OR FLOATING POINT. THE STRING C PROCESSING ROUTINES UTILIZED IN THIS ROUTINE C ARE: C C INTV: ASCII TO INTEGER OR OCTAL C A2F: ASCII TO FLOATING POINT C AN ILLEGAL NUMERIC IS INDICATED TO THE HIGHER C UP ROUTINES BY "IERFG"= -8 C CC*****#1 ASCERTAIN WHETHER A + OR - IS 1ST CHARACTER C 10 CALL DBUG(9,10,IBUF) IFLG = 2 I=1 ICHR = 0 NIN = 0 CALL SCAN(IBUF,IRBUF,NIN,Q) ITST = (IAND(IRBUF(2),177400B))/400B IF(ITST.NE.IPLUS.AND.ITST.NE.MINUS)GO TO 405 CALL SCAN(IBUF,IRBUF,NIN,Q) 405 I= I+1 C CC*****#2 NOW SEE IS NUMBER IS FLOATING PT C IFLT1 = IAND(IRBUF(I),177400B) IFLT2 = IAND(IRBUF(I),177B)*400B IF(IFLT1.EQ.IDPT.OR.IFLT2.EQ.IDPT)GO TO 460 IF(IFLT1.EQ.IEXP.OR.IFLT2.EQ.IEXP)GO TO 460 ICHR = ICHR +2 IF(ICHR.LT.IRBUF(1))GO TO 405 C CC******V3 INTEGER OR OCTAL C IRBUF(2) = INTV(IRBUF,IFL) IF(IFL.EQ.-1)GO TO 800 IRBUF(1) = 1 IF(ITST.EQ.MINUS)IRBUF(2) = -IRBUF(2) RETURN C CC******4 FLOATING POINT C 460 IFLT = A2F(IRBUF,1,IRBUF(1),INBUF(1)) IF(IFLT.LT.0)GO TO 800 IF(ITST.EQ.MINUS)AFLT = -AFLT DO 475 I = 1,2 475 IRBUF(I+1) = INBUF(I) IRBUF(1) = 2 RETURN 800 IERFG= -8 RETURN END SUBROUTINE CNTR(ITOKN,IERFG,IND) C C SUBROUTINE # 11 FOR DBUG C DIMENSION ICNT(128) DATA MSK1,MSK2/177400B,377B/ C C THIS SUBROUTINE KEEPS TRACK OF THE UNIT NUMBERS C AND DEVICE TYPE NUMBERS AND REPORTS ANY DUPLICATES C IN IERFG. C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS: C ITOKN = THE UNIT OR DEVICE TYPE NUMBER C IERFG = ERROR FLAG WHERE: -14 = DUPLICATE DEVICE TYPE C -15 = DUPLICATE UNIT NUMBER C IND = BRANCHING INDICATOR C WHERE IND = 1 MEANS TO CHECK FOR DUPLICATE UNIT #S C " = 2 " " CHECK FOR DUPLICATE DEVICE TYPE NUMBERS C C ICNT IS THE BUFFER CONTAINING THE BOOKEEPING INFOR- C MATION WITH EACH WORD LOOKING LIKE : C ----------------------------------- C !IDTN (BITS 8-15) ! UNIT # BITS 0-7! C ------------------------------------ C C 10 CALL DBUG(11,10,IND) GO TO(200,100),IND C C NEW RECORD - FIRST CLEAR UNIT COLUMN C 100 DO 120 I= 1,128 120 ICNT(I) = IAND(ICNT(I),MSK1) C C CHECK FOR DUPLICATE IDTN C IDCHK = ITOKN * 400B DO 140 I = 1,128 ICHK = IAND(ICNT(I),MSK1) IF(ICHK.EQ.IDCHK)GO TO 150 IF(ICHK.EQ.0)GO TO 145 140 CONTINUE 145 ICNT(I) = IDCHK RETURN 150 IERFG = -14 RETURN C C CHECK FOR DUPLICATE UNIT# C 200 DO 240 I=1,128 IUCHK = IAND(ICNT(I),MSK2) IF(IUCHK.EQ.ITOKN)GO TO 250 IF(IUCHK.EQ.0)GO TO 245 240 CONTINUE 245 ICNT(I) m = IOR(ITOKN,ICNT(I)) RETURN 250 IERFG = -15 RETURN END END$ t v~ 09580-18079 2026 S C0122 &DVM72 UNIVERSAL DRIVER              H0101 ASMB,Q,C HED RTE UNIVERSAL INTERFACE DRIVER - 09580-16079 NAM DVM72,0 09580-16079 REV.2026 800318 * ******************************************************************** * * RELOC. 09580-16079 * SOURCE 09580-18079 * ERS A-09580-16079-1 * * C. LEATH 03/15/77 REV. A * T. KONDO 10/24/77 REV. B * D. LAMPMAN 3/18/80 REV.2026 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * **-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* SPC 3 SPC 3 * I. IDENTIFICATION - UNIVERSAL INTERFACE DRIVER * ----------------- * * II. LANGUAGE - ASSEMBLY LANGUAGE, RELOCATABLE * ------------ * * III. TYPE - RTE EXEC CALLABLE DRIVER * --------- * * IV. LENGTH - 476 (DECIMAL) * ---------- * * V. SPECIAL HARDWARE REQUIRED - * * ---------------------------- * * 12556 -40 BIT I/O CARD OR * 12566 -MICROCIRCUIT CARD OR * 12604 -DATA SOURCE INTERFACE CARD OR * 12661 -DVS PROGRAMMER CARD * DMA -FOR SPECIAL APPLICATIONS(E.G.1010) * * * VII. ENTRY POINTS - IM72,CM72 * ----------------- * * VIII. EXTERNALS - $LIST * --------------- * SKP * * * XI. PROGRAM LISTING - * ------------------- * ENT IM72,CM72 EXT $LIST * * ******************************************************************** * THE FOLLOWING IS AN EXPLANATION OF SOME OF THE SALIENT * * FEATURES OF THE DRIVER. SOME MORE EXPLANATIONS WITH GREATER  * * DETAIL ARE INCLUDED IN THE COMMENTS PRECEDING THE OPERATION. * * TO GAIN A LESS THAN MURKY UNDERSTANDING OF WHAT IS GOING ON IT * * WOULD BEHOOVE ONE TO UNDERSTAND HOW A DEVICE SUBROUTINE MAKES * * THE DRIVER UNDERSTAND WHAT IT WANTS DONE. THIS IS DONE WITH * THE CONTROL WORD (ICNWRD) SEEN IN ALL RTE MANUALS UNDER EXEC * * I/O CALLS.THIS CONTROL WORD IS FORMATTED IN THE DEVICE SUBROUTINE * AND WHEN AN EXEC I/O CALL IS MADE THIS WORD IS CHANGED BY THE * * EXEC TO REFLECT THE ICODE IN BITS 0-5 (ICODE:READ=1,WRITE=2,CON-* * TROL = 3). * THE CONWRD IS THEN STORED IN WORD 6 OF THE EQT TABLE. * * SINCE A PICTURE SPEAKS LOUDER THAN A BUNCH OF WORDS, THE * * ILLUSTRATION BELOW SHOWS THE CONTROL WORD BEFORE THE EXEC CALL * * AND AFTER. * * * * * * BEFORE: CONWRD FORMAT SENT FROM DEVICE SUBROUTINE VIA AN * * EXEC I/O CALL * * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * +BITS 6 TO 15 FUNCTION CODES++BITS 0 TO 5 LU NUMBER + * * +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * * * AFTER: CONWRD FORMAT AFTER PASSING THRU RTIOC * * (NOTE: A REGISTER CONTAINS DEVICE SUBCHANNEL * * UPON ENTERRING DRIVER) * * +++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * +BITS 6-15 SAME AS BEFORE+++BITS 0-5 = ICODE + * * +++++++++++++++++++++++++++++++++++++++++++++++++++++++ * * * * THE ROUTINE USES THE SELECT CODE TO FORMAT THE * * I/0 INSTRUCTIONS, AND THE ICODE TO DETERMINE I/O DIRECTIONf * * (READ OR WRITE). * * * * BITS 6 TO 10 ARE USED BY DVR72 TO DETERMINE MANY THINGS * * ABOUT WHAT TYPE OF I/O THE DEVICE SUBROUTINE WANTS TO DO. BIT * * 6 IS ALWAYS SET TO INDICATE BINARY MODE OF ICO DATA TRANSFER. * * IF BIT 6 IS NOT SET THE A REGISTER IS SET TO 2 TO INDICATE * * ILLEGAL REQUEST AND A RETURN IS MADE TO RTIOC. * * * BITS 7 AND 8 DESIGNATE FOUR DIFFERENT TYPES OF I/O SEQUEN- * * CES DEPENDING ON WHETHER THE I/O REQUEST IS READ OR WRITE. * * THE FOLLOWING TABLE DESCRIBES THE DIFFERENT TYPES OF I/O * * SEQUENCES OBTAINABLE WITH THE DIFFERENT SETTINGS OF BITS 7 AND * * 8. * * COLUMN 1 SHOWS THE SETTING OF BITS 6,7&8 OF THE CONWD, NOTE THAT * * IN PROGRAMMING THEY WOULD BE LOOKED AT IN THE OPPOSITE DIRECTION* * (I.E. 876). * * COLUMN 2 DESIGNATES THE MODE OF INTERRUPT (INTERRUPT OR * * NONINTERRUPT). THE INTERRUPT MODE WOULD * START THE I/O IN THE INITIATOR AND COMPLETE IT IN THE COMPLETION* * SECTION OF THE DRIVER. THE SET CONTROL FLIP FLOP IS SET IN THIS* * MODE AND RETURN TO RTIOC WITH THE A REGISTER = 0. * THE CONTINUATION OR COMPLETION SECTION IN THIS MODE CONTINUES * * THE I O TRANSFER,SETTING THE CONTROL FF EACH TIME. UPON COMPLE- * * TION THE CONTROL FLIP IS CLEARED (CLC) AND THE FLAG FF IS SET * (STF) * * THE NONINTERRUPT MODE DEPENDING ON BIT 8 COMPLETES ALL I/O EITHER* * IN THE INITIATOR (BIT 8 = 0) OR AFTER THE FIRST INTERRUPT * * (BIT 8 = 1).THE SETTING OF BIT 8 IMPLIES THAT AN INTERRUPT IS * * EXPECTED, HOWEVER ANY I/O TRANSFERS BEFORE OR AFTER THE SETTING * * OF THE CONTROL FF ARE DONE WITHOUT AN INTERRUPT. THERE IS A DIF-* * FERRENCE IN WHAT HAPPENS WITH A READ OR WRITE WHEN BIT 8 IS SET.* * FOR A "READ" THE CONTROL FF IS SET BEFORE ANY I/O TRANSFER, AND * * THE NONINTERRUPT TRANSFER TAKES PLACE IN THE CONTINUATOR OR * * COMPLETION SECTION. FOR A WRITE OPERATION ALL I/O TRANSFERS TAKE* * PLACE BEFORE SETTING THE CONTROL FF, AND TERMINATION OCCURS * * AFTER THE INTERRUPT. * * * COLUMN 3 IS THE DIRECTION OF TRANSFER, READ OR WRITE. * * * COLUMN 4 SHOWS THE I/O OPERATION IN THE INITIATOR . * * * COLUMN 5 SHOWS THE I/O OPERATIONS IN THE CONTINUATOR SECTION * (AKA COMPLETION SECTION). WHERE NO FURTHER I/O IS EXPECTED AS * * A RESULT OF SAY THE NONINTERRUPT MODE "N/A" APPEARS. * * * COLUMN 6 SHOWS WHAT HAPPENS WHEN ALL I/O TRANSFER IS DONE * EITHER IN THE INITIATOR OR CONTINUATOR. * * * THE SETTING OF BITS 9 AND 10 ARE FOR SPECIAL APPLICATIONS TO * * BE EXPLAINED LATER. SKP ******************************************************************** * * * * * * * *BITS 876 * MODE * I/O MODE * INIT. * CONTIN. * FINI * ******************************************************************** * 001 * INTERRUPT * READ * CLC,X * LIA,X *CLC,X * * * * * LIA,X * STC,C *STF,X * * * * * STC,C,X * FOR EACH* * * * * * * WORD. * * ****************************************************************** * * * * * * * * * 101 *INTERRUPT * READ * CLC,X * * CLC,X * * * * * STC,C * LIA,X * STF,X * * *6 * * * STC,C,X* * * * * * *FOR EACH* * * * * * *WORD * * ******************************************************************** * 011 *NON-INTERRUPT * READ * CLC,X * N/A * CLC,X * * * * * LIA,X * * STF,X * * * * * LIA,X * * RETURN * * * * * ETC.UNTIL* * TO RTIOC * * * * * FINISHED * * W/A=4 !! * ****************************************************************** * * * * * * * * * 111 *NON-INTERRUPT * READ * CLC,X * LIA,X * CLC,X * * * AFTER AN INI-* * STC,C * LIA,X * STF,X * * * TIAL INTER- * * * ETC. * * * * RUPT. * * *UNTIL * * * * * *FINISHED* * ******************************************************************** * 001 *INTERRUPT * WRITE * CLC,X * * CLC,X * * * * * OTA,X * OTA,X * STF,X * * * * * STC,C,X * STC,C,X* * * * * * *FOR EA. * * * * * * *WORD * * ******************************************************************** * 101 *INTERRUPT * WRITE * CLC,X * * * * * * * STC,C * OTA ,X * CLC,X * * * * * OTA,X * STC,C,X* STF,X * * * * * STC,C,X * FOR EA.* * * * * * * WORD. * * * * * * * * * ******************************************************************** * 011 *NON-INTERRUPT * WRITE * CLC,X * N/A * CLC,X * * * * * OTA,X * * STF,X * * * * * OTA,X * * RETURN * * * * * ETC.UNTIL* * W/A=4!! * * * * * FINISHED * * * ******************************************************************** * 111 *NON-INTERRUPT * WRITE * CLC,X * N A * CLC,X * * * * * OTA,X * * STF,X * * * * * OTA,X * * * * * * * ETC.UNTIL* * * * * * * FINISHED * * * * * * * THEN STC,* * * ********************************************************************* SKP SPC 2 * * * NOTE: THE CLC,X THATIS SHOWN IN THE INITIATION COLUMN IS * * EXECUTED ONCE UPON ENTRY INTO DRIVER AND NOT FOR EACH WORD * TRANSFERRED. * * * * WHERE N/A APPEARS IN THE CONTINUATION COLUMN - THIS INDI- * * CATES THAT NO MORE I/O TAKES PLACE AFTER ALL DATA IS * * TRANSFERRED. THE ONLY THING THAT HAPPENS IN THIS CASE * * EITHER AFTER AN INTERRUPT (BIT 7 = 0), OR AT THE EXPIRA- * * TION OF THE WORD COUNTER IN THE NON-INTERRUPT MODE (BIT 7=* * 1) IS THE SEQUENCE CLC,X - STF,X. * * * ! - THIS LAST STC,C ARMS THE CARD FOR AN INTERRUPT, AND THE * * PREVIOUS SET CONTROLS (STC) WERE USED FOR STROBING DATA * * INTO THE I/O DEVICE. * !! - RETURNING TO RTIOC WITH THE REGISTER =4,TELLS * *  IT THAT I/O IS COMPLETE. * * THIS EXISTS IN CASES WHERE TERMINATION TAKES PLACE * * IN THE INITIATION SECTION OF THE DRIVER. * * RETURNS IN THE COMPLETION SECTION ARE OF TWO TYPES * * P+1 : COMPLETION WITH A=0 * P+2 : CONTINUATION (AN INTERRUPT IS EXPECTED TO COM- * * CONTINUE I/O OR TERMINATE). * * * * SKP SPC 3 * IN ADDITION TO THE SEQUENCES SPECIFIED BY BITS 7 AND 8, BITS 9 * * AND 10 HAVE BEEN UTILIZED TO EXPAND THE CONTROL AND I O SEQUENCE * * CAPABILITY OF THIS DRIVER. * * * * BIT 9 SET = 1, INDICATES THAT IN ADDITION TO THE CONTROL INFOR * * MATION SPECIFIED BY THE CONWD IN EQT6 THERE IS ADDITIONAL CON- * * TROL INFORMATION IN THE FIRST WORD OF THE I O BUFFER OF THE * * CALLING DEVICE SUBROUTINE. AT THIS TIME THE CODES THAT EXIST * * HAVE THE FOLLOWING MEANINGS: * * 9= DMA TRANSFER W/O STC,C TO START DEVICE * 10= " " WITH " " " " * 11= I/O SEQUENCE IN CNTRL BUFFER - COMPLETION IN INITIATOR * 12= " " " " " - " " " * WITH INTERRUPT EXPECTED * 13= " " " " " -WITH DATA FOLLOWING IN * DATA BUFFER W/O CLC,STF AT FINI * 14 " " " " " -WITH DATA FOLLOWING IN * DATA BUFFER WITH CLC,STF AT FINI * 15= LIA/LIB OR OTA/OTB STC,C THEN SFC,CLC FOR EACH TRANSFER * * SKP SPC 3 * SUMMARY OF SUBFUNCTION CODES AND BITS SETTINGS * IN THE CONWRD. ********************************************************** *SUBFUNC- ! 6 ! 7 ! 8 ! 9 ! 10 ! 12 ! BITS ! *TION ************************************************ * CODES * ************************************************ * 9 ! 1 ! 0 ! 0 ! 1 ! 0 ! 0 ! ************************************************ * 10 ! 1 ! 0 ! 0 ! 1 ! 0 ! 0 ! ************************************************ * 11 ! 1 ! DC ! DC ! 1 ! 0 ! 1 ! ************************************************ * 12 ! 1 ! DC ! DC ! 1 ! 1 ! 1 ! ************************************************ * 13 ! 1 ! X ! X ! 1 ! X ! 1 ! ************************************************ * 14 ! 1 ! X ! X ! 1 ! X ! 1 ! ************************************************ * 15 ! 1 ! X ! X ! 1 ! 0 ! 0 ! ************************************************ * * DC = DON'T CARE (IGNORED DURING PROCESSING) * X = 0 OR 1 ************************************************ SKP * * * THE EQT TABLE FOR DVM72 : * * * EQT1 - SUSPENDED LIST LINKAGE. LINKED TO THE ID SEGMENT OF THE * * CALLING PROGRAM. IF REIO IS USED IN THE CALL THE LINKAGE * * IS TO AN ID SEGMENT CREATED BY EXEC. * EQT2 - INITIATION SECTION ENTRY POINT * EQT3 - CONTINUATION SECTION ENTRY POINT. * * * ***** EQT 4 - FORMAT D BPS TUU UUU CCC CCC * * D = DMA ASSIGNED , 0=NO(ASSIGNED DYNAMICALLY) * B = BUFFERING ON YES = 1 OR NO =0 * P = POWER FAIL NO = 0 * S = TIME OUT SERVICED BY DVM YES=1 * T = TIME OUT OCCURANCE * U = UNIT OR SUBCHANNEL * C = I/O CHANNEL(SLOT) * ***** EQT 5 - FORMAT A ATT TTT TSS SSS SSS * * A = AVAILABILITY * T = DEVICE TYPE 72 * S = STATUS BYTE WHERE: 1 = ILLEGAL CONTROL CODE * 2 = TIME OUT 500USEC DELAY * 3 = TIME OUT BETWEEN * I/O TRANSFERS. * = BIT10 OF EQT6 SET=1. * 4 = TIME OUT ERROR * BIT 10 OF EQT6 NOT SET * 5 = NON EXISTENT IDSEG * 6 = ILLEGAL CODE FOR I/O INST. * 7 = ILLEGAL CW1 FOR DMA * 8 = ALARM PROGRAM SCHEDULED * * * EQT6 - CONWRD * EQT7 - REQUEST BUFFER ADDRESS * EQT8 - REQUEST BUFFER LENGTH * EQT9 - TEMPORARY STORAGE . IF BIT 12 IS SET IN THE CONWRD THEN * * THIS WORD CONTAINS THE CONTROL BUFFER ADDRESS. * EQT10- WORD COUNTER FOR BOTH NORMAL I/O REQUESTS AND CONTROL * * REQUESTS. * * EQT11 - SPECIAL INTERRUPT FLAG. * EQT12 - STORAGE FOR SUBFUNCTION CODES. * EQT13 - STORAGE FOR ID SEGMENT ADDRESS FOR INTERRUPT PROCESSING * * ROUTINES. THIS LOCATIONS IS ZERO IF NO INTERRUPT PROGRAM * IS AVAILABLE AND A NEGATIVE IDSEGMENT ADDRESS IF THE * INTERRUPT PROGRAM HAS BEEN DISARMED. * EQT14 - TIME OUT VALUE. * EQT15 - TIME OUT COUNTER. * ******************************************************************** SKP * * * INITIATION SECTION /////////////////* IM72 NOP INITIATOR SECTION ENTRY POINT STA SCODE SAVE SELECT CODE JSB SETIO CLB CLEAR STATUS WORD JSB STEQ5 LDA EQT6,I GET AND AND .3 ISOLATE REQUEST CODE * CPA .1 IF REQUEST CODE = 1 OR 2, RSS GO PROCESS READ OR WRITE CPA .2 REQUEST JMP D04 CPA .3 SEE IF THIS IS A CONTROL REQUEST JMP CNTRL * * REQUEST ERROR - CAUSE REJECT RETURN TO I/O CONTROL * REJEC LDA .2 SET (A) = 2 FOR REQUEST REJECT JMP IM72,I -EXIT- REJ LDB .1 ILLEGAL SUBFUNCTION fCODE JSB STEQ5 JMP REJEC SPC 3 * * PROCESS READ OR WRITE REQUEST * D04 JSB CKMOD GET CONTROL WORD AND NOP ROTATE MODE BIT TO MSB SSB,RSS IF NOT BINARY MODE (MSB = 1), JMP REJEC REJECT REQUEST CLA 0 EQT ENTRY FOR SUBFUNCTION CODE STA EQT12,I * CONT JSB TMCHK GO SET BIT12 OF EQT4 CONT1 RBR,RBR CHECK BIT 9 TO SEE IF SUBFUNCTION SLB,RSS IS IN THE FIRST WORD OF BUFFER JMP IO2 NO IT ISN'T SO CONTINUE LDB EQT7,I BUFFER ADDRESS ISZ EQT7,I BUMP ADDRESS POINTER LDA EQT8,I DECREMENT WORD COUNTER ADA N1 STA EQT8,I LDA B,I CONTENTS OF BUFFER STA EQT12,I TEMP STORAGE FOR SUBFUNCTION CODE ADA LCD CODE LEGALITY CHECKS LCD =LOWER NUMBER SSA LESS THAN LCD JMP REJ YES ERROR LDA EQT12,I SEE IF GREATER THAN UPPPER LIMIT ADA HCD1 SZA = 16 SSA,RSS >16 JMP REJ YES REJECT REQUEST JSB DMACK SEE IF THIS IS A DMA TRANSFER JMP DMA JMP VARIN GO PROCESS CONTROL BUFFER IO2 CLC 0 RESET I/O CARD CONT2 LDA EQT7,I STA EQT9,I SET AS CURRENT ADDRESS LDA EQT8,I GET BUFFER LENGTH SZA IF ZERO OR NEGATIVE BUFFER LENGTH, SSA REJECT REQUEST JMP REJEC CMA,INA MAKE NEGATIVE FOR COUNTER STA EQT10,I SET AS CURRENT COUNT LDA IEXIT SET UP RETURN STA CM72 TO INITIATOR SECTION CLA CLEAR TERMINAL INTERRUPT FLAG STA EQT11,I JSB CKMOD POSITION BITS NOP SEZ,RSS IS THIS A WRITE REQUEST JMP D10 YES GO OUTPUT FIRST WORD SLB,RSS INTERRUPT READ? JMP IO3 YES, SET FOR INTERRUPT RBR SLB NO, INITIAL INTERRUPT REQUESTED? JMP IO3 YES, SET FOR INITIAL DINTERRUPT JMP IO4 GO INPUT WORD EXIT JMP IM72,I -EXIT- SKP *** CONTINUATOR SECTION ENTRY POINT (C.72) *** * CM72 NOP CONTINUATOR SECTION ENTRY POINT JSB SETIO CONFIGURE I/O INSTRUCTIONS * NODMA LDB EQT1,I SEE IF NORMAL I/O IS IN PROGRESS SZB JMP D8 REQUEST IS QUEUED SO GO SEE WHATS HAPPENING STB EQT15,I ZERO TIME OUT WORD CLB CPB EQT13,I DOES ALARM PROGRAM EXIST? JMP FINI NO THEN BAIL OUT P+2 JMP SCHED ATTEMPT TO SCHEDULE INTERRUPT ROUTINE D8 LDA EQT4,I TEST BIT 11 TO SEE IF TIME OUT ALF SSA WAS ENTRY DUE TO TIME OUT? JMP TMOUT YES THEN PROCESS TIME OUT TCONT JSB DMACK SEE IF DMA XFER WAS IN PROGRESS JMP C.DMA YES TAKE SPECIAL EXIT JSB CKMOD IS IT READ REQUEST NOP SEZ JMP D12 YES, GO INPUT WORD JMP D9 WRITE REQUEST * BIT 15 OF A REGISTER IS SET TO INDICATE TO * RTIOC TO RELEASE DMA CHANNEL ASSIGNED TO THIS * DRIVER. * C.DMA LDA CW2 SET A = BIT 15 SET TO 1-SO THAT DMA JMP IO6 CHANNEL WILL BE RETURNED TO SYSTEM * SPC 3 SKP * * CONTINUATOR OUTPUT SECTION * D9 CLA IF CURRENT BUFFER LENGTH = 0, CPA EQT10,I SEE IF FINISHED JMP D11 * D10 LDB EQT9,I GET CURRENT BUFFER ADDRESS ISZ EQT9,I INDEX BUFFER ADDRESS LDA B,I GET WORD FROM BUFFER ISZ EQT10,I INDEX WORD COUNTER NOP * IO1 OTA 0 OUTPUT WORD TO I/O CARD JSB CKMOD CHECK MODE. NON-INTERRUPT? JMP D9 YES, OUTPUT NEXT WORD IO3 STC 0,C NO, SET FOR INTERRUPT JSB DELAY SEE IF WE MUST SFC BEFORE LEAVING JMP D9 P+1 RETURN -TO SEE IF MORE DATA TO TRANSMIT * FINI CLA SET (A) = 0 FOR NO ERRORS ISZ CM72 SET RETURN TO P+2 JMP CM72,I -EXIT- * D11 RBR  CHECK FOR TERMINAL INTERRUPT * THAT IS DO A STC,C BEFORE EXIT SLB,RSS TERMINAL INTERRUPT REQUESTED? JMP D15 NO, UPDATE STATUS AND EXIT CLA,INA HAS THE TERMINAL CPA EQT11,I INTERRUPT FLAG BEEN SET? JMP D15 YES, UPDATE STATUS AND EXIT ISZ EQT11,I NO, SET THE INTERRUPT FLAG JMP IO3 GO SET FOR INTERRUPT SPC 3 * * CONTINUATOR INPUT SECTION * D12 CLA CPA EQT10,I JMP D15 IO4 LIA 0 GET WORD FROM I/O CARD LDB EQT9,I GET BUFFER ADDRESS STA B,I SET WORD IN BUFFER ISZ EQT9,I INDEX BUFFER ADDRESS ISZ EQT10,I INDEX WORD COUNTER RSS JMP D15 NO MORE, EXIT JSB CKMOD CHECK MODE, NON-INTERRUPT? JMP IO4 YES, INPUT NEXT WORD JMP IO3 NO, SET FOR INTERRUPT SPC 3 SKP * * STATUS AND COMPLETION SECTION * D15 CLA SET (A) = 0 FOR NO ERRORS JSB CKMOD CHECK MODE, NON-INTERRUPT?(BIT7=1) LDA .4 YES, SET (A) = 4 FOR DONE RBR INITIAL OR TERMINAL SLB INTERRUPT REQUESTED? (BIT8=1) CLA YES, SET (A) = 0 FOR DONE SZA ANY INTERRUPTS IN THIS REQUEST? ISZ CM72 NO, SET RETURN TO INITIATOR LDB EQT12,I CPB .13 JMP COMEX AVOID CLC AND STF IF SUBFUNC=13 IO7 STF 0 RESET DEVICE FLAG IO6 CLC 0 DISABLE ANY INTERRUPTS COMEX LDB EQT8,I SET (B) = # WORDS JMP CM72,I -EXIT- SKP SPC 3 * * * THIS SUBROUTINE PROCESSES TIME OUTS. IF A TIME OUT IS DETECTED * BY DVR72 IT IS HANDLED IN EITHER OF THE FOLLOWING TWO MANNERS: * * * * 1. IF BIT 10 HAD BEEN SET IN THE CONWD (EQT6) THE DRIVER INTERPRETS* * THIS AS UTILIZATION OF THE I/O SUSPEND FEATURE OF RTE TO ENFORCE A* * DELAY BETRWEEM EACH I/O TRANSFER. THIS TYPE OF TIME OUT IS NOT * * INTERPRETED AS AN ERROR. * * 2. IF BIT 10 HAD NOT BEEN SET THE TIME OUT WOULD BE FLAGGED AS AN * * ERROR AND BITS 0-7 OF EQT 5 IS SET TO 4. * IF DMA HAD BEEN IN PROGRESS THE DMA CHANNEL IS RETURNED TO THE * * SYSTEM. * * * * TMOUT LDA BIT11 CMA MAKE 4000B = 173777 AND EQT4,I RESET TIME OUT BIT 11 STA EQT4,I LDA BIT10 CHECK BIT 10 AND EQT6,I SZA,RSS IS A = 0 JMP TOERR YES - TIME OUT ERROR LDB .3 SET EQT5 JSB STEQ5 JMP TCONT CONTINUE I/O IF ANYMORE TOERR LDB .4 JSB STEQ5 JSB DMACK SEE IS DMA WAS IN PROGRESS JMP C.DMA IF SO - RETURN CHANNEL AND EXIT. CLA JMP IO7 EXIT P+1 * SPC 3 STEQ5 NOP LDA EQT5,I AND MSKUB IOR B STA EQT5,I JMP STEQ5,I SKP SPC 3 * SUBROUTINE TO CONFIGURE I/O INSTRUCTIONS * SETIO NOP IOR OTA COMBINE WITH I/O ADDRESS STA IO1 SET STA IO15 STA OTX * ADA .1100 CONSTRUCT INSTRUCTION STA IO3 STA STX STA IO22 XOR .1500 CONSTRUCT INSTRUCTION STA IO14 * XOR .700 CONTSRUCT INSTRUCTION STA IO4 STA LIX * XOR .400 CONSTRUCT INSTRUCTION STA IO7 STA SFX * IOR .4600 CONSTRUCT INSTRUCTION STA IO2 STA IO13 STA IO6 STA IO23 STA CLX * XOR .5600 STA CFX JMP SETIO,I * * * * SKP SPC 3 * * SUBROUTINE TO CHECK REQUEST TYPE * AND INTERRUPT MODE * THIS SUBROUTINE MAKES BIT6 OF EQT6 THE MSB, AND * BIT7 THE LSB. * THE RETURNS TO THE CALLING PROGRAM ARE AS FOLLOWS: * P+2 = BIT7 IS 0 (INTERRUPT MODE) * P+1 =BIT7 IS 1 (NON-INTERRUPT MODE) {* * CKMOD NOP LDB EQT6,I GET CONTROL WORD CLE,ERB SET READ/WRITE FLAG BLF,BLF ROTATE MODE BIT TO MSB RBL,RBL SLB,RSS INTERRUPT OPERATION (LSB = 0)? ISZ CKMOD YES, SET RETURN TO P+2 JMP CKMOD,I NO, RETURN TO P+1 SPC 3 * * TMCHK IS RESPONSIBLE FOR: * * 1. SETTING BIT 12 OF EQT4 TO TELL RTE THAT WE WILL HANDLE * TIME OUT. * 2. IF EQT14 IS NE 0, MEANING A TIME OUT VALUE HAS BEEN * SPECIFIED THEN A T.O. VALUE OF .5SEC IS INSERTED * INTO EQT14 AND EQT15. * TMCHK NOP LDA EQT4,I IOR BIT12 STA EQT4,I LDA EQT14,I SZA JMP TMCHK,I LDA UNO STA EQT14,I STA EQT15,I JMP TMCHK,I SKP * * SCHEDULE INTERRUPT HANDLING ROUTINE FOR DEVICE FOR IMMEDIATE * EXECUTION UPON RETURN TO RTIOC. * 'SCHED' FIRST CHECKS TO SEE IF THE INTERRUPT ROUTINE IS * DORMANT, AND IF NOT IT RETURNS TO RTIOC AND IF SO IT PROCEEDS * TO SCHEDULE THE ROUTINE VIA $LIST. * * * SCHED LDB EQT13,I GET ID SEGMENT ADDRESS SSB IS THE ADDRESS NEGATIVE (INTERRUPT PROGRAM DISARMED) JMP FINI YES THEN IGNORE INTERRUPT.RETURN P+2. STB SCH ADB O12 SAVE EQT4 IN BREG SAVE WORD OF IDSEG LDA EQT4 STA B,I ADB .5 SEE IF ROUTINE IS DORMANT LDB B,I SZB JMP SCHW NOT DORMANT SO GET OUT JSB $LIST MAKE CALL TO SCHEDULE PROGRAM OCT 101 SCH NOP IO13 CLC 0 JMP FINI SCHW LDB .8 STATUS = INTERRUPT PROGRAM SCHEDULED JSB STEQ5 LDA DLY 50 MSEC DELAY STA EQT15,I TIME OUTS STA EQT14,I JMP IO13 CONTINUATION EXIT * SKP SPC 3 * * THIS PORTION OF DVR72 IS RESPONSIBLE FOR PROCESSING * SPECIAL I/O SEQUENCES. THE CODES DESIGNATING WHICH * I/O INSTRUCTION TO EXECUTE IS CONTAINED WITHIN THE * CONTROL BUFFER FROM THE C|ALLING SEQUENCE. THE CONTROL * CODES HAVE THE FOLLOWING MEANINGS: * * 1 = LIA * 2 = OTA * 3 = STC,C * 4 = CLC * 5 = CLF * 6 = STF * * THE CODES THAT GOT US DOWN HERE TO THIS PORTION * OF THE ROUTINE ARE EXPLAINED IN THE BEGINNING * COMMENTS. THE CALLING SEQUENCE FOR USING THE SPECIAL * I/O CONTROL FEATURES ARE AS FOLLOWS: * * IN FORTRAN: CALL EXEC(I/O,CONWD+LU,IDBUF,IDBL, * ICBUF,ICBL) * * WHERE: I/O = 1,2 OR 3 * CONWD+LU=CONTROL WORD AND LU(CONWD HAS BIT 9 SET) * IDBUF = DATA BUFFER (FIRST WORD IS THE COMMAND CODE, * 11,12,13 OR 14). THE REST OF THE BUFFER IF ANY * IS DATA. * IDBL = DATA BUFFER LENGTH (=0 FOR CONTROL I/O ONLY * (11 OR 12) * ICBUF = COMMAND BUFFER- CONTAINING A SEQUENCE OF THE * AFOREMENTIONED CODES. * ICBL = COMMAND BUFFER LENGTH * * SPC 3 VARIN LDA EQT12,I ADA HCD MAKE SURE THAT WE SHOULD SSA,RSS BE HERE, IF NOT JMP CONT2 LEAVE!! LDA EQT10,I CMA,INA STA EQT10,I LOOP LDB EQT9,I ADDRESS OF CONTROL BUFFER LDA B,I CONTENTS ADA ADVAR GET ADDR. POINTING TO 1ST I/O CMD LDA A,I C(ADVAR) + C(ICBUF(B)) STA IOINS LDA B,I SZA,RSS LEGALITY CHECKS - DON'T WANT TO BLOW SYSTEM JMP ERR6 CODE = 0 ERROR CMA,INA SSA,RSS SEE IF POSITIVE JMP ERR6 CODE IS A NEGATIVE NUMBER ADA .7 SZA SSA JMP ERR6 CODE > 6 CLA IOINS NOP VARIABLE I/O CMD. ISZ EQT9,I BUFFER ADDR ISZ EQT10,I COUNTER JMP LOOP CLA LDB .13 CMB,INB SEE WHETHER THIS IS 11,12,13 OR 14 ADB EQT12,I SSB,RSS JMP CONT2 CODE = 13 OR 14, DATA IN IDBUF CMB,INB CHECK FOR 11 OR 12F SLB JMP EXIT A=0 CODE = 12 (WAIT FOR INT) LDA .4 IMMEDIATE COMPLETION-TELL RTIOC JMP EXIT CODE = 11 SPC 3 ERR6 LDB .6 JSB STEQ5 JMP ERTN SKP SPC 3 * * INTERNAL SKIP FLAG - PRIMARILY FOR 6940 MULTI- * PROGRAMMER AND ALLOWS A 500USEC DELAY FOR INTERRUPTS * TO OCCUR. IF NO INTERRUPT OCCURS WITHIN THE ALLOTTED * TIME A TIME OUUT ERROR IS NOTED IN EQT5 (=1) * FOR THE 6940 THIS DELAY TAKES PLACE WHEN THE DEVICE IS * IN THE HANDSHAKE MODE. * (THIS MAY BE CHANGED LATER TO ALLOW A VARIABLE TIME OUT) * * DELAY NOP LDA EQT12,I SHOULD WE BE HERE CPA .15 JMP DLY1 ISZ DELAY EXIT P+2 JMP DELAY,I GO TO FINI DLY1 LDA M82 500 USEC IO14 SFC 0 JMP OK FLAG OCCURRED IN TIME INA,SZA INCREMENT COUNTER AND SKIP IF =0 JMP IO14 TIME LEFT JMP TMERR BAD NEWS TIME OUT OK CLA CPA EQT10,I SEE IF I/O XFER IS FINI JMP DEXIT YES GO HOME JMP DELAY,I CONTINUE I/O IF ANY MORE DEXIT LDA .4 EXIT WITH COMPLETION CODE =4 ISZ CM72 JMP IO6 EXIT * * TIME OUT * TMERR LDB .2 JSB STEQ5 SET STATUS INTO EQT5 JMP DEXIT * * SKP SPC 2 * SKP * * * * * * THIS SECTION HANDLES CONTROL REQUESTS (ICODE = 3 * THE FORMAT FOR A CONTROL REQUEST IS AS FOLLOWS: * * CALL EXEC(3,CONWD+LU,[IPRAM]) * * WHERE: 3 IS AN RTE CONTROL REQUEST CODE * CONWD = CONTROL CODE * IPRAM = OPTIONAL PARAMETER * * CONTROL REQUESTS IN EFFECT THUS FAR: * * * CODE = 1 RESET TIME OUT(TAKE THE CONTENTS OF IPRAM * AND TRANSFER IT TO EQT14. * CODE = 2 CLEAR BIT 12 (DRIVER WILL NO LONGER PROCESS * TIME OUT * * CODE = 3 INTERRUPT PROGRAM SETUP WITH IPRAM = ADDRESS * OF P/ROGRAM NAME. * * CODE = 4 DISARM INTERRUPT PROGRAM * * CODE = 5 ARM INTERRUPT PROGRAM. * * * SPC 3 CNTRL JSB CKMOD NOP RBL FORM 876 LDA B AND O37 MASK BITS 6-10 CPA .1 TIME OUT REQ? JMP T.O CPA .2 JMP TMCLR CPA .3 JMP IDSEG CPA .4 JMP CLARM CPA .5 ARM INTERRUPT PROGRAM? JMP CLARM COMPLEMENT CONTENTS OF EQT13 JMP ERTN CLARM LDA EQT13,I GET THE ID SEGMENT ADDRESS. CMA,INA COMPLEMENT AND PUT AWAY. STA EQT13,I JMP CEXIT T.O LDA EQT7,I GET NEW TIME OUT VALUE CMA,INA STA EQT14,I RESET JMP CEXIT TMCLR LDA BIT12 CLEAR TIME OUT BIT CMA AND EQT4,I STA EQT4,I CEXIT LDA .4 JMP EXIT ERTN LDA .2 ILLEGAL CONTROL REQUEST JMP EXIT * SKP SPC 3 * * THIS PORTION OF THE CONTROL REQUEST SECTION TAKES * THE PROGRAM NAME IN IPRAM AND SEARCHES THRU THE * ID SEGMENTS ATTACHED TO THE KEYWORD LIST FOR * THE ID SEGMENT FOR THE ASSOCIATED PROGRAM AND WHEN * FOUND PLACES THE ID SEGMENT ADDRESS INTO EQT13. * * IDSEG LDA KEYWD TOP OF KEYWORD LIST STA SCODE IDSG1 LDA EQT7,I PROGRAM NAME STA T2 LDB SCODE,I ID SEGMENT ADDRESS SZB,RSS END OF LIST? JMP IDSGE SET ERROR CODE ADB .14 INDEX DOWN TO FW OF PROGRAM NAME IN ID SEG. LDA B,I CPA T2,I FIRST TWO CHARACTERS MATCH? INB,RSS JMP IDSG2 NO ISZ T2 CHECK NEXT TWO CHARACTERS LDA B,I CPA T2,I INB,RSS JMP IDSG2 ISZ T2 LDA B,I LOOK AT 5TH CHARACTER AND MSKUB STA B LDA T2,I AND MSKUB CPA B JMP IDSG3 EUREKA!! IDSG2 ISZ SCODE JMP IDSG1 IDSG3 LDA SCODE,I ID SEGMENT ADDRESS STA EQT13,I JMP CEXIT IDSGE LDB .5 JSB STMzEQ5 JMP CEXIT SKP SPC 3 * * * THIS IS THE DMA PROCESSING PORTION OF DVR 72, IT IS * RESPONSIBLE FOR RETRIEVING A DMA CHANNEL FROM RTE, CON- * FIGURING DMA COMMAND WORDS, OUTPUTTING THESE WORDS TO THE * APPROPRIATE DMA CHANNEL, AND FINALLY INITIATETING THE DMA * TRANSFER. THE DETERMINATION OF WHAT TO DO IN RELATION TO * THE DMA IS DETERMINED BY THE CODE SUPPLIED IN THE EXTENDED * CONTROL WHICH HAS BEEN TRANSFERRED TO EQT12. * THE APPLICABLE CODES AND THEIR RELATED MEANINGS ARE * DEFINED AS FOLLOWS: * * CODE MEANING * 9 DMA TRANSFER WITHOUT STC TO START DEVICE * 10 " " WITH " " " " * * THE REASON FOR THESE TWO CODES IS THAT SOME I/O DEVICES * PARTICULARLY THOSE USED FOR INPUT REQUIRE AN STC,C TO * START AN I/O TRANSFER ( TO TURN THEM ON). * * THE EXEC CALL FORMAT AND THE REQUIRED BIT AND BUFFER FORMATS * ARE DEFINED AS FOLLOWS: * * EXEC CALL: JSB EXEC * DEF ICODE = 1 OR 2(READ OR WRITE) * DEF ICNWD = 11LU * WHERE BITS 6 AND 9 ARE SET AND * LU = LOGICAL UNIT NUMBER * BIT 6 = BINARY MODE * BIT 9 = INDICATES THAT THE CONTROL * WORD FOR THIS I/O TRANSFER * IS CONTAINED IN WORD 1 OF THE * OUTPUT BUFFER. * DEF IBUFR = OUTPUT BUFFER * WHERE WORD 1 = 9 OR10 EXPLAINED ABOVE * WORD 2 = CONTROL WORD 1 FOR DMA * CONTROL WORD 1 (CW1) = 100000B OR JUST PLAIN 0. WHERE IF BIT * 15 IS SET = 1, THIS INDICATES THAT THE DMA IS TO GIVE A STC,C TO * THE I/O CHANNEL AT THE END OF EACH DMA CYCLE (EXCEPT ON THE LAST * CYCLE IF MODE IS INPUT. IF CW1 =0 THIS INDICATES NO STC,C AT EACH * DMA TRANSFER,. * f1 * THE REST OF THE WORDS IN IBUFR WOULD BE DATA. * * DEF IBUFL = BUFFER LENGTH, REPRESENTING THE ACTUAL * NUMBER OF DATA WORDS TO BE TRANSFERRED * INCLUDING THE FIRST TWO WORDS WHICH * CONTAIN CONTROL INFORMATION. SPC 3 SKP DMA DLD INTBA,I SEE WHICH DMA CHANNEL IF ANY IS ASSIGNED CPA EQT1 CHANNEL 6 ASSIGNED JMP CH6 CPB EQT1 CHANNEL 7 ASSIGNED? JMP CH7 LDA .5 REQUEST CODE FOR DMA CHANNEL JMP EXIT GO BACK TO RTIOC CH6 LDA .6 JMP CFDMA CONFIGURE DMA I/O INSTRUCTIONS CH7 LDA .7 * * CONFIGURE I/O INSTRUCTIONS * CFDMA JSB SETIO LDA IO15 CONFIGURE OTA FOR CHANNELS 2 OR 3 AND DLY MAKE BITS 0-5 = TO 2 OR 3 STA IO17 OTA 2 OR 3 STA IO21 " " ADA .100 FORM STC 2 OR 3 STA IO20 ADA BIT11 FORM CLC STA IO16 LDA IO24 STC,C TO START DEVICE IOR SCODE BITS 0-5 STA IO24 * * NOW FORM AND OUTPUT THE THREE CONTROL WORDS * FOR DMA TRANSFER. * * LDB EQT7,I BUFFER ADDRESS LDA B,I CONTENTS CW1 FOR DMA SZA CPA CW2 =100000 JMP DMCON JMP DMERR DMCON AND NOT13 CLEAR BIT 13 (NO CLC ON I.O CHANNEL AT END) ISZ EQT7,I BUMP BUFFER ADDRESS IOR SCODE MASK SELECT CODE INTO BITS 0-5 IO15 OTA 0 OUTPUT CW1 TO DMA CHANNEL 6 OR 7 IO16 CLC 0 PREPARE MEMORY ADDR. REG FOR CW2 JSB CKMOD NOP CLA SEZ,RSS READ OR WRITE REQUEST JMP DMA2 WRITE LDA CW2 BIT 15 = 1 TO INDICATE INPUT DMA2 IOR EQT7,I BUFFER ADDRESS IO17 OTA 0 OUTPUT CW2 TO CHANNEL 2 OR 3 IO20 STC 0 PREPARE WORD COUNTER FOR CW3 LDA EQT8,I # OF WORDS TO BE TRANSFERRED ADA N1 ADJUST FOR DMA CONTROL WORD STA EQT8,I CMA,INA TAKE TWOS COMPLEMENT IO21 OTA 0 LDA EQT12,I SEE IF STC,C REQUIRED BEFORE XFER CPA O12 IO24 STC 0,C YES IO22 STC 0,C TURN DMA CHANNEL IO23 CLC 0 CLEAR DMA CHANNEL CONTROL FLIP FLOP CLA JMP EXIT RETURN TO RTIOC * DMERR LDB .7 JSB STEQ5 LDA CW2 RELEASE DMA CHANNEL JMP EXIT SPC 6 * * DMA CONFIRMATION ROUTINE (P+1 RETURN =YES) * DMACK NOP LDA EQT12,I GET SUBFUNCTION CODE CPA .9 IS IT 9? JMP DMOUT YES RETURN P+1 CPA O12 NO IS IT 10? JMP DMOUT ISZ DMACK RETURN P+2 DMOUT JMP DMACK,I SKP * CONSTANTS AND STORAGE AREA * A EQU 0 DEFINE SYMBOLIC REFERENCE FOR B EQU 1 A AND B REGISTERS. * .1 OCT 1 UNO DEC -100 .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .7 OCT 7 .8 DEC 8 .13 DEC 13 .14 OCT 14 .9 DEC 9 O37 OCT 37 .15 DEC 15 MSKUB OCT 177400 O12 DEC 10 LCD DEC -9 HCD1 DEC -16 HCD DEC -15 ADVAR DEF LIX-1 LIX LIA 0 OTX OTA 0 STX STC 0,C CLX CLC 0 CFX CLF 0 SFX STF 0 CW2 OCT 100000 .100 OCT 100 .400 OCT 400 .1100 OCT 1100 .1500 OCT 1500 .700 OCT 700 .4600 OCT 4600 BIT12 OCT 10000 BIT10 OCT 2000 NOT13 OCT 157777 M82 DEC -82 500USEC .5600 OCT 5600 BIT11 OCT 4000 DLY OCT -5 SCODE NOP T2 NOP N6 DEC -6 N1 DEC -1 * OTA OTA 0 IEXIT DEF EXIT-1 * SPC 3 * * SYSTEM BASE PAGE COMMUNICATION AREA * . EQU 1650B ESTABLISH ORIGIN OF AREA * INTBA EQU .+4 FWA OF INTERRUPT TABLE * * I/O MODULE COMMUNICATION * KEYWD EQU .+7 EQT1 EQU .+8 LIST LINKAGE WORD EQT4 EQU .+11 EQT5 EQU .+12 EQT6 EQU .+13 EQT7 EQU .+14 EQT8 EQU .+15 EQT9 EQU .+16 EQT10 EQU .+17 EQT11 EQU .+18 EQT12 EQU .+81 EQT13 EQU .+82 EQT14 EQU .+83 EQT15 EQU .+84 * * * END Ep~|xx~ w 09580-18081 2026 S C0122 &DRTXX DRT EXTENSION TBL              H0101 <ASMB,Q,C HED << DEVICE REFERENCE TABLE 9580 EXTENSION >> 09580-16081 NAM DRTXX,14 09580-16081 REV.2026 800430 << 4 STATIONS >> * *--------------------------------------------------------------- * * RELOC. 09580-16081 * SOURCE 09580-18081 * * M.KAESSNER REV.A 770101 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * ENT DRTXX,SVCLN * * DRTXX DEF *+1 DEC 65 REP 65 OCT 0 SVCLN DEF * DEC 4 REP 4 OCT 0 END  x~ 09580-18082 A S 0122 &CNFGD EXAMINE CONFIG. DATA             H0101 FTN4,L PROGRAM CNFGD C------------------------------------------------------------------- C C RELOC. 09580-16082 C SOURCE 09580-18082 C C G. HOSS REV.A 770505 C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- C********************************************************************* C* CONFIGURATION TABLE DUMP C********** C********** C* C* THIS PROGRAM DOES A CONFIGURATION TABLE DUMP, PRINTING IT C* IN READABLE FORM. C* C* TO USE - RUN,CNFGD,[STATION #,LU#,DEVICE TYPE] C C ERRORS: CNFGD-1 PARAMETER ERROR C " -2 NON EXISTENT DEVICE TYPE C C* C********************************************************************* INTEGER DEVTYP,CLASS,UNITS,UNUM INTEGER BLANK DIMENSION IPRAM(5) DIMENSION IERMS(4) DIMENSION IBUF(130) DATA IERMS/5,2HCN,2HFG,2HD / DATA IRD/60000B/ DATA BLANK/2H / CALL RMPAR(IPRAM) KNT=2 IG = 1 IO = 0 IER = 0 C********************************************************************* C* GET FIRST CLASS# C* RETRIEVE FIRST RECORD C********************************************************************* IERR = 1 DO 11 JJ = 1,3 IF(IPRAM(JJ).LT.0)GO TO 800 11 CONTINUE ISTN= ISN(DUMMY) IOUT = ISTN IF(IPRAM.NE.0)ISTN = IPRAM IF(IPRAM(2).NE.0)IOUT= IPRAM(2) CALL RTCLN(ISTN,CLASS) IERR = 10 IF(CLASS.EQ.0)GO TO 800 IREAD=IOR(SIRD,CLASS) WRITE( IOUT,1000)ISTN 1000 FORMAT(2X," CONFIGURATION TABLE FOR STATION ",I4) IO = 1 CALL EXEC(21,IREAD,IBUF,130) C********************************************************************* C* RETRIEIVE DEVICE TYPE AND USE TO RETRIEVE DEVICE NAME C* DEVICE NAME FROM FILE DEVNAM (DEVNAM MAXIMUM 60 CHAR) C* DEVICE TYPE IS NUMBER OF RECORD IN FILE WHERE NAME IS LOCATED C********************************************************************* 50 CALL COUNT(KNT,IBUF,IO,IERMS) IF(IPRAM(3).EQ.0)GO TO 90 IG = 2 GO TO(90,95),IG 90 WRITE(IOUT,1) 1 FORMAT(2X) 95 DEVTYP=IBUF(KNT) IF(DEVTYP.EQ.IPRAM(3))IG = 1 GO TO(100,110),IG 100 WRITE( IOUT,2) DEVTYP 2 FORMAT(1X,"DEVICE TYPE",3X,I3) C********************************************************************* C* RETRIEVE NUMBER OF UNITS C********************************************************************* 110 CALL COUNT(KNT,IBUF,IO,IERMS) UNITS=IBUF(KNT) GO TO (200,210),IG 200 WRITE(IOUT ,3) UNITS 3 FORMAT(1X,"NUMBER OF UNITS",3X,I6) C********************************************************************* C* RETRIEVE NUMBER OF SUBRECORDS C********************************************************************* 210 CALL COUNT(KNT,IBUF,IO,IERMS) SBREC=IBUF(KNT) GO TO(300,310),IG 300 WRITE(IOUT ,4) SBREC 4 FORMAT(1X,"NUMBER OF SUBRECORDS",3X,I6) WRITE( IOUT,1) C********************************************************************* C* RETRIEVE UNIT NUMBER C********************************************************************* 310 DO 10 J=UNITS,1,-1 CALL COUNT(KNT,IBUF,IO,IERMS) UNUM=IBUF(KNT) GO TO (400,410),IG 400 WRITE( IOUT,5) UNUM 5 FORMAT(1X,"UNIT NUMBER",3X,I6) WRITE( IOUT,1) C********************************************************************* C* RETIEVE SUBRECORDS C***************************************T ****************************** 410 DO 20 K=SBREC,1,-1 CALL COUNT(KNT,IBUF,IO,IERMS) INFO=IBUF(KNT) GO TO (500,20 ),IG 500 WRITE( IOUT,6) INFO 6 FORMAT(10X,K6) 20 CONTINUE GO TO(600,10),IG 600 WRITE( IOUT,1) 10 CONTINUE GO TO(700,710),IG 700 WRITE( IOUT,7) 7 FORMAT(1X,"*******************************************") 710 GO TO 50 800 CALL ERROR(IERR,IERMS) CALL EXEC(6) END C********************************************************************* C* ***** SUBROUTINE COUNT ***** C* C* INCREMENTS KNT C* C* IF END OF RECORD(LAST ITEM=XX) RETRIEVES NEXT RECORD C* AND RETURNS IT IN IBUF C* C* IF END OF FILE TERMINATES PROGRAM C********************************************************************* SUBROUTINE COUNT(KNT,IBUF,IO ,IERMS) INTEGER CLASS DIMENSION IBUF(130) DATA IRD/60000B/ KNT=KNT+1 C********************************************************************* C* IF END OF RECORD GET NEW RECORD C********************************************************************* IF(KNT.LE.IBUF(2))GO TO 99 CLASS=IBUF(1) IREAD=IOR(IRD,CLASS) CALL EXEC(21,IREAD,IBUF,130) KNT=3 C********************************************************************* C* IF END OF FILE STOP C********************************************************************* 99 IF(IBUF(KNT).NE.054130B) RETURN IF(IO .NE.0)GO TO 990 IERR = 2 CALL ERROR(IERR,IERMS) 990 CALL EXEC(6) END END$  y 09580-18085 A S 0122 /DIR TEST DIRECTORY FILE             H0101 :* 09580-18085 REV. A 770519 * THIS DIRECTORY IS USED BY MTIS SOFTWARE * TO RELATE A TEST SEQUENCE FILE AND PARAMETERS * TO A UUT IDENTIFICATION NAME. UUT NAME IS AN * 80 CHARACTER STRING FOLLOWED BY ANOTHER * ENTRY WHICH SPECIFIES TEST SEQUENCE FILE NAME, * FOLLOWED BY THE VALUES TO BE SET INTO 1G,2G,& ETC.  z 09580-18107 2001 S C0122 &DALOC DEALLOCATE CONFIG TBLS             H0101 ASMB,C,Q NAM DALOC 09580-16107 REV.2001 791017 *------------------------------------------------------------------- * * RELOC. 09580-16107 * SOURCE 09580-18107 * ERS A-09580-16107-1 * * C. LEATH 01/20/77 REV. A * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *------------------------------------------------------------------- * * THIS PROGRAM IS RESPONSIBLE FOR DEALLOCATING * CLASS BUFFERS. IT OPERATES BY FIRST RETRIEVING * THE STATION NUMBER FROM THE CALLING SEQUENCE OR * MAKING A CALL TO ISN. THE CLASS NUMBER OF THE FIRST * BUFFER IN SAM ATTACHED TO THE AFOREMENTIONED STATION * IS LOCATED IN THE CORE RESIDENT TABLE SVCLN. AFTER * RETRIEVING THIS NUMBER THE CLASS NUMBERS ASSOCIATED * WITH THE REST OF THE BUFFERS IN SAM ARE RETRIEVED * USING CLASS I/O GET REQUESTS. * EXT RMPAR EXT SVCLN,IPUT EXT ERROR EXT ISN EXT EXEC ENT DALOC EXT DRTXX * * DALOC NOP JSB RMPAR RETRIEVE STATION # DEF *+2 DEF IPRAM LDA IPRAM SEE IF IT IS = 0 SZA JMP CONT NO JSB ISN YES IT IS SO GET # FROM ISN DEF *+2 DEF DUMMY STA IPRAM SZA,RSS MAKE SURE STATION EXISTS JMP ERR1 NO, WELL TELL THE WORLD CONT LDA DRT,I INDEX INTO DRTXX TABLE TO RETRIEVE ADA IPRAM THE ACTUAL LU NUMBER LDA A,I AND .7 SZA,RSS NONZERO? JMP ERR1 STA IPRAM LDB SV,I EVERYTHING IS COOL (OK) INB ADB IPGv  RAM COMPUTE INDEX INTO SVCLN STB ADDR ADDR = ADDR[SVCLN] + IPRAM LDA B,I GET CLASS NUMBER STA IFCLS SZA,RSS MAKE SURE CLASS # IS .NE. 0 JMP FINI ALL DONE IF NOTHING TO DEALLOCATE. LOOP AND MASK MASK OUT BITS 13 AND 14 TO INDICATE STA ICL TO THE SYSTEM THAT WE WANT TO RELEASE JSB EXEC THE BUFFER AND THE CLASS NUMBER DEF *+5 CLASS I/O GET DEF GET DEF ICL DEF IBUF DEF .2 RETRIEVE ONLY THE FIRST TWO WORDS LDA IBUF CHECK TO SEE IF WE'RE DONE CPA IFCLS JMP FINI LDA IBUF GO AGAIN JMP LOOP SKP * * FINI CLA NOW ZERO OUT SVCLN LOCATION FOR STATION STA IFCLS JSB IPUT DEF RTN DEF ADDR DEF IFCLS RTN JSB EXEC NOW INDUCE SELF SLEEP DEF *+2 DEF .6 * SPC 2 ERR1 JSB ERROR DEF *+3 DEF IERR DEF IERMS JMP RTN SKP * * CONSTANTS AND TEMPORARY STORAGE * IBADR DEF IBUF+1 IPRAM BSS 5 DRT DEF DRTXX SV DEF SVCLN ADDR NOP IFCLS NOP IBUF BSS 2 MASK OCT 17777 .7 OCT 7 DUMMY NOP A EQU 0 B EQU 1 ICL NOP GET DEC 21 .2 OCT 2 .6 OCT 6 IERR DEC 1 IERMS DEC 5 ASC 3,DALC * END DALOC _  { 09580-18111 1926 S 0122 &TRPLH TRAP LIBRARY HEADER             H0101 ASMB,R,Q NAM TRPLB 09580-12005 REV 1926 790427 * *--------------------------------------------------------------- * * REL. 09580-16111 * SOURCE 09580-18111 * * M.KAESSNER REV.A 770101 * MODULES CHANGED 1926 ARE TRAP (09580-16060) AND * TRPLH (09580-16111). * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * THIS RECORD IS THE HEADER FOR THE AUTOMATIC TEST SYSTEM * TRAP LIBRARY. END g | 09580-18116 2001 S C0122 &ALERR SUB FOR ALLOC             H0101 AASMB,Q,C NAM ALERR,7 09580-16116 REV.2001 791011 *------------------------------------------------------------------- * * RELOC. 09580-16116 * SOURCE 09580-18116 * ERS A-09580-16116-1 * * C. LEATH REV.A 770501 * REV.2001 791015 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *------------------------------------------------------------------- SUP PRESS MULTIPLE LINE LISTINGS EXT ERROR,.LNUM,LUERR EXT .ENTR ENT ALERR * * THIS ROUTINE IS RESPONSIBLE FOR PROCESSING * ERRORS WHICH OCCUR IN THE ALLOCATE PHASE * OF THE CONFIGURATION TABLES. * THE CALLING SEQUENCE FOR THIS ROUTINE IS AS * FOLLOWS: * * CALL ALERR(IERRNUM<,LUERR<,LINE>>) * WHERE IERRNUM = THE NUMBER ASSOCIATED WITH ONE OF * THE ERROR MESSAGES IN THIS ROUTINE. * LUERR = THE LOGICAL UNIT NUMBER TO REPORT THE ERROR ON. * IF NOT SPECIFIED, THEN THE CURRENT LU IS USED. * LINE = LINE NUMBER OF ERROR. IF NOT SPECIFIRD THEN THE * CURRENT LINE NUMBER IS USED. * * IENUM NOP LU DEF D0 LINE DEF D0 ALERR NOP JSB .ENTR DEF IENUM * LDA LINE,I GET LINE NUMBER SZA IF 0, USE CURRENT STA .LNUM STORE LINE INTO ERROR MODULE * LDA LU,I GET LU SZA IF 0, USE CURRENT LU STA LUERR STORE LU INTO ERROR MODULE * LDB IENUM,I STB IERR STORE AWAY ERROR NUMBER ADB ERADR FWA POINTER TO ERROR MESSAGES LDA B,I lU   STA MESS ERROR ADDRESS JSB ERROR DEF *+3 DEF IERR MESS NOP * LDA DEFD0 GET ADRESS OF "0" STA LINE SET DEFAULT CONDITION FOR LINE STA LU SET DEFAULT CONDITION FOR LU JMP ALERR,I * IERR NOP B EQU 1 D0 DEC 0 DEFD0 DEF D0 * * ERROR MESSAGE ADDRESSES * ERADR DEF E1-1 E1 DEF ERR1 E2 DEF ERR2 E3 DEF ERR3 E4 DEF ERR4 E5 DEF ERR5 E6 DEF ERR6 E7 DEF ERR7 E8 DEF ERR8 E9 DEF ERR9 E10 DEF ERR10 E11 DEF ERR11 E12 DEF ERR12 E13 DEF ERR13 E14 DEF ERR14 E15 DEF ERR15 E16 DEF ERR16 E17 DEF ERR17 * * * ACTUAL ERROR MESSAGES * * ERR1 DEC 0 ASC 4,NOT USED ERR2 DEC 18 ASC 9,NO STATION NUMBER ERR3 DEC 46 ASC 23,WARNING ONLY, PREVIOUS CONFIG. TBL DEALLOCATED ERR4 DEC 28 ASC 14,CONFIGURATION FILE NOT FOUND ERR5 DEC 32 ASC 16,LENGTH OF RECORD > 80 CHARARTERS ERR6 DEC 34 ASC 17,CONFIGURATION TABLE IN SAM CORRUPT ERR7 DEC 30 ASC 15,RECORD SET HEADER MISFORMATTED ERR8 DEC 48 ASC 24,ILLEGAL OCTAL, INTEGER, OR FLOATING POINT NUMBER ERR9 DEC 22 ASC 11,WRONG FLAG IN COLUMN 1 ERR10 DEC 48 ASC 24,NUMBER OF UNITS > INDICATED IN RECORD SET HEADER ERR11 DEC 48 ASC 24,NUMBER OF UNITS < INDICATED IN RECORD SET HEADER ERR12 DEC 14 ASC 7,ILLEGAL UNIT # ERR13 DEC 42 ASC 21,NUMBER OF ENTRIES PER UNIT NOT CONSISTENT ERR14 DEC 28 ASC 14,DUPLICATE DEVICE TYPE NUMBER ERR15 DEC 22 ASC 11,DUPLICATE UNIT NUMBER ERR16 DEC 40 ASC 20,MISSING RECORD IDENTIFIER OR UNIT NUMBER ERR17 DEC 52 ASC 26,NO CLASS NUMBER, OR NO SAM, OR BUFFER LIMIT EXCEEDED END  } 09580-18125 B S 0122 &DVINT DEVICE INTERRUPTS             H0101 ASMB,R,L NAM DVINT,2,10 09580-18125 REV.B 790111 * *--------------------------------------------------------------- * * SOURCE 09580-18125 * * REV.A 770511 * REV.B 790111 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * ENT DVINT EXT EQLU,EXEC,LU2ST,TRPNT,RMPAR SPC 1 A EQU 0 B EQU 1 SKP * THIS IS A GENERAL PURPOSE INTERRUPT TRAP SETTING PROGRAM. IT * IS INTENDED TO BE USED BY ALL STATIONS SO ONLY ONE COPY IS NECESSARY. * IT SHOULD BE LOADED PERMANENTLY TO AVOID THE PROBLEM OF NOT HAVING AN * ID SEGMENT WHEN IT IS NEEDED. * * TO USE: * 1. BE SURE ALL INSTRUMENTS AND CRT'S HAVE BEEN DEFINED IN THE 'WELCOM' * FILE. THIS PROGRAM WILL NOT WORK OTHERWISE. IT WILL NOT SET TRAPS * FOR INSTRUMENTS DEFINED AS STATION '0'. * * 2. IN THE 'TABLE' SECTION OF THIS PROGRAM, REPLACE 'DEC 0' WITH THE * TRAP NUMBER YOU DESIRE TO SET IF THAT LU INTERRUPTS. LEAVE '0' * WHERE YOU DON'T EXPECT INTERRUPTS. THIS PROGRAM WILL DETERMINE * THE STATION THAT THE INTERRUPTING LU IS ON. * : * : * LU35 DEC 7 WILL SET TRAP 7 ON LU35'S STATION * * 3. COMPILE AND LOAD THE PROGRAM. * * FOR RTE II/III * * : * :RU,COMPL,,&DVINT,6,%DVINT * :LG,5 * :MR,%DVINT * :RU,LOADR,99,6,6 * * * FOR RTE IV * * : * :RU,ASMB,&DVINT,6,%DVINT * :RU,LOADR,,%DVINT,6,BGNCPE,SS * : * * 4. IN THOSE PROGRAMS WHICH NEED TO DETECT INSTRUMENT INTERRUPTS, CALL * SRQ (DVR37) OR DSCHD (DVM72) FOR EACH DEVICE THAT WILL POTENTIALLY * INTERRUPT. * 10 CALL SRQ(L1,16,"DVINT") * 20 CALL DSCHD(L2,3,"DVINT") * * 5. SET TRAP CALLS IN ACCORDANCE TO THE NUMBERS SET WITHIN THIS * PROGRAM. * * 6. AT THE END OF THE PROGRAM CLEAR THE INTERRUPT PROGRAM. * 9000 CALL SRQ(L1,17,0) * 9010 CALL DSCHD(L2,4,0) * * 7. AN ALTERNATE TO SETTING THE INTERRUPT PROGRAMS EACH TIME IS TO * WRITE A SMALL FORTRAN PROGRAM WHICH SETS UP THE INTERRUPT PROGRAM. * PUT THE PROGRAM IN THE 'WELCOM' FILE SO THAT IT RUNS AT BOOT-UP. * THIS MEANS THAT IF A INSTRUMENT INTERRUPTS UNEXPECTEDLY A TRAP * MIGHT BE SET, BUT, IF BASIC IS NOT RUNNING, THIS IS NOT A * PROBLEM. * * 8. IF YOU NEED FASTER RESPONSE TO AN INTERRUPT, THEN WRITE A SPECIAL * PROGRAM TO HANDLE IT FOR THE LU INVOLVED AND REMOVE THE TRAP * NUMBER FROM THE INTERNAL TABLE. SKP * * GET LU# OF INTERRUPTING DEVICE * DVINT NOP * * CALL RMPAR FOR DVR37 AND EQLU FOR DVM72 * STA AREG STORE A REGISTER STB BREG STORE B REGISTER JSB RMPAR CALL RMPAR TO GET EQT AND DEF *+2 SUBCHANNEL IF SCHEDULED DEF STAT FROM DVR37 LDA AREG RESTORE A REGISTER LDB BREG RESTORE B REGISTER JSB EQLU OBTAIN LU IN DEF *+1 STA LU YES, SAVE LU * * CONVERT EQT AND SUBCHANNEL TO AN LU * CLB CLEAR A REG FOR A DIVIDE LDA 1650B GET FIRST WORD ADDRESS OF EQT TABLE CMA,INA NEGATE ADDRESS ADA EQT GET DIFFERENCE IN ADDRESSES DIV =D15 DIVIDE BY EQT SIZE INA ADD ONE TO EQT NUMBER STA EQT STORE IN EQT LDA SUBCH GET SUBCHANNEL AND ALF,ALF POSITON IT TO COMPARE WITH ALF,RAR EQT AND SUBCHANNEL WORD IN DRT. ADA EQT ADD IN EQT BITS STA EQT SAVE FOR COMPARISON SZA,RSS IF BOTH EQT AND SUBCHANNEL = 0, JMP TEST THEN NOT SCHEDULED BY DVR37 * * GET LU FROM DEVICE REFERENCE TABLE (DRT) * LDA 1653B GET THE DRT TABLE LENGTH CMA,INA NEGATE STA LUMAX AND SAVE IT LDA 1652B GET FIRST WORD ADDRESS OF DRT STA DRT STORE ADDRESS OF DRT CLB,INB B REGISTER HAS CURRENT LU IN IT * LOOP LDA DRT,I GET THE NEXT DRT ENTRY AND =B174077 MASK FOR EQT AND SUBCHANNEL CPA EQT EQT AND SUBCHANNEL MATCH? JMP GOTIT YES, GO SAVE LU! ISZ DRT NO, INCREMENT LU POINTER INB INCREMENT LU COUNTER ISZ LUMAX INCREMENT LOOP COUNTER JMP LOOP LOOP AGAIN JMP TEST NO MATCH, ILLEGAL EQT AND SUBCHANNEL SPC 1 GOTIT STB LU FOUND LU, STORE IT TEST LDA LU TEST IF ANY LU FOUND SZA,RSS IF LU IS 0 JMP EXIT THEN EXIT! * * GET STATION NUMBER * JSB LU2ST GET STATION NUMBER FROM LU DEF *+2 DEF LU SZA,RSS FOUND ONE? JMP EXIT NO, EXIT STA STN YES, SAVE STATION * * GET TRAP NUMBER FROM TABLE * LDA TABLE GET TABLE ADDRESS ADA LU ADD LU OFFSET LDA A,I GET TRAP NUMBER * * SET TRAP ON CORRECT STATION * LDB STN JSB TRPNT CALL TRAP SET ROUTINE NOP IGNORE ERRORS * * EXIT * EXIT JSB EXEC CALL SYSTEM TO TERMINATE DEF *+2 DEF .6 * * CONSTANTS AND VARIBLES * AREG NOP BREG NOP LU NOP LUMAX NOP MAXIMUM NUMBER OF LU'S DRT NOP ADRESS OF THE DRT TABLE STAT NOP STATUS WRD FROM RMPAR - SUBCH NOP SUBCHANNEL FROM RMPAR \ THESE MUST BE EQT NOP %EQT NUMBER FROM RMPAR / IN ORDER SPARE BSS 2 NOT USED. FROM RMPAR - STN BSS 1 .6 DEC 6 TABLE DEF * SKP * * TRAP TABLE LU1 DEC 0 LU2 DEC 0 LU3 DEC 0 LU4 DEC 0 LU5 DEC 0 LU6 DEC 0 LU7 DEC 0 LU8 DEC 0 LU9 DEC 0 LU10 DEC 0 LU11 DEC 0 LU12 DEC 0 LU13 DEC 0 LU14 DEC 0 LU15 DEC 0 LU16 DEC 0 LU17 DEC 0 LU18 DEC 0 LU19 DEC 0 LU20 DEC 0 LU21 DEC 0 LU22 DEC 0 LU23 DEC 0 LU24 DEC 0 LU25 DEC 0 LU26 DEC 0 LU27 DEC 0 LU28 DEC 0 LU29 DEC 0 LU30 DEC 0 LU31 DEC 0 LU32 DEC 0 LU33 DEC 0 LU34 DEC 0 LU35 DEC 0 LU36 DEC 0 LU37 DEC 0 LU38 DEC 0 LU39 DEC 0 LU40 DEC 0 LU41 DEC 0 LU42 DEC 0 LU43 DEC 0 LU44 DEC 0 LU45 DEC 0 LU46 DEC 0 LU47 DEC 0 LU48 DEC 0 LU49 DEC 0 LU50 DEC 0 LU51 DEC 0 LU52 DEC 0 LU53 DEC 0 LU54 DEC 0 LU55 DEC 0 LU56 DEC 0 LU57 DEC 0 LU58 DEC 0 LU59 DEC 0 LU60 DEC 0 LU61 DEC 0 LU62 DEC 0 LU63 DEC 0 END DVINT END$ @ ~ 09580-18126 A S 0122 &DSCHD DSCHD             H0101 ASMB,R,L NAM DSCHD,7 09580-16126 REV. A 770315 *------------------------------------------------------------------- * * RELOC. 09580-16126 * SOURCE 09580-18126 * * C. LEATH 01/20/77 REV. A * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *------------------------------------------------------------------- * THIS IS A UTILITY ROUTINE WHICH ALLOWS A DEVICE SUB- * ROUTINE TO SCHEDULE A SPECIAL INTERRUPT PROGRAM FROM * FORTRAN OR BASIC. THESE ROUTINES ARE TYPICALLY THOSE * THAT MUST RESPOND IN LIEU OF AN UNEXPECTED INTERRUPT * FROM AN INSTRUMENT (E.G. POWER SUPPLY THAT CURRENT LIMITS) * THE DRIVER (DVM72) WILL DETERMINE WHAT I/O SLOT INTERRUPTED * AND IT IS UP TO THE INTERRUPT ROUTINE TO TAKE THE NECESSARY * ACTION. * * CALLING SEQUENCE IN FORTRAN: * * CALL DSCHD(LU,3,IPROG) * * WHERE: LU = LOGICAL UNIT NUMBER OF INSTRUMENT * 3 = CONTROL REQUEST CODE * IPROG = BUFFER ADDRESS OF A FIVE CHARACTER PROGRAM * NAME. IF NAME IS LESS THAN FIVE CHARACTERS * SUBSTITUTE BLANKS FOR MISSING CHARACTERS. * E.G. * DIMENSION IPROG(4) * DATA IPROG/5, 2HIN, 2HTU,2HP / * * NOTE: FIRST WORD OF BUFFER CONTAINS THE NUMBER OF CHARACTERS * AND THIS BUFFER MUST RESIDE IN A NON-SWAPPABLE AREA IN THE SYSTEM * MEMORY MAP. ********************************************************************* ENT DSCHD EXT .ENTR EXT EXEC * LU NOP COCDE NOP IPROG NOP DSCHD NOP JSB .ENTR 8   DEF LU LDA LU,I LOGICAL UNIT # IOR .300 FORM CONWRD STA ICNWD ISZ IPROG JSB EXEC DEF RTN DEF ICODE DEF ICNWD DEF IPROG PROGRAM NAME ADDRESS RTN JMP DSCHD,I * .300 OCT 300 ICNWD NOP ICODE DEC 3 END DSCHD ?   09580-18127 A S 0122 &LU2ST GET STA. NO. FOR LU             H0101 ASMB,R,L,C NAM LU2ST,7 09580-16127 REV.A 770201 * *--------------------------------------------------------------- * * RELOC. 09580-16127 * SOURCE 09580-18127 * * M.KAESSNER REV.A 770201 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * ENT LU2ST EXT .ENTR,DRTXX SPC 1 A EQU 0 B EQU 1 SKP * THIS ROUTINE IS USED TO RETURN THE STATION NUMBER OF THE LU * THAT IS PASSED IN AS A PARAMETER. THIS IS SOMEWHAT MORE DIFFICULT * THAN SIMPLY INDEXING INTO THE DRTXX TABLE AND RETRIVING THE STATION * BITS. THE REASON FOR THIS IS THAT THE STATION BITS INDICATE ONLY A * RELATIVE OR "FAKE" STATION NUMBER. IF THE REAL STATION NUMBER, THE * LU OF THE STATION'S CRT, WERE STORED IT WOULD REQUIRE UP TO 6 BITS. * SINCE ONLY 7 STATIONS MAXIMUM CAN BE CONNECTED, THIS ONLY REQUIRES * 3 BITS. * * ALGORITHM: * 1. ENTER DRTXX FOR THE LU PASSED IN AND GET DRTXX WORD. * * 2. MASK OFF ALL BUT THE "FAKE" STATION NUMBER (BITS 0-2). * * 3. MERGE THE "FAKE" STATION WITH DEVICE TYPE "1" AND SAVE IN STN. * * 4. SCAN THE DRTXX TABLE FOR THIS WORD. THE POSITION OF THE MATCHING * WORD WITHIN DRTXX IS THE LU OF THE STATION'S CRT, HENCE, THE * STATION NUMBER. * * 5. RETURN SKP LU NOP LU2ST NOP JSB .ENTR DEF LU * * TEST FOR LEGAL LU * LDA LU,I GET PASSED LU SSA IS LU NEG? JMP ERR YES, ERROR SZA,RSS IS LU 0? JMP ERR YES, ERROR    LDB DRTXX,I GET TABLE SIZE STB CNT (SAVE FOR LATER) CMB ADA B COMPARE TO TABLE SIZE SSA,RSS BIGGER? JMP ERR YES, ERROR * * GET DRTXX WORD * LDA DRTXX GET TABLE ADDRESS ADA LU,I ADD LU AS OFFSET LDA A,I GET LU'S WORD AND STMSK STRIP ALL BUT STATION BITS ADA TYPE1 ADD TYPE 1 BITS STA STN SAVE FOR LATER * * SCAN DRTXX TO FIND DEVICE TYPE 1 WITH SAME STATION * CLA,INA STA LUN INITIALIZE LU COUNTER LDB DRTXX INB B REGISTER IS ADDRESS POINTER SPC 1 LOOP LDA B,I GET NEXT ENTRY CPA STN EQUAL TO STATION WORD? JMP EXIT YES, EXIT WITH LU LDA LUN NO, CHECK INDEX CPA CNT EQUAL TO END OF TABLE? JMP ERR YES, NO STATION NUMBER INB NO, INCREMENT ADDRESS POINTER ISZ LUN INCREMENT LU COUNT JMP LOOP * * NORMAL EXIT * EXIT LDA LUN EXIT WITH LUN OF CRT JMP LU2ST,I * * ERROR EXIT * ERR CLA RETURN 0 FOR ERROR JMP LU2ST,I * * CONSTANTS AND VARIBLES * CNT BSS 1 LUN BSS 1 STN BSS 1 STMSK OCT 7 TYPE1 OCT 210 END END$   09580-18129 2013 S C0122 &CTRIM              H0101 ~FTN4,L SUBROUTINE CTRIM(IUNIT,MODA,MODB,TRIGA,TRIGB,ICOM,INZ),09580-16129 + REV.2013 800131 C C C THIS DEVICE SUBROUTINE IS USED TO SET UP THE HP-5328A UNIVERSAL C COUNTER. C C------------------------------------------------------------------- C C RELOC. 09580-16129 C SOURCE 09580-18129 C REV. B 770315 C REV. C 770901 C REV. D 791105 C REV. E 791126 REY UNTALAN C 800128 BOB RICHARDS C 800131 BOB RICHARDS C C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HCT,2HRI,2HM / DATA IDTN/5/ IERMS = 10 ISTN = ISN(DUM) LU = LUDV(ISTN,5,IUNIT) IF(LU)800,800,10 C C C CHECK IF COUNTER HAS BEEN PREVIOUSLY CALLED BY CTRST C IF NOT THEN MAKE A CALL TO CTRST TO INITIALIZE COUNTER C 10 CALL TIM(IDTN,IUNIT,1,IQ,1,IERFG) IF(IERFG .NE. 0) RETURN C IF(IQ .EQ. 1) GOTO 15 C C CALL CTRST(IUNIT,15,0,0) C C 15 CALL XTRIM(LU,IERMS,MODA,MODB,TRIGA,TRIGB,ICOM,INZ) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE XTRIM(LCTR,IERR,MODA,MODB,TRIGA,TRIGB,ICOM,INZ),09580-1 +6129 REV.2013 800131 C C C C C C THIS DEVICE SUBROUTINE SETS UP THE 5328A C UNIVERSAL COUNTER COUNTER FUNCTIONS. C C CALL XTRIM(LCTR,IERR,MODA,MODB,TRIGA,TRIGB,ICOM,INZ) C WHERE: C . LCTR = LU OF HP 5328A UNIVERSAL COUNTER C C IERR = 5 ELEMENT ERROR ARRAY C IERR(1) = ERROR CODE C C 0= NO ERROR C 1= PARAMETER ERROR C 3= OVERRANGE ERROR C 4= BAD DATA FROM 5328A C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION. C 11 - DMA INPUT REQUEST PREMATURELY TERMINATED C 12 - I/O DEVICE TIME OUT C 13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 - SRQ SERVICE ABORTED C 15 - NON-EXISTENT ALARM PROGRAM C 16 - ILLEGAL CONTROL REQUEST C 17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERR(2) - IERR(4) = DEVICE SUBROUTINE NAME C MODA = A CHANNEL INPUT MODE C MODB = B CHANNEL INPUT MODE C MODE ATTEN COUPL SLOPE C 0 X1 DC + C 1 X1 DC - C 2 X1 AC + C 3 X1 AC - C 4 X10 DC + C 5 X10 DC - C 6 X10 AC + C 7 X10 AC - C TRIGA = A CHANNEL TRIGGER LEVEL C TRIGB = B CHANNEL TRIGGER LEVEL C -2.50<= TRIG <= 2.50 C ICOM = SEP/COM/INVERT C 0 = SEP C 1 = COM C 2 = INVERT A&B CHANNELS C INZ = INPUT IMPEDANCE C 0 = A&B BOTH 1M OHM C 1 = A&B BOTH 50 OHM C 2 = A 50 OHM, B 1M OHM C 3 = A 1M OHM, B 50 OHM C C C CONFIGURATION TABLE ENTRIES C-------------------------------------- C R 5,N,1 WHERE N= NUMBER OF UNITS C U1 C 0 TEMP. STORAGE FOR INITILIZE FLAG C . C . C---------------------------------------- C C C C C DIMENSION IDATA(17),MODES(2,8),IERR(5),ISHFT(3) DIMENSION IREG(2) 1,ISCI(3),IZ1(4),IZ2(4),ID(3) C EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C SET PROGRAM DATA C DATA MODES/2H73,2H4 ,2H73,2H5 ,2H72,2H4 ,2H72,2H5 , 12H63,2H4 ,2H63,2H5 ,2H62,2H4 ,2H62,2H5 /, 1ISHFT/1,256,256/, 1ISCI/2HA8,2HA9,2HB9/, 1IZ1/2HA0,2HA1,2HA1,2HA0/,IZ2/2HB0,2HB1,2HB0,2HB1/ C DATA IWRT/100002B/ C IERR = 0 C C TEST PARAMETERS C IF((MODA.LT.0).OR.(MODA.GT.7))GOTO 9100 IF((MODB.LT.0).OR.(MODB.GT.7))GOTO 9100 IF((TRIGA.LT.-2.50).OR.(TRIGA.GT.2.50))GOTO 9100 IF((TRIGB.LT.-2.50).OR.(TRIGB.GT.2.50))GOTO 9100 IF((ICOM.LT.0).OR.(ICOM.GT.2))GOTO 9100 IF((INZ.LT.0).OR.(INZ.GT.3))GOTO 9100 C C C CHECK IF COUNTER HAS BEEN INITILIZE C C SET A CHANNEL MODE C MOD = MODA+1 IDATA(1) = 2H A IDATA(2) = MODES(1,MOD) IDATA(3) = MODES(2,MOD) C C COMPUTE A CHANNEL TRIGGER LEVELS C C C CONVERT TRIGA TO +/- X.XX FORMAT IN IDATA(4) - IDATA(6) C CALL TWO(TRIGA,IDATA(4)) C C SET B CHANNEL MODE C MOD = MODB + 1 IDATA(7) = 2H*B IDATA(8) = MODES(1,MOD) IDATA(9) = MODES(2,MOD) C C COMPUTE B CHANNEL TRIGGER LEVEL C C C CONVERT TRIGB TO +/- X.XX FORMAT IN IDATA(10) - IDATA(12) C CALL TWO(TRIGB,IDATA(10)) IDATA(13) = 2H* C C COMPUTE SEP/COM/INVERT C IDATA(14) = 2HB8 IDATA(15) = ISCI(ICOM+1) C C SET INPUT IMPEDANCE C IDATA(16) = IZ1(INZ+1) IDATA(17) = IZ2(INZ+1) C C C C PROGRAM UNIVERSAL COUNTER C CALL REIO(IWRT,2000B+LCTR,IDATA,17,IDUMY,0) GO TO 9000 1000 CALL ABREG(IA,IB) IF(IB .LT.0)GO TO 990 C C RETURN C RETURN C C ERROR RETURN C 9000 IERR = 9  GO TO 9900 9100 IERR = 1 GO TO 9900 990 IERR = IAND(IREG,377B) + 11 9900 IERR(2) = 5 IERR(3) = 2HCT IERR(4) = 2HRI IERR(5) = 2HM RETURN END C SUBROUTINE TWO(TRIG,IDAT),09580-16129 REV.2013 800131 C C THIS SUBROUTINE CONVERTS THE TRIGGER LEVEL DATA INTO C THE PROPER +/-X.XX FORMAT FOR PROGRAMMING TRIGGER LEVEL C AND PUTS THE ASCII DATA INTO IDAT(1) THROUGH IDAT(3) AS C +,X. AND XX RESPECTIVELY. C C C DIMENSION IDAT(3) IDAT(1) = 2H + IF(TRIG.LT.0)IDAT(1) = 2H - ITRIG = IFIX(100.0*(ABS(TRIG)+.001)) IHDS = ITRIG/100 JHDS = IHDS*100 ITENS = (ITRIG-JHDS)/10 IONES = ITRIG-JHDS-ITENS*10 ITENS = ITENS*256 IHDS = IHDS*256 IDAT(3) = IOR(IOR(IONES,ITENS),2H00) IDAT(2) = IOR(2H0.,IHDS) RETURN END END$ IF(IB.LT.0)GOTO 9100 C IF(IFUNC.EQ.4)GOTO 300 IF(IFUNC.GT.1)GOTO 100 LENTH = 32 IF(IBUFR(2).GT.0)LENTH = 36 C C OUTPUT FIELD CODES C CALL REIO(100002B,LU1,IBUFR(4),LENTH,IDUMY,0) GO TO 9000 70 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C OUTPUT 'GO' C 100 CONTINUE CALL REIO(100002B,LU1,MTRGO,1,IDUMY,0) GO TO 9000 110 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 IF(IFUNC.EQ.3)RETURN C C WAIT FOR STATUS C 160 IOFST = -20 CALL EXEC(12,0,1,0,IOFST) 170 CONTINUE CALL EXEC(100003B,600B+LU1) GO TO 9000 180 CALL ABREG(IA,IB) ISTAT = IAND(IA,377B) IF(ISTAT.GE.100B)GOTO 210 ITIME = ITIME + 1 IF(ITIME.LE.110)GOTO 160 C$ C$ ALL LINES COMMENTED OUT WITH 'C$' ARE PRE REV 2013 C$ IF(ITIME.LE.55)GOTO 160 C$ GO TO 220 C C CHECK STATUS: C MEASUREMENT-IN-PROCESS OVER RANGE SEARCH FAIL C 210 CONTINUE IF(ISTAT.EQ.100B)GOTO 300 IF(ISTAT.EQ.101B)GOTO 230 215 LSTAT = 5 IF(ISTAT.EQ.102B)LSTAT = 1 IF(ISTAT.EQ.103B)LSTAT = 4 IF(ISTAT.EQ.104B)LSTAT = 3 IF(ISTAT.EQ.105B)LSTAT = 6 IF(ISTAT.EQ.106B)LSTAT = 8 RETURN C 220 LSTAT = 2 RETURN C 230 MIPTR = MIPTR + 1 IF (MIPTR.GT.40)GOTO 220 C$ C$ IF (MIPTR.GT.20)GOTO 220 C$ IOFST = -50 CALL EXEC(12,0,1,0,IOFST) C C READ DATA FROM BUS C 300 CONTINUE C C ALL LINES COMMENTED OUT WITH 'C$' ARE PRE REV 2013 C C$ CALL REIO(100001B,100B+LU1,IOBUF(2),4,IDUMY,0) CALL REIO(100001B,100B+LU1,IOBUF(2),5,IDUMY,0) GO TO 9000 310 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 ISTAT = IAND(IOBUF(2),177400B)/256 IF(ISTAT.EQ.101B)GOTO 230 IF(ISTAT.GT.101B)GOTO 215 IOBUF(1) = 10 C THE FOLLOWING 2 LINES ARE REV 2013 IF (IOBUF(2) .EQ. 40053B) IOBUF(2) = 2H+0 IF (IOBUF(2) .EQ. 40055B) IOBUF(2) = 2H-0 C C$ ICHAR = IAND(IOBUF(5),177400B) ICHAR = IAND(IOBUF(5),377B) C$ NCHAR = IAND(IOBUF(5),377B) NCHAR = IAND(IOBUF(6),177400B)/256 IOBUF(5) = IAND(IOBUF(5),177400B) IOBUF(5) = IOBUF(5) + 105B C$ IF(ICHAR.EQ.20000B)IOBUF(5)=42453B IF(ICHAR.EQ.40B)IOBUF(6)=2H+0 C$ IF(ICHAR.EQ.47000B)IOBUF(6)=34440B IF(ICHAR.EQ.116B)IOBUF(6)=2H-9 C$ IF(ICHAR.EQ.46400B)IOBUF(6)=31440B IF(ICHAR.EQ.115B)IOBUF(6)=2H-3 C$ IF(ICHAR.EQ.52400B)IOBUF(6)=33040B IF(ICHAR.EQ.125B)IOBUF(6)=2H-6 C$ IF(ICHAR.EQ.20000B.AND.NCHAR.EQ.126B)IOBUF(6)=30060B IF(ICHAR.EQ.40B.AND.NCHAR.EQ.126B)IOBUF(6)=30060B IERR = A2F(IOBUF,1,IOBUF,VAL) IF(IERR.NE.0)GOTO 9300 400 CONTINUE RETURN C C ERROR EXIT C 9000 IERR = 9 GO TO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9200 IERR = 4 GO TO 9910 9300 IERR = 3 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HWF IERR(4) = 2HAM IERR(5) = 2HU RETURN END END$ J$"$  09580-18131 2013 S C0122 &CTRST              H0101 FTN4,L SUBROUTINE CTRST(IUNIT,IFUNC,IRGE,IARM),09580-16131 REV.2013 80013 +1 C------------------------------------------------------------------- C C RELOC. 09580-16131 C SOURCE 09580-18131 C REV. B 770315 C REV. C 770901 C REV. D 790111 C REV. E 791126 C BOB RICHARDS 800131 C C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HCT,2HRS,2HT / IERMS = 10 ISTN = ISN(DUM) LU1= LUDV(ISTN,5,IUNIT) LU0 = IBLU0(LU1) IF(LU1.LE.0.OR.LU0.LE.0)GO TO 800 10 CALL XTRST(LU0,LU1,IUNIT,IERMS,IFUNC,IRGE,IARM) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE XTRST(LUIB, LCTR,IU,IERR,IFUNC,IRGE,IARM),09580-16131 R +EV.2013 800131 C C C C C C THIS DEVICE SUBROUTINE SETS UP THE 5328A C UNIVERSAL COUNTER COUNTER FUNCTIONS. C C CALL XTRST(LCTR,IERR,IFUNC,IRGE,IARM) C WHERE: C LCTR = LU OF HP 5328A UNIVERSAL COUNTER C LUIB = LU NUMBER FOR HPIB I/O CARD C C IERR = 5 ELEMENT ERROR ARRAY C IERR(1) = ERROR CODE C C 0= NO ERROR C 1= PARAMETER ERROR C 3= OVERRANGE ERROR C 4= BAD DATA FROM 5328A C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9 = I/O CALL REJECTED  C 10 = LU # NOT ASSIGNED TO HPIB DEVICE OR TO STATION C 11 - DMA INPUT REQUEST PREMATURELY TERMINATED C 12 - I/O DEVICE TIME OUT C 13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 - SRQ SERVICE ABORTED C 15 - NON-EXISTENT ALARM PROGRAM C 16 - ILLEGAL CONTROL REQUEST C 17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERR(2) - IERR(5) = DEVICE SUBROUTINE NAME C C IFUNC=COUNTER FUNCTION (0-14) C 0=FREQ A C 1=PERIOD A C 2=PERIOD AVG A C 3=FREQ C C 4=T.I. A>B C 5=T.I.AVG A>B C 6=START A C 7=STOP C 8=EVENTS C,T.I. A>B C 9=CHECK C 10=N*B/A C 11=N*C/A C 12=START CLOCK C 13=RESTART A C 14=RESTART CLOCK C 15=INITIALIZE OR PRESET COUNTER ONLY C (ALL OTHER PARAMETERS ARE IGNORED) C C IRGE=COUNTER RANGE (0-7) C C IARM=ARMING MODE C 0=ARMING OFF C 1=ARMING ON C C C NOTE: WHEN CALLING THE 5328 COUNTER FOR THE "FIRST TIME" C MAKE THE CTRST (SET UP CALL) "FIRST" BEFORE ANY OTHER C COUNTER CALL. THIS WILL ENSURE THAT THE COUNTER IS C INITIALIZE FIRST. THE FUNCTION CAN BE SET TO ANY OF THE ABOVE. C INIALIZATION WILL AUTOMATICALLY TAKE PLACE WHEN CALLING THE C COUNTER FOR THE "FIRST" TIME ONLY. C C C IF IT BECOMES NECESSARY TO REINITIALIZE THE COUNTER, C THE COUNTER CAN ALWAYS BE INITIALIZE DURING THE COURSE C OF THE PROGRAM BY CALLING CTRST AND SETTING THE FUNCTION C TO 15 (INITIALIZE ONLY). ALL OTHER PARAMETERS MUST BE C PROGRAMED AFTER MAKING INITIALIZATION. C C C C ALLFL ENTRY FOR 5328 IS: AS FOLLOWS: C----------------------------------------------------------- C NOTE: N= NUMBER OF 5328'S IN THE SYSTEM C C C C R 5,N,1 C U1 C 0 TEMP STORAGE FOR INITIALIZATION FLAG C C . C . C . C . C----------------------------------------------------------- C DIMENSION IDATA(5),IFNC(15),IERR(5),IARM1(2),IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C C SET PROGRAM DATA C DATA IFNC/2HF4,2HF6,2HF7,2HF>,2HF8,2HF:,2HF1,2HF0, 12HF;,2HF<,2HF9,2HF=,2HF2,2HF1,2HF2/, 2IARM1/2HS:,2HS;/ DATA IDTN/5 / C C INITIALIZE ERROR CODE C IERR = 0 C C TEST PARAMETERS C IF((IRGE.LT.0).OR.(IRGE.GT.7))GOTO 9100 IF((IFUNC.LT.0).OR.(IFUNC.GT.15))GOTO 9100 IF((IARM.LT.0).OR.(IARM.GT.1))GOTO 9100 C C C C CLEAR DATA BUFFER C DO 44 I=1,5 IDATA(I)=2H 44 CONTINUE C C C C CHECK IF COUNTER HAS BEEN PREVIOUSLY CALLED. C C C CALL TIM(IDTN,IU,1,IN,1,IERFG) IF(IERFG .NE. 0) RETURN C C C IDATA(1)=2HP C C SET TO RANGE IRGE C IDATA(2)=2HG0+IRGE C C SET TO PROPER COUNTER FUNCTION C INDEX=IFUNC+1 IDATA(3)=IFNC(INDEX) C C SET ARMING MODE C IDATA(4)=IARM1(IARM+1) IF((IFUNC.EQ.6).OR.(IFUNC.EQ.12))IDATA(4)=2HS5 C C SET INDEX AND NDATA DEPENDING ON IFUNC C INDEX=1 C C C IF COUNTER HAS ALREADY BEEN INITIALIZE DO NOT OUTPUT 'P' C IF(IN .EQ. 1) INDEX=2 C C C IF COUNTER IS TO BE INITIALIZE ONLY THEN OUTPUT 'P' ONLY. C IF(IFUNC .NE. 15) GOTO 50 INDEX=1 NDATA=1 GOTO 99 C C 50 NDATA=5-IN IF (IFUNC .EQ. 6)IDATA(5)=2HT C C SET INPUT MODULE TO CHECK C IF((IFUNC.NE.9).AND.(IFUNC.NE.12))GOTO 66 IDATA(5) = 2HA? C C SET REMOTE ENABLE ON BUS C 66 CALL EXEC(100003B,1600B+LUIB) GO TO 8000 660 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C PROGRAM UNIVERSAL 0COUNTER C 99 CALL REIO(100002B,2000B+LCTR,IDATA(INDEX),NDATA,IDU,0) GO TO 8000 999 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C C SET FLAG FOR INITIALIZE IN ALLFL C IF NOT ALREADY DONE. C IF(IN .EQ. 1) RETURN IN=1 CALL TIM(IDTN,IU,2,IN,1,IERFG) C C RETURN C RETURN C C ERROR RETURN C 8000 IERR = 9 GO TO 9900 9100 IERR = 1 GO TO 9900 990 IERR = IAND(IREG,377B) + 11 9900 IERR(2) = 5 IERR(3) = 2HCT IERR(4) = 2HRS IERR(5) = 2HT RETURN END END$ j  09580-18133 1926 S C0122 &DVMST 5328 DVR37             H0101 7FTN4,L SUBROUTINE DVMST(IUNIT,IFUNC,IRGE,IARM), +09580-16133 1926 790502 C------------------------------------------------------------------- C C RELOC. 09580-16133 C SOURCE 09580-18133 C REV. A 770315 C REV. B 770901 C REV. C 790330 C BOB RICHARDS 790502 C C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HDV,2HMS,2HT / IERMS = 10 ISTN = ISN(DUM) LU = LUDV(ISTN,5,IUNIT) LU0 = IBLU0(LU) IF(LU.LE.0.OR.LU0.LE.0)GO TO 800 10 CALL XVMST(LU0,LU,IERMS,IFUNC,IRGE,IARM) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE XVMST(LU0,LU,IERR,IFUNC,IRGE,IARM), +09580-16133 1926 790502 C C C C C C C THIS DEVICE SUBROUTINE SETS UP THE HP5328A C UNIVERSAL COUNTER TO MAKE A VOLTAGE MEASUREMENT C THE 5328A MUST HAVE AN OPTION 021 OR OPTION 20 C DVM. C C CALL XVMST(LU0,LU,IERR,IFUNC,IRGE,IARM) C WHERE: C LU0 = LOGICAL UNIT NO. OF HP-IB C LU = LOGICAL UNIT NO. OF HP 5328A C IERR = 5 ELEMENT ERROR ARRAY C IERR(1) = ERROR CODE C C 0= NO ERROR C 1= PARAMETER ERROR C ERROR MESSAGES WHICH PERTAIN TO THE HP-IB C C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION. C 11 - DMA INPUT< REQUEST PREMATURELY TERMINATED C 12 - I/O DEVICE TIME OUT C 13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 - SRQ SERVICE ABORTED C 15 - NON-EXISTENT ALARM PROGRAM C 16 - ILLEGAL CONTROL REQUEST C 17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERR(2)-IERR(5) = DEVICE SUBROUTINE NAME C C IFUNC = DVM MODE (0-2) C MODE FUNCTION C 0 DVM READ DC VOLTAGE IN VOLTS C 1 DVM/A READ DC VOLTS/FREQ-A IN V/HZ C 2 DVM A-B READ DC VOLTS*TI A-B IN V-SEC C IRGE = DVM RANGE (1-5) C RANGE GATE TIME MAX RESOL C 0-12.5V 12.-125V >125V C 1 .001 SEC 100 MV 1.0 V 10.0 V C 2 .01 SEC 10 MV 100 MV 1.0 V C 3 .1 SEC 1 MV 10 MV 100 MV C 4 1.0 SEC 100 UV 1 MV 10 MV C 5 10.0 SEC 10 UV 100 UV 1 MV C C C IARM = ARMING MODE C 0=ARMING OFF C 1=ARMING ON - READING TRIGGERED BY B-CHAN FOR C MODE=0,1-BY C-CHAN FOR MODE=3 C C C DIMENSION IDATA(4),IMDE(3),IERR(5),IARM1(2), 1IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) DATA IMDE/2HF?,2HF3,2HF5/, 1 IARM1/2HS:,2HS;/ C C CLEAR ERROR CODE C IERR=0 C C C TEST PARAMETERS C IF((IRGE.LT.1).OR.(IRGE.GT.5))GOTO 9100 IF((IFUNC.LT.0).OR.(IFUNC.GT.2))GOTO 9100 IF((IARM .LT.0).OR.(IARM.GT.1)) GOTO 9100 C C SET REMOTE ENABLE ON BUS C CALL EXEC(100003B,1600B+LU0) GO TO 9000 90 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C CLEAR DVM C IDATA(1)=2HP C C SET TO PROPER DVM MO DE C INDEX=IFUNC+1 IDATA(2)=IMDE(INDEX) C C SET TO RANGE IRGE C IDATA(3)=2HG0+IRGE+2 C C SET ARMING C IDATA(4)=IARM1(IARM+1) C C PROGRAM DVM C CALL REIO(100002B,2000B+LU,IDATA,4,IDUMY,0) GO TO 9000 99 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C RETURN C RETURN C C ERROR RETURN C 9000 IERR= 9 GO TO 9900 9100 IERR=1 GO TO 9900 990 IERR = IAND(IREG,377B) + 11 9900 IERR(2) = 5 IERR(3) = 2HDV IERR(4) = 2HMS IERR(5) = 2HT END END$   09580-18134 2001 S C0122 &DCOPL              H0101 nASMB,R,L,C NAM DCOPL,7 09580-16134 REV.2001 791023 * *--------------------------------------------------------------- * * RELOC. 09580-16134 * SOURCE 09580-18134 * * M.KAESSNER REV.A 770301 * BOB RICHARDS 791023 (NAME CHANGE FROM DCVPL) * * HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * ENT DCOPL,XCOPL EXT .ENTR,EXEC,ISN,LUDV,ERROR * * A EQU 0 B EQU 1 SPC 2 * CALL DCOPL(U) * CALL XCOPL(LU,IERMS,U) * WHERE: * LU = LOGICAL UNIT OF THE 61XX * IERMS = 5 WORD ERROR MESSAGE BLOCK * IERMS(1) = 0 NO ERROR * = 3 POWER SUPPLY READ ERROR * IERMS(2-5) ARE ONLY SET ON ERROR * IERMS(2) = 5, THE CHARACTER COUNT * IERMS(3-5)= ASCII "DCOPL " * U = EIGHT ELEMENT INTEGER ARRAY. THE UNIT NUMBERS * WHICH HAVE CURRENT/VOLTAGE LIMITED FOLLOWED BY A "0" * ARE PLACED IN THIS ARRAY. IF ALL EIGHT UNITS * CURRENT/VOLTAGE LIMITED, THERE IS NO TRAILING "0". * * * * THIS DEVICE SUBROUTINE IS USED TO POLL THE 61XX BUSS TO * DETERMINE WHICH UNIT(S) HAVE CURRENT/VOLTAGE LIMITED. IT IS INTENDED * TO BE USED IN CONJUNCTON WITH THE TRAP SET ROUTINE, "DVINT". WHEN * A TRAP OCCURS ON THE LU OF THE 61XX BUSS, THIS WOULD BE THE FIRST CALL * IN THE TRAP RESPONSE SUBROUTINE. AFTER THE UNIT WHICH HAS CURRENT/ * VOLTAGE LIMITED HAS BEEN DETERMINED, THE POWER SUPPLY CAN BE TURNED * OFF. EXAMPLE: * * 5 DIM V(8) * 10 DIM U(8) * 20 TRAP 7 GOSUB 9000 * : * : * 100 LET V(1) = 6140 * 110 LET V(2) = 6130 * * : * * : * * 9000 CALL DCOPL(U(1)) * 9001 FOR I=1 TO 8 * 9002 IF U(I)=0 THEN 9015 * 9003 IF V(I)=6140 GOTO 9010 * 9004 CALL DCV(U(I),0.0,0.0) * 9005 PRINT"POWER SUPPLY #";U(I);" CURRENT LIMITED" * 9006 GOTO 9015 * 9007 REM LINES 9003,9006,9010,9011 NOT NEEDED IF NO DCS IS * 9008 REM CONFIGURED INTO THE SYSTEM. * 9010 CALL DCI(U(I),0.0,0.0) * 9011 PRINT"POWER SUPPLY #";U(I);" VOLTAGE LIMITED" * 9015 NEXT I * 9020 RETURN * * * SKP * * FRIENDLY VERSION * UNITS NOP DCOPL NOP JSB .ENTR DEF UNITS SPC 1 LDA .10 SET ERROR CODE STA ERBF IN THE ERROR BUFFER JSB ISN GET STATION DEF *+1 NUMBER STA STATN SPC 1 JSB LUDV GET LU OF 61XX DEF *+1+2 DEF STATN STATION NUMBER DEF .22 DEVICE TYPE "22" SZA,RSS IF LU=0 JMP ERR ERROR! STA LU SPC 1 JSB XCOPL CALL UN-FRIENDLY VERSION DEF *+1+3 DEF LU DEF ERBF DEF UNITS,I LDA ERBF CHECK FOR ERRORS SZA,RSS ANY? JMP DCOPL,I NO,EXIT SPC 2 ERR JSB ERROR CALL ERROR DEF *+1+2 DEF ERBF DEF ERCNT JMP DCOPL,I EXIT SKP * UN-FRIENDLY VERSION * LUN NOP ERAD NOP UNITZ NOP XCOPL NOP JSB .ENTR DEF LUN * * READ STATUS * LDA LUN,I CONFIGURE CONWD ADA B300 STA LU STORE FOR EXEC CALL JSB EXEC READ ONE WORD DEF *+1+4 FROM DRIVER DEF ICODE DEF LU DEF STATS DEF .1 JMP ER ERROR RETURN * * ջ CHECK UNITS * CLA STA ERAD,I NO MORE ERRORS NOW LDA .1 STA PTR INITIALIZE POWER SUPPLY COUNT LDA M8 STA CNT INITIALIZE LOOP COUNT LDB STATS GET STATUS WORD SLOOP CLA OUTPUT A ZERO INTO BUFFER STA UNITZ,I JUST IN CASE THIS IS THE LAST SLB CURRENT LIMITED? JMP WRTE YES,WRITE POWER # TO ARRAY NOCL RBR NO,POSITION NEXT BIT ISZ PTR INCREMENT POWER SUPPLY NUMBER ISZ CNT INCREMENT LOOP COUNT, DONR? JMP SLOOP NO, DO IT AGAIN! JMP XCOPL,I EXIT SPC 1 WRTE LDA PTR GET POWER SUPPLY'S NUMBER STA UNITZ,I STORE IN USER'S ARRAY ISZ UNITZ INCREMENT NEXT ADDRESS JMP NOCL GO BACK TO THE LOOP SPC 2 ER LDA .3 INITIALIZE ERROR NUMBER STA ERAD,I LDA ERAD GET ERROR BUFFER ADDRESS INA POINT TO COUNT LDB M4 STB CNT INITIALIZE COUNT LDB ERPTR INITIALIZE ADDRESS POINTER STB PTR ELOOP LDB PTR,I CONFIGURE ERMSG STB A,I INA BUMP DESTINATION ADDRESS ISZ PTR BUMP SOURCE ADDRESS ISZ CNT BUMP COUNTER, DONE? JMP ELOOP NO, LOOP. JMP XCOPL,I YES,EXIT! SKP * * CONSTANTS AND VARIBLES * LU NOP STATN NOP ERBF NOP BEGINNING OF ERROR BUFFER ERCNT DEC 5 NUMBER OF CHARACTERS ASC 3,DCVOL ERROR MESSAGE ERPTR DEF ERCNT POINTER TO ERMSG CNT NOP PTR NOP STATS NOP SPC 2 .1 DEC 1 .10 DEC 10 .22 DEC 22 .3 DEC 3 B300 OCT 300 M4 DEC -4 M8 DEC -8 ICODE OCT 100001 END END$ ?   09580-18136 2001 S C0122 &DSVSU              H0101 FTN4,L SUBROUTINE DSVSU(IUNIT,R,IT,DD1), +09580-16136 REV.2001 791023 C*********************************************************** C C RELOC. 09580-16136 C SOURCE 09580-18136 C C C R. UNTALAN 04 15 77 REV. A C 770901 REV. B C 790724 REV. C C BOB RICHARDS 791023 C C C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED,REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C C*********************************************************** C C C GENERAL C ------- C THE FOLLOWING DEVICE SUBROUTINE ALLOWS THE APPLICATION C PROGRAMMER TO PROGRAM ALL RANGES,TRIGGER MODE (EXCEPT FOR HLD/MNL), C AND DELAY. ENABLE REQUEST IS DISABLED, THAT IS (RQS) IS PROGRAM FOR 0. C THE 3437A IS PROGRAMMED TO OUTPUT PACKED(2-BYTE) FORMAT PER C READING TO ALLOW THE 3437A TO OPERATE AT MAXIMUM SPEED. C C C HARDWARE ENVIRONMENT: C --------------------- C C HP 21MX SERIES COMPUTER C HP 3437A SYSTEM VOLTMETER C HP 59310A/B INTERFACE BUS I/O KIT C C C OUTPUT BUFFER (10 WORDS) C ------------------------ C C WORD 1 = RANGE C WORD 2 = TRIGGER MODE C WORD 3 = PACKED FORMAT C WORD 4 = SRQ DISABLE C WORD 5 = ASCII S, (STORE COMMAND FOR SRQ CODE) C WORD 6 = ASCII D. (PREFIX FOR DELAY PARAMETER) C WORD 7 = XX WHERE X = ASCII NUMBER 0-9 C WORD 8 = XX C WORD 9 = XX C WORD 10= S (STORE COMMAND FOR DELAY) C C C************************************************************ DIMENSION IERMS(5) DATA IDT1,IDT2/9,43/ DATA IERMS/10,5,2HDS,2HVS,2HU / C C INTERFACE MODULE FOR THE 3437A SET UP DEVICE C SUBROUTINE C C IDT1=DEVICE TYPE NUM. FOR THE HPIB C IDT2=DEVICE TYPE NUM. FOR THE HP3437A SVM C ERROR DSVSU-10 MEANS LU#=0 OR STATION#=0 OR UNIT # INCORRECT C C IERMS=10 ISTN=ISN(DUMMY) LU2=LUDV(ISTN,IDT2,IUNIT) LU1=IBLU0(LU2) IF (ISTN.EQ.0.OR.LU1.EQ.0.OR.LU2.EQ.0) GO TO 500 CALL XSVSU(LU1,LU2,IERMS,IUNIT,R,IT,DD1) IF(IERMS(1))500,20,500 20 RETURN 500 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE XSVSU(LU1,LU2,IERMS,IUNIT,R,IT,DD1), +09580-16136 REV.2001 791023 C C*********************************************************** C THIS IS THE SETUP DEVICE SUBROUTINE FOR THE C HP3437A SYSTEM VOLTMETER C THE PARAMETERS HAVE THE FOLLOWING MEANING C C LU1=LU NUMBER OF HPIB CARD C LU2=LU NUMBER OF 3437A C IERR IS A 5 WORD ARRAY WITH IERR(1)= ERROR CODE WHERE: C C C 0=NO ERROR C 1= PARAMETER ERROR C C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9= I/O CALL REJECTED C 10= LU1 OR LU2 NOT ASSIGNED TO STATION C 11= DMA INPUT REQUEST PREMATURELY TERMINATED C 12=I/O DEVICE TIME OUT C 13=IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14= SRQ SERVICE ABORTED C 15= NON-EXISTENT ALARM PROGRAM C 16= ILLEGAL CONTROL REQUEST C 17= EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C R=VOLTAGE RANGE C .1 VOLT RANGE C 1 VOLT RANGE C 10 VOLT RANGE C C C IT=TRIGGER SOURCE C 1=INTERNAL C 2=EXTERNAL C C DD1= DELAY SETTING C 175 MICROSECONDS TO 999999 MICROSECONDS C C C C*********************************************************** DIMENSION IREG(2),IHP(4),IERMS(5) DIMENSION IRBUF(3),ITBUF(3) DIMENSION IOBUF(10),IEBUF(2) DIMENSION ITRBF(2),RNG(3),IBUF(1) z)C C EQUIVALENCE (REG,IREG,IAA),(IREG(2),IB) DATA IHP/5,2HHP,2HIB,2H / DATA IRBUF/2HR1,2HR2,2HR3/ DATA ITBUF/2HT1,2HT2/ DATA RNG/.1,1.0,10.0/ DATA IREN/1600B/ DATA IEBUF/2HE0/ C C ICNWD=0 IERMS=0 IASCU=30000B IASCL=60B IDTN=43 C C IF(R.LT..1.OR.R.GT.10)IERMS=1 IF(IT.LT.1.OR.IT.GT.2)IERMS=1 IF(DD1.LT.175.OR.DD1.GT.999999.)IERMS=1 C IF(IERMS.EQ.1)GO TO 9000 C IOL=10 C C*****FIND RANGE VALUE**** DO 200 I=1,3 IF(R.EQ.RNG(I))GO TO 300 200 CONTINUE IERMS=1 GO TO 9000 C*****RANGE PARAMETER***** 300 IOBUF(1)=IRBUF(I) C C C*****TRIGGER PARAMETER***** IOBUF(2)=ITBUF(IT) C C C*****PACKED FORMAT CODE ***** IOBUF(3)=2HF2 C C C*****NO SRQ******* IOBUF(4)=2HE0 IOBUF(5)=51454B C C*****PROCESS DELAY PARAMETER******** C C*****DELAY PARAMETER CODE= D.XXXXXX0S******* IOBUF(6)=2HD. C C C****FIRST DGT**** RDD1=(DD1/100000.) IDD1=INT(RDD1) IX1=(IDD1*2**8)+30000B RDD1=IDD1 C C C***2ND DGT*** RDD2=(DD1-(RDD1*100000.))/10000. IDD2=INT(RDD2) IX2=IDD2+60B RDD2=IDD2 C C C***SAVE 1ST &2ND DGT*** IOBUF(7)=IOR(IX1,IX2) C C C***3RD DGT*** RDD3=(DD1-(RDD1*100000.)-(RDD2*10000.))/1000. IDD3=INT(RDD3) IX3=(IDD3*2**8)+30000B RDD3=IDD3 C C C****4TH DGT**** RDD4=(DD1-(RDD1*100000.)-(RDD2*10000.)-(RDD3*1000.))/100. IDD4=INT(RDD4) IX4=IDD4+60B RDD4=IDD4 C IOBUF(8)=IOR(IX3,IX4) C C***5TH DGT**** FDD5=(RDD1*100000.)+(RDD2*10000.)+(RDD3*1000.)+(RDD4*100.) RDD5=(DD1-FDD5)/10. IDD5=INT(RDD5) IX5=(IDD5*2**8)+30000B RDD5=IDD5 C C C****6TH DGT**** RDD6=DD1-(FDD5+(RDD5*10.)) IDD6=INT(RDD6) IX6=IDD6+60B IOBUF(9)=IOR(IX5,IX6) C C C****ASCII S (FOR STORE)** C IOBUF(10)=92HS C C C**SET BUS TO REMOTE** CALL EXEC(100003B,1600B+LU1) GOTO 700 C 400 CALL ABREG(IAA,IB) IF(IB.LT.0)GO TO 910 C C C****OUTPUT ASCII DATA*** CALL EXEC(100002B,LU2,IOBUF,10,IDUMY,0) GO TO 700 C 550 CALL ABREG(IAA,IB) IF(IB.LT.0)GO TO 910 C C RETURN C C C*****ERRORS***** C C 700 IERMS=9 GO TO 9000 C 910 IERMS=IAND(IREG,377B)+11 9000 IERMS(2)=5 IERMS(3)=2HDS IERMS(4)=2HVS IERMS(5)=2HU RETURN END END$ Z  09580-18137 2001 S C0122 &DSVMU              H0101 ~FTN4,L SUBROUTINE DSVMU(IUNIT,ABUF,IN), +09580-16137 REV.2001 791113 C************************************************************** C C RELOC. 09580-16137 C SOURCE 09580-18137 C C R. UNTALAN 4 15 77 REV. A C R. UNTALAN 770901 C R. UNTALAN 790112 C R. UNTALAN 790727 C BOB RICHARDS 791113 C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C C************************************************************** C C GENERAL C ------- C THE FOLLOWING DEVICE SUBROUTINE WILL ALLOW THE APPLICATION C PROGRAMMER TO MAKE MEASUREMENTS WITH THE 3437A. IT WILL PROGRAM C THE DESIRED NUMBER OF READINGS ALONG WITH THE MODE OF DATA C TRANSFER. C C HARDWARE ENVIRONMENT: C --------------------- C C 21MX SERIES COMPUTER C HP 3437A SYSTEM VOLTMETER C HP 59310A/B INTERFACE BUS I/O KIT C C C BRANCH AND MNEMONIC TABLE ENTRIES C --------------------------------- C DSVMU(I,RVA,I), OV=XX, ENT=DSVMU, FIL=%DSVMU C C C BUFFER FOR NUMBER OF READINGS (3 WORDS) C --------------------------------------- C C WORD 1 =NX WHERE ASCII N IS THE PREFIX FOR NO. OF READINGS. C X = ASCII NUMBER 0-9 C WORD 2 =XX C WORD 3 =XS ASCII S = STORE COMMAND C C C INPUT WORD FORMAT C ----------------- C C 8----DIO------1 C 1RST BYTE 1 0 1 0 0 0 1 1 C --- - - ------- C !R !S!M! 2SD ! C !M !B!S! ! C !D! C C 2ND BYTE 0 0 1 0 0 1 0 0 C  ! 3SD ! LSD ! C C RM= RANGE MULTIPLIER C SB= SIGN BIT C MSD= MOST SIGNIFICANT DIGIT C 2SD= SECOND SIGNIFICANT DIGIT C 3SD= THIRD SIGNIFICANT DIGIT C LSD= LEAST SIGNIFICANT DIGIT C C EACH READING IS FIRST CONVERTED TO ASCII THEN IT IS C CONVERTED TO A FLOATING POINT NUMBER SO THAT IT CAN C BE USED BY BASIC. C THE DATA IS TRANSFERED DIRECTLY TO THE CALLING PROGRAM C VIA SAM . C C*************************************************************** DIMENSION IERMS(5) DIMENSION ABUF(250) DATA IDTB/9/ DATA IDTN/43/ DATA IERMS/10,5,2HDS,2HVM,2HU / C C C INTERFACE MODULE FOR HP3437A MEASUREMENT DEVICE C SUBROUTINE. C C IERMS=10 ISTN=ISN(DUMMY) LU2=LUDV(ISTN,IDTN,IUNIT) LU1=IBLU0(LU2) IF(ISTN.EQ.0.OR.LU1.EQ.0.OR.LU2.EQ.0)GO TO 500 CALL XSVMU(LU1,LU2,IERMS,IUNIT,ABUF,IN) C C IF(IERMS)500,20,500 20 RETURN 500 CALL ERROR(IERMS,IERMS(2)) C C C C C C RETURN END C C SUBROUTINE XSVMU(LU1,LU2,IERMS,IUNIT,ABUF,IN), +09580-16137 REV.2001 791113 C************************************************************** C THIS THE MEASUREMENT DEVICE SUBROUTINE FOR THE 3437A C SVM. THE PARAMETERS IN THE CALLING SEQUENCE C HAVE THE FOLLOWING MEANING: C C LU1= LU NUMBER OF HPIB CARD C LU2= LU NUMBER OF 3437A C C IERR IS A 5 WORD ERROR ARRAY WITH IERR(1) = ERROR CODE WHERE: C C 0=NO ERROR C 1=PARAMETER ERROR C 4= BAD DATA FROM 3437A C C C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9= I/O CALL REJECTED C 10= LU1 OR LU2 NOT ASSIGNED TO STATION C 11= DMA INPUT REQUEST PREMATURELY TERMINATED C 12= I/O DEVICE TIME OUT C 13= IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14= SRQ SERVICE ABORTED C 15= NON-EXISTENT ALARM PROGRAM C 16= ILLEGAL CONTROL REQUEST C 17= EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C 2 C C ABUF=NAME OF BUFFER C C IN=NUMBER OF READINGS C MAXIMUM NUMBER OF READINGS IS 250 C C C C*************************************************************** DIMENSION IERMS(5) DIMENSION IOBUF(3),IASBF(6) DIMENSION IREG(2),IBUF(250) DIMENSION ABUF(250) C C EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C C IDTN=43 IERMS=0 IPRAM=37000B IERR=1 ICNWD=2500B IASBF(1)=10. C C IF(IN.GT.250 .OR. IN.LE.0)IERMS=1 IF(IERMS.EQ.1)GOTO 9000 C C C**CONFIGURE DRIVER WORD (DMA TRNSFER)*** C REG=EXEC(3,2500B+LU2,IPRAM) C C C C****PICK UP NUMBER OF READINGS ****** C 705 IN1=IN/1000 IX1=IN1+60B IOBUF(1)=IOR(47000B,IX1) C C IN2=(IN-IN1*1000)/100 IX2=(IN2*2**8)+30000B C C C C IN3=(IN-((IN1*1000)+(IN2*100)))/10 IX3=IN3+60B C C IN4=IN-((IN1*1000)+(IN2*100)+(IN3*10)) IX4=(IN4*2**8)+30000B C C IOBUF(2)=IOR(IX2,IX3) IOBUF(3)=IOR(IX4,123B) C C C******OUTPUT NUMBER OF READINGS******** C C CALL EXEC(100002B,LU2,IOBUF,3,IDUMY,0) GO TO 700 C 260 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 900 C C***CONFIGURE DRIVER WORD**** C C*****READ DATA FIXED BINARY **** C CALL EXEC(100001B,100B+LU2,IBUF(1),IN,IDUMY,0) GOTO 700 C 280 CALL ABREG(IA,IB) C C C IF (IB.LT.0)GO TO 900 I=1 J=1 JEND=177777B C C C C C****SAVE MSD &LSD **** C 100 IRDNG=IAND(IBUF(I),17777B) C C SAVE RANGE AND SIGN C IR=IAND(IBUF(I),140000B) ISGN=IAND(IBUF(I),20000B) C C C ***CONVERT BINARY DATA TO ASCII**** C C SIGN C C IF(ISGN.EQ.0)ISGN1=26400B IF(ISGN.NE.0)ISGN1=25400B C***IF OVERLOAD (1999) CONVERT TO (9999) *** IF (IRDNG.EQ.14631B)IDGT1=71B IF(IRDNG.EQ.14631B)GO TO 800 C C 1RST DGT C IDGT1=IAND(IRDNG,10000B) IDGT1=IOR(IDGT1/d2**12,60B) C 800 IASBF(2)=IOR(ISGN1,IDGT1) C C C 2ND DGT C IDGT2=IAND(IRDNG,7400B) IDGT2=IOR(IDGT2/2**8,60B) C IASBF(3)=IOR(27000B,IDGT2) C C 3RD DGT C IDGT3=IAND(IRDNG,360B) IDGT3=IOR(IDGT3*2**4,30000B) C C C 4TH DGT C IDGT4=IAND(IRDNG,17B) IDGT4=IOR(IDGT4,60B) C C IASBF(4)=IOR(IDGT3,IDGT4) C C IEX=42400B JSGN=53B IF(IR.EQ.40000B)JSGN=55B C C C****SAVE E+/- ****** C IASBF(5)=IOR(IEX,JSGN) C IMPY=30061B IF(IR.EQ.140000B)IMPY=30060B C C IASBF(6)=IMPY IF (IRDNG.EQ.14631B)IASBF(6)=31470B C C C******CONVERT ASCII TO FLOATING POINT **** C IREG=A2F(IASBF,1,10,ABUF(I)) IF(IREG)650,600 600 IF(I.EQ.IN)GO TO 320 I=I+1 GO TO 100 C 320 RETURN C**ERRORS***** C 650 IERMS=4 GOTO 9000 700 IERMS=9 GO TO 9000 C 900 IERMS=IAND(IREG,377B)+11 C 9000 IERMS(2)=5 IERMS(3)=2HDS IERMS(4)=2HVM IERMS(5)=2HU RETURN END END$ O  09580-18138 A S 0122 &IBLU0 HP-IB LU FOR SUBCH. 0             H0101 {ASMB,R,L,C NAM IBLU0,7 09580-16138 REV.A 770401 * *--------------------------------------------------------------- * * RELOC. 09580-16138 * SOURCE 09580-18138 * * L.DWYER REV.A 770401 * * HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * *--------------------------------------------------------------- * * * * DESCRIPTION: * * THIS IS A FORTRAN CALLABLE INTEGER FUNCTION USED TO RETURN THE LU NUMBER * ASSIGNED TO EQT SUBCHANNEL 0 FOR ANY OTHER LU NUMBER ON THE SAME EQT. * * IT'S USE COULD BE TO FIND THE LU NUMBER OF AN HPIB CONTROL CARD * SO A REMOTE ENABLE CONTROL CALL COULD BE ISSUED TO THAT CARD. * * * PARAMETERS: * * THERE IS ONE INTEGER PARAMETER PASSED TO THE FUNCTION. * THIS PARAMETER IS THE AUTO-ADDRESS LU NUMBER OF AN HPIB DEVICE. * THERE IS ONE INTEGER PARAMETER RETURNED BY THE FUNCTION. * THIS PARAMETER IS THE LU NUMBER FOR SUBCHANNEL 0 OF THE * EQT OF THE AUTO-ADDRESSED LU NUMBER. * * * ERRORS: * * THIS FUNCTION HAS ONE ERROR RETURN. IF NO LU IS FOUND CORRESPONDING TO * SUBCHANNEL-0 OF THE EQT, OR THE PARAMETER LU IS OUTSIDE THE DRT RANGE, * ZERO IS RETURNED. * * * * CALLING SEQUENCE: * * FORTRAN CALLING SEQUENCE: * . * . * . *C SET THE LU NUMBER OF AN HPIB AUTO-ADDRESS DEVICE * LU1=33 *C GET THE NON-AUTO-ADDRESS LU NUMBER *C * LU0=IBLU0(LU1) *C *C CHECK FOR ERROR * IF(LU0.EQ.0) GOTO 900 *C DO AN HPIB REMOTE ENABLE * CALL EXEC(100003B,1600B+LU0) *C ERROR RETURN * GOTO 900 *C NORMAL kRETURN * . * . * . * * HED IBLU0 * ASSEMBLER CALLING SEQUENCE: * . * . * EXT IBLU0,EXEC * . * LDA =D33 GET THE AUTO-ADDRESS LU NUMBER * STA LUNUM SAVE IT. * JSB IBLU0 JUMP SUB TO FUNCTION. * DEF *+2 * DEF LUNUM AUTO-ADDRESS LU NUMBER. * SZA,RSS ERROR? * JMP ERPNT YES, PROCESS ERROR * ADA =B1600 NO, ADD THE REMOTE ENABLE COMMAND. * STA LUN00 SAVE THE SUBCHAN-0 LU NUMBER. * JSB EXEC * DEF *+3 * DEF CNWRD * DEF LUN00 * JMP ERPNT ERROR RETURN. ** NORMAL RETURN. * . * . *LUN00 NOP TEMP STORAGE FOR HPIB LU NUMBER *CNWRD OCT 100003 EXEC CONTROL COMMAND *LUNUM NOP TEMP STORAGE FOR AUTO-ADDRESS DEVICE LU NUM * SKP ENT IBLU0 EXT .ENTR SPC 1 LU NOP IBLU0 NOP JSB .ENTR DEF LU LDB LU,I GET THE LU NUMBER SSB NEGATIVE? JMP ERR YES SZB,RSS ZERO? JMP ERR YES LDA 1653B GET THE DRT TABLE LENGTH CMA,INA NEGATE STA LUMAX AND SAVE IT. ADB =D-1 CHECK FOR LU ADA B OUTSIDE OF RANGE. SSA,RSS OUT? JMP ERR YES LDA 1652B GET THE DRT POINTER STA DRT AND SAVE IT. ADB A POINT TO DRT ENTRY OF LU LDA B,I AND GET THE ENTRY. AND =B77 MASK FOR EQT SZA,RSS EQT ASSIGNED? JMP ERR NOPE. STA EQT THEN SAVE IT. CLB,INB B-REG HAS CURRENT LU NUMB. SPC 1 AGAIN LDA DRT,I GET THE NEXT DRT ENTRY. AND =B174077 MASK FOR EQT. CPA EQT EQT'S MATCH? JMP BINGO YES ISZ DRT BUMP LU POINTER, ISZ B LU COUNTER, ISZ LUMAX AND END OF LIST COUNT. SKIP ON END. Y JMP AGAIN ELSE...TRY, TRY AGAIN. SPC 1 ERR CLB OOPS...ERROR RETURN. BINGO LDA B RETURN THE JMP IBLU0,I FOUND LU NUMBER. SPC 2 LUMAX NOP DRT NOP EQT NOP A EQU 0 B EQU 1 END 0  09580-18270 1926 S C0122 &NASU 3570 DVR37             H0101 FTN4,L C C------------------------------------------ C C RELOCATABLE 09580-16270 C SOURCE 09580-18270 C C V.POVIO REV.A 6-21-77 C R.RICHARDS REV.B 1-3-79 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1977 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE ORIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------ C C HP 3570A NETWORK ANALYZER C ------------------------- C C GENERAL C ------- C C THE FOLLOWING DEVICE SUBROUTINE ARE USED C TO PROGRAM THE HP 3570A NETWOK ANALYZER. C C NOTE: THIS DEVICE SUBROUTINE IS FOR A C STANDARD INSTRUMENT AND DOES C NOT COVER AN OPTION 2,3 C C C BRANCH AND MNEMONIC TABLE ENTRIES. C ---------------------------------- C C NASU(I,I,I,I,I), OV=XX, ENT=NASU, FIL=%NASU C NAMU(I,RV,RV), OV=XX, ENT=NAMU, FIL=%NASU C C------------------------------------------ C SUBROUTINE NASU(IUNIT,IV,IBW,IAF,IPR), +09580-16270 1926 790103 DIMENSION IERMS(5) DATA IERMS /10,5,2HNA,2HSU,2H / C C------------------------------------------ C C NASU(IUNIT,IV,IBW,IAF,IPR) C C WHERE: C C IUNIT = UNIT # C C IV = MAX/REF INPUT VOLTAGE C 1 = 0DBM C 2 = .1 V C 3 = 1V C C IBW = BANDWITH C 1 = 10 HZ C 2 = 100 HZ C 3 = 3 KHZ C C IAF = AMPLITUDE FUNCTION C 1 = A C 2 = B C 3 = B-A C C IPR = PHASE REF C 1 = A C 2 = -A C C----------------------------------------- C C C FIN LU # C ISTN = ISN(DUMMY) IERMS = 10 LU1 = LUDV(ISTN,12,IUNIT) N LU0 = IBLU0(LU1) IF(LU0 .LE. 0 .OR. LU1 .LE. 0)GOTO 800 C C CALL SUBROUTINE XASU C CALL XASU(LU0,LU1,IERMS,IUNIT,IV,IBW,IAF,IPR) IF(IERMS)800,20,800 20 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C----------------------------------------------- C SUBROUTINE XASU(LU0,LU1,IERMS,IUNIT,IV,IBW,IAF,IPR), +09580-16270 1926 790103 DIMENSION IERMS(5),IREG(2),IBWA(3),IOBUF(4) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA IBWA /112B,111B,113B/ C C----------------------------------------------- C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LU0 = LU # OF HPIB BUSS. C LU1 = LU # OF HP3570. C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C 3 = INCORRECT DATA FROM NAMU CALL C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LU0 OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C------------------------------------------------- C C CHECK PARAMETERS C IERMS = 1 IF(IV .LT. 1 .OR. IV .GT. 3)GOTO 9900 IF(IBW .LT. 0 .OR. IBW .GT. 3)GOTO 9900 IF(IAF .LT. 1 .OR. IAF .GT. 3)GOTO 9900 IF(IPR .LT. 1 .OR. IPR .GT. 2)GOTO 9900 C C SET UP OUTPUT BUFFER C IOBUF(1)=IV+104B IOBUF(2)=IBWA(IBW) IOBUF(3)=IAF+100B IOBUF(4)=116B-IPR C C REMOTE ENABLE C CALL EXEC(100003B,1600B+LU0) GOTO 9000 131 CALL ABREG(IA,IB) IF(IB .LT. 0)GOTO 8500 C C OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF,4,IDUMY,0) GOTO 9000 181 CALL ABREG(IA,IB) IF(IB .LT. 0)GOTO 8500 C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 9900 9000 IERMS=9 9900 IERMS(2)=5 IERMS(3)=2HNA IERMS(4)=2HSU IERMS(5)=2H RETURN END C C-------------------------------------------- C SUBROUTINE NAMU(IUNIT,AMP,RPHASE), +09580-16270 1926 790103 DIMENSION IERMS(5) DATA IERMS/10,5,2HNA,2HMU,2H / C C-------------------------------------------- C C NAMU(IUNIT,AMP,RPHASE) C C WHERE: C C IUNIT = UNIT # C C AMP = AMPLITUDE READING RIGHT HAND DISPLAY C C RPHASE = PHASE/DELAY READING LEFT HAND DISPLAY C C--------------------------------------------- C FIND LU # C IERMS=10 ISTN=ISN(DUMMY) LU1=LUDV(ISTN,12,IUNIT) LU0=IBLU0(LU1) IF(LU0 .LE. 0 .OR. LU1 .LE. 0) GOTO 800 C C CALL SUBROUTINE C CALL XAMU(LU0,LU1,IERMS,IUNIT,AMP,RPHASE) IF(IERMS)800,20,800 20 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C---------------------------------------- C SUBROUTINE XAMU(LU0,LU1,IERMS,IUNIT,AMP,RPHASE), +09580-16270 1926 790103 DIMENSION IERMS(5),IREG(2),IREAD(9) DIMENSION IOBUF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C IERMS=1 C C SET UP OUTPUT BUFFER C IOBUF(1)=117B IOBUF(2)=54B C C OUTPUT ASCII STRING TO INSTRUMENT C 7000 CALL REIO(100002B,LU1,IOBUF,2,IDUMY,0) GOTO 9000 97 CALL ABREG(IA,IB) IF(IB .LT. 0)GOTO 8500 C C READ DATA C CALL REIO(100001B,LU1,IREAD(2),8,IDUMY,0) GOTO 9000 98 CALL ABREG(IA,IB) IF(IB .LT. 0)GOTO 8500 C C CHANGE ASCII TO FLOATING POINT C IREAD(1)=16 C IERMS=3 IREG=A2F(IREAD,2,7,AMP) IF(IREG .LT. 0)GOTO 8000 IF((IAND(IREAD(2),2000B)) .EQ. 2000B) AMP=AMP*(-1.0) C IREG=A2F(IREAD,11,15,RPHASE) IF(IREG .LT. 0) GOTO 8000 IF((IAND(IREAD(6),2000B)) .EQ. 2000B)RPHASE=RPHASE*(-1.0) C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HNA IERMS(4)=2HMU IERMS(5)=2H RETURN END END$   09580-18277 1926 S C0122 &RFSU 8672 DVR37             H0101 FTN4,L SUBROUTINE RFSU(IUNIT,AMHZ,AKHZ,ALEVL), +09580-16277 1926 790316 C------------------------------------------------------------------- C C RELOC. 09580-16277 C SOURCE 09580-18277 C C R.UNTALAN MARCH 16,1979 C C C HP 92425A TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,4,2HRF,2HSU / IERMS = 10 ISTN = ISN(DUM) LU = LUDV(ISTN,19,IUNIT) LUIB=IBLU0(LU) IF(LU.LE.0.OR.LUIB.LE.0) GOTO 800 10 CALL XFSU(LUIB,LU,IERMS,IUNIT,AMHZ,AKHZ,ALEVL) IF(IERMS.NE.0) GOTO 800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE XFSU(LUIB,LRFU,IERR,IUNIT,AMHZ,AKHZ,ALEVL), +09580-16277 1926 790316 C C C C C THIS DEVICE SUBROUTINE PROGRAMS THE 8672A C SYNTHESIZED SIGNAL GENERATOR TO A DESIRED FREQUENCY C AND OUTPUT LEVEL.. HOWEVER, IT IS NECESSARY TO MAKE C ANOTHER CALL (RFMOD) TO ESTABLISH RF(ON/OFF),NORMAL OR C OVERANGE,AND LEVELING CONTROL. C C C ENTER RFSU(I,R,R,R) IN BASIC TABLES C C C C CALL XFSU(LRFU,IERR,MHZ,KHZ,LEVL) C WHERE: C LRFU = LU 0F HP8672A SYNTH. SIG. GEN C C MHZ = FREQUENCY IN MEGAHERTZ C 2000 MHZ TO 18600 MHZ C C KHZ = FREQUENCY LOHERTZ C -999,999 KHZ TO +999,999 KHZ C C LEVL = OUTPUT LEVEL IN DBM C +3DBM TO -120 DBM C C C NOTE:"* TOTAL FREQUECY SETTING IS EQUAL TO THE ALGEBRAIC SUM C OF MHZ AND KHZ. EXAMPLE : MHZ=2010 AND KHZ=-9,998 C THEN TOTAL FREQUENCY SETTING EQUAL 2,000,002 KHZ. C C C NOTE: TO PROGRAM UNIT TO LOCAL SET MHZ AND KHZ TO ZERO. C EXAMPLE: CALL RFSU(U,0,0,L) C C C IERR = 5 ELEMENT ERROR ARRAY C IERR(1) = ERROR CODE C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION. C 11 - DMA INPUT REQUEST PREMATURELY TERMINATED C 12 - I/O DEVICE TIME OUT C 13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 - SRQ SERVICE ABORTED C 15 - NON-EXISTENT ALARM PROGRAM C 16 - ILLEGAL CONTROL REQUEST C 17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERR(2) - IERR(4) = DEVICE SUBROUTINE NAME C C C DIMENSION IERMS(5),ILBUF(3),MSTR(10),KSTR(10),IFREQ(10) DIMENSION IERR(5),ISTR(4),IREG(2),ICBFR(3),IALRM(5) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) DATA IALRM/5,2HDV,2HIN,2HT / C C C C DISABLE (SRQ) ALARM SERVICE C CALL SRQ(LRFU,17) C C **INITIALIZE ERROR CODE IERR=0 C C C CHECK IF LOCAL SELECTED C IF(AMHZ+AKHZ.NE.0.) GOTO 111 C C C SET UNIT TO LOCAL CONTROL C C OUTPUT CODE UNL,UNT,LISTEN ADDRESS AND GTL C C JCNT=0 C C DO A DUMMY CALL TO 8672 C TO UPDATE EQT WORD 4 C CALL EXEC(100002B,10000B+LRFU,IFREQ,JCNT,IDUMY,0) GOTO 8800 C C C PICK UP SUBCHANNEL # FROM EQT WORD 4 C AND DETERMINE ASCII LISTEN ADDRESS C 222 ICODE=13 CALL EXEC(ICODE,LRFU,ISTA1,ISTA2,ISTA3) C ISUB=IAND(3700B,ISTA2)*4B ISUB=ISUB+20000B C ICBFR(1)=2H-? ICBFR(2)=ISUB+1 C C CALL EXEC(100002B,10000B+LUIB,IFREQ,JCNT,ICBFR,2) GOTO 8800 1000 UCALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8900 C C GOTO 800 C C C C C CHECK PARAMETERS 111 IF(AMHZ.LT.2000.0.OR.AMHZ.GT.18599.0) GOTO 8000 IF(ABS(AKHZ).GT.999.999E3) GOTO 8000 IF(ALEVL.LT.-120.0 .OR. ALEVL .GT. 3.0) GOTO 8000 C C C C C C C BLANK OUTPUT BUFFER C 5 DO 10 I=1,10 IFREQ(I)=2H MSTR(I)=2H 10 KSTR(I)=2H ISBFR=0 C Q1000=1000 MHZ1=INT(AMHZ) BKHZ1=FLOAT(MHZ1) FKHZ1=(Q1000*AMHZ)-(Q1000*BKHZ1) MHZ2=INT(AKHZ/Q1000) CMHZ2=FLOAT(MHZ2) FKHZ2=AKHZ-(CMHZ2*Q1000) C C C SET PREFIX "Q" FOR 1GHZ RANGE IFREQ(1)=2H Q C C CALL PSUM(MHZ1,FKHZ1,MHZ2,FKHZ2,MHZS,FKHZS) C C C CHECK IF 18,600,000 KHZ< TOTAL FREQ.<= 2000 KHZ C IF(MHZS.GE.18600) GOTO 8000 IF (MHZS.LT.2000) GOTO 8000 C C C CHECK IF FREQUENCY > 10GHZ ,IF SO THEN CHANGE PREFIX TO "P" C IF(MHZS.GE.10**4)IFREQ(1)=2H P C C C CONVERT MHZS AND FKHZS TO ASCII AND STORE IT IN OUTPUT BUFFER C IKHZS=INT(FKHZS) C C CALL ASCII(MSTR,MHZS) CALL F2A(FKHZS,KSTR) C C C SET INDEX COUNTER M=4 IF(MHZS.LT.10**4)M=3 C C DO 50 I=2,M IFREQ(I)=MSTR(I) 50 IFREQ(I-1+M)=KSTR(I) C C C INSERT ASCII "U" (100KHZ RANGE) IF NECESSARY C IF(M.EQ.4) IFREQ(4)=IFREQ(4)+125B C C KFREQ=IFREQ(2+M) C C IF(FKHZS.GE.100.)GOTO 70 C C C INSERT LEADING ZERO IN HUNDREDS PLACE AND TENS PLACE C C IFREQ(2+M)=(KFREQ/2**8)+30000B IFREQ(3+M)=KFREQ*2**8 IF(FKHZS.GE.10.) GOTO 70 IFREQ(2+M)=30060B IFREQ(3+M)=IAND(KFREQ,177400B) C C C CONVERT DBM SETTING TO EQUIVALENT ATTENUATION C 70 L=ABS(ALEVL-3.) C C C C C C C DETERMINE PROPER 10DB AND 1DB STEP ATTENUATOR C C OUTPUT PROGRAMMED PROGRAMMED C LEVEL 10DB ATTEN. 1DB ATTEN. C ------------------ --------------- ------------  C 3DBM TO -10DBM 0 0,1,2,3...9,:,;,<,= C -11DBM TO -20DBM 1 4,5,6...9,:,;,<,= C -21DBM TO -30DBM 2 4,5,6...9,:,;,<,= C . . . C . . . C . . . C . . . C -91DBM TO -100DBM 9 4,5,6...9,:,;,<,= C -101DBM TO -110DBM : (10) 4,5,6...9,:,;,<,= C -111DBM TO -120DBM ; (11) 4,5,6...9,:,;,<,= C C ------------------------------------------------------- C DO 100 I=1,12 MAX=(I*10)+3 IF(L.LE.MAX) GOTO 200 100 CONTINUE 200 IFACT=I-1 ITENS=IFACT+60B ILBUF(1)=45400B+ITENS IUNITS=L-(IFACT*10) ILBUF(2)=46060B+IUNITS C C C C **TRANSFER LEVEL SETTING INTO OUTPUT BUFFER C IFREQ(4+M)=ILBUF(1) IFREQ(5+M)=ILBUF(2) IFREQ(3+M)=2HZ1 C C PROGRAM REMOTE ENABLE C 300 CALL EXEC(100003B,1600B+LUIB) GOTO 8800 600 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8900 C C C OUPUT FREQUENCY AND LEVEL SETTING C CALL REIO(100002B,2000B+LRFU,IFREQ(1),10,IDUMY,0) GOTO 8800 700 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8900 C C C ARM SERVICE REQUEST(SRQ) C CALL SRQ(LRFU,16,IALRM) C C C NORMAL EXIT C 800 RETURN C C C C ERROR EXIT C C 8000 IERR=1 GOTO 9000 C 8800 IERR=9 GOTO 9000 8900 IERR=IAND(IREG,377B)+11 9000 IERR(2)=4 IERR(3)=2HRF IERR(4)=2HSU IERR(5)=2H RETURN END C C C C SUBROUTINE PSUM(MHZ1,FKHZ1,MHZ2,FKHZ2,MHZS,FKHZS), +09580-16277 1926 790316 C PSUM: (DOUBLE) PRECISION SUM (OR DIFFERENCE) C C************************************************* C* C* C* SUBROUTINE PSUM CALCULATES THE DOUBLE-PRECISION SUM C* (MHZS,FKHZS) OF TWO DOUBLE-PRECISION FREQUENCIES, C* (MHZ1,FKHZ1) AND (MHZ2,FKHZ2). ONE FRGEQUENCY MAY BE C* NEGATIVE (E.G. BOTH PARTS NEGATED) TO ALLOW SUM TO C* ALSO PERFORM SUBTRACTION. THE SUM MUST BE POSITIVE, C* HOWEVER. C* C* C********************************************************* C C C C C **** DEFINE DECIMAL CONSTANT. C D1000=1000 C C **** CALCULATE SUM C MHZS=MHZ1+MHZ2 FKHZS=FKHZ1+FKHZ2 C C C **** TEST IF CARRY NEEDED C IF (FKHZS-D1000)600,500 C C C **** GENERATE CARRY C 500 MHZS=MHZS+1 FKHZS=FKHZS-D1000 RETURN C C C **** IS FKHZS NEGATIVE? C 600 IF (FKHZS)700,9000 C C C **** GENERATE CARRY C 700 MHZS=MHZS-1 FKHZS=D1000+FKHZS C C 9000 RETURN END END$   09580-18279 2001 S C0122 &RFOSO              H0101 zFTN4,L SUBROUTINE RFOSO (IUN,RMHZ,RKHZ,RLEVL), +09580-16279 REV.2001 791023 C C*********************************************** C C RELOCATABLE 09580-16279 C SOURCE 09580-18279 C C ROSEMARY MCNALLY 8-31-77 C BOB RICHARDS 791023 C C*********************************************** C C !==================================================! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !--------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT PACKARD ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE COPY ! C ! MAY BE MADE AND RETAINED BY THE USER FOR ARCHIVE ! C ! PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C !==================================================! C C HP 8660A SYNTHESIZED SIGNAL GENERATOR C ------------------------------------- C C GENERAL C ------- C C THE FOLLOWING DEVICE SUBROUTINE IS USED C TO PROGRAM THE HP 8660A SYNTHESIZED SIGNAL C GENERATOR. C C HARDWARE REQUIRED C ----------------- C A. INSTRUMENT/OPTIONS: 8660A C B. I/O CARD: 59310-60101 C C. CABLE: 59310-60002 C C ADDRESS/JUMPER CONFIGURATION C ---------------------------- C I/O CARD JUMPER POSITIONS C C SW1 - ALL OFF (OPEN) C SW2 - 1=0,2=0,3=0,4=0,5=1 C 6=REN,7=ICF,8=CNX C W1 - OUT C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C RFOSO(I,R,R,R), OV=XX, ENT=RFOSO, FIL=%RFOSO C DIMENSION IERMS(5) C C DEVICE TYPE #26 C DATA IDTN/26/ C C ERROR MNEMONIC C DATA IERMS/10,5,2HRF,2HOS,2HO / C C UNASSIGNED STATION OR LU# ERROR C IERMS=10 ISTN=ISN(DUMY) LUSG=LUDV(ISTN,IDTN,IUN) LUIB=IBLU0(LUSG) IF(LUSG.LE.0.OR.LUIB.LE.0)GOTO 1000 C C "X" ENTRY POINT C CALL XFOSO(LUIB,LUSG,IERMS,IUN,RMHZ,RKHZ,RLEVL) IF(IERMS.NE.0)GOTO 1000 RETURN C C ERROR EXIT C 1000 CALL ERROR(IERMS,IERMS(2)) RETURN END C********************************************************************* SUBROUTINE XFOSO(LUIB,LUSG,IERR,IUN,RMHZ,RKHZ,RLEVL), +09580-16279 REV.2001 791023 C********************************************************************** C C C RFOSO(IUN,RMHZ,RKHZ,RLEVL) C C WHERE: C C IUN= SELECTED UNIT NUMBER C RMHZ = MEGAHERTZ C 0 -- 2600 C RKHZ = KILLOHERTZ C -1000 TO +1000 C RLEVL = ATTENUATION IN DBM C w-146 TO +13 C C*********************************************************************** C DIMENSION LBUF(10), IASC(3), IASC1(4), IASC2(3), IASC3(3), - IERR(5), IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DOUBLE PRECISION FREQ, F, N, L C C 1ST CHARACTER SENT IS FALSE ADDRESS "/" C DATA LBUF(1) / 2H / / C C C C ZERO BUFFERS C DO 11 I= 1,3 IASC1(I) = 0 IASC2(I) = 0 11 IASC3(I) = 0 IASC1(4) = 0 C C BLANK OUTPUT BUFFER C DO 1 I=1,10 1 LBUF(I)=2H C C CHECK FOR ERRORS C IERR=0 IF((RMHZ .LT. 0.0) .OR. (RMHZ .GT. 2600.0)) GOTO 100 IF(RKHZ .LT. -1000.0 .OR. RKHZ .GT. 1000.0) GOTO 100 IF(RLEVL .LT. -146.0 .OR. RLEVL .GT. 13.0)GOTO 100 IF((RMHZ .EQ. 0.0) .AND. (RKHZ .EQ. 0.0))GOTO 100 C C ADD RMHZ & RKHZ PARAMETERS C N=RKHZ*.001 FREQ=RMHZ+N C C SAVE THE SUM C C F=FREQ IF(FREQ.GE.1300.)FREQ=FREQ*.5 C C ISOLATE INTEGRAL # OF MEGAHERTZ C INMHZ=FREQ C C C ISOLATE INTEGRAL # OF KILOHERTZ C RNMHZ=INMHZ FREQ=(FREQ-RNMHZ+5.E-8)*1E3 INKHZ=FREQ C C ISOLATE INTEGRAL # OF HERTZ C RNKHZ=INKHZ FREQ=(FREQ-RNKHZ)*1E3 INHZ=FREQ C C FREQUENCY DOUBLING MODE??? C IF(1300.- F) 1300,1300,1299 C C "G" = X2-RANGE REGISTER ADDRESS C 1300 LBUF(7) = 2H(G GO TO 51 C C "I" = X1-RANGE REGISTER ADDRESS C 1299 LBUF(7) = 2H(I 51 CALL ASCII( IASC1, INMHZ ) C C FORMAT RMHZ WORDS LBUF(5), LBUF(6) C GO TO (91,92,93,94) IASC1(1) 91 LBUF(5) = IOR( IASC1(2), 60B ) LBUF(6) = 2H00 GO TO 410 92 LBUF(5) = IOR( LST(IASC1(2)), IRST(IASC1(2)) ) LBUF(6) = 2H00 GO TO 410 93 LBUF(5) = IOR( IASC1(3), IAND( IASC1(2), 377B ) ) LBUF(6) = IOR( IAND( IASC1(2), 177400B ), 60B ) GO TO 410 94 LBUF(5) = IOR( LST(IASC1(3)), IRST(IASC1(3)) ) LBUF(6) = IOR( LST(IASC1(2)), IRST(IASC1(2)) ) 410 CALL ASCII(IASC2,INKHZ) C C CONSTRUCT RKHZ WORDS LBUF(3),(4) C GO TO (101,102,103) IASC2(1) 101 LBUF(3) = IRST(IASC2(2)) LBUF(4) = 2H00 GOTO 110 102 LBUF(3) = IAND(IASC2(2),377B) LBUF(4)= IOR( IAND(IASC2(2),177400B), 60B ) GOTO 110 103 LBUF(3)=IRST(IASC2(3)) LBUF(4)=IOR( LST(IASC2(2)), IRST(IASC2(2)) ) 110 CALL ASCII(IASC3,INHZ) C C CONSTRUCT HZ WORDS LBUF(2),(3) C GO TO (201,202,203) IASC3(1) 201 LBUF(2)= IOR( IASC3(2), 60B ) IF( LBUF(3) .EQ. 0 ) LBUF(3) = 60B LBUF(3)=IOR(30000B,LBUF(3)) GOTO 801 202 LBUF(2)=IOR( LST(IASC3(2)), IRST(IASC3(2)) ) LBUF(3)=IOR(30000B,LBUF(3)) GOTO 801 203 LBUF(2) = IOR( IASC3(3), IAND( IASC3(2), 377B ) ) LBUF(3) = IOR( LBUF(3), IAND( IASC3(2), 177400B ) ) 801 CONTINUE C C C REMOTE ENABLE C CALL EXEC(100003B,1600B+LUIB) GOTO 900 35 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 990 C C C LAST CHARACTER SENT MUST BE ATTENUATION REGISTER ADDRESS ASCII "#" C LBUF(9)= 2H0# ISHFT = 2**8 LEVL=ABS(RLEVL-13.0) C C CONVERT INTEGER PARAMETER TO ASCII DIGITS C CALL ASCII(IASC,LEVL) C C NOTE CHARACTER COUNT & CONSTRUCT BUFFER ACCORDINGLY C GO TO (10,20,30) IASC(1) 10 LBUF(8) =(IAND( IASC(2),177400B))+60B GO TO 122 20 LBUF(8) = IAND( IASC(2), 377B )*ISHFT ITEMP=(IAND(IASC(2),177400B))/ISHFT LBUF(8) = LBUF(8)+ITEMP GO TO 122 30 LBUF(8) = IAND( IASC(3), 177400B ) LBUF(8) =(IAND( IASC(2),377B ))+LBUF(8) LBUF(9) =(IAND( IASC(2), 177400B ))+43B C C 1ST CHARACTER SENT USED TO BE FALSE ADDRESS ASCII "." C 122 CONTINUE CALL REIO(100002B,2000B+LUSG,LBUF(2),9,IDUMY,0) GOTO 900 43 CALL ABREG(IA,IB) IF(IB .LT. 0)GOTO 990 C C SUBROUTINE TO CHECK ABREG FOR DVR37 ERROR C C C RETURN C 100 IERR=1 GOTO 9000 900 IERR=9 GOTO 9000 ސ 990 IERR=IAND(IREG,377B)+11 9000 IERR(2)=5 IERR(3)=2HRF IERR(4)=2HOS IERR(5)=2HO RETURN END C FUNCTION LST( KVAL ),09580-16279 1840 ISHFT = 2**8 LST = IAND( KVAL, 377B ) * ISHFT RETURN END C FUNCTION IRST( NVAL ),09580-16279 1840 ISHFT = 2**8 IRST = IAND( 177400B, NVAL ) / ISHFT RETURN END END$ t  09580-18289 2026 S C0122 &C45SU              H0101 jFTN4,L SUBROUTINE C45SU(IUNIT,IFUNC,IRGE,IPOS,ISAM,IGATE), +09580-16289 REV.2026 800130 C ------------------------------------------------ C THIS DEVICE SUBROUTINE PROGRAMS THE HP 5345A C ELECTRONIC COUNTER FUNCTIONS. C ----------------------------------------------- C C RELOC. 09580-16289 C SOURCE 09580-18289 C C T.KONDO 7-7-77 REV. A C Y.MIYAKO 3-16-79 REV. B C Y.MIYAKO 5-15-79 REV. C C BOB RICHARDS 791023 C BOB WRAY 800130 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C-------------------------------------------------------------------- C C BRANCH AND MNEMONIC TABLES ENTRIES: C ---------------------------------- C C C45SU(I,I,I,I,I,I), OV=XX, ENT=C45SU, FIL=%C45SU C C CONFIGURATION TABLE: C ------------------- C C R 6,1,3 C U1 C 0 (TEMP STORAGE FOR HP5345A SAMPLE RATE) C 0 (0 FOR HP5345A OPT. 011, 1 FOR HP5345A OPT. 012) C 0 (TEMPORARY STORAGE FOR HP5355A SAMPLE RATE) C C------------------------------------------------------------------ DIMENSION IERMS(5) DATA IERMS/10,5,2HC4,2H5S,2HU / DATA IDTN/6/ IERMS = 10 ISTN = ISN(DUM) LU1 = LUDV(ISTN,IDTN,IUNIT) LU0 = IBLU0(LU1) IF(LU1.LE.0.OR.LU0.LE.0)GO TO 800 10 CALL X45SU(LU0,LU1,IERMS,IUNIT,IFUNC,IRGE,IPOS,ISAM,IGATE) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C ----------------------------------- C CALL MAIN BODY OF DEVICE SUBROUTINE C "----------------------------------- C SUBROUTINE X45SU(LU0,LU1,IERMS,IUNIT,IFUNC,IRGE,IPOS,ISAM,IGATE), +09580-16289 REV.2026 800130 C C C C CALL X45SU(LU0,LU1,IERMS,IUNIT,IFUNC,IRGE,IPOS,ISAM,IGATE) C WHERE: C LU0 = LU # FOR HP-IB INTERFACE CARD C LU1 = LU # FOR HP5345 ELECTRONIC COUNTER C C IERMS = 5 ELEMENT ERROR ARRAY C IERMS(1) = ERROR CODE C 0= NO ERROR C 1= PARAMETER ERROR C 3= OVERRANGE ERROR C 4= BAD DATA FROM 5345A C 6= 'HOLD' INVALID WITH C HP 5355A INSTALLED. C 7= CONFIGURTION FILE DATA C ENTRY ERROR C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C 9 = I/O CALL REJECTED C 10 = LU # NOT ASSIGNED TO HPIB DEVICE OR TO STATION C 11 = DMA INPUT REQUEST PREMATURELY TERMINATED C 12 = I/O DEVICE TIME OUT C 13 = IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 = SRQ SERVICE ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C IERMS(2) = CHARACTER COUNT OF MNEMONIC NAME C IERMS(3) - IERMS(5) = DEVICE SUBROUTINE NAME C C IUNIT = UNIT NUMBER C C IFUNC = COUNTER FUNCTION C 0 = LOCAL (N/A ON HP5345A OPT.012) C 1 = PLUG IN C 2 = FREQ A C 3 = PERIOD A C 4 = TIME INTERVAL A TO B C 5 = RATIO B/A C 6 = START C 7 = STOP C 8 = AC,CUM MODE (A+B) C 9 = ACCUM MODE (A-B) C 10 = CHECK C C IRGE = COUNTER GATE TIME C 0 = MIN C 1 = 100 NSEC C 2 = 1 USEC C 3 = 10 USEC C 4 = 100 USEC C 5 = 1 MSEC C 6 = 10 MSEC C 7 = 100 MSEC C 8 = 1 SEC C 9 = 10 SEC C 10 = 100 SEC C 11 = 1000 SEC C 12 = 10000 SEC C C IPOS = DISPLAY POSITION C (DIGIT POSITION DEFINED FROM RIGHT TO LEFT, C DECIMAL POINT ON RIGHT SIDE OF DIGIT) C 0 THRU 10 C 11 = AUTO POSITION C C ISAM = SAMPLE RATE C 1 = MINIMUM C 2 = MAXIMUM (50 - 100 MSEC) C 3 = HOLD (INVALID IF HP5355A INSTALLED- C REF CALL C45HF, ISARA PARAMETER.) C C IGATE = GATE MODE C 1 = INTERNAL C 2 = EXTERNAL C C C ---------------- C PROGRAM CODE SET C ---------------- C C FUNCTION: C 'F2' = PLUG IN 'F0' = FREQ. A C 'F1' = PERIOD 'F3' = TIME INTERVAL A TO B C 'F5' = RATIO 'F4' = START C 'F6' = STOP C 'E=' = ACCOM MODE (A+B) 'E5' = ACCOM MODE (A-B) C 'E;' = EXT. GATE 'E3' = INT. GATE C GATE TIME: C 'G4' = 10000 SEC 'G3' = 1000 SEC C 'G2' = 100 SEC 'G1' = 10 SEC C 'G0' = 1 SEC 'G?' = 100 MSEC C 'G>' = 10 MSEC 'G=' = 1 MSEC C 'G<' = 100 USEC 1 'G;' = 10 USEC C 'G:' = 1 USEC 'G9' = 100 NSEC C 'G5' = MIN C INPUT AMPLIFIER: C 'E7' = COM A OR SEPARATE 'E?' = CHECK C SAMPLE RATE: C 'E1E4' = MAX 'E1E<' = MIN C 'E9' = HOLD C OUTPUT MODE: C 'E2' = ONLY IF ADDRESSED 'E:' = WAIT UNTIL ADDRESSED C DISPLAY POSITION: C 'D;' = 0 DIGITS 'D:' = 1 DIGIT C 'D9' = 2 DIGITS 'D8' = 3 DIGITS C 'D?' = 4 DIGITS 'D>' = 5 DIGITS C 'D=' = 6 DIGITS 'D<' = 7 DIGITS C 'D3' = 8 DIGITS 'D2' = 9 DIGITS C 'D1' = 10 DIGITS 'D0' = AUTO POS & AUTO SUFFIX C NOTE: THE AUTO POSITION ('D0') IS NORMALLY PROGRAMMED. C THIS POSITIONS THE DISPLAY'S LEAST-SIGNIFICANT DIGIT C IN THE RIGHT MOST COLUMN WITH THE CORRECT DISPLAY C MULTIPLIER AUTOMATICALLY SELECTED. PROGRAMMING THE C DISPLAY MULTIPLIER IS NOT REQUIRED IN AUTO DISPLAY. C DISPLAY PROGRAMMING OF 0 DIGITS TO 10 DIGITS SHIFTS C THE DECIMAL POINT (LEFT) AND REQUIRES MULTIPLIER C SUFFIX TO BE PROGRAMMED. C DISPLAY MULTIPLIER SUFFIX: C 'C7' = GHZ NSEC G C 'C6' = MHZ USEC M C 'C5' = KHZ MSEC K C 'C4' = HZ SEC C 'C3' = mHZ KSEC C REMOTE PROGRAM INITIALIZE = 'I2' C SET THE COUNTER AS FOLLOWS: C FREQ A, 1SEC GATE, AUTO DISPLAY, COM A OR SEPARATE C (DEPENDING ON FRONT PANEL) LOCAL OPERATION, OUTPUT C ONLY IF ADDRESSED, INTERNAL GATE, SAMPLE RATE NOT C HOLD, SAMPLE RATE ^ 50 MSEC, AND A-B START MODE. C LOCAL - REMOTE: C (THIS PARAMETER IS NOT APPLICABLE TO HP5345A OPT. 012) C 'E0' = LOCAL 'E8' = REMOTE C RESET COMMAND = 'I1' C THE RESET COMMAND CAUSES THE CURRENT MEASUREMENT CYCLE C TO BE TERMINATED AND A NEW CYCLE TO BEGIN. AFTER NEW C PROGRAM CODES, THIS COMMAND IS ISSUED TO ENSURE THAT C THE MEASUREMENT CYCLE IS STARTED WITH NEW PROGRAM. C IF RESET COMMAND IS ISSUED TO THE COUNTER WHILE THE C COUNTER IS PROGRAMMED FOR WAIT UNTIL ADDRESS('E:') C THE COUNTER WILL IMMEDIATELY GO TO AN OUTPUT CYCLE C AND OUTPUT ALL ZEROS. ONLY WHEN THE OUTPUT IS COMPLETE C AND SAMPLE TRIGGER OCCURS WILL A NEW MEASUREMENT C BEGIN. C SAMPLE TRIGGER COMMAND = 'J1' C C DIMENSION IDATA(14),KSAMP(3),IFNC(10),IGTME(13),IERMS(5) DIMENSION IRATE(5),IDPOS(12),IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C ---------------- C SET PROGRAM DATA C ---------------- C DATA IFNC/2HF2,2HF0,2HF1,2HF3,2HF5,2HF4,2HF6, 12HE=,2HE5,2HE?/ C DATA IGTME/2HG5,2HG9,2HG:,2HG;,2HG<,2HG=,2HG>, 12HG?,2HG0,2HG1,2HG2,2HG3,2HG4/ C DATA IDT2 / 6/ C DATA IDPOS/2HD;,2HD:,2HD9,2HD8,2HD?,2HD>,2HD=, 12HD<,2HD3,2HD2,2HD1,2HD0/ C C --------------------- C INITIALIZE ERROR CODE C --------------------- C IERMS = 0 C C --------------- C TEST PARAMETERS C --------------- C IF(IFUNC.LT.0.OR.IFUNC.GT.10)GO TO 9100 IF(IRGE.LT.0.OR.IRGE.GT.12)GO TO 9100 IF(IPOS.LT.0.OR.IPOS.GT.11)GO TO 9100 IF(ISAM.LT.1.OR.ISAM.GT.3)GO TO 9100 IF(IGATE.LT.1.OR.IGATE.GT.2)GO TO 9100 CALL TIM(IDT2,IUNIT,1,KSAMP,3,JER) IF(JER.NE.0)GO TO 9100 IF(KSAMP(2).LT.0.OR.KSAMP(2).GT.1)GO TO 9100 IF(KSAMP(3).GT.2) GO TO 9400 IF(KSAMP(3).EQ.0.OR.KSAMP(3).EQ.1) GO TO 20 IF(ISAM.EQ.3) GO TO 9300 C C -------------------- C SET COUNTER FUNCTION C -------------------- C IF(IFUNC.NE.0)GO TO 20 IF(KSAMP(2).EQ.1)GO TO 9100 IDATA(1) = 2HE0 IDATA(2) = 2HI1 NUM = 2 GO TO 100 C C --------------------------------- C INITIALIZED REMOTE PROGRAM STORAGE C --------------------------------- C FREQ A, 1 SEC GATE, AUTO DISPLAY, COM A OR SEPEARATE, C LOCAL, INT GATE, SAMPLE RATE - MAX, A - B START MODE C 20 IDATA(1) = 2HI2 NUM = 1 C C ---------------------------------------------------- C SET UP DATA IN TIM FOR C45RD TO INDICATE SAMPLE RATES C OF HP5345A AND HP 5355A. C ---------------------------------------------------- C KSAMP(1) = 0 KSAMP(3) = 0 IF(ISAM.EQ.3)KSAMP(1) = 1 CALL TIM(IDT2,IUNIT,2,KSAMP,3,JER) IF(JER.NE.0)RETURN C C ------------------------------ C CHECK FUNCTION FOR FREQUENCY A C ------------------------------ C 22 CONTINUE IF (IFUNC.EQ.2)GO TO 25 C C ------------------------------- C OTHER FUNCTION THAN FREQUENCY A C ------------------------------- C IDATA(2) = IFNC(IFUNC) NUM = 2 25 NUM = NUM+1 C C --------------------------- C CHECK GATE TIME = 1 SECONDS C --------------------------- C IF (IRGE.EQ.8)GO TO 30 C C ------------------------- C GATE TIME IS NOT 1 SECOND C ------------------------- C IDATA(NUM) = IGTME(IRGE+1) NUM = NUM+1 C C ------------------- C CHECK REMOTE GATING C ------------------- C 30 IF (IGATE.NE.1)IDATA(NUM) = 2HE; IF (IGATE.NE.1)NUM = NUM+1 C C --------------- C INPUT = CHECK ? C --------------- C IF (IFUNC.EQ.10)IDATA(NUM) = 2HE? IF (IFUNC.EQ.10)NUM = NUM+1 C C ----------------- C CHECK SAMPLE RATE C ----------------- C IF(ISAM.EQ.2)GO TO 35 IDATA(NUM) = 2HE9 NUM = NUM+1 IF(ISAM.EQ.3)GO TO 35 IDATA(NUM-1) = 2HE1 IDATA(NUM) = 2HE< NUM = NUM+1 C C ---------------- C DISPLAY POSITION C ---------------- C 35 CONTINUE IF (IPOS.EQ.11)GO TO 40 C C ------------------------ C OTHER THAN AUTO-POSITION C ------------------------ C IDATA(NUM) = IDPOS(IPOS+1) IDATA(NUM+1) = 2HC4 NUM = NU yM+2 C C ------------------------- C INITIALIZE REMOTE PROGRAM C ------------------------- C 40 IDATA(NUM) = 2HI1 IDATA(NUM+1) = 2HE8 NUM = NUM+1 C 100 CALL EXEC(100003B,1600B+LU0) GO TO 8000 660 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C -------------------------------- C PROGRAM 5345A ELECTRONIC COUNTER C -------------------------------- C IF(KSAMP(2).EQ.1)NUM=NUM-1 99 CALL REIO(100002B,LU1,IDATA(1),NUM,IDUMY,0) GO TO 8000 999 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 990 C C ------ C RETURN C ------ C RETURN C C ------------ C ERROR RETURN C ------------ C 8000 IERMS = 9 GO TO 9900 9100 IERMS = 1 GO TO 9900 9300 IERMS = 6 GO TO 9900 9400 IERMS = 7 GO TO 9900 990 IERMS = IAND(IREG,377B) + 11 9900 IERMS(2) = 5 IERMS(3) = 2HC4 IERMS(4) = 2H5S IERMS(5) = 2HU RETURN END SUBROUTINE C45SS(IUNIT,IMODE),09580-16289 REV.2026 800130 C----------------------------------------------------------- C C -------------------------------------------- C THIS DEVICE SUBROUTINE PROGRAMS THE HP 5345A C ELECTRONIC COUNTER START & STOP FUNCTIONS. C -------------------------------------------- C C BRANCH AND MNEMONIC TABLES ENTRIES C ---------------------------------- C C C45SS(I,I), OV#=XX, ENT=C45SS, FIL=%C45SU C C------------------------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HC4,2H5S,2HS / IERMS = 10 ISTN = ISN(DUM) LU = LUDV(ISTN,6,IUNIT) LUIB = IBLU0(LU) IF(LU)800,800,10 10 CALL X45SS(LUIB,LU,IERMS,IMODE) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE X45SS(LUIB,LCTR,IERR,IMODE),09580-16289 REV.2026 +800130 C C C C C C -------------------------------- C CALL X45SS(LUIB,LCTR,IERR,IMODE) C -------------------------------- C WHERE: C LUIB = LU OF HPIB INTERFACE CARD C LCTR = LU OF HP 5345A ELECTRONIC COUNTER C C IERR = 5 ELEMENT ERROR ARRAY C IERR(1) = ERROR CODE C C 0= NO ERROR C 1= PARAMETER ERROR C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION. C 11 - DMA INPUT REQUEST PREMATURELY TERMINATED C 12 - I/O DEVICE TIME OUT C 13 - IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14 - SRQ SERVICE ABORTED C 15 - NON-EXISTENT ALARM PROGRAM C 16 - ILLEGAL CONTROL REQUEST C 17 - EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERR(2) = CHARACTER COUNT OF MNEMONIC NAME C IERR(3) - IERR(5) = DEVICE SUBROUTINE NAME C C IMODE = MODE C 0 STOP C 1 START C C C C C C DIMENSION IBUF(1),IERR(5),IREG(2) C EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C C ---------------- C SET PROGRAM DATA C ---------------- C DATA IWRT/100002B/ C C ---------------- C INITIALIZE ERROR C ---------------- IERR=0 C IF(IMODE.LT.0.OR.IMODE.GT.1)GOTO 9100 C C -------- C SET MODE C -------- C IF(IMODE.EQ.0)IBUF(1)=2HF6 IF(IMODE.EQ.1)IBUF(1)=2HF4 C 500 CALL EXEC(100003B,1600B+LUIB) GO TO 9000 550 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C -------------------------- C PROGRAM ELECTRONIC COUNTER C -------------------------- C CALL REIO(IWRT,2000B+LCTR,IBUF,1,IDUMY,0) GO TO 9000 1000 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C ------ C RETURN C ------ C RETURN C C ------------ C ERROR RETURN C ------------ C 9000 IERR = 9 GO TO 9900 9100 IERR = 1 GO TO 9900 990 IERR = IAND(IREG,377B) +n5640 11 9900 IERR(2) = 5 IERR(3) = 2HC4 IERR(4) = 2H5S IERR(5) = 2HS RETURN END END$ +6  09580-18290 2026 S C0122 &C45RD              H0101 `sFTN4,L SUBROUTINE C45RD(IUN45,MODE,DATA1,DATA2), +09580-16290 REV.2026 800130 C ----------------------------------------------- C THIS DEVICE SUBROUTINE PROGRAMS THE MEASUREMENT C FUNCTION OF THE 5345A ELECTRONIC COUNTER. C ----------------------------------------------- C C RELOC. 09580-16290 C SOURCE 09580-18290 C C T.KONDO 7/8/77 REV. A C Y.MIYAKO 3/16/79 REV. B C BOB WRAY 800130 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHT RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C-------------------------------------------------------------- C C BRANCH AND MNEMONIC TABLE ENTRIES C C C45RD(I,I,RV,RV), OV=XX, ENT=C45RD, FIL=%C45RD C C---------------------------------------------------------------- C DIMENSION IERMS(5),KSAMP(3) DATA IERMS/10,5,2HC4,2H5R,2HD / DATA IDTN/6/,IDPN/71/ IUN55 = IUN45 IERMS = 10 ISTN =ISN(DUM) LU45 = LUDV(ISTN,IDTN,IUN45) LUB1 = IBLU0(LU45) IF (LU45.LE.0.OR.LUB1.LE.0)GO TO 800 C C -------------------------------------- C GET HP 5345A SAMPLE RATE DATA FROM TIM C -------------------------------------- C CALL TIM(IDTN,IUN45,1,KSAMP,3,JER) IF(JER.NE.0)RETURN C C --------------------------------------------------- C IF HP 5355A SAMPLE RATE NOT 'HOLD', CALL X45RD, BUT C IF HP 5355A SAMPLE RATE IS 'HOLD', THEN FIND LU NUMBERS C OF HP5355A HI-IB I/O INTERFACE CARD AND OF HP 5355A THEN C PROCEED TO CALL X45RD. C --------------------------------------------------- IF(KSAMP(3).NE.2) GO TO 10 LU55 = LUDV(ISTN,IDPN,IUN55) LUB2 = IXBLU0(LU55) IF(LU55.LE.0.OR.LUB2.LE.0) GO TO 800 10 CALL X45RD(LUB1,LU45,LUB2,LU55,IERMS,IUN45, +MODE,DATA1,DATA2) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE X45RD(LUB1,LU45,LUB2,LU55,IERMS,IUN45, +MODE,DATA1,DATA2), +09580-16290 2013 800130 C C CALL X45RD(LUB1,LU45,LUB2,LU55,IERMS,IUN45,IUN55, C MODE,DATA1,DATA2) C WHERE: C LUB1 = LU # FOR HP 5345A HP-IB INTERFACE CARD C LUB2 = LU # FOR HP 5355A HP-IB INTERFACE CARD C LU45 = LU # OF HP 5345A ELECTRONIC COUNTER C LU55 = LU # OF HP 5355A AUTOMATIC FREQ CONVERTER C C IERMS = 5 ELEMENT ERROR ARRAY C IERMS(1) = ERROR CODE C 0 = NO ERROR C 1 = PARAMETER ERROR C 3 = OVERRANGE ERROR C 4 = BAD DATA FROM HP 5345A C C ERROR MESSAGES WHICH PERTAIN TO THE HPIB C C 9 = I/O CALL REJECTED C 10= LU NOT ASSIGNED TO HPIB DEVICE OR TO STATION C 11= DMA INPUT REQUEST PREMATURELY TERMINATED C 12= I/O DEVICE TIME OUT C 13= IFC (INTERFACE CLEAR) DETECTED DURING I/O REQUEST C 14= SRQ SERVICE ABORTED C 15= NON-EXISTENT ALARM PROGRAM C 16= ILLEGAL CONTROL REQUEST C 17= EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE ADDED ON LINE C C IERMS(2) = CHARACTER COUNT OF MNEMONIC NAME C IERMS(3) - IERMS(5) = DEVICE SUBROUTINE NAME C C IUN45 = UNIT NUMBER OF HP5345A C IUN55 = UNIT NUMBER OF HP5355A (SAME AS UNIT C NUMBER OF HP5345A) C C MODE = MEASUREMENT MODE C C 0 = INITIATE AND WAIT FOR COMPLETION. C THEN RETURN WITH MEASUREMENT DATA. C C C C ****NOTE**** C C WHENEVER MODE = 1 OR 2 IN THIS CALL STATEMENT, C A SECOND CALL MUST BE MADE, IN WHICH MODE = 3 IN ORDER C TO GET A READING. C C ************ C C 1 = INITIATE A MEASUREMENT AND WAIT FOR C COMPLETION SO DATA CAN BE READ WITH C MODE = 3. C 2 = INITIATE A MEASUREMENT AND RETURN C DO NOT WAIT FOR COMPLETION. DATA CAN C BE READ WITH MODE = 3. C 3 = READ DATA ONLY C C DATA1= VALUE READ IN REAL REPRESENTATION C THE MOST-SIGNIFICANT-DIGITS C C DATA2= IF DATA1 CONTAINS MORE THAN 6 DIGITS C DATA2 CONTAINS THE LEAST-SIGNIFICANT C DIGITS. C C HP 5345A OUTPUT FORMAT: C C 1 2 3 4 5 6 7 8 C MSD (DIGITS) LSD C SP/- DDDDDDDDDDD . E +/- N CR LF C (0-9) (0,3,6,9) C DIMENSION IDATA(2),IREAD(10),IRSLT(16),IDBUF(8),IERMS(5), +ISCAL(3),KSAMP(3),IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C DATA IDTN/6/ C IUN55 = IUN45 IERMS = 0 C C --------------- C TEST PARAMETERS C --------------- C IF (MODE.LT.0.OR.MODE.GT.3)GO TO 9100 C C ---------------------------------------- C GET DATA FROM TIM INDICATING SAMPLE RATE C ---------------------------------------- C CALL TIM(IDTN,IUN45,1,KSAMP,3,KER) IF(KER.NE.0)RETURN C C ---------------------------------------------- C IF HP5345A MEASUREMENT MODE = 'READ DATA ONLY', C GO TO 500, WHICH PROGRAMS THE HP 5345A TO READ. C ---------------------------------------------- C 50 CONTINUE IF (MODE.EQ.3)GO TO 500 C /C ------------------------------------- C SET IDATA(1) TO RESET/PRESET HP 5345A C -------------------------------------- C IDATA(1) = 2HI1 C C ------------------------------------------------------------ C SET IDATA(1) TO TRIGGER HP 5345A TO TAKE A MEASUREMENT C (WHENEVER HP5355A NOT PROGRAMMED FOR 'HOLD' SAMPLE RATE, OR C WHENEVER HP5355A IS NOT INSTALLED) C ------------------------------------------------------------ C IF(KSAMP(1).NE.0)IDATA(1) = 2HJ1 C C -------------------------------------------------------------- C SET IDATA(1) TO TRIGGER HP 5355A TO TAKE A MEASUREMENT C (WHENEVER HP5355A IS PROGRAMMED FOR 'HOLD' SAMPLE RATE) C ------------------------------------------------------------- C IF(KSAMP(3).EQ.2)IDATA(1) = 2HT IF(KSAMP(3).NE.2) GO TO 75 LU0 = LUB2 LU1 = LU55 GO TO 100 75 LU0 = LUB1 LU1 = LU45 NDATA = 1 C C ----------------------------------------------- C PROGRAM HP 5345A/HP 5355A TO TAKE A MEASUREMENT C ----------------------------------------------- 100 CALL EXEC(100003B,1600B+LU0) GO TO 9300 200 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 990 CALL REIO(100002B,LU1,IDATA,NDATA,IDUMY,0) GO TO 9300 400 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C ------------------------------------ C IF MODE = 1 OR 2, DON'T TAKE READING C ------------------------------------ C IF(MODE.NE.0)RETURN C C ------------------------ C SET COUNTER TO TALK MODE C ------------------------ C 500 CALL REIO(100001B,LU45,IREAD(2),8,IDUMY,0) GO TO 9300 600 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 990 C ---------------------------------------- C B REG CONTAINS NOS. OF WORDS TRANSMITTED C----------------------------------------- C CALL REIO(100001B,LU45,IREAD(2),8,IDUMY,0) GO TO 9300 620 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 990 C 630 LCHAR = IB DATA1 = 0.0 DATA2 = 0.0 READ2 = 0.0 _!DO 650 I=1, 16 650 IRSLT(I) = 0 C DO 655 I=1, 8 655 IDBUF(I) = 0 C NDPNT = 0 C DO 660 I=1, LCHAR INDEX = 2*I-1 LBYTE = IAND(IREAD(I+1),377B) IF (LBYTE.EQ.56B)NDPNT = INDEX+1 IBYTE =IAND(IREAD(I+1),177400B)/(2**8) IF (IBYTE.EQ.56B)NDPNT = INDEX C IRSLT(INDEX) = IBYTE 660 IRSLT(INDEX+1) = LBYTE C LCHAR = INDEX+1 IF (IRSLT(LCHAR).LT.60B)LCHAR = LCHAR-1 C ISCAL(1) = IRSLT(LCHAR-1) ISCAL(2) =IRSLT(LCHAR)-60B IF (IRSLT(1).EQ.40B)IRSLT(1)=53B IEX = LCHAR-2 C C -------------- C PROCESS DIGITS C -------------- C IREAD = LCHAR IF (LCHAR.LE.11)GO TO 800 IF (NDPNT.GT.9)GO TO 690 NEXP = (IEX-NDPNT)-1 IF (IRSLT(LCHAR-1).EQ.53B)LEXP = ISCAL(2)-NEXP IF (IRSLT(LCHAR-1).EQ.55B)LEXP = ISCAL(2)+NEXP C IREAD(6) = IOR(IRSLT(IEX)*400B,IRSLT(IEX+1)) IREAD(7) = IOR(IRSLT(IEX+2)*400B,40B) IREAD = 11 C IF (LEXP.LT.0)IRSLT(LCHAR-1) = 55B IF (LEXP.LT.0)LEXP = IABS(LEXP) IRSLT(LCHAR) = 60B IF (LEXP.GT.9)IRSLT(LCHAR) = 61B IRSLT(LCHAR+1) = LEXP+60B IF (LEXP.GT.9)IRSLT(LCHAR+1) = (LEXP-10)+60B LCHAR = LCHAR+1 GO TO 700 C 690 CONTINUE NEXP = NDPNT-9 IF (IRSLT(IEX+1).EQ.53B)NEXP = ISCAL(2)+NEXP IF (IRSLT(IEX+1).EQ.55B)NEXP = ISCAL(2)-NEXP ISCAL(1) = 53B IF (NEXP.LT.0)ISCAL(1) = 55B ISCAL(2) = 60B IF (NEXP.LT.0)NEXP = IABS(NEXP) IF(NEXP.GT.9)ISCAL(2) = 61B ISCAL(3) = NEXP IF(NEXP.GT.9)ISCAL(3)=NEXP-10 ISCAL(3) = ISCAL(3)+60B IREAD(6) = IOR(42400B,ISCAL(1)) IREAD(7) = IOR(ISCAL(2)*400B,ISCAL(3)) IREAD = 12 C C --------------------------- C DO LEAST SIGNIFICANT DIGITS C --------------------------- C 700 INX = 1 JNX = 9 710 INX =INX + 1 IF (JNX.GT.LCHAR)GO TO 750 LSDIG = IOR(IRSLT(JNX)*400B,IRSLT(JNX+1)) IDBUF(INX) = LSDIG_$" JNX = JNX+2 GO TO 710 C 750 IDBUF = LCHAR-8 IREG=A2F(IDBUF,1,IDBUF,DATA2) IF(IREG)9200,800 C C -------------------------- C DO MOST SIGNIFICANT DIGITS C -------------------------- C 800 IREAD(2) = IOR(IRSLT(1)*400B,IRSLT(2)) IREG=A2F(IREAD,1,IREAD,DATA1) IF(IREG)9200,900 C 900 CONTINUE RETURN C C C ------------- C ERROR RETURNS C ------------- C 990 IERMS = IAND(IREG,377B) + 11 GO TO 9900 9300 IERMS = 9 GO TO 9900 9100 IERMS = 1 GO TO 9900 9200 IERMS = 4 9900 IERMS(2) = 5 IERMS(3) = 2HC4 IERMS(4) = 2H5R IERMS(5) = 2HD RETURN C END END$ $  09580-18294 2026 S C0122 &RMSSU              H0101 ~FTN4,L SUBROUTINE RMSSU(IUNIT,IFUNC,IRNG,IMODE,IDEL), +09580-16294 REV.2026 800219 C C------------------------------------- C C HP 3403C TRUE RMS VOLTMETER. C C RELOCATABLE 09580-16294 C SOURCE 09580-18294 C C V.POVIO 771008 REV. A C BOB RICHARDS 800219 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DνISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 3403C TRUE RMS VOLTMETER. C C HARDWARE REQUIRED: C ------------------ C A. HP 3403C TRUE RMS VOLTMETER C B. 11146A I/O CARD C C JUMPER POSITION: C S1 AND S2 SET TO A C C C. 28058-60001 I/O CABLE C C INPUT/OUTPUT WORD FORMAT: C ------------------------- C C BIT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C ------------------------------------------------- C ! ! WAIT!RL! ! ! ! !FUNC ! N! S! A! RANGE ! C ------------------------------------------------- C C WHERE: C C RL = REMOTE/LOCAL C 0 = LOCAL C 1 = REMOTE C C WAIT = WAIT C 01 = 1 MSEC DELAY BETWEEN ENCODE C AND START OF MEASUREMENT C C FUNC = FUNCTION C C 00 = AC+DC C 01 = DC ONLY C 10 = AC ONLY C C N = NORMAL/DELAYED C 0 = NORMAL C 1 = DELAYED C C S = SLOW/FAST C 0 = SLOW C 1 = FAST C C A = AUTORANGE C 0 = LOCAL C 1 = AUTORANGE C C RANGE = RANGE C C 000 = 1000V C 001 = 100V C 010 = 10V C 011 = 1V C 100 = .1V C 101 = .01V C C INPUT DATA WORD #1 C ------------------ C C BIT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C ------------------------------------------------- C ! RANGE !#4!BCD DIGIT 3!BCD DIGIT 2!BCD DIGIT 1! C ------------------------------------------------- C C RANVGE = NUMBER OF DECIMAL PLACES FROM RIGHT ,0 TO 5 C C BITS 0 TO 12 = RETURNED BCD DATA C C ALL BITS 0 = TRUE C C INPUT DATA WORD #2 C ------------------ C C BIT 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 C ------------------------------------------------- C ! NOT USED !RC!UN!OV!PO! FUN ! C ------------------------------------------------- C C FN = FUNCTION C 11 = DC+AC C 10 = DC ONLY C 01 = AC ONLY C C PO = POLARITY C 0 = + C 1 = - C C OV = OVERRANGE C 1 = NO C 0 = YES C C UN = UNDERRANGE C 1 = NO C 0 = YES C RC = REMOTE CHECK C 0 = REMOTE C 1 = NOT IN REMOTE C C********************************************************************** C C ERROR CODES C C 0 = NO ERRORS C 1 = PARAMETER ERROR C 2 = TIMEOUT ERROR C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO STATION OR ILLEGAL LU C C********************************************************************** C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C RMSSU(I,I,I,I,I), OV=XX, ENT=RMSSU, FIL=%RMSSU C RMSMU(I,RV,IV), OV=XX, ENT=RMSMU, FIL=%RMSSU C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 28,1,3 C U1 C 0 OUTPUT WORD C 0 FAST/SLOW C 0 NORMAL/DELAY C C OPERATING NOTES: C ---------------- C C 1. MEASUREMENT OF DC ON THE .01V RANGE. C C THE INSTRUMENT CAN NOT BE PROGRAMMED TO MEASURE C DC ON THE .01V RANGE. C C 2. CREST FACTOR LIMITATIONS. C C IF A SIGNAL HAS A HIGH CREST FACTOR THE DVM C (IN AUTO RANGE) MAY CONTINUE TO SWITCH BETWEEN C TWO RANGES. TO OVERCOME THIS PROBLEM SET THE C DVM TO A HIGHER RANGE. C C 3. INSTRUMENT SETTLING TIME. C C MODES 4v AND 5 DO NOT ALLOW THE INSTRUMENT TO C STABILIZE AFTER A STEP INPUT CHANGE BEFORE C RETURNING DATA. THE DATA RETURNED CAN THEREFORE C BE INVALID AFTER A STEP CHANGE. IT IS RECOMMENDED C THAT MODES 4 AND 5 BE USED ONLY TO MONITOR C RELATIVELY SLOW AND SMALL CHANGES OF INPUT C AMPLITUDE. C C C------------------------------------ C C RMSSU(IUNIT,IFUNC,IRNG,IMODE,IDEL) C C WHERE: C C IUNIT = UNIT # C C IFUNC = FUNCTION C C 0 = AC ONLY C 1 = DC ONLY C 2 = AC+DC C 3 = LOCAL C IRNG = RANGE C C 0 = AUTORANGE C 1 = .01V (AC ONLY) C 2 = .1V C 3 = 1V C 4 = 10V C 5 = 100V C 6 = 1000V C C IMODE = MODE C C 0 = FAST C 1 = SLOW C C IDEL = DELAY C C 0 = NORMAL C 1 = DELAYED C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 28 / DATA IERMS / 10,5,2HRM,2HSS,2HU / C IERMS=10 C C FIND STATION AND LU #'S C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) IF(LU1 .LE. 0)GOTO 800 C C CALL X SUB C CALL XMSSU(LU1,IERMS,IUNIT,IFUNC,IRNG,IMODE,IDEL) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END SUBROUTINE XMSSU(LU1,IERMS,IUNIT,IFUNC,IRNG,IMODE,IDEL), +09580-16294 REV.2026 800219 DIMENSION IERMS(5),IBUF(10),IREG(2),IOBUF(3) EQUIVALENCE (REG,IREB,IA),(IREG(2),IB) C IERMS=1 IBUF(1)=0 C C CHECK PARAMETERS C IF(IFUNC .EQ. 3)GOTO 200 IF(IFUNC .LT. 0 .OR. IFUNC .GT. 3) GOTO 1000 IF(IRNG .LT. 0 .OR. IRNG .GT. 6)GOTO 1000 IF(IMODE .LT. 0 .OR. IMODE .GT. 1)GOTO 1000 IF(IDEL .LT. 0 .OR. IDEL .GT. 1)GOTO 1000 C C v SET UP OUTPUT BUFFER C IF(IRNG .EQ. 0)IBUF=10B IF(IRNG .NE. 0)IBUF=6-IRNG IF(IMODE .EQ. 1)IBUF=IBUF+20B IF(IDEL .EQ. 0)IBUF=IBUF+40B IF(IFUNC .EQ. 1)IBUF=IBUF+100B IF(IFUNC .EQ. 0)IBUF=IBUF+200B IBUF=IBUF+30000B C C SET DRIVER TIME OUT VALUE C 200 CALL EXEC(100003B,LU1+100B,1) GOTO 8090 201 CALL ABREG(IA,IB) IF(IAND(IA,377B) .NE. 0)GOTO 8020 C C OUTPUT BUFFER (BINARY XFER MODE, TIMEOUT IS LEGAL) C CALL REIO(100002B,2100B+LU1,IBUF,1,IDUMY,0) GOTO 8090 90 CALL ABREG(IA,IB) IT=IAND(IA,377B) IF((IT .EQ. 3) .OR. (IT .EQ. 0))GOTO 802 GOTO 8020 C C SET UP CONFIGURATION FILE C 802 IOBUF(1)=IBUF IOBUF(2)=IMODE IOBUF(3)=IDEL C C OUTPUT CONFIGURATION FILE C CALL TIM(28,IUNIT,2,IOBUF,3,N) IF(N .NE. 0)RETURN C C NORMAL EXIT C IERMS=0 RETURN C C ERROR EXIT C 8020 IERMS=2 GOTO 1000 8090 IERMS=9 1000 IERMS(2)=5 IERMS(3)=2HRM IERMS(4)=2HSS IERMS(5)=2HU RETURN END C C SUBROUTINE RMSMU(IUNIT,V,ISTAT),09580-16294 REV.2026 800219 C DIMENSION IERMS(5) DATA IERMS / 10,5,2HRM,2HSM,2HU / C C------------------------------------ C C RMSMU(IUNIT,V,ISTAT) C C WHERE: C C IUNIT = UNIT # C C V = VALUE RETURNED C C NOTE: FOR OVERLOAD OR INCOMPLETED MEAS- C UREMENTS THE VALUE OF V IS SET TO C 9.99999E9. C C ISTAT = RANGE STATUS C C -2 = .01V RANGE C -1 = .1V " C 0 = 1V " C 1 = 10V " C 2 = 100V " C 3 = 1000V " C 4 = OVERRANGE ON PROGRAMMED RANGE OR C EXCESSIVE INPUT ON AUTORANGE. C 5 = UNDERRANGE ON PROGRAMMED RANGE C C NOTE: THE RANGE IDENTIFICATION CODES DEFINED C Տ ABOVE IDENTIFY THE RANGE ACTUALLY USED C TO MEASURE THE VALUE RETURNED IN V C TO CONVERT THIS CODE TO THE ACTUAL RANGE C USED,USE THE ALGORITHM: C C R(RANGE) = 10**ISTAT C C********************************************************************** C C ERRORS C C 0 = NO ERRORS C 1 = PARAMETER ERROR C 2 = TIMEOUT ERROR C 3 = I/O CARD HUNG UP C 5 = REMOTE BIT NOT SET C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO STATION OR ILLEGAL LU C C********************************************************************** C C IERMS=10 C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,28,IUNIT) IF(LU1 .LE. 0)GOTO 800 C C CALL X SUB C CALL XMSMU(LU1,IERMS,IUNIT,V,ISTAT) IF(IERMS)800,20,800 C C NORMAL RETURN C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE XMSMU(LU1,IERMS,IUNIT,VAL,IRS), +09580-16294 REV.2026 800219 C C DIMENSION IERMS(5),IOBUF(5),IBUF(3) C ITIME=1000 IERMS=1 VAL=9.99999E9 C C READ CONFIGURATION FILE C CALL TIM(28,IUNIT,1,IBUF,3,N) IF( N .NE. 0)RETURN IERMS=4 IF(IBUF(1) .EQ. 0)GOTO 1000 IF(IBUF(3) .EQ. 1)ITIME=2000 C C SET DRIVER TIME OUT VALUE (TIMEOUT = ITIME * 10 MILLISECONDS) C CALL EXEC(100003B,100B+LU1,ITIME) GOTO 8090 90 CALL ABREG(IA,IB) IF(IAND(IA,377B) .NE. 0)GOTO 8020 C C READ DATA (ARM DEVICE FOR INITIAL INTERRUPT, READ INTO IOBUF W/O C INTERRUPT UNTIL BUFFER IS FULL, ARM DEVICE FOR 'DONE' FLAG, CLEAR C DEVICE AND I/O CARD.) C 100 CALL REIO(100001B,2700B+LU1,IOBUF,2) GOTO 8090 101 CALL ABREG(IA,IB) IF(IAND(IA,377B) .NE. 0)GOTO 8020 IOBUF(1)=IXOR(IOBUF(1),177777B) IOBUF(2)=IXOR(IOBUF(2),37B) C C CHECK IF REMOTE BIT SET C IF(IAND(c1*($IOBUF(2),40B) .NE. 0)GOTO 8050 C C CHECK IF I/O CARD HUNG UP C IF(IOBUF(1) .EQ. IOBUF(2))GOTO 8030 C C FIND RETURNED RANGE C IRS1=IAND(IOBUF(1),60000B) IRS1=IRS1/20000B IF(IOBUF(1) .LT. 0)IRS1=IRS1+4 IRS=3-IRS1 C C CHECK IF UNDERRANGE C IF(IAND(IOBUF(2),20B) .EQ. 0)GOTO 200 ITEMP=IAND(IBUF(1),17B) IF(ITEMP .EQ. 5B .OR. ITEMP .EQ. 10B)GOTO 200 IRS=5 GOTO 2000 C C OVERRANGE ? C 200 IF(IAND(IOBUF(2),10B) .EQ. 0)GOTO 300 IRS=4 GOTO 2000 C C CONVERT RMS READING C 300 R1=IAND(IOBUF(1),17B) R2=(IAND(IOBUF(1),360B)/2**4)*10.0 R3=(IAND(IOBUF(1),7400B)/2**8)*100.0 R4=0.0 IF(IAND(IOBUF(1),10000B) .NE. 0)R4=1000.0 IRS1=IRS1*(-1) VAL=(R1+R2+R3+R4)*10.0**IRS1 IF(IAND(IOBUF(2),4B) .EQ. 0) VAL = -VAL C C RETURN C 2000 IERMS=0 RETURN C C ERROR EXIT C 1000 IERMS=1 GOTO 9000 8020 IERMS=2 GOTO 9000 8030 IERMS=3 GOTO 9000 8050 IERMS=5 GOTO 9000 8090 IERMS=9 9000 IERMS(2)=5 IERMS(3)=2HRM IERMS(4)=2HSM IERMS(5)=2HU RETURN END END$ J*  09580-18298 2001 S C0122 &SGNSU              H0101 zFTN4,L C SUBROUTINE SGNSU(IUNIT,IFUNC,IMODE,FREQ,AMP,OFSET,IOUT), +09580-16298 REV.2001 791023 C C C------------------------------------- C C HP 8165A PROGRAMMABLE SIGNAL SOURCE C (SGNSU) C C RELOCATABLE 09580-16298 C SOURCE 09580-18298 C C V.POVIO 780322 REV. A C R.UNTALAN 790307 REV. B C R.UNTALAN 790426 REV. C C BOB RICHARDS 791023 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8165A PROGRAMMABLE SIGNAL SOURCE. C C HARDWARE REQUIRED: C ------------------ C A. HP 81665A PROGRAMMABLE SIGNAL SOURCE. C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SGNSU(I,I,I,R,R,R,I), OV=XX, ENT=SGNSU, FIL=%SGNSU C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 48,1,5 C U1 C 5 STD=5,OPT 001=7 C 0.0 TEMP STORAGE FOR FREQUENCY C 0.0 TEMP STORAGE FOR FREQUENCY C C C C------------------------------------ C C SGNSU(IUNIT,IFUNC,IMODE,FREQ,AMP,OFSET,IOUT) C C WHERE: C C IUNIT = UNIT # C C IFUNC = FUNCTION C C 1 = SINE WAVE C 2 = TRIANGLE WAVE C 3 = SQUARE WAVE C IMODE = INPUT MODE C C 1 = NORMAL C 2 = VCO C 3 = TRIGGER C 4 = GATE C 5 = BURST C C FREQ = FREQUENCY .001 HZ TO 50.0 MHZ C C AMP = AMPLITUDE C C 10.0 MVPP TO 10.0 VPP (50 OHMS OUTPUT IMPEDANCE) C 2.0 VPP TO 20.0 VPP (1K OHMS OUPUT IMPEDANCE) C C OFSET = OFFSET C C 0 +/- 10 MV TO +/- 5.0 V (50 OHMS) C j(0 +/- 20 MV TO +/- 10.0 V (IK OHMS) C C IOUT = OUTPUT MODE C C 0 = DISABLE C 1 = ENABLE/NORM/50 OHMS C 2 = ENABLE/NORM/1K OHMS C 3 = ENABLE/INV/50 OHMS C 4 = ENABLE/INV/1K OHMS C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 48 / DATA IERMS / 10,5,2HSG,2HNS,2HU / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8165A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XGNSU(LU1,LUIB,IERMS,IUNIT,IFUNC,IMODE,FREQ,AMP,OFSET,IOUT) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XGNSU(LU1,LUIB,IERMS,IU,IFUN,IMDE,FREQ,AMP,OFSET,IOUT), +09580-16298 REV.2001 791023 DIMENSION IERMS(5),IBUF(5),IREG(2),IOBUF(35),AMPL(4) DIMENSION OFSEL(4),IFS(8),IAS(3),RBUF(4),RBUF1(4),CBUF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (CBUF,IBUF(2)) DATA AMPL /.01,10.0,2.0,20.0/ DATA OFSEL /.01,5.0,.02,10.0/ DATA RBUF /1000.0,1.0,.001,.000001/ DATA RBUF1 /.001,.1,100.0,1000.0/ C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB. C LU1 = LU # OF HP8165A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM 6C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(48,IU,1,IBUF,5,IER) IF(IER .NE. 0)RETURN C C CHECK PARAMETERS C IERMS=1 IF(IOUT .EQ. 0) GOTO 1000 C IF(IFUN .LT. 1 .OR. IFUN .GT. 3) GOTO 8000 C IF(IMDE .LT. 1 .OR. IMDE .GT. 5) GOTO 8000 C IF(FREQ .LT. .001) FREQ=.001 IF(FREQ .GT. 50.0E+6) GOTO 8000 C IF(IOUT .LT. 0 .OR. IOUT .GT. 4) GOTO 8000 I1=1 IF(IOUT .EQ. 2 .OR. IOUT .EQ. 4) I1=3 IF(AMP .LT. AMPL(I1)) AMP=AMPL(I1) IF(AMP .GT. AMPL(I1+1)) GOTO 8000 C I2=1 IF(IOUT .EQ. 2 .OR. IOUT .EQ. 4) I2=3 IF(ABS(OFSET) .LT. OFSEL(I2)) OFSET=0.0 IF(ABS(OFSET) .GT. OFSEL(I2+1))GOTO 8000 C IF((AMP+OFSET) .GT. AMPL(I2+1))GOTO 8000 C C CLEAR OUTPUT BUFFER C DO 170 I=1,33 170 IOBUF(I)=2H C C C DO 175 J=1,4 175 IFS(J)=20040B C C C SET UP OUTPUT BUFFER FOR MODE & FUNCTION C IOBUF(1)=2HF0+IFUN IOBUF(2)=2HI0+IMDE C C SET UP OUTPUT BUFFER FOR FREQUENCY C IF1=4 IF(FREQ .LT. 1.0E+6) IF1=3 IF(FREQ .LT. 1000.0) IF1=2 IF(FREQ .LT. 1.0) IF1=1 F2=(FREQ*RBUF(IF1)) CALL F2A(F2,IFS(1)) IOBUF(3)=2HFR IOBUF(4)=2HQ IOBUF(5)=IFS(2) IOBUF(6)=IFS(3) IOBUF(7)=IFS(4) IOBUF(8)=2H IF(IF1 .EQ. 3) IOBUF(8)=2H K IF(IF1 .EQ. 4) IOBUF(8)=2H M IOBUF(9)=2HHZ IF(IF1 .EQ. 1) IOBUF(9)=2HMZ C C STORE FREQUENCY AND AMPLITUDE C CBUF=FREQ CALL TIM(48,IU,2,IBUF,5,IER) IF(IER .NE. 0) RETURN C C C SET UP AMPLITUDE FIRST AT 2V WITH OUTPUT DISABLE. C 2V IS A VOLTAGE SETTING THAT IS BOTH ACCEPTABLE C FOR 50 OHM AND 1 KOHM. C C IOBUF(11)=2HOD IOBUF(12)=2H IOBUF(13)=2HAM IOBUF(14)=2HP2 IOBUF(15)=2HV IOBUF(16)=2H C C SET OUTPUT BUFFER FOR IMPEDANCE C IOBUF(17)=2HO5 IF(IOUT .EQ. 2 .OR. IOUT .EQ. 4) IOBUF(17)=2HO1 C C C C SET OUPUT BUFFER FOR AMPLITUDE C DO 176 J=1,3 176 IAS(J)=20040B IA1=2 IF(AMP .LT. .999) IA1=1 A2=AMP IF(IA1 .LT. 2)A2=AMP*1000.0 CALL F2A(A2,IAS(1)) IOBUF(19)=2HAM IOBUF(21)=2HP IOBUF(22)=IAS(2) IOBUF(23)=IAS(3) IOBUF(24)=2HV IF(IA1 .LT. 2) IOBUF(24)=2HMV IOBUF(25)=2H C C C SET OUTPUT BUFFER FOR OFFSET C DO 177 J=1,3 177 IAS(J)=20040B IO1=2 IF(ABS(OFSET) .LT. 1.0) IO1=1 O2=OFSET IF(O2 .LT. 0.0) O2=-O2 IF(IO1 .LT. 2)O2=O2*1000.0 CALL F2A(O2,IAS(1)) IOBUF(26)=2HOF IOBUF(27)=2HS+ IF(OFSET .LT. 0.0) IOBUF(27)=2HS- IOBUF(28)=IAS(2) IOBUF(29)=IAS(3) IOBUF(30)=2H V IF(IO1 .EQ. 1) IOBUF(30)=2HMV C C SET OUTPUT BUFFER FOR OUPUT MODE C IOBUF(32)=2HOD IF(IOUT .NE. 0) IOBUF(32)=2HOE IOBUF(33)=2HOI IF(IOUT .LT. 3) IOBUF(33)=2HON INUM=33 C GOTO 2000 C C SET UP BUFFER FOR DISABLE MODE C 1000 IOBUF(1)=2HOD INUM=1 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HSG IERMS(4)=2HNS IERMS(5)=2HU RETURN END END$ $"$  09580-18299 1926 S C0122 &SGNLS 8165A DVR37             H0101 2#FTN4,L C SUBROUTINE SGNLS(IUNIT,ISYM),09580-16299 1926 790306 C C------------------------------------- C C HP 8165A PROGRAMMABLE SIGNAL SOURCE C (SGNLS) C C RELOCATABLE 09580-16299 C SOURCE 09580-18299 C C V.POVIO 780322 REV. A C R. UNTALAN 790306 REV. B C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLZOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8165A PROGRAMMABLE SIGNAL SOURCE. C C HARDWARE REQUIRED: C ------------------ C A. HP 8165A PROGRAMMABLE SIGNAL SOURCE. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SGNLS(I,I), OV=XX, ENT=SGNLS, FIL=%SGNLS C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 48,1,5 C U1 C 5 STD=5,OPT 001=7 C 0.0 TEMP STORAGE FOR FREQUENCY C 0.0 TEMP STORAGE FOR FREQUENCY C C C C------------------------------------ C C SGNLS(IUNIT,ISYM) C C WHERE: C C IUNIT = UNIT # C C ISYM = SYMMETRY/DUTY CYCLE C C 1 = 20% C 2 = 50% C 3 = 80% C C NOTE: THIS CALL HAS NO EFFECT IF THE C FUNCTION SELECTED IS SINE WAVE. C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 48 / DATA IERMS / 10,5,2HSG,2HNL,2HS / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8165A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XGNLS(LU1,LUIB,IERMS,IUNIT,ISYM) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C  800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XGNLS(LU1,LUIB,IERMS,IUNIT,ISYM), +09580-16299 1926 790306 DIMENSION IERMS(5),IREG(2),IOBUF(1),IBUF(5) DIMENSION RBUF(1) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (RBUF(1),IBUF(2)) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP8165A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(48,IUNIT,1,IBUF,5,IER) IF(IER .NE. 0)RETURN C C CHECK PARAMETERS C IERMS=1 IF(ISYM .LT. 1 .OR. ISYM .GT. 3) GOTO 8000 IF(ISYM .EQ. 2) GOTO 500 IF(RBUF .GT. 19.99 E+06) GOTO 8000 C C SET UP OUTPUT BUFFER C 500 IOBUF(1)=2HD0+ISYM INUM=1 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HSG P IERMS(4)=2HNL IERMS(5)=2HS RETURN END END$   09580-18300 1926 S C0122 &SGNMD 8165A             H0101 FTN4,L C SUBROUTINE SGNMD(IUNIT,IMD),09580-16300 1926 790426 C C C------------------------------------- C C HP 8165A PROGRAMMABLE SIGNAL SOURCE C (SGNMD) C C RELOCATABLE 09580-16300 C SOURCE 09580-18300 C C V. POVIO 780322 REV. A (SGNFM) FORMERLY C R.UNTALAN 790426 REV. B (SGNMD) C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHOR~-IZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8165A PROGRAMMABLE SIGNAL SOURCE. C C HARDWARE REQUIRED: C ------------------ C A. HP 8165A PROGRAMMABLE SIGNAL SOURCE. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SGNMD(I,I), OV=XX, ENT=SGNMD, FIL=%SGNMD C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 48,1,5 C U1 C 5 STD=5,OPT 001=7 C 0.0 TEMP STORAGE FOR FREQUENCY C 0.0 TEMP STORAGE FOR AMPLITUDE C C C C------------------------------------ C C SGNMD(IUNIT,IMD) C C WHERE: C C IUNIT = UNIT # C C IMD = MODE CONTROL C C 0 = FM OFF C 1 = FM ON C 2 = AM OFF C 3 = AM ON C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 48 / DATA IERMS / 10,5,2HSG,2HNM,2HD / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8165A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XGNMD(LU1,LUIB,IERMS,IUNIT,IMD) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2))  RETURN END C C--------------------------------------------- C SUBROUTINE XGNMD(LU1,LUIB,IERMS,IUNIT,IMD), +09580-16300 1926 790426 DIMENSION IERMS(5),IREG(2),IOBUF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP8165A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C CHECK PARAMETERS C IERMS=1 IF(IMD .LT. 0 .OR. IMD .GT. 3) GOTO 8000 C C SET UP OUTPUT BUFFER C 500 IOBUF(1)=2HFM IF(IMD .GT. 1) IOBUF=2HAM IOBUF(2)=2H0 IF(IMD .EQ. 1 .OR. IMD .EQ. 3) IOBUF(2)=2H1 INUM=2 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HSG IERMS(4)=2HNM IERMS(5)=2HD RETURN END END$ :  09580-18304 1926 S C0122 &PPGMY 8160A             H0101 FTN4,L SUBROUTINE PPGMY(IUNIT,IFUNC,ILOC),09580-16304 1926 790502 C C------------------------------------- C C HP 8160A PROGRAMMABLE PULSE GENERATOR C (PPGMY) C C RELOCATABLE 09580-16304 C SOURCE 09580-18304 C C V.POVIO 780322 REV. A C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8160A PROGRAMMABLE PULSE GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 8160A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C PPGMY(I,I,I), OV=XX, ENT=PPGMY, FIL=%PPGMY C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C C C------------------------------------ C C PPGMY(IUNIT,IFUNC,ILOC) C C WHERE: C C IUNIT = UNIT # C C IFUNC = MEMORY FUNCTION C C 0 = STORE INTO MEMORY LOCATION ILOC (1-9) C 1 = SET INST. TO MEMORY LOCATION ILOC (0-9) C C ILOC = MEMORY LOCATION (0-9) C C MEMORY LOCATION IN INSTRUMENT WHERE C DATA IS TO BE STORED OR RECALLED. C C IF IFUNC=0 AND ILOC=0 PRESET INSTRUMENT C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 49 / DATA IERMS / 10,5,2HPP,2HGM,2HY / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8160A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XPGMY(LU1,LUIB,IERMS,IUNIT,IFUNC,ILOC) IF(IERMS)800,20,800 C C EXIT  C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XPGMY(LU1,LUIB,IERMS,IUNIT,IFUNC,ILOC), +09580-16304 1926 790502 DIMENSION IERMS(5),IBUF(3),IREG(2),IOBUF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP8160A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C CHECK PARAMETERS C IERMS=1 IF(IFUNC .LT. 0 .OR. IFUNC .GT. 1) GOTO 8000 IF(ILOC .LT. 0 .OR. ILOC .GT. 9) GOTO 8000 IF(IFUNC .LT. 1 .AND. ILOC .LT. 1) GOTO 8000 C C SET UP OUTPUT BUFFER C 500 IOBUF(1)=2HST IF(IFUNC .EQ. 1) IOBUF(1)=2HRC IOBUF(2)=2HO0+ILOC IF(IFUNC .EQ. 1) IOBUF(2)=2HL0+ILOC INUM=2 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 88 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HPP IERMS(4)=2HGM IERMS(5)=2HY RETURN END END$ /k  09580-18305 1926 S C0122 &PPGIM 8160A             H0101 ǼFTN4,L SUBROUTINE PPGIM(IUNIT,MODE,IBUR),09580-16305 1926 790502 C C------------------------------------- C C HP 8160A PROGRAMMABLE PULSE GENERATOR C (PPGIM) C C RELOCATABLE 09580-16305 C SOURCE 09580-18305 C C V.POVIO 780424 REV. A C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8160A PROGRAMMABLE PULSE GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 8160A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C PPGIM(I,I,I), OV=XX, ENT=PPGIM, FIL=%PPGIM C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C C C------------------------------------ C C PPGIM(IUNIT,MODE,IBUR) C C WHERE: C C IUNIT = UNIT # C C MODE = INPUT MODE C C 0 = NORMAL C 1 = TRIGGER C 2 = GATE C 3 = BURST C C IBUR = BUST PULSES C C 0-999 PULSES IF MODE = 3. C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 49 / DATA IERMS / 10,5,2HPP,2HGI,2HM / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8160A LU # C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XPGIM(LU1,LUIB,IERMS,IUNIT,MODE,IBUR) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XPGIM(LU1,LUIB,IERMS,IUNIT,MODE,IBUR), +09580-16305 1926 790502 DIMENSION IERMS(5),IREG(2),IOBUF(8),IFS(4) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP8160A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C CHECK PARAMETERS C IERMS=1 IF(MODE .LT. 0 .OR. MODE .GT. 3) GOTO 8000 C IF(MODE .LT. 1)GOTO 77 IF(IBUR .LT. 0 .OR. IBUR .GT. 9999)GOTO 8000 C C C CLEAR BUFFER C DO 55 I=1,3 IOBUF(I+4)=2H 55 IFS(I+1)=2H C SET UP OUTPUT BUFFER FOR MODE C 77 INUM=1 IOBUF(1)=2HI0+(MODE+1) IF(MODE .LT. 3)GOTO 2000 C C C C SET UP OUTPUT BUFFER FOR BURST C C INUM=8 F2=IBUR CALL F2A(F2,IFS(1)) IOBUF(3)=2HBU IOBUF(4)=2HR IOBUF(5)=IFS(2) IOBUF(6)=IFS(3) IOBUF(7)=IFS(4) IOBUF(8)=2HBT C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C C C C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C CAPLL EXEC(100003B,600B+LU1) GOTO 9000 88 CALL ABREG(IA,IB) IF(IB .LT. 0 ) GOTO 8500 C C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HPP IERMS(4)=2HGI IERMS(5)=2HM RETURN END END$   09580-18306 1926 S C0122 &PPGOM 8160A             H0101 μFTN4,L SUBROUTINE PPGOM(IUNIT,AHIL,ALOL,IEN,ISCHN,IZCHN), +09580-16306 1926 790502 C C------------------------------------- C C HP 8160A PROGRAMMABLE SIGNAL SOURCE C (PPGOM) C C RELOCATABLE 09580-16306 C SOURCE 09580-18306 C C R.UNTALAN REV. 1840 C R.UNTALAN REV. 1926 C BOB RICHARDS 790502 C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIԳS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8160A PROGRAMMABLE PULSE GENERATOR C C HARDWARE REQUIRED: C ------------------ C A. HP 8160A PROGRAMMABLE SIGNAL SOURCE. C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C PPGOM(I,R,R,I,I,I), OV=XX, ENT=PPGOM, FIL=%PPGOM C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 49,1,11 C U1 C 2 NUMBER OF CHANNELS 1=CHAN. A ONLY 2=CHAN A&B C 0.0 TEMPORARY STORAGE FOR CHAN A LO-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN A HI-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN B LO-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN B HI-LEVEL C 0 TEMPORARY STORAGE FOR IMPEDANCE C 0 TEMPORARY STORAGE FOR (A SEP B) OR (A ADD B) C C C C C------------------------------------ C C PPGOM(IUNIT,AHIL,ALOL,IEN,ISCHN,IZCHN) C C WHERE: C C IUNIT = UNIT # C C AHIL = HIGH LEVEL AMPLITUDE C -9.89 TO 9.99 WITH 50 OHM IMPEDANCE C -19.7 TO 19.9 WITH 1K OHM IMPEDANCE C ALOL = LOW LEVEL AMPLITUDE C -9.99 TO 9.89 WITH 50 OHM IMPEDANCE C -19.9 TO 19.7 WITH 1K OHM IMPEDANCE C C NOTE: A PARAMETER ERROR WILL RESULT IF ALOL IS GREATER THAN AHIL. C C C C IEN = O!UTPUT ENABLE/OUTPUT DISABLE C C 0 = ENABLE C 1 = DISABLE C C ISCHN = A SEP B * A ADD B C 0 = A SEP B C 1 = A ADD B C C IZCHN = IMPEDANCE*NORM.COMPL.*CHAN C C 0 = 50 OHMS/NORMAL/A CHAN C 1 = 1K OHMS/NORMAL/A CHAN C 2 = 50 OHMS/COMPLEMENT/A CHAN C 3 = 1K OHMS/COMPLEMENT/A CHAN C 4 = 50 OHMS/NORMAL/B CHAN C 5 = 1K OHMS/NORMAL/B CHAN C 6 = 50 OHMS/COMPLEMENT/B CHAN C 7 = 1K OHMS/COMPLEMENT/B CHAN C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 49 / DATA IERMS / 10,5,2HPP,2HGO,2HM / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8160A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XPGOM(LU1,LUIB,IERMS,IUNIT,AHIL,ALOL,IEN,ISCHN,IZCHN) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XPGOM(LU1,LUIB,IERMS,IU,AHIL,ALOL,IEN,ISCHN, +IZCHN),09580-16306 1926 790502 C DIMENSION IERMS(5),IBUF(12),IREG(2),IOBUF(18),IPBUF(2) DIMENSION IN(3),IS(2),IZ(10),KHSTR(6),KLSTR(6) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB),(JSTR,KHSTR),(LSTR,KLSTR) EQUIVALENCE (IBUF(2),ALO) EQUIVALENCE (IBUF(4),AHI) EQUIVALENCE (IBUF(6),BLO) EQUIVALENCE (IBUF(8),BHI) DATA IN /2HEN,2HDI / DATA IS /2HAS,2HAA / DATA IZ /2HA5,2HAN,2HA1,2HAN,2HA5,2HAC,2HA1,2HAC,2H / C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF HP8160A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C IBUFL=11 C C CALL TIM(49,IU,1,IBUF,IBUFL,IER) IF(IER .NE. 0)RETURN C C C C CHECK PREVIOUS AMPLITUDE ON CHAN A C IRCL=0 IFLAG=0 C C C C IF (IZCHN .GT. 3) GOTO 10 C C C C C C IF(ALO .GT. AHIL) IFLAG=1 ALO=ALOL AHI=AHIL GOTO 30 C C C CHECK PREVIOUS CHAN B AMPLITUDE C 10 IF(BLO .GT. AHIL) IFLAG=1 BLO=ALOL BHI=AHIL C C C STORE CURRENT AMPLITUDE AND CHAN SELECT MODE SETTING IN TABLE C 30 IBUF(10)=IZCHN IBUF(11)=ISCHN C C CALL TIM(49,IU,2,IBUF,IBUFL,IER) IF(IER .NE. 0) RETURN C C C C CHECK IF CHAN B AVAILABLE C 20 JMAX=INT(4.0*IBUF(1)) C C C C CHECK PARAMETERS C IERMS=1 INUM=18 IZCHN=IZCHN+1 ICHN=IZCHN ISCHN=ISCHN+1 IEN=IEN+1 C C C IF(ALOL.GT.AHIL) GOTO 8000 IF(ISCHN .LT. 1 .OR. ISCHN .GT. 2) GOTO 8000 IF(IEN .LT. 1 .OR. IEN .GT. 2) GOTO 8000 IF(IZCHN .LT. 1 .OR. IZCHN .GT. JMAX) GOTO 8000 C C IF((IZCHN/2)*2 .NE. IZCHN) GOTO111 C C SET MINIMUM AND MAXIMUM LIMITS FOR 1K OHM IMPEDANCE C ALOMX=19.705 ALOMN=-19.905 AHIMX=19.905 AHIMN=-19.705 DIF=ABS(AHIL-ALOL)+.0005 IF(DIF .GT. AHIMX .OR. DIF .LT. .2001) GOTO 8000 C C GOTO 112 C SET MINIMUM AND MAXIMUM LIMITS FOR 50 OHM IM@EDANCE C C 111 ALOMX=9.8905 ALOMN=-9.9905 AHIMX=9.9905 AHIMN=-9.8905 DIF=ABS(AHIL-ALOL)+.0005 IF(DIF .GT. AHIMX .OR. DIF .LT. .1001) GOTO 8000 C C 112 IF(ALOL.LT.ALOMN.OR.ALOL.GT.ALOMX)GOTO 8000 IF(AHIL.LT.AHIMN.OR.AHIL.GT.AHIMX)GOTO 8000 C C C C CLEAR BUFFER C DO 88 L=1,6 KLSTR(L)=2H 88 KHSTR(L)=2H C C CONVERT HI-LEVEL AND LO-LEVEL TO ASCII C IF(ABS(AHIL).GE..100)GOTO 105 CALL ISOL(AHIL,KHSTR(2),KHSTR(3),KHSTR(4)) C C 100 GOTO 106 C 105 CALL F2A(AHIL,JSTR) C C 106 IF(ABS(ALOL).GE..100) GOTO 108 C C CALL ISOL(ALOL,KLSTR(2),KLSTR(3),KLSTR(4)) C C GOTO 109 C C 108 CALL F2A(ALOL,LSTR) C C C C C C SET INDEX POINTER FOR IMPEDANCE/NORM.COMPL./CHANNEL OUT C 109 IF(IZCHN.GT.4)IZCHN=IZCHN-4 INDX=(2*IZCHN)-1 C C CLEAR OUTPUT BUFFER C DO 333 I=1,18 333 IOBUF(I)=2H C C C C SET UP OUTPUT BUFFER C IOBUF(1)=IS(ISCHN) IOBUF(2)=IN(IEN) IOBUF(3)=IZ(INDX) IOBUF(4)=IZ(INDX+1) IOBUF(5)=2HHI IF(ICHN .LE. 4) IOBUF(6)=2HLA IF(ICHN .GT. 4) IOBUF(6)=2HLB IOBUF(8)=KHSTR(2) IOBUF(9)=KHSTR(3) IOBUF(10)=KHSTR(4) IOBUF(11)=2HV IOBUF(12)=2HLO IF(ICHN .LE. 4) IOBUF(13)=2HLA IF(ICHN .GT. 4) IOBUF(13)=2HLB IOBUF(15)=KLSTR(2) IOBUF(16)=KLSTR(3) IOBUF(17)=KLSTR(4) IOBUF(18)=IOBUF(11) C C CHANGE SIGN IF POSITIVE C IF(AHIL .GT. 0) IOBUF(7)=2H+ IF(ALOL .GT. 0) IOBUF(14)=2H+ C C C C C IF PREVIOUS HI-LEVEL IS LOWER THAN THE CURRENT LO-LEVEL C THEN OUTPUT THE LO-LEVEL FIRST AND HI-LEVEL SECOND. C IF(IFLAG .EQ. 0) GOTO 510 C C IOBUF(5)=2HLO IF(ICHN .LE. 4) IOBUF(6)=2HLA IF(ICHN .GT. 4) IOBUF(6)=2HLB IOBUF(8)=KLSTR(2) IOBUF(9)=KLSTR(3) IOBUF(10)=KLSTR(4) IOBUF(12)=2HHI IF(ICHN .LE. 4) IOBUF(13)=2HLA IF(ICHN .GT. 4) IOBUF(13)=2HLB IOBUF(15)=KHSTR(2) IOBUF(16)=KHSTR(3) IOBUF(17)=KHSTR(4) C C IF(AHIL .GT. 0) IOBUF(14)=2H+ IF(ALOL .GT. 0) IOBUF(7)=2H+ C C C CHANGE BUFFER IF CHAN B SELECTED C 510 IF(ICHN.LT.5) GOTO 1999 IOBUF(3)=IOBUF(3)+400B IOBUF(4)=IOBUF(4)+400B C C C C 1999 IF(IBUF(1) .EQ. 2) GOTO 2000 C C DO NOT OUTPUT CHAN. INDICATOR C IOBUF(1)=2H IOBUF(6)=IAND(177400B,IOBUF(6)) IOBUF(13)=IAND(177400B,IOBUF(13)) C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C SEND OUTPUT BUFFER C 2100 CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C CALL EXEC(100003B,600B+LU1) GOTO 9000 66 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HPP IERMS(4)=2HGO IERMS(5)=2HM RETURN END C C C C C C------------------------------------ C C C THIS SUBROUTINE CONVERTS NUMBERS WHICH ABSOLUTE VALUE IS <.01 C INTO AN ASCII STRING (IWD1,IWD2,IWD3) C C C SUBROUTINE ISOL (ANUM,IWD1,IWD2,IWD3), +09580-16306 1926 790502 C C TEMP=ANUM ANUM=ABS(ANUM) C C C CONVERT DIGITS TO ASCII C I2=INT(ANUM*100.) R2=I2 IAS2=I2+60B I3=INT(ANUM*1000.01-R2*10.) IAS3=I3+60B C C C CHECK IF ANUM IS NEGATIVE C IF(TEMP.LT.0) GOTO 300 C C IWD1=2H.0 IWD3=2H C IF(ANUM.GE..01) GOTO 310 C IWD2=IOR(30000B,IAS3) C C RETURN C C 310 IAS2=IAS2*2**8 IWD2=IOR(IAS2,IAj*($S3) C C RETURN C C C PROCESS NEGATIVE NUMBER C C 300 IWD1=2H-. IAS3=IAS3*2**8 IWD3=IAND(177400B,IAS3) C C IF(ANUM.GE..01) GOTO 400 C C IWD2=2H00 C C RETURN C C 400 IWD2=IOR(30000B,IAS2) C C RETURN C C END END$ *  09580-18307 1926 S C0122 &PPGSS 8160A             H0101 FTN4,L SUBROUTINE PPGSS(IUNIT,PER,MOD,DEL,WID,RL,TE,ICHAN),09580-16307 +1926 790321 C C------------------------------------- C C HP 8160A PROGRAMMABLE PULSE GENERATOR C (PPGSS) C C RELOCRABLE 09580-16307 C SOURCE 09580-18307 C C R.UNTALAN REV. 1840 C R.UNTALAN REV. 1926 MARCH 21,1979 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECTI THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 8160A PROGRAMMABLE PULSE GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 8160A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C PPGSS(I,R,I,R,R,R,R,I), OV=XX, ENT=PPGSS, FIL=%PPGSS C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C R 49,1,11 C U1 C 2 NUMBER OF CHANNELS AVAILABLE 1=CHAN A 2=CHAN A &CHAN B C 0.0 TEMPORARY STORAGE FOR CHAN A LO-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN A HI-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN B LO-LEVEL C 0.0 TEMPORARY STORAGE FOR CHAN B HI-LEVEL C 0 TEMPORARY STORAGE FOR IMPEDANCE C 0 TEMPORARY STORAGE FOR A SEP B OR A ADD B C C C C C C------------------------------------ C C PPGSS(IUNIT,PER,MODE,DEL,WID,RL,TE,ICHAN) C C WHERE: C C IUNIT = UNIT # C C PER = PERIOD C 20.0NS TO 999MS (SEE TABLE 1) C +1 = EXTERNAL POSITIVE SLOPE C -1 = EXTERNAL NEGATIVE SLOPE C C MOD = MODE OF DELAY C 0=NORMAL C 1=DOUBLE PULSE (DBL) C C C DEL = DELAY C IF MODE=0 , 0.00NS TO 999 MS C C DELAY IS PROGRAMMABLE TO 94% OF PERIOD VALUE - 30 NS. C C DELAYS LESS THAN 50 NS CAN BE PROGRAMMED WITHOUT C LIMITATION FROM THE PERIOD VALUE. C C IF MODE=1 (DOUBLE PULSE) 20 NS TO 999MS C C C WID = WIDTH C 10.0NS TO 999 MS (SEE TABLE 1) C C WIDTH IS PROGRAMMABLE TO 94% OF PERIOD VALUE - 30NS. C (0.94 PER - 8 NS FOR WID <50 NS) C C C C RL = LEADING EDGE C 6 NS TO 9.99 MS (SEE TABLE 1) C C TE = TRAILING EDGE C 6 NS TO 9.99MS (SEE TABLE 1) C C LEADING EDGE AND TRAILING EDGE ARE INDEPENDENTLY C PROGRAMMABLE WITHIN A COMMON RANGE. RANGES ARE C OVERLAPPING AS SHOWN BELOW. C C 06.0 NS - 99.9 NS ! 05.0 US - 99.9 US C 050 NS - 999 NS ! 050 US - 999 US C 0.50 US - 9.99 US ! .50 MS - 9.99 MS C C PROGRAMMABILITY WITHOUT LOSS OF AMPLITUDE C ----------------------------------------- C C LEADING EDGE: 70% WID C TRAILING EDGE: 70% * (0.94*PER - WID) C C C NOTE: SLOPE ERROR IS NORMAL WHEN PROGRAMMED VALUES ARE VERY C CLOSE TO THE LIMITS OF THE INSTRUMENT. C C C ICHAN = CHANNEL C 0 = A C 1 = B C C C TABLE 1: OUTPUT MODES & TIMING (8160 INTO 50 OHM) C------------------------------------------------------------------- C ! ! ! ! ! C OUTPUT MODE ! PER ! WID ! DEL ! LEE/TRE ! C ! ! ! ! ! C ! ! ! ! MIN ! ACCURACY ! C------------------------------------------------------------------- C ! ! ! ! ! ! C A SEP B ! 20 NS! 10 NS ! 1% +/- 1NS ! 6.0 NS ! 3% +/- 1 NS ! C 50 OHM ! [ ! ! ! ! ! C ! ! ! ! ! ! C A SEP B ! 25 NS ! 12.5NS!1% +/- 2.5NS ! 8.0 NS ! 3% + - 2NS ! C 1K OHM ! ! ! ! ! ! C ! ! ! ! ! ! C A ADD B ! 50 NS ! 25 NS ! 1% +/- 6 NS! 15 NS ! 3% +/- 4 NS ! C 50 OHM ! ! ! ! ! ! C ! ! ! ! ! ! C A ADD B ! 50 NS ! 25 NS ! 1% +/- 6 NS! 15 NS ! 3% +/- 4 NS ! C 1K OHM ! ! ! ! ! ! C ! ! ! ! ! ! C------------------------------------------------------------------- C C DIMENSION IERMS(5) DATA IDTN / 49 / DATA IERMS / 10,5,2HPP,2HGS,2HS / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 8160A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XPGSS(LU1,LUIB,IERMS,IUNIT,PER,MOD,DEL,WID,RL,TE,ICHAN) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XPGSS(LU1,LUIB,IERMS,IUNIT,PER,MOD,DEL,WID,RL,TE, +ICHAN),09580-16307 1926 790321 DIMENSION IERMS(5),IREG(2),ITME(4),IDLY(3) DIMENSION IOBUF(35),IPS(4),IPBUF(17),IR(2),IBUF(11) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA IDLY / 2HDE,2HDB / DATA ITME /2HMS,2HUS,2HNS / C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP8160A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C C C C READ CONFIGURATION TABLE FOR 8160 C CALL TIM(49,IUNIT,1,IBUF,11,IER) IF(IER .NE. 0) RETURN C C CHECK WHICH MODE OF OUTPUT IS CURRENTLY SELECTED C (A SEP B) OR (A ADD B) C IF(IBUF(11) .EQ. 1) GOTO 555 C IF((IBUF(10)/2)*2 .NE. IBUF(10)) GOTO 444 C C SET MINIMUM LIMITS FOR A SEP B , 50 OHM C PERMN=20E-9 WIDMN=10E-9 RLMIN=6E-9 C GOTO 666 C C SET MINIMUM LIMITS FOR A SEP B ,1K OHM C 444 PERMN=25E-9 WIDMN=12.5E-9 RLMIN=8E-9 C GOTO 666 C C C SET MINIMUM LIMITS FOR A ADD B, 50 OHM OR 1K OHM C 555 PERMN=50E-9 WIDMN=25E-9 RLMIN=15E-9 C C 666 MAX=IBUF-1 C C C C C C C CHECK PARAMETERS C C INUM=29 KNUM=16 C IF (PER .GE. 0 .AND. PER .LE. PERMN) PER=PERMN IF(WID .GE. 0 .AND. WID .LE. WIDMN) WID=WIDMN IF (RL .GE. 0 .AND. RL .LE. RLMIN) RL=RLMIN IF (TE .GE. 0 .AND. TE .LE. RLMIN) TE=RLMIN C C C C C C C C IERMS=1 IF(PER .LT. 20.0E-9 .OR. PER .GT. 0.999)GOTO 77 GOTO 78 77 IF(PER .NE. 1.0 .OR. PER .NE. -1.0) GOTO 8000 C 78 IF(MOD .LT. 0 .OR. MOD .GT. 1) GOTO 8000 C IF(DEL .LT. 0.0 .OR. DEL .GT. .999) GOTO 8000 C IF(MOD .EQ.1 .AND. DEL .LT. 20E-9) GOTO 8000 C 80 IF(WID .LT. WIDMN) GOTO 8000 C IF(PER .LT. PERMN)/ GOTO 8000 IF(TE .LT. 5.0E-9 .OR. TE .GT. .00999) GOTO 8000 C C CHECK IF VALID CHANNEL SELECTED C IF(ICHAN .LT. 0 .OR. ICHAN .GT. MAX) GOTO 8000 C C C C C SET MAXIMUM LIMITS LEE/TRE, AND PERIOD C RLMAX=.7*WID - 1E-9 TEMAX=.7*(.94*PER-WID) PERMX=.999 C C IF(TEMAX .LT. RLMIN) TEMAX=RLMIN IF(RLMAX .LT. RLMIN) RLMAX=RLMIN C C C CHECK LEADING AND TRAILING EDGES FOR MAXIMUM LIMIT C C C C C IF(RL .GT. RLMAX) GOTO 8000 IF(TE .GT. TEMAX) GOTO 8000 IF(PER .GT. PERMX) GOTO 8000 C C C C C C CHECK IF LEADING EDGE AND TRAILING EDGE ARE C ON THE SAME RANGE. IF NOT, THEN CHECK THE LOWER IF C WITHIN THE OVERLAP. IF NOT WITHIN THE OVERLAP THEN C ERROR-1. C DO 66 I=1,2 C IF(I .EQ. 1) TNUM=RL IF(I .EQ. 2) TNUM=TE C IRNG=1 RMAX=100E-9 C 34 IF(TNUM-RMAX) 33,32 C 32 RMAX=RMAX*10.0 IRNG=IRNG+1 GOTO 34 C C 33 IR(I)=IRNG 66 CONTINUE C IF(IR .EQ. IR(2)) GOTO 87 C C C IRDIF=IABS(IR(1)-IR(2)) IF(IRDIF .GE. 2) GOTO 8000 C C IF(RL-TE) 61,87,51 C C 51 IF(IR .EQ. 6 .AND. TE .LT. 500E-6) GOTO 8000 IF(IR .EQ. 5 .AND. TE .LT. 500E-7) GOTO 8000 IF(IR .EQ. 4 .AND. TE .LT. 500E-8) GOTO 8000 IF(IR .EQ. 3 .AND. TE .LT. 500E-9) GOTO 8000 IF(IR .EQ. 2 .AND. TE .LT. 50E-9 ) GOTO 8000 GOTO 87 C C 61 IF(IR(2) .EQ. 6 .AND. RL .LT. 500E-6) GOTO 8000 IF(IR(2) .EQ. 5 .AND. RL .LT. 500E-7) GOTO 8000 IF(IR(2) .EQ. 4 .AND. RL .LT. 500E-8) GOTO 8000 IF(IR(2) .EQ. 3 .AND. RL .LT. 500E-9) GOTO 8000 IF(IR(2) .EQ. 2 .AND. RL .LT. 50E-9 ) GOTO 8000 C C C C CHECK WIDTH AND DELAY PARAMETER C C 87 WMAX=(.94*PER)-3.0E-8 C C DMAX=WMAX IF(DMAX .LE. 49E-9) DMAX=49E-9 C IF(WID .LT. 50E-9) WMAX = (.94*PER) - 8E-9 C C C C C IF(MOD .EQ. 0) GOTO 99 C C C C C SET MAXIMUM JLIMIT FOR WIDTH IF DBL IS ALSO SELECTED C C 89 IF(WID .GE. 50E-9) WMAX=(.98*DEL)-30E-9 C IF(WID .LT. 50E-9) WMAX=(.98*DEL) -8E-9 C C C C C 99 IF(WID .GE. WMAX) GOTO 8000 IF(DEL .GE. DMAX) GOTO 8000 C C C SET UP OUTPUT BUFFER FOR PERIOD C IF (ABS(PER) .EQ. 1.0) GOTO 22 C CALL SCAL(PER,BNUM,INDX) C C 10 CALL F2A(BNUM,IPS) IOBUF(1)=2HPE IOBUF(2)=2HR IOBUF(3)=IPS(2) IOBUF(4)=IPS(3) IOBUF(5)=ITME(INDX) GOTO 21 C C 22 IF(PER .EQ. -1.0) IOBUF(1)=2HE2 IF(PER .EQ. 1.0) IOBUF(1)=2HE1 IOBUF(2)=2H IOBUF(3)=2H IOBUF(4)=2H IOBUF(5)=2H C C C SET OUTPUT BUFFER FOR DELAY MODE C 21 IOBUF(6)=2H IOBUF(7)=IDLY(MOD+1) IOBUF(8)=2HL IF(IBUF .GT. 1) IOBUF(8)=2HLA+ICHAN C C CLEAR STRING BUFFER C DO 100 I=1,4 100 IPS(I)=2H C C C SET OUTPUT BUFFER FOR DELAY SETTING C CALL SCAL(DEL,BNUM,INDX) 20 CALL F2A(BNUM,IPS) IOBUF(9)=IPS(2) IOBUF(10)=IPS(3) IOBUF(11)=ITME(INDX) C C CLEAR STRING BUFFER C DO 200 I=1,4 200 IPS(I)=2H C C C SET OUTPUT BUFFER FOR WIDTH C CALL SCAL(WID,BNUM,INDX) 30 CALL F2A(BNUM,IPS) IOBUF(12)=2H IOBUF(13)=2HWI IOBUF(14)=42101B+ICHAN IOBUF(15)=IPS(2) IOBUF(16)=IPS(3) IOBUF(17)=ITME(INDX) IOBUF(18)=2H C C CLEAR BUFFER STRING C DO 300 I=1,4 300 IPS(I)=2H C C C SET OUTPUT BUFFER FOR LEADING EDGE C CALL SCAL(RL,BNUM,INDX) 40 CALL F2A(BNUM,IPS) IOBUF(19)=2HLE IOBUF(20)=42501B+ICHAN IOBUF(21)=IPS(2) IOBUF(22)=IPS(3) IOBUF(23)=ITME(INDX) IOBUF(24)=2H C C CLEAR BUFFER STRING C DO 500 I=1,4 500 IPS(I)=2H C C C SET OUPUT BUFFER FOR TRAILING EDGE C CALL SCAL(TE,BNUM,INDX) 50 CALL F2A(BNUM,IPS) IOBUF(25)=2HTR IOBUF(26)=42501B+ICHAN IOBUF(27)=IPS(2) IOjBUF(28)=IPS(3) IOBUF(29)=ITME(INDX) C C CLEAR STRING BUFFER C DO 600 I=1,4 600 IPS(I)=2H C C C DO NOT OUTPUT CHANNEL INDICATOR IF UNIT IS A SINGLE CHAN. C IF(IBUF .EQ. 2) GOTO 700 C IOBUF(8)=IAND(IOBUF(8),177400B) IOBUF(14)=IAND(IOBUF(14),177400B) IOBUF(20)=IAND(IOBUF(20),177400B) IOBUF(26)=IAND(IOBUF(26),177400B) C C C C C C PRESET UNIT TO MINIMUM VALUES C C 700 IPBUF(1)=IOBUF(19) IPBUF(2)=IOBUF(20) IPBUF(3)=2H5 IPBUF(4)=2HNS IPBUF(5)=IOBUF(25) IPBUF(6)=IOBUF(26) IPBUF(7)=2H5 IPBUF(8)=IPBUF(4) IPBUF(9)=IOBUF(13) IPBUF(10)=IOBUF(14) IPBUF(11)=2H10 IPBUF(12)=IPBUF(4) IPBUF(13)=2HDE IPBUF(14)=IOBUF(8) IPBUF(15)=2H00 IPBUF(16)=IPBUF(4) C C C C C C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C C INITIALIZE UNIT FIRST C KNUM=16 122 CALL REIO(100002B,LU1,IPBUF(1),KNUM,IDUMY,0) GOTO 9000 65 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C 123 CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 88 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HPP IERMS(4)=2HGS IERMS(5)=2HS RETURN END C C------------------------------------------- C C SUBROUTINE SCAL(ANUM,BNUM,INDX),09580-16307 1926 790321 C C IF(ANUM .LE. .999) BNUM=ANUM*1E3 IF(ANUM .LE. .999E-3)BNUM=ANUM*1E6 IF(ANUM .LE. .999E-6)BNUM=ANUM*1E9 C C INDX=1 IF(ANUM .LE. .996409E-3) INDX=2 IF(ANUM .LE. .999E-6) INDX=3 C C RETURN END END$ 6  09580-18308 1926 S C0122 &VARPG WTK-152             H0101 FTN4,L SUBROUTINE VARPG(IU,IC,IFU,FREQ,AMP,FSET,PHASE), +09580-16308 1926 790502 C C------------------------------------- C C WAVETEK 152 VARIPHASE GENERATOR C (VARPG) C C RELOCATABLE 09580-16308 C SOURCE 09580-18308 C C V.POVIO 780510 REV. A C C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR T ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE WAVETEK 152 VARIPHASE GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. WAVETEK 152 VARIPHASE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C VARPG(I,I,I,R,R,R,R), OV=XX, ENT=VARPG, VARPG C C C------------------------------------ C C VARPG(IU,IC,IFU,FREQ,AMP,FSET,PHASE) C C WHERE: C C IU = UNIT # C C IC = CHANNEL # (1-9) C C IFU = FUNCTION C 0 = SINE C 1 = COSINE C 2 = TRIANGLE C 3 = VARIPHASE SINE C 4 = DC C 5 = SQUARE C 6 = VARIPHASE SQUARE C C FREQ = FREQUENCY C 1.00 HZ TO 100 KHZ (3 DIGIT RESOLUTION) C C AMP = AMPLITUDE PEAK VOLTAGE C DC = -9.99 VDC TO +9.99 VDC (3 DIGIT RESOLUTION) C ALL OTHERS = .010 VOLTS TO 9.99 VOLTS C * IF "-" INDICATES INVERTED SIGNAL. C * TRIANGLE AND VARIPHASE SIN CANNOT BE INVERTED. C C FSET = OFFSET C -9.99 TO +9.99 C * SIGNAL LEVEL PLUS OFFSET VOLTAGE MUST NOT C EXCEED +/- 9.99 VOLTS PEAK. C C PHASE = PHASE ANGLE C 000.0 TO 359.9 DEGREES (.1 DEGREE RESOLUTION) C C-----------+------------------------- DIMENSION IERMS(5) DATA IDTN / 50 / DATA IERMS / 10,5,2HVA,2HRP,2HG / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = WTK 152 LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IU) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XARPG(LU1,LUIB,IERMS,IU,IC,IFU,FREQ,AMP,FSET,PHASE) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XARPG(LU1,LUIB,IERMS,IU,IC,IFU,FREQ,AMP,FSET,PHA), +09580-16308 1926 790502 DIMENSION IERMS(5),IOBUF(30),IFS(6),IAS(6),IOS(6),IPS(6) DIMENSION IMUL(6) DATA IMUL /2,1,0,-1,-2,-3/ C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF WAVETEK 152 C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C CHECK PARAMETERS C IERMS=1 IF(IC .LT. 1 .OR. IC .GT. 9) GOTO 8000 IF(IFU .LT. 0 .OR. IFU .GT. 6) GOTO 8000 IF(FREQ .LT. 1.0 .OR. FREQ .GT. 99900.0) GOTO 8000 IF(AMP .LT. -9.99 .OR. AMP .GT. 9.99) GOTO 8000 IF(FSET .LT. -9.99 .OR. FSET .GT. 9.99) GOTO 8000  IF(PHA .LT. 0.0 .OR. PHA .GT. 359.9) GOTO 8000 C C CLEAR BUFFERS C DO 850 J=1,6 IFS(J)=20040B IAS(J)=20040B IOS(J)=20040B IPS(J)=20040B 850 CONTINUE C C SET UP OUTPUT BUFFER C IOBUF(1)=2HB0+IC IOBUF(2)=2HC0+IFU C C FREQUENCY C I1=0 IF(FREQ .GT. 9.99) I1=1 IF(FREQ .GT. 99.9) I1=2 IF(FREQ .GT. 999.0) I1=3 IF(FREQ .GT. 9990.0) I1=4 FREQ1=(FREQ*10.0**(IMUL(I1+1))) IFREQ=(FREQ1+.001) FREQ=IFREQ CALL F2A(FREQ,IFS(1)) IOBUF(3)=2H F IOBUF(4)=IFS(2) IOBUF(5)=(IAND(IFS(3),177400B))+105B IOBUF(6)=(30000B+(I1*2**8))+101B C C AMPLITUDE C I2=0 IF(AMP .LT. 1.0)I2=1 IF(AMP .LT. 0.1)I2=2 AMP=AMP*10.0**(I2) IAMP=INT(AMP*100) AMP=IAMP CALL F2A(AMP,IAS) IOBUF(7)=IAS(2) IOBUF(8)=(IAND(IAS(3),177400B))+105B IOBUF(9)=(30000B+(I2*2**8))+104B C C OFFSET C I3=0 IF(FSET .LT. 0.0) I3=1 IF(FSET .LT. 0.0) FSET=-FSET IFSET=INT(FSET*100.0) FSET=IFSET CALL F2A(FSET,IOS) IOBUF(10)=IOS(2) I4=40B IF(I3 .GT. 0.0)I4=55B IOBUF(11)=(IAND(IOS(3),177400B))+I4 C C PHASE C IPHA=INT(PHA*10.0) PHA=IPHA CALL F2A(PHA,IPS) IOBUF(12)=2H H IOBUF(13)=IPS(2) IOBUF(14)=IPS(3) IOBUF(15)=2HI INUM=15 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HVA IERMS(4)=2HRP IERMS(5)=2HG RETURN END END$ v  09580-18309 1926 S C0122 &SFGMY 3325A             H0101 FTN4,L SUBROUTINE SFGMY(IUNIT,IFUNC,ILOC), +09580-16309 1926 790502 C C------------------------------------- C C HP 3325A SYNTHESIZER*FUNCTION GENERATOR C (SFGMY) C C RELOCATABLE 09580-16309 C SOURCE 09580-18309 C C R.UNTALAN 780914 REV. A C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 3325A SYNTHESIZER*FUNCTION GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 3325A SYNTHESIZER*FUNCTION GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFGMY(I,I,I), OV=XX, ENT=SFGMY, FIL=%SFGMY C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C C C------------------------------------ C C SFGMY(IUNIT,IFUNC,ILOC) C C WHERE: C C IUNIT = UNIT # C C IFUNC = MEMORY FUNCTION C C 0 = STORE INTO MEMORY LOCATION ILOC (0-9) C 1 = SET INST. TO MEMORY LOCATION ILOC (0-9) C C ILOC = MEMORY LOCATION (0-9) C C MEMORY LOCATION IN INSTRUMENT WHERE C DATA IS TO BE STORED OR RECALLED. C C IF IFUNC=0 AND ILOC=0 PRESET INSTRUMENT C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HGM,2HY / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3325A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFGMY(LU1,LUIB,IERMS,IUNIT,IFUNC,ILOC) IF(IERMS)800,20,80B0 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFGMY(LU1,LUIB,IERMS,IUNIT,IFUNC,ILOC), +09580-16309 1926 790502 DIMENSION IERMS(5),IBUF(3),IREG(2),IOBUF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP3325A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C CHECK PARAMETERS C IERMS=1 IF(IFUNC .LT. 0 .OR. IFUNC .GT. 1) GOTO 8000 IF(ILOC .LT. 0 .OR. ILOC .GT. 9) GOTO 8000 C C SET UP OUTPUT BUFFER C 500 IOBUF(1)=2HSR IF(IFUNC .EQ. 1) IOBUF(1)=2HRE IOBUF(2)=(60B+ILOC)*2**8 INUM=-3 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 88 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HSF IERMS(4)=2HGM IERMS(5)=2HY RETURN END END$ r}  09580-18310 1926 S C0122 &SFGEN 3325A             H0101 FTN4,L SUBROUTINE SFGEN(IUNIT,FKHZ,FHZ), +09580-16310 1926 790502 C C------------------------------------- C C HP 3325A SYNTHESIZER*FUNCTION GENERATOR C (SFGEN) C C RELOCATABLE 09580-16310 C SOURCE 09580-18310 C C R.UNTALAN 780917 REV. A C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! fC ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP3325A SYNTHESIZER*FUNCTION GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP3325A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFGEN(I,R,R), OV=XX, ENT=SFGEN, FIL=%SFGEN C SFSWP(I,I,R,R,R,R,R,R,R), OV=XX, ENT=SFSWP, FIL=%SFGEN C C C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C R 29,1,4 C U1 C 0 ENTER 0 FOR STANDARD UNIT OR 1 FOR OPT.002 C 0 TEMPORARY STORAGE FOR WAVE FORM FUNCTION C 0.0 TEMPORARY STORAGE FOR DC-OFFSET C C C C C C C------------------------------------ C C SFGEN(IUNIT,FKHZ,FHZ) C C WHERE: C C IUNIT = UNIT # C C C FKHZ = FREQUENCY IN KILOHERTZ (NOTE: TOTAL FREQUENCY = FKHZ+FHZ) C C ALL WAVEFORMS 1HZ RESOLUTION (.001KHZ) C DIGITS BEYOND THE ONE THOUSANDTH PLACE ARE NOT ACCEPTED. C C SINE FUNCTION C ------------- C 0 KHZ TO 20,999kHZ C C C SQUARE FUNCTION C --------------- C 0 KHZ TO 10,999kHZ C C C TRIANGLE/RAMPS FUNCTION C ----------------------- C 0 KHZ TO 10.999kHZ C C C C FHZ= FREQUENCY IN HERTZ C C SINE FUNCTION C ------------- C 0 Hz TO 999,999Hz C C C SQUARE FUNCTION C --------------- C 0 Hz TO 999,999Hz C C C TRIANGLE/RAMPS FUNCTION C 0 H TO 10,999Hz C C C C C **NOTE: TOTAL FREQUENCY SETTING IS EQUAL TO FKHZ+FHZ C C C FREQUECY RANGE ARE AS FOLLOWS: C ============================= C C Sine: 1uHz TO 20.999 999 999 MHz C Square: 1uHz TO 10.999 999 999 MHz C Triangle/Ramps: 1uHz TO 10.999 999 999 kHz C C C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HGE,2HN / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3325A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFGEN(LU1,LUIB,IERMS,IUNIT,FKHZ,FHZ) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFGEN(LU1,LUIB,IERR,IU,FKHZ,FHZ), +09580-16310 1926 790502 C--------------------------------------------- C C DIMENSION IERMS(5),IERR(5),IFREQ(20),ISTR(5),IREG(2) DIMENSION IBUF(4),IOBUF(10) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB),(IOBUF(1),IFREQ(1)) C C IERR=0 C C C ESTABLISH MIN. AND MAX. LIMITS C C HZMAX=1000 HZMIN=0 C FKMAX=21000 FKMIN=HZMIN C C C C C RETRIEVE CURRENT WAVEFORM FUNCTION FROM CONFIGURATION TABLE C CALL TIM(29,IU,1,IBUF,4,IER) IF(IER .NE. 0) RETURN C C IF(IBUF(2) .EQ. 1) FKMAX=11000 C IF(IBUF(2) .GT. 1) FKMAX=11 C IF(IBUF(2) .GT. 1) HZMAX=11000 C C C C C C C C C CHECK PARAMETERS C FHZ=FHZ+.00000005 Pl FKHZ=FKHZ+.000005 C C C C IF(FKHZ .LT. FKMIN .OR. FKHZ .GE. FKMAX) GOTO 8000 C IF(FHZ .LT. HZMIN .OR. FHZ .GE. HZMAX) GOTO 8000 C C C C BLANK BUFFERS C DO 10 I=1,17 10 IFREQ(1+I)=2H C DO 22 I=1 ,5 22 ISTR(I)=2H C C C C CALL FR2A(FHZ,FKHZ,IFREQ) C C C CHECK IF TOTAL FREQUENCY EXCEEDS MAXIMUM C IFR=1 ILST=6 C IF(IBUF(2) .LT. 2) GOTO 900 C IFR=4 C 900 CALL A2F(IFREQ,IFR,ILST,VALU) C C C C IF(VALU .GE. FKMAX) GOTO 8000 C C C C IOBUF(1)=2HFR C=================================== C C C C C REMOTE ENABLE C 3000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 3010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C ICNT=10 C 3020 CALL REIO(100002B,LU1,IOBUF(1),ICNT,IDUMY,0) GOTO 9000 3030 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C RETURN C C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 3100 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HSF IERR(4)=2HGE IERR(5)=2HN RETURN END C C C SUBROUTINE SFSWP(IU,ISWP,TSWP,STKZ,STHZ,SPKZ,SPHZ,SMKZ,SMHZ), +09580-16310 1926 790502 C C------------------------------------ C C SFSWP(IU,ISWP,TSWP,STKZ,STHZ,SPKZ,SPHZ,SMKZ,SMHZ) C C WHERE: C C IU = UNIT # C C ISWP= SWEEP MODE C 0= LINEAR /RESET AND START SINGLE SWEEP C 1= LINEAR /RESET AND START CONTINUOS SWEEP C 2= LOG /RESET AND START SINGLE SWEEP C 3= LOG /RESET AND START CONTINUOUS SWEEP C 4= RESET TO START FREQUENCY ONLY (STOPS SWEEP) C C NOTE: IF UNIT IS CURRENTLY SWEEPING ,IT IS NECESSARY TO C RESET THE UNIT FIRST (ISWP=4) BEFORE STARTING ANOTHER C TYPE OF SWEEP. ANOTHER ALTERNATIVE IS TO REPEAT THE C CALL TWICE. C C C TSWP= SWEEP TIME C C FOR LINEAR SWEEP C ---------------- C .01 SEC. TO 99.99 SEC C C FOR LOG SWEEP C ---------------- C SINGLE : 2 SEC TO 99.99 SEC C CONTINUOUS : .1 SEC TO 99.99 SEC C C STKZ= START FREQUENCY IN KILOHERTZ C SPKZ= STOP FREQUENCY IN KILOHERTZ C SMKZ= MARKER FREQUENCY IN KILOHERTZ C C RESOLUTION FOR THE KHZ PARAMETER IS 1 HZ (.001 KHZ) C ANY DIGIT PASS THE ONE THOUSANDTH PLACE IS NOT ACCEPTED. C C C FREQUENCY IN KILOHERTZ (NOTE: TOTAL FREQUENCY = KHZ+ HZ) C FOR LOG SWEEP MINIMUM FREQUECY IS 1 HZ. C C SINE FUNCTION C ------------- C 0 kHZ TO 20,999kHZ C C C SQUARE FUNCTION C --------------- C 0 kHZ TO 10,999kHZ C C C TRIANGLE/RAMPS FUNCTION C ----------------------- C 0 kHZ TO 10.999kHZ C C C STHZ=START FREQUENCY IN HERTZ C SPHZ=STOP FREQUENCY IN HERTZ C SMHZ=MARKER FREQUENCY IN HERTZ C C C RESOLUTION IS 1 UHZ (.000001HZ) . C C C FREQUENCY IN HERTZ C C SINE FUNCTION C ------------- C 0 HZ TO 999 HZ C C C SQUARE FUNCTION C --------------- C 0 Hz TO 999 HZ C C C TRIANGLE/RAMPS FUNCTION C 0 HZ TO 999 HZ C C C C C **NOTE: TOTAL FREQUENCY SETTING IS EQUAL TO FKHZ+FHZ C TOTAL FREQUENCY CANNOT NOT BE LESS THAN 1 UHZ. C ********************************************** C C C FREQUECY RANGE ARE AS FOLLOWS: C ============================= C C Sine: 1uHz TO 20.999 999 999 MHz C Square: 1uHz TO 10.999 999 999 MHz YC Triangle/Ramps: 1uHz TO 10.999 999 999 kHz C C C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HGE,2HN / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C L1 = HP 3325A LU C L2 = 59310 LU C ISTN=ISN(DUMMY) L1=LUDV(ISTN,IDTN,IU) L2=IBLU0(L1) IF(L1 .LE. 0 .OR. L2 .LE. 0)GOTO 800 C C CALL X SUB C CALL XFSWP(L1,L2,IERMS,IU,ISWP,TSWP,STKZ,STHZ,SPKZ,SPHZ,SMKZ,SMHZ) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFSWP(L1,L2,IERR,IU,ISWP,TSWP,STKZ,STHZ,SPKZ,SPHZ, +SMKZ,SMHZ),09580-16310 1926 790502 C--------------------------------------------- C C DIMENSION IERR(5),IFREQ(10),IREG(2) DIMENSION IBUF(4),IWBUF(10),IOBUF(10),IQBUF(10) DIMENSION IPBUF(10),ITBUF(10),IMBUF(10) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C IERR=0 C C C ESTABLISH MIN. AND MAX. LIMITS C C HZMAX=1000 HZMIN=0 SZMIN=HZMIN ZMIN=HZMIN C FKMAX=21000 FKMIN=.001 SKMIN=FKMIN RKMIN=FKMIN C C C C RETRIEVE CURRENT WAVEFORM FUNCTION FROM CONFIGURATION TABLE C CALL TIM(29,IU,1,IBUF,4,IER) IF(IER .NE. 0) RETURN C C C IF(IBUF(2) .GT. 1) FKMAX=11 C IF(IBUF(2) .GT. 1) HZMAX=11000 C C IF(STHZ .GT. 0.0) FKMIN=0.0 IF(SPHZ .GT. 0.0) SKMIN=0.0 IF(SMHZ .GT. 0.0) RKMIN=0.0 C C C IF(STKZ .EQ. 0)HZMIN=.000001 IF(SPKZ .EQ. 0)SZMIN=.000001 IF(SMKZ .EQ. 0) ZMIN=.000001 C C C C ESTABLISH MINIMUM SWEEP WIDTH FOR EACH WAVEFORM C AND SWEEP TIME . LINEAR MODE C RMIN= RESOLUTION IN MILIHERTZ C IF(IBUF(2) .EQ. 0) RMIN=.100 C IF(IBUF(2) .EQ. 1) RMIN=.050 C IF(IBUF(2) .EQ. 2). RMIN=.005 C IF(IBUF(2) .GT. 2) RMIN= .010 C C C FMIN=MINIMU SWEEP WIDTH IN MILIHERTZ (LINEAR MODE ONLY) C FMIN=TSWP*100.0*RMIN C C C C C CHECK PARAMETERS C STHZ=STHZ+.00000005 SPHZ=SPHZ+.00000005 STKZ=STKZ+.000005 SPKZ=SPKZ+.000005 C C C C C IF(SMKZ .EQ. 0.0 .AND. SMHZ .EQ. 0.0) GOTO 5 C IF(SMKZ .LT. RKMIN .OR. SMKZ .GE. FKMAX) GOTO 8000 IF(SMHZ .LT. ZMIN .OR. SMHZ .GE. HZMAX) GOTO 8000 C C C 5 IF(STKZ .LT. FKMIN .OR. STKZ .GE. FKMAX) GOTO 8000 IF(SPKZ .LT. SKMIN .OR. SPKZ .GE. FKMAX) GOTO 8000 C IF(STHZ .LT. HZMIN .OR. STHZ .GE. HZMAX) GOTO 8000 IF(SPHZ .LT. SZMIN .OR. SPHZ .GE. HZMAX) GOTO 8000 C C C C C C CHECK SWEEP MODE AND SWEEP TIME C IF(ISWP .LT. 0 .OR. ISWP .GT. 4) GOTO 8000 C C ESTABLISH MINIMUM SWEEP SWEEP TIME C IF(ISWP .LT. 2) TMIN=.01 C IF(ISWP .EQ. 3) TMIN=.1 C IF(ISWP .EQ.2) TMIN=2.0 C C TMAX=99.99 C C IF(TSWP .LT. TMIN .OR. TSWP .GT. TMAX) GOTO 8000 C C C C ----------------------------------------------- C C PROCESS START AND STOP FREQUENCIES C C C BLANK BUFFERS C C DO 11 I=1,10 IPBUF(I)=2H ITBUF(I)=2H IWBUF(I)=2H 11 IOBUF(I)=2H C C C DO 1100 M=1,3 C IF(M - 2) 94,95,96 C 94 FHZ=STHZ FKHZ=STKZ C GOTO 15 C 95 FHZ=SPHZ FKHZ=SPKZ C GOTO 15 C C C IF MARKER NOT DESIRED SKIP PROCESSING. 96 IF(SMKZ .EQ. 0 .AND. SMHZ .EQ. 0) GOTO 1100 FHZ=SMHZ FKHZ=SMKZ C C 15 DO 12 I=1,10 12 IFREQ(I)=2H C C C CONVERT TOTAL FREQUENCY TO ASCII C CALL FR2A(FHZ,FKHZ,IFREQ) C C C CHECK IF FREQUENCY EXCEEDS MAXIMUM C IFR=1 ILST=6 C IF(IBUF(2) .LT. 2) GOTO 1180 C C IFR=4 C 1180 CALL A2F(IFREQ,IFR,ILST,VALU) C C C C C IF(VALU .GE. FKMAX) GOTO 8000 C C C C C I C C IF(M - 2) 1190,1200,1210 C C C START FREQUENCY BUFFER C 1190 ITBUF(1)=2HST ITBUF(2)=IFREQ(2) ITBUF(3)=IFREQ(3) ITBUF(4)=IFREQ(4) ITBUF(5)=IFREQ(5) ITBUF(6)=IFREQ(6) ITBUF(7)=IFREQ(7) ITBUF(8)=IFREQ(8) ITBUF(9)=IFREQ(9) ITBUF(10)=IFREQ(10) C GOTO 1100 C C C STOP FREQUENCY BUFFER C 1200 IPBUF(1)=2HSP IPBUF(2)=IFREQ(2) IPBUF(3)=IFREQ(3) IPBUF(4)=IFREQ(4) IPBUF(5)=IFREQ(5) IPBUF(6)=IFREQ(6) IPBUF(7)=IFREQ(7) IPBUF(8)=IFREQ(8) IPBUF(9)=IFREQ(9) IPBUF(10)=IFREQ(10) C GOTO 1100 C C C MARKER FREQUENCY BUFFER C 1210 IMBUF(1)=2HMF IMBUF(2)=IFREQ(2) IMBUF(3)=IFREQ(3) IMBUF(4)=IFREQ(4) IMBUF(5)=IFREQ(5) IMBUF(6)=IFREQ(6) IMBUF(7)=IFREQ(7) IMBUF(8)=IFREQ(8) IMBUF(9)=IFREQ(9) IMBUF(10)=IFREQ(10) C 1100 CONTINUE C C C C C PROCESS SWEEP MODE AND SWEEP TIME C C IOBUF(1)=2HSM IOBUF(2)=2H1 IF(ISWP .GT. 1 )IOBUF(2)=2H2 C C C C PROCESS SWEEP TIME C ITS=INT(TSWP) IZ1=ITS/10 IZ2=ITS-(IZ1*10) IZ3=INT(TSWP*10.0)-(IZ1*100)-(IZ2*10) IZ4=INT((TSWP*100.0)+.5)-(IZ1*1000)-(IZ2*100)-(IZ3*10) C C IDT1=(IZ1*2**8)+30000B IDT2=IZ2+60B C IDT3=IZ3+60B IDT4=(IZ4*2**8)+30000B C IDOT=27000B C C IOBUF(3)=2HTI IOBUF(4)=IOR(IDT1,IDT2) IOBUF(5)=IOR(IDOT,IDT3) IOBUF(6)=IDT4 C C IOBUF(7)=2HSE C C C IOBUF(8)=2HSS IF(ISWP .EQ. 1 .OR. ISWP .EQ. 3) IOBUF(9)=2HSC C IF(ISWP .EQ. 0 .OR. ISWP .EQ. 2) IOBUF(9)=2HSS C IF(ISWP .EQ. 4) IOBUF(9)=2H C C C C C C C C============================================= C C CHECK IF MINIMUM SWEEP WIDTH IS IN SPEC C C EXAMINE FIRST 6 DIGITS OF START AND STOP BUFFER C C PVAL2=0 TVAL2=0 C  CALL A2F(IPBUF,2,7,PVAL) CALL A2F(ITBUF,2,7,TVAL) C C C C C IF(PVAL-TVAL)790,789,790 C 789 CALL A2F(IPBUF,8,9,PVAL2) CALL A2F(ITBUF,8,9,TVAL2) C C C IF(PVAL2-TVAL2) 790,791,790 C C C IN LINEAR SWEEP, IF ANY OF THE FIRST 8 DIGITS IS DIFFERENT THEN C MINIMUM SWEEP WIDTH IS MET.(PASS CONDITION) C C 790 IF(ISWP .LT. 2) GOTO 3000 C C C C IN LOG SWEEP, THE STOP FREQUENCY CANNOT BE GREATER THAN THE C START FREQUENCY. C C 791 IF((PVAL .LT. TVAL) .OR. (PVAL2 .LT. TVAL2)) GOTO 8000 C C IF(ISWP .GT. 1) GOTO 800 C C************************************************************* C IF SWEEP MODE IS LINEAR AND THE FIRST 8 DIGITS OF C START AND STOP BUFFER WERE EQUAL , THEN CHECK LAST 6 DIGITS C C C C CALL A2F(IPBUF,11,16,PNUM) CALL A2F(ITBUF,11,16,TNUM) C C CALCULATE SWEEP WIDTH FOR LINEAR MODE C C C C RESCALE TO MILIHERTZ FDIF=(PNUM-TNUM)/1000. C C C IF(ABS(FDIF) .LT. FMIN) GOTO 8000 C C GOTO 3000 C************************************************************* C C C CHECK IF START AND STOP FREQ. ARE ON THE SAME RANGE C IF THEY ARE,THEN MINIMUM LOG SWEEP IS NOT MET (FAILED MIN. SPEC) C C IN LOG SWEEP, STOP FREQ. MUST BE AT LEAST 10 TIMES GREATER THAN C THE START FREQ.(ONLY SWEEP UPWARD IS ALLOWED) C C C CHECK MINIMUM START FREQUENCY IF IT IS AT LEAST 1 HZ C C C 800 IF(STKZ .EQ. 0 .AND. STHZ .LT. 1) GOTO 8000 C C C CALL A2F(ITBUF,1,9,XVAL) CALL A2F(IPBUF,1,9,YVAL) C C ZLIM=10000000.0 DO 810 I=1,7 IF(YVAL .GE. ZLIM) GOTO 820 ZLIM=ZLIM/10.0 810 CONTINUE C C C C 820 IF(XVAL .GE. ZLIM) GOTO 8000 C C C IF(YVAL/10.0 .LT. XVAL) GOTO 8000 C C C C C C C=================================== C C C C C REMOTE ENABLE C 3000 CALL EXEC(100003B,1600B+L2) GOTO 9000 3010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C v ICNT=10 C C C C OUPUT START FREQUENCY C C 3040 CALL REIO(100002B,L1,ITBUF(1),ICNT,IDUMY,0) GOTO 9000 3050 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C OUTPUT STOP FREQUENCY C 3060 CALL REIO(100002B,L1,IPBUF(1),ICNT,IDUMY,0) GOTO 9000 3070 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C OUTPUT MARKER FREQUENCY C 3080 IF(SMKZ .EQ. 0.0 .AND. SMHZ .EQ. 0.0) GOTO 3090 CALL REIO(100002B,L1,IMBUF(1),ICNT,IDUMY,0) 3085 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C OUTPUT SWEEP MODE C 3090 CALLREIO(100002B,L1,IOBUF(1),ICNT,IDUMMY,0) GOTO 9000 3092 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C CLEAR SRQ C C 3095 CALL EXEC(100003B,600B+L1) GOTO 9000 3100 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HSF IERR(4)=2HSW IERR(5)=2HP RETURN END SUBROUTINE FR2A(FHZ,FKHZ,IFREQ),09580-16310 1926 790502 C====================================================== C C C C C R. UNTALAN 9/26/78 C C THIS SUBROUTINE WILL CONVERT THE TOTAL FREQUENCY C INTO AN ASCII STRING . A TOTAL OF 15 DIGITS, DECIMAL C POINT,AND TWO ASCII CHARACTERS (HZ) ATTACH AT THE END. C THE BUFFER (IFREQ) SHOULD BE DIMENSION 10 WORDS BY THE C CALLING PROGRAM. THE STRING FORMAT IS AS FOLLOWS: C C LEADING AND TRAILING ZEROES WILL BE PLACED IN THE STRING. C EXAMPLE: IF TOTAL = 12345.987 C STRING = BB000012345.987000HZ C C BBXXXXXXXXX.XXXXXXHZ C C WHERE X IS A DIGIT 0 TO 9 C AND BB ARE BLANKS C======================================================= C C DIMENSION IFREQ(10),ID(20) C C C PRESET DIGITS TO ZERO C DO 10 I=1,16 10 ID(I)=0 hKC C CHECK HOW MANY SIGNIFICANT DIGITS PAST THE DECIMAL C C DO 20 I=2,-1,-1 EXP=FLOAT(I) IF(FHZ .GE. 10.**EXP) GOTO 30 20 CONTINUE C C C 30 IF(EXP .EQ. 2.0)FHZ=FHZ+.0005 IF(EXP .EQ. 1.0) FHZ=FHZ+.00005 IF(EXP .EQ. 0.0) FHZ=FHZ+.000005 IF(EXP .LT. 0.0) FHZ=FHZ+.0000005 C C C IADD=0 ITEN=0 D1000=1000 C C C C C IF(FKHZ .GE. 10000.0) GOTO 130 TEMP=FKHZ ITEN=0 GOTO 125 C C C TEMPORARILY TRUNCATE THE TEN THOUSANDS DIGIT C 130 ITEN=INT(FKHZ/10000.) TENT=FLOAT(ITEN)*10000.0 TEMP=(FKHZ-TENT) C C 125 KHZ1=INT(TEMP) C C FKZ1=FLOAT(KHZ1) C C C ISOLATE HZ COMPONENT OF FKHZ C AHZ1=(TEMP*1000.0)-(FKZ1*1000.0) FHZ1=FLOAT(INT(AHZ1+.5)) IF(FKHZ .GE. 10000.)FHZ1=INT(FHZ1/100.)*100 C C 321 KHZ2=INT(FHZ/D1000) CKHZ2=FLOAT(KHZ2) C C C IF HZ<10 THEN DROP LAST 3 DIGITS AND PICK THEM UP LATER C THZ=FHZ IF(FHZ .GT. 10.0) GOTO 677 C LHZ=INT(FHZ*D1000) THZ=FLOAT(LHZ)/D1000 C C C C C C 677 FHZ2=THZ-(CKHZ2*D1000) C C C CALL XSUM(KHZ1,FHZ1,KHZ2,FHZ2,KHZS,FHZS) C C C C C C ***CONVERT KHZ AND HZ TO ASCII C IF(KHZS .LT. 10000) GOTO 109 C KHZS=KHZS-10000 ITEN=ITEN+1 C C 109 ID(1)=ITEN/10 ID(2)=ITEN-ID(1)*10 C C ID(3)=KHZS/1000 ID(4)=(KHZS-ID(3)*1000)/100 C C ID(5)=(KHZS-(ID(3)*1000)-(ID(4)*100))/10 ID(6)=KHZS-(ID(3)*1000)-(ID(4)*100)-(ID(5)*10) C C RD6=(FHZS/100.) C ID(7)=INT(RD6) C RD7=(FHZS-FLOAT(ID(7)*100))/10. C ID(8)=INT(RD7) RD8=FHZS-FLOAT(ID(7)*100)-FLOAT(ID(8)*10) C ID(9)=INT(RD8) C C ID(10)=56B C C C ISOLATE FRACTIONAL PART OF HZ C FRAC=FHZS-FLOAT(ID(7)*100)-FLOAT(ID(8)*10)-FLOAT(ID(9)) C C FRAC=FRAC+.00005 C C ID(11)=INT(FRAC*10.) C ID(12)=INT(F;RAC*100.)-(ID(11)*10) C ID(13)=INT(FRAC*1000.)-(ID(11)*100)-(ID(12)*10) IF(EXP .EQ. 2.0) GOTO 110 C C C PROCESS LAST THREE DIGITS OF ORIGINAL HZ C C FRAC=FHZ*1000. IFHZ=INT(FRAC) WFHZ=FLOAT(IFHZ) C C FRAC=FRAC-WFHZ C ID(14)=INT(FRAC*10) IF(ID(14) .LT. 0 .OR. ID(14) .GT. 9) ID(14)=0 IF(EXP .EQ. 1.) GOTO 110 C C C ID(15)=INT(FRAC*100)-(ID(14)*10) IF(ID(15) .LT.0 .OR. ID(15) .GT. 9) ID(15)=0 IF(EXP .EQ. 0.) GOTO 110 C C ID(16)=INT(FRAC*1000)-(ID(14)*100)-(ID(15)*10) IF(ID(16) .LT. 0 .OR. ID(16) .GT. 9) ID(16)=0 C C C STORE DIGITS IN OUTPUT BUFFER C 110 IFREQ(1)=2H C C STORE DIGITS IN OUTPUT BUFFER C J=1 DO 200 I=1,8 IFREQ(I+1)=IASC(ID(J),ID(J+1)) 200 J=J+2 C IFREQ(10)=2HHZ C RETURN C C END C C C==================================================== C INTEGER FUNCTION IASC(IV1,IV2) IVA=(IOR(IV1,60B))*400B IVB=IOR(IV2,60B) IF(IV2 .GT. 9)IVB=IV2 IF(IV1 .GT. 9)IVA=IV1 IASC=IOR(IVA,IVB) RETURN END C C C===================================================== C C C C************************************************** C SUBROUTINE XSUM(KHZ1,FHZ1,KHZ2,FHZ2,KHZS,FHZS), +09580-16310 1926 790502 C C************************************************** C C C C C *** DEFINE DECIMAL CONSTANT C D1000=1000 C C **** CALCULATE SUM C KHZS=KHZ1+KHZ2 FHZS=FHZ1+FHZ2 C C C **** TEST IF CARRY NEEDED C IF(FHZS-D1000) 600,500 C C C **** GENERATE CARRY C 500 KHZS=KHZS+1 FHZS=FHZS-D1000 RETURN C C C **** IS FHZS NEGATIVE? C 600 IF(FHZS)700,9000 C C C C **** GENERATE CARRY C 700 KHZS=KHZS-1 FHZS=D1000+FHZS C C 9000 RETURN END END$ NLHHN  09580-18311 2001 S C0122 &SFAMP              H0101 mFTN4,L SUBROUTINE SFAMP(IUNIT,AMP,AOFST,ISCL,IOUT), +09580-16311 REV.2001 791023 C C------------------------------------- C C HP 3325A SYNTHESIZER*FUNCTION GENERATOR C (SFAMP) C C RELOCATABLE 09580-16311 C SOURCE 09580-18311 C C R.UNTALAN 780917 REV. A C R.UNTALAN 790606 C BOB RICHARDS 790607 C R.UNTALAN 790625 C BOB RICHARDS 791023 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP3325A SYNTHESIZER*FUNCTION GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP3325A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFAMP(I,R,R,I,I), OV=XX, ENT=SFAMP, FIL=%SFAMP C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C R 29,1,4 C U1 C 0 ENTER 0 FOR STANDARD UNIT OR 1 FOR OPT.002 C 0 FUNCTI0N WAVEFORM TEMPORARY STORAGE C 0.0 TEMPORARY STORAGE FOR DC-OFFSET C C C C C C------------------------------------ C C SFAMP(IUNIT,AMP,AOFST,ISCL,IOUT) C C WHERE: C C IUNIT = UNIT # C C AMP = AMPLITUDE C STANDARD UNIT C ------------- C C ALL WAVEFORM FUNCTIONS C ---------------------- C peak-peak = 1.000mV TO 10.00 VOLTS C C SINE FUNCTION C ------------- C rms= 0.354mV TO 3.536 VOLTS C dBm(50 OHM) = -56.02 TO +23.98 C C C SQUARE FUNCTION C --------------- C rms= 0.500mV TO 5.000 VOLTS C dBm(50 OHM) = -53.01 TO +26.99 C C C @ TRIANGLE/RAMPS FUNTIONS C ----------------------- C rms= 0.289mV TO 2.887 VOLTS C dBm(50 OHM) = -57.78 TO +22.22 C C C DC ONLY FUNCTION C ---------------- C AMPLITUDE MUST BE SET TO ZERO. C C C AOFST = OFFSET C DC only(no ac signal): 0 TO +-5.0V 50 OHM C IF UNIT HAS OPTION .002 : .01MV TO 20V 500OHM C DC+AC: Maximum dc offset +-4.5 V on highest range C decreasing to +-4.5mV on lowest range. C IF UNIT HAS OPT.002 ,MULTIPLY MINIMUM AND C MAXIMUM BY 4. C C C C ISCL = UNITS SCALE C 0= peak-peak C 1= rms C 2= dBm C C C IOUT = OUTPUT SELECT C C IN STANDARD INSTRUMENTS IOUT CONTROLS THE OUTPUT C SIGNAL ROUTING. C C 0 = REAR C 1 = FRONT C C IF UNIT IS AN OPT.002 (HIGH VOLTAGE) IOUT CONTROLS THE C HIGH OUTPUT VOLTAGE. C C 0 = HIGH VOLTAGE OFF C 1 = HIGH VOLTAGE ON C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HAM,2HP / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3325A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFAMP(LU1,LUIB,IERMS,IUNIT,AMP,AOFST,ISCL,IOUT) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFAMP(LU1,LUIB,IERR,IU,AMP,AOFST,ISCL,IOUT), +09580-16311 REV.2001 791023 C--------------------------------------------- C C DIMENSION IOBUF(20),IERR(5),IVAL(10),IREG(2),IALRM(5) DIMENSION IOFF(10),IBUF(4),COFF(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB),(IBUF(1),COFF(1)) C C C C C C READ FROM ALLFL TO DETERMINE IF STD. OR OPT.002 C IF OPT.002 MAX. IS 40 VOLTS AND MIN. IS 4 MV. C C IBUF(1)= 0 STD. UNIT C 1 OPT. 002 C C IBUF(2)= WAVEFORM FUNCTION C =0 SINE WAVE C =1 SQUARE WAVE C =2 TRIANGLE WAVE C =3 POS. RAMP C =4 NEG. RAMP C =5 DC ONLY C C CALL TIM(29,IU,1,IBUF,4,IER) IF(IER .NE. 0) RETURN C C IERR=0 C FMAX=1.0 IF(IBUF .EQ. 1 .AND. IOUT .EQ. 1) FMAX=4.0 C C C C SET P-P LIMITS FOR ALL WAVEFORMS C AMIN=.001*FMAX AMAX=10.00*FMAX IF(IBUF(2) .EQ. 5) AMIN=0.0 C C C DETERMINE RANGE OF AMPLITUDE AND THEN DETERMINE C THE MAXIMUM OFFSET LIMITS BASED ON C THE AMPLITUDE RANGE. C C C C PPV=AMP C C IF(ISCL .EQ. 0) GOTO 90 C C IF(ISCL .EQ. 1) GOTO 75 C C C C CONVERT DBM TO RMS THEN CONVERT RMS TO P-P VALUE C RMS= 10.0**(AMP/20.0)*.2236 GOTO 89 C C 75 RMS=AMP C C C SINE WAVE C 89 IF(IBUF(2) .EQ. 0) PPV=RMS*2.828 C C SQUARE WAVE C IF(IBUF(2) .EQ. 1) PPV=RMS*2 C C TRIANGLE AND RAMPS C IF(IBUF(2) .GE. 2) PPV=RMS*3.4632 C C C C C DETERMINE RANGE OF AMPLITUDE C 90 IF((PPV .GE. .001*FMAX) .AND. (PPV .LT. .003334*FMAX)) IRNG=7 C IF((PPV .GE. .003334*FMAX) .AND. (PPV .LT. .01000*FMAX)) IRNG=6 C IF((PPV .GE. .0100*FMAX) .AND. (PPV .LT. .03334*FMAX)) IRNG=5 C IF((PPV .GE. .03334*FMAX) .AND. (PPV .LT. .10000*FMAX)) IRNG=4 C IF((PPV .GE. .100*FMAX) .AND. (PPV .LT. .3334*FMAX)) IRNG=3 C IF((PPV .GE. .3334*FMAX) .AND. (PPV .LT. 1.000*FMAX)) IRNG=2 C IF((PPV .GE. 1.000*FMAX) .AND. (PPV .LE. 10.000*FMAX)) IRNG=1 C C C DETERMINE ATTENUATION FACTOR C IF(IRNG .EQ. 7) ATT=1000 C IF(IRNG .EQ. 6) ATT=300 C IF(IRNG .EQ. 5) ATT =100 C IF(IRNG .EQ. 4) ATT =30 C IF(IRNG .EQ. 3) ATT=10 C IF(IRNG .EQ. 2) ATT=3 C IF(IRNG .EQ. 1) ATT=1 C C C DETERMINE MINIMUM AND MAXIMUM DC OFFSET C C PMAX=5.0*FMAX PMIN=0 C C IF(PPV .EQ. 0) GOTO 5 C PMAX=((5*FMAX/ATT)-(PPV/2)) C C 5 IF(ISCL .EQ. 0) GOTO 100 C C DETERMINE WHICH WAVEFORM C IF(IBUF(2)-1)10,20,30 C C C ********SINE WAVE************ C 10 IF(ISCL-2)12,13 C C SET RMS LIMITS 12 AMIN=.000354*FMAX AMAX=3.536*FMAX GOTO 100 C C SET dBM LIMITS 13 AMIN=-56.02 AMAX=23.98 C IF(IBUF(1) .EQ. 0) GOTO 100 C AMIN=-43.94 AMAX=36.02 C GOTO 100 C C C*********SQUARE WAVE ************* C 20 IF(ISCL-2)22,23 C C SET RMS LIMITS 22 AMIN=.0005*FMAX AMAX=5.*FMAX C IF(IBUF(1) .EQ. 0) GOTO 100 C AMIN=-40.96 AMAX=39.03 C GOTO 100 C C SET dBM LIMITS 23 AMIN=-53.01 AMAX=26.99 GOTO 100 C C C***********TRIANGLE AND RAMP************ C OR DC ONLY...IF DC ONLY THEN LIMITS ARE C ALREADY ESTABLISHED. C 30 IF(IBUF(2) .EQ. 5) GOTO 100 IF(ISCL-2) 32,33 C C SET RMS LIMITS 32 AMIN=.0002890*FMAX AMAX=2.887*FMAX GOTO 100 C C C SET dBM LIMITS 33 AMIN=-57.78 AMAX=22.22 C IF(IBUF(1) .EQ. 0) GOTO 100 C AMIN=45.70 AMAX=34.26 C C C CHECK PARAMETERS C C C C C C******************* C C C 100 IF(AMP .LT. AMIN .OR. AMP .GT. AMAX) GOTO 8000 IF(ISCL .LT. 0 .OR. ISCL .GT. 2) GOTO 8000 BOFST=ABS(AOFST) IF (BOFST .GT. PMAX) GOTO 8000 C C C CLEAR OUTPUT BUFFER AND STRING BUFFER C DO 88 I=1,10 IVAL(I)=2H IOBUF(I)=2H 88 IOFF(I)=2H C C C PROCESS AMPLITUDE PARAMETER C BMP=ABS(AMP) N=2 IFLAG=0 C C 40 IF(IFLAG .EQ. 0 .AND. ISCL .EQ. 2) GOTO 111 C C FIND OUT HOW LARGE IS THE AMPLITUDE C DO 44 I=1,-3,-1 FXP=FLOAT(I) IF(BMP .GE. 10.0**FXP) GOTO 111 44 N=N+1 N=6 C C C PROCESS ONLY FOUR SIGNIFICANT DIGITS C 111 CALL PDEC(BMP,N,XMP) C C IF(IFLAG .EQ. 1) GOTO 1000 C C IF(AMP .LT. 0.) XMP=-XMP C IF(ABS(XMP) .LT. 1) GOTO 800 C C C CALL F2A(XMP,IVAL) C C C GOTO 900 C C C PROCESS AMPLITUDE OR OFFSET ONLY FOR VALUES <1 MV C C 800 XMP=ABS(XMP)+.0005 IX1=INT(ABS(XMP)*10.) IX2=INT(ABS(XMP)*100.)-(IX1*10) IX3=INT(ABS(XMP)*1000.)-(IX1*100)-(IX2*10) ID1=IX1*2**8+30000B ID2=IX2+60B ID3=IX3+60B C IF(IFLAG .EQ. 1) GOTO 1100 C C C C C IF(XMP .LT. 0) IVAL(2)=2H-. IF(XMP .LT. 0) IVAL(3)=IOR(ID1,ID2) C C IF(XMP .GT. 0) IVAL(2)=27060B+IX1 IF(XMP .GT. 0) IVAL(3)=ID2*2**8 IF((XMP .GT. 0) .AND. (ISCL .NE. 2)) IVAL(3)=IOR(IVAL(3),ID3) IVAL(4)=2H C C 900 IOBUF(3)=2HAM IOBUF(4)=IVAL(2) IOBUF(5)=IVAL(3) IOBUF(6)=IAND(177440B,IVAL(4)) IF((ISCL .EQ. 2) .AND. (AMP .LT. 0))IOBUF(6)=IVAL(4) IOBUF(7)=2HMV IF((ISCL .EQ. 0) .AND. (AMP .GE. 1.0)) IOBUF(7)=2HVO IF((ISCL .EQ. 1) .AND. (AMP .GE. 1.0)) IOBUF(7)=2HVR IF((ISCL .EQ. 1) .AND. (AMP .LT. 1.0)) IOBUF(7)=2HMR IF(ISCL .EQ. 2) IOBUF(7)=2HDB C C C C PROCESS OFFSET PAREMETER C************************* C BMP=ABS(AOFST) N=2 IFLAG=1 GOTO 40 C C 1000 IF(AOFST .LT. 0) XMP=-XMP C IF(ABS(XMP) .LT. 1) GOTO 800 C C CALL F2A(XMP,IOFF) C GOTO 1200 C C 1100 IOFF(2)=2H-. IOFF(3)=IOR(ID1,ID2) ID3=ID3*2**8 IOFF(4)=IOR(ID3,40B) C C IF(AOFST .GT. 0.) IOFF(2)=2H+. C C C 1200 IOBUF(8)=2HOF IOBUF(9)=IOFF(2) IOBUF(10)=IOFF(3) IOBUF(11)=IOFF(4) IF(ABS(AOFST) .LT. 1.0) IOxBUF(12)=2HMV IF(ABS(AOFST) .GE. 1.0) IOBUF(12)=2HVO C C C IF PREVIOUS OFFSET IS GREATER THAN THE ALLOWED C OFFSET FOR THE CURRENT AMPLITUDE THEN OUTPUT THE C OFFSET PARAMETER FIRST AND AMPLITUDE SECOND. C IF (COFF(2) .LT. PMAX) GOTO 221 C C REARRANGE OUTPUT BUFFER C DO 210 I=3,7 ITEMP=IOBUF(I) IOBUF(I)=IOBUF(5+I) 210 IOBUF(5+I)=ITEMP C C C C C PROCESS OUTPUT SIGNAL CONTROL C 221 IOBUF(1)=2HRF IF(IBUF(1) .EQ. 1) IOBUF(1)=2HHV C IOBUF(2)=2H1 IF(IBUF(1) .EQ. 1 .AND. IOUT .EQ. 0) IOBUF(2)=2H0 IF(IBUF(1) .EQ. 0 .AND. IOUT .EQ. 0) IOBUF(2)=2H2 C C C STORE OFFSET AND FUNCTION BACK INTO CONFIGURATION TABLE C COFF(2)=BOFST C CALL TIM(29,IU,2,IBUF,4,IER) C C C C C C C C 1990 KOUNT=12 ICNT=10 C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 2010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C 2015 CALL REIO(100002B,LU1,IOBUF(1),KOUNT,IDUMY,0) GOTO 9000 C C 2030 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 2100 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HSF IERR(4)=2HAM IERR(5)=2HP RETURN END C=================================== C C SUBROUTINE PDEC(ANUM,IND,BNUM), +09580-16311 REV.2001 791023 C C THIS SUBROUTINE POSITIONS THE DECIMAL POINT C SO THAT ONLY A MAXIMUM OF FOUR SIGNIFICANT C DIGITS ARE RETURNED. C DO 555 I=1,IND 555 ANUM=ANUM*10.0 C ANUM=ANUM+.05 C C INUM=INT(ANUM) BNUM=FLOAT(INUM) C C IF(IND .LT. 4) IND=IND+3 MAX=IND-3 C C ~0.* DO 300 I=1,MAX 300 BNUM=BNUM/10.0 C C RETURN C C C======================================== END END$ 0  09580-18312 1926 S C0122 &SFGMD 3325A             H0101 FTN4,L SUBROUTINE SFGMD(IUNIT,IAM,IPM),09580-16312 1926 790502 C C------------------------------------- C C HP 3325A SYNTHESIZER*FUNCTION GENERATOR C (SFGMD) C C RELOCATABLE 09580-16312 C SOURCE 09580-18312 C C R.UNTALAN 780914 REV. A C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCL$OSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 3325A SYNTHESIZER*FUNCTION GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 3325A SYNTHESIZER*FUNCTION GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFGMD(I,I,I), OV=XX, ENT=SFGMD, FIL=%SFGMD C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C C C------------------------------------ C C SFGMD(IUNIT,IAM,IPM) C C WHERE: C C IUNIT = UNIT # C C IAM = AMPLITUDE MODULATION C C 0 = OFF C 1 = ON C C NOTE: A MODULATION INPUT OF APROXIMATELY 5V PEAK RESULTS IN C 100% MODULATION. MODULATION FREQUENCY MAY BE 0 TO 50 KHZ. C IF AMPLITUDE MODULATION IS ON WHEN 3325A FUNCTIONS OTHER THAN C SINE WAVE ARE SELECTED, THE OUTPUT MAY BE GATED, DEPENDING C ON THE LEVEL OF THE MODULATION INPUT. C C AMPLITUDE MODULATION SHOULD BE USED ONLY WITH THE SINE FUNCTION C AND THE MODULATION INPUT SHOULD NOT EXCEED +/- 5 VOLT PEAK. C C C IPM = PHASE MODULATION C C 0 = OFF C 1 = ON C C C NOTE: PHASE MODULATION INPUT FREQUENCY MAY BE FROM DC TO 5 KHZ. C AN INPUT OF +/- 5 V PEAK RESULTS IN THE FOLLOWING PHASE C DEVIATION (+/-170 DEG. PER VOLT FOR SINE WAVE FUNCTION.) C C 3325A FUNCTION PHASE DEVIATIhON C -------------------------------------- C SINE +/- 850 DEGREES C SQUARE +/- 425 DEGREES C TRIANGLE +/- 42.5 DEGREES C +/-RAMP +/- 85 DEGREES C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HGM,2HD / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3325A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFGMD(LU1,LUIB,IERMS,IUNIT,IAM,IPM) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFGMD(LU1,LUIB,IERMS,IUNIT,IAM,IPM), +09580-16312 1926 790502 DIMENSION IERMS(5),IBUF(3),IREG(2),IOBUF(4) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP3325A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C CHECK PARAMETERS C IERMS=1 IF(IAM .LT. 0 .OR. IAM .GT. 1) GOT_O 8000 IF(IPM .LT. 0 .OR. IPM .GT. 1) GOTO 8000 C C C CLEAR OUTPUT BUFFER C DO 100 I=1,4 100 IOBUF(I)=2H C C C SET UP OUTPUT BUFFER C 500 IOBUF(1)=2HMA IOBUF(2)=2H0 IF(IAM .EQ. 1) IOBUF(2)=2H1 IOBUF(3)=2HMP IOBUF(4)=2H0 IF(IPM .EQ. 1) IOBUF(4)=2H1 INUM=4 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C 71 CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 72 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 88 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HSF IERMS(4)=2HGM IERMS(5)=2HD RETURN END END$ Q  09580-18314 1926 S C0122 &SFFUN 3325A             H0101 FTN4,L SUBROUTINE SFFUN(IUNIT,IFUNC,FAZE,IZERO), +09580-16314 1926 790502 C C------------------------------------- C C HP 3325A SYNTHESIZER*FUNCTION GENERATOR C (SFFUN) C C RELOCATABLE 09580-16314 C SOURCE 09580-18314 C C R.UNTALAN 780917 C R.UNTALAN 790321 C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHOR?$IZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP3325A SYNTHESIZER*FUNCTION GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP3325A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFFUN(I,I,R,I), OV=XX, ENT=SFFUN, FIL=%SFFUN C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C R 29,1,4 C U1 C 0 ENTER 0 FOR STANDARD UNIT OR 1 FOR OPT.002 C 0 FUNCTI0N WAVEFORM TEMPORARY STORAGE C 0.0 TEMPORARY STORAGE FOR DC-OFFSET C C C C C C C------------------------------------ C C SFFUN(IUNIT,IFUNC,FAZE,IZERO) C C WHERE: C C IUNIT = UNIT # C C IFUNC= FUNCTION WAVEFORM C 0= SINE WAVE C 1= SQUARE WAVE C 2= TRIANGLE WAVE C 3= POSTIVE RAMP C 4= NEGATIVE RAMP C 5= DC ONLY C 6= PERFORM AMPLITUDE CALIBRATION C 7= PERFORM SELF TEST C C C FAZE= PHASE OFFSET C C 0.0 DEG. TO 719.9 DEG. C C C IZERO= ASSIGN ZERO PHASE POSITION TO CURRENT PHASE OFFSET C 0= NO C 1= YES C C C NOTE:WHEN IFUNC=5 OR 6 , THE FAZE AND IZERO PARAMETER ARE IGNORED. C C C------------------------------------ DIMENSV"ION IERMS(5) DATA IDTN / 29 / DATA IERMS / 10,5,2HSF,2HFU,2HN / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3325A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFFUN(LU1,LUIB,IERMS,IUNIT,IFUNC,FAZE,IZERO) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFFUN(LU1,LUIB,IERR,IU,IFUNC,FAZE,IZERO), +09580-16314 1926 790502 C--------------------------------------------- C C DIMENSION IFBUF(10),IERR(5),IREG(2),IALRM(5) DIMENSION IBUF(4),ISTR(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA IALRM/5,2HDV,2HIN,2HT / C C IERR=0 C C CHECK PARAMETERS C IF(IFUNC .LT. 0 .OR. IFUNC .GT. 7) GOTO 8000 C IF(FAZE .LT. 0 .OR. FAZE .GT. 719.9) GOTO 8000 C IF(IZERO .LT. 0 .OR. IZERO .GT. 1) GOTO 8000 C C C CLEAR OUTPUT BUFFER C DO 500 I=1,10 500 IFBUF(I)=2H C DO 501 I=1,5 501 ISTR(I)=2H C C C IF(IFUNC .GT. 5) GOTO 600 C C C READ CONFIGURATION TABLE C CALL TIM(29,IU,1,IBUF,4,IER) IF(IER .NE. 0) RETURN C C IBUF(2)=IFUNC C C STORE CURRENT WAVEFORM IN CONFIGURATION TABLE C CALL TIM(29,IU,2,IBUF,4,IER) IF(IER .NE. 0) RETURN C C C C PROCESS FUNCTION PARAMETER C IFUNC=(IFUNC+61B)*2**8 IF(IFUNC .EQ. 33000B) IFUNC=30000B IFBUF(1)=2HFU IFBUF(2)=IFUNC C C C PROCESS PHASE PARAMETER C IFAZE=INT(FAZE*10.0) FAZE=FLOAT(IFAZE)/10.0 CALL F2A(FAZE,ISTR) C C IFBUF(3)=2HPH IFBUF(4)=ISTR(2) IFBUF(5)=ISTR(3) IFBUF(6)=ISTR(4) IFBUF(7)=2HDE C IF(IZERO .EQ. 1) IFBUF(8)=2HAP C @> ICNT=8 GOTO 2000 C C 600 IFBUF(1)=2HAC IF(IFUNC .EQ. 7) IFBUF(1)=2HTE ICNT=1 C C C ARM SERVICE REQUEST C CALL SRQ(LU1,16,IALRM) C C C C C C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 2010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C 2020 CALL REIO(100002B,LU1,IFBUF(1),ICNT,IDUMY,0) GOTO 9000 2030 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C RETURN C C C CLEAR SRQ C C CALL EXEC(100003B,600B+LU1) GOTO 9000 2100 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HSF IERR(4)=2HFU IERR(5)=2HN RETURN END z  09580-18316 2013 S C0122 &GPRIO              H0101 yFTN4,L SUBROUTINE GPRIO(IUNIT,IFUNC,RDATA),09580-16316 REV.2013 800131 C C THIS DEVICE SUBROUTINE IS USED TO PROGRAM THE 12566-60024 C MICROCIRCUIT CARD. C C**************************************** C C RELOCATABLE 09580-16316 C SOURCE 09580-18316 C C REY UNTALAN C BOB RICHARDS 790502 C BOB RICHARDS 790517 C BOB RICHARDS 791023 C MILT NOGUCHI 791227 C YOSH MIYAKO 800129 C BOB RICHARDS 800131 C C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE MICRO-CIRCUIT CARD. C --------------------- C C HARDWARE C -------- C C C C HP 12566-60024 MICROCIRCUIT CARD C JUMPERED AS FOLLOWS: C C W1-A C W2-W4-B C W5-W8-IN C W9-A C C BRANCH AND MNEMONIC TABLE ENTRIES C C GPRIO(I,I,RV), OV=XX, ENT=GPRIO, FIL=%GPRIO C GPRSB(I,I,I,IV), OV=XX, ENT=GPRSB, FIL=%GPRIO C C CONFIGURATION TABLE INFORMATION C C******************************** C* HP12566B MICROCIRCUIT REGISTER C******************************** C* C R 56,1,1 C U1 C 0 C C C*************************************** C C C C WHERE: C IUNIT= UNIT # OF I/O CARD C C IFUNC= FUNCTION C 0= INPUT OCTAL (READ DATA FROM CARD) C 1= OUTPUT OCTAL (WRITE DATA TO CARD) C 2= INPUT BCD (READ DATA FROM CARD) C 3= OUTPUT BCD (WRITE DATA TO CARD) C C RDATA= BIT PATTERN TO BE OUTPUT C (0 TO 177777 OCTAL CODED) C OR C BINARY (TO OCTAL) PATTERN RETURNED FROM CARD C OR C BIT PATTERN TO BE OUTPUT C (0 TO 9999 BINARY CODED DECIMAL) C OR C BINARY (TO BCD) PATTERN RETURNED FROM CARD C C C C FUNCTION CODES FOR 16 BIT CONTROL: 0=OCTAL INPUT C (GPRIO) 1=OCTAL OUTPUT C 2=BCD INPUT C 3=BCD OUTPUT C C C C C C C ERROR CODES: C C 1 - PARAMETER ERROR C 2 - TIME OUT ERROR C 3 - NON BCD CONVERTABLE BINARY READ ATTEMPT C 4 - NON BINARY C 9 - I/O CALL REJECTED C 10 - UNIT #, LU # ERROR C C C C C***************************************** DIMENSION IERMS(5) DATA IERMS/10,5,2HGP,2HRI,2HO / DATA IDTN/56/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) LU=LUDV(ISTN,IDTN,IUNIT) IF(LU)800,800,20 C 20 CALL XPRIO(LU,IERMS,IUNIT,IFUNC,RDATA) IF(IERMS)800,30,800 30 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C C C C============================================= C SUBROUTINE XPRIO(LU,IERR,IUNIT,IFUNC,RDATA),09580-16316 REV.2013 8 +00131 C C DIMENSION IERR(5),ID(6),IREG(2),ITB(4),IG(4),IBCD(4) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) DATA IDTN/56/ C C C CHECK FUNCTION PARAMETER C IF(IFUNC .LT. 0 .OR. IFUNC .GT. 3) GOTO 8000 C C C ZERO THE ERROR FLAG C C IERR=0 C C C DETERMINE THE REQUESTED FUNCTION DESIRED C C C IS IT AN OCTAL READ? C C IF(IFUNC .EQ. 0) GOTO 1000 C C C IS IT AN OCTAL WRITE? C C IF(IFUNC .EQ. 1) GOTO 2010 C C C IS IT A BCD READ? C C IF(IFUNC .EQ. 2) GOTO 3000 C C C IS IT A BCD WRITE? C C IF(IFUNC .EQ. 3) GOTO 4000 C C C OCTAL OUTPUT FUNCTION SELECTED C C CHECK OUTPUT DATA WORD C C C 2010 IF(RDATA .LT. 0 .OR. RDATA .GT. 177777.) GOTO 8000 C C RESET BUFFER TO ZEROES C DO 50 I=1,6 ID(I)=0 50 CONTINUE C RMSB=0 IF(RDATA .GE. 100000.) RMSB=1.0 ID(1)=INT(RMSB) C RD2=(RDATA-(RMSB*100000.))/10000. ID(2)=INT(RD2) C KDATA=INT((RMSB*10.)+(RD2)) PDATA=FLOAT(KDATA)*10000. JDATA=RDATA-PDATA C C ID(3)=JDATA/1000 C ID(4)=(JDATA-(ID(3)*1000))/100 C ID(5)=(JDATA-(ID(3)*1000)-(ID(4)*100))/10 C ID(6)=(JDATA-(NtID(3)*1000)-(ID(4)*100)-(ID(5)*10)) C C C C C C C C C C CHECK EACH DIGIT C DO 100 I=1,6 IF(ID(I) .GT. 7.) IERR=1 100 CONTINUE C C C POSITION EACH DIGIT TO FORM AN EQUIVALENT OCTAL WORD C ID(1)=ID(1)*100000B ID(2)=ID(2)*10000B ID(3)=ID(3)*1000B ID(4)=ID(4)*100B ID(5)=ID(5)*10B C C C C C C C IWRD=ID(1) DO 200 I=2,6 200 IWRD=IOR(ID(I),IWRD) C C SAVE DATA WORD C 300 CALL TIM(IDTN,IUNIT,2,IWRD,1,JER) IF(JER.NE.0) RETURN C C C C C OUTPUT WORD TO I/O CARD C GOTO 2000 C C C================================ C C READ DATA WORD FROM I/O CARD C 1000 CALL REIO(100001B,100B+LU,IDATA,1,IDUMY,0) GOTO 7000 1100 CALL ABREG(IA,IB) IF(IAND(IREG,377B) .NE. 0) GOTO 7500 C C C ISOLATE EACH OCTAL DIGIT C C C C ID(1)=IAND(100000B,IDATA)/100000B ID(2)=IAND(70000B,IDATA)/10000B ID(3)=IAND(7000B,IDATA)/1000B ID(4)=IAND(700B,IDATA)/100B ID(5)=IAND(70B,IDATA)/10B ID(6)=IAND(7B,IDATA) C C C CONVERT INTEGER TO REAL NUMBER. C C RD1=ID(1) RD2=ID(2) RD3=ID(3) RD4=ID(4) RD5=ID(5) RD6=ID(6) C C C MOVE TO THEIR RESPECTIVE PLACE HOLDINGS. C C C C RD1=RD1*100000. RD2=RD2*10000. RD3=RD3*1000. RD4=RD4*100. RD5=RD5*10. C C C BUILD THE WORD AND ADD THE LOW ORDER ENTRY TOO. C C RWRD=RD1+RD2+RD3+RD4+RD5+RD6 C C C ASSIGN TO PASSING PARAMETER. C C RDATA=RWRD C C C RETURN TO CALLING SEGMENT. C C RETURN C C C OCTAL AND BCD OUTPUT ROUTINE ONCE WORD IS BUILT. C C 2000 CALL REIO(100002B,100B+LU,IWRD,1,IDUMY,0) C C C ERROR RETURN TRANSFER. C C GOTO 7000 C C C RETURN POINT IF NO ERROR. C C 2020 CALL ABREG(IA,IB) IF(IAND(IREG,377B) .NE. 0) GOTO 7500 C C C RETURN TO MAIN CALLING SEGMENT. C C RETURN C  C C BCD CONVERSION OF BINARY WORD INPUTTED. C C 3000 CALL REIO(100001B,100B+LU,IDATA,1,IDUMY,0) C C C ERROR RETURN TRANSFER STATEMENT. C C GO TO 7000 C C C NORMAL RETURN POINT. C C C 3100 CALL ABREG(IA,IB) C C C CHECK FOR TIME OUT ERROR. C C IF(IAND(IREG,377B) .NE. 0) GO TO 7500 C C C PARSE THE DATA WORD INPUTTED. C C ITB(1)=IAND(10B,IDATA)/10B ITB(2)=IAND(200B,IDATA)/200B ITB(3)=IAND(4000B,IDATA)/4000B ITB(4)=IAND(100000B,IDATA)/100000B IG(1)=IAND(7B,IDATA)/1B IG(2)=IAND(160B,IDATA)/20B IG(3)=IAND(3100B,IDATA)/400B IG(4)=IAND(70000B,IDATA)/10000B C C C CHECK TO SEE THAT ALL FOUR BCD DIGITS DO NOT EXCEED 9 C C DO 3050, I=1,4 C C C IF IT IS GREATER THAN 9, FLAG THE ERROR. C C IF((ITB(I) .EQ. 1) .AND. (IG(I) .GT. 1)) GO TO 7100 3050 CONTINUE C C C PARSE INTO BCD GROUPS. C C IBCDG1=IAND(17B,IDATA)/1B IBCDG2=IAND(360B,IDATA)/20B IBCDG3=IAND(7400B,IDATA)/400B IBCDG4=IAND(170000B,IDATA)/10000B C C C CONVERT TO REAL. C C RBCD1=IBCDG1*1. RBCD2=IBCDG2*10. RBCD3=IBCDG3*100. IF(ITB(4) .EQ. 0) GO TO 3060 IF(IG(4) .EQ. 0) RBCD4=8000. IF(IG(4) .EQ. 1) RBCD4=9000. GO TO 3090 3060 RBCD4=IBCDG4*1000. C C C FORM THE BCD WORD. C C 3090 RDATA=RBCD1+RBCD2+RBCD3+RBCD4 C C C RETURN TO THE CALLING PROGRAM. C C RETURN C C C C BCD WRITE OPERATION. C C C C RANGE CHECK BCD NUMBER. C C 4000 IF(RDATA .LT. 0 .OR. RDATA .GT. 9999) GO TO 8000 C C C BEGIN CONVERSION TO BINARY FROM BCD. C C C ZERO OUT THE BUILD ARRAY. C C DO 4010, I=1,4 IBCD(I)=0 4010 CONTINUE C C C PARSE RDATA OUT. C C IBCD(4)=INT(RDATA/1000.0) IBCD(3)=INT((RDATA-IBCD(4)*1000.)/100.) IBCD(2)=INT((RDATA-IBCD(4)*1000.-IBCD(3)*100.)/10.) IBCD(1)=INT((RDATA-IBCD(4)*1000.-IBCD(3)*100.-IBCD(2)*10.)/1.) C C C CHECK EACH DIGIT. C C DO 4020, I=1,4 IF(IBCD(I) .GT. 9) GO TO 4015 GO TO 4020 4015 IERR=1 GO TO 8500 4020 CONTINUE C C C POSITION EACH DIGIT TO FORM AN EQUIVALENT BCD WORD. C C IBCD(1)=IBCD(1)*1B IBCD(2)=IBCD(2)*20B IBCD(3)=IBCD(3)*400B IBCD(4)=IBCD(4)*10000B C C C ADD UP TO FORM THE BINARY CONVERSION OF THE BCD WORD. C C IWRD=IBCD(1) DO 4040, I=2,4 IWRD=IOR(IBCD(I),IWRD) 4040 CONTINUE C C C OUTPUT THE BCD CONVERTED TO BINARY WORD. C C GO TO 300 C C C C C C ERROR EXIT C C C C C C PARAMETER ERROR C C 8000 IERR=1 GOTO 8500 C C C ATTEMPT TO READ A NON BCD CONVERTABLE BINARY NUMBER. C C 7100 IERR=3 GO TO 8500 C C C THE I/O CALL HAS BEEN REJECTED. C C 7000 IERR=9 GOTO 8500 C C C THERE HAS BEEN A TIME-OUT ERROR GENERATED. C C 7500 IERR=2 8500 IERR(2)=5 IERR(3)=2HGP IERR(4)=2HRI IERR(5)=2HOI RETURN END C*************************************** C SUBROUTINE GPRSB(IUNIT,IFUNC,IPOS,ISTAT),09580-16316 REV.2013 8001 +31 C C C WHERE: C IUNIT= UNIT # OF I/O CARD C C IFUNC= FUNCTION C 0= INPUT STATE OF SPECIFIED BIT C C 1= OUTPUT STATE OF SPECIFIED BIT WITH C ALL OTHER BITS UNCHANGED. C C 2= OUTPUT STATE OF SPECIFIED BIT WITH C ALL OTHER BITS SET TO ZERO. C C 3= OUTPUT STATE OF SPECIFIED BIT WITH C ALL OTHER BITS SET TO ONE. C C IPOS = SPECIFIED BIT POSITION (0 TO 15) C C ISTAT = STATUS OF SPECIFIED BIT. C C******************************************************************* C C ALL THE EXAMPLES BELOW ASSUME THE CURRENT STATUS OF THE CARD C = 1110110111101011 (166753 OCTAL). C C C EXAMPLE 1: C WITH IFUNC = 1| AND IPOS = 3, OUTPUT WILL BE: C 0000000000001000 (10 OCTAL) C C EXAMPLE 2: C WITH IFUNC = 1 AND IPOS = 2, OUTPUT WILL BE: C 0000000000000000 (0 OCTAL) C C EXAMPLE 3: C WITH IFUNC = 2 AND IPOS = 9, OUTPUT WILL BE: C 1111110111111111 (176777 OCTAL) C C EXAMPLE 4: C WITH IFUNC = 2 AND IPOS = 8, OUTPUT WILL BE: C 1111111111111111 (177777 OCTAL) C C C C C***************************************** C DIMENSION IERMS(5) DATA IERMS/10,5,2HGP,2HRS,2HB / DATA IDTN/56/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) LU=LUDV(ISTN,IDTN,IUNIT) IF(LU)800,800,20 C 20 CALL XPRSB(LU,IERMS,IUNIT,IFUNC,IPOS,ISTAT) IF(IERMS)800,30,800 30 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C C C C============================================= C SUBROUTINE XPRSB(LU,IERR,IUNIT,IFUNC,IPOS,ISTAT),09580-16316 REV.2 +013 800131 C C DIMENSION IERR(5),ID(6),IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) DATA IDTN/56/ C C C CHECK FUNCTION PARAMETER C IF(IFUNC .LT. 0 .OR. IFUNC .GT. 3) GOTO 8000 C C CHECK BIT POSITION SPECIFIER PARAMETER C IF(IPOS .LT. 0 .OR. IPOS .GT. 15) GOTO 8000 C C IERR=0 IDATA=0B ICOMP=77777B C C IF(IPOS .EQ. 15) GO TO 20 IMASK=2**(IPOS) GO TO 25 20 IMASK=100000B 25 JMASK=IMASK IF(IFUNC .NE. 0 .AND. ISTAT .EQ. 0) JMASK=0B NMASK=NOT(IMASK) C C TEST FOR READ OPERATION C 30 IF(IFUNC .EQ. 0) GO TO 500 C C C C C NOT A READ, MUST BE A WRITE OPERATION. C C C C C INPUT THE CURRENT BIT STATE IF SO SELECTED. C IF(IFUNC .EQ. 1) GO TO 50 C C NO. PARSE IFUNC FURTHER. C GO TO 200 C C RETRIEVE DATA C 50 CALL TIM(IDTN,IUNIT,1,JDATA,1,JER)0.* IF(JER.NE.0) RETURN C C INCLUSIVE 'OR' THE TWO WORDS. C 100 JWORD=IOR(JDATA,JMASK) IF(ISTAT .EQ. 0) JWORD=IAND(JDATA,NMASK) C C GO TO THE OUTPUT ROUTINE. C GO TO 350 C 200 IF(IFUNC .EQ. 2) JWORD = JMASK IF(IFUNC .EQ. 2 .AND. ISTAT .EQ. 0) JWORD=0B C C 300 IF(IFUNC .EQ. 3) JWORD = IOR(JMASK,NMASK) C IF(IFUNC .EQ. 3 .AND. IPOS .NE. 15) JWORD= IOR(JWORD,100000B) IF(IFUNC .EQ. 3 .AND. ISTAT .EQ. 1) JWORD=177777B C C SAVE DATA WORD C 350 CALL TIM(IDTN,IUNIT,2,JWORD,1,JER) IF(JER.NE.0) RETURN C C C C OUTPUT A WORD C C 400 CALL REIO(100002B,100B+LU,JWORD,1,IDUMY,0) GOTO 7000 420 CALL ABREG(IA,IB) IF(IAND(IREG,377B) .NE. 0) GOTO 7500 C C RETURN C C C READ BIT STATUS ONLY C C 500 CALL REIO(100001B,100B+LU,IDATA,1,IDUMY,0) GO TO 7000 510 CALL ABREG(IA,IB) IF(IAND(IREG,377B) .NE. 0) GOTO 7500 ISTAT=0 IF(IAND(IDATA,IMASK) .NE. 0) ISTAT=1 C RETURN C C C C ERROR EXIT C 8000 IERR=1 GOTO 8500 7000 IERR=9 GOTO 8500 7500 IERR=2 8500 IERR(2)=5 IERR(3)=2HGP IERR(4)=2HRS IERR(5)=2HBI RETURN END END$ 0  09580-18317 2013 S C0122 &WAVSU              H0101 u FTN4,L SUBROUTINE WAVSU(IUN,IFLD,ISBF,PVAL),09580-16317 REV.2013 800131 C C **************************************************** C C SOURCE 09580-18317 C RELOCATABLE 09580-16317 C C T. KONDO 12/11/78 REV. A C BOB RICHARDS 02/20/79 REV. B C BOB RICHARDS 05/02/79 C BOB RICHARDS 791120 THIS REV. IS USED TO PROGRAM C AUTEK 505'S WITH THE IEEE-488 C BUS MOD. C BOB RICHARDS 800131 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C ********************************************************** C C THIS DEVICE SUBROUTINE IS FOR AUTEK 505 WAVEFORM ANALYZER. C C SET-UP CALL: C WAVSU(IUN,IFLD,ISBF,PVAL) C WHERE: C IUN = UNIT NUMBER C IFLD = PROGRAM FIELD C 1 = RA C 2 = AP C 3 = BP C 4 = ST C 5 = SP C 6 = AM C 7 = BM C 8 = DC C 9 = TG C ISBF = PROGRAM SUBFIELD C (1 THROUGH 4) C PVAL = PROGRAM VALUE C C MEASUREMENT CALL: C WAVMU(IUN,IFUNC,VAL,LSTAT) C C WHERE: C IUN = UNIT NUMBER C IFUNC = FUNCTION C 1 = PROGRAM,TRIGGER,& MEASURE C 2 = TRIGGER & MEASURE C 3 = TRIGGER ONLY  C 4 = MEASURE ONLY C VAL = MEAUREMENT VALUE C LSTAT = MEASUREMENT STATUS C 0 = VALID MEASUREMENT C 1 = OVER-RANGE C 2 = MEASUREMENT IN PROGRESS C 3 = SEARCH FAIL C 4 = MEASUREMENT IN PROCESS / OVER RANGE C 5 = OVER RANGE / SEARCH FAIL C 6 = MEASUREMENT IN PROCESS / SEARCH FAIL C 8 = MEASUREMENT IN PROCESS / OVER RANGE / C SEARCH FAIL C C = * = * = * = * = * = * = * = * = * = * = C C AUTEK 505 CONFIGURATION: C C BRANCH & MNEMONIC TABLES: C WAVSU(I,I,I,R), OV=XX, ENT=WAVSU, FIL=%WAVSU C WAVMU(I,I,RV,I), OV=XX, ENT=WAVMU, FIL=%WAVSU C C CONFIGURATION TABLE (ALLFL) ENTRIES: C R 52,1,39 C U1 C 1 NUMBER OF PROBE MULTIPLERS C 1 NUMBER OF TRIGGER CONDITIONERS C 0 STORAGE C 051101B RA C 030466B 16 C 032460B 50 C 052060B T0 C C 040520B AP C 030060B 00 C 030461B 11 C 025461B +1 C C 041120B BP C 030061B 01 C 030461B 11 C 026461B -1 C C 051524B ST C 032460B 50 C 022501B %A C 030455B 1+ C C 051520B SP C 032460B 50 C 022501B %A C 031055B 2+ C C 040515B AM C 030061B 01 C 050071B P9 C 034520B 9P C C 041115B BM C 030061B 01 C 050071B P9 C 034520B 9P C C 042103B DC C 030053B 0+ C 030060B 00 C 030060B 00 C C 052107B TG C 030462B 12 C 025460B +0 C 030053B 0+ C C = * = * = * = * = * = * = * = * = * = * = C DIMENSION IERMS(5) DATA IERMS /10,5,2HWA,2HVS,2HU / DATA IDTN /52/ C C FIND LU # C IERMS = 10 ISTN =ISN(DUMMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF(LU1.LE.0.OR.LU0.LE.0)GOTO 800 CALL XAVSU(LU0,LU1,IERMS,IUN,IFLD,ISBF,PVAL) IF(IERMS.NE.0)GOTO 800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C ------------------------------------- SUBROUTINE WAVMU(IUN,IFUNC,VAL,LSTAT),09580-16317 REV.2013 800131 DIMENSION IERMS(5) DATA IERMS /10,5,2HWA,2HVM,2HU / DATA IDTN /52/ C C FIND LU # C IERMS = 10 ISTN = ISN(DUMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF (LU1.LE.0.OR.LU0.LE.0)GOTO 800 CALL XAVMU(LU0,LU1,IERMS,IUN,IFUNC,VAL,LSTAT) IF(IERMS.NE.0)GOTO 800 20 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C -------------------------------------------------- SUBROUTINE XAVSU(LU0,LU1,IERR,IUN,IFLD,ISBF,PVAL),09580-16317 REV. +2013 800131 DIMENSION TPERD(26),VERTS(12) DIMENSION IBUFR(40),ITDIV(26),IVERT(12),IFCDE(9),IOBUF(5) DIMENSION IERR(5),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA TPERD /.2E-9,.5E-9,1E-9,.2E-8,.5E-8,1E-8,.2E-7, S.5E-7,1E-7,.2E-6,.5E-6,1E-6,.2E-5,.5E-5,1E-5,.2E-4, S.5E-4,1E-4,.0005,.001,.002,.005,.01,.02,.05,.1/ DATA ITDIV /2H29,2H59,2H19,2H28,2H58,2H18,2H27,2H57,2H17, S2H26,2H56,2H16,2H25,2H55,2H15,2H24,2H54,2H14,2H53,2H13, S2H22,2H52,2H12,2H21,2H51,2H11/ DATA VERTS /.002,.005,.01,.02,.05,.1,.2,.5,1.0,2.0,5.0,10.0/ DATA IVERT /2H20,2H50,2H10,2H21,2H51,2H11,2H22,2H52,2H12, S2H23,2H53,2H13/  DATA IFCDE /2HRA,2HAP,2HBP,2HST,2HSP,2HAM,2HBM,2HDC,2HTG/ DATA IDTN /52/ DATA LEN /39/ C C C READ OUTPUT BUFFER C CALL TIM(IDTN,IUN,1,IBUFR,LEN,IERFG) IF (IERFG.LT.0)GOTO 9900 NUMS = 8 IF(IBUFR(2).GT.0)NUMS = 9 IF (IFLD.LT.1.OR.IFLD.GT.NUMS)GOTO 9900 IF (ISBF.LT.1.OR.ISBF.GT.4)GOTO 9900 C C RETRIEVE CURRENT PROGRAM FIELD C IERR = 0 INDEX = IFLD * 4 IOBUF(2) = IFCDE(IFLD) INX = INDEX + 1 DO 5 I=3,5 IOBUF(I) = IBUFR(INX) 5 INX = INX + 1 C IF(IFLD.EQ.1.AND.ISBF.EQ.1.OR.IFLD.EQ.2.AND.ISBF.EQ.2)GOTO 10 IF(IFLD.EQ.3.AND.ISBF.EQ.2)GOTO 10 IVAL = PVAL C C BRANCH TO FIELD TO BE EDITED C 10 CONTINUE GO TO (100,200,200,400,400,600,600,800,900),IFLD C =========================== C RA FIELD C ============================ 100 CONTINUE GO TO (110,120,130,140),ISBF C C TIME/DIV C 110 JNX = 0 IF(PVAL.LT.TPERD(1).OR.PVAL.GT.TPERD(26))GOTO 9900 IF(PVAL.GT.TPERD(25))JNX = 26 IF(JNX.EQ.26)GOTO 116 DO 112 I=2,26 JNX = JNX + 1 IF(PVAL.LT.TPERD(I))GOTO 116 112 CONTINUE C 116 IOBUF(3) = ITDIV(JNX) GO TO 7700 C C TRIGGER DELAY C 120 IF(IVAL.LT.0)GOTO 9900 IFLAG = 0 JNX = 4 GO TO 7000 C C MEASUREMENT TYPE C 130 IF(IVAL.LT.0.OR.IVAL.GT.2)GOTO 9900 ICHAR = IAND(IOBUF(5),377B) IF(IVAL.EQ.0)IOBUF(5)=52000B IF(IVAL.EQ.1)IOBUF(5)=40400B IF(IVAL.EQ.2)IOBUF(5)=41000B IOBUF(5) = IOR(IOBUF(5),ICHAR) GO TO 7700 C C SWEEP TYPE C 140 IF(IVAL.LT.0.OR.IVAL.GT.7)GOTO 9900 ICHAR =IVAL + 60B GO TO 645 C ========================= C AP####X# BP####X# C ========================= 200 CONTINUE GO TO (210,220,230,230),ISBF C C PROBE # C 210 IF(IVAL.LT.0)GOTO 9900 IF(IBUFR.EQ.0.AND.IVAL.GT.1)GOTO 9900 IF(IVAL.GT.IBUFR*9)GPOTO 9900 GO TO 610 C C VERTICAL SENSITIVITY C 220 JNX = 0 IF(PVAL.LT.VERTS(1).OR.PVAL.GT.VERTS(12))GOTO 9900 DO 222 I=1,12 JNX = JNX +1 IF(JNX.EQ.12)GOTO 222 IF(PVAL.GE.VERTS(I).AND.PVAL.LT.VERTS(I+1))GOTO 226 222 CONTINUE 226 IOBUF(4) = IVERT(JNX) GO TO 7700 C C BASELINE OFFSET C 230 IF(IABS(IVAL).GT.9)GOTO 9900 ICHAR = IABS(IVAL)+60B IOBUF(5) = IOR(26400B,ICHAR) IF(IVAL.GE.0)IOBUF(5)=IOR(25400B,ICHAR) GO TO 7700 C ====================== C ST##XX#X SP##XX#X C ====================== 400 CONTINUE GO TO (410,420,430,440),ISBF C C PERCENTAGE LEVEL C 410 ICHAR = 22400B GO TO 425 C C PERCENTAGE OF VERTICAL FULL-SCALE C 420 ICHAR = 26400B IF(IVAL.GE.0)ICHAR=25400B IF(IVAL.LT.0)IVAL = -IVAL 425 IOBUF(4) = IOR(ICHAR,IAND(IOBUF(4),377B)) GO TO 610 C C CHANNEL C 430 IF(IVAL.LT.1.OR.IVAL.GT.2)GOTO 9900 ICHAR = IAND(177400B,IOBUF(4)) IOBUF(4) = IOR(ICHAR,IVAL+100B) GO TO 7700 C C TRANSITION & SLOPE C 440 IF(IABS(IVAL).GT.9)GOTO 9900 ICHAR =(60B+IABS(IVAL))*400B IOBUF(5) = IOR(ICHAR,53B) IF(IVAL.LT.0)IOBUF(5)=IOR(ICHAR,55B) GO TO 7700 C ==================== C AM##X##X BM##X##X C ==================== 600 CONTINUE GO TO (610,620,630,640),ISBF C C 0% REFERENCE C 610 IFLAG = 0 IF(IVAL.LT.0)GOTO 9900 JNX = 3 GO TO 7000 C C MEMORY OPERATION C 620 IF(IVAL.LT.0.OR.IVAL.GT.2)GOTO 9900 ICHAR = 50000B IF(IVAL.EQ.1)ICHAR=51000B IF(IVAL.EQ.2)ICHAR=43400B IOBUF(4) = IOR(ICHAR,IAND(IOBUF(4),377B)) GO TO 7700 C C 100% REFERENCE C 630 IF(IVAL.LT.0)GOTO 9900 IOBUF(4) = IAND(IOBUF(4),177400B) GO TO 935 C C 100% MEMORY OPERATION C 640 IF(IVAL.LT.0.OR.IVAL.EQ.1.OR.IVAL.GT.2)GOTO 9900 ICHAR =120B IF(IVAL.GT.0)ICHAR = 107B 645 IOBUF(5) = IOR(IAND(177400B,IOBUF(5)),ICHAR) GO TO 7700 C =================== C DCXX#000 C =================== 800 CONTINUE GO TO (810,820,9900,9900),ISBF C C AUTO-DELAY C 810 IF(IABS(IVAL).GT.2)GOTO 9900 IF(IVAL.EQ.0)IOBUF(3)=30053B IF(IVAL.EQ.0)GOTO 7700 ICHAR = 40400B IF(IABS(IVAL).EQ.2)ICHAR = 41000B IOBUF(3) = IOR(ICHAR,53B) IF(IVAL.LT.0)IOBUF(3) = IOR(ICHAR,55B) GO TO 7700 C C CAL ON/OFF C 820 IF(IVAL.GT.1)GOTO 9900 IOBUF(4) = 30060B IF(IVAL.EQ.1)IOBUF(4)=30460B GO TO 7700 C C TG###### C 900 CONTINUE GO TO (910,920,930,940),ISBF C C TRIGGER SOURCE C 910 IF(IVAL.LT.1.OR.IVAL.GT.8)GOTO 9900 ICHAR = IAND(IOBUF(3),377B) IOBUF(3) = IOR((60B+IVAL)*400B,ICHAR) GO TO 7700 C C TRIGGER CONDITION C 920 IF(IVAL.LT.1.OR.IVAL.GT.3)GOTO 9900 ICHAR = IAND(177400B,IOBUF(3)) IOBUF(3) = IOR(ICHAR,60B+IVAL) GO TO 7700 C C TRIGGER DISCRIMINATOR LEVEL C 930 IOBUF(4) = 25400B IF(IVAL.LT.0)IOBUF(4) = 26400B 935 IOBUF(5) = IAND(IOBUF(5),377B) IFLAG = 1 JNX = 4 GO TO 7000 C C TRIGGER SLOPE C 940 IF(IVAL.EQ.0.OR.IABS(IVAL).GT.1)GOTO 9900 ICHAR =IAND(177400B,IOBUF(5)) IOBUF(5) = IOR(ICHAR,53B) IF(IVAL.LT.1)IOBUF(5)=IOR(ICHAR,55B) GO TO 7700 C C CONVERT TO ASCII - NUMERIC C 7000 MSD = 60B LSD = IABS(IVAL) IF(LSD.GT.99)GOTO 9900 7010 CONTINUE IF(LSD.LE.9)GOTO 7020 LSD = LSD - 10 MSD = MSD + 1 GO TO 7010 C 7020 LSD = LSD + 60B IF(IFLAG.EQ.0)IOBUF(JNX)=IOR(MSD*400B,LSD) IF(IFLAG.EQ.0)GOTO 7700 IOBUF(JNX) = IOR(IOBUF(JNX),MSD) IOBUF(JNX+1) = IOR(LSD*400B,IOBUF(JNX+1)) C C OUTPUT NEW 8-CHARRACTER FIELD C 7700 CONTINUE CALL EXEC(100003B,1600B+LU0) GOTO 9000 7710 CALL ABREG(IA,IB) IF(IB.LT.0)GOTuOO 9100 C C DETERMINE NUMBER OF FIELDS TO BE TRANSMITTED C INX = INDEX DO 7720 I=2,5 IBUFR(INX) = IOBUF(I) 7720 INX = INX + 1 IOBUF = 4 CALL REIO(100002B,LU1,IOBUF(2),IOBUF,IDUMY,0) GOTO 9000 7730 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C UPDATE FIELD CODE C 8000 IBUFR(3) = 1 CALL TIM(IDTN,IUN,2,IBUFR,LEN,IERFG) IF (IERFG.LT.0)GOTO 9900 RETURN C C ERROR ROUTINE C 9000 IERR = 9 GOTO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HWF IERR(4) = 2HAS IERR(5) = 2HU RETURN END C C --------------------------------------------------------- SUBROUTINE XAVMU(LU0,LU1,IERR,IUN,IFUNC,VAL,LSTAT),09580-16317 REV +.2013 800131 DIMENSION IBUFR(40),IOBUF(6),IERR(5),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA MTRGO /2HGO/ DATA IDTN /52/ C VAL = 1E+38 LSTAT = 0 ITIME = 0 IERR = 0 MIPTR = 0 IF(IFUNC.LT.1.OR.IFUNC.GT.4)GOTO 9900 IF(IFUNC.NE.1)GOTO 50 C C READ DATA FROM BUFFER C CALL TIM(IDTN,IUN,1,IBUFR,39,IERFG) IF(IERFG.LT.0)GOTO 9900 C C REMOTE ENABLE C 50 CONTINUE CALL EXEC(100003B,1600B+LU0) GO TO 9000 60 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C IF(IFUNC.EQ.4)GOTO 300 IF(IFUNC.GT.1)GOTO 100 LENTH = 32 IF(IBUFR(2).GT.0)LENTH = 36 C C OUTPUT FIELD CODES C CALL REIO(100002B,LU1,IBUFR(4),LENTH,IDUMY,0) GO TO 9000 70 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C OUTPUT 'GO' C 100 CONTINUE CALL REIO(100002B,LU1,MTRGO,1,IDUMY,0) GO TO 9000 110 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 IF(IFUNC.EQ.3)RETURN C C WAIT FOR STATUS C 160 IOFST = -20 CALL EXEC(12,0,1,0,IOFST) 170 CONTINUE CALL EXEC(100003B,600B+LU1)  GO TO 9000 180 CALL ABREG(IA,IB) ISTAT = IAND(IA,377B) IF(ISTAT.GE.100B)GOTO 210 ITIME = ITIME + 1 IF(ITIME.LE.110)GOTO 160 C$ C$ ALL LINES COMMENTED OUT WITH 'C$' ARE PRE REV 2013 C$ IF(ITIME.LE.55)GOTO 160 C$ GO TO 220 C C CHECK STATUS: C MEASUREMENT-IN-PROCESS OVER RANGE SEARCH FAIL C 210 CONTINUE IF(ISTAT.EQ.100B)GOTO 300 IF(ISTAT.EQ.101B)GOTO 230 215 LSTAT = 5 IF(ISTAT.EQ.102B)LSTAT = 1 IF(ISTAT.EQ.103B)LSTAT = 4 IF(ISTAT.EQ.104B)LSTAT = 3 IF(ISTAT.EQ.105B)LSTAT = 6 IF(ISTAT.EQ.106B)LSTAT = 8 RETURN C 220 LSTAT = 2 RETURN C 230 MIPTR = MIPTR + 1 IF (MIPTR.GT.40)GOTO 220 C$ C$ IF (MIPTR.GT.20)GOTO 220 C$ IOFST = -50 CALL EXEC(12,0,1,0,IOFST) C C READ DATA FROM BUS C 300 CONTINUE C C ALL LINES COMMENTED OUT WITH 'C$' ARE PRE REV 2013 C C$ CALL REIO(100001B,100B+LU1,IOBUF(2),4,IDUMY,0) CALL REIO(100001B,100B+LU1,IOBUF(2),5,IDUMY,0) GO TO 9000 310 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 ISTAT = IAND(IOBUF(2),177400B)/256 IF(ISTAT.EQ.101B)GOTO 230 IF(ISTAT.GT.101B)GOTO 215 IOBUF(1) = 10 C THE FOLLOWING 2 LINES ARE REV 2013 IF (IOBUF(2) .EQ. 40053B) IOBUF(2) = 2H+0 IF (IOBUF(2) .EQ. 40055B) IOBUF(2) = 2H-0 C C$ ICHAR = IAND(IOBUF(5),177400B) ICHAR = IAND(IOBUF(5),377B) C$ NCHAR = IAND(IOBUF(5),377B) NCHAR = IAND(IOBUF(6),177400B)/256 IOBUF(5) = IAND(IOBUF(5),177400B) IOBUF(5) = IOBUF(5) + 105B C$ IF(ICHAR.EQ.20000B)IOBUF(5)=42453B IF(ICHAR.EQ.40B)IOBUF(6)=2H+0 C$ IF(ICHAR.EQ.47000B)IOBUF(6)=34440B IF(ICHAR.EQ.116B)IOBUF(6)=2H-9 C$ IF(ICHAR.EQ.46400B)IOBUF(6)=31440B IF(ICHAR.EQ.115B)IOBUF(6)=2H-3 C$ IF(ICHAR.EQ.52400B)IOBUF(6)=33040B IF(ICHAR.EQ.125B)IOBUF(6)=2H-6 C$ IF(ICHAR.EQ.20000B.AND.NCHAR.EQ.126B)IOBUF(6)=30060B IF(ICHAR.EQ.40B.ANe640D.NCHAR.EQ.126B)IOBUF(6)=30060B IERR = A2F(IOBUF,1,IOBUF,VAL) IF(IERR.NE.0)GOTO 9300 400 CONTINUE RETURN C C ERROR EXIT C 9000 IERR = 9 GO TO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9200 IERR = 4 GO TO 9910 9300 IERR = 3 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HWF IERR(4) = 2HAM IERR(5) = 2HU RETURN END END$ W6  09580-18318 2001 S C0122 &WAVSA              H0101 u FTN4,L C SUBROUTINE WAVSA(IUN,IVAR),09580-16318 REV.2001 791023 C **************************************************** C C SOURCE 09580-18318 C RELOCATABLE 09580-16318 C C T. KONDO 12/11/78 REV. A C BOB RICHARDS 02/20/79 REV. B C BOB RICHARDS 05/02/79 C BOB RICHARDS 791023 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C ********************************************************** C C THIS SUBROUTINE PASSES ASCII STRINGS TO AUTEK 505 C C WAVSA(IUNIT,IVAR) C C WHERE: IUNIT = UNIT NUMBER C C IVAR = ASCII STRING C C C THIS SUBROUTINE, BASIC CALLABLE ONLY, IS USED TO CHECK C THE ASCII STRINGS PASSED TO THE AUTEK 505. IF THE IN- C STRUMENT MUST BE PROGRAMMED IN FORTRAN, PASS THE ASCII C STRING IN A BUFFER WHERE THE FIRST WORD CONTAINS THE NUM- C BER OF WORDS IN THE BUFFER. C C =========================================================== C C BRANCH & MNEMONIC TABLE ENTRIES: C C WAVSA(I,IA), OV=X, ENT=WAVSA, FIL=%WAVSA C C =========================================================== DIMENSION IVAR(40),IBUFR(40),IFCDE(9),ITDIV(26) DIMENSION IVERT(12),IERR(5),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA IFCDE /2HRA,2HAP,2HBP,2HST,2HSP,2HAM,2HBM,2HDC,2HTG/ DATA ITDIV /2H29,2H59,2H19,2H28,2H58,2H18,2H27,2H57,2H17, S2H26,2H56,2H16,2H25,2H55,2H15,2H24,2H54,2H14,2H53,2H13, S2H22,2H52,2H12,2H21,2H51,2H11/ DATA IVERT /2H20,2H50,2H10,2H21,2H51,2H11,2H22,2H52, S2H12,2H23,2H53,2H13/ DATA IDTN /52/ C C  READ BUFFER STORAGE C CALL TIM(IDTN,IUN,1,IBUFR,39,IERFG) IF(IERFG.LT.0)GOTO 9000 NUMS = 8 IF(IBUFR(2).NE.0)NUMS = 9 MAXNM = NUMS * 8 C C NUMBERS OF CHARACTERS C NUMBR = IAND(IVAR(1),377B) IF(NUMBR.GT.MAXNM)GOTO 9100 ICNTR = NUMBR INX = 2 10 CONTINUE IF(ICNTR.EQ.8)GOTO 20 IF(ICNTR.LT.8)GOTO 9100 ICNTR = ICNTR - 8 GO TO 10 C C CHECK FIELD CHARACTERS C 20 IDX = 1 NWDS = NUMBR / 2 DO 30 I=1,9 IF(IVAR(INX).EQ.IFCDE(I))GOTO 40 30 IDX = IDX + 1 GO TO 9100 C 40 INX = INX + 1 GO TO (100,200,200,400,400,600,600,800,900),IDX C C RA FIELD C 100 JNX = INX DO 110 I=1,26 IF(IVAR(JNX).EQ.ITDIV(I))GOTO 120 110 CONTINUE GO TO 9100 C 120 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.71B)GOTO 9100 C JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.40400B.OR.ICHAR.GT.52000B)GOTO 9100 IF(ICHAR.GT.41000B.AND.ICHAR.LT.52000B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.67B)GOTO 9100 GO TO 4000 C C A & B PROBES C 200 JNX = INX ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.71B)GOTO 9100 C JNX = JNX + 1 KNX = 1 DO 210 I=1,12 IF(IVAR(JNX).EQ.IVERT(KNX))GOTO 220 210 KNX = KNX + 1 GO TO 9100 C 220 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.EQ.25400B.OR.ICHAR.EQ.26400B)GOTO 230 GO TO 9100 C 230 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.71B)GOTO 9100 GO TO 4000 C C ST & SP FIELDS C 400 JNX = INX ICHAR = IAND(IVAR(JNX),177400BI) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.71B)GOTO 9100 C JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.EQ.22400B.OR.ICHAR.EQ.25400B)GOTO 410 IF(ICHAR.EQ.26400B)GOTO 410 GO TO 9100 C 410 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.101B.OR.ICHAR.GT.102B)GOTO 9100 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.EQ.53B.OR.ICHAR.EQ.55B)GOTO 4000 GO TO 9100 C C AM & BM FIELDS C 600 JNX = INX ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 KCHAR = IAND(IVAR(JNX),377B) IF(KCHAR.LT.0.OR.KCHAR.GT.71B)GOTO 9100 IF(ICHAR.EQ.60B.AND.KCHAR.EQ.60B)GOTO 9100 C JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.EQ.43400B.OR.ICHAR.EQ.50000B)GOTO 610 IF(ICHAR.EQ.51000B)GOTO 610 GO TO 9100 C 610 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.60B.OR.ICHAR.GT.71B)GOTO 9100 JNX = JNX + 1 KCHAR = IAND(IVAR(JNX),177400B) IF(KCHAR.LT.30000B.OR.KCHAR.GT.34400B)GOTO 9100 IF(KCHAR.EQ.30000B.AND.ICHAR.EQ.60B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.EQ.107B.OR.ICHAR.EQ.120B)GOTO 4000 GO TO 9100 C C AUTO DELAY & CALIBRATOR C 800 CONTINUE JNX = INX ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.EQ.40400B.OR.ICHAR.EQ.41000B.OR.ICHAR.EQ.30000B)GOTO 810 GO TO 9100 810 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.EQ.53B.OR.ICHAR.EQ.55B)GOTO 815 GO TO 9100 815 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.30400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.NE.60B)GOTO 9100 IF(IVAR(JNX+1).NE.30060B)GOTO 9100 GO TO 4000 C C TRIGGER SOURCE C 90ח0 CONTINUE JNX = INX ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34000B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.61B.OR.ICHAR.GT.63B)GOTO 9100 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.EQ.25400B.OR.ICHAR.EQ.26400B)GOTO 910 GO TO 9100 910 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 JNX = JNX + 1 ICHAR = IAND(IVAR(JNX),177400B) IF(ICHAR.LT.30000B.OR.ICHAR.GT.34400B)GOTO 9100 ICHAR = IAND(IVAR(JNX),377B) IF(ICHAR.NE.53B .OR. ICHAR .NE. 55B) GOTO 9100 C C STORE NEW DATA IN STORAGE BUFFER C 4000 KNX = IDX * 4 + 1 DO 4100 I=1,3 IBUFR(KNX) = IVAR(INX) INX = INX + 1 4100 KNX = KNX + 1 NUMBR = NUMBR - 8 IF(NUMBR.NE.0)GOTO 20 C C OUTPUT NEW PROGRAM C 5000 CONTINUE ISTN = ISN(DUMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 =IBLU0(LU1) CALL EXEC(100003B,1600B+LU0) GO TO 9200 5100 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9300 CALL REIO(100002B,LU1,IVAR(2),NWDS,IDUMY,0) GO TO 9200 5200 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9300 CALL TIM(IDTN,IUN,2,IBUFR,39,IERFG) IF(IERFG.LT.0)GOTO 9000 RETURN C C ERROR ROUTINE C 9000 IERR = 10 GO TO 9900 9100 IERR = 1 GO TO 9900 9200 IERR = 9 GO TO 9900 9300 IERR = IAND(IREG,377B) + 11 9900 IERR(2) = 5 IERR(3) = 2HWA IERR(4) = 2HVS IERR(5) = 2HA CALL ERROR(IERR,IERR(2)) RETURN END w  09580-18319 1926 S C0122 &PSPRG 59501A             H0101 FTN4,L SUBROUTINE PSPRG(IUNIT,PGVAL),09580-16319 1926 790502 C C------------------------------------- C C HP 59501A POWER SUPPLY PROGRAMMER, D TO A C C RELOCATABLE 09580-16319 C SOURCE 09580-18319 C C BOB RICHARDS 790402 C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER jUSES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 59501A PROGRAMMABLE SIGNAL SOURCE. C C HARDWARE REQUIRED: C ------------------ C A. HP 59501A C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C PSPRG(I,R), OV=XX, ENT=PSPRG, FIL=%PSPRG C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 58,1,19 C U1 C C 00.00 TEMPORARY STORAGE FOR VOLTAGE C 00.00 TEMPORARY STORAGE FOR CURRENT C 00.00 V MAX C 00.00 V MIN C 00.00 I MAX C 00.00 I MIN C FF.FF NOT USED C FF.FF NOT USED C NN NUMBER OF UNITS C N CURRENT/VOLTAGE SOURCE 0=I, 1=V C N HI RANGE/LOW RANGE 0=LOW, 1=HIGH C C C C NOTE: WHEN ENTERING VALUES FOR VMAX AND IMAX, SET THEM C TO 99.9% OF THE DESIRED MAX. FOR EXAMPLE, A 20 VOLT MAX C POWER SUPPLY SHOULD HAVE VMAX = .999 * 20.0 = 19.98 VOLTS. C C C C------------------------------------ C C PSPRG(IUNIT,PGVAL) C C WHERE: C C IUNIT = UNIT # C C PGVAL = PROGRAMMED CURRENT OR VOLTAGE VALUE C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 58 / DATA IERMS / 10,5,2HPS,2HPR,2HG / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59501A LU C LUIB = HPIB LU C NISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XSPRG(LU1,LUIB,IERMS,IUNIT,PGVAL) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XSPRG(LU1,LUIB,IERMS,IUNIT,PGVAL), +09580-16319 1926 790502 DIMENSION IERMS(5),IBUF(19),IOBUF(2),IFS(6),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (IBUF(18),IFGCV) EQUIVALENCE (IBUF(5),VMAX) EQUIVALENCE (IBUF(7),VMIN) EQUIVALENCE (IBUF(9),CMAX) EQUIVALENCE (IBUF(11),CMIN) EQUIVALENCE (IBUF(17),NUNIT) EQUIVALENCE (IBUF(19),LOWHI) C INUM = 2 C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP 59501A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(58,IUNIT,1,IBUF,19,IER) IF(IER .NE. 0)RETURN IERMS = 1 C C PRESET UNIPOLAR-BIPOLAR FLAG C IUNBI = 0 IF (IFGCV .EQ. 0) GOTO 200 C C CHECK VOLTAGE SOURCE INPUT PARAMETERS C IF(PGVAL .GT. VMAX ) GOTO 8000 IF(PGVAL .LT. VMIN ) GOTO 8000 Gl IF((VMIN .LT. 0.0) .AND. (VMAX .GT. 0.0)) GOTO 1100 GOTO 1000 C C CHECK CURRENT SOURCE INPUT C 200 IF (PGVAL .GT. CMAX) GOTO 8000 IF (PGVAL .LT. CMIN) GOTO 8000 VMAX = CMAX IF ((CMIN .LT. 0.0) .AND. (CMAX .GT. 0.0)) GOTO 1100 C C SET UP BUFFER FOR UNIPOLAR OUTPUT C 1000 DIV = VMAX/1000.0 GOTO 1200 C C SET BUFFER FOR BIPOLAR OUTPUT C 1100 IUNBI = 1 DIV = VMAX/500.0 C C C 1200 IOBUF(1) = 2H10 IF(LOWHI .EQ. 1) IOBUF(1) = 2H20 OUTPT = (PGVAL/DIV) + 0.5 IF (IUNBI .EQ. 1) OUTPT = OUTPT + 500.0 IF (OUTPT .GT. 999.0) OUTPT = 999.0 CALL FXF2A(OUTPT,IFS) IFS(3) =IAND(IFS(3),377B) IOBUF(1) = IOBUF(1) + IFS(3) - 60B IOBUF(2) = IFS(4) C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C UPDATE COMMON DATA C IF(IFGCV .EQ. 0) IBUF(3) = PGVAL IF(IFGCV .EQ. 1) IBUF(2) = PGVAL CALL TIM(58,IUNIT,2,IBUF,19,IER) IF (IER .NE. 0) RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HPS IERMS(4)=2HPR IERMS(5)=2HG RETURN END C C SUBROUTINE FXF2A(FNUM,IFS),09580-16319 1926 790502 C C C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GEZ. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1 RETURN C C FIND "E" IF PRESENT C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IENUM = IENUM - 60B GO TO 160 150 CONTINUE IENUM = 0 C C IENUM CONTAINS INTEGER VALUE OF "E" (0-6). C NOW UNPACK CHARACTERS. C 160 DO 200 I=1,5 N=(I*2)-1 JFS(N) = (IAND(IFS(I+1),177400B))/256 JFS(N) = IAND(JFS(N),377B) JFS(N+1) = IAND(IFS(I+1),377B) 200 CONTINUE IF (IEFLG .NE. 1) GO TO 210 JFS(1) = 61B JFS(2) = 40B IENUM = IENUM - 1 C C LOCATE THE DECIMAL POINT C 210 DO 220 ID=1,10 IF (JFS(ID) .EQ. 56B .OR. JFS(ID) .EQ. 40B) GO TO 230 IF (JFS(ID) .EQ. 105B) GO TO 225 220 CONTINUE IFS(1) = -1 RETURN C C VALID NUMBER BUT NO DECIMAL POINT C 225 JFS(ID+1) = 60B C C DELETE DECIMAL POINT, ADJUST E VALUE C 230 DO 250 I=ID,9 JFS(I) = JFS(I+1) IF (JFS(I) .EQ. 105B .OR. JFS(I) .EQ.40B) GO TO 240 GO TO 250 240 DO 245 J=I,10 JFS(J) = 60B 245 CONTINUE GO TO 260 250 CONTINUE C C SHIFT CHARACTERS AS NECESSARY C 260 ISHFT = 7 - (ID+IENUM) IF (ISHFT .EQ. 0) GO TO 300 DO 280 I=10,ISHFT+1,-1 JFS(I) = JFS(I-ISHFT) 280 CONTINUE C C ADD LEADING ZEROES C DO 290 I=1,ISHFT JFS(I) = 60B 290 CONTINUE C C PACK CHARACTERS C 300 DO 310 I=1,3 J = (I*2)-1 JFS(J) = JFS(J)*256 JFS(J) = IAND(JFS(J),177400B) $" JFS(J+1) = IAND(JFS(J+1),377B) IFS(I+1) = JFS(J)+JFS(J+1) 310 CONTINUE C C LOAD TRAILING BLANKS C DO 320 I=5,6 IFS(I) = 20040B 320 CONTINUE C C C RETURN END END$ $  09580-18320 1926 S C0122 &GENTM 59308A             H0101 FTN4,L SUBROUTINE GENTM(IUNIT,IMODE,TIME), +09580-16320 1926 790502 C C------------------------------------- C C HP 59308A C C RELOCATABLE 09580-16320 C SOURCE 09580-18320 C C BOB RICHARDS REV 1848 C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN F ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICES ARE USED C TO PROGRAM THE HP 59308A TIMING GENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP 59308A C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C GENTM(I,I,R), OV=XX, ENT=GENTM, FIL=%GENTM C C C C C------------------------------------ C C GENTM(IUNIT,IMODE,TIME) C C WHERE: C C IUNIT = UNIT # C C IMODE = MODE, 0=DISABLE (OFF) C 1=TIMER C 2=PACER C C TIME = +-.000001 TO +- 99900. SECONDS C C------------------------------------ C C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 57 / DATA IERMS / 10,5,2HGE,2HNT,2HM / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59308A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XENTM(LU1,LUIB,IERMS,IUNIT,IMODE,TIME) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XENTM(LU1,LUIB,IERMS,IUNIT,IMODE,TIME), +09580-16320 1926 790502 DIMENSION IERMS(5) DIMENSION IREG(2),IOBUF(6),IFS(6) EQ$)UIVALENCE (REG,IREG,IA),(IREG(2),IB) C INUM = 6 C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF HP59308A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 IF (IMODE .EQ. 0) GOTO 300 IF(IMODE .LT. 0 .OR. IMODE .GT. 2)GOTO 8000 IF(TIME .LT. -99900. .OR. TIME .GT. 99900.) GOTO 8000 IF(TIME .LT. 1E-6 .AND. TIME .GT. -1E-6) GOTO 8000 C C CLEAR OUTPUT BUFFER C DO 100 I=1,6 IOBUF(I) = 20040B 100 CONTINUE C C CONVERT DATA TO MICROSECONDS C TIME = TIME*1E6 C C CONVERT DATA VALUE TO POSITIVE C IOBUF(2) = 25400B IF (TIME .GE. 0.0) GOTO 125 TIME = -(TIME) IOBUF(2) = 26400B C C CONVERT DATA TO FORM NNN.NNN EM C 125 IE = -2 DO 150 J=1,10 DIV = 10.0**J IF (TIME .LT. DIV) GOTO 160 IE = IE + 1 150 CONTINUE IERMS = 1 GOTO 8000 160 DIV = DIV/1000.0 TIME = TIME/DIV 170 IF (IE .GE. 0) GOTO 175 IE = IE + 1 TIME = TIME/10.0 GOTO 170 C C CONVERT TIME DATA TO 59308A DATA FORMAT (-)DDDE(-)D C THIS INSTRUMENT DOES NOT LIKE RANDOM ASCII BLANKS IN C ITS DATA COMMAND STREAM. C 175 TIME = TIME + 0.50 IF (TIME .LT. 1000.0) GO TO 180  TIME = TIME/10.0 IE = IE + 1 180 CALL GENF2(TIME,IFS) IEOUT = 60B + IE IEOUT = (IAND(IEOUT,377B))*256 IEOUT = IAND(IEOUT,177400B) IOBUF(1) = 2HUP IF(IMODE .EQ. 1) IOBUF(1) = 2HUT IFS(3) = IAND(IFS(3),377B) IOBUF(2) = IOBUF(2) + IFS(3) IOBUF(3) = IFS(4) IOBUF(4) = 2HE+ IF (IE .LT. 0) IOBUF(4) = 2HE- IOBUF(5) = IEOUT IOBUF(5) = IEOUT + 101B IF (IMODE .EQ. 2) IOBUF(5) = IEOUT + 122B IF (IMODE .EQ. 1) IOBUF(6) = 2HRS IF (IMODE .EQ. 2) IOBUF(6) = 2HAD GOTO 2000 C C DISABLE 59308A C 300 INUM = 1 IOBUF(1) = 2HUD C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HGE IERMS(4)=2HNT IERMS(5)=2HM RETURN END C C SUBROUTINE GENF2(FNUM,IFS),09580-16320 1926 790502 C C C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GE. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1  RETURN C C FIND "E" IF PRESENT C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IENUM = IENUM - 60B GO TO 160 150 CONTINUE IENUM = 0 C C IENUM CONTAINS INTEGER VALUE OF "E" (0-6). C NOW UNPACK CHARACTERS. C 160 DO 200 I=1,5 N=(I*2)-1 JFS(N) = (IAND(IFS(I+1),177400B))/256 JFS(N) = IAND(JFS(N),377B) JFS(N+1) = IAND(IFS(I+1),377B) 200 CONTINUE IF (IEFLG .NE. 1) GO TO 210 JFS(1) = 61B JFS(2) = 40B IENUM = IENUM - 1 C C LOCATE THE DECIMAL POINT C 210 DO 220 ID=1,10 IF (JFS(ID) .EQ. 56B .OR. JFS(ID) .EQ. 40B) GO TO 230 IF (JFS(ID) .EQ. 105B) GO TO 225 220 CONTINUE IFS(1) = -1 RETURN C C VALID NUMBER BUT NO DECIMAL POINT C 225 JFS(ID+1) = 60B C C DELETE DECIMAL POINT, ADJUST E VALUE C 230 DO 250 I=ID,9 JFS(I) = JFS(I+1) IF (JFS(I) .EQ. 105B .OR. JFS(I) .EQ.40B) GO TO 240 GO TO 250 240 DO 245 J=I,10 JFS(J) = 60B 245 CONTINUE GO TO 260 250 CONTINUE C C SHIFT CHARACTERS AS NECESSARY C 260 ISHFT = 7 - (ID+IENUM) IF (ISHFT .EQ. 0) GO TO 300 DO 280 I=10,ISHFT+1,-1 JFS(I) = JFS(I-ISHFT) 280 CONTINUE C C ADD LEADING ZEROES C DO 290 I=1,ISHFT JFS(I) = 60B 290 CONTINUE C C PACK CHARACTERS C 300 DO 310 I=1,3 J = (I*2)-1 JFS(J) = JFS(J)*256 JFS(J) = IAND(JFS(J),177400B) JFS(J+1) = IAND(JFS(J+1),377B) IFS(I+1) = JFS(J)+JFS(J+1) 310 CONTINUE C C LOAD TRAILING BLANKS C DO 320 I=5,6 IFS(I) = 20040B 320 CONTINUE C C C RETURN END END$ {$"$  09580-18321 1926 S C0122 &TIMRS 59309A             H0101 FTN4,L SUBROUTINE TIMRS(IUNIT,IDAY,IHR,MIN,ISEC), +09580-16321 1926 790502 C C------------------------------------- C C HP 59309A C C RELOCATABLE 09580-16321 C SOURCE 09580-18321 C C BOB RICHARDS 790109 C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 59309A PROGRAMMABLE DIGITAL CLOCK. C C HARDWARE REQUIRED: C ------------------ C A. HP 59309A C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C TIMRS(I,I,I,I,I), OV=XX, ENT=TIMRS, FIL=%TIMRS C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 59,1,1 C U1 C 36N WHERE N = 5 FOR COMMON YEAR C N = 6 FOR LEAP YEAR C C C C------------------------------------ C C TIMRS(IUNIT,IDAY,IHR,MIN,ISEC) C C WHERE: C C IUNIT = UNIT # C C IDAY = DAY OF YEAR, 1-365 (366 FOR LEAP YEAR) C C IHR = HOUR OF DAY, 0-23 C C MIN = MINUTE OF HOUR, 0-59 C C ISEC = SECOND OF MINUTE, 0-59 C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 59 / DATA IERMS / 10,5,2HTI,2HMR,2HS / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59309A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XIMRS(LU1,LUIB,IERMS,IUNIT,IDAY,IHR,MIN,ISEC) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C---------------E------------------------------ C SUBROUTINE XIMRS(LU1,LUIB,IR,IU,IDA,IHR,MIN,ISE), +09580-16321 1926 790502 DIMENSION IR(5),IOBUF(255),IBUF(1),IREG(2) EQUIVALENCE (IBUF(1),NODAY),(REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF HP-59309A C C IR IS A FIVE WORD ARRAY WITH IER CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IR(2) = ERROR MNEMONIC CHARACTER COUNT C IR(3) TO IR(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(59,IU,1,IBUF,1,IER) IF(IER .NE. 0)RETURN C C CHECK PARAMETERS C IR=1 IF(IDA .LT. 1 .OR. IDA .GT. NODAY) GOTO 8000 IF(IHR .LT. 0 .OR. IHR .GT. 23) GOTO 8000 IF(MIN .LT. 0 .OR. MIN .GT. 59) GOTO 8000 IF(ISE .LT. 0 .OR. ISE .GT. 59) GOTO 8000 C C SET UP OUTPUT BUFFER C INUM = 2 IODEV = 1 IOBUF(1) = 2HPR C C SECOND UPDATE C IF (ISE .EQ. 0) GOTO 200 DO 190 I=1,ISE IF (IODEV .EQ. 1) GOTO 175 IOBUF(INUM) = IOBUF(INUM) + 123B IODEV = 1 INUM = INUM + 1 GOTO 190 175 IOBUF(INUM) = 51400B IODEV = 0 190 CONTINUE C C MINUTE UPDATE C 200 IF (MIN .EQ. 0) GOTO 300 DO 290 I=1,MIN IF (IODEV .EQ. 1) GOTO 275 IOBUF(INUM) = IOBUF(INUM) + 115B IODEV = 1 INUM = INUM + 1 GOTO 290 275 IOBUF(INUM) = 46400B IODEV = 0 -290 CONTINUE C C HOUR UPDATE C 300 IF (IHR .EQ. 0) GOTO 400 DO 390 I=1,IHR IF (IODEV .EQ. 1) GOTO 375 IOBUF(INUM) = IOBUF(INUM) + 110B IODEV = 1 INUM = INUM + 1 GOTO 390 375 IOBUF(INUM) = 44000B IODEV = 0 390 CONTINUE C C DAY UPDATE C 400 IDA = IDA - 1 IF (IDA .EQ. 0) GOTO 500 DO 490 I=1,IDA IF (IODEV .EQ. 1) GOTO 475 IOBUF(INUM) = IOBUF(INUM) + 104B IODEV = 1 INUM = INUM + 1 GOTO 490 475 IOBUF(INUM) = 42000B IODEV = 0 490 CONTINUE C C C 500 IF (IODEV .EQ. 1) GOTO 550 IOBUF(INUM) = IOBUF(INUM) + 124B GOTO 2000 550 IOBUF(INUM) = 2HT C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IR=0 RETURN C C ERROR EXIT C 8500 IR=IAND(IA,377B)+11 GOTO 8000 9000 IR=9 8000 IR(2)=5 IR(3)=2HTI IR(4)=2HMR IR(5)=2HS RETURN END END$   09580-18322 1926 S C0122 &TIMRD 59309A             H0101 FTN4,L SUBROUTINE TIMRD(IUNIT,RMNTH,DAY,HOUR,RMINT,SEC), +09580-16322 1926 790502 C C------------------------------------- C C HP 59309A C C RELOCATABLE 09580-16322 C SOURCE 09580-18322 C C BOB RICHARDS 790109 C BOB RICHARDS 790502 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES T:(O PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICES ARE USED C TO PROGRAM THE HP 59309A DIGITAL CLOCK. C C HARDWARE REQUIRED: C ------------------ C A. HP 59309A C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C TIMRD(I,RV,RV,RV,RV,RV) OV=XX, ENT=TIMRD, FIL=%TIMRD C C C C C------------------------------------ C C TIMRD(IUNIT,RMNTH,DAY,HOUR,RMINT,SEC) C C WHERE: C C IUNIT = UNIT # C C RMNTH = RETURNED VALUE OF MONTH. C C DAY = RETURNED VALUE OF DAY. C C HOUR = RETURNED VALUE OF HOUR. C C MINIT = RETURNED VALUE OF MINUTE. C C SEC = RETURNED VALUE OF SECOND. C C C NOTES: THIS DEVICE SUBROUTINE ASSUMES THAT ALL FORMAT C SWITCHES (A5S1-A5S4) ARE IN THE "OFF" POSITION. C C A RETURNED VALUE OF "-1.0" INDICATES A READ OR C CONVERSION ERROR. C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 59 / DATA IERMS / 10,5,2HTI,2HMR,2HD / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59309A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XIMRD(LU1,LUIB,IERMS,IUNIT,RMNTH,DAY,HOUR,RMINT,SEC) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERR"OR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XIMRD(LU1,LB,IERMS,IUT,RMO,DA,HR,RMI,SE), +09580-16322 1926 790502 DIMENSION IERMS(5) DIMENSION IREG(2),IOBUF(6) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C INUM = 6 C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LU1 = LU # OF HP59309A C LB = LU # OF HPIB CARD C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C CLEAR INPUT BUFFER C DO 100 I=1,INUM IOBUF(I) = 20040B 100 CONTINUE C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LB) GOTO 9000 2050 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8500 C C READ DATA FROM 59309A C CALL REIO(100001B,LU1,IOBUF,INUM,IDUMY,0) GOTO 9000 C C 150 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C UNPACK BUFFER. CONVERT TO FLOATING POINT. C CALL ASTFP(IOBUF(6),SE) C CALL ASTFP(IOBUF(5),RMI) C CALL ASTFP(IOBUF(4),HR) C CALL ASTFP(IOBUF(3),DA) C CALL ASTFP(IOBUF(2),RMO) C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HTI IERMS(4)=2HMR IERMS(5)=2HD RETURN ENzD SUBROUTINE ASTFP(INTIN,FPOUT),09580-16322 1926 790502 C C C THIS SUBROUTINE IS USED TO CONVERT A 2 DIGIT (16 BIT) C ASCII NUMBER TO FLOATING POINT FORMAT. C C CALL ASTFP(INTIN,FPOUT) C C WHERE: C C INTIN = 2 DIGIT ASCII INPUT (00-99 ONLY, NO BLANKS C OR OTHER CHARACTERS). C C FPOUT = RETURNED FLOATING POINT NUMBER. C C C ILOW = (IAND(INTIN,377B)) - 60B IF (ILOW .LT. 0 .OR. ILOW .GT. 9) GOTO 100 IHIGH = INTIN/256 IHIGH = (IAND(IHIGH,377B)) - 60B IF (IHIGH .LT. 0 .OR. IHIGH .GT. 9) GOTO 100 FPOUT = FLOAT((IHIGH * 10) + ILOW) RETURN C C ERROR RETURN C 100 FPOUT = -1.0 RETURN END END$   09580-18323 2013 S C0122 &TSASU              H0101 FTN4,L SUBROUTINE TSASU(IUN,INPZ,IREF,IRANG,IBNDW,OFSET,IDSM),09580-16323 + REV.2013 800131 C C C THIS DEVICE SUBROUTINE IS USED TO PROGRAM THE HP-3571A. C C C------------------------------------------------------------------- C C RELOC. 09580-16323 C SOURCE 09580-18323 C C TOSH KONDO REV. A C BOB RICHARDS 2-20-79 REV. B C BOB RICHARDS 790502 C BOB RICHARDS 800109 C BOB RICHARDS 800128 C BOB RICHARDS 800131 C C HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND C DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C------------------------------------------------------------------- C C C DIMENSION IERMS(5) DATA IERMS/10,5,2HTS,2HAS,2HU / DATA IDTN /60/ C ISTN=ISN(DUMMY) C C C GET LU OF HP3571A C LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF(LU1 .LE. 0 .OR. LU0 .LE. 0) GOTO 800 CALL XSASU(LU0,LU1,IERMS,INPZ,IREF,IRANG,IBNDW,OFSET,IDSM) IF(IERMS .NE. 0) GOTO 800 20 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C BRANCH AND MNEMONIC TABLE ENTRIES: C C TSASU(I,I,I,I,I,R,I) OV=XX, ENT=TSASU, FIL=%TSASU C TSAMU(I,I,RV) OV=XX, ENT=TSAMU, FIL=%TSASU C SUBROUTINE XSASU(LU0,LU1,IERR,INPZ,IREF,IRANG,IBNDW,OFSET,IDSM),09 +580-16323 REV.2013 800131 C C-------------------------------------------------------------------- C THIS DEVICE SUBROUTINE SETS UP THE HP3571A TRACKING SPECTRUM C ANALYZER. C C CALL TSASU(IUNIT,INPZ,IREF,IRANG,IBNDW,OFSET,IDSM) C C WHERE: C IUNIT = UNIT NUMBER C INPZ = INPUT IMPEDANCE C 1 = 50 OHMS C 2 = 75 OHMS C 3 = 1 MEGOHM ,30 PF C C IREF = DISPLAY REFERENCE C 1 = DBM C 2 = DBV C 3 = DB SET RELATIVE (00.00DB) C 4 = DB RELATIVE C C IRANG = INPUT RANGE C -60 = -60 DBV C -50 = -50 DBV C -40 = -40 DBV C -30 = -30 DBV C -20 = -20 DBV C -10 = -10 DBV C 0 = 0 DBV C 10 =+10 DBV C C IBNDW = BANDWIDTH C 3 = 3 HZ C 10 = 10 HZ C 30 = 30 HZ C 100 =100 HZ C 300 =300 HZ C 1000 =1000 HZ C 3000 =3000 HZ C 10000 =10000 HZ C C OFSET = NUMERIC OFFSET C (-199.99DB TO +199.99DB) C C IDSM = DISPLAY SMOOTHING C 0= OFF C 1= ON C C ERROR PARAMETER: C 0 = NO ERROR C 1 = PARAMETER ERROR C 3 = OVERLOAD ERROR (TSAMU) C 4 = BAD DATA FROM 3571A (TSAMU) C C ERROR MESSAGE WHICH PERTAIN TO HPIB C 9 = I/O CALL REJECTED C 10 = LU NOT ASSIGNED TO HPIB DEVICE OR C TO STATION. C 11 = DMA INPUT REQUEST PREMATURELY TERMINATED C 12 = I/O DEVICE TIME-OUT C 13 = IFC (INTERFACE CLEAR) DETECTED DURING I O C REQUEST. C 14 = SRQ SERVICE ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL, NO NEW DEVICE MAY BE C ADDED ON LINE C C----------------------------------------------------------------------- C C DIMENSION IRFLD(8),IBWFD(8),IOFSC(5),IDIGT(5) DIMENSION IOBUF(14),IREG(2),IERR(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C DATA IRFLD/-60,-50,-40,-30,-20,-10,0,10/ DATA IBWFD/3,10,30,100,300,1000,3000,10000/ DATA IOFSC/10000,1000,100,10,1/ C C C HPIB PROGRAMMING CODES: C C DISPLAY REF: INPUT IMPEDANCE: C RELATIVE R2 1 MEG,30PF Z2 C DBV R1 75 OHMS Z1 C DBM R0 50 OHMS Z0 C C BANDWIDTH: INPUT RANGE: C 10 KHZ B7 + 10 DBV V7 C 3 KHZ B6 0 DBV V6 C 1 KHZ B5 -10 DBV V5 C 300 HZ B4 -20 DBV V4 C 100 HZ B3 -30 DBV V3 C 30 HZ B2 -40 DBV V2 C 10 HZ B1 -50 DBV V1 C 3 HZ B0 -60 DBV V0 C C ENTER OFFSET: P C OFFSET PREFACE: O C DISPLAY SMOOTHING: C ON S1 C OFF S0 C C--------------------------------------------------------- C C DATA IREL,IVRG,IBWD,INPR/2HR ,2HV ,2HB ,2HZ / DATA OFMAX/199.99/ C IERR=1 C C INPUT IMPEDANCE C IF(INPZ .LT. 1 .OR. INPZ.GT. 3) GOTO 9900 IOBUF(1) = INPR +20B +(INPZ-1) C C DISPLAY REFERENCE C IF(IREF .LT. 1 .OR. IREF .GT. 4) GOTO 9900 JREF =IREF - 1 IF(JREF .GT. 2 ) JREF = 2 IOBUF(2) = IREL +20B +JREF C C INPUT RANGE C IRCOD = 0 DO 10, I=1,8 IF(IRANG .EQ. IRFLD(I)) GOTO 20 10 IRCOD = IRCOD + 1 IF(IRCOD .GT. 7) GOTO 9900 20 IOBUF(3) = IVRG + 20B +IRCOD C C BANDWIDTH C IBCOD=0 DO 30, I=1,8 IF (IBNDW .EQ. IBWFD(I)) GOTO 40 30 IBCOD = IBCOD + 1 IF(IBCOD .GT. 7) GOTO 9900 40 IOBUF(4) = IBWD + 20B +IBCOD C IF(IREF .EQ. 3 .AND. OFSET .NE. 0.0) GOTO 9900 IF(IDSM .LT. 0 .OR. IDSM .GT. 1) GOTO 9900 INX = 5 IF(IREF .LT. 3) GOTO 100 C C SET CURRENT DBV READING TO RELATIVE READING (00.00 DB) C IF(IREF .EQ. 3) GOTO 110 C C SET UP FOR NUMERIC OFFSET ENTRY (-199.99DB TO 199.99 DB) C IF(ABS(OFSET) .GT. OFMAX) GOTO 9900 IOFF = IFIX(OFSET*100.) ITRY = IOFF C C IF OFFSET IS NEGATIVE ................. C IF(IOFF .LT. 0) ITRY = -ITRY C C CONVERT NUMERIC VALUE TO DIGITS............... C DO 60, I=1,5 KNX = 0 IDIGT(I) = 0 50 CONTINUE IF((ITRY-IOFSC(I)) .LT. 0) GOTO 60 KNX = KNX + 1 ITRY = ITRY - IOFSC(I) GOTO 50 C 60 IDIGT(I) = KNX C C FIND MOST SIGNIFICANT DIGIT.................... C JNX =1 70 IF(IDIGT(JNX) .NE. 0) GOTO 80 JNX = JNX + 1 IF(JNX .LE. 5) GOTO 70 80 CONTINUE C C IF OFFSET VALUE IS NEGATIVE, INSERT POLARITY SIGN........... C IF(IOFF .LT. 0) IOBUF(JNX)=47455B IF(IOFF .LT. 0) GOTO 90 C C INSERT OFFSET DIGITS TO OUTPUT BUFFER...................... C IOBUF(INX) = 47460B + IDIGT(JNX) 90 INX= INX + 1 JNX = JNX + 1 IF(JNX .GT. 5) GOTO 100 C C ODD DIGITS C IOBUF(INX) = (IDIGT(JNX) +60B) *256 JNX =JNX + 1 IF(JNX .GT. 5) GOTO 120 C C EVEN DIGITS C IOBUF(INX) = IOBUF(INX) + 60B + IDIGT(JNX) GOTO 90 C C DISPLAY SMOOTHING C 100 IOBUF(INX) = 51460B IF(IDSM .EQ. 1) IOBUF(INX) = 51461B GOTO 200 C C ENTER OFFSET (00.00DB) ASCII 'P' C 110 IOBUF(INX) = 50000B 120 IOBUF(INX) =IOBUF(INX) + 123B IOBUF(INX+1) = (60B + IDSM) *256 INX = -(INX*2+1) C C REMOTE ENABLED.................... C 200 CONTINUE CALL EXEC(100003B,1600B+LU0) GOTO 9100 210 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C OUT#PUT BUFFER................... C CALL REIO(100002B,LU1,IOBUF,INX,IDUMY,0) GOTO 9100 220 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C RETURN................. C IERR = 0 RETURN C C ERROR EXIT C 8500 IERR = IAND(IA,377B) +11 GOTO 9900 9100 IERR = 9 9900 IERR(2) = 5 IERR(3) = 2HTS IERR(4) = 2HAS IERR(5) = 2HU RETURN END C C HP3571 TRACKING SPECTRUM ANALYZER MEASURE SUBROUTINE C SUBROUTINE TSAMU(IUN,MODE,AMPL),09580-16323 REV.2013 800131 C DIMENSION IERMS(5) DATA IERMS /10,5,2HTS,2HAM,2HU / DATA IDTN /60/ C-------------------------------------------- C C TSAMU(IUN,MODE,AMPL) C WHERE: C IUN = UNIT # C MODE = MODE OF OPERATION C 1 = HP3330 IS SET TO SWEEP C 2 = HP3330 IS NOT SWEEPING OR IS NOT USED C 3 = EXTERNAL TRIGGER COMMAND C AMPL = RETURNED AMPLITUDE C C----------------------------------------------- C C ISTN = ISN(DUMMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF(LU1 .LE. 0 .OR. LU0 .LE. 0) GOTO 800 C CALL XSAMU(LU0,LU1,IERMS,MODE,AMPL) IF(IERMS)800,20,800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE XSAMU(LU0,LU1,IERR,MODE,AMPL),09580-16323 REV.2013 8001 +31 C C DIMENSION IERR(5),IREG(2),IOBUF(2),IREAD(6) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C HPIB PROGRAMMING CODES: C C MEASUREMENT CONTROL MODE: C AUTO M0 C EXTERNAL M1 C EXTERNAL TRIGGER: T C C DATA OUTPUT FORMAT: C N/O SGN OR D4 D3 D2 D1 CR LF C C DATA IEXMD /2HM1/ DATA ITRIG /2HT / C IERR = 1 IF(MODE .LT. 1 .OR. MODE .GT. 3) GOTO 9900 IF(MODE .NE. 2) GOTO 100 IOBUF(1) = IEXMD IOBUF(2)%$" = ITRIG NUM = -3 IF(MODE .EQ. 1 ) NUM = 1 GOTO 200 C C PROCESS EXTERNAL TRIGGER COMMAND C 100 IOBUF(1) = ITRIG NUM = -1 C C REMOTE ENABLED C 200 CONTINUE C CALL EXEC(100003B,1600B+LU0) GOTO 9100 300 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C OUTPUT EXTERNAL MODE / EXTERNAL TRIGGER C CALL REIO(100002B,LU1,IOBUF,NUM,IDUMY,0) GOTO 9100 310 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C READ DATA C NUMX = 4 CALL REIO(100001B,LU1,IREAD(2),NUMX,IDUMY,0) GOTO 9100 320 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C CHECK FOR OVERLOAD C IOVLD = IAND(IREAD,177400B) IF(IOVLD .EQ. 47400B) GOTO 400 C C CONVERT TO ASCII C AMPL = 0.0 IREG = A2F(IREAD,2,8,AMPL) IF(IREG .LT. 0) GOTO 9400 IERR = 0 RETURN C C OVER-LOAD RETURN C 400 AMPL = 1E38 GOTO 9300 C C ERROR RETURN C 8500 IERR = IAND(IA,377B)+11 GOTO 9900 9100 IERR = 9 GOTO 9900 9300 IERR =3 GOTO 9900 9400 IERR = 4 9900 IERR(2) =5 IERR(3) = 2HTS IERR(4) = 2HAM IERR(5) = 2HU RETURN END END$ $  09580-18359 2001 S C0122 &SCNSU              H0101 xFTN4,L SUBROUTINE SCNSU(ICHAN,IF),09580-16359 REV.2001 790927 C C HP 3495 SCANNER DEVICE SUBROUTINE C C 09580-16359 RELOCATABLE C 09580-18359 SOURCE C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C !  ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP3495A SCANNER. C C HARDWARE REQUIRED: C ------------------ C A. HP3495A SCANNER. C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R54,10,3 C U1 C 0 LOWEST CHANNEL ASSIGNED TO THIS BOX C 79 HIGHEST CHANNEL ASSIGNED TO THIS BOX C -1 TEMPORARY STORAGE FOR INITIALIZATION FLAG C C U2 C 80 C 139 C -1 C C U3 C 200 C 279 C -1 C C U4 C . C . C . C C UP TO 10 BOXES CAN BE PUT IN THE TABLE C FOR MORE INFORMATION SEE CALL STATEMENT EXPLANATION. C C TABLE ENTRIES: C -------------- C C SCNSU(I,I), OV=XX ENT=SCNSU, FIL=%SCNSU C C C C C CALLING SEQUENCE: C C CALL SCNSU(ICHAN,IF) C ---------------------- C C ICHAN IS THE CHANNEL NUMBER TO BE CLOSED. C IF IS THE FUNCTION: C IF=0 OPEN ALL CHANNELS (ICHAN IS IGNORED). C IF=1 CLOSE CHANNEL ICHAN. C C THE CHANNEL NUMBER ASSIGNMENTS MUST BE GIVEN IN THE C CONFIGURATION FILE. THE ENTRY MUST CONTAIN THREE C WORDS FOR EACH UNIT. A UNIT IS DEFINED AS ONE OR MORE C 3495A BOX ASSIGNED TO AN HPIB ADDRESS. ALL CHANNELS C WITHIN A UNIT MUST BE CONTIGUOUS. MULTIPLE MODULES C WITHIN A UNIT MAY HAVE THE SAME ADDRESS IF TWO OR MORE C SETS OF RELAYS ARE TO BE CLOSED SIMULTANEOUSLY. EACH UNIT C IS INTERNALLY ADDRESSED BETWEEN 0 AND 79 (DECIMAL). THE C ADDRESSING WITHIN THE SYSTEM SHOULD BE ASSIGNED SO THAT C THERE ARE NO DUPLICATE CHANNEL NUMBERS. (EXAMPLE: UNIT C 1 CONTAINS MODULES 0-9 AND 10-29. UNIT 2 CONTAINS MODULES C 0-19, 20-29, 30-39, AND 40-59. UNIT 1 COULD BE ADDRESSED AS C CHANNELS 0-29, AND UNIT 2 COULD BE ADDRESSED AS CHANNELS 30-89. C ADDRESSING CHANNEL 21 ACTIVATES SWITCH 21 IN UNIT 1. ADDRESSING C CHANNEL 48 ACTIVATES SWITCH 9 IN UNIT 2. C A -1 IN BOTH CHANNEL NUMBERS INDICATES THAT THERE ARE NO SWITCHES C ASSIGNED TO A PARTICULAR UNIT. UP TO TEN UNITS MAY BE DEFINED. C THE TABLE VALUES ARE AS FOLLOWS: C WORD 1: LOW CHANNEL NUMBER OR -1. C WORD 2: HIGH CHANNEL NUMBER OR -1. C WORD 3: -1. C ----------------------------------------------------- DIMENSION IERMS(5) DATA IERMS/10,5,2HSC,2HNS,2HU / DATA IDTN/54/ C C SET UP DEFAULT ERROR CONDITION C IERMS=10 C C GET STATION NUMBER C ISTN=ISN(IDUMY) C C CHECK FOR A UNIT 1 OF THIS DEVICE TYPE C LU=LUDV(ISTN,IDTN,1) IF(LU)800,800,10 C C IF WE HAVE A REAL LOGICAL UNIT, CALL THE DEVICE SUBROUTINE C 10 CALL XCNSU(ICHAN,IF,IERMS,ISTN) IF(IERMS.EQ.0)RETURN 800 CALL ERROR(IERMS,IERMS(2)) END SUBROUTINE XCNSU(ICHAN,IF,IERMS,ISTN),09580-16359 REV.2001 +790927 C C THIS IS THE ROUTINE WHICH ACTUALLY DOES THE WORK. C C THE PARAMETERS ARE: C ICHAN = THE SYSTEM CHANNEL NUMBER TO BE OPERATED UPON C (ASSIGNED DURING CONFIGURATION). C IF = THE FUNCTION CODE: C 0= OPEN ALL CHANNELS (ICHAN IS IGNORED). C 1= CLOSE CHANNEL ICHAN. C IERMS = THE ERROR MESSAGE BUFFER. ONLY THE FIRST C WORD IS CHANGED. C 0 = NO ERROR. C 1 = PARAMETER ERROR C 3 = UNDEFINED OR NON-EXISTENT CHANNEL NUMBER. C 4 = TIM ERROR. C 10 = ZERO LOGICAL UNIT NUMBER FOR UNIT 1 OR THE C LU FOR THE SELECTED CHANNEL DOES NOT EXIST. C ISTN = THE STATION NUMBER OFq THE CURRENT PROGRAM. C DIMENSION IBUF(3) DATA IDTN/54/,ICLR/2HC / C C CHECK PARAMETERS C IF(IF.LT.0.OR.IF.GT.1)GO TO 300 C C SET UNIT NUMBER FLAG C IUNIT=-1 C C SEARCH THROUGH UP TO 10 UNITS C DO 10 JUNIT=1,10 CALL TIM(IDTN,JUNIT,1,IBUF,3,IERFG) C C IF TIM ERROR IS -3, IGNORE IT ELSE RETURN ERROR MESSAGE. C IF(IERFG.EQ.-3)GO TO 10 IF(IERFG.NE.0)GO TO 400 C C SEE IF ANY CHANNELS DEFINED FOR THIS BOX C IF(IBUF(1).LT.0.OR.IBUF(2).LT.0)GO TO 10 IF(ICHAN.GE.IBUF(1).AND.ICHAN.LE.IBUF(2))17,20 C C WE FOUND A UNIT - COMPUTE THE OFFSET (SWITCH NUMBER C WITHIN THE UNIT). C 17 IUNIT=JUNIT IOFST=ICHAN-IBUF(1) C C CHECK FOR LEGAL CHANNEL NUMBER C IF(IOFST.GT.79)GO TO 990 C C IF "IF" IS 0, OPEN ALL BOXES, ELSE OPEN ONLY THE C LAST ONE CLOSED. THIS IS STORED IN THE THIRD WORD C OF THE "TIM" TABLE: C -1 = NEVER INITIALIZED C 0 = OPEN C 1 = LAST BOX CLOSED. C C FAKE "NEVER INITIALIZED" IF OPEN ALL BOXES. C 20 IF(IF.EQ.0)IBUF(3)=-1 C C IF ALREADY OPEN, IGNORE IT C IF(IBUF(3).EQ.0)GO TO 10 C C GET LOGICAL UNIT NUMBER C LUN=LUDV(ISTN,IDTN,JUNIT) C C CHECK FOR NON-EXISTENT LOGICAL UNIT NUMBER C IF(LUN.LE.0)GO TO 10 C C OPEN THE BOX C CALL REIO(2,LUN,ICLR,-1) C C INDICATE THE BOX HAS BEEN OPENED. C IBUF(3)=0 CALL TIM(IDTN,JUNIT,2,IBUF,3,IERFG) IF(IERFG.LT.0)GO TO 400 10 CONTINUE C C IF FUNCTION IS "OPEN ALL BOXES", DON'T CLOSE ANY. C IF(IF.EQ.0)GO TO 2000 C C IF CHANNEL CLOSE REQUIRED, CHECK TO SEE IF A VALID C CHANNEL WAS FOUND (IUNIT NOT -1). C IF(IUNIT.EQ.-1)GO TO 990 CALL TIM(IDTN,IUNIT,1,IBUF,3,IERFG) IF(IERFG.NE.0)GO TO 400 C C CHECK FOR LU C LUN=LUDV(ISTN,IDTN,IUNIT) IF(LUN.LE.0)GO TO 1000 C C MUST BE OK - CONVERT ADDRESS TO ASCII C ITENS=IOFST/10 IONES=IOFST-ITENS*10+60B IADDR=256*(ITENS+60B)+IONES CALL REIO(2,LUN,IADDR,-2) C C SET SWITCH CLOSED FLAG C IBUF(3)=1 CALL TIM(IDTN,IUNIT,2,IBUF,3,IERFG) IF(IERFG.EQ.0)GO TO 2000 C C PARAMETER ERROR C 300 IERMS=1 GO TO 1000 C C TIM ERROR C 400 IERMS=4 GO TO 1000 C C NON-EXISTENT OR UNDEFINED CHANNEL OR LOGICAL UNIT C 990 IERMS=3 C C DEFAULT BAD RETURN - LEAVE ERROR CODE AT 10 C 1000 RETURN C C GOOD COMPLETION RETURN - ERROR CODE = 0 C 2000 IERMS=0 END END$   09580-18368 2001 S C0122 &RASW              H0101 yt FTN4,L SUBROUTINE RASW(IFUN,IRELY),09580-16368 REV.2001 791023 C **************************************************** C C SOURCE 09580-18368 C RELOCATABLE 09580-16368 C C T. KONDO 3/16/79 REV. 1926 C BOB RICHARDS 791023 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C ********************************************************** C C THIS DEVICE SUBROUTINE IS FOR HP59306A RELAY ACTUATOR. C C SET-UP CALL: C RASW(IFUN,IRELY) C WHERE: C IFUN = FUNCTION SELECT C 0 = OPEN C 1 = CLOSE C 2 = OPEN, SETTLE TIME = 50 MSEC C 3 = CLOSE, SETTLE TIME = 50 MSEC C IRELY = RELAY ADDRESS (IN ARRAY) C IRELY(1) = NUMBER OF RELAYS C IRELY(2) - IRELY(N) = RELAY TO C BE CLOSED OR TO BE OPENED. C C NOTE: UNITS NOT RESETTABLE BY PRESSING RESET C I(1) = 0 C CALL RASW(1,I(1)) C PLACES UNITS IN MANUALLY RESETABLE MODE C C CALL RASW(0,I(1)) C PLACES UNITS BACK IN PROGRAM ONLY MODE C C = * = * = * = * = * = * = * = * = * = * = C C HP59306A CONFIGURATION: C C BRANCH & MNEMONIC TABLES: C RASW(I,IVA), OV=XX, ENT=RASW, FIL=%RASW C C CONFIGURATION TABLE: C C R 62,1,1 C U1 C N1 (LU# OF HP59306A UNIT #1) C U2 C 6 N2 (LU# OF HP59306A UNIT #2) C U3 C N3 (LU# OF HP59306A UNIT #3) C C C = * = * = * = * = * = * = * = * = * = * = C DIMENSION IERMS(5) DATA IERMS /10,5,2HRA,2HSW,2H / DATA IDTN /62/ C CALL XASW(IERMS,IFUN,IRELY) IF(IERMS.NE.0)GOTO 800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C ------------------------------------- SUBROUTINE XASW(IERR,IFUN,IRELY),09580-16368 REV.2001 791023 DIMENSION IOBUF(6),IRELY(2),IBUF(4) DIMENSION IERR(5),IREG(2) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C DATA IDTN / 62 / C C CHECK PARAMETER C IERR = 0 IF(IFUN.LT.0.OR.IFUN.GT.3)GOTO 9900 NUMX = 1 NOS = IRELY IF(IRELY.EQ.0)GOTO 120 90 NUMX = 0 IDX = 2 C C 100 NUMX = NUMX + 1 NMR = 0 C C GET RELAY NUMBER C DO 110 I=1, NOS NRLY = 6 * (NUMX-1) + 1 IF(NOS.LT.1)GOTO 110 IR = IRELY(IDX) IF(IR.LT.1)GOTO 9900 IF(IR.LT.NRLY.OR.IR.GT.(NRLY+5))GOTO 110 NMR = NMR + 1 C IV = IRELY(IDX) - (NRLY-1) IF(IFUN.EQ.0.OR.IFUN.EQ.2)IOBUF(NMR) = 41060B + IV IF(IFUN.EQ.1.OR.IFUN.EQ.3)IOBUF(NMR) = 40460B + IV IDX = IDX + 1 C 110 CONTINUE C C CHECK UNIT NUMBER C NOS = NOS - NMR IF(NOS.LT.1)GOTO 115 IF(NMR.LT.1)GOTO 100 C C CHECK FOR VALID ATS STATION C 115 IERR = 10 ISTN = ISN(IDUMY) LUDEV = LUDV(ISTN,IDTN,NUMX) IF (LUDEV - 1) 9910,120 120 IERR = 0 C C C CALL TIM(IDTN,NUMX,1,LU1,1,IERFG) IF(IERFG.LT.0)GOTO 9900 C LU0 = IBLU0(LU1) C C ENABLE REMOTE C 200 CONTINUE CALL EXEC(100003B,1600B+LU0) GOTO 9000 7710 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C LOCAL LOCKOUT C IF(IRELY.NE.0)GOTO 500 IF(IFUN.EQ.0)CALL LLO(LU0) IF(IFUN.EQ.1)CALL LOCL(LU0) RETURN C C OUTPUT ASCII TO 5 9306A C 500 CONTINUE CALL REIO(100002B,LU1,IOBUF,NMR,IDUMY,0) GOTO 9000 7730 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 IF(NOS.LT.1)GOTO 600 GOTO 100 C C SETTLING TIME C 600 IF(IFUN.GT.1)CALL EXEC(12,0,1,0,-5) RETURN C C ERROR ROUTINE C 9000 IERR = 9 GOTO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HRA IERR(4) = 2HSW IERR(5) = 2H RETURN END   09580-18369 1926 S C0122 &HFGSU 3335A             H0101 FTN4,L SUBROUTINE HFGSU(IUNIT,FKZ,FHZ,AMP,FAZE,IZ), +09580-16369 1926 790302 C C------------------------------------- C C HP 3335A SYNTHESIZER GENERATOR C (HFGSU) C C RELOCATABLE 09580-16369 C SOURCE 09580-18369 C C R.UNTALAN 780917 C R.UNTALAN 790302 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR Vb ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP3335A SYNTHESIZERGENERATOR. C C HARDWARE REQUIRED: C ------------------ C A. HP3325A PROGRAMMABLE PULSE GENERATOR. C B. HP59310 BUSS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C HFGSU(I,R,R,R,R,I), OV=XX, ENT=HFGSU, FIL=%HFGSU C HFWID(I,R,R,I), OV=XX, ENT=HFWID, FIL=%HFGSU C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C C R 53,1,10 C U1 C 0 ENTER 0 FOR STANDARD UNIT OR ENTER OPTION NUMBER C 0 TEMPORARY STORAGE FOR IMPEDANCE C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C 0 TEMPORARY STORAGE FOR FREQUENCY C C C C C------------------------------------ C C HFGSU(IUNIT,FKZ,FHZ,AMP,FAZE,IZ) C C WHERE: C C IUNIT = UNIT # C C C FKZ = FREQUENCY IN KILOHERTZ (NOTE: TOTAL FREQUENCY = FKZ+FHZ) C C 0 KHZ TO MAXIMUM C C C WHERE : MAXIMUM DEPENDS ON THE IMPEDANCE SELECTED. C SEE FREQUENCY RANGES BELOW. C C C C FHZ=FREQUENCY IN HERTZ C C 0 HZ TO 999,999 HZ C RESOLUTION OF .001HZ C C **NOTE: TOTAL FREQUENCY SETTING IS EQUAL TO FKZ+FHZ C C MINIMUM VALUE IS DETERMINE ON THE OPTION AND THE IMPEDANCE C SELECTED. C C FREQUECY RANGE ARE AS FOLLOWS: C ============================= C C 50 OHM AND 75 OHM : 200HZ TO 80.999 999 999 MHZ C C 124 OHM : 10KHZ TO 10 MHZ C C 135 OHM AND 150 OHM : 10KHZ TO 2 MHZ C C C AMP = AMPLITUDE C SEE TABLE BELOW FOR AMPLITUDE RANGES. C C AMPLITUDE RANGES ARE AS FOLLOWS C =============================== C C 50 OHM : +13.01 DBM TO -86.98 DBM C C 75 OHM : +11.25 DBM TO -88.74 DBM C C 124 OHM : +11.25 DBM TO -88.74 DBM C C 135 OHM : +11.25 DBM TO -88.74 DBM C C 150 OHM : +11.25 DBM TO -88.84 DBM C C C C C FAZE= PHASE SEETING C C 0 TO 360 DEGREES WITH .001 DEGREE RESOLUTION C C C IZ = IMPEDANCE C C 0 = 50 OHM C 1 = 75 OHM C 2 = 124 OHM C 3 = 135 OHM C 4 = 150 OHM C C C ALTHOUGH THE IMPEDANCE CANNOT BE REMOTELY PROGRAMED, C THE IMPEDANCE SELECT WILL PREVENT THE OPERATOR FROM C PROGRAMMING AN AMPLITUDE OR FREQUENCY THAT IS OUTSIDE C THE RANGE OF THE OUTPUT IMPEDANCE SELECTED. C C C THE OPERATOR SHOULD MAKE SURE THAT THE SELECTED IMPEDANCE C MATCHES THE INSTRUMENT SELECTED IMPEDANCE BY THE FRONT PANEL C SWITCH. C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 53 / DATA IERMS / 10,5,2HHF,2HGE,2HN / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3335A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFGSU(LU1,LUIB,IERMS,IUNIT,FKZ,FHZ,AMP,FAZE,IZ) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT F C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFGSU(LU1,LUIB,IERR,IU,FKZ,FHZ,AMP,FAZE,IZ), +09580-16369 1926 790302 C--------------------------------------------- C C DIMENSION IERMS(5),IERR(5),IFREQ(20),IREG(2) DIMENSION IOBUF(5),IBUF(10),IFBUF(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (IFREQ(9),IOBUF(1)),(IFREQ(16),IFBUF(1)) C C IERR=0 C C C ESTABLISH MIN. AND MAX. LIMITS C C FKMAX=80999.0005 HZMAX=999999.1 C FKMIN=0 HZMIN=0 C C C C C RETRIEVE DATA FROM CONFIGURATION TABLE C CALL TIM(53,IU,1,IBUF,10,IER) IF(IER .NE. 0) RETURN C C C C C CHECK IF IMPEDANCE SELECTED IS VALID ACCORDING TO THE OPTION C ON UNIT. C IF(IBUF .EQ. 0 .AND. IZ .GT. 1) GOTO 8000 C IF((IBUF .EQ. 2 .OR. IBUF .EQ. 4) .AND. (IZ .LT. 1 +.OR. IZ .GT. 3)) GOTO 8000 C IF(IBUF .EQ. 3 .AND. IZ .NE. 1 .AND. IZ .NE. 4) GOTO 8000 C C C SET MIN. AND MAX. LIMITS ACCORDING TO IMPEDANCE C IF(FKZ .EQ. 0) HZMIN=200.0 IF(FHZ .EQ. 0) FKMIN=.200 C C C IF(IZ .NE. 2) GOTO 300 C FKMAX=10000. FKMIN=10. HZMIN=10000. C IF(FKZ .GE. 10.0) HZMIN=0 IF(FHZ .GE. 10000.0) FKMIN=0 C C 300 IF(IZ .LT. 3) GOTO 310 C FKMAX=2000.0 FKMIN=10.0 HZMIN=10000.0 C IF(FKZ .GE. 10.0) HZMIN=0 IF(FKZ .GE. 10000.0) FKMIN=0 C C C SET MIN. AND MAX. LIMITS FOR AMPLITUDE C C 310 PMAX=13.01 PMIN=-86.98 C IF(IZ .EQ. 0) GOTO 320 C PMAX=11.25 PMIN=-88.74 C C C CHECK PARAMETERS C C C 320 IF(FKZ .GT. FKMAX .OR. FKZ .LT. FKMIN) GOTO 8000 C IF(FHZ .GT. HZMAX .OR. FHZ .LT. HZMIN) GOTO 8000 C IF(AMP .GT. PMAX .OR. AMP .LT. PMIN) GOTO 8000 C IF(FAZE .GT. 360.0 .OR. FAZE .LT. 0.) GOTO 8000 C C C C C C ) C BLANK BUFFERS C DO 10 I=1,20 10 IFREQ(I)=2H C C C C CALCULATE TOTAL FREQUENCY C CALL FR2A(FHZ,FKZ,IFREQ) C C C CHECK IF TOTAL FREQUENCY EXCEEDS MAXIMUM C C CALL A2F(IFREQ,1,6,VAL1) C CALL A2F(IFREQ,7,13,VAL2) C C IF(VAL1 .GT. FKMAX) GOTO 8000 C C IF(IZ .LE. 1) GOTO 330 C IF(VAL1 .EQ. FKMAX .AND. VAL2 .NE. 0) GOTO 8000 C C C CHANGE IFREQ(8) TO XH X= DIGIT 0 TO 9 C 330 INUM= IAND(177400B,IFREQ(8)) IFREQ(8)=IOR(INUM,110B) C C C PROCESS AMPLITUDE C CALL F4DA(AMP,IOBUF(1)) C IOBUF(1)=2H A ICHR=113B IF(AMP .LT. 0) ICHR=115B IOBUF(4)=IOR(IOBUF(4),ICHR) C C C C PROCESS FAZE SETTING C IFAZE=INT(FAZE*10.0) FAZE=FLOAT(IFAZE)/10.0 C CALL F2A(FAZE,IFBUF) C C IFREQ(15)=2HP IFREQ(20)=2HH C C C C C STORE IMPEDANCE AND FREQUENCY IN CONFIGURATION TABLE C IBUF(2)=IZ IBUF(3)=IFREQ(2) IBUF(4)=IFREQ(3) IBUF(5)=IFREQ(4) IBUF(6)=IFREQ(5) IBUF(7)=IFREQ(6) IBUF(8)=IFREQ(7) IBUF(9)=IFREQ(8) IBUF(10)=IFREQ(9) C CALL TIM(53,IU,2,IBUF,10,IER) IF(IER .NE. 0) RETURN C C IFREQ(1)=2H F C C C=================================== C C C C C REMOTE ENABLE C 3000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 3010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C ICNT=20 C 3020 CALL REIO(100002B,LU1,IFREQ(1),ICNT,IDUMY,0) GOTO 9000 3030 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C RETURN C C IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HHF IERR(4)=2HSU IERR(5)=2H RETURN END C C C ============================================= C SUBROUTINE HFWID(IUNIT,WKZ,WHZ,MODE), +09580-16369 1926 790302 C C============================================== C C HFWID(IUNIT,WKZ,WHZ,MODE) C C WHERE: C C IUNIT = UNIT # C C C WKZ = WID IN KILOHERTZ C C 0 KHZ TO MAXIMUM FREQUENCY RANGE C C 1 KHZ RESOLUTION ON WKZ . FRACTIONAL PART WILL BE IGNORED. C C C C C C C WHZ=WID IN HERTZ C C 0 HZ TO 999. HZ C C **NOTE: TOTAL WIDTH SETTING IS EQUAL TO WKZ+WHZ C C C FREQUECY WIDTH RANGE ARE AS FOLLOWS: C ==================================== C C 50 OHM AND 75 OHM : 200HZ TO 80.999 999 MHZ C C 124 OHM : 200HZ TO 10 MHZ C C 135 OHM AND 150 OHM : 200 HZ TO 2 MHZ C C C C **NOTE: HALF OF THE SWEEP WIDTH WILL BE BELOW THE CENTER FREQUENCY C ESTABLISHING THE START FREQUENCY. C C MODE = SWEEP MODE C C 0= START SINGLE 10 SEC C 1= START SINGLE 50 SEC C 2= START AUTO C 3= GO TO START C 4= STOP C C C NOTE: IF AUTO START IS SELECTED, THE UNIT WILL NOT C PROGRAM TO ANOTHER MODE UNLESS IT IS FIRST STOP. C C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 53 / DATA IERMS / 10,5,2HHF,2HWI,2HD / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 3335A LU C LUIB = 59310 LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFWID(LU1,LUIB,IERMS,IUNIT,WKZ,WHZ,MODE) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C------------------------------------------------------ C SUBROUTINE XFWID(LU1,LUIB,IERR,IU,WKZ,WHZ,MODE), +09580-16369 1926 790302 C------------------------------------------------------ C Y C DIMENSION IERMS(5),IERR(5),IREG(2) DIMENSION IWID(11),IBUF(10),IFBUF(10),IMODE(5) EQUIVALENCE (IBUF(2),IFBUF(1)) DATA IMODE/ 2HX ,2HY ,2HZ ,2HG ,2HQ / C C IERR=0 C C C RETRIEVE DATA FROM CONFRIGURATION TABLE C CHECK CURRENT CENTER FREQ. AND IMPEDANCE SETTING C CALL TIM(53,IU,1,IBUF,10,IER) IF(IER .NE. 0) RETURN C C C C SET MIN. AND MAX. LIMITS C WKMAX=80999.0 WHMAX=999.999 WKMIN=0 WHMIN=0 C C SET SWEEP MIN. AND MAX. ACCORDING TO CURRENT C IMPEDANCE VALUE. C IF(IBUF(2) .GT. 1) WKMIN=10.0 C IF(IBUF(2) .EQ. 2) WKMAX=10000.0 C IF(IBUF(2) .GT. 2) WKMAX=2000.0 C C C C IF(WKZ .GT. WKMAX .OR. WKZ .LT. WKMIN) GOTO 8000 IF(WHZ .GT. WHMAX .OR. WHZ .LT. WHMIN) GOTO 8000 IF(WKZ .EQ. 0 .AND. WHZ .EQ. 0) GOTO 8000 C C C IF(MOD .GT. 3 .OR. MOD .LT. 0) GOTO 8000 C C C ELIMINATE FRACTIONAL PART OF WKZ C TEMP=WKZ ITEN=0 IF(WKZ .LT. 32766.0) GOTO 88 C ITEN=INT(WKZ/10000.) TEMP=WKZ-(FLOAT(ITEN)*10000.) C C 88 WKZ=FLOAT(INT(TEMP))+FLOAT(ITEN)*10000. C C C C C C FIND THE MIDPOINT OF FREQUENCY RANGE C THE FHMID CAN ONLY BE A VALUE OF EITHER A 999.999 OR 0.0 C THE FKMID CAN TAKE THE FOLLOWING VALUES: 40499 OR 5000 OR 1000 C C FKMID=WKMAX/2.0 FHMID=WHMAX C IF(FKMID .GT. 40497.) FKMID= FKMID+.50 IF(WKMAX .LT. 80900.) FHMID=0 C C C FIND OUT IF CENTER FREQUENCY IS ABOVE OR BELOW THE C MIDPOINT OF FRQUENCY RANGE. IF C.F. IS AT OR ABOVE C THE MIDPOINT THEN MAX.WID = (WKMAX+WHMAX- C.F.) * 2.0 C C IF C.F. IS BELOW THE MIDPOINT , MAX.WID=(C.F.-200HZ)*2.0 C C C CONVERT C.F. TO FLOATING POINT C C C C C C CALL A2F(IFBUF,1,6,CFKZ) CALL A2F(IFBUF,7,13,CFHZ) C C C CHECK IF CENTER FREQ. IS ABOVE MIDDLE OF FREQ. RANGE C IF(CFKZ .GE. FKMID) GOTO 200 C C C CENTER FREQ. IS BELOW THE MIDDLE OF FREQ. RANGE C IF(CFHZ .GE. 200.0) GOTO 150 C CFKZ=CFKZ-1.0 CFHZ=CFHZ+1000.0 C C 150 WKDF=CFKZ WHDF=CFHZ-200.0 C GOTO 250 C C CENTER FREQ. IS ABOVE THE MIDDLE OF FREQ. RANGE C FIND THE DIFFERENCE BETWEEN CENTER FREQ. AND MAXIMUM FREQ.RANGE C 200 WKDF=WKMAX-CFKZ WHDF=WHMAX-CFHZ C C C ESTABLISH MAXIMUM LIMITS FOR SWEEP WIDTH. C 250 SWHZ=WHDF*2.0 SWKZ=WKDF*2.0 C C IF(SWHZ .LT. 1000) GOTO 300 C SWHZ=SWHZ-1000.0 SWKZ=SWKZ+1.0 C C C CHECK IF SWEEP WIDTH IS WITHIN BOUNDS. C C 300 IF(WKZ .GT. SWKZ) GOTO 8000 IF(WKZ .EQ. SWKZ .AND. WHZ .GT. SWHZ) GOTO 8000 C C C C CONVERT SWEEP WIDTH TO ASCII C CALL FR2A(WHZ,WKZ,IWID) C IWID(1)=2H W IWID(10)=IAND(177400B,IWID(10)) C C C SET SWEEP MODE C IWID(11)=IMODE(MODE+1) C C C=================================== C C C C C REMOTE ENABLE C 3000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 3010 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C ICNT=11 C 3020 CALL REIO(100002B,LU1,IWID(1),ICNT,IDUMY,0) GOTO 9000 3030 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C C RETURN C C IERMS=0 RETURN C C C C----------------------------- C C ERROR EXIT C 8000 IERR=1 GOTO 8800 C C 9000 IERR=9 GOTO 8800 8500 IERR=IAND(IREG,377B)+11 8800 IERR(2)=5 IERR(3)=2HHF IERR(4)=2HWI IERR(5)=2HD RETURN END C C C C------------------------------------------------- SUBROUTINE F4DA(XNUM,ISTR),09580-16369 1926 790302 C C---------------------------------------------------- C C C C C THIS SUBROUTINE WILL CONVERT A FOUR DIGIT NUMBER C IN THE FORM XX.XX TO AN ASCII STRING . C C C XNUM= A NUMBER RANGING FROM -99.99 TO 99.99 C ISTR= RETURNED ASCII STRING C C IF ABSOLUTE VALUE OF XNUr&M IS GREATER THAN 99.99 C BLANKS WILL BE RETURNED IN THE STRING. C C---------------------------------------------------- C C C DIMENSION ISTR(4) C C C BLANK BUFFR C DO 100 I=1,4 100 ISTR(I)=2H C C C PROCESS NUMBER C ANUM=ABS(XNUM) C IF(ANUM .GT. 99.99) GOTO 1000 INUM=INT(ANUM) IZ1=INUM/10 IZ2=INUM-(IZ1*10) IZ3=INT(ANUM*10.0)-(IZ1*100)-(IZ2*10) IZ4=INT((ANUM*100.0)+.5)-(IZ1*1000)-(IZ2*100)-(IZ3*10) C C ID1=(IZ1*2**8)+30000B ID2=IZ2+60B C ID3=IZ3+60B ID4=(IZ4*2**8)+30000B C IDOT=27000B C C C ISTR(1)=2H + IF(XNUM .LT. 0) ISTR(1)=2H - C C ISTR(2)= IOR(ID1,ID2) ISTR(3)= IOR(IDOT,ID3) ISTR(4)= ID4 C C C 1000 RETURN END C C C C===================================================== SUBROUTINE FR2A(FHZ,FKHZ,IFREQ),09580-16369 1926 790302 C====================================================== C C C C C R. UNTALAN 9/26/78 C C THIS SUBROUTINE WILL CONVERT THE TOTAL FREQUENCY C INTO AN ASCII STRING . A TOTAL OF 15 DIGITS, DECIMAL C POINT,AND TWO ASCII CHARACTERS (HZ) ATTACH AT THE END. C THE BUFFER (IFREQ) SHOULD BE DIMENSION 10 WORDS BY THE C CALLING PROGRAM. THE STRING FORMAT IS AS FOLLOWS: C C LEADING AND TRAILING ZEROES WILL BE PLACED IN THE STRING. C EXAMPLE: IF TOTAL = 12345.987 C STRING = BB000012345.987000HZ C C BBXXXXXXXXX.XXXXXXHZ C C WHERE X IS A DIGIT 0 TO 9 C AND BB ARE BLANKS C======================================================= C C DIMENSION IFREQ(10),ID(20) C C C PRESET DIGITS TO ZERO C DO 10 I=1,16 10 ID(I)=0 C C CHECK HOW MANY SIGNIFICANT DIGITS PAST THE DECIMAL C C DO 20 I=2,-1,-1 EXP=FLOAT(I) IF(FHZ .GE. 10.**EXP) GOTO 30 20 CONTINUE C C C 30 IF(EXP .EQ. 2.0)FHZ=FHZ+.0005 IF(EXP .EQ. 1.0) FHZ=FHZ+.00005 IF(EXP{ .EQ. 0.0) FHZ=FHZ+.000005 IF(EXP .LT. 0.0) FHZ=FHZ+.0000005 C C C IADD=0 ITEN=0 D1000=1000 C C C C C IF(FKHZ .GE. 10000.0) GOTO 130 TEMP=FKHZ ITEN=0 GOTO 125 C C C TEMPORARILY TRUNCATE THE TEN THOUSANDS DIGIT C 130 ITEN=INT(FKHZ/10000.) TENT=FLOAT(ITEN)*10000.0 TEMP=(FKHZ-TENT) C C 125 KHZ1=INT(TEMP) C C FKZ1=FLOAT(KHZ1) C C C ISOLATE HZ COMPONENT OF FKHZ C AHZ1=(TEMP*1000.0)-(FKZ1*1000.0) FHZ1=FLOAT(INT(AHZ1+.5)) IF(FKHZ .GE. 10000.)FHZ1=INT(FHZ1/100.)*100 C C 321 KHZ2=INT(FHZ/D1000) CKHZ2=FLOAT(KHZ2) C C C IF HZ<10 THEN DROP LAST 3 DIGITS AND PICK THEM UP LATER C THZ=FHZ IF(FHZ .GT. 10.0) GOTO 677 C LHZ=INT(FHZ*D1000) THZ=FLOAT(LHZ)/D1000 C C C C C C 677 FHZ2=THZ-(CKHZ2*D1000) C C C CALL XSUM(KHZ1,FHZ1,KHZ2,FHZ2,KHZS,FHZS) C C C C C C ***CONVERT KHZ AND HZ TO ASCII C IF(KHZS .LT. 10000) GOTO 109 C KHZS=KHZS-10000 ITEN=ITEN+1 C C 109 ID(1)=ITEN/10 ID(2)=ITEN-ID(1)*10 C C ID(3)=KHZS/1000 ID(4)=(KHZS-ID(3)*1000)/100 C C ID(5)=(KHZS-(ID(3)*1000)-(ID(4)*100))/10 ID(6)=KHZS-(ID(3)*1000)-(ID(4)*100)-(ID(5)*10) C C RD6=(FHZS/100.) C ID(7)=INT(RD6) C RD7=(FHZS-FLOAT(ID(7)*100))/10. C ID(8)=INT(RD7) RD8=FHZS-FLOAT(ID(7)*100)-FLOAT(ID(8)*10) C ID(9)=INT(RD8) C C ID(10)=56B C C C ISOLATE FRACTIONAL PART OF HZ C FRAC=FHZS-FLOAT(ID(7)*100)-FLOAT(ID(8)*10)-FLOAT(ID(9)) C C FRAC=FRAC+.00005 C C ID(11)=INT(FRAC*10.) C ID(12)=INT(FRAC*100.)-(ID(11)*10) C ID(13)=INT(FRAC*1000.)-(ID(11)*100)-(ID(12)*10) IF(EXP .EQ. 2.0) GOTO 110 C C C PROCESS LAST THREE DIGITS OF ORIGINAL HZ C C FRAC=FHZ*1000. IFHZ=INT(FRAC) WFHZ=FLOAT(IFHZ) C C FRAC=FRA2B@ IF(ISLA.EQ.1)IBUF(1)=2HE6 C C COMPUTE A CHANNEL TRIGGER LEVELS C C ITRIG=(TRIGA+2.0)*250.0 DO 100 I=1,2 IADG(I)=0 50 IF(ITRIG.LT.IRNG(I))GOTO 100 IADG(I)=IADG(I)+1 ITRIG=ITRIG-IRNG(I) GOTO 50 100 CONTINUE IBUF(2)=(40460B+IADG(1)) IBUF(3)=IOR((IADG(2)+60B)*256,ITRIG+60B) C C SET B CHANNEL SLOPE C IF(ISLB.EQ.0)IBUF(4)=2HE8 IF(ISLB.EQ.1)IBUF(4)=2HE0 C C COMPUTE B CHANNEL TRIGGER LEVEL C C ITRIG=(TRIGB+2.0)*250.0 DO 200 I=1,2 IADG(I)=0 150 IF(ITRIG.LT.IRNG(I))GOTO 200 IADG(I)=IADG(I)+1 ITRIG=ITRIG-IRNG(I) ) GOTO 150 200 CONTINUE IBUF(5)=(41060B+IADG(1)) IBUF(6)=IOR((IADG(2)+60B)*256,ITRIG+60B) C 500 CALL EXEC(100003B,1600B+LUIB) GO TO 9000 550 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C PROGRAM ELECTRONIC COUNTER C CALL REIO(IWRT,2000B+LCTR,IBUF,6,IDUMY,0) GO TO 9000 1000 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C C RETURN C RETURN C C ERROR RETURN C 9000 IERR = 9 GO TO 9900 9100 IERR = 1 GO TO 9900 990 IERR = IAND(IREG,377B) + 11 9900 IERR(2) = 5 IERR(3) = 2HC4 IERR(4) = 2H5I IERR(5) = 2HM RETURN END END$ [  09580-18426 1926 S C0122 &SWFRQ 8620C             H0101  FTN4,L SUBROUTINE SWFRQ(IUN,IBND,FREQ), +09580-16426 1926 790420 C **************************************************** C C SOURCE 09580-18426 C RELOCATABLE 09580-16426 C C T. KONDO 12/11/78 REV. A C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C ********************************************************** C C THIS DEVICE SUBROUTINE IS FOR HP8620C SWEEP OSCILLATOR. C C SET-UP CALL: C SWFRQ(IUN,IBND,FREQ) C WHERE: C IUN = UNIT NUMBER C IBND = BAND SELECT C (FOR 86290A RF PLUG-IN) C 1 = BAND 1 (RANGE 2.0 TO 6.2 GHZ) C 2 = BAND 2 (RANGE 6.0 TO 12.4 GHZ) C 3 = BAND 3 (RANGE 12.0 TO 18.0 GHZ) C 4 = BAND 4 (RANGE 2.0 TO 18.0 GHZ) C NOTE: FOR OTHER PLUG-IN UNIT, C REFER TO THE OPERATING & C SERVICING MANUAL. C C FREQ = FREQUENCY C (FOR 86290A RF PLUG-IN) C BAND 1 420 KHZ C BAND 2 840 KHZ C BAND 3 800 KHZ C BAND 4 1.6 MHZ C NOTE: REFER TO OPERATING & SERVICING C MANUAL OF THE PLUG-IN UNIT. THERE C ARE 10,000 STEPS PER BAND SO THE C FREQUENCY PROGRAMMED IS TO THE C NEAREST STEP. C C SWEEP OSCILLATOR CALLS: C SWMAN(IUN,MODE,IBND,MKR,VOLTS) C C WHERE: C IUN = UNIT NUMBER C MODE = MODE SELECT C 1 = DELTA-F SWEEP * C 2 = CW * (SAME AS 7) C 3 = MARKER SWEEP * C 4 = LOCAL FULL SWEEP * C 5 = LOCAL DELTA-F * C 6 = CW * (SAME AS 2) C 7 = LOCAL MARKER SWEEP * C * FOR THESE SELECTIONS OF ACTUAL FREQUENCY GENERATED C BY THE HP8620C WILL DEPEND ON THE SETTING OF FRONT C PANEL CONTROLS. REFER TO THE OPTION 11 8620C MANUAL C NO. 08620-90060. C C IBND = SELECTED BAND C 0 = LOCAL CONTROL C 1 = BAND 1 C 2 = BAND 2 C 3 = BAND 3 C 4 = BAND 4 C C MKR = MARKER SELECT C 0 = LOCAL CONTROL C 1 = REMOTE MARKER C C VOLTS = VOLTAGE SELECT C THE VOLTAGE RANGE: C (0 - 10.0 VOLTS) C EXAMPLE: C FREQ VOLTS REQ VOLTS C 0% 0 0 C 0.1% 0.010 0.01 C 55% 5.500 5.5 C 100% 10.000 10.0 C C = * = * = * = * = * = * = * = * = * = * = C C HP8620C CONFIGURATION: C C BRANCH & MNEMONIC TABLES: C SWFRQ(I,I,R), OV=XX, ENT=SWFRQ, FIL=%SWFRQ C SWMAN(I,I,I,I,R), OV=XX, ENT=SWMAN, FIL=%SWFRQ C C = * = * = * = * = * = * = * = * = * = * = C C ********************************************* C C CONFIGURATION TABLE ENTRIES C C R 55,1,1 C U1 C  0 TEMPORARY STORAGE C C ********************************************** C C DIMENSION IERMS(5) DATA IERMS /10,5,2HSW,2HFR,2HQ / DATA IDTN /55/ C C FIND LU # C IERMS = 10 ISTN =ISN(DUMMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF(LU1.LE.0.OR.LU0.LE.0)GOTO 800 CALL XWFRQ(LU0,LU1,IERMS,IUN,IBND,FREQ) IF(IERMS.NE.0)GOTO 800 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C ------------------------------------- SUBROUTINE SWMAN(IUN,MODE,IBND,MKR,VOLTS), +09580-16426 1926 790420 DIMENSION IERMS(5) DATA IERMS /10,5,2HSW,2HMA,2HN / DATA IDTN /55/ C C FIND LU # C IERMS = 10 ISTN = ISN(DUMY) LU1 = LUDV(ISTN,IDTN,IUN) LU0 = IBLU0(LU1) IF (LU1.LE.0.OR.LU0.LE.0)GOTO 800 CALL XWMAN(LU0,LU1,IERMS,IUN,MODE,IBND,MKR,VOLTS) IF(IERMS.NE.0)GOTO 800 20 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C -------------------------------------------------- SUBROUTINE XWFRQ(LU0,LU1,IERR,IUN,IBND,FREQ), +09580-16426 1926 790420 DIMENSION BUFR(4),IBUFR(16),IBDP(4),IOBUF(6),IRGE(3) DIMENSION IDGT(3),IERR(5),IREG(2) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB),(BUFR,IBUFR) C DATA IBDP /2HB1,2HB2,2HB3,2HB4/ DATA IRGE /1000,100,10/ DATA IDTN / 55 / C C READ OUTPUT BUFFER C LEN = 16 CALL TIM(IDTN,IUN,1,IBUFR,LEN,IERFG) IF (IERFG.LT.0)GOTO 9900 C C CHECK PARAMETERS C IERR = 0 IF(IBND.LT.1.OR.IBND.GT.4)GOTO 9900 INX = IBND*2-1 C FLOWR = BUFR(INX) FUPPR = BUFR(INX+1) C IF(FREQ.LT.FLOWR.OR.FREQ.GT.FUPPR)GOTO 9900 C IOBUF = 5 IOBUF(2) = 2HM1 IOBUF(3) = IBDP(IBND) C C CALCULATE PROGRAMMING VOLTAGE C VOLTS =((FREQ-FLOWR)/(FUPPR-FLOWR))*10.0 IF(VOLTS.GE.9.9995)GOTO 200 C C CONVERT VOLTS TO !-ASCII C IVOLT = VOLTS * 1000.0 C DO 150 I = 1, 3 NUM = 0 120 IF(IVOLT.LT.IRGE(I))GOTO 150 IVOLT = IVOLT - IRGE(I) NUM = NUM + 1 GOTO 120 C 150 IDGT(I) = NUM + 60B C IOBUF(4) = IOR(53000B,IDGT(1)) IOBUF(5) = IOR(IDGT(2)*256,IDGT(3)) IOBUF(6) = IOR((IVOLT+60B)*256,105B) GOTO 300 C C 200 IOBUF(4) = 2HV: IOBUF(5) = 2H00 IOBUF(6) = 2H0E C C ENABLE REMOTE C 300 CONTINUE CALL EXEC(100003B,1600B+LU0) GOTO 9000 7710 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C OUTPUT ASCII TO 8620C C CALL REIO(100002B,LU1,IOBUF(2),IOBUF,IDUMY,0) GOTO 9000 7730 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 RETURN C C ERROR ROUTINE C 9000 IERR = 9 GOTO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HSW IERR(4) = 2HFR IERR(5) = 2HQ RETURN END C C --------------------------------------------------------- SUBROUTINE XWMAN(LU0,LU1,IERR,IUN,MODE,IBND,MKR,VOLTS), +09580-16426 1926 790420 DIMENSION IOBUF(7),IERR(5),IREG(2),IRGE(3) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C DATA IRGE /1000,100,10/ IERR = 0 IF(MODE.LT.1.OR.MODE.GT.7)GOTO 9900 IF(IBND.LT.0.OR.IBND.GT.4)GOTO 9900 IF(MKR.LT.0.OR.MKR.GT.1)GOTO 9900 IF(VOLTS.LT.0.0.OR.VOLTS.GT.10.0)GOTO 9900 C IMOD = MODE + 61B IOBUF(2) = IOR(46400B,IMOD) IOBUF(3) = IOR(41000B,IBND+60B) C IF(VOLTS.LT.9.9995)GOTO 100 IOBUF(4) = 53072B IOBUF(5) = 30060B IOBUF(6) = 30105B GOTO 200 100 IVOLT = VOLTS * 1000.0 IDX = 4 IOBUF(4) = 53000B C ******** DO 140 I=1, 3 NUM = 0 110 IF(IVOLT.LT.IRGE(I))GOTO 120 NUM = NUM + 1 IVOLT = IVOLT - IRGE(I) GOTO 110 120 IF(I.NE.2)GOTO 130 IOBUF(IDX) = (NUM+60B)*256  GOTO 140 130 IOBUF(IDX) = IOR(IOBUF(IDX),NUM+60B) IDX = IDX + 1 140 CONTINUE C ********* IOBUF(6) = (IVOLT+60B)*256 + 105B 200 CONTINUE IF(MKR.EQ.0)IOBUF(7) = 46000B IF(MKR.NE.0)IOBUF(7) = 51000B C CALL EXEC(100003B,1600B+LU0) GO TO 9000 300 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 C C OUTPUT FIELD CODES C IOBUF = -11 CALL REIO(100002B,LU1,IOBUF(2),IOBUF,IDUMY,0) GO TO 9000 350 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 9100 RETURN C C ERROR EXIT C 9000 IERR = 9 GO TO 9910 9100 IERR = IAND(IREG,377B) + 11 GO TO 9910 9200 IERR = 4 GO TO 9910 9300 IERR = 3 GO TO 9910 9900 IERR = 1 9910 IERR(2) = 5 IERR(3) = 2HSW IERR(4) = 2HMA IERR(5) = 2HN RETURN END END$   09580-18427 1926 S C0122 &DIGIN 69431A             H0101 FTN,L SUBROUTINE DIGIN(ISLOT,IDATA),09580-16427 1926 790420 C--------------------------------------------------------- C C RELOC. 09580-16427 C SOURCE 09580-18427 C C L.CORTEZ C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETRY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C----------------------------------------------------------- C C BRANCH AND MNEMONIC TABLES ENTRIES: C ---------------------------------- C C DIGIN(I,IV), OV#=XX, ENT=DIGIN, FIL=%DIGIN C C----------------------------------------------------------- C C THIS SUBROUTINE PROGRAMS THE HP 69431A TTL INPUT C CARD. C DIMENSION IERMS(5) DATA IDTN/23/ DATA IERMS/10,5,2HDI,2HGI,2HN / ISTN = ISN(DUMMY) LU = LUDV(ISTN,IDTN) IF(LU)800,800,30 30 CALL XIGIN(LU,IERMS,ISLOT,IDATA) IF(IERMS)800,40,800 40 CONTINUE RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C SUBROUTINE XIGIN(LU,IERR,ISLOT,IDATA), +09580-16427 1926 790420 C C C LU = LOGICAL UNIT NUMBER OF 6940 C IERR = 5-WORD ERROR ARRAY C WHERE: IERR(1) = ERROR CODE C 0 = NO ERRORS C -1 = PARAMETER ERROR C -2 = TIME OUT ERROR C -9 = I/O CALL REJECTED C -10 = ILLEGAL LU C IERR(2) = CHARACTER COUNT C IERR(3) - IERR(5) = DEVICE MNEMONIC C ISLOT = UNIT ADDRESS + SLOT ADDRESS C  0 - 14 (6940) C 100 - 114 (6941 UNIT #1) C 200 - 214 (6941 UNIT #2) C 300 - 314 (6941 UNIT #3) C ------------------------ C 1500 - 1514 (MAX) C C IDATA = INPUT DATA C 0 - 7777 (OCTAL) C DIMENSION IADDR(7),IBUF(2) DIMENSION IERR(5),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C DATA IADDR/100000B,110000B,120000B,130000B,140000B,150000B, 1160000B/ DATA ICNWD/170200B/ C C *** PARAMETER CHECK C IERR = 0 IF(IUNIT.GT.1514)GO TO 8000 C C *** FIND UNIT AND SLOT ADDRESSES C NUMBR = 0 IUNUM = ISLOT 20 CONTINUE IF(IUNUM.LT.0)GO TO 8000 IF(IUNUM.LE.15)GO TO 30 NUMBR = NUMBR + 1 IUNUM = IUNUM - 100 GO TO 20 30 CONTINUE IF(IUNUM.GT.14)GO TO 8000 IBUF = IOR(ICNWD,NUMBR) IF(IUNUM.LT.8)IBUF(2) = IUNUM*10000B IF(IUNUM.GT.7)IBUF(2) = IADDR(IUNUM-7) C C *** OUTPUT WORD TO MULTI-PROGRAMMER C 90 CALL REIO(100002B,100B+LU,IBUF,2) GOTO 7000 95 CALL ABREG(IA,IB) IF(IAND(IREG,377B) .NE.0) GOTO 7500 100 CONTINUE C C *** INPUT DATA FROM MULTI-PROGRAMMER C 110 CALL REIO(100001B,100B+LU,IDATA,1) GOTO 7000 120 CALL ABREG(IA,IB) IF (IAND(IREG,377B) .NE. 0) GOTO 7500 130 CONTINUE C 140 ITEST=IDATA ITEST=(IAND(7777B,ITEST)) C C *** ISOLATE DIGITAL DATA TO OCTAL C C ID1=ITEST/8 R1=ITEST-(ID1*8) C ID2=ID1/8 R2=ID1-(ID2*8) C ID3=ID2/8 R3=ID2-(ID3*8) C R4=ID3 C DATA=R4*1000.+R3*100.+R2*10.+R1 C IDATA=INT(DATA) C RETURN C C C *** ERROR CONDITIONS C 7000 IERR = 9 GO TO 8100 7500 IERR = 2 GO TO 8100 8000 IERR = 1 8100 IERR(3) = 2HDI IERR(4) = 2HGI IERR(5) = 2HN RETURN END  END$   09580-18429 2001 S C0122 &ACSEN              H0101 kFTN4,L SUBROUTINE ACSEN(ISLOT,IRWD), 09580-16429 REV.2001 791023 C C******************************************************* C C RELOCATABLE 09580-16429 C SOURCE 09580-18429 C C REY UNTALAN 790604 C BOB RICHARDS 791023 C C**************************************************** C C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES T&O PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE EVENT SENSE CARD (69434) C --------------------- C C HARDWARE C -------- C C C C HP 12566-60024 MICROCIRCUIT CARD C JUMPERED AS FOLLOWS: C C W1-A C W2-W4-B C W5-W8-OUT C W9-A C C JUMPER THE 69434 AS FOLLOWS: C C W2 - B C W3 - D (EXT.WORD NOT EQUAL TO REF. WORD) C W4 - OUT C W6 - IN C C C BRANCH AND MNEMONIC TABLE ENTRIES C C ACSEN(I,I) OV=XX, ENT=ACSEN FIL=%ACSEN C SENPL(IV,IV) OV=XX, ENT=SENPL, FIL=%ACSEN C C************************************************ C C ERRORS: C 1 = PARAMETER ERROR C 9 = I/O ERROR C 10 = LU ERROR C C C************************************************ C C C SUBROUTINE ACSEN(ISLOT,IRWD) C C C WHERE: C ISLOT = SLOT # OF 69434A (EVENT SENSE CARD) C 400 THRU 414 OF 6940B MULTIPROGRIMMER C C IRWD = REFERENCE WORD FOR 69434A C 0 TO 7777 C C C***************************************** DIMENSION IERMS(5) DATA IERMS/10,5,2HAC,2HSE,2HN / DATA IDTN/23/ C C FIND STATION # AND LU # C IERMS=10 ISTN=ISN(DUMMY) LU=LUDV(ISTN,IDTN) IF(LU)800,800,20 C 20 CALL XCSEN(LU,IERMS,ISLOT,IRWD) IF(IERMS)800,30,800 30 RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C=============================================================== C C C C C THIS SUBROUTINE WILL POLL EACH SLOT OF THE 6940B C SEQUENTIALLY STARTING AT SLOT 400. THE FIRST CARD C THAT SETS THE IRQ (BIT 15) WILL BE RETURNED IN IWD1 . C IWRD WILL BE THE EXTERNAL WORD. IT IS UP TO DTHE PROGRAM- C MER TO DETERMINE WHICH BIT OR BITS CAUSED THE INTERRUPT. C C SUBROUTINE SENPL(IWD1,IWRD), 09580-16429 REV.2001 791023 C C DIMENSION IBUF(2),IERR(5),ID(5),IDBUF(3),ICBUF(3) DATA IDTN /23/ DATA ICBUF/4,5/ C C C ISTN =ISN(DUMMY) LU =LUDV(ISTN,IDTN) IF(LU)800,800,100 C C 100 IDBL = 2 ICBL =2 IDBUF(1) = 13 IBUF(1) = 13 C ICWD = 170200B C IWD1=-1 IWRD=-1 C C OUTPUT CONTROL WORD C CALL EXEC(100002B,100B+LU,ICWD,1) GOTO 7000 C C C C C POLL EACH SLOT C 110 DO 120 ISLOT=0,14 C IDBUF(2) =ISLOT*10000B C C C C C C C OUTPUT SLOT # WITHOUT GATE C CALL EXEC(100002B,11300B+LU,IDBUF,2,ICBUF,2) GOTO 7000 C C C READ EXTERNAL WORD C 130 CALL EXEC(100001B,11300B+LU,IBUF,2,ICBUF,2) GOTO 7000 C C CHECK IF BIT(15) IS SET C 140 IF(IBUF(2) .LT. 0) GOTO 200 C C NO IRQ C CHECK NEXT SLOT C 120 CONTINUE C C C DID NOT FIND ANY SLOT THAT SET BIT 15 C C C GOTO 8001 C C WE FOUND IT C 200 IWD1 = 400+ISLOT C C PROCESS EXTERNAL WORD C IWD2=IAND(IBUF(2),7777B) C C C C ID(1)=IAND(IWD2,7000B)/1000B ID(2)=IAND(IWD2,700B)/100B ID(3)=IAND(IWD2,70B)/10B ID(4)=IAND(IWD2,7B) C ID(1)=ID(1)*1000 ID(2)=ID(2)*100 ID(3)=ID(3)*10 C C IWRD =ID(1)+ID(2)+ID(3)+ID(4) C C C C C C 8001 RETURN C C C ERROR EXIT C 800 IERR=10 GOTO 8500 7000 IERR=9 8500 IERR(2)=5 IERR(3)=2HSE IERR(4)=2HNP IERR(5)=2HL CALL ERROR(IERR,IERR(2)) RETURN END C=============================================== C C SUBROUTINE XCSEN(LU,IERR ,ISLOT,IRWD), 09580-16429 REV.2001 +791023 C C DIMENSION IERR(5),ID(5),IREG(2),IOBUF(5),ICBUF(5) DIMENSION IDBUF(5) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB)  DATA ICBUF/4,3/ C C C CHECK PARAMETERS C IERR=0 C ISLOT=ISLOT-400 C IF(ISLOT .LT. 0 .OR. ISLOT .GT. 14) GOTO 8000 C IF(IRWD .LT. 0 .OR. IRWD .GT. 7777) GOTO 8000 C C C PROCESS REFERENCE WORD C ID(1) = IRWD/1000 ID(2) = (IRWD - (ID(1)*1000))/100 ID(3) = (IRWD - (ID(1)*1000) - (ID(2)*100))/10 ID(4) = IRWD-(ID(1)*1000)-(ID(2)*100)-(ID(3)*10) C C CHECK EACH DIGIT C DO 100 I= 1,4 IF(ID(I) .GT. 7) GOTO 8000 100 CONTINUE C C C POSITION EACH DIGIT C ID(1) = ID(1)*1000B ID(2) = ID(2)*100B ID(3) = ID(3)*10B C C C C C POSITION SLOT# TO PROPER PLACE C ISLOT = ISLOT*10000B C C C FORM THE SLOT# AND REFERENCE WORD C IDATA=ID(1) DO 200 I=2,4 200 IDATA=IOR(ID(I),IDATA) C C IOBUF(1) = 170000B IOBUF(2) = IOR(ISLOT,IDATA) IOBUF(3) = 170420B C C IDBL=2 ICBL=2 IDBUF(1) = 13 IDBUF(2) = IOBUF(3) C C C C C OUTPUT CONTROL WORD ,SLOT # WITH REFERENCE,AND C CONTROL WORD TO SET IEN AND TME ON. C C CALL EXEC(100002B,100B+LU,IOBUF(1),3) GOTO 7000 C C C C C 1000 CALL EXEC(100002B,11300B+LU,IDBUF,IDBL,ICBUF,ICBL) GOTO 7000 C C 1001 RETURN C C C C ERROR EXIT C 8000 IERR=1 GOTO 8500 7000 IERR=9 8500 IERR(2)=5 IERR(3)=2HAC IERR(4)=2HSE IERR(5)=2HN RETURN END P  09580-18430 2001 S C0122 &ACPS1              H0101 pnFTN4,L SUBROUTINE ACPS1(IUNIT,FREQ,VOLTS),09580-16430 REV.2001 +791023 C C------------------------------------- C C ELGAR DAP-SERIES PROGRAMMABLE A-C POWER SUPPLY C C RELOCATABLE 09580-16430 C SOURCE 09580-18430 C C ALAN SANDERSON 790502 C BOB RICHARDS 791023 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DIS͹CLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE ELGAR DAP SERIES A-C POWER SUPPLY. C C HARDWARE REQUIRED: C ------------------ C A. ELGAR DAP SERIES WITH OPTION 333, CAPABLE OF C USING OPTIONS 7 AND 8. C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ACPS1(I,R,R), OV=XX, ENT=ACPS1, FIL=%ACPS1 C ACPS3(I,R,R,R,R,I,I), OV=XX, ENT=ACPS3, FIL=%ACPS1 C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 64,1,6 C U1 C C NN NUMBER OF PHASES (1 OR 3) C FFF.F MAXIMUM OUTPUT VOLTAGE C N NUMBER OF FREQUENCY RANGES (1 OR 3) C FF.F MINIMUM FREQUENCY (HZ). C C C C------------------------------------ C CALLING SEQUENCE: C CALL ACPS1(IUNIT,FREQ,VOLTS) C C WHERE: C C IUNIT = UNIT # C C FREQ = FREQUENCY IN HZ. C VOLTS = PROGRAMMED OUTPUT VOLTAGE VALUE C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 64 / DATA IERMS / 10,5,2HAC,2HPS,2H1 / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59501A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XACSU(LU1,LUIB,IERMS,IUNIT,FREQ,VBOLTS,VOLTS,VOLTS,240.,120.) IF(IERMS)800,20,800 C C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) 20 END SUBROUTINE ACPS3(IUNIT,FREQ,VOLTA,VOLTB,VOLTC,IPHB,IPHC) 1,09580-16430 REV.2001 791023 C C------------------------------------ C CALLING SEQUENCE: C CALL ACPS3(IUNIT,FREQ,VOLTA,VOLTB,VOLTC,IPHB,IPHC) C WHERE: C IUNIT = THE UNIT NUMBER OF THE DEVICE. C FREQ = THE OUTPUT FREQUENCY OF THE DEVICE (HZ). C VOLTA = THE OUTPUT VOLTAGE (A-C RMS VOLTS) OF PHASE A. C VOLTB = THE OUTPUT VOLTAGE (A-C RMS VOLTS) OF PHASE B. C VOLTC = THE OUTPUT VOLTAGE (A-C RMS VOLTS) OF PHASE C. C IPHB = THE PHASE ANGLE OF PHASE B (DEGREES) RELATIVE TO C PHASE A. C IPHC IS THE PHASE ANGLE OF PHASE C (DEGREES) RELATIVE TO C PHASE A. C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 64 / DATA IERMS / 10,5,2HAC,2HPS,2H3 / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 59501A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XACSU(LU1,LUIB,IERMS,IUNIT,FREQ,VOLTA,VOLTB,VOLTC,IPHB,IPHC) IF(IERMS)800,20,800 C C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) 20 END C C--------------------------------------------- C SUBROUTINE XACSU(LU1,LUIB,IERMS,IUNIT,FREQ,VOLTA,VOLTB,VOLTC,IPHB, +IPHC),09580-16430 REV.2001 791023 DIMENSION IERMS(5),IBUF(6),IOBUF(19),IREG(2) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C EQUIVALENCES FOR TIM CONFIGURATION BUFFER C EQUIVALENCE (IBUF(5),FRQMIN) EQUIVALENCE (IBUF(4),NFREQ) EQUIVALENCE (IBUF(2),VMAX) EQUIVALENCE (IBUF(1),NPHASE) DATA IDTN/64/ DATA LETRA/2HA,/,LETRB/2HB,/,LETRC/2HC,/,LETRD/2HD,/,LETRE/2HE,/ DATA LETRF/2HF,/,LETRG/2HG,/,IZERO/2H00/ C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS: C C LUIB = LU # OF HPIB BUSS. C LU1 = LU # OF THE ELGAR DAP SERIES PROGRAMMER. C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C FREQ = THE DESIRED OUTPUT FREQUENCY (HZ). C VOLTA = PHASE A OUTPUT VOLTAGE. C VOLTB = PHASE B OUTPUT VOLTAGE. C VOLTC = PHASE C OUTPUT VOLTAGE. C IPHB = PHASE B ANGLE WITH RESPECT TO PHASE A (DEGREES - 0 TO 360). C IPHC = PHASE C ANGLE WITH RESPECT TO PHASE A (DEGREES - 0 TO 360). C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(IDTN,IUNIT,1,IBUF,6,IER) IF(IER .NE. 0)RETURN IERMS = 1 C C CHECK THE INPUT PARAMETERS C C CHECK THE FREQUENCY C IF(FREQ.LT.FRQMIN.OR.FREQ.GT.9990.)GO TO 8000 IF(NFREQ.EQ.1.AND.FREQ.GT.999.)GO TO 8000 C C CHECK ALL THREE PHASES IF REQUIRED C IF(VOLTA.GT.VMAX.OR.VOLTA.LT.0.0)GO TO 8000 IF(NPHASE.EQ.1)GO TO 100 IF(VOLTB.GT.VMAX.OR.VOLTB.LT.0.0)GO TO 8000 IF(VOLTC.GT.VMAX.OR.VOLTC.LT.0.0)GO TO 8000 C C CHECK THE PHASE ANGLES C IF(IPHB.LT.0.OR.IPHB.GT.360)GO TO 8000 IF(IPHC.LT.0.OR.IPHC.GT.360)GO TO 8000 C C FORMAT FREQUENCY ACCORDING TO TYPE OF PROGRAMMER C 100 IF(NFREQ.EQ.1)GO TO 120 IF(FREQ.GT.99.9)GO TO 110 C C IF LOW FREQUENCY, HIGH RESOLUTION, MULTIPLY BY 100 C AND P^UT IN DIV. BY 10 EXPONENT IN LOW DIGIT C 99.6 CONVERTS TO INTEGER 9962 . C IFREQ=10.*FREQ IFREQ = 10 * IFREQ + 2 GO TO 200 C C PROCESS FREQUENCIES IN THE HIGH RANGE C SINCE RESOLUTION IS TO 10 HZ. IN THIS C RANGE, VALUES ARE TRUNCATED. WITH THE C EXPONENT (LOW ORDER DIGIT), A VALUE C OF 8815. HZ. CONVERTS TO AN INTEGER 8810 . C 110 IF(FREQ.LT.1000.)GO TO 120 IFREQ = FREQ IFREQ = 10*(IFREQ/10) GO TO 200 C C FOR THE SINGLE FREQUENCY RANGE UNIT, THE LOW ORDER DIGIT C IS IGNORED. IN THE 3 RANGE UNIT, IT IS A 1. A FREQUENCY C OF 156.0 HZ TRANSLATES TO AN INTEGER 1561 . C 120 IFREQ = FREQ IFREQ = 10 * IFREQ + 1 C C NEXT, SEE IF SINGLE PHASE C IF SO, NO NEED FOR PHASE ANGLE SETTINGS. C 200 IF(NPHASE.EQ.1)GO TO 300 IANGB = IPHB * 10 IANGC = IPHC * 10 C C SET UP THE VOLTAGES C RESOLUTION IS TO .1 V, SO 104.7 VOLTS CONVERTS TO C AN INTEGER 1047 . C IF HIGH VOLTAGE (>130) HIGH VOLTAGE BIT IS SET C BY ADDING 4000 TO THE NUMBER. C IVOLTB = 10. * VOLTB IF(IVOLTB.GT.1300)IVOLTB=IVOLTB+4000 IVOLTC = 10. * VOLTC IF(IVOLTC.GT.1300)IVOLTC=IVOLTC+4000 300 IVOLTA = 10. * VOLTA IF(IVOLTA.GT.1300)IVOLTA=IVOLTA+4000 C C PERFORM FORMATTING ACCORDING TO SINGLE OR C THREE PHASE SUBSYSTEM. C C C FOR SINGLE PHASE OPERATION, THE FOLLOWING BUFFER IS SENT: C C IIIIF,JJJJE, C C WHERE I AND J ARE THE FREQUENCY AND VOLTAGE VALUES. C CALL CNUMD(IFREQ,IOBUF) CALL CNUMD(IVOLTA,IOBUF(4)) IF(NPHASE.NE.1)GO TO 1500 C C PUT IN LEADING ZEROS C DO 1100 I=2,6 1100 IOBUF(I)=IOR(IZERO,IOBUF(I)) IOBUF(4)=LETRF IOBUF(7)=LETRE NUM = 6 GO TO 2000 C C FOR THREE PHASE OPERATION, THE FOLLOWING BUFFER IS SENT: C C IIIIF,JJJJA,KKKKB,LLLLC,MMMMD,NNNNG, C C WHERE: C IIII = FREQUENCY SETTING C JJJJ = PHASE A AMPLITUDE SETTING C KKKK = PHASE B AMPLITUDE SETTING C LLLL = PHAc$"SE C AMPLITUDE SETTING C MMMM = PHASE B ANGLE SETTING C NNNN = PHASE C ANGLE SETTING C 1500 CALL CNUMD(IVOLTB,IOBUF(7)) CALL CNUMD(IVOLTC,IOBUF(10)) CALL CNUMD(IANGB,IOBUF(13)) CALL CNUMD(IANGC,IOBUF(16)) C C PUT IN LEADING ZEROS C DO 1600 I=2,18 1600 IOBUF(I)=IOR(IZERO,IOBUF(I)) IOBUF(4)=LETRF IOBUF(7)=LETRA IOBUF(10)=LETRB IOBUF(13)=LETRC IOBUF(16)=LETRD IOBUF(19)=LETRG NUM=18 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(2),NUM) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C IERMS=0 GO TO 8000 C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 RETURN END END$ $  09580-18440 2001 S C0122 &DCVOT              H0101 lFTN4,L SUBROUTINE DCVOT(IUNIT,VOUT,CURLMP,CURLMN), +09580-16440 REV.2001 791023 C------------------------------------------------------ C C RELOC. 09580-16440 C SOURCE 09580-18440 C C BOB RICHARDS 790807 C BOB RICHARDS 791023 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C-------------------------------------------------------- C C BRANCH AND MNEMONIC TABLE ENTRIES: C --------------------------------- C C DCVOT(I,R,R,R), OV=XX, ENT=DCVOT, FIL=%DCVOT C C-------------------------------------------------------- C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 66,1,5 C U1 C * C 6825 POWER SUPPLY MODEL NUMBER (6825,6826,6827) C 1 VOLTAGE RANGE (0=LOW, 1=HIGH) C 1 FULL SCALE GAIN RANGE (0=LOW, 1=HIGH) C 13 VOLTAGE/GAIN BOARD I/O SLOT C 302 CURRENT LIMIT BOARD I/O SLOT C * C * SLOTS ARE AS FOLLOWS: C * 0 - 14 (6940) THIS IS FOR UNIT #0, SLOTS 1 THRU 14 C * 100 - 114 (6941 UNIT # 1) C * 200 - 214 (6941 UNIT # 2) C * " " " " " " C * " " " " " " C * 1500 - 1514(6941 UNIT # 15) MAX C C----------------------------------------------------------- C C THIS SUBROUTINE PROGRAMS THE HP 6825/26/27 POWER SUPPLY/ C AMPLIFIER POWER SUPPLY FUNCTIONS (VOLTAGE OUT, CURRENT C LIMIT). THIS SUBROUTINE REQUIRES THAT THE POWER SUPPLIES C BE PROGRAMMED USING THE HP-6940 CONTAINING 69325A, 69326A, C 69327A, AN,D/OR 69328A CARDS. SEE PAGES 28 AND 29 OF C FOR MORE DETAILS CONCERNING CONTROL CARD SELECTION AND USE. C DIMENSION IERMS(5) C C USE TYPE "23" TO GET LU OF 6940. THE 68XX HAS NO LU. C DATA IDTN/23/ DATA IERMS/10,5,2HDC,2HVO,2HT / ISTN = ISN(DUMMY) LU = LUDV(ISTN,IDTN) IF(LU)800,800,30 30 CALL XCVOT(LU,IERMS,IUNIT,VOUT,CURLMP,CURLMN) IF(IERMS)800,40,800 40 CONTINUE RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C SUBROUTINE XCVOT(LU,IERR,NUNIT,VOUT,CURLMP,CURLMN), +09580-16440 REV.2001 791023 C C***************************************************************** C LU = LOGICAL UNIT NUMBER OF 6940 C IERR = 5-WORD ERROR ARRAY C WHERE: IERR(1) = ERROR CODE C 0 = NO ERRORS C -1 = PARAMETER ERROR C -2 = TIME OUT ERROR C -3 = CONFIGURATION TABLE C ENTRY ERROR C -9 = I/O CALL REJECTED C -10 = ILLEGAL LU C IERR(2) = CHARACTER COUNT C IERR(3) - IERR(5) = DEVICE MNEMONIC C NUNIT = UNIT NUMBER OF POWER SUPPLY/AMPLIFIER. C VOUT = PROGRAMMED OUTPUT VOLTAGE (VOLTS) C (MULTIPLY ALL VOUT VALUES BY ABOUT .999 C TO GET TRUE LIMITS) C 6825 - (+- 20V HIGH, +-5V LOW) C 6826 - (+- 50V HIGH, +-5V LOW) C 6827 - (+- 100V HIGH, +-10V LOW) C CURLMP= POSITIVE CURRENT LIMIT (MA) C 6825 - (+2000MA) C 6826 - (+1000MA) C 6827 - (+500MA) C CURLMN= NEGATIVE CURRENT LIMIT (MA) C ) 6825 - (-2000MA) C 6826 - (-1000MA) C 6827 - (-500MA) C C***************************************************************** C DIMENSION IWORD(4),IERR(5),IREG(2),IBUF(5),JWORD(4) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (IBUF(1),MODEL) EQUIVALENCE (IBUF(2),IVRNG) EQUIVALENCE (IBUF(3),IGAIN) EQUIVALENCE (IBUF(4),IVSLT) EQUIVALENCE (IBUF(5),IISLT) C DATA ICNWD/170160B/,IDTN/66/,IOTWD/170040B/ DATA LBUF/5/ C IERR = 0 C C MULTIPLICATION FACTOR C FC = .976563 C C VOUT MULTIPLICATION FACTOR C FV = .999 C CALL TIM(IDTN,NUNIT,1,IBUF,LBUF,IER) IF(IER .NE. 0) GOTO 8000 IF (IVRNG .LT. 0 .OR. IVRNG .GT. 1) GOTO 7600 C C CHECK INPUT PARAMETERS AGAINST MODEL NUMBER AND RANGES C IF (MODEL .LT. 6825) GOTO 7600 GOTO (100,135,170,7600), (MODEL - 6824) C C 6825A C 100 IF (IVRNG .EQ. 0 .AND. ABS(VOUT) .GT. (5.0 * FV)) GOTO 8000 IF (ABS(VOUT) .GT. (20.0 * FV)) GOTO 8000 IF (CURLMP .LT. 0.0 .OR. CURLMP .GT. 2000.0) GOTO 8000 IF (CURLMN .GT. 0.0 .OR. CURLMN .LT. -2000.0) GOTO 8000 GOTO 200 C C 6826A C 135 IF (IVRNG .EQ. 0 .AND. ABS(VOUT) .GT. (5.0 * FV)) + GOTO 8000 IF (ABS(VOUT) .GT. (50.0 * FV)) GOTO 8000 IF (CURLMP .LT. 0.0 .OR. CURLMP .GT. 1000.0) GOTO 8000 IF (CURLMN .GT. 0.0 .OR. CURLMN .LT. -1000.0) GOTO 8000 GOTO 235 C C 6827A C 170 IF (IVRNG .EQ. 0 .AND. ABS(VOUT) .GT. (10.0 * FV)) + GOTO 8000 IF (ABS(VOUT) .GT. (100.0 * FV)) GOTO 8000 IF (CURLMP .LT. 0.0 .OR. CURLMP .GT. 500.0) GOTO 8000 IF (CURLMN .GT. 0.0 .OR. CURLMN .LT. -500.0) GOTO 8000 GOTO 270 C C CALCULATE 6825A VOLTAGE WORD C 200 IF(IVRNG .EQ. 1 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.01*FC)) IF(IVRNG .EQ. 1 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.01*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.0025*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.0025*FC)) C C CALCULATE 6825A CURRENT LIMIT WORD C IDP = IFIX(CURLMP/32.0) IDN = IFIX(ABS(CURLMN/32.0)) GOTO 300 C C CALCULATE 6826A VOLTAGE WORD C 235 IF(IVRNG .EQ. 1 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.025*FC)) IF(IVRNG .EQ. 1 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.025*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.0025*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.0025*FC)) C C CALCULATE 6826A CURRENT LIMIT WORD C IDP = IFIX(CURLMP/16.0) IDN = IFIX(ABS(CURLMN/16.0)) GOTO 300 C C CALCULATE 6827A VOLTAGE WORD C 270 IF(IVRNG .EQ. 1 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.05*FC)) IF(IVRNG .EQ. 1 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.05*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .LT. 0.0) JD=4096-IFIX(ABS(VOUT)/ +(.005*FC)) IF(IVRNG .EQ. 0 .AND. VOUT .GE. 0.0) JD = IFIX(VOUT/(.005*FC)) C C CALCULATE 6827A CURRENT LIMIT WORD C IDP = IFIX(CURLMP/8.0) IDN = IFIX(ABS(CURLMN/8.0)) C C SET UP CURRENT LIMIT C 300 IDP = 100B * IDP ID = IOR(IDP,IDN) C IUNIT = 0 ITRY = IISLT IF (ITRY .GT. 1514) GOTO 7600 310 CONTINUE IF (ITRY.LT.0)GO TO 7600 IF(ITRY.GE.0.AND.ITRY.LE.14)GO TO 320 IUNIT = IUNIT+1 IF (IUNIT .GT. 15) GOTO 7600 ITRY = ITRY-100 GO TO 310 C C CURRENT LIMIT BOARD ADDRESS FOUND C 320 IWORD = 3 IWORD(2) = ICNWD + IUNIT IWORD(3) = IOR(ITRY*10000B,ID) IWORD(4) = IOTWD C C OUTPUT CURRENT LIMIT WORD TO MULTI-PROGRAMMER C CALL REIO(100002B,100B+LU,IWORD(2),IWORD,IDUMY,0) GOTO 7000 330 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 7500 C C SET UP VOLTAGE OUTPUT WORDS C 400 JUNIT = 0 JTRY = IVSLT ^ IF (JTRY .GT. 1514) GOTO 7600 410 CONTINUE IF (JTRY .LT. 0) GOTO 7600 IF (JTRY .GE. 0 .AND. JTRY .LE. 14) GOTO 420 JUNIT = JUNIT + 1 JTRY = JTRY - 100 GOTO 410 C C VOLTAGE OUTPUT CARD ADDRESS FOUND C 420 JWORD = 3 JWORD(2) = ICNWD + JUNIT JWORD(3) = IOR(JTRY*10000B,JD) JWORD(4) = IOTWD C C OUTPUT VOLTAGE OUTPUT WORD TO MULTI-PROGRAMMER C CALL REIO(100002B,100B+LU,JWORD(2),JWORD,IDUMY,0) GO TO 7000 430 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 7500 C C RETURN C RETURN C C ERROR CONDITIONS C 7000 IERR = 9 GO TO 8100 7500 IERR = 2 GO TO 8100 7600 IERR = 3 GO TO 8100 8000 IERR = 1 8100 IERR(3) = 2HDC IERR(4) = 2HVO IERR(5) = 2HT RETURN END END$ k  09580-18441 2001 S C0122 &DCAV              H0101 tRFTN4,L SUBROUTINE DCAV(NUNIT,VGAIN),09580-16441 REV.2001 791023 C------------------------------------------------------ C C RELOC. 09580-16441 C SOURCE 09580-18441 C C BOB RICHARDS 790807 C BOB RICHARDS 791023 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT-PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED C TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR C WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. C C-------------------------------------------------------- C C BRANCH AND MNEMONIC TABLE ENTRIES: C --------------------------------- C C DCAV(I,R), OV=XX, ENT=DCAV, FIL=%DCAV C C-------------------------------------------------------- C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 66,1,5 C U1 C * C 6825 POWER SUPPLY MODEL NUMBER (6825,6826,6827) C 1 VOLTAGE RANGE (0=LOW, 1=HIGH) C 1 FULL SCALE GAIN (0=LOW, 1=HIGH) C 13 VOLTAGE/GAIN BOARD I/O SLOT C 302 CURRENT LIMIT BOARD I/O SLOT C * C * SLOTS ARE AS FOLLOWS: C * 0 - 14 (6940) THIS IS FOR UNIT #0, SLOTS 1 THRU 14 C * 100 - 114 (6941 UNIT # 1) C * 200 - 214 (6941 UNIT # 2) C * " " " " " " C * " " " " " " C * 1500 - 1514(6941 UNIT # 15) MAX C C----------------------------------------------------------- C C THIS SUBROUTINE PROGRAMS THE HP 6825/26/27 POWER SUPPLY/ C AMPLIFIER AMPLIFIER FUNCTION AND REQUIRES THAT THE UNITS C BE PROGRAMMED USING THE HP-6940 CONTAINING A 69325A FOR GAIN C AND A 69326A OR A 69327A CARD FOR CURRENT LIMIT. SEE PAGES 28 C AND 29 OF FOR MORE DETAILSZ CONCERNING CONTROL CARD C SELECTION AND USE. C DIMENSION IERMS(5) C C USE TYPE "23" TO GET LU OF 6940. THE 68XX HAS NO LU. C DATA IDTN/23/ C DATA IERMS/10,5,2HDC,2HAV,2H / ISTN = ISN(DUMMY) LU = LUDV(ISTN,IDTN) IF(LU)800,800,30 30 CALL XCAV(LU,IERMS,NUNIT,VGAIN) IF(IERMS)800,40,800 40 CONTINUE RETURN C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C SUBROUTINE XCAV(LU,IERR,NUNIT,VGAIN),09580-16441 REV.2001 +791023 C C C LU = LOGICAL UNIT NUMBER OF 6940 C IERR = 5-WORD ERROR ARRAY C WHERE: IERR(1) = ERROR CODE C 0 = NO ERRORS C -1 = PARAMETER ERROR C -2 = TIME OUT ERROR C -3 = CONFIGURATION TABLE C ENTRY ERROR C -9 = I/O CALL REJECTED C -10 = ILLEGAL LU C IERR(2) = CHARACTER COUNT C IERR(3) - IERR(5) = DEVICE MNEMONIC C NUNIT = UNIT NUMBER OF POWER SUPPLY/AMPLIFIER. C VGAIN = PROGRAMMED GAIN (MULTIPLY ALL NUMBERS BELOW BY C ABOUT .999 FOR ACTUAL MAX GAIN) C 6825 - (8.0,MAX,HIGH RANGE 2.0,MAX,LOW RANGE) C 6826 - (20.0,MAX,HIGH RANGE 2.0,MAX,LOW RANGE) C 6827 - (40.0,MAX,HIGH RANGE 4.0,MAX,LOW RANGE) C C ********** WARNING ************* C * * C * THIS DEVICE SUBROUTINE SETS THE* C * CURRENT LIMIT TO MAXIMUM. USE * C * "DCVOT" TO SET AN APPROPRIATE * C * CURRENT LIMIT BEFORE SWITCHING * C * THE 68XX TO THE POWER SUPPLY * C * MODE. 4 * C * * C ********************************** C C*********************************************************************** C DIMENSION IWORD(4),JWORD(4),IERR(5),IREG(2),IBUF(5) C EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) EQUIVALENCE (IBUF(1),MODEL) EQUIVALENCE (IBUF(3),IGAIN) EQUIVALENCE (IBUF(4),IASLT) EQUIVALENCE (IBUF(5),IISLT) C DATA ICNWD/170160B/,IDTN/66/,IOTWD/170040B/,LBUF/5/ C IERR = 0 C C DIVISION FACTOR C FC = .97652 C C GAIN MULTIPLICATION FACTOR C FG = .999 C CALL TIM(IDTN,NUNIT,1,IBUF,LBUF,IER) IF(IER .NE. 0) GOTO 8000 IF (IGAIN .LT. 0 .OR. IGAIN .GT. 1) GOTO 7600 IF (VGAIN .LT. 0.0) GOTO 8000 C C CHECK INPUT PARAMETERS AGAINST MODEL NUMBER AND RANGES C IF (MODEL .LT. 6825) GOTO 7600 GOTO (100,135,170,7600), (MODEL - 6824) C C 6825A C 100 IF (IGAIN .EQ. 0 .AND. VGAIN .GT. (2.0 * FG)) GOTO 8000 IF (VGAIN .GT. (8.0 * FG)) GOTO 8000 GOTO 200 C C 6826A C 135 IF (IGAIN .EQ. 0 .AND. VGAIN .GT. (2.0 * FG)) GOTO 8000 IF (VGAIN .GT. (20.0 * FG)) GOTO 8000 GOTO 235 C C 6827A C 170 IF (IGAIN .EQ. 0 .AND. VGAIN .GT. (4.0 * FG)) GOTO 8000 IF (VGAIN .GT. (40.0 * FG)) GOTO 8000 GOTO 270 C C CALCULATE 6825A GAIN WORD C 200 VGMX2 = 4.0 IF(IGAIN .EQ. 0) VGMX2 = 1.0 VGAIN = VGAIN - VGMX2 IF(IGAIN.EQ.1.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/(.002*FC)) IF(IGAIN .EQ. 1 .AND. VGAIN .GE. 0.0) IG = IFIX(VGAIN/(.002*FC)) IF(IGAIN.EQ.0.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/ +(.0005*FC)) IF(IGAIN.EQ.0.AND.VGAIN.GE.0.0) IG = IFIX(VGAIN/(.0005*FC)) GOTO 300 C C CALCULATE 6826A GAIN WORD C 235 VGMX2 = 10.0 IF(IGAIN .EQ. 0) VGMX2 = 1.0 VGAIN = VGAIN - VGMX2 IF(IGAIN.EQ.1.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/(.005*FC))v IF(IGAIN.EQ.1.AND.VGAIN.GT.0.0) IG = IFIX(VGAIN/(.005*FC)) IF(IGAIN.EQ.0.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/ +(.0005*FC)) IF(IGAIN.EQ.0.AND.VGAIN.GE.0.0) IG = IFIX(VGAIN/(.0005*FC)) GOTO 300 C C CALCULATE 6827A GAIN WORD C 270 VGMX2 = 20. IF(IGAIN .EQ. 0) VGMX2 = 2.0 VGAIN = VGAIN - VGMX2 IF(IGAIN.EQ.1.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/(.01*FC)) IF(IGAIN .EQ. 1 .AND. VGAIN .GE. 0.0) IG = IFIX(VGAIN/(.01*FC)) IF(IGAIN.EQ.0.AND.VGAIN.LT.0.0) IG=4096-IFIX(ABS(VGAIN)/(.001*FC)) IF(IGAIN.EQ.0.AND.VGAIN.GE.0.0) IG = IFIX(VGAIN/(.001*FC)) C C CALCULATE 6940/6941 CURRENT BOARD SLOT C 300 IUNIT = 0 ITRY = IISLT IF (ITRY .GT. 1514) GOTO 7600 310 CONTINUE IF (ITRY .LT. 0) GOTO 7600 IF(ITRY.GE.0.AND.ITRY.LE.14)GO TO 320 IUNIT = IUNIT+1 IF (IUNIT .GT. 15) GOTO 7600 ITRY = ITRY-100 GO TO 310 C C CURRENT LIMIT BOARD ADDRESS FOUND C 320 IWORD = 3 IWORD(2) = ICNWD + IUNIT IWORD(3) = IOR(ITRY*10000B,7676B) IWORD(4) = IOTWD C C OUTPUT CURRENT LIMIT WORD TO MULTI-PROGRAMMER C CALL REIO(100002B,100B+LU,IWORD(2),IWORD,IDUMY,0) GO TO 7000 330 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 7500 C C CALCULATE 6940/6941 GAIN BOARD SLOT C 400 JUNIT = 0 JTRY = IASLT IF (JTRY .GT. 1514) GOTO 7600 410 CONTINUE IF (JTRY .LT. 0) GOTO 7600 IF(JTRY.GE.0.AND.JTRY.LE.14)GO TO 420 JUNIT = JUNIT+1 IF (JUNIT .GT. 15) GOTO 7600 JTRY = JTRY-100 GO TO 410 C C GAIN BOARD ADDRESS FOUND C 420 JWORD = 3 JWORD(2) = ICNWD + JUNIT JWORD(3) = IOR(JTRY*10000B,IG) JWORD(4) = IOTWD C C OUTPUT GAIN WORD TO MULTI-PROGRAMMER C CALL REIO(100002B,100B+LU,JWORD(2),JWORD,IDUMY,0) GO TO 7000 430 CALL ABREG(IA,IB) IF(IAND(IREG,377B).NE.0)GO TO 7500 C C RETURN C RETURN C C  ERROR CONDITIONS C 7000 IERR = 9 GO TO 8100 7500 IERR = 2 GO TO 8100 7600 IERR = 3 GO TO 8100 8000 IERR = 1 8100 IERR(3) = 2HDC IERR(4) = 2HAV IERR(5) = 2H RETURN END END$   09580-18442 2013 S C0122 &DVSTS              H0101 ASMB,R,Q NAM DVSTS,2,10 09580-16442 REV.2013 800128 * *--------------------------------------------------------------- * * SOURCE 09580-18442 * * * HP 92425B TEST SYSTEM SOFTWARE IS THE PROPRIETARY * MATERIAL OF THE HEWLETT-PACKARD COMPANY. USE AND * DISCLOSURE THEREOF ARE RESTRICTED BY WRITTEN AGREEMENT. * * *--------------------------------------------------------------- * * THIS PROGRAM IS TO BE SCHEDULED BY DVR37. * THE STATUS IS STORED, AND THEN DVINT IS SCHEDULED TO * SET THE TRAP. * A BASIC PROGRAM MAY RETRIEVE THE STATUS BY USING SUBROUTINE * &STGET, 09580-18443. * * *** WARNING - SPECIAL "ISN" SUPPLIED FOR "TIM". *** * * *--------------------------------------------------------------- * * CONFIGURATION TABLE ENTRY EXAMPLE * * R 67,1,64 * * * U1 UNIT 1 (ONLY 1 UNIT EVER!!!!) * * * 0 LU0 STATUS STORAGE * 0 LU1 STATUS STORAGE * 0 LU2 STATUS STORAGE * " " " " * " " " " * * " " " " * 0 LU63 STATUS STORAGE * *--------------------------------------------------------------- * * LOAD AND USE THIS PROGRAM AS PER "DVINT". INCLUDE THE BASIC * CALL "STGET" IN THE TRAP HANDLING ROUTINE. * *--------------------------------------------------------------- * * TO LOAD: * * :RU,LOADR,,%DVSTS,LIST LU,BGNCPE,SS * *--------------------------------------------------------------- ENT DVSTS,ISN EXT EQLU,EXEC,LU2ST,TIM,RMPAR,REIO SPC 1 A EQU 0 B EQU 1 SKP * GET LU# OF INTERRUPTING DEVICE. DVSTS NOP * * CALL RMPAR TO SCHEDULING PARAMETERS FROM DVR37. * JSB RMPAR CALL RMPAR TO GET EQT AND DEF *+2 SUBCHANNEL IF SCHEDULED DEF STAT FROM DVRc37 * CLA PRESET LU VALUE TO ZERO. STA LU * * * CONVERT EQT AND SUBCHANNEL TO AN LU * CLB CLEAR A REG FOR A DIVIDE LDA 1650B GET FIRST WORD ADDRESS OF EQT TABLE CMA,INA NEGATE ADDRESS ADA EQT GET DIFFERENCE IN ADDRESSES DIV =D15 DIVIDE BY EQT SIZE INA ADD ONE TO EQT NUMBER STA ENS STORE IN EQT LDA SUBCH GET SUBCHANNEL AND ALF,ALF POSITON IT TO COMPARE WITH ALF,RAR EQT AND SUBCHANNEL WORD IN DRT. ADA ENS ADD IN EQT BITS STA ENS SAVE FOR COMPARISON SZA,RSS IF BOTH EQT AND SUBCHANNEL = 0, JMP TEST THEN NOT SCHEDULED BY DVR37 * * GET LU FROM DEVICE REFERENCE TABLE (DRT) * LDA 1653B GET THE DRT TABLE LENGTH CMA,INA NEGATE STA LUMAX AND SAVE IT LDA 1652B GET FIRST WORD ADDRESS OF DRT STA DRT STORE ADDRESS OF DRT CLB,INB B REGISTER HAS CURRENT LU IN IT * LOOP LDA DRT,I GET THE NEXT DRT ENTRY AND =B174077 MASK FOR EQT AND SUBCHANNEL CPA ENS EQT AND SUBCHANNEL MATCH? JMP GOTIT YES, GO SAVE LU! ISZ DRT NO, INCREMENT LU POINTER INB INCREMENT LU COUNTER ISZ LUMAX INCREMENT LOOP COUNTER JMP LOOP LOOP AGAIN JMP TEST NO MATCH, ILLEGAL EQT AND SUBCHANNEL SPC 1 GOTIT STB LU FOUND LU, STORE IT TEST LDA LU TEST IF ANY LU FOUND SZA,RSS IF LU IS 0 JMP ERXIT THEN OUTPUT ERROR MESSAGE, THEN EXIT. * * GET STATION NUMBER * JSB LU2ST GET STATION NUMBER FROM LU DEF *+2 DEF LU LDB .1 STB STN PRESET STATION NUMBER SZA,RSS FOUND ONE? JMP ERXIT NO, EXIT STA STN YES, SAVE STATION * * READ STATUS TABLE. * JSB TIM DEF *+7 DEF IDTN DEVIUOCE TYPE NUMBER FOR STATUS NUMBER. DEF .1 ALWAYS UNIT 1. DEF .1 INDICATE THAT THIS IS A READ. DEF LU1 POINT TO START OF BUFFER. DEF TBMAX LENGTH OF BUFFER. DEF IERR * LDA IERR SZA CHECK FOR ERROR AND EXIT IF ERROR. JMP ERXIT * LDA TABLE PUT STATUS INTO TABLE. ADA LU LDB STAT STB 0,I * JSB TIM STORE STATUS TABLE WITH NEW ENTRY. DEF *+7 DEF IDTN DEF .1 DEF .2 INDICATE THAT THIS IS A WRITE. DEF LU1 DEF TBMAX DEF IERR * LDA IERR SZA CHECK FOR ERROR AND EXIT IF ERROR. JMP ERXIT * JSB EXEC SCHEDULE DVINT IN QUEUE AND NO WAIT. DEF *+6 DEF .23 DEF IDVNT DEF STAT PASS THE THREE PARAMETERS FROM DVR37 DEF SUBCH AS THE SCHEDULING PARAMETERS FOR DVINT. DEF EQT JMP EXIT * * ERROR EXIT * ERXIT JSB REIO DEF *+5 DEF .2 DEF STN DEF ERMES DEF ERMLN * * NORMAL EXIT * EXIT JSB EXEC CALL SYSTEM TO TERMINATE DEF *+2 DEF .6 * * * SPECIAL "ISN" FOR TIM * *** CAUTION *** * ISN NOP LDA STN LDB ISN,I JMP B,I * * CONSTANTS AND VARIABLES * LU NOP LUMAX NOP MAXIMUM NUMBER OF LU'S DRT NOP ADRESS OF THE DRT TABLE * STAT NOP STATUS WRD FROM RMPAR - SUBCH NOP SUBCHANNEL FROM RMPAR \ THESE MUST BE EQT NOP EQT NUMBER FROM RMPAR / IN ORDER SPARE BSS 2 NOT USED. FROM RMPAR - * STN BSS 1 ENS BSS 1 IERR BSS 1 * .1 DEC 1 .2 DEC 2 .6 DEC 6 .23 DEC 23 * IDVNT ASC 3,DVINT ERMLN DEC 6 ERMES ASC 6,DVSTS ERROR IDTN DEC 67 DEVICE TYPE FOR STATUS TABLE. * TABLE DEF * LU1 BSS 64 FIRST WORD OF STATUS TABLE BUFFER TBMAX DEC 64 LENGTH OF STATUS TABLE BUFFER. Kx END DVSTS END$ ِ  09580-18443 2013 S C0122 &STGET              H0101 wFTN4,L SUBROUTINE STGET(LU,ISTAT),09580-16443 REV.2013 800131 C C******************************************************* C C RELOCATABLE 09580-16443 C SOURCE 09580-18443 C C BOB RICHARDS 790601 C BOB RICHARDS 791023 C BOB RICHARDS 800123 CHANGED NAME FROM 'GETST' TO 'STGET' C BOB RICHARDS 800131 C**************************************************** C C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C P   ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINE IS USED TO C GET THE STATUS OF A LOGICAL UNIT (LU) WHICH C HAS ALREADY BEEN DETERMINED BY "DVSTS" 09580-16442. C --------------------- C C BRANCH AND MNEMONIC TABLE ENTRY C C STGET(I,IV), OV=XX, ENT=STGET, FIL=%STGET C C C C*************************************** C C C STGET(LU,ISTAT) C C WHERE: C C LU = LU OF WHICH STATUS WORD IS DESIRED. C ISTAT = RETURNED STATUS WORD. C C************************************************************ C DIMENSION IBUF(64),IERMS(5) DATA IDTN/67/,IBUFL/64/,IERMS/1,5,2HST,2HGE,2HT / C C CHECK INPUT PARAMETER C IF(LU .LT. 0 .OR. LU .GT. 63) GOTO 8000 C C GET STATUS TABLE C CALL TIM(IDTN,1,1,IBUF,IBUFL,IER) IF(IER .NE. 0) RETURN C C GET STATUS WORD C ISTAT = IBUF(LU) C C RETURN C RETURN C C ERROR C 8000 CALL ERROR(IERMS,IERMS(2)) RETURN C END END$ 2   09580-18449 2001 S C0122 &SFMWC              H0101  FTN4,L SUBROUTINE SFMWC(IUNIT,IFUN,ICWFM,MODE,IRES,IRATE), +09580-16449 REV.2001 791023 C C------------------------------------- C C HP 5342A MICROWAVE FREQUENCY COUNTER C C RELOCATABLE 09580-16449 C SOURCE 09580-18449 C C T. KONDO 790727 C BOB RICHARDS 791023 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C v ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICES ARE USED C TO PROGRAM THE HP 5342A MICROWAVE FREQUENCY COUNTER C C HARDWARE REQUIRED: C ------------------ C A. HP 5342A C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C SFMWC(I,I,I,I,I,I), OV=XX, ENT=SFMWC, FIL=%SFMWC C OSMWC(I,I,I,R,R), OV=XX, ENT=OSMWC, FIL=%SFMWC C RDMWC(I,RV,RV), OV=XX, ENT=RDMWC, FIL=%SFMWC C C FOR OPTION 002: C RDMWC(I,RV,RV,RV), OV=XX, ENT=RDMWC, FIL=%SFMWC C C C C C------------------------------------ C C SUBROUTINE SFMWC(IUNIT,IFUN,ICWFM,MODE,IRES,IRATE) C C IUNIT = UNIT NUMBER C IFUNC = FUNCTION SELECT C 1 = 10HZ - 500MHZ C 2 = 500MHZ - 18GHZ C 3 = AMPLITUDE - OFF (OPT 002) C 4 = AMPLITUDE - ON (OPT 002) C 5 = CHECK MODE (75MHZ) C 6 = RESET COUNTER C C ICWFM = CW/FM MODE C 1 = CW C 2 = FM C C MODE = AUTO/MANUAL C 1 = AUTO C 2 = MANUAL (1 MHZ - 17999 MHZ) C C IRES = RESOLUTION C 0 = 1 HZ C 1 = 10 HZ C 2 = 100 HZ C 3 = 1 KHZ C 4 = 10 KHZ C 5 = 100 KHZ C 6 = 1 MHZ C C IRATE = SAMPLE RATE C 1 = FRONT PANEL SAMPLE RATE C  2 = HOLD C 3 = FAST SAMPLE (NO DELAY) C 4 = SAMPLE THEN HOLD C C NOTE: THE HPIB BASIC CALL "TRIGR(I)" MUST BE USED C WHEN EVER IRATE = 2. FOR EXAMPLE: C C 10 CALL SFMWC(1,2,1,1,3,2) C 20 WAIT (1000) C 30 LET I = ISN(0) C 40 LET L = LUDV(I,68,1) C 50 CALL TRIGR(L) C 60 CALL RDMWC(1,D1,D2) C 70 PRINT D1,D2 C 80 END C C------------------------------------------------------- C C C SUBROUTINE OSMWC(IUNIT,IFUNC,IOFON,OFFS1,OFFS2) C C IUNIT = UNIT NUMBER C IFUNC = FUNCTION C 1 = FREQUENCY C 2 = AMPLITUDE C C IOFON = OFFSET ON/OFF C 0 = OFF C 1 = ON C 2 = AUTOMATIC OFFSET C 3 = RESET C C OFFS1 = OFFSET VALUE C +- MHZ OR +- DB C OFFS2 = OFFSET VALUE C +- HZ C C C SUBROUTINE RDMWC(IUNIT,DAT1,DAT2,DAT3) C C IUNIT = UNIT NUMBER C DAT1 = MEASURED FREQUENCY (XXXXX.E+6 HZ) C DAT2 = MEASURED FREQUENCY (HZ) C DAT3 = AMPLITUDE C C C ----------------------------------- DIMENSION IERMS(5) DATA IDTN / 68 / DATA IERMS / 10,5,2HSF,2HMW,2HC / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 5342A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XFMWC(LU1,LUIB,IERMS,IUNIT,IFUN,ICWFM,MODE,IRES,IRATE) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE OSMWC(IUNIT,IFUN,IOFON,OFF1,OFF2), +09580-16449 REV.2001 791023 DIMENSION IERMS(5) DATA IDTN / 68 / DATA IERMS / 10,5,2HOS,2HMW,2HC / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 5342A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XSMWC(LU1,LUIB,IERMS,IUNIT,IFUN,IOFON,OFF1,OFF2) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE RDMWC(IUNIT,DAT1,DAT2,DAT3), +9580-16449 REV.2001 791023 DIMENSION IERMS(5) DATA IDTN / 68 / DATA IERMS / 10,5,2HRD,2HMW,2HC / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP 5342A LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IUNIT) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XDMWC(LU1,LUIB,IERMS,DAT1,DAT2) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XFMWC(LU1,LUIB,IERMS,IUNIT,IFUNC,ICWFM,MODE,IRES, +IRATE),09580-16449 REV.2001 791023 DIMENSION IERMS(5) DIMENSION IREG(2),IOBUF(10),NMBR(5) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEGUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB. C LU1 = LU # OF HP5342A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQj ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C C CHECK PARAMETERS C IF(IFUNC.LT.1.OR.IFUNC.GT.6)GOTO 9900 IF(ICWFM.LT.1.OR.ICWFM.GT.2)GOTO 9900 IF(MODE.LT.0.OR.MODE.GT.17999)GOTO 9900 IF(IRES.LT.0.OR.IRES.GT.6)GOTO 9900 IF(IRATE.LT.1.OR.IRATE.GT.4)GOTO 9900 C IF(IFUNC.NE.6)GOTO 110 IOBUF = 2HRE NCHAR = 1 GOTO 2000 C 110 IOBUF = 2HAM IF(IFUNC.EQ.3.OR.IFUNC.EQ.4)GO TO 130 IF(IFUNC.EQ.5)IOBUF = 2HSR IF(IFUNC.EQ.1.AND.ICWFM.EQ.1)IOBUF = 2HLC IF(IFUNC.EQ.2.AND.ICWFM.EQ.1)IOBUF = 2HHC IF(IFUNC.EQ.1.AND.ICWFM.EQ.2)IOBUF = 2HLF IF(IFUNC.EQ.2.AND.ICWFM.EQ.2)IOBUF = 2HHF C IF(IFUNC.EQ.1.OR.IFUNC.EQ.5)GOTO 120 IOBUF(2) = 2HAU IF(MODE.NE.0)GOTO 150 C IOBUF(3) = 2HSR IOBUF(4) = IOR((IRES+63B)*256,124B) IOBUF(5) = ((IRATE-1)+60B)*256 NCHAR = -9 GOTO 2000 C C CHECK MODE C 120 IOBUF(2) = 30400B NCHAR = -3 GOTO 2000 C C AMPLITUDE (OPT 002) OFF/ON C 130 IOBUF(2) = (60B - (IFUNC-3)) * 256 NCHAR = -3 GOTO 2000 C C MANUAL CENTER FREQUENCY C 150 IOBUF(2) = 2HSM IF(IFUNC.EQ.1)GOTO 9900 C IFREQ = MODE C C CONVERT TO ASCII C CALL CNUMD(IFREQ,NMBR) C C FIND NUMBER OF DIGITS C NXM = 6 DO 170 I = 1 , 3 IDU = IAND(NMBR(I),177400B) IDL = IAND(NMBR(I),377B) IF(IDU.EQ.20000B)NXM = NXM - 1 IF(IDL.EQ.40B)NXM = NXM - 1 170 CONTINUE C IF(NXM.GT.4)GOTO 200 IF(NXM.LT.3)NMBR = NMBR(3) IF(NXM.LT.3)NMBR(2) = 0 IF(NXM.LT.3)GOTO 200 NMBR = NMBR(2) NMBR(2) = NMBR(3) NMBR(3) = 0 C 200 IFLG = 1 NMBR(4) = 0 IF(NXM.EQ.2.OR.NXM.EQ.4)IFLG = 0 C INX = 3 HS IDX = 1 IF(IFLG.NE.0)IOBUF(INX) = IAND(NMBR,377B) * 256 IF(IFLG.EQ.0)IOBUF(INX) = NMBR 210 CONTINUE IF(NMBR(IDX+1).EQ.0)GOTO 250 IDX = IDX + 1 IF(IDX.GT.3)GOTO 250 IF(IFLG.NE.0)NMBR = IAND(NMBR(IDX),177400B) / 256 IF(IFLG.NE.0)IOBUF(INX) = IOR(IOBUF(INX),NMBR) INX = INX + 1 IF(IFLG.NE.0)IOBUF(INX) = IAND(NMBR(IDX),377B) * 256 IF(IFLG.EQ.0)IOBUF(INX) = NMBR(IDX) GOTO 210 C 250 CONTINUE IF(IFLG.NE.0)IOBUF(INX) = IOR(IOBUF(INX),105B) INX = INX + 1 IF(IFLG.EQ.0)IOBUF(INX) = 2HES IF(IFLG.NE.0)IOBUF(INX) = 2HSR INX = INX + 1 C C RESOLUTION C IF(IFLG.EQ.0)IOBUF(INX) = IOR(51000B,63B+IRES) IF(IFLG.NE.0)IOBUF(INX) = IOR((63B+IRES)*256,124B) INX = INX + 1 C C SAMPLE RATE C IF(IFLG.EQ.0)IOBUF(INX) = IOR(52000B,IRATE+57B) IF(IFLG.NE.0)IOBUF(INX) = (IRATE + 57B) * 256 NCHAR = INX IF(IFLG.EQ.0)GOTO 2000 C NCHAR = 2*(INX-1) + 1 NCHAR = -NCHAR C C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),NCHAR,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 GOTO 8000 9900 IERMS = 1 8000 IERMS(2)=5 IERMS(3)=2HSF IERMS(4)=2HMW IERMS(5)=2HC RETURN END C C SUBROUTINE XSMWC(LU1,LUIB,IERMS,IUNIT,IFUNC,IOFON,OFFS1,OFFS2), + 9580-16449 REV.2001 791023 C C IUNIT = UNIT NUMBER C IFUNC = FUNCTION C 1 = FREQUENCY C 2 = AMPLITUDE C C IOFON = OFFSET ON/OFF C 0 = OFF C 1 = ON C 2 = AUTOMATIC OFFSET C 3 = RESET C C  OFFS1 = OFFSET VALUE C +- MHZ OR +- DB C OFFS2 = OFFSET VALUE C +- HZ C DIMENSION IERMS(5) DIMENSION IREG(2),IBUFR(20),NMBR(6),IAR(6) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) C C CHECK PARAMETERS C IF(IFUNC.LT.1.OR.IFUNC.GT.2)GOTO 9900 IF(IOFON.LT.0.OR.IOFON.GT.3)GOTO 9900 C IBUFR = 2HRE INX = 1 IF(IOFON.EQ.3)GOTO 2000 C C OFFSET ON/OFF C IBUFR = 2HOM IF(IFUNC.EQ.2)IBUFR = 2HOB IBUFR(2) = 30000B INX = 2 IF(IOFON.EQ.0)GOTO 2000 C C AUTO OFFSET C IBUFR = 2HSO IF(IFUNC.EQ.1.AND.IOFON.EQ.2)IBUFR(2) = 2HMB IF(IFUNC.EQ.2.AND.IOFON.EQ.2)IBUFR(2) = 2HBB IF(IOFON.EQ.2)GOTO 2000 C C SET FREQ/AMPL OFFSET C IBUFR(2) = 2H1S IF(IFUNC.EQ.1)IBUFR(3) = 2HOM IF(IFUNC.EQ.2)IBUFR(3) = 2HOB INX = 4 C C SET OFFSET VALUE C VAL1 = OFFS1 IF(VAL1.LT.0.0)VAL1 = -OFFS1 IFLG = 0 IF(IFUNC.EQ.2)GOTO 300 C C FREQUENCY C VAL2 = OFFS2 IF(VAL2.LT.0.0)VAL2 = -OFFS2 IF(VAL1.GT.99999.)GOTO 9900 IF(VAL2.GT.999999.)GOTO 9900 ISIGN = 0 IF(OFFS1.LT.0.0.OR.OFFS2.LT.0.0)ISIGN = 1 INX = 4 IF(ISIGN.EQ.0)IBUFR(INX) = 20000B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C CONVERT 'OFFS1' MHZ VALUE TO 5 ASCII DIGITS C IF(VAL1.EQ.0.0)GOTO 200 CALL GENF2(VAL1,NMBR) IF(NMBR.EQ.-1)GOTO 9900 C C FIND NUMBER OF DIGITS C NXM = 2 IF(NMBR.EQ.3.OR.NMBR.EQ.4)NXM = 3 IF(NMBR.LT.3)NXM = 4 IF(ISIGN.EQ.0)GOTO 180 C DO 175 I=NXM,4 IVAH = IAND(NMBR(I),177400B) / 256 IVLO = IAND(NMBR(I),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 175 IBUFR(INX) = IVLO C GOTO 200 C 180 CONTINUE DO 190 J = NXM, 4 IBUFR(INX) = NMBR(J) 190 INX = INX + 1 C IBUFR(INX) =27000B IF(VAL2.EQ.0.0)GOTO 20Y00 IFLG = 1 GOTO 210 C C C CONVERT 'OFFS2' HZ VALUE TO 6 ASCII DIGITS C 200 IF(VAL2.EQ.0.0)GOTO 2000 C C INSERT DECIMAL POINT C IBUFR(INX) = IOR(IBUFR(INX),56B) INX = INX + 1 IFLG = 0 210 CALL GENF2(VAL2,NMBR) IF(NMBR.EQ.-1)GOTO 9900 C C IF(IFLG.EQ.0)GOTO 260 C DO 250 J = 2 , 4 IVAH = IAND(NMBR(J),177400B) / 256 IVLO = IAND(NMBR(J),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 250 IBUFR(INX) = IVLO GOTO 2000 C 260 CONTINUE DO 270 J = 2, 4 IBUFR(INX) = NMBR(J) 270 INX = INX + 1 C INX = INX - 1 GOTO 2000 C C AMPLITUDE C 300 IF(VAL1.GT.99.9)GOTO 9900 ISIGN = 0 IF(OFFS1.LT.0.0)ISIGN = 1 IF(ISIGN.EQ.0)IBUFR(INX) = 25400B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C CONVERT AMPLITUDE OFFSET VALUE TO ASCII DIGITS C IVAL = VAL1 VAL2 = IVAL CALL GENF2(VAL2,NMBR) IF(NMBR.EQ.-1)GOTO 9900 C NVAL = (VAL1-VAL2) * 10.0 IVHI = IAND(NMBR(4),177400B) / 256 IVLO = IAND(NMBR(4),377B) IF(IVAL.LT.10)GOTO 310 C IBUFR(INX) = IOR(IBUFR(INX),IVHI) INX = INX + 1 IBUFR(INX) = IOR(IVLO*256,56B) INX = INX + 1 IBUFR(INX) = (60B+NVAL) * 256 GOTO 2000 C 310 CONTINUE IF(IVLO.EQ.60B)IBUFR(INX) = IOR(IBUFR(INX),56B) IF(IVLO.EQ.60B)GOTO 320 IBUFR(INX) = IOR(IBUFR(INX),IVLO) INX = INX + 1 IBUFR(INX) = IOR(27000B,60B+NVAL) GOTO 2000 C 320 INX = INX + 1 IBUFR(INX) = (NVAL+60B)*256 C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C IVAL = IAND(IBUFR(INX),377B) NUM = INX IF(IVAL.EQ.0)NUM = -(2 * INX - 1) C CALL REIO(100002B,LU1,IBUFR(1),NUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) ? IF(IB .LT. 0) GOTO 8500 C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 GOTO 8000 9900 IERMS = 1 8000 IERMS(2)=5 IERMS(3)=2HOS IERMS(4)=2HMW IERMS(5)=2HC RETURN END C C SUBROUTINE XDMWC(LU1,LUIB,IERMS,DAT1,DAT2,DAT3), +09580-16449 REV.2001 791023 C DIMENSION IERMS(5),IREG(2),IOBUF(4) DIMENSION IBUF(20),IVAL(6) EQUIVALENCE (REG,IREG,IA),(IREG(2),IB) DATA IOBUF /2HST,2H1 / C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C INUM = -3 CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C READ DATA C CALL REIO(100001B,LU1,IBUF,18,IDUMY,0) GOTO 9000 72 CALL ABREG(IA,IB) IF(IB.LT.0)GOTO 8500 C C CHECK POSITION OF BUFFR C IFLD = IAND(IBUF,377B) ISTRT = 2 IF(IFLD.EQ.40B)ISTRT = 3 C IDX = 1 DO 2500 I = ISTRT, 5 IDX = IDX + 1 IVAL(IDX) = IBUF(I) IF(ISTRT.EQ.3)GOTO 2500 IVAL(IDX) = IAND(IVAL(IDX),377B) * 256 LCHR = IAND(IBUF(I+1),177400B) / 256 IVAL(IDX) = IOR(IVAL(IDX),LCHR) 2500 CONTINUE C C 2520 IVAL(5) = 2HE+ IVAL(6) = 2H06 IVAL = 10 LDG = IAND(IVAL(2),177400B) / 256 IF(LDG.NE.40B)GOTO 2530 LDG = IAND(IVAL(2),377B) IVAL(2) = IOR(25400B,LDG) 2530 IREG = A2F(IVAL,1,IVAL,DAT1) IF(IREG.LT.0)GOTO 8400 C C CONVERT HZ C IDX = 1 DO 2550 I = 6 , 9 IDX = IDX + 1 2550 IVAL(IDX) = IBUF(I) C IF(ISTRT.EQ.2)GOTO 2570 C DO 2560 I = 2 , 4 IVAL(I) = IAND(IVAL(I),377B) * 256 LDG = IAND(IVAL(I+1),177400B) / 256 2560 IVAL(I) = IOR(IVAL(I),LDG) C 2570 IVAL = 6 IVAL(5) = 2H ֩ IREG = A2F(IVAL,1,IVAL,DAT2) IF(IREG.LT.0)GOTO 8400 DAT3 = 0.0 IF(IB.LT.12)GOTO 5000 C C AMPLITUDE (OPTION 002) C IDX = 1 IF(ISTRT.EQ.3)GOTO 2590 C DO 2580 I=12, 15 IDX = IDX + 1 IVAL(IDX) = IAND(IBUF(I),377B) * 256 LDG = IAND(IBUF(I+1),177400B) / 256 2580 IVAL(INX) = IOR(IVAL(IDX),LDG) C GOTO 2700 C 2590 CONTINUE C DO 2595 I=13, 16 IDX = IDX + 1 2595 IVAL(IDX) = IBUF(I) C C 2700 IVAL = 8 IREG = A2F(IVAL,1,IVAL,DAT3) IF(IREG.LT.0)GOTO 8400 C C RETURN C 5000 IERMS=0 RETURN C C ERROR EXIT C 8400 IERMS = 4 GOTO 8000 C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HRD IERMS(4)=2HMW IERMS(5)=2HC RETURN END C SUBROUTINE GENF2(FNUM,IFS),09580-16449 REV.2001 791023 C C C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GE. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1 RETURN C C FIND "E" IF PRESENT C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IEB@ 0 C IUNIT = UNIT NUMBER OF HP5355A (MUST BE SAME C AS UNIT NUMBER OF ASSOCIATED HP 5345A) C C MODE = CW/PULSE MEASUREMENT MODE C 0 = CW (REF NOTE 2 BELOW) C 1 = PULSE (REF NOTE 3 BELOW) C C IPORT = LOW/HIGH FREQUENCY INPUT PORT C 0 = LOW (.4 - 1.6 GHZ BNC CONNECTOR) C 1 = HIGH (1.5 - 26.5 GHZ 'RF HEAD INPUT') C C ISPFN = SPECIAL FUNCTION SELECT C 0 = NORMAL CALIBRATION (PULSE MODE), C = NORMAL FM TOLERANCE (CW MODE) C 1 = CONTINUOUS CALIBRATION (PULSE MODE), C = HIGH FM TOLERANCE (CW MODE) C C ISARA = SAMPLE RATE C 0 = SELECTS HP5345A SAMPLE RATE C 1 = HOLD (REF NOTE 4 BELOW) C C C NOTE: 1. POWER-UP (PRESET) CONDITIONS ARE AS FOLLOWS: C A. SAMPLE RATE PRESET TO HP 5345A SAMPLE RATE. C B. IPORT PRESET TO 'RF HEAD INPUT' (1.5 - 26.5 GHZ). C C. MANUAL FREQUENCY MODE PRESET TO AUTO (MANUAL OFF). C D. MODE PRESET TO CW. REF NOTE 2. C E. OFFSET MODE PRESET TO NO (0) OFFSET. C F. ISPFN PRESET TO NORMAL FM TOLERANCE (CW) AND C NORMAL CALIBRATION (PULSE). C C 2. FOR CW MODE, THE HP5345A MUST BE PROGRAMMED C FOR INTERNAL GATE MODEN (IGATE = 1 IN CALL C45SU). C C 3. FOR PULSE MODE, THE HP5345A MUST BE PROGRAMMED C FOR EXTERNAL GATE MODE (IGATE = 2 IN CALL C45SU). C C C 4. THE HP5345A MUST BE PROGRAMMED FOR ANY PROGRAMMABLE C SAMPLE RATE OTHER THAN 'HOLD'. C C -------------------- C PROGRAMMING EXAMPLES C -------------------- C C 1. IN THE FOLLOWING EXAMPLE, THE HP 5345A ELECTRONIC COUNTER C UNIT 1 (IUNIT = 1) IS FIRST PROGRAMMED (LINE 10) FOR PLUG-IN C FUNCTION (IFUNC = 1), 100 MSEC COUNTER GATE TIME (IRGE = 7), C AUTOMATIC DIGIT DISPLAY POSITION (IPOS = 11), MINIMUM SAMPLE C RATE (ISAM = 1), AND INTERNAL GATE MODE (IGATE = 1). C C NEXT, THE ASSOCIATED HP5355A AUTOMATIC FREQUENCY CONVERTER, C UNIT NO. 1 (IUNIT = 1) IS PROGRAMMED FOR CW MEASUREMENT MODE C (MODE = 0), 'RF HEAD INPUT' (IPORT = 1), NORMAL FM TOLERANCE C (ISPFN = 0), AND WHATEVER SAMPLE RATE PROGRAMMED FOR THE C HP 5345A ELECTRONIC COUNTER (ISARA = 0). C C LINE 30 PROGRAMS THE HP5345A/5355A (IUNIT(HP 5345A) = 1) C TO INITIATE A MEASUREMENT AND WAIT FOR COMPLETION, THEN C RETURN THE MEASUREMENT DATA (MODE = 0). DATA RETURNED IN C 'D1' IS THE VALUE READ IN REAL REPRESENTATION (THE SIX MOST C SIGNIFICANT DIGITS). 'D2' CONTAINS THE LEAST SIGNIFICANT C DIGITS IF THE MEASURED VALUE IS GREATER THAN SIX SIGNIFICANT C DIGITS. C C 10 CALL C45SU(1,1,7,11,1,1) C 20 CALL C45HF(1,0,1,0,0) C 30 CALL C45RD(1,0,D1,D2) C C C ---------------- C PROGRAM CODE SET C ---------------- C C PROGRAM C FUNCTION CODE C -------- ------- C C MODE =0 = CP1 C =1 = CP2 C C IPORT =0 = IS1 C =1 = IS2 C C ISPFN =0 = SF0 C =1 = SF1 C C ISARA =0 = HD0 C 1 = HD1 C C C ---------------- C DIMENSION ARRAYS C ---------------- C DIMENSION IDATA(6),KPORT(1),KS`AMP(3),IERMS(5),IREG(2) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C --------------------- C INITIALIZE ERROR CODE C --------------------- C IERMS = 0 C C ---------------- C CHECK PARAMETERS C ---------------- C IF(MODE.LT.0.OR.MODE.GT.1)GO TO 9100 IF(IPORT.LT.0.OR.IPORT.GT.1)GO TO 9100 IF(ISPFN.LT.0.OR.ISPFN.GT.1)GO TO 9100 IF(ISARA.LT.0.OR.ISARA.GT.1)GO TO 9100 C C C -------------------------------------------------------- C SET DEVICE TYPES FOR USE IN SUBSEQUENT TIM CALLS C -------------------------------------------------------- C DATA IDT2/6/ DATA IDTN/71/ C C C -------------------------------------------------------- C ENTER HP 5355A SAMPLE RATE DATA (KSAMP(3)) AND INPUT PORT C DATA (KPORT(1)) IN CONFIGURATION TABLES. C -------------------------------------------------------- C CALL TIM(IDT2,IUNIT,1,KSAMP,3,JER) IF(JER.NE.0) RETURN IF(ISARA.EQ.0) KSAMP(3) = 1 IF(ISARA.EQ.1)KSAMP(3) = 2 CALL TIM(IDT2,IUNIT,2,KSAMP,3,JER) IF(JER.NE.0) RETURN CALL TIM(IDTN,IUNIT,1,KPORT,1,KER) IF(KER.NE.0) RETURN IF(IPORT.EQ.0)KPORT(1) = 1 IF(IPORT.EQ.1)KPORT(1) = 2 CALL TIM(IDTN,IUNIT,2,KPORT,1,KER) IF(KER.NE.0) RETURN C C ------------------------ C PRESET HP5355A FUNCTIONS C ------------------------ C C IDATA(1) = 2HPR C C ---------------- C SET HP5355A MODE C ---------------- C IDATA(1)=2HCP IF(MODE.EQ.0)IDATA(2) = 2H1I IF(MODE.EQ.1)IDATA(2) = 2H2I C C ---------------------- C SET HP5355A INPUT PORT C ---------------------- C IF(IPORT.EQ.0)IDATA(3) = 2HS1 IF(IPORT.EQ.1)IDATA(3) = 2HS2 C C ----------------------------- C SET HP5355A SPECIAL FUNCTIONS C ----------------------------- C IDATA(4) = 2HSF IF(ISPFN.EQ.0)IDATA(5) = 2H0H IF(ISPFN.EQ.1)IDATA(5) = 2H1H C C C ------------------------ C SET HP 5355A SAMPLE RATE C ------------------<$"------ C IF(ISARA.EQ.0)IDATA(6) = 2HD0 IF(ISARA.EQ.1)IDATA(6) = 2HD1 C C ------------------------- C INITIALIZE REMOTE PROGRAM C ------------------------- C 100 CALL EXEC(100003B,1600B+LU0) GO TO 8000 150 CALL ABREG(IA,IB) IF(IB.LT.0)GO TO 990 C ---------------------------------------------- C PROGRAM HP 5355A AUTOMATIC FREQUENCY CONVERTER C ---------------------------------------------- C 200 CALL REIO(100002B,LU1,IDATA,6,IDUMY,0) GO TO 8000 300 CALL ABREG(IA,IB) IF (IB.LT.0)GO TO 990 C C ------------------------- C RETURN TO CALLING PROGRAM C ------------------------- C RETURN C C ------------ C ERROR RETURN C ------------ C 8000 IERMS = 9 GO TO 9900 9100 IERMS = 1 GO TO 9900 990 IERMS = IAND(IREG,377B) + 11 9900 IERMS(2) = 5 IERMS(3) = 2HC4 IERMS(4) = 2H5H IERMS(5) = 2HF RETURN END END$ <$  09580-18462 2026 S C0122 &C45OF              H0101 arFTN4,L SUBROUTINE C45OF(IUNIT,IOFSET,OFMHZ,OFHZ), +09580-16462 REV.2026 800130 C C ------------------------------------------------------------ C THIS DEVICE SUBROUTINE SETS UP THE HP5355A C AUTOMATIC FREQUENCY CONVERTER OFFSET FREQUENCY C ENTRY FUNCTIONS. C C A CALL TO THIS DEVICE SUBROUTINE MUST BE PRECEEDED BY A CALL C TO C45SU, TO SET UP THE ASSOCIATED HP 5345A ELECTRONIC COUNTER C AND A CALL TO C45HF TO SET UP ALL OTHER HP 5355A AUTOMATIC C FREQUENCY CONVERTER FUNCTIONS. C ------------------------------------------------------------ C C------------------------------------------------------------- C C RELOC. 09580-16462 C SOURCE 09580-18462 C C R.WRAY 800130 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO C ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN C CONSENT OF THE HEWLETT PACKARD COMPANY. C C------------------------------------------------------------- C C BRANCH AND MNEMONIC TABLES ENTRIES: C ---------------------------------- C C C45OF(I,I,R,R) OV=XX, ENT=C45OF, FIL=%C45OF C C CONFIGURATION TABLE DATA: C ------------------------ C C NO ENTRY REQUIRED C C--------------------------------------------------------------- C C ------------------------------------------------- C SET DIMENSIONS AND DATA FOR IERMS (ERROR MESSAGE) C ------------------------------------------------- C DIMENSION IERMS(5) DATA IERMS/10,5,2HC4,2H5O,2HF / C C C ----------------------------------- C SET DEVICE TYPE NUMBER FOR HP 5355A C ----------------------------------- C DATA IDTN/71/ C C C ---------- C ERROR CHECK C ----------- C IERMS = 10 C C C ------------------ C GET STATION NUMBER C ------------------ aC ISTN = ISN(DUMMY) C C C ------------------------ C GET LU NUMBER OF HP5355A C ------------------------ C LU1 = LUDV(ISTN,IDTN,IUNIT) C C C ----------------------------------------- C GET LU NUMBER OF HP-IB I/O INTERFACE CARD C ----------------------------------------- C LU0 = IBLU0(LU1) C C C ---------- C ERROR CHECK C ----------- C IF(LU1.LE.0.OR.LU0.LE.0)GO TO 800 C C C ----------------------------------- C CALL MAIN BODY OF DEVICE SUBROUTINE C ----------------------------------- C 10 CALL X45OF(LU0,LU1,IERMS,IUNIT,IOFSET,OFMHZ,OFHZ) C C C ----------- C ERROR CHECK C ----------- C IF(IERMS)800,20,800 C 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C SUBROUTINE X45OF(LU0,LU1,IERMS,IUNIT,IOFSET,OFMHZ, +OFHZ), 09580-16462 REV.2026 800130 C C C ------------------------------------------------------ C CALL X45OF(LU0,LU1,IERMS,IUNIT,IOFSET,OFMHZ,OFHZ) C ------------------------------------------------------ C WHERE: C LU0 = LU NUMBER OF HP-IB I/O INTERFACE CARD C LU1 = LU NUMBER OF HP5355A AUTO FREQ CONVERTER C C IERMS = 5-ELEMENT INTEGER ARRAY, IN WHICH C IERMS(1) = ERROR CODE: C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HP-IB: C C 9 = I/O CALL REJECTED C 10 = LU NO. NOT ASSIGNED TO HP-IB DEVICE C OR TO STATION C 11 = DMA INPUT REQUEST PREMATURELY C TERMINATED C 12 = I/O DEVICE TIME OUT C 13 = IFC (INTERFACE CLEAR) DETECTED C DURING I/O REQUEST C 14 = SRQ SERVICE ABORTED C Ne 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL,NO NEW C DEVICE MAY BE ADDED ON LINE C C IERMS(2) = CHARACTER COUNT OF MNEMONIC NAME C IERMS(3-5) = PACKED ASCII OF MNEMONIC NAME IF C IERMS(1) > 0 C IUNIT = UNIT NUMBER OF HP5355A (MUST BE SAME C AS UNIT NUMBER OF ASSOCIATED HP 5345A) C C IOFSET = OFFSET FREQUENCY ENTRY MODE C 0 = NO OFFSET C 1 = APPLY OFFSET FREQUENCY C C OFMHZ = OFFSET FREQUENCY ENTRY - MEGAHERTZ C -26500 TO 00000 TO +26500(REF NOTES C 1 AND 2 BELOW) C C OFHZ = OFFSET FREQUENCY ENTRY, +- HERTZ C 000000 TO 999999 C C C NOTES: 1. OFFSET FREQUENCY ENTERED MAY BE EITHER POSITIVE C OR NEGATIVE. THE FREQUENCY READ AND DISPLAYED C WILL BE THE ACTUAL MEASURED FREQUENCY PLUS OR C MINUS THE OFFSET FREQUENCY ENTERED BY THIS DEVICE C SUBROUTINE. C C 2. EACH OF THE OFFSET FREQUENCY PARAMETERS MUST BE C PROGRAMMED BY ENTERING ASCII NUMBERS. FOR EXAMPLE, C TO PROGRAM AN OFFSET IN THE MEGAHERTZ RANGE, THE C 'OFMHZ' PARAMETER WOULD BE ENTERED USING ANY C DESIRED FREQUENCY IN THE RANGE OF -26500 TO +26500. C TRAILING ZEROS ARE REQUIRED, BUT LEADING ZEROS C ARE NOT REQUIRED. IF A NEGATIVE OFFSET IS REQUIRED, C THE ENTERED NUMBER MUST BE PREFIXED BY A MINUS(-) C SIGN. A PLUS (+) SIGN NEED NOT BE USED TO INDICATE C POSITIVE OFFSET. IF NO OFFSET IN THE MHZ RANGE IS C REQUIRED, A ZERO (0) IS ENTERED FOR 'OFMHZ'. C C  ANY OFFSET FROM -999999 TO +999999 HZ MAY BE PRO- C GRAMMED BY ENTERING A NUMBER FOR THE OFMHZ C PARAMETER AND THEN THE DESIRED NUMBER FOR THE C OFHZ PARAMETER. NEITHER LEADING ZEROS NOR THE C PLUS SIGN (+) IS REQUIRED. AS IN THE OFMHZ PARA- C METER, A MINUS (-) PREFIX IS REQUIRED FOR A NEG- C ATIVE OFFSET (ONLY IF 'OFMHZ' = 0), AND TRAILING C ZEROS ARE REQUIRED. C ---------------- C PROGRAM CODE SET C ---------------- C C PROGRAM C FUNCTION CODE C -------- ------- C C IOFSET =0 = OT0 C =1 = OT1 C C OFMHZ) C OFHZ) = OF [FLOATING POINT] C C C ---------------- C DIMENSION ARRAYS C ---------------- C DIMENSION IERMS(5),IREG(2) DIMENSION NMBR(6),IBUFR(21),IAR(6) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C --------------------- C INITIALIZE ERROR CODE C --------------------- C IERMS = 0 C C C --------------- C SET DEVICE TYPE C --------------- C DATA IDTN/71/ C C C ---------------- C CHECK PARAMETERS C ---------------- C IF(IOFSET.LT.0.OR.IOFSET.GT.1)GO TO 9100 C C C ---------------------------------- C SET HP 5355A OFFSET FREQUENCY MODE C ---------------------------------- C DO 50 ICNT = 1,21 IBUFR(ICNT) = 2H 50 CONTINUE C C OFFSET ON-OFF C ------------- C IBUFR = 2HOT IBUFR(2) = 30000B INX = 2 IF(IOFSET.EQ.0)GOTO 2000 C C SET FREQ OFFSET C --------------- C IBUFR(2) = 2H1O IBUFR(3) = 2HF INX = 4 C C SET OFFSET VALUE C ---------------- C VAL1 = OFMHZ IF(VAL1.LT.0.0)VAL1 = -OFMHZ IFLG = 0 C C FREQUENCY C --------- C VAL2 = OFHZ IF(VAL2.LT.0.0)VAL2 = -OFHZ IF(VAL1.GT.99999.)GOTO 9100 IF(VAL2.GT.999999.)GOTO 9100 ISIGN = 0 IF(OFMHZ.LT.0.0.ORFD.OFHZ.LT.0.0)ISIGN = 1 INX = 4 IF(ISIGN.EQ.0)IBUFR(INX) = 20000B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C CONVERT 'OFMHZ' MHZ VALUE TO 5 ASCII DIGITS C ------------------------------------------- C IF(VAL1.EQ.0.0)GOTO 500 CALL GENFP(VAL1,NMBR) IF(NMBR.EQ.-1)GOTO 9100 C C FIND NUMBER OF DIGITS C --------------------- C NXM = 2 IF(NMBR.EQ.3.OR.NMBR.EQ.4)NXM = 3 IF(NMBR.LT.3)NXM = 4 IF(ISIGN.EQ.0)GOTO 480 C DO 475 I=NXM,4 IVAH = IAND(NMBR(I),177400B) / 256 IVLO = IAND(NMBR(I),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 475 IBUFR(INX) = IVLO C GOTO 500 C 480 CONTINUE DO 490 J = NXM, 4 IBUFR(INX) = NMBR(J) 490 INX = INX + 1 C IBUFR(INX) =27000B IF(VAL2.EQ.0.0)GOTO 2000 IFLG = 1 GOTO 510 C C C CONVERT 'OFHZ' HZ VALUE TO 6 ASCII DIGITS C ----------------------------------------- C 500 IF(VAL2.EQ.0.0)GOTO 2000 C C INSERT DECIMAL POINT C -------------------- C IBUFR(INX) = IOR(IBUFR(INX),56B) INX = INX + 1 IFLG = 0 510 CALL GENFP(VAL2,NMBR) IF(NMBR.EQ.-1)GOTO 9100 C C IF(IFLG.EQ.0)GOTO 560 C DO 550 J = 2 , 4 IVAH = IAND(NMBR(J),177400B) / 256 IVLO = IAND(NMBR(J),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 550 IBUFR(INX) = IVLO GOTO 2000 C 560 CONTINUE DO 570 J = 2, 4 IBUFR(INX) = NMBR(J) 570 INX = INX + 1 C INX = INX - 1 GOTO 2000 C 600 IF(VAL1.GT.99.9)GOTO 9100 ISIGN = 0 IF(OFMHZ.LT.0.0)ISIGN = 1 IF(ISIGN.EQ.0)IBUFR(INX) = 25400B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C 620 INX = INX + 1 IBUFR(INX) = (NVAL+60B)*256 C C ------------- C REMOTE ENABLE C ------------- C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 8000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 990 C C SEND OUTPUT BUFFER C ------------------ C IVAL = IAND(IBUFR(INX),377B) IF(IVAL.EQ.0) IBUFR(INX) = IOR(IBUFR(INX),105B) IF(IVAL.EQ.0) IBUFR(INX+1) = 33000B INX = INX+1 IF(IVAL.NE.0)IBUFR(INX) = 42466B NUM = INX IF(IVAL.EQ.0)NUM = -(2 * INX - 1) C CALL REIO(100002B,LU1,IBUFR(1),NUM,IDUMY,0) GOTO 8000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 990 C C RETURN C ------ C C IERMS=0 RETURN C C ERROR EXIT C ---------- C 990 IERMS=IAND(IA,377B)+11 GOTO 9900 8000 IERMS=9 GOTO 9900 9100 IERMS = 1 9900 IERMS(2)=5 IERMS(3)=2HC4 IERMS(4)=2H5O IERMS(5)=2HF RETURN END C C C C ------------------------------------------------------ SUBROUTINE GENFP(FNUM,IFS),09580-16462 REV.2026 800130 C ------------------------------------------------------ C C C ------------------------------------------------------ C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C ------------------------------------------------------ C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GE. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C ---------------- C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1 RETURN C C FIND "E" IF PRESENT C ------------------- C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 ,[ IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IENUM = IENUM - 60B GO TO 160 150 CONTINUE IENUM = 0 C C ------------------------------------------ C IENUM CONTAINS INTEGER VALUE OF "E" (0-6). C NOW UNPACK CHARACTERS. C ------------------------------------------ C 160 DO 200 I=1,5 N=(I*2)-1 JFS(N) = (IAND(IFS(I+1),177400B))/256 JFS(N) = IAND(JFS(N),377B) JFS(N+1) = IAND(IFS(I+1),377B) 200 CONTINUE IF (IEFLG .NE. 1) GO TO 210 JFS(1) = 61B JFS(2) = 40B IENUM = IENUM - 1 C C LOCATE THE DECIMAL POINT C ------------------------ C 210 DO 220 ID=1,10 IF (JFS(ID) .EQ. 56B .OR. JFS(ID) .EQ. 40B) GO TO 230 IF (JFS(ID) .EQ. 105B) GO TO 225 220 CONTINUE IFS(1) = -1 RETURN C C VALID NUMBER BUT NO DECIMAL POINT C --------------------------------- C 225 JFS(ID+1) = 60B C C DELETE DECIMAL POINT, ADJUST E VALUE C ------------------------------------ C 230 DO 250 I=ID,9 JFS(I) = JFS(I+1) IF (JFS(I) .EQ. 105B .OR. JFS(I) .EQ.40B) GO TO 240 GO TO 250 240 DO 245 J=I,10 JFS(J) = 60B 245 CONTINUE GO TO 260 250 CONTINUE C C SHIFT CHARACTERS AS NECESSARY C ----------------------------- C 260 ISHFT = 7 - (ID+IENUM) IF (ISHFT .EQ. 0) GO TO 300 DO 280 I=10,ISHFT+1,-1 JFS(I) = JFS(I-ISHFT) 280 CONTINUE C C ADD LEADING ZEROES C ------------------ C DO 290 I=1,ISHFT JFS(I) = 60B 290 CONTINUE C C PACK CHARACTERS C --------------- C 300 DO 310 I=1,3 J = (I*2)-1 JFS(J) = JFS(J)*256 JFS(J) = IAND(JFS(J),177400B) JFS(J+1) = IAND(JFS(J+1),377B) IFS(I+1) = JFS(J)+JFS(J+1) 310 CONTINUE C C LOAD TRAILING BLANKS .0.*C -------------------- C DO 320 I=5,6 IFS(I) = 20040B 320 CONTINUE C C C RETURN END END$ rv0  09580-18463 2026 S C0122 &C45MF              H0101 `rFTN4,L SUBROUTINE C45MF(IUNIT,MFMO,MFMHZ,HZMF), +09580-16463 REV.2026 800130 C C ------------------------------------------------------------ C THIS DEVICE SUBROUTINE SETS UP THE HP5355A C AUTOMATIC FREQUENCY CONVERTER MANUAL FREQUENCY C ENTRY FUNCTIONS. C C A CALL TO THIS DEVICE SUBROUTINE MUST BE PRECEEDED BY A CALL C TO C45SU, TO SET UP THE ASSOCIATED HP 5345A ELECTRONIC COUNTER C AND A CALL TO C45HF TO SET UP ALL OTHER HP 5355A AUTOMATIC C FREQUENCY CONVERTER FUNCTIONS. C ------------------------------------------------------------ C C------------------------------------------------------------- C C RELOC. 09580-16463 C SOURCE 09580-18463 C C R.WRAY 800130 C C TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY C MATERIAL OF THE HEWLETT PACKARD COMPANY. C C (C) COPYRIGHT HEWLETT PACKARD COMPANY 1980. C ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM C MAY BE PHOTOCOPIED, REPRODUCED, OR TRANSLATED TO C ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR WRITTEN C CONSENT OF THE HEWLETT PACKARD COMPANY. C C------------------------------------------------------------- C C BRANCH AND MNEMONIC TABLES ENTRIES: C ---------------------------------- C C C45MF(I,I,I,R) OV=XX, ENT=C45MF, FIL=%C45MF C C CONFIGURATION TABLE DATA: C ------------------------ C C NO ENTRY REQUIRED C C--------------------------------------------------------------- C C ------------------------------------------------- C SET DIMENSIONS AND DATA FOR IERMS (ERROR MESSAGE) C ------------------------------------------------- C DIMENSION IERMS(5) DATA IERMS/10,5,2HC4,2H5M,2HF / C C C ----------------------------------- C SET DEVICE TYPE NUMBER FOR HP 5355A C ----------------------------------- C DATA IDTN/71/ C C C ---------- C ERROR CHECK C ----------- C IERMS = 10 C C C ------------------ C GET STATION NUMBER C ------------------ C 3 ISTN = ISN(DUMMY) C C C ------------------------ C GET LU NUMBER OF HP5355A C ------------------------ C LU1 = LUDV(ISTN,IDTN,IUNIT) C C C ----------------------------------------- C GET LU NUMBER OF HP-IB I/O INTERFACE CARD C ----------------------------------------- C LU0 = IBLU0(LU1) C C C ---------- C ERROR CHECK C ----------- C IF(LU1.LE.0.OR.LU0.LE.0)GO TO 800 C C C ----------------------------------- C CALL MAIN BODY OF DEVICE SUBROUTINE C ----------------------------------- C 10 CALL X45MF(LU0,LU1,IERMS,IUNIT,MFMO,MFMHZ,HZMF) C C C ----------- C ERROR CHECK C ----------- C IF(IERMS)800,20,800 C 20 RETURN C C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C SUBROUTINE X45MF(LU0,LU1,IERMS,IUNIT,MFMO,MFMHZ, +HZMF), 09580-16463 REV.2026 800130 C C C ------------------------------------------------------ C CALL X45MF(LU0,LU1,IERMS,IUNIT,MFMO,MFMHZ,HZMF) C ------------------------------------------------------ C WHERE: C LU0 = LU NUMBER OF HP-IB I/O INTERFACE CARD C LU1 = LU NUMBER OF HP5355A AUTO FREQ CONVERTER C C IERMS = 5-ELEMENT INTEGER ARRAY, IN WHICH C IERMS(1) = ERROR CODE: C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HP-IB: C C 9 = I/O CALL REJECTED C 10 = LU NO. NOT ASSIGNED TO HP-IB DEVICE C OR TO STATION C 11 = DMA INPUT REQUEST PREMATURELY C TERMINATED C 12 = I/O DEVICE TIME OUT C 13 = IFC (INTERFACE CLEAR) DETECTED C DURING I/O REQUEST C 14 = SRQ SERVICE ABORTED C V 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL,NO NEW C DEVICE MAY BE ADDED ON LINE C C IERMS(2) = CHARACTER COUNT OF MNEMONIC NAME C IERMS(3-5) = PACKED ASCII OF MNEMONIC NAME IF C IERMS(1) > 0 C IUNIT = UNIT NUMBER OF HP5355A (MUST BE SAME C AS UNIT NUMBER OF ASSOCIATED HP 5345A) C C C MFMO = MANUAL FREQUENCY ENTRY MODE C 0 = NO MANUAL FREQUENCY C 1 = APPLY MANUAL FREQUENCY C C MFMHZ = MANUAL FREQUENCY ENTRY IN MEGAHERTZ C 00000 TO 26500(REF NOTES 1 & 2 BELOW) C C HZMF = MANUAL FREQUENCY ENTRY IN HERTZ C 000000 TO 999999 (REF NOTE 2 BELOW) C C C NOTES: 1. USE OF THIS DEVICE SUBROUTINE DECREASES ACQUISI- C TION TIME, BECAUSE ONLY APPROXIMATELY 100 MHZ C (49.999999 MHZ EITHER SIDE OF THE SELECTED C MANUAL FREQUENCY) MUST BE SEARCHED BY THE COUNTER. C C 2. EACH OF THE MANUAL FREQUENCY PARAMETERS MUST BE C PROGRAMMED BY ENTERING ASCII NUMBERS. FOR EXAMPLE, C TO PROGRAM A FREQUENCY IN THE MEGAHERTZ RANGE, THE C 'MFMHZ' PARAMETER WOULD BE ENTERED USING ANY DESIRED C FREQUENCY IN THE RANGE OF 0 TO 26500. TRAILING C ZEROS ARE REQUIRED, BUT LEADING ZEROS ARE NOT C REQUIRED. C C ANY FREQUENCY FROM 0 TO 999999 HZ MAY BE PROGRAMMED C BY ENTERING A NUMBER (0 TO 26500) FOR THE 'MFMHZ' C PARAMETER AND THEN ENTERING THE DESIRED NUMBER FOR C THE 'HZMF' PARAMETER. LEADING ZEROS ARE NOT REQUIRED C AND TRAILING ZEROS ARE REQUIRED. C C THE 'HZMF' PARAMETER WILL USUALLY BE ENTERED AS C A ZERO (0), BECAUSE PRECISION GREATER THAN THE C MHZ RANGE IS USUALLY NOT NECESSARY. C C C ---------------- C PROGRAM CODE SET C ---------------- C C PROGRAM C FUNCTION CODE C -------- ------- C C MFMO =0 = ML0 C =1 = ML1 C C MFMHZ) C HZMF) = MF [FLOATING POINT] C C DIMENSION ARRAYS C ---------------- C DIMENSION IERMS(5),IREG(2) DIMENSION NMBR(6),IBUFR(21),IAR(6) EQUIVALENCE(REG,IREG,IA),(IREG(2),IB) C C --------------------- C INITIALIZE ERROR CODE C --------------------- C IERMS = 0 C C C --------------- C SET DEVICE TYPE C --------------- C DATA IDTN/71/ C C C ---------------- C CHECK PARAMETERS C ---------------- C IF(MFMO.LT.0.OR.MFMO.GT.1)GO TO 9100 C C C ---------------------------------- C SET HP 5355A MANUAL FREQUENCY MODE C ---------------------------------- C DO 50 ICNT = 1,21 IBUFR(ICNT) = 2H 50 CONTINUE C C MANUAL FREQUENCY MODE OFF C ------------------------- IBUFR = 2HML IBUFR(2) = 30000B INX = 2 IF(MFMO.EQ.0)GOTO 2000 C C MANUAL FREQUENCY MODE ON C ------------------------ C IBUFR(2) = 2H1M IBUFR(3) = 2HF INX = 4 C C SET MANUAL FREQUENCY VALUE C -------------------------- C VAL1 = MFMHZ IF(VAL1.LT.0.0)VAL1 = -MFMHZ IFLG = 0 C C FREQUENCY C --------- C VAL2 = HZMF IF(VAL2.LT.0.0)VAL2 = -HZMF IF(VAL1.GT.99999.)GOTO 9100 IF(VAL2.GT.999999.)GOTO 9100 ISIGN = 0 IF(MFMHZ.LT.0.0.OR.HZMF.LT.0.0)ISIGN = 1 INX = 4 IF(ISIGN.EQ.0)IBUFR(INX) = 20000B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C CONVERT 'MFMHZ' MHZ VALUE TO 5 ASCII DIGITS C ------------------------------------------- C IF(VAL1.EQ.0.0)GOTO 500 CALL GENFL(VAL1,NMBR) IF(NMBR.~EQ.-1)GOTO 9100 C C FIND NUMBER OF DIGITS C --------------------- C NXM = 2 IF(NMBR.EQ.3.OR.NMBR.EQ.4)NXM = 3 IF(NMBR.LT.3)NXM = 4 IF(ISIGN.EQ.0)GOTO 480 C DO 475 I=NXM,4 IVAH = IAND(NMBR(I),177400B) / 256 IVLO = IAND(NMBR(I),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 475 IBUFR(INX) = IVLO C GOTO 500 C 480 CONTINUE DO 490 J = NXM, 4 IBUFR(INX) = NMBR(J) 490 INX = INX + 1 C IBUFR(INX) =27000B IF(VAL2.EQ.0.0)GOTO 2000 IFLG = 1 GOTO 510 C C C CONVERT 'HZMF' HZ VALUE TO 6 ASCII DIGITS C ----------------------------------------- C 500 IF(VAL2.EQ.0.0)GOTO 2000 C C INSERT DECIMAL POINT C -------------------- C IBUFR(INX) = IOR(IBUFR(INX),56B) INX = INX + 1 IFLG = 0 510 CALL GENFL(VAL2,NMBR) IF(NMBR.EQ.-1)GOTO 9100 C C IF(IFLG.EQ.0)GOTO 560 C DO 550 J = 2 , 4 IVAH = IAND(NMBR(J),177400B) / 256 IVLO = IAND(NMBR(J),377B) * 256 IBUFR(INX) = IOR(IBUFR(INX),IVAH) INX = INX + 1 550 IBUFR(INX) = IVLO GOTO 2000 C 560 CONTINUE DO 570 J = 2, 4 IBUFR(INX) = NMBR(J) 570 INX = INX + 1 C INX = INX - 1 GOTO 2000 C 600 IF(VAL1.GT.99.9)GOTO 9100 ISIGN = 0 IF(MFMHZ.LT.0.0)ISIGN = 1 IF(ISIGN.EQ.0)IBUFR(INX) = 25400B IF(ISIGN.EQ.1)IBUFR(INX) = 26400B C C 620 INX = INX + 1 IBUFR(INX) = (NVAL+60B)*256 C C ------------- C REMOTE ENABLE C ------------- C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 8000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 990 C C SEND OUTPUT BUFFER C ------------------ C IVAL = IAND(IBUFR(INX),377B) IF(IVAL.EQ.0) IBUFR(INX) = IOR(IBUFR(INX),105B) IF(IVAL.EQ.0) IBUFR(INX+1) = 33000B INX = INX+1 IF(IVAL.NE.0)IBUFR(INX) = 42466B NUM = INX IF(IVAL.EQ.0)NUM = -Kx(2 * INX - 1) C CALL REIO(100002B,LU1,IBUFR(1),NUM,IDUMY,0) GOTO 8000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 990 C C RETURN C ------ C C IERMS=0 RETURN C C ERROR EXIT C ---------- C 990 IERMS=IAND(IA,377B)+11 GOTO 9900 8000 IERMS=9 GOTO 9900 9100 IERMS = 1 9900 IERMS(2)=5 IERMS(3)=2HC4 IERMS(4)=2H5M IERMS(5)=2HF RETURN END C C C C ------------------------------------------------------ SUBROUTINE GENFL(FNUM,IFS),09580-16463 REV.2026 800130 C ------------------------------------------------------ C C C ------------------------------------------------------ C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C ------------------------------------------------------ C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GE. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C ---------------- C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1 RETURN C C FIND "E" IF PRESENT C ------------------- C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IENUM = IENUM - 60B GO TO 160 150 CONTINUE IENUM = 0 C C ------------------B------------------------ C IENUM CONTAINS INTEGER VALUE OF "E" (0-6). C NOW UNPACK CHARACTERS. C ------------------------------------------ C 160 DO 200 I=1,5 N=(I*2)-1 JFS(N) = (IAND(IFS(I+1),177400B))/256 JFS(N) = IAND(JFS(N),377B) JFS(N+1) = IAND(IFS(I+1),377B) 200 CONTINUE IF (IEFLG .NE. 1) GO TO 210 JFS(1) = 61B JFS(2) = 40B IENUM = IENUM - 1 C C LOCATE THE DECIMAL POINT C ------------------------ C 210 DO 220 ID=1,10 IF (JFS(ID) .EQ. 56B .OR. JFS(ID) .EQ. 40B) GO TO 230 IF (JFS(ID) .EQ. 105B) GO TO 225 220 CONTINUE IFS(1) = -1 RETURN C C VALID NUMBER BUT NO DECIMAL POINT C --------------------------------- C 225 JFS(ID+1) = 60B C C DELETE DECIMAL POINT, ADJUST E VALUE C ------------------------------------ C 230 DO 250 I=ID,9 JFS(I) = JFS(I+1) IF (JFS(I) .EQ. 105B .OR. JFS(I) .EQ.40B) GO TO 240 GO TO 250 240 DO 245 J=I,10 JFS(J) = 60B 245 CONTINUE GO TO 260 250 CONTINUE C C SHIFT CHARACTERS AS NECESSARY C ----------------------------- C 260 ISHFT = 7 - (ID+IENUM) IF (ISHFT .EQ. 0) GO TO 300 DO 280 I=10,ISHFT+1,-1 JFS(I) = JFS(I-ISHFT) 280 CONTINUE C C ADD LEADING ZEROES C ------------------ C DO 290 I=1,ISHFT JFS(I) = 60B 290 CONTINUE C C PACK CHARACTERS C --------------- C 300 DO 310 I=1,3 J = (I*2)-1 JFS(J) = JFS(J)*256 JFS(J) = IAND(JFS(J),177400B) JFS(J+1) = IAND(JFS(J+1),377B) IFS(I+1) = JFS(J)+JFS(J+1) 310 CONTINUE C C LOAD TRAILING BLANKS C -------------------- C DO 320 I=5,6 IFS(I) = 20040B 320 CONTINUE C C C RETURN END END$ o0.**0  09580-18464 2026 S C0122 &ANASU              H0101 FTN4,L SUBROUTINE ANASU(IU,IRG,MMDE,MOD,INT,IBI), +09580-16464 REV.2026 800212 C C------------------------------------- C C SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER C C RELOCATABLE 09580-16464 C SOURCE 09580-18464 C C BOB RICHARDS 800212 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER. C C HARDWARE REQUIRED: C ------------------ C A. SCHLUMBERGER 1172 C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ANASU(I,I,I,I,I,I), OV=XX, ENT=ANASU, FIL=%ANASU C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C NONE REQUIRED C C C C C------------------------------------ C C ANASU(IU,IRG,MMDE,MOD,INT,IBI) C C WHERE: C C IU = UNIT # C C IRG = INPUT RANGE C 1=AUTO C 2=10MV C 3=100MV C 4=1V C 5=10V C 6=100V C C MMDE = INPUT MODE C 1=X C 2=Y C 3=Y/X C C MOD = CARRIER MODE C 0=BOTH OFF C 1=MOD. OUTPUT C 2=DEMOD OUTPUT C 3=BOTH ON C C INT = INTEGRATION TIME C 0=MIN C 1=X10 C 2=X100 C 3=X1000 C C IBI = BIAS MODE C 0=BOTH OFF C 1=OUTPUT ADD C 2=INPUT REJECT C 3=BOTH ON C C C------------------------------------ C DIMENSION IERMS(5) DATA IDTN / 72 / DATA IERMS / 10,5,2HAN,2HAS,2HU / C IERMS=10 C C FIND STATION AND LU #'S {=C ISTN = STATION # C LU1 = SCHLUMBERGER 1172 LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IU) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XNASU(LU1,LUIB,IERMS,IU,IRG,MMDE,MOD,INT,IBI) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XNASU(LU1,LUIB,IERMS,IU,IRG,MMDE,MOD,INT,IBI), +09580-16464 REV.2026 800212 C DIMENSION IERMS(5),IOBUF(12) C INTEGER LST,ARNG,AMMDE,AMOD,AINT,AIBI C DATA LST /52062B/ DATA ARNG /34400B/ DATA AMMDE /36000B/ DATA AMOD /31400B/ DATA AIBI /31000B/ DATA AINT /37400B/ C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF SCHLUMBERGER 1172 C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 IF(IRG.LT.1.OR.IRG.GT.6) GO TO 8000 IF(MMDE.LT.1.OR.MMDE.GT.3) GOTO 8000 IF(MOD.LT.0.OR.MOD.GT.3) GOTO 8000 IF(INT.LT.0.OR.INT.GT.3) GOTO 8000 IF(IBI.LT.0.OR.IBI.GT.3) GOTO 8000 C C SET UP INPUT-OUTPUT BUFFER FOR WRITE TO LATCH STORE CHARACTERS C 5t IOBUF(1) = LST IOBUF(3) = LST IOBUF(5) = LST IOBUF(7) = LST IOBUF(9) = LST IOBUF(11) = LST C C MEASUREMENT MODE TO STOP C IOBUF(2) = 35460B C C RANGE DATA C IF (IRG.EQ.1) GOTO 30 IOBUF(4) = IOR(IOR(IRG,60B),ARNG) GOTO 40 30 IOBUF(4) = IOR(ARNG,70B) C C INPUT MODE DATA C 40 IOBUF(6) = IOR(IOR(MMDE,60B),AMMDE) C C CARRIER MODE DATA C IOBUF(8) = IOR(IOR(MOD,60B),AMOD) C C INTEGRATION TIME DATA C IOBUF(10) = IOR(IOR(INT,60B),AINT) C C BIAS MODE DATA C IOBUF(12) = IOR(IOR(INT,60B),AIBI) C C REMOTE ENABLE C CALL EXEC(100003B,1600B+LUIB) GO TO 9000 90 CALL ABREG(IA,IB) IF (IB .LT. 0) GO TO 8500 C C SEND OUTPUT BUFFER C CALL EXEC (100002B,LU1,IOBUF,12,IDUMY,0) GO TO 9000 91 CALL ABREG(IA,IB) IF (IB .LT. 0) GO TO 8500 C C RETURN C 7000 IERMS = 0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HAN IERMS(4)=2HAS IERMS(5)=2HU RETURN END END$ d  09580-18465 2026 S C0122 &ANAGN              H0101 vFTN4,L SUBROUTINE ANAGN(IU,AMP,BIAV,IWA,FREQ), +09580-16465 REV.2026 800212 C C------------------------------------- C C SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER C C RELOCATABLE 09580-16465 C SOURCE 09580-18465 C C BOB RICHARDS 800212 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER. C C HARDWARE REQUIRED: C ------------------ C A. SCHLUMBERGER 1172 C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ANAGN(I,R,R,I,R), OV=XX, ENT=ANAGN, FIL=%ANAGN C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C NONE REQUIRED C C C C C------------------------------------ C C ANAGN(IU,AMP,BIAV,IWA,FREQ) C C WHERE: C C IU = UNIT # C C AMP = OPERATING AND DISPLAYED VOLTAGE C .01 TO 9.99 VOLTS - OPERATING C .010 TO 9.999 VOLTS - DISPLAYED C C BIAV = BIAS VOLTAGE C -9.99 TO 9.99 VOLTS C 10 MV RESOLUTION C C IWA = WAVEFORM OUTPUT C 0=TRIANGLE C 1=SINE C 2=SQUARE C C FREQ = OPERATING AND DISPLAYED FREQUENCIES C .0001HZ TO 9999.0HZ C C C C------------------------------------ C DIMENSION IERMS(5) DATA IDTN / 72 / DATA IERMS / 10,5,2HAN,2HAG,2HN / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = SCHLUMBERGER 1172 LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IU) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALLs XNAGN(LU1,LUIB,IERMS,IU,AMP,BIAV,IWA,FREQ) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XNAGN(LU1,LUIB,IERMS,IU,AMP,BIAV,IWA,FREQ), +09580-16465 REV.2026 800212 DIMENSION IERMS(5),IOBUF(6),ITEM(3) C INTEGER T1,T2,ADC,ADG,AD3,AD4,AD6,AD7 C DATA T1 /52061B/ DATA T2 /52062B/ DATA ADC /41400B/ DATA ADG /43400B/ DATA AD3 /31400B/ DATA AD4 /32000B/ DATA AD6 /33000B/ DATA AD7 /33400B/ C C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF SCHLUMBERGER 1172 C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 C X = .01 Y = 9.99 Z = -9.99 IF(AMP.LT.X.OR.AMP.GT.Y) GO TO 8000 IF(BIAV.LT.Z.OR.BIAV.GT.Y) GOTO 8000 IF(IWA.LT.0.OR.IWA.GT.2) GOTO 8000 X = .0001 Y = 9999.0 IF(FREQ.LT.X.OR.FREQ.GT.Y) GOTO 8000 C C MEASUREMENT MODE TO 'STOP' C IOBUF(1) = T2 IOBUF(2) = 35460B C C REMOTE ENABLE C CALL EXEC(100003B,1600B+LUIB) GOTO 9000 30 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8>-500 C C SEND OUTPUT BUFFER C C FORMAT = "T2SEMICOLON0" C CALL EXEC(100002B,LU1,IOBUF,2,IDUMY,0) GOTO 9000 40 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8500 C C SET UP IOBUF FOR OUTPUT VOLTAGE DATA C C COMPUTE EXPONENT OF OUTPUT VOLTAGE DATA IF(AMP .LE. .09999) IE = 1 IF(AMP .GT. .09999 .AND. AMP .LE. .99999) IE = 2 IF(AMP .GT. .99999) IE = 3 C IF (IE .EQ. 1) TEMP = AMP*10000.0 IF (IE .EQ. 2) TEMP = AMP*1000.0 IF (IE .EQ. 3) TEMP = AMP*100.0 TEMP = TEMP+.5 C C CONVERT OUTPUT VOLTAGE MAGNITUDE TO ASCII CODE C IX = INT(TEMP) CALL CNUMD(IX,ITEM) C IOBUF(1) = T1 IOBUF(2) = 2HG0 IF ((IAND(ITEM(2),377B)).EQ.40B) ITEM(2) = ITEM(2) + 20B IOBUF(3) = ((IAND(ITEM(2),377B))*400B) + ((IAND(ITEM(3), +177400B))/400B) IOBUF(4) = ((IAND(ITEM(3),377B))*400B) + 60B IOBUF(5) = 2H00 IOBUF(6) = (60B + IE) * 400B C C SEND OUTPUT BUFFER C CALL EXEC (100002B,LU1,IOBUF,-11,IDUMY,0) GO TO 9000 50 CALL ABREG(IA,IB) IF (IB .LT. 0) GO TO 8500 C C CONVERT DISPLAY VOLTAGE TO ASCII CODE C IF (AMP .GE. 1.0) GOTO 60 TEMP = AMP * 10000.0 GOTO 70 60 TEMP = AMP * 100.0 70 TEMP = TEMP + .5 IX = INT(TEMP) CALL CNUMD(IX,ITEM) IOBUF(1) = T1 IF(AMP .GT. 1.0) GOTO 75 IOBUF(2) = 2H30 ITEMP = IAND(ITEM(2),177400B) IF (ITEMP .EQ. 20000B) ITEM(2) = ITEM(2) + 10000B IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) GOTO 78 75 IOBUF(2) = (IAND(ITEM(2),377B)) + AD3 IOBUF(3) = ITEM(3) IOBUF(4) = 2H00 78 IOBUF(5) = 2H00 IOBUF(6) = 1H0 C C OUTPUT DISPLAY VOLTAGE C C FORMAT = "T13PXXQ0000" C C C OUTPUT DATA C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 80 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C CONVERT BIAS TO ASCII CODE C TEMP = (ABS(BIAV)) * 1n,000.0 TEMP = TEMP + 0.5 IX = INT(TEMP) CALL CNUMD(IX,ITEM) C C SET UP IOBUF C IOBUF(1) = T1 IOBUF(2) = 2HC0 IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) IOBUF(5) = 2H0+ IF (BIAV .LT. 0.0) IOBUF(5) = 2H0- IOBUF(6) = 1H0 C C OUTPUT DATA C C FORMAT = "T1C0XXX00S0" C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 90 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C SELECT OUTPUT WAVEFORM C IOBUF(1) = T2 IOBUF(2) = 2H40 + IWA C C OUTPUT DATA C CALL EXEC(100002B,LU1,IOBUF,2,IDUMY,0) GOTO 9000 100 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C SET UP OUTPUT BUFFER FOR OPERATING FREQUENCY DATA C DO 105 ICNT = 0,7 IF(FREQ .LT. (10.**(ICNT-3))) GOTO 108 105 CONTINUE 108 IE = ICNT TEMP = FREQ*(10.**(4-IE)) * 1000.0 TEMP = TEMP + 0.5 IX = INT(TEMP) CALL CNUMD(IX,ITEM) CALL SHFT(ITEM,IX) IOBUF(1) = T1 IOBUF(2) = IOR(AD7,ITEM(1)) IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) IOBUF(5) = 2H00 IE = IE * 10 CALL CNUMD(IE,ITEM) IOBUF(6) = ITEM(3) IF (IE .EQ. 0) IOBUF(6) = 30000B C C OUTPUT DATA C C FORMAT = "T17MXXX000E" C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 110 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C SET UP DISPLAYED FREQUENCY C IOBUF(2) = (IAND(IOBUF(2),377B)) + AD6 C C THE REST OF IOBUF IS THE SAME AS FOR OPERATING FREQUENCY C C C OUTPUT DATA C C FORMAT = "T16MXXX000E" C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 120 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C C RETURN C 7000 IERMS = 0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HAN IERMS(4)=2HAG IERMS(5)=2HN RETURN END C C $" SUBROUTINE SHFT(IBUF,IDIGT),09580-16465 REV.2026 800212 C C THIS SUBROUTINE SHIFTS THE OUTPUT FROM 'CNUMD' SO THAT THE MOST C SIGNIFICANT DIGIT IS ALWAYS IN THE LOWER EIGHT BITS OF IBUF(1). C DIMENSION IBUF(3) C IF (IDIGT.LT.0.OR.IDIGT.GT.9999) IBUF(1) = -1 IF (IDIGT.LT.0.OR.IDIGT.GT.9999) RETURN C C REPLACE IMBEDDED BLANKS WITH ZEROES C DO 50 L=1,3 IF ((IAND(IBUF(L),177400B)).EQ.20000B) IBUF(L) = IBUF(L) + 10000B IF ((IAND(IBUF(L),377B)).EQ.40B) IBUF(L) = IBUF(L) + 20B 50 CONTINUE C IF (IDIGT.GE.10) GOTO 75 IBUF(1) = IBUF(3) IBUF(2) = 2H00 IBUF(3) = 2H00 GOTO 1000 75 IF (IDIGT.GE.100) GOTO 80 IBUF(1) = (IAND(IBUF(3),177400B))/400B IBUF(2) = (IAND(IBUF(3),377B)*400B) + 60B IBUF(3) = 2H00 GOTO 1000 80 IF(IDIGT.GE.1000) GOTO 85 IBUF(1) = IBUF(2) IBUF(2) = IBUF(3) IBUF(3) = 2H00 GOTO 1000 85 IBUF(1) = (IAND(IBUF(2),177400B))/400B IBUF(2) = (IAND(IBUF(2),377B)*400B) + (IBUF(3)/400B) IBUF(3) = ((IAND(IBUF(3),377B))*400B) + 60B C 1000 RETURN END END$ d$  09580-18466 2026 S C0122 &ANASW              H0101 FTN4,L SUBROUTINE ANASW(IU,ISW,IUD,FMIN,FMAX,DFLG,DFLI), +09580-16466 REV.2026 800212 C C------------------------------------- C C SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER C C RELOCATABLE 09580-16466 C SOURCE 09580-18466 C C BOB RICHARDS 800212 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER. C C HARDWARE REQUIRED: C ------------------ C A. SCHLUMBERGER 1172 C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ANASW(I,I,I,R,R,R,R), OV=XX, ENT=ANASW, FIL=%ANASW C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C NONE REQUIRED C C C C C------------------------------------ C C ANASW(IU,ISW,IUD,FMIN,FMAX,DFLG,DFLI) C C WHERE: C C IU = UNIT # C C ISW = SWEEP MODE C 0=LINEAR C 1=LOGARITHMIC C C IUD = SWEEP COMMAND C 0=OFF C 1=HOLD C 2=SWEEP UP C 3=SWEEP DOWN C C FMIN = MINIMUM SWEEP FREQUENCY C RANGE - .0001HZ TO 9999HZ C C FMAX = MAXIMUM SWEEP FREQUENCY C RANGE - .0001HZ TO 9999HZ C C DFLG = DELTA FREQUENCY LOG SWEEP C RANGE - .2 TO 99.99 SWEEPS PER DECADE C - 0 VALID IF ISW = 0 (RETAINS PREVIOUS DATA) C C DFLI = DELTA FREQUENCY LINEAR SWEEP C RANGE - .0001HZ TO 9999HZ (DOWN TO .1E-6 HZ WITH REDUCED C RESOLUTION.) C - 0 VALID IF ISW = 1 (RETAINS PREVIOUS DATA) C C C------------------------------------ C DIMENSION IERMS(5)3 DATA IDTN / 72 / DATA IERMS / 10,5,2HAN,2HAS,2HW / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = SCHLUMBERGER 1172 LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IU) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XNASW(LU1,LUIB,IERMS,IU,ISW,IUD,FMIN,FMAX,DFLG,DFLI) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XNASW(LU1,LUIB,IERMS,IU,ISW,IUD,FMIN,FMAX,DFLG,DFLI), +09580-16466 REV.2026 800212 C DIMENSION IERMS(5),IOBUF(6),ITEM(3) C INTEGER T1,T2,AD7,AD8,ADN,ADF,ADGT,ADQM C DATA T1 /52061B/ DATA T2 /52062B/ DATA AD7 /33400B/ DATA AD8 /34000B/ DATA ADN /47000B/ DATA ADF /43000B/ DATA ADGT /37000B/ DATA ADQM /37400B/ C C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF SCHLUMBERGER 1172 C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 IF(ISW.LT.0.OR.ISW.GT.1) GO TO 8000 IF(IUD .LT.0.OR.IUD .GT.3) GOTO 8000 C IF(IUD .LT.2) GOTO 30 X = .0001 Y = 9999.0 IF(FMIN.LT.X.OR.FMIN.GT.Y) GOTO 8000 IF(FMAX.LT.X.OR.FMAX.GT.Y) GOTO 8000 IF(FMIN.GT.FMAX) GOTO 8000 X = .20 Y = 99.99 IF (ISW.EQ.0 .AND. DFLG.EQ.0.0) GOTO 20 IF(DFLG.LT.X.OR.DFLG.GT.Y) GOTO 8000 20 X = .1E-6 Y = 9999.0 IF (ISW.EQ.1 .AND. DFLI.EQ.0.0) GOTO 30 IF(DFLI.LT.X.OR.DFLI.GT.Y) GOTO 8000 C C SET UP I/O BUFFER TO 'STOP' MEASUREMENT MODE C 30 IOBUF(1) = T2 IOBUF(2) = 35460B C C SET UP I/O BUFFER TO OUTPUT SWEEP MODE OR SWEEP COMMAND C IOBUF(3) = T2 IF(ISW.EQ.1) GOTO 40 IOBUF(4) = IOR(AD7,60B) GOTO 50 40 IOBUF(4) = IOR(AD7,64B) 50 IOBUF(5) = T2 IOBUF(6) = IOR(IOR(IUD,60B),AD8) C C REMOTE ENABLE C CALL EXEC(100003B,1600B+LUIB) GOTO 9000 60 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C OUTPUT DATA C CALL EXEC(100002B,LU1,IOBUF,6,IDUMY,0) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C SETUP IOBUF FOR FMIN/FMAX FREQUENCY DATA C DO 95 IF = 1,2 C C COMPUTE FMIN/FMAX EXPONENT C DO 75 ICNT = 0,7 IF (IF.EQ.1 .AND. FMIN .LT. (10.**(ICNT-3))) GOTO 80 IF (IF.EQ.2 .AND. FMAX .LT. (10.**(ICNT-3))) GOTO 80 75 CONTINUE 80 IE = ICNT C C CONVERT FMIN/FMAX MAGNITUDE TO ASCII DATA C IF(IF.EQ.1) TEMP = FMIN*(10.**(4-IE)) * 1000. IF(IF.EQ.2) TEMP = FMAX*(10.**(4-IE)) * 1000. TEMP = TEMP + .5 IX = INT(TEMP) CALL CNUMD(IX,ITEM) CALL SHFTB(ITEM,IX) IOBUF(1) = T1 IF(IF.EQ.1) IOBUF(2) = IOR(ADN,ITEM(1)) IF(IF.EQ.2) IOBUF(2) = IOR(ADF,ITEM(1)) IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) IOBUF(5) = 2H00 IE = IE*10 CALL CNUMD(IE,ITEM) IOBUF(6) = ITEM(3) IF (IE .EQ.0) IOBUF(6) = 30000B C C OUTPUT FMIN/FMAX DATA C C FORMAT = "T1NMXXX000E" - FMIN C FORMAT = "T1FMXXX00#20E" - FMAX C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 90 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 95 CONTINUE C C SETUP I/O BUFFER FOR DELTA F LOG C IF (DFLG .EQ. 0.0) GOTO 105 TEMP = DFLG*100.0 IX = INT(TEMP) CALL CNUMD(IX,ITEM) C C FAKE OUT 'SHFTB' C IZ = 9999 CALL SHFTB(ITEM,IZ) IOBUF(1) = T1 IOBUF(2) = IOR(ADQM,ITEM(1)) IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) IOBUF(5) = 2H00 IOBUF(6) = 1H0 C C OUTPUT DELTA F LOG DATA C C FORMAT = "T1?XXXX0000" C CALL EXEC(100002B,LU1,IOBUF,-11,IDUMY,0) GOTO 9000 100 CALL ABREG(IA,IB) IF (IB.LT.0) GOTO 8500 C C SET UP I/O BUFFER FOR DELTA F LINEAR C C COMPUTE DFLI EXPONENT C 105 IF (DFLI .EQ. 0.0) GOTO 7000 DO 110 ICNT = 0,7 IF (DFLI .LT. (10.**(ICNT-3))) GOTO 115 110 CONTINUE 115 IE = ICNT C C CONVERT DFLI MAGNITUDE TO ASCII CODE C TEMP = DFLI*(10.**(4-IE)) * 1000.0 TEMP = TEMP + .5 IX = INT(TEMP) CALL CNUMD(IX,ITEM) IZ = IX C C FAKE OUT 'SHFTB' AS NECESSARY C IF (DFLI .LT. .0001) IZ = 9999 CALL SHFTB(ITEM,IZ) IOBUF(1) = T1 ITEM(1) = IAND(ITEM(1),377B) IOBUF(2) = IOR(ADGT,ITEM(1)) IOBUF(3) = ITEM(2) IOBUF(4) = ITEM(3) IOBUF(5) = 2H00 IE = IE * 10 CALL CNUMD(IE,ITEM) IOBUF(6) = ITEM(3) IF (IE .EQ. 0) IOBUF(6) = 30000B C C C SEND OUTPUT BUFFER C C FORMAT = "T1>XXXX000E" C CALL EXEC (100002B,LU1,IOBUF(1),-11,IDUMY,0) GO TO 9000 130 CALL ABREG(IA,IB) IF (IB .LT. 0) GO TO 8500 C C RETURN C 7000 IERMS = 0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HAN IERMS(4)=2HAS IERMS(5)=2HW RETURN END C C SUBROUTINE SHFTB(IBUF,IDIGT),09580-164b$"66 REV.2026 800212 C C THIS SUBROUTINE SHIFTS THE OUTPUT FROM 'CNUMD' SO THAT THE MOST C SIGNIFICANT DIGIT IS ALWAYS IN THE LOWER EIGHT BITS OF IBUF(1). C DIMENSION IBUF(3) C IF (IDIGT.LT.0.OR.IDIGT.GT.9999) IBUF(1) = -1 IF (IDIGT.LT.0.OR.IDIGT.GT.9999) RETURN C C REPLACE IMBEDDED BLANKS WITH ZEROES C DO 50 L=1,3 IF ((IAND(IBUF(L),177400B)).EQ.20000B) IBUF(L) = IBUF(L) + 10000B IF ((IAND(IBUF(L),377B)).EQ.40B) IBUF(L) = IBUF(L) + 20B 50 CONTINUE C IF (IDIGT.GE.10) GOTO 75 IBUF(1) = IBUF(3) IBUF(2) = 2H00 IBUF(3) = 2H00 GOTO 1000 75 IF (IDIGT.GE.100) GOTO 80 IBUF(1) = (IAND(IBUF(3),177400B))/400B IBUF(2) = (IAND(IBUF(3),377B)*400B) + 60B IBUF(3) = 2H00 GOTO 1000 80 IF(IDIGT.GE.1000) GOTO 85 IBUF(1) = IBUF(2) IBUF(2) = IBUF(3) IBUF(3) = 2H00 GOTO 1000 85 IBUF(1) = (IAND(IBUF(2),177400B))/400B IBUF(2) = (IAND(IBUF(2),377B)*400B) + (IBUF(3)/400B) IBUF(3) = ((IAND(IBUF(3),377B))*400B) + 60B C 1000 RETURN END END$ $  09580-18467 2026 S C0122 &ANAME              H0101 ~{FTN4,L SUBROUTINE ANAME(IU,IDISP,IDELY,NOMES),09580-16467 REV.2026 800211 C C------------------------------------- C C SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER C C RELOCATABLE 09580-16467 C SOURCE 09580-18467 C C BOB RICHARDS 800211 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT CITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED TO PROGRAM THE MEASUR- C MENT MODES OF THE SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER. C C HARDWARE REQUIRED: C ------------------ C A. SCHLUMBERGER 1172 C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ANAME(I,I,I,IV), OV=XX, ENT=ANASU, FIL=%ANASU C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C NO ENTRIES NECESSARY C C C C C C------------------------------------ C C ANAME(IU,IDISP,IDELY,NOMES) C C WHERE: C C IU = UNIT # C C IDISP = DISPLAY FORMAT C 0=R, THETA C 1=A, B C 2=LOG R, THETA C C IDELY = MEASUREMENT DELAY C 0=0.1 SECONDS C 1=1 SECOND C 2=10 SECONDS C 3=100 SECONDS C C NOMES = RETURNED VALUE - NUMBER OF MEASUREMENTS TAKEN C C C THIS DEVICE SUBROUTINE INITIALIZES THE MEASUREMENT PROCESS OF THE C 1172. C C PRIOR TO USING THIS DEVICE SUBROUTINE A TYPE 1 FILE NAMED 'D1172' C MUST BE CREATED ON LU 3. THE BELOW EXAMPLE DESCRIBES THE FMGR C CALL TO CREATE A DATA FILE CAPABLE OF HOLDING THE MEASUREMENT C DATA OF UP TO 200 FREQUENCY MEASUREMENT POINTS. DO NOT USE A C SECURITY CODE WHEN CREATING THE FILE. C C :CR,D1172::-3:1:200 C C********************************************************************* C C , ***** WARNING ***** C C DO NOT TOUCH THE FRONT PANEL CONTROLS AT ANY TIME WHILE THE 1172 C IS BEING PROGRAMMED IN THE REMOTE MODE. TOUCHING THE FRONT PANEL C CONTROLS WHILE IN THIS MODE MAY RESULT IN SPURIOUS DATA RETURNING C FROM THE 1172. C C********************************************************************* C C C C------------------------------------ C DIMENSION IERMS(5) DATA IDTN / 72 / DATA IERMS / 10,5,2HAN,2HAM,2HE / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = SCHLUMBERGER 1172 LU C LUIB = HPIB LU C ISTN=ISN(DUMMY) LU1=LUDV(ISTN,IDTN,IU) LUIB=IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0)GOTO 800 C C CALL X SUB C CALL XNAME(LU1,LUIB,IERMS,IU,IDISP,IDELY,NOMES) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XNAME(LU1,LUIB,IERMS,IU,IDISP,IDELY,NOMES), +09580-16467 REV.2026 800211 C DIMENSION IERMS(5),IOBUF(6),INAME(3),IDCB(144),IFNSH(2),ISTRT(4) DIMENSION IRBUF(5),IMODE(1),STBUF(64),ISTBF(128),RDATA(2) C EQUIVALENCE (STBUF(1),ISTBF(1)) C DATA INAME /2HD1,2H17,2H2 / DATA IDTN /72/ DATA ISTRT /2HS1,2H11,31073B,2H2 / DATA IFNSH /2HT2,35460B/ C C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVE THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HPIB BUS. C LU1 = LU # OF SCHLUMBERGER 1172 C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C 2 = SRQ TIMEOUT C 3 = ILLEGAL RETURN STATUS FROM 1172 C 4 = DATA FILE 'OPEN' ERROR C 5 = DATA FILE FULL C 6 = DATA FILE WRITE ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HPIB. C  C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 IF(IDISP.LT.0.OR.IDISP.GT.2) GOTO 8000 IF(IDELY.LT.0.OR.IDELY.GT.3) GOTO 8000 IERMS = 0 C C PRESET NUMBER OF MEASUREMENTS COUNTER C NOMES = 0 C C LOCK SUBROUTINE INTO MEMORY WHILE RUNNING C CALL EXEC(100000B+22,1) GOTO 9000 30 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8500 C C OPEN DATA BUFFER C CALL OPEN(IDCB,IERR,INAME,3,0,-3) IF (IERR .NE. 1) GOTO 8600 C C OUTPUT DISPLAY AND DELAY, MEASURE MODE TO 'STOP'. C IOBUF(1) = 2HT2 IOBUF(2) = 2H=0 + IDISP IOBUF(3) = 2HT2 IOBUF(4) = 2H>0 + IDELY IOBUF(5) = 2HT2 IOBUF(6) = 35460B C C PRESET BUFFER C DO 90 JCNT = 1,64 STBUF(JCNT) = -1.0E37 90 CONTINUE C C REMOTE ENABLE C 40 CALL EXEC(100003B,1600B + LUIB) GOTO 9000 100 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8000 C C SEND OUTPUT BUFFER C CALL EXEC(100002B,LU1,IOBUF,6,IDUMY,0) GOTO 9000 110 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SETUP INTERRUPT C CALL EXEC(100002B,LU1,ISTRT,-7,IDUMY,0) GOTO 9000 120 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C TIMEOUT + RESCHEDULE PROGRAM C WAIT FOR INTERRUPT C 150 ITIME = 0 IWAIT = 2*(10**(1+IDELY)) 200 IOFST = -20 CALL EXEC(12,0,1,0,IOFST) 210 CONTINUE C C GET STATUS - LOOK FOR '100B' C CALL EXEC(100003B,600B + LU1) GOTO 9000 220 CALL ABREG(IA,IB) ISTAT = IAND(IkA,377B) IF(ISTAT .GE. 100B) GOTO 230 ITIME = ITIME + 1 IF (ITIME .LT. IWAIT) GOTO 200 IERR = 2 GOTO 8000 230 IF (ISTAT .EQ. 100B) GOTO 245 IERR = 3 GOTO 8000 C C READ DATA FROM 1172 MOS STORAGE BUFERS C 245 IOBUF(1) = 2HT3 IOBUF(2) = 2HI CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 250 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 260 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(01) = RDATA C IOBUF(2) = 2H1 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 270 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 275 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(02) = RDATA C IOBUF(2) = 2H9 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 280 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 285 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(03) = RDATA C IOBUF(2) = 2HM CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 290 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 295 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(04) = RDATA C IOBUF(2) = 2H5 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 300 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 305 \ CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(05) = RDATA C IOBUF(2) = 2H= CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 310 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 315 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(06) = RDATA C IOBUF(2) = 2HH CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 320 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 325 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(07) = RDATA C IOBUF(2) = 2H0 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 330 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 335 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(08) = RDATA C IOBUF(2) = 2H8 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 340 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 345 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(09) = RDATA C IOBUF(2) = 2HL CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 350 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 355 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUFI(2),IRBUF,RDATA) STBUF(10) = RDATA STBUF(11) = RDATA(2) C IOBUF(2) = 2H4 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 360 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 365 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(12) = RDATA STBUF(13) = RDATA(2) C IOBUF(2) = 2H< CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 370 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 375 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(14) = RDATA STBUF(15) = RDATA(2) C IOBUF(2) = 2HJ CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 380 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 385 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(16) = RDATA C IOBUF(2) = 2H2 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 390 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 395 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(17) = RDATA C IOBUF(2) = 2H: CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 400 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 405 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(18) = RDATA C IOBUF(2) = 35440B CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 410 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 412 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(19) = RDATA C IOBUF(2) = 2H6 CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 415 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 420 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(20) = RDATA C IOBUF(2) = 2HK CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 425 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 CALL EXEC(100001B,LU1,IRBUF,5,IDUMY,0) GOTO 9000 430 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C GO CONVERT DATA TO FLOATING POINT C CALL BCONV(IOBUF(2),IRBUF,RDATA) STBUF(21) = RDATA C CALL EXEC(100002B,LU1,ISTRT,-7,IDUMY,0) GOTO 9000 485 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8500 C C WRITE TO BUFFER C CALL WRITF(IDCB,IERR,ISTBF) IF (IERR .EQ. -12) GOTO 8700 IF (IERR .LT. 0) GOTO 8800 DO 487 JCNT = 1,64 STBUF(JCNT) = -1.0E37 487 CONTINUE C C INCREMENT NUMBER OF MEASUREMENTS COUNTER C NOMES = NOMES + 1 C C CHECK TO SEE IF DONE C IOBUF(1) = 2HT4 IOBUF(2) = 2H8 C CALL EXEC(100002B,LU1,IOBUF,-3,IDUMY,0) GOTO 9000 490 CALL ABREG (IA,IB) IF (IB .LT. 0) GOTO 8500 C C READ MEASUREMENT MODE C CALL EXEC(100001B,LU1,IMODE,1,IDUMY,0) GOTO 9000 495 CALL ABREG(IA,IB) IF (IB .LT. 0) GOTO 8500 C C IF MEASUREMENT MODE IS 'OFF' OR 'HOLD' STOP MEASUREMENT C JSTAT = IAND(IMODE,177400B) IF (JSTAT.EQ.30000B.OR.JSTAT.EQ.30400B) GOTO 500 GOTO 150 C C TURN OFF MEASUREMENT COMMAND C 500 CALL EXEC(100002B,LU1,IFNSH,2,IDUMY,0) GOTO 9000 510 CALL ABREG(IA,IB) IF(IB.LT.0) GOTO 8500 C C GOOD RETURN C 7000 IERMS = 0 C C CLOSE DATA BUFFER C 7100 CALL CLOSE(IDCB) C C REENABLE SWAPPING C CALL EXEC(22,0) C C RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 8600 IERMS = 4 GOTO 8000 8700 IERMS = 5 GOTO 8000 8800 IERMS = 6 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HAN IERMS(4)=2HAM IERMS(5)=2HE GOTO 7100 END SUBROUTINE BCONV(ICHAR,IRBUF,RDATA),09580-16467 REV.2026 800211 C C THIS SUBROUTINE CONVERTS THE VARIOUS DATA FORMATS AS RECEIVED FROM C THE 1172 TO FLOATING POINT. C C CALL BCONV(ICHAR,IRBUF,RDATA) C C WHERE: C C ICHAR = INPUT CHARACTER IN UPPER 8 BITS, SPACE IN C LOWER 8 BITS. C C IRBUF = FIVE WORD INPUT ASCII DATA BUFFER C BUFFER FORMAT - "AAAA,AAAA" C C RDATA = TWO WORD ARRAY CONTAINING THE RETURNED C FLOATING POINT VALUE(S). THETA REQUIRES C TWO CONVERSIONS PER ENTRY. C C*********************************************************************** C DIMENSION IRBUF(5),RDATA(2),MRBUF(5) EQUIVALENCE (MRBUF(1),IVALU),(MRBUF(3),JVALU) C C MOVE INPUT BUFFER C MRBUF(1) = IRBUF(1) MRBUF(2) = IRBUF(2) MRBUF(3) = IRBUF(3) MRBUF(4) = IRBUF(4) MRBUF(5) = IRBUF(5) C C C GET RID OF IMBEDDED COMMA IN ASCII STRING C MRBUF(3) = MRBUF(3) * 400B MRBUF(3) = MRBUF(3) + (IRBUF(4)/400B) MRBUF(4) = MRBUF(4) * 400B MRBUF(4) = MRBUF(4) + (MRBUF(5)/400B) IS = (MRBUF(4)/400B) - 60B IE = (IAND(MRBUF(4),377B)) - 60B C C POINT TO REFORMAT TYPE C <:6 IF (ICHAR .EQ. 2HI ) GOTO 100 IF (ICHAR .EQ. 2H1 ) GOTO 100 IF (ICHAR .EQ. 2HM ) GOTO 100 IF (ICHAR .EQ. 2H5 ) GOTO 100 IF (ICHAR .EQ. 35440B) GOTO 100 IF (ICHAR .EQ. 2HH ) GOTO 100 IF (ICHAR .EQ. 2H0 ) GOTO 100 IF (ICHAR .EQ. 2H8 ) GOTO 100 IF (ICHAR .EQ. 2H9 ) GOTO 100 IF (ICHAR .EQ. 2H= ) GOTO 100 IF (ICHAR .EQ. 2HL ) GOTO 500 IF (ICHAR .EQ. 2H4 ) GOTO 500 IF (ICHAR .EQ. 2H< ) GOTO 500 IF (ICHAR .EQ. 2HJ ) GOTO 600 IF (ICHAR .EQ. 2H2 ) GOTO 600 IF (ICHAR .EQ. 2H: ) GOTO 600 IF (ICHAR .EQ. 2H6 ) GOTO 800 IF (ICHAR .EQ. 2HK ) GOTO 1100 GOTO 9000 C 100 CALL CODE READ (IVALU,110) RDATA 110 FORMAT (E6.0) IF (IS .EQ. 1 .OR. IS .EQ. 5) RDATA = -RDATA RDATA = RDATA/100000.0 RDATA = RDATA * (10.0**(IE-4)) RETURN C 500 CALL CODE READ(IVALU,510) RDATA(1) 510 FORMAT (E4.0) RDATA(1) = RDATA(1)/10.0 CALL CODE READ(JVALU,510) RDATA(2) RDATA(2) = RDATA(2)/1000.0 RETURN C 600 CALL CODE READ(IVALU,110) RDATA IF (IS .EQ. 1 .OR. IS .EQ. 5) RDATA = -RDATA RDATA = RDATA/1000.0 RETURN C 800 MRBUF(3) = 2H00 IS = 0 GOTO 100 C 1100 CALL CODE READ (IVALU,110) RDATA RDATA = (RDATA/10000.0) - 4.0 RETURN C C PUT 1E38 INTO ERRONEOUS VALUES C 9000 RDATA = 1.0E38 RDATA(2) = 1.0E38 RETURN END END$ <  09580-18468 2026 S C0122 &ANARD              H0101 zFTN4,L SUBROUTINE ANARD(ITYPE,IFRST,NUMBR,RVALU), +09580-16468 REV.2026 800212 C C------------------------------------- C C SCHLUMBERGER 1172 FREQUENCY RESPONSE ANALYZER C C RELOCATABLE 09580-16468 C SOURCE 09580-18468 C C BOB RICHARDS 800212 C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS DATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES. TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED TO RETURN DATA TO THE C CALLING PROGRAM. THE DATA WAS CREATED AND STORED USING THE C 1172 DEVICE SUBROUTINE CALL 'ANAME'. THE DATA IS READ FROM C FILE 'D1172::-3' (TYPE 1 FILE). C C HARDWARE REQUIRED: C ------------------ C A. SCHLUMBERGER 1172 WITH 1183-C INTERFACE UNIT C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C ANARD(I,I,I,RAV), OV=XX, ENT=ANARD, FIL=%ANARD C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C NONE REQUIRED C C C C C------------------------------------ C C ANARD(ITYPE,IFRST,NUMBR,RVALU) C C WHERE: C C ITYPE = DESIRED DATA TYPE TO BE READ FROM THE DISC FILE C 01 = A(X) C 02 = A(Y) C 03 = A(Y/X) C 04 = B(X) C 05 = B(Y) C 06 = B(Y/X) C 07 = R(X) C 08 = R(Y) C 09 = R(Y/X) C 10 = THETA (X) - DEGREES C 11 = THETA (X) - RADIANS C 12 = THETA (Y) - DEGREES C 13 = THETA (Y) - RADIANS C 14 = THETA (Y/X) - DEGREES C 15 = THETA (Y/X) - RADIANS C 16 = LOG R(X) C 17 = LOG R(Y) C 18 = LOG R(Y/X) C 19 = REJECT BIAS C 20 = DISPLAYED FREQUENCY C ~  21 = LOG F C C IFRST = FIRST READING OF TYPE IN FILE TO BE RETURNED C MINIMUM = 1 C MAXIMUM = # RECORDS IN 'D1172' (SEE &ANARD) C C NUMBR = NUMBER OF READINGS OF TYPE TO BE RETURNED C MINIMUM = 1 C MAXIMUM = (# RECORDS IN 'D1172) - IFRST C C RVALU = RETURNED VALUE ARRAY C C THE DATA IS STORED IN A TYPE 1 FILE CALLED 'D1172::-3' IN A C 21 X 200 ARRAY FORMAT. THE DATA IS STORED IN THE FILE BY THE C 'ANAME' CALL. FILE 'D1172' IN THIS EXAMPLE IS ASSUMMED TO BE 200 C RECORDS LONG. C C FOR EXAMPLE: C C 10 DIM A(200), B(200) C . C . C 100 CALL ANAME(1,0,1) C 110 REM GET FIRST 50 A(X) READINGS C 120 CALL ANARD(1,1,50,A(1)) C 130 REM GET FIRST 50 R(X) READINGS C 140 CALL ANARD(7,1,50,B(1)) C 150........... C . C . C C C------------------------------------ C DIMENSION IERMS(5),RVALU(200) DATA IERMS / 10,5,2HAN,2HAR,2HD / C IERMS=10 C C C CALL X SUB C CALL XNARD(IERMS,ITYPE,IFRST,NUMBR,RVALU) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XNARD(IERMS,ITYPE,IFRST,NUMBR,RVALU), +09580-16468 REV.2026 800212 C DIMENSION IERMS(5),IOBUF(12),IDCB(144),STBUF(64),ISTBF(128) DIMENSION INAME(3),RVALU(200) C EQUIVALENCE (STBUF(1),ISTBF(1)) C DATA INAME /2HD1,2H17,2H2 / C C C C--------------------------------------------- C C C C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C 2 = DATA FILE ACCESS ERROR C 3 = EXEC CALL ERROR C 4 = ATTEMPTED TO READ DATA OUTSIDE OF FILE LIrMITS C 9 = EXEC CALL REJECTED C C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C C CHECK PARAMETERS C IERMS=1 IF(ITYPE .LT. 1 .OR. ITYPE .GT. 21) GOTO 8000 IF(IFRST .LT. 1) GOTO 8000 IF(NUMBR .LT. 1) GOTO 8000 IERMS = 0 C C LOCK SUBROUTINE INTO MEMORY C CALL EXEC(100000B+22,1) GOTO 9000 50 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8600 C C OPEN DATA BUFFER C CALL OPEN(IDCB,IERR,INAME,3,0,-3) IF (IERR .NE. 1) GOTO 8500 C C POSITION TO PROPER RECORD C CALL POSNT(IDCB,IERR,IFRST,1) IF (IERR .EQ. -12) GOTO 8700 IF (IERR .LT. 0) GOTO 8500 C C READ DATA FROM FILE AND PLACE IN RETURN ARRAY C DO 100 ICNT = 1,NUMBR CALL READF(IDCB,IERR,ISTBF) IF (IERR .EQ. -12) GOTO 8700 IF (IERR .LT. 0) GOTO 8500 RVALU(ICNT) = STBUF(ITYPE) 100 CONTINUE C C GO TO RETURN C GOTO 9900 C C ERROR RETURN C 8500 IERMS=2 GOTO 8000 8600 IERMS = 3 GOTO 8000 8700 IERMS = 4 GOTO 8000 9000 IERMS = 9 8000 IERMS(2)=5 IERMS(3)=2HAN IERMS(4)=2HAR IERMS(5)=2HD C C CLOSE FILE C 9900 CALL CLOSE(IDCB) C C REENABLE SWAPPING C CALL EXEC(22,0) C C RETURN TO CALLING PROGRAM C RETURN END END$ m  09580-18543 2026 S C0122 &TSYFM              H0101 yFTN4,L SUBROUTINE TSYFM(IUNIT,DATA,DELAY,MDELY,WIDTH,MWDTH), +09580-16453 REV.2026 800131 C C------------------------------------- C C HP 5359A C C RELOCATABLE 09580-16453 C SOURCE 09580-18453 C C BOB RICHARDS 790821 C BOB RICHARDS 791023 C BOB RICHARDS 800131 CHANGE REFERENCE FROM 'GETST' TO 'STGET'. C C------------------------------------ C C !=================================================! C ! ! C ! (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980 ! C ! ALL RIGHTS RESERVED ! C ! ! C ! NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, ! C ! REPRODUCED OR TRANSLATED INTO ANOTHER PROGRAM ! C ! LANGUAGE WITHOUT THE PRIOR WRITTEN CONSENT OF ! C ! THE HEWLETT-PACKARD COMPANY. ! C ! ! C !-------------------------------------------------! C ! ! C ! TEST SYSTEM SOURCE SOFTWARE IS THE PROPRIETARY ! C ! MATERIAL OF THE HEWLETT-PACKARD COMPANY. ! C ! ! C ! THIS SOURCE DATA SHALL BE USED SOLELY IN ! C ! CONJUNCTION WITH ELECTRONIC COMPUTER SYSTEMS ! C ! SUPPLIED TO THE USER BY HEWLETT-PACKARD. ! C ! ! C ! THIS PROPRIETARY DATA SHALL NOT BE COPIED OR ! C ! OTHERWISE REPRODUCED WITHOUT THE PRIOR WRITTEN ! C ! CONSENT OF HEWLETT-PACKARD, EXCEPT THAT ONE ! C ! COPY MAY BE MADE AND RETAINED BY THE USER FOR ! C ! ARCHIVE PURPOSES. ! C ! ! C ! THE USER SHALL NOT DISCLOSE THIS DATA TO ANY ! C ! THIRD PARTIES WITHOUT THE PRIOR WRITTEN CONSENT ! C ! OF HEWLETT-PACKARD. IN ADDITION, THE USER SHALL ! C ! USE AT LEAST THE SAME CARE AND SAFEGUARDS TO ! C ! PROTECT THIS RDATA FROM UNAUTHORIZED USE OR ! C ! DISCLOSURE AS THE USER USES TO PROTECT ITS OWN ! C ! PROPRIETARY DATA. ! C ! ! C !=================================================! C C GENERAL: C -------- C C THE FOLLOWING DEVICE SUBROUTINES ARE USED C TO PROGRAM THE HP 5359A TIME SYNTHESIZER. C C HARDWARE REQUIRED: C ------------------ C A. HP 5359A C B. HP59310 BUS INTERFACE KIT. C C JUMPER POSITION: C SW1-1 - 1 C SW1-2 TO SW1-8 - 0 C SW2-1 - 0 C SW2-2 - 0 C SW2-3 - 0 C SW2-4 - 0 C SW2-5 - 1 C SW2-6 - REN C SW2-7 - ICF C SW2-8 - CNX C C C. HP 21XX SERIES COMPUTER C C BRANCH AND MNEMONIC TABLE ENTRIES: C ---------------------------------- C C TSYFM(I,R,R,I,R,I) OV=XX, ENT=TSYFM, FIL=%TSYFM C C CONFIGURATION TABLE ENTRIES: C ---------------------------- C C R 51,1,42 C U1 C * C 0 * 42 "0" ENTRIES C 0 C 0 C . C . C C . C 0 C 0 C C C C------------------------------------------------------------------- C C THE 5359A OFTEN OUTPUTS STATUS WORDS NEEDED BY THE ATS PRO- C GRAMMER FOR MORE COMPLETE PROGRAMMING CONTROL. SEE THE 5359A C OPERATING AND PROGRAMMING MANUAL, ESPECIALLY TABLE 3-5, FOR MORE C DETAILS ON STATUS WORD MEANINGS. C C PROGRAMS 'DVSTS' AND 'DVINT' MUST BE LOADED PRIOR TO RUNNING C 'BASIC'. THE FOLLOWING EXAMPLE ASSUMES THAT THE LOGICAL UNIT C ENTRY FOR THE 5359A HAS BEEN SET TO '12' IN 'DVINT'. C C 100 LET S = ISN(0) C 110 LET L = LUDV(S,51,1) C 120 TRAP 12 GOSUB 1000 C 130 CALL SRQ(L,16,"DVSTS") C 140 CALL HPIB(L,14,0) C . C . C C C . C 1000 REM TRAP SUBROUTINE C 1010 STGET(L,T) C 1020 LET O = OCT(T) C 1030 PRINT "STATUS WORD = ",O ̺C 1040 CALL SRQ(L,17,0) C 1050 RETURN C C C C------------------------------------ C C TSYFM(IUNIT,DATA,DELAY,MDELY,WIDTH,MWDTH) C C WHERE: C C IUNIT = UNIT # C C DATA = 6.25 TO 10000000 HZ FOR FREQUENCY C = .0000001 TO .160 SECONDS FOR PERIOD C = 0.0 FOR EXTERNAL TRIGGER C C DELAY = 0.0 TO .160 SECONDS FOR EXTERNAL TRIGGER/DELAY C = 2 TO 999999 EVENTS FOR EXTERNAL TRIGGER/DELAY C C MDELY = 0 TO 16 MEG EVENTS FOR EXTERNAL TRIGGER/DELAY C (MDELY + DELAY <= 16777215) C C WIDTH = .000000005 TO .160 SECONDS FOR EXT TRIG/DELAY C (WIDTH + DELAY <= 160E-3) C = 1 TO 999999 EVENTS FOR EXTERNAL TRIGGER/DELAY C (WIDTH + DELAY <= 16777216) C C MWDTH = 0 TO 16 MEG EVENTS FOR EXTERNAL TRIGGER/DELAY C (WIDTH + MWDTH <= 16777214) C C C C------------------------------------ DIMENSION IERMS(5) DATA IDTN / 51 / DATA IERMS / 10,5,2HTS,2HYF,2HM / C IERMS=10 C C FIND STATION AND LU #'S C ISTN = STATION # C LU1 = HP-5359A LU C LUIB = HP-IB LU C C ISTN = ISN(DUMMY) LU1 = LUDV(ISTN,IDTN,IUNIT) LUIB = IBLU0(LU1) IF(LU1 .LE. 0 .OR. LUIB .LE. 0) GO TO 800 C C C CALL X SUB C CALL XSYFM(LU1,LUIB,IERMS,IUNIT,DATA,DELAY,MDELY,WIDTH,MWDTH) IF(IERMS)800,20,800 C C EXIT C 20 RETURN C C ERROR EXIT C 800 CALL ERROR(IERMS,IERMS(2)) RETURN END C C--------------------------------------------- C SUBROUTINE XSYFM(LU1,LUIB,IERMS,IUNIT,DTA,DLY,MDLY,WIDTH,MWDTH), +09580-16453 REV.2026 800131 DIMENSION IERMS(5),IBUF(42),CBUF(1),IOBUF(24),IFS(6) DIMENSION DBUF(1),EBUF(1),WBUF(1) EQUIVALENCE (DBUF,IBUF(2)),(EBUF,IBUF(4)),(WBUF,IBUF(7)) IBUFL = 42 C--------------------------------------------- C C C THE PARAMETERS IN THE CALLING SEQUENCE HAVEpf THE FOLLOWING C MEANINGS. C C LUIB = LU # OF HP-IB BUSS. C LU1 = LU # OF HP-5359A C C IERMS IS A FIVE WORD ARRAY WITH IERR(1) CONTAINING C THE ERROR CODE. C C 0 = NO ERROR C 1 = PARAMETER ERROR C C ERROR MESSAGES THAT PERTAIN TO THE HP-IB. C C 9 = I/O CALL REJECTED C 10 = LUIB OR LU1 = 0 C 12 = I/O DEVICE TIME OUT C 13 = IFC DETECTED DURING I/O REQUEST C 14 = SRQ ABORTED C 15 = NON-EXISTENT ALARM PROGRAM C 16 = ILLEGAL CONTROL REQUEST C 17 = EQT EXTENSION AREA FULL C C IERMS(2) = ERROR MNEMONIC CHARACTER COUNT C IERMS(3) TO IERMS(5) = ERROR MNEMONIC C C C--------------------------------------------- C C C RETRIEVE CONFIGURATION DATA C CALL TIM(51,IUNIT,1,IBUF,IBUFL,IER) IF (IER .NE. 0) RETURN C IERMS=1 DO 240 I = 1,24 IOBUF(I) = 20040B 240 CONTINUE C C IF(DTA.NE.0.0.OR.DLY.NE.0.0.OR.WIDTH.NE.0.0) GO TO 250 IF(MDLY .EQ. 0 .AND. MWDTH .EQ. 0) GO TO 700 C C CHECK FOR EXTERNAL TRIGGER MODE C 250 IF(DTA .EQ. 0.0) GO TO 280 C C FREQUENCY/PERIOD OR TRIGGERED FREQUENCY C IF(DLY .NE. 0.0 .OR. MDLY .NE. 0) GO TO 8000 IF(DTA.GT.1.0.AND.(DTA.LT.6.25.OR.DTA.GT.10E6))GO TO 8000 IF(DTA.LT.1.0.AND.(DTA.LT.1E-7.OR.DTA.GT.16E-2))GO TO 8000 IF(WIDTH .LT. 5E-9 .OR. WIDTH .GT. 16E-2) GO TO 8000 IF(MWDTH .NE. 0 .OR. MDELY .NE. 0) GO TO 8000 IF(DTA .LT. 1.0 .AND. (DTA .LT. (WIDTH+85E-9))) GO TO 8000 IF(DTA .GE. 1.0 .AND. (1.0/DTA) .LE. WIDTH) GO TO 8000 GO TO 300 C C EXTERNAL TRIGGER (EVENTS OR DELAY) C 280 IF (DLY .GT. 16E-2 .OR. MDLY .GT. 0) GO TO 290 C C DELAY C IF(DLY .LT.0.0 .OR. DLY .GT.16E-2) GO TO 8000 IF(WIDTH .LT. 5E-9 .OR. WIDTH .GT. 16E-2) GO TO 8000 IF((WIDTH + DLY) .GT. 16E-2) GO TO 8000 IF(MWDTH .NE. 0 .OR. MDLY .NE. 0) GO TO 8000 GO TO 300 C C EVENTS C 290 IF(DLY .LT. 2.0 .AND. MDLY .EQ. 0) GO TO 8000 IF(DLY .GT. 777215.0 .AND. MDLY .EQ. 16) GO TO 8000 IF(WIDTH .LT. 1.0 .AND. MWDTH .EQ. 0) GO TO 8000 IF(WIDTH .GT. 777214.0 .AND. MWDTH .EQ. 16) GO TO 8000 IF(WIDTH .GT. 999999.0 ) GO TO 8000 IF(DLY .GT. 999999.0) GO TO 8000 IF(MDLY .LT. 0 .OR. MDLY .GT. 16) GO TO 8000 IF(MWDTH .LT. 0 .OR. MWDTH .GT. 16) GO TO 8000 IF((MDLY+MWDTH).GE.16.AND.(WIDTH+DLY).GT.777216.0)GOTO8000 C C SET UP OUTPUT BUFFER C 300 IF (DTA .EQ. 0.0) GO TO 370 IF (DTA .LT. 1.0) GO TO 305 IOBUF(1) = 2HF+ GO TO 310 305 IOBUF(1) = 2HP+ 310 DO 320 I= 1,6 IFS(I) = 20040B 320 CONTINUE CALL F2A(DTA,IFS(1)) DO 350 I=2,6 IOBUF(I) = IFS(I) 350 CONTINUE IOBUF(7) = 2H , 370 IF (DLY .LT. 1.0) GO TO 500 C C DLY AND WIDTH IS IN EVENTS C DLY = AINT(DLY) IF(DLY.EQ.0..AND.DTA.NE.0..AND.MDLY.EQ.0)GOTO455 IOBUF(8) = 2HD+ IF (MDLY .GE. 10) GO TO 400 IOBUF(9) = 30060B + MDLY GO TO 410 400 IOBUF(9) = 30460B + MDLY - 12B 410 DO 420 I=1,6 IFS(I) = 20040B 420 CONTINUE CALL TSF2A(DLY,IFS) IF (IFS(1) .EQ. -1) GO TO 8000 DO 450 I= 2,6 IOBUF(I+8) = IFS(I) 450 CONTINUE IOBUF(15) =2H , 455 IOBUF(16) = 2HW+ WIDTH = AINT(WIDTH) IF(MWDTH .GE. 10) GO TO 460 IOBUF(17) = 30060B + MWDTH GO TO 470 460 IOBUF(17) = 30460B + MWDTH - 12B 470 DO 480 I= 1,6 IFS(I) = 20040B 480 CONTINUE CALL TSF2A(WIDTH,IFS) IF (IFS(1) .EQ. -1) GO TO 8000 DO 490 I=2,6 IOBUF(I+16) = IFS(I) 490 CONTINUE IOBUF(23) = 2H , GO TO 600 C C DLY AND WIDTH IS IN TIME C 500 IF (DLY .EQ. 0.0 .AND. DTA .NE. 0.0) GO TO 545 IOBUF(8) = 2HD+ DO 520 I=1,6 IFS(I) = 20040B 520 CONTINUE CALL F2A(DLY,IFS(1)) DO 530 I=2,6 IOBUF(I+8) = IFS(I) 530 CONTINUE g IOBUF(15) = 2H , DO 540 I=1,6 IFS(I) = 20040B 540 CONTINUE 545 IOBUF(16) = 2HW+ CALL F2A(WIDTH,IFS(1)) DO 550 I = 2,6 IOBUF(I+16) = IFS(I) 550 CONTINUE IOBUF(23) = 2H , C C ENABLE OUTPUT C C 600 IOBUF(24) = 2HOE INUM = 24 GO TO 800 C C C DISABLE OUTPUT ON ZERO DATA ENTRY C 700 IOBUF(1) = 2HOD INUM = 1 C C C STORE DATA IN SAM C 800 DBUF = DTA EBUF = DLY IBUF(6) = MDLY WBUF = WIDTH IBUF(9) = MWDTH C$ CALL TIM(51,IUNIT,2,IBUF,IBUFL,IER) C$ IF (IER .NE. 0) RETURN C C C C C REMOTE ENABLE C 2000 CALL EXEC(100003B,1600B+LUIB) GOTO 9000 70 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C SEND OUTPUT BUFFER C CALL REIO(100002B,LU1,IOBUF(1),INUM,IDUMY,0) GOTO 9000 71 CALL ABREG(IA,IB) IF(IB .LT. 0) GOTO 8500 C C C RETURN C IERMS=0 RETURN C C ERROR EXIT C 8500 IERMS=IAND(IA,377B)+11 GOTO 8000 9000 IERMS=9 8000 IERMS(2)=5 IERMS(3)=2HTS IERMS(4)=2HYF IERMS(5)=2HM RETURN END C C SUBROUTINE TSF2A(FNUM,IFS),09580-16453 REV.2026 800131 C C C ON ENTRY, FNUM CONTAINS A FLOATING POINT NUMBER IN THE C THE RANGE 0.0 - 999999.0 (ANY F.P. FORMAT ACCEPTABLE TO C SUBROUTINE "F2A"). THE NUMBER MUST BE POSITIVE. C C ON RETURN, IFS(2-4) CONTAINS PACKED ASCII WITH LEADING C ZEROES, NO DECIMAL POINT, NO "E". IFS(5-6) CONTAINS C ASCII BLANKS (20040B). C C IFS(1) = -1 (INTEGER FORMAT) FOR ERROR RETURN. C C C DIMENSION IFS(6),JFS(10) C C C IF (FNUM .GE. 0.0 .OR. FNUM .LT. 1E6) GO TO 10 IFS(1) = -1 RETURN C C C 10 DO 100 I=1,6 IFS(I) = 20040B 100 CONTINUE C C CONVERT TO ASCII C C CALL F2A(FNUM,IFS(1)) IF(IAND(IFS(2),177400B) .NE. 37400B) GO TO 110 IFS(1) = -1 RETURN C C ʲ FIND "E" IF PRESENT C 110 IEFLG = 0 DO 150 I=2,6 IF (IAND(IFS(I),177400B) .EQ. 42400B) GO TO 130 IF (IAND(IFS(I),377B) .EQ. 105B) GO TO 120 GO TO 150 120 IENUM = (IAND(IFS(I+1),177400B))/256 GO TO 140 130 IF (I .EQ. 2) IEFLG = 1 IENUM = IAND(IFS(I),377B) 140 IENUM = IENUM - 60B GO TO 160 150 CONTINUE IENUM = 0 C C IENUM CONTAINS INTEGER VALUE OF "E" (0-6). C NOW UNPACK CHARACTERS. C 160 DO 200 I=1,5 N=(I*2)-1 JFS(N) = (IAND(IFS(I+1),177400B))/256 JFS(N) = IAND(JFS(N),377B) JFS(N+1) = IAND(IFS(I+1),377B) 200 CONTINUE IF (IEFLG .NE. 1) GO TO 210 JFS(1) = 61B JFS(2) = 40B IENUM = IENUM - 1 C C LOCATE THE DECIMAL POINT C 210 DO 220 ID=1,10 IF (JFS(ID) .EQ. 56B .OR. JFS(ID) .EQ. 40B) GO TO 230 IF (JFS(ID) .EQ. 105B) GO TO 225 220 CONTINUE IFS(1) = -1 RETURN C C VALID NUMBER BUT NO DECIMAL POINT C 225 JFS(ID+1) = 60B C C DELETE DECIMAL POINT, ADJUST E VALUE C 230 DO 250 I=ID,9 JFS(I) = JFS(I+1) IF (JFS(I) .EQ. 105B .OR. JFS(I) .EQ.40B) GO TO 240 GO TO 250 240 DO 245 J=I,10 JFS(J) = 60B 245 CONTINUE GO TO 260 250 CONTINUE C C SHIFT CHARACTERS AS NECESSARY C 260 ISHFT = 7 - (ID+IENUM) IF (ISHFT .EQ. 0) GO TO 300 DO 280 I=10,ISHFT+1,-1 JFS(I) = JFS(I-ISHFT) 280 CONTINUE C C ADD LEADING ZEROES C DO 290 I=1,ISHFT JFS(I) = 60B 290 CONTINUE C C PACK CHARACTERS C 300 DO 310 I=1,3 J = (I*2)-1 JFS(J) = JFS(J)*256 JFS(J) = IAND(JFS(J),177400B) JFS(J+1) = IAND(JFS(J+1),377B) IFS(I+1) = JFS(J)+JFS(J+1) 310 CONTINUE C C LOAD TRAILING BLANKS C DO 320 I=5,6 IFS(I) = 20040B 320 CONTINUE C C C RETURN END END$ t0.**0  09600-18003 A S 0122 12759A OPT. 100 TEST PROGRAM             H0101 rASMBA̬B GGŠPGAMҠDUA̠PA 59APN00 SԠUPMNԠUD ϠHANN̠SSPŠ(HP0A PANGNSUNS N:HŠNGSHGSҠNS AŠϠBŠNDASA.(..AD ADADDSS0DMA̠SNDAS A̩ SԠP00 SԠSɯϠSԠDŠҠ33 3PUSHPSԠUN HŠMPUҠ̠HAԠH000NMMYDAA SԠSADSԠҠHŠAUAYPA 5PUSHUN HŠMPUҠ̠HAԠH000NMMYDAA 6SԠSADSԠҠAD PUSHUN HŠMPUҠ̠HAԠH0003NMMYDAA SԠSADSԠҠMUPؠAD 9PUSHUN 0SԠSSPŠASS: AAHHANN̠AϠP6ƠAUAYPA AAHHANN̠BϠP6ƠSYSMPA GGҠSԠϠ-SPŠNGAV -NNA̠SU -NMA̠GG BHHANNSAŠ-VSDV. -MůDV.MSNŠPAN -.5MSϠPANS DSPAYBHHANNSHGGҠNHANN̠A SUS: ADSPAYSHS6PUSSNHANN̠BҠVY PUSŠNHANN̠A BPNAŠHANN̠ASMS éPNAŠAHNN̠BS50US NA̠SԠASSGNMNS SYSMPAҠSԠ0 HMPؠSԠ AUؠPAҠSԠ5 ADSԠ6 G00B NP Ơ0.UNƠNUPԠSYSM BSG.HɯϠSԠD DAAɠ.NGU ADAB.A O SAA.ɯ DASɠ.NSUNS ADAB SASñ DASS ADAB SASS HAԠҠAUؠPAҠNSHGS HԠ ASG ANDB AƬA̠.PSNϠADS ҠB0.ADDN̠BS SAPұ.SAV HAԠҠADADDSSNSHGS HԠ ASG ANDB AƬA ҠB0 SAD HAԠҠMPؠADDSSNSHGS HԠ3 ASG ANDB AƬA SAB ҠB0 SAD DAB ҠB SAHر DAB ҠB0 ADAD SAHز MP00B SAԠAԠ00BƠNGUANSABSHD G00B DAN SBUԠ.SSUŠSYSMNMAZ DAD SBUԠ.SSUŠADNAB DAD SBUԠ.SSUŠASԠADDSS DASP SBUԠ.SԠSYSMPAҠ-50US DAPұ SBUԠ.NABŠAUؠPA DAPҴ SBUԠ.SԠAUؠPAҠϠMS PDAN SANұ.SԠHANUN DAHر SBUԠ.SԠMUؠHAN DAHز SԠSBUԠ.SUNA̠SANƠHAN SZNұ MPS MPP NұNP NҠDà-6 NҠԠ000.NMAZŠD DԠ00300.ADNABŠSԠ6 DԠ0036.ASԠADDSS SPԠ005.SYSMPAҠ-50US PұԠ000.AUؠPAҠSԠ5 PҴԠ0050.MUPؠ6HANHPA HرԠ000.HANADDҡ SS HزԠ06 AɠA0 SɠSà0 SSɠSS0 BԠ B0Ԡ0000 B0Ԡ0036 BԠ0000 B0Ԡ0000 DDà- UԠNP AA0 SñSà0 SSSS0 MP- MPUԬ AU0 BU SGU ND .  09601-18001 A S 0122 RTE DEVICE SUBR FOR 16 BIT REGISTERS             H0101 r[ASMB,R,B,L,C * * HED GENERAL PURPOSE REGISTER RTE DEVICE SUBROUTINE 7/74 NAM GPR,7 09601-16001 REV.A 740715 ENT GPRSB,GPRMB,GPRIO * * * * THIS SUBROUTINE OPERATES THE FOLLOWING I/O CARDS IN * AN RTE ENVIRONMENT USING DVR62. * * 12554 16-BIT DUPLEX REGISTER * 12597 8-BIT DUPLEX REGISTER * 12566 16-BIT MICROCIRCUIT DUPLEX REGISTER * 12930 16-BIT UNIVERSAL INTERFACE * 12551 16-BIT RELAY OUTPUT REGISTER * * ************************************************ * * * SOURCE TAPE: 09601-18001 * * RELOC. TAPE: 09601-16001 * * ERS: A-09601-16001-1 * * LISTING: A-09601-16001-2 * * * ************************************************ * * W.M.PARRISH 7/74 REV.A * * * SPC 3 * * EXTERNALS * EXT ERROR,#ERRU,ERRCD EXT EXEC EXT .ENTR EXT #GPRN,#GPRT EXT FLOAT EXT CONV,BCD6 EXT .RND EXT .DST SKP * THE FOLLOWING CALLS ARE AVAILABLE TO THIS SUBROUTINE: * * GPRSB(U,F,P,S) * * U = UNIT NUMBER (1 TO NUMBER OF UNITS) * F = FUNCTION SELECT (0 TO 3) * 0 = INPUT STATE OF SPECIFIED BIT * 1 = OUTPUT STATE OF SPECIFIED BIT OR'D WITH P * PREVIOUS PROGRAM WORD. * 2 = OUTPUT STATE OF SPECIFIED BIT ALL OTHER BITS 0. * 3 = OUTPUT STATE OF SPECIFIED BIT ALL OTHER BITS 1. * P = POSITION OF BIT IN WORD ( 0 THROUGH 15 ). * S = STATE OF BIT SPECIFIED BY P (0=FALSE, 1=TRUE) * ************************************************************ * * GPRMB(U,F,B) * * U = UNIT NUMBER (1 TO # OF UNITS) * F = FUNCTION SELECT * 0 = INPUT INTEGER WORD * 1 = OUTPUT INTEGER WORD * 2 = INPUT BCD * >  3 = OUTPUT BCD * B = BIT PATTERN * ************************************************************ * * GPRIO(U,F,A,B) * * U = UNIT NUMBER (1 TO NUMBER OF UNITS) * F = FUNCTION SELECT * 0 = WORD OUT / WORD IN * 1 = WORD OUT / BCD IN * 2 = BCD OUT / WORD IN * 3 = BCD OUT / BCD IN * A = WORD TO WRITE OUT * B = WORD TO READ IN ON INTERRUPT * ************************************************************ * SKP * * SINGLE - BIT ENTRY * UNITS BSS 1 FUNS BSS 1 BIT BSS 1 STATE BSS 1 GPRSB NOP JSB .ENTR GET PARAMETER ADDRESS DEF UNITS CLA STA ERRCD LDA GPRSB STA GPRMB SAVE RETURN ADDRESS LDA UNITS,I JSB CUNIT CHECK UNIT NUMBER FOR VALIDITY JSB RCONF READ CONFIG. INFO FROM TABLE LDB .15 LDA BIT,I JSB IPROC CHECK IF BIT POSITION > 15. STA BPOS LDA .1 JSB ROTAT COMPUTE BIT MASK STA BMASK ... AND SAVE IT. LDB .3 MAX VALID FUNCTION # LDA FUNS,I SZA,RSS FUNCTION=0? JMP SINP YES, SINGLE BIT INPUT JSB IPROC CHECK IF FUNCTION > 3 LDB .1 LDA STATE,I JSB IPROC CHECK STATE (0 OR 1?) SZA ZERO? LDA BMASK ONE STA BSTAT LDA FUNS,I CLB CPA .2 RESET? STB PWA,I YES CCB SET? CPA .3 STB PWA,I YES LDA BMASK COMPUTE OUTPUT WORD CMA AND PWA,I MASK-OUT BIT IN WORD ADA BSTAT ADD NEW STATE STA PWA,I THIS WORD OUT, SAVE IN TABLE. JSB WRITE OUTPUT WORD JMP GPRMB,I RETURN SINP JSB IN READ ONE WORD AND BMASK ISOLATE BIT SZA IS IT ON? LDA .1 B YES, RETURN A 1 STA STATE,I RETURN ANSWER (0 OR 1) JMP GPRMB,I RETURN SKP * * MULTIPLE - BIT CONTROL * UNITA BSS 1 FUNA BSS 1 PATN BSS 1 GPRMB NOP JSB .ENTR DEF UNITA CLA STA ERRCD LDA UNITA,I JSB CUNIT CHECK UNIT NUMBER JSB RCONF GET CONFIG INFO FROM TABLE LDB .3 MAX VALID FUNCTION LDA FUNA,I JSB IPROC CHECK FUNCTION SLA,RSS INPUT OR OUTPUT? JMP IN16 INPUT LDB PATN,I CPA .3 JSB TOBCD STB 0 JSB WRITE STA PWA,I UPDATE PREV WORD THIS UNIT. JMP GPRMB,I IN16 JSB IN READ A WORD LDB 0 PUT IT IN B REGISTER LDA FUNA,I GET FUNCTION CODE CPA .2 IS IT 2? JSB TOOCT YES, BCD... CONVERT TO OCTAL STB PATN,I RETURN THIS VALUE. JMP GPRMB,I RETURN. SKP * * ENTRY TO WRITE, THEN READ ON INTERRUPT! * UNITB BSS 1 FUNB BSS 1 PTNA BSS 1 PTNB BSS 1 GPRIO NOP JSB .ENTR DEF UNITB CLA STA ERRCD LDA GPRIO STA GPRMB STORE RETURN ADDRESS LDA UNITB,I JSB CUNIT CHECK UNIT NUMBER JSB RCONF GET CONFIG. INFO FROM TABLE LDB .3 MAX VALID FUNCTION CODE LDA FUNB,I JSB IPROC CHECK VALIDITY OF FUNCTION LDB PTNA,I ARS SLA BCD OUT? JSB TOBCD YES, CONVERT TO BCD. STB WORD1 STB PWA,I UPDATE PREV WORD/THIS UNIT. JSB OUTIN WRITE, THEN READ. LDB WORD2 LDA FUNB,I SLA BCD COMING IN? JSB TOOCT YES, CONVERT. STB PTNB,I RETURN RESULT JMP GPRMB,I RETURN. SKP * * SUBROUTINE TO CHECK UNIT NUMBER * CALLING SEQUENCEd: * LDA * JSB CUNIT * * RESULT: INVALID UNIT # - > ERROR 2 * VALID UNIT # - > -> UNIT * CUNIT NOP STA UNIT CMA,INA ADA #GPRN SSA TOO LARGE? JMP ERR2 YES LDA UNIT CMA,INA ZERO OR NEGATIVE? SSA,RSS JMP ERR2 YES JMP CUNIT,I * * SUBROUTINE TO READ CONFIGURATION INFO FROM EXTERNAL TABLE. * RCONF NOP LDA TBLDF GET DEF TO START OF TABLE SSA,RSS I-BIT SET? JMP *+4 NO AND MASK YES, STRIP OFF I BIT LDA 0,I CHAIN THROUGH INDIRECT LINK JMP *-4 AND CHECK AGAIN STA TBLAD STORE SA OF TABLE LDA UNIT UNIT NUMBER ADA M1 -1 MPY .3 OFFSET TO START OF INFO FOR THIS UNIT. ADA TBLAD A <- START OF TABLE THIS UNIT. LDB 0,I STB LU LOGICAL UNIT NUMBER INA LDB 0,I STB CNFG CONFIG INFO. INA STA PWA PTR TO PREV. WORD/THIS UNIT. LDB 0,I JMP RCONF,I RETURN SKP * * ONE-WORD INPUT ROUTINE * IN NOP READ A WORD, MASK IF 8-BIT CARD, RETURN IT IN A REG. LDA CNFG AND .1 SZA JMP ERR3 READ NOT ALLOWED ON THIS CARD. JSB EXEC DEF *+5 DEF .2 DVR62 ALWAYS USES WRITE-CALLS. DEF LU LOGICAL UNIT NUMBER DEF RQBF READ QUEUE BUFFER. DEF .1 NUMBER OF ENTRIES LDA CNFG AND .2 SZA,RSS JMP IN1 16-BIT CARD LDA INWD 8-BIT CARD AND B377 MASK LOWER EIGHT. STA INWD JMP IN,I IN1 LDA INWD JMP IN,I RQBF DEC 4 DEC 1 DEF INWD INWD BSS 1 INPUT BUFFER SKP * * WRITE-OUT THE WORD IN THE A-REGISTER *  (8-BITS FOR 8-BIT CARD) * WRITE NOP STA OTWD JSB CKENC SET WQBUF FOR ENCODE/NO ENC. LDA CNFG AND .2 SZA,RSS JMP WR1 16-BIT CARD LDA OTWD AND B377 8-BIT MASK STA OTWD WR1 JSB EXEC DEF *+5 DEF .2 WRITE REQUEST DEF LU LOGICAL UNIT NUMBER DEF WQBUF WRITE QUEUE BUFFER DEF .1 # OF ENTRIES LDA OTWD JMP WRITE,I WQBUF DEC 3 TYPE 3 (READ) DEC 1 OUTPUT 1 WORD DEF OTWD OUTPUT BUFFER OTWD BSS 1 * * CHECK CONFIG TABLE FOR ENCODE OR FREE RUN * CKENC NOP ENTRY LDA CNFG AND .4 SZA,RSS BIT 2 ON? JMP NENC NO, - > NO ENCODE LDA .1 STA WQBUF+1 STORE A 1 IN QUEUE BUFF. JMP CKENC,I RETURN NENC CLA STA WQBUF+1 STORE A 0 IN QUEUE BUFF. JMP CKENC,I RETURN SKP * * CHECK TO SEE IF A PARAMETER IS BETWEEN 0 AND * A MAXIMUM VALUE, INCLUSIVE. * B REG CONTAINS MAX VALUE (DESTROYED) * A REG CONTAINS COMP. VALUE (PRESERVED) * IPROC NOP SSA JMP ERR1 <0 ERROR CMB ADB 0 SSB,RSS JMP ERR1 > MAX ERROR JMP IPROC,I * * ERROR HANDLING * ERR1 LDA .1 GENERAL PARAMETER ERROR JMP ERR ERR2 LDA .2 ERROR ON UNIT # JMP ERR ERR3 LDA .3 READ FROM WRITE-ONLY CARD JMP ERR ERR4 LDA .4 BCD CONVERSION ERROR ERR STA ERRCD JSB ERROR DEF *+5 DEF ERRCD DEF MNEM DEF #ERRU DEF GPRMB JMP GPRMB,I MNEM DEC 3 ASC 2,GPR SKP * * CONVERT A WORD TO BCD * TOBCD NOP NUMBER TO BE CONVERTED IN B REGISTER SSB JMP ERR1 NUMBER IS NEGATIVE LDA CNFG AND .2 SZA,RSS 8 OR 16 BIT CARD? JMP TB16 16-BIT CARD!!! LDA 1 8-BIT CMA,AYINA ADA .99 SSA TOO-BIG FOR 8-BIT? JMP ERR4 JMP TB NO, CONVERT TB16 LDA 1 16-BIT CMA,INA ADA .9999 SSA TOO-BIT FOR 16-BIT? JMP ERR4 YES TB LDA 1 CLB JSB FLOAT TO FL. PT. DST TEMP JSB BCD6 CONVERT TO BCD DEF *+3 RETURN ADDRESS DEF TEMP ADDRESS OF DATA DEF TEMP LDB TEMP RETURN BCD IN B REG. JMP TOBCD,I * * CONVERT BCD TO AN OCTAL WORD. * TOOCT NOP STB 0 CLB,INB BLF,BLF SET UP B REG FOR 'CONV' JSB .DST DEF TEMP JSB CONV BCD TO F.P. DEF *+2 DEF TEMP JSB .RND F.P. TO INTEGER LDB 0 JMP TOOCT,I RETURN SKP * * SUBROUTINE TO WRITE A WORD AND READ ANOTHER ON INTERRUPT. * WORD1 - > OUT * WORD2 < - IN * OUTIN NOP LDA CNFG AND .1 SZA JMP ERR3 READ NOT ALLOWED LDA CNFG CHECK IF 16 OR 8 BIT AND .2 SZA,RSS 16-BIT CARD? JMP OT1 LDA WORD1 AND B377 MASK LOWER 8 STA WORD1 OT1 JSB EXEC DEF *+5 DEF .2 WRITE REQUEST (ALWAYS FOR DVR62) DEF LU LOGICAL UNIT NUMBER DEF WRQBF WRITE-READ-QUEUE-BUFFER DEF .1 NUMB. ENTRIES LDA CNFG AND .2 SZA,RSS 8-BIT CARD JMP OTEX NO, 16 BIT LDA WORD2 AND B377 MASK LOWER 8 STA WORD2 OTEX LDA WORD2 JMP OUTIN,I * * WRITE QUEUE BUFFER * WRQBF DEC 5 OUTPUT AND INPUT ON INTERRUPT CODE DEC 1 NUMBER OF OPERATIONS DEF WORD1 POINTER TO OUTPUT BUFFER DEF WORD2 POINTER TO INPUT BUFFER WORD1 BSS 1 WORD2 BSS 1 SKP * * ROTATE A NO. OF TIMES SPECIFIED IN BPOS * ROTAT NOP LDB BPOS CMB,INB ROT10 SSB,INB,RSS JMP ROTAT,I *EXIT RAL 2*($ JMP ROT10 SPC 5 * * CONSTANTS AND STORAGE * TEMP BSS 2 BPOS BSS 1 BMASK BSS 1 BSTAT BSS 1 PWA BSS 1 LU BSS 1 TBLDF DEF #GPRT UNIT BSS 1 TBLAD BSS 1 CNFG BSS 1 * * M1 DEC -1 .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .15 DEC 15 .99 DEC 99 .9999 DEC 9999 B377 OCT 377 MASK OCT 77777 END ?*  09601-18006 A S 0122 GENERAL PURPOSE REGISTER RTE-BASIC VERIFICATION             H0101 100 REM GENERAL PURPOSE REGISTER RTE-B VERIFICATION TEST 110 REM 120 REM SOURCE TAPE: 09601-18006 130 REM ERS: A-09601-18006-1 140 REM LISTING: A-09601-18006-2 150 REM 200 PRINT 210 PRINT "GENERAL PURPOSE REGISTER RTE-BASIC VERIFICATION TEST" 220 PRINT 270 PRINT "MOUNT TEST CONNECTOR BEFORE BEGINNING" 320 PRINT 1005 GOSUB 9000 1010 PRINT "**CHECKING SINGLE-BIT CALLS**" 1020 FOR I=0 TO B-1 1030 GPRSB(U,2,I,1) 1040 GPRSB(U,0,I,S) 1050 IF S=1 THEN 1070 1060 PRINT "BIT ";I;" FAILED S/B FALSE, IS TRUE" 1070 GPRSB(U,2,I,0) 1080 GPRSB(U,0,I,S) 1090 IF S=0 THEN 1110 1100 PRINT "BIT ";I;" FAILED S/B TRUE, IS FALSE" 1110 NEXT I 1200 PRINT "**CHECKING BCD OUTPUT/INPUT USING GPRMB**" 1201 IF B=16 THEN 1205 1202 PRINT "DECIMAL VALUES (0-99), USE 0 TO STOP" 1203 GOTO 1210 1205 PRINT "DECIMAL VALUES (0-9999) , USE 0 TO STOP" 1210 PRINT "VALUE OUT"; 1220 INPUT V1 1230 GPRMB(U,3,V1) 1240 GPRMB(U,2,V2) 1250 PRINT "VALUE IN="V2 1260 IF V1=0 THEN 1300 1270 GOTO 1210 1300 PRINT "**CHECKING BCD OUTPUT/INPUT USING GPRIO**" 1301 IF B=16 THEN 1305 1302 PRINT "DECIMAL VALUES (0-99), USE 0 TO STOP" 1303 GOTO 1310 1305 PRINT "DECIMAL VALUES (0-9999) , USE 0 TO STOP" 1310 PRINT "VALUE OUT"; 1320 INPUT V1 1330 GPRIO(U,3,V1,V2) 1340 PRINT "VALUE IN=";V2 1350 IF V1=0 THEN 1400 1360 GOTO 1310 1390 LET K=1 1400 PRINT "**CHECKING WORD OUT/IN USING GPRMB**" 1410 FOR I=0 TO B-1 1420 LET K=2^I 1430 GPRMB(U,1,K) 1440 GPRMB(U,0,L) 1450 IF K=L THEN 1470 1460 PRINT "ERROR, VALUE OUT = ";OCT(K);" VALUE IN= ";OCT(L);" OCTAL" 1470 NEXT I 1500 PRINT "**CHECKING WORD OUT/IN USING GPRIO**" 1510 FOR I=0 TO B-1 1520 LET K=2^I 1530 GPRIO(U,0,K,L) 1550 IF K=L THEN 1570 1560 PRINT "ERROR, VALUE OUT = ";OCT(K);" VALUE IN= ";OCT(L);" OCTAL" 1570 NEXT I 1600 GOTO 1005 9000 PRINT 9005 PRINT "UNIT NUMBER"; 9010 INPUT U 9015 IF U=0 THEN 9100 9020 PRINT "8&   OR 16-BIT CARD"; 9030 INPUT B 9040 IF B=8 OR B=16 THEN 9060 9050 GOTO 9020 9060 RETURN 9100 PRINT 9110 PRINT "END OF TEST" 9120 STOP 9130 END   09601-18007 B S 0122 12551B RELAY REGISTER RTE-BASIC VERIFICATION             H0101 100 REM RELAY REGISTER TEST 110 REM 120 REM SOURCE: 09601-18007 REV.B 130 REM ERS: A-09601-18007-1 140 REM 150 REM AUTHOR - W.M.PARRISH 8 74 160 REM VERSION - 10 NOV 75 C.LEHNER 170 REM 200 PRINT 210 PRINT "RELAY REGISTER RTE-B VERIFICATION TEST" 220 PRINT 230 PRINT "FUNCTIONS:" 240 PRINT " 1) CHANGE STATUS OF A SINGLE BIT" 250 PRINT " 2) OUTPUT BCD WORD" 251 PRINT " 3) OUTPUT ALL ZEROS (RELAYS OPEN)" 252 PRINT " 4) OUTPUT ALL 1'S (RELAYS CLOSED)" 253 PRINT " 5) BCD READBACK (READBACK CARDS ONLY)" 254 PRINT " 6) NEW UNIT NUMBER" 255 PRINT " ANYTHING ELSE STOPS THE PROGRAM" 260 PRINT 270 PRINT "IF THIS CARD IS NOT CONFIGURED FOR FREE-RUN OUTPUT" 280 PRINT "THEN THIS PROGRAM WILL HAVE TO BE ABORTED AND RESTARTED" 290 PRINT "AFTER EACH OUTPUT OPERATION. (OR 12V APPLIED BETWEEN" 295 PRINT "PINS V AND 18 TO SET FLAG.) TO AVOID GETTING THE" 300 PRINT "INSTRUCTIONS ON SUBSEQUENT OUTPUT OPERATIONS, TYPE " 310 PRINT " 5 GOTO 360 AFTER ABORTING THE PROGRAM FIRST TIME." 320 PRINT 360 PRINT "UNIT NUMBER"; 370 INPUT U 380 IF U=0 THEN 470 400 PRINT "FUNCTION"; 410 INPUT F 420 IF F=1 THEN 1000 430 IF F=2 THEN 2000 440 IF F=3 THEN 3000 450 IF F=4 THEN 4000 460 IF F=5 THEN 5000 470 IF F=6 THEN 360 480 PRINT 482 PRINT "END OF TEST" 484 PRINT 486 STOP 1000 PRINT "SINGLE-BIT TEST" 1010 PRINT "BIT #"; 1020 INPUT B 1030 PRINT "1=ON,0=OFF"; 1040 INPUT S 1050 GPRSB(U,1,B,S) 1060 GOTO 400 2000 PRINT "BCD OUTPUT" 2010 PRINT "NUMBER TO BE OUTPUT (0-9999)"; 2020 INPUT N 2030 GPRMB(U,3,N) 2040 GOTO 400 3000 PRINT "ALL 0'S OUT" 3010 GPRMB(U,1,0) 3020 GOTO 400 4000 PRINT "ALL 1'S OUT" 4010 ISETC("177777",Z) 4020 GPRMB(U,1,Z) 4030 GOTO 400 5000 PRINT "BCD OUTPUT / INPUT" 5010 PRINT "NUMBER OUT (0-9999)"; 5020 INPUT N 5030 PRINT "APPLY 12V BETWEEN PINS V AND 18 TO SET FLAG" 5040 GPRIO(U,3,N,M) 5050 PRINT "NUMBER IN = ";M 5060 &  GOTO 400    09601-18008 A S 0122 12930A UNIVERSAL INTERFACERTE-BASIC VERIFICATION             H0101 iW100 REM 12930A UNIVERSAL INTERFACE CARD VERIFICATION TEST 110 REM 120 REM SOURCE TAPE: 09601-18008 130 REM ERS: A-09601-18008-1 140 REM LISTING: A-09601-18008-2 150 REM 195 PRINT 200 PRINT "12930A UNIVERSAL INTERFACE CARD VERIFICATION TEST" 205 PRINT 210 PRINT "TEST FUNCTIONS ARE:" 220 PRINT " 1) TEST DATA CHANNEL" 230 PRINT " 2) TEST COMMAND/STATUS CHANNEL" 240 PRINT " (IF ENABLED AND CONFIGURED)" 250 PRINT " 3) TERMINATE TEST" 260 PRINT 270 PRINT "MOUNT TEST CONNECTOR BEFORE BEGINNING" 320 PRINT 325 PRINT "FUNCTION"; 330 INPUT F 335 PRINT 340 IF F=1 THEN 1000 350 IF F=2 THEN 2000 360 IF F#3 THEN 320 390 STOP 1000 PRINT "DATA CHANNEL TEST" 1005 GOSUB 9000 1010 PRINT "**CHECKING SINGLE-BIT CALLS**" 1020 FOR I=0 TO 15 1030 GPRSB(U,2,I,1) 1040 GPRSB(U,0,I,S) 1050 IF S=1 THEN 1070 1060 PRINT "BIT ";I;" FAILED S/B FALSE, IS TRUE" 1070 GPRSB(U,2,I,0) 1080 GPRSB(U,0,I,S) 1090 IF S=0 THEN 1110 1100 PRINT "BIT ";I;" FAILED S/B TRUE, IS FALSE" 1110 NEXT I 1200 PRINT "**CHECKING BCD OUTPUT/INPUT USING GPRMB**" 1205 PRINT "DECIMAL VALUES (0-9999) , USE 0 TO STOP" 1210 PRINT "VALUE OUT"; 1220 INPUT V1 1230 GPRMB(U,3,V1) 1240 GPRMB(U,2,V2) 1250 PRINT "VALUE IN=";V2 1260 IF V1=0 THEN 1300 1270 GOTO 1210 1300 PRINT "**CHECKING BCD OUTPUT/INPUT USING GPRIO**" 1305 PRINT "DECIMAL VALUES (0-9999) , USE 0 TO STOP" 1310 PRINT "VALUE OUT"; 1320 INPUT V1 1330 GPRIO(U,3,V1,V2) 1340 PRINT "VALUE IN=";V2 1350 IF V1=0 THEN 1400 1360 GOTO 1310 1390 LET K=1 1400 PRINT "**CHECKING WORD OUT/IN USING GPRMB**" 1410 FOR I=0 TO 15 1420 LET K=2^I 1430 GPRMB(U,1,K) 1440 GPRMB(U,0,L) 1450 IF K=L THEN 1470 1460 PRINT "ERROR, VALUE OUT = ";OCT(K);" VALUE IN= ";OCT(L);" OCTAL" 1470 NEXT I 1500 PRINT "**CHECKING WORD OUT/IN USING GPRIO**" 1510 FOR I=0 TO 15 1520 LET K=2^I 1530 GPRIO(U,0,K,L) 1550 IF K=L THEN 1570 1560 PRINT "ERRsV  OR, VALUE OUT = ";OCT(K);" VALUE IN= ";OCT(L);" OCTAL" 1570 NEXT I 1600 PRINT "**END DATA CHANNEL TEST**" 1610 GOTO 320 2000 PRINT "COMMAND/STATUS CHANNEL TEST" 2005 GOSUB 9000 2010 GPRSB(U,2,0,0) 2020 GPRMB(U,0,I) 2030 ISETC("200",K) 2040 IF I=K THEN 2100 2050 PRINT "'CLEARED' CONDITION S/B ";OCT(K);" IS ";OCT(I);" OCTAL" 2055 PRINT "(JUMPERS PLACED CORRECTLY??)" 2056 PRINT "(IS THIS THE RIGHT UNIT # FOR A 12930 C/S CHANNEL?)" 2100 PRINT "**CHECK BITS ON C/S CHANNEL" 2110 ISETC("2202",K) 2120 GPRSB(U,2,10,1) 2130 GOSUB 8000 2140 ISETC("4204",K) 2150 GPRSB(U,2,11,1) 2160 GOSUB 8000 2170 ISETC("10210",K) 2180 GPRSB(U,2,12,1) 2190 GOSUB 8000 2200 ISETC("20220",K) 2210 GPRSB(U,2,13,1) 2220 GOSUB 8000 2230 ISETC("40240",K) 2240 GPRSB(U,2,14,1) 2250 GOSUB 8000 2260 ISETC("100300",K) 2270 GPRSB(U,2,15,1) 2280 GOSUB 8000 2290 PRINT "**END C/S CHANNEL TEST**" 2300 GOTO 320 8000 GPRMB(U,0,I) 8010 IF K=I THEN 8050 8020 PRINT "C/S ERROR S/B ";K;" IS ";I;" OCTAL" 8050 RETURN 9000 PRINT 9005 PRINT "UNIT NUMBER"; 9010 INPUT U 9020 RETURN   09601-18010 A S 0122 5327A/B-H48 RTE-B DEVICE SUBROUTINE CTR27             H0101 EASMB,R,B,L HED ** RTE-B DEVICE SUBROUTINE (CTR27) ** * * ***************************************** * * RELOC. TAPE 09601-16010 * SOURCE TAPE 09601-18010 * ERS 09601-16010-1 * LISTING 09601-16010-2 * ***************************************** * * * A. WERNICK AUG. 1973 REV A * * * * * CTRSF MAY BE CALLED BY RTE BASIC OR FORTRAN PROGRAMS * TO REMOTE PROGRAM THE 5327B-H48 TIMER/COUNTER/DVM FOR FREQ/TIME * MEASUREMENTS USING RTE DRIVERS DVR54 AND DVR40 * * CALL STATEMENT (FORTRAN/BASIC): * * CALL CTRSF(F,T,A,B,G,H,C) * * F= FUNCTION CODE (INTEGER) * T= TIME BASE CODE (INTEGER) * A= INPUT A ATTENUATOR AND AC/DC CODE (INTEGER) * B= INPUT B ATTENUATOR & AC/DC CODE (INTEGER) * G= INPUT A TRIGGER LEVEL (INTEGER) * H= INPUT B TRIGGER LEVEL (INTEGER) * C= SEP/COM INPUT (INTEGER) * * NAM CTR27,7 09601-16010 REV A * ENT CTRSF EXT .ENTR,EXEC,.FAD,.FDV,IFIX,ERROR,#CTRA EXT .DST,.FMP,FLOAT,.RTOI,CONV,#CTRB EXT ERR0,.DLD EXT #ERRU * IFUNC NOP ITIME NOP INPTA NOP INPTB NOP TRIGA NOP TRIGB NOP ICOM NOP * CTRSF NOP ENTRY POINT JSB .ENTR GET PARAMETER ADDRESSES DEF IFUNC LDA CTRSF STORE EXIT ADDRESS STA EXITR LDA CDEF1 STORE ENTRY POINT STA ENDEF CLA STA DATA1 CLEAR STA DATA2 DATA STA DATA3 WORD STA DATA4 STORAGE STA DATA5 BUFFERS LDA SET1 STA PNTR1 PRESET LDA SET2 POINTERS STA PNTR2 LDA SET3 STA PNTR3 LDA IFUNC,I BRING IN FUNCTION STA FUNCT SAVE FOR CTRMF CALL ADA M10 SUBTRACT 10 SSA IS IT NEGITIVE ? JMP *+4 LDB .4 NO, ITS CHECK STB DATA1 RSS LDA IFUNC,I NORMAL PATH  CLB CPA B COMPARE CODE JMP *+6 INB INCREMENT CODE KEY ISZ PNTR1 INCREMENT POINTER CPB .10 JMP ERR1 ILLEGAL CODE REJECT JMP *-6 LDA PNTR1,I SET UP IOR DATA1 WORD 1 STA DATA1 * *TIME * LDA ITIME,I BRING IN BASE CODE STA TIMER SAVE FOR CTRMF CALL CLB CPA B COMPARE CODE JMP *+6 INB INCREMENT CODE KEY ISZ PNTR2 INCREMENT POINTER CPB .9 JMP ERR1 ILLEGALdO- REJECT JMP *-6 LDA PNTR2,I SET UP STA DATA2 WORD 2 * LDA INPTA,I GET ATTN. A CODE JSB COMPR GO GET DATA WORD ALF,ALF STA DATA3 * LDA SET3 ADJUST STA PNTR3 POINTER LDA INPTB,I GET ATTN. B CODE JSB COMPR GO GET DATA WORD IOR DATA3 STA DATA3 STORE IN BUFFER * * LDA DATA3 GET A CHN MULT ALF,ALF POSITION AND .3 MASK STA HOLD SAVE JSB .DLD BRING IN LEVEL A DATA DEF TRIGA,I JSB TRIGR CONVERT STA DATA4 STORE IN BUFFER * LDA DATA3 GET B CHN MULT AND .3 MASK STA HOLD SAVE JSB .DLD BRING IN LEVEL B DATA DEF TRIGB,I JSB TRIGR CONVERT STA DATA5 STORE IN BUFFER * LDA ICOM,I SZA,RSS ZERO ? JMP ERR1 YES,ERROR ADA M3 TEST IF >M2 SSA,RSS JMP ERR1 YAES,ERROR ADA .3 RESTORE AND .1 MASK IOR DATA4 PUT IN DATA STA DATA4 WORD 4 CLA,INA PUT EXTERNAL PROG BIT IOR DATA5 IN WORD 5 STA DATA5 LDA FUNCT CPA .4 IS START (4) RSS JMP DONE ISNT CONTINUE LDA DATA1 IS,GET DATA1 STA TEMP1 AND SAVE LD@A .2 GET RESET CODE STA DATA1 AND PUT IN BUFFER JSB WRITE OUTPUT RESET COMMAND LDA TEMP1 RESTORE DATA1 STA DATA1 DONE JSB WRITE JMP CTRSF,I RETURN TO USERS PROGRAM * DATA0 NOP DATA1 NOP DATA DATA2 NOP WORD DATA3 NOP STORAGE DATA4 NOP BUFFERS DATA5 NOP CDEF1 DEF CTRSF POINTER TO ENTRY PT * * PNTR1 DEF LIST1 FUNCTION LIST LIST1 OCT 5000 OCT 5000 OCT 5400 OCT 4400 OCT 7410 OCT 2400 OCT 7000 OCT 6000 OCT 6400 OCT 0001 * PNTR2 DEF LIST2 TIME BASE LIST LIST2 OCT 7400 OCT 7000 OCT 6400 OCT 6000 OCT 5400 OCT 5000 OCT 4400 OCT 4000 OCT 3400 * PNTR3 DEF LIST3 ATTENUATORS LIST LIST3 OCT 0 OCT 1 OCT 2 OCT 4 OCT 5 OCT 6 OCT 10 OCT 11 OCT 12 OCT 14 OCT 15 OCT 16 * * TRIGR NOP CONVERT TRIGGER LEVEL DATA STA SAVE SAVE A-REG LDA HOLD GET MULTIPLIER SZA,RSS X1? JMP PROC YES,PROCEED SLA,RSS X100? JMP X100 YES,SCALE LDA SAVE X10,RESTORE A-REG JSB .FDV DIVIDE BY 10.0 DEF FP10 STA SAVE JMP PROC PROCEED X100 LDA SAVE X100,RESTORE A-REG JSB .FDV DIVIDE BY 100.0 DEF FP100 STA SAVE PROC LDA SAVE JSB .FAD ADD 3.175 AND LEVEL DATA DEF RANG JSB .FDV DIVIDE RESULT BY 50MV DEF RESOV JSB IFIX CONVERT F.P. TO INTEGER NOP SSA NEGATIVE ? JMP ERR1 YES,ERROR ADA M128 TEST IF > 7 BITS SSA,RSS JMP ERR1 YES,ERROR ADA .128 NO,RESTORE CMA INVERT BITS STA HOLD AND .7 ADJUST RAL STA B BITS LDA HOLD 4 FOR AND B170 OUTPUT ALF,RAL IOR B JMP TRIGR,I RANG DEC 3.175 RESOV DEC .05 HOLD NOP * COMPR NOP ATTENUATOR COMPARE CLB CPA B COMPARE CODE JMP *+6 INB INCREMENT CODE KEY ISZ PNTR3 INCREMENT POINTER CPB .12 JMP ERR1 ILLEGAL CODE- REJECT JMP *-6 LDA PNTR3,I GET DATA WORD JMP COMPR,I * SET1 DEF LIST1 SET2 DEF LIST2 SET3 DEF LIST3 CDEF2 DEF CTRMF POINTER TO ENTRY PT. CDEF3 DEF CTRMV " " " " * * * CTRMF MAY BE CALLED BY A FORTRAN OR ALGOL PROGRAM * TO SIMPLIFY READING FREQUENCY/TIME DATA FROM THE * HP 5327B-H48 TIMER/COUNTER/DUM USING THE RTE DRIVER * DVR40. * * CALL STATEMENT (FORTRAN OR BASIC): * * CALL CTRMF(V,D) * * V = MEASURED FREQUENCY OR TIME TO 6 SIGNIFICANT DIGITS * D = LAST 1 OR 2 DIGITS IF 7 OR 8 DIGITS DISPLAYED * * * * ENT CTRMF * * * VALUE NOP DIGTS NOP * CTRMF NOP ENTRY POINT JSB .ENTR DEF VALUE LDA CTRMF STORE ENTRY POINT AS EXIT ADDRS STA EXITR LDA CDEF2 STORE DEF TO ENTRY PT STA ENDEF LDA FUNCT GET FUNCTION CPA .4 START ? JMP ERR2 YES,ERROR-NO STOP CPA .5 IS IT STOP ? JMP STOP YES,DO A SPECIAL READ JSB READ READ DATA FROM DSI CARD P.1 CLA A=0 STA TEMP1 INITIALIZE STA TEMP1+1 DIGITS TO 0 LDB TIMER GET TIMEBASE LDA FUNCT GET FUNCTION PROGRAMMED ADA M10 TEST IF 10-19 SSA LDA FUNCT <10,RESTORE CPA .1 FREQUENCY ? JMP FREQ YES CPA .2 PERIOD ? JMP PERD YES CPA .3 FREQUENCY C? JMP FREQ YES CPA .5 STOP ? JMP CONT YES,DONT SCALE CPA .6 PERIOD AVG ? JMhP PERAV YES CPA .7 TIME INTERVAL JMP PERD YES,PROCESS SAME AS PERIOD CPA .8 TIME INTERVAL AVG? JMP PERAV YES,PROCESS AS PERIOD AVG CPA .9 FREQ C / 10 ? JMP FREQX YES SZA,RSS CHECK ? JMP FREQ YES,TREAT AS FREQ JMP ERR1 * FREQ CMB,INB ADB .7 MAKE EXPONENT 7-T JMP CONT CONTINUE PERD ADB M7 MAKE EXPONENT T-7 JMP CONT FREQX CMB,INB ADB .8 MAKE EXPONENT T-8 JMP CONT PERAV CMB,INB MAKE EXPONENT ADB M7 -T-7 CONT STB EXPON SAVE EXPONENT * JSB CONVT CONVERT BCD TO BINARY JSB .DST OUTPUT DEF VALUE,I 6 SIG DIGITS JSB .DLD GET DEF TEMP1 LSD * JSB .DST SEND DEF DIGTS,I LSD TO CALLING PROG * JMP CTRMF,I RETURN * STOP JSB EXEC DEF *+5 DO A READ WITH OUT ENCODE DEF .1 DEF JUNIT DEF DATA DEF .3 JMP P.1 RETURN T0 PROCESS DATA * * CTRMV MAY BE CALLED BY A FORTRAN OR ALGOL PROGRAM * TO SIMPLIFY READING AN INPUT VOLTAGE OR TRIGGER * A AND B LEVELS WITH THE HP 5327B TIMER/COUNTER/DVM * USING RTE DRIVERS DVR54 AND DVR40. * * CALL STATEMENT (FORTRAN): * * CALL CTRMV(M,R,T,V) * * M = MODE OF OPERATION (INPUT/TRIGA/TRIGB) (INTEGER) * R = DVM VOLTAGE RANGE (INTEGER) * T = INTEGRATION TIME (REAL) * V = MEASURED VOLTAGE (REAL) * * * * ENT CTRMV * * * MODE NOP RANGE NOP TIME NOP VOLTS NOP * CTRMV NOP ENTRY POINT JSB .ENTR DEF MODE LDA CTRMV STORE EXIT ADDRS STA EXITR LDA CDEF3 STORE DEF TO ENTRY PT STA ENDEF LDA MODE,I SSA LESS THAN 0? JMP ERR1 YES,ERROR ADA M3 SSA,RSS GREATER THAN 2 ? JMP ERR1 YES,ERROR E LDA MODE,I GET MODE SZA ZERO ? JMP VTRIG NO,1 OR 2,MEASURE TRIGGER VOLTS JSB .DLD DEF RANGE,I GET RANGE,I JSB IFIX INTEGER NOP CCB CPA .10 10 VOLT RANGE CLB CPA .100 100 VOLT RANGE CLB,INB CPA .1000 1000 VOLT RANGE LDB .2 SSB ERROR ? JMP ERR1 YES STB RGECD SAVE RANGE CODE JSB .DLD DEF TIME,I GET INTEG TIME JSB .FMP DEF F1000 MULT BY 1000 JSB .FAD DEF HALF ROUND OFF JSB IFIX NOP LDB M5 GET COUNTER STB TEMP1 SAVE LDB TABLA GET TABLE POINTER AGAIN CPA B,I IS IT 1,10,100,1000,OR 10000 ? JMP GOTIT YES INB NO ISZ TEMP1 TRY JMP AGAIN AGAIN JMP ERR1 NONE OF THE ABOVE,ERROR GOTIT LDB TEMP1 ADB .9 FORM INTEGRATION CODE JMP SVINT VTRIG CLA FORM RANGE CODE FOR MODE 1OR2 STA RGECD SAVE RANGE CODE LDB .5 FORM INTEG CODE FOR MODE 1OR 2 SVINT STB INTEG SAVE INTEG CODE LDA MODE,I GET MODEE CODE SZA,RSS JMP DVM0 MODE=0 CMA FORM CODES AND .3 FOR READ DVM0 ADA .6 LEVEL A ALF,ALF OR LEVEL B STA DATA1 STORE IN OUTPUT BUFFER CLA LDB MODE,I SZB MODE=1 OR 2 ? JMP .1OR2 YES LDA RGECD GET RANGE CODE LDB .4 FORM CPA .1 LDB .2 RANGE CPA .2 LDB .1 WORD IN B LDA INTEG GET INTEG CODE CMA FORM AND .15 INTEG ALF,ALF WORD IN A IOR B COMBINE TO FORM PROG WORD .1OR2 IOR .8 ADD HOLD BIT STA DATA2 PUT IN OUTPUT BUFFER LDA DATA5 IOR .1 J SET EXTERNAL BIT STA DATA5 JSB WRITE OUTPUT PROGRAM WORD JSB READ READ RETURN DATA LDA INTEG GET INTEG CONST CMA,INA FORM ADA .3 EXPONENT ADA RGECD FOR CONVERSION STA EXPON AND SAVE JSB CONVT CONVERT TO FLOATING POINT JSB .DST RETURN DEF VOLTS,I VALUE TO CALLING PROG * JMP CTRMV,I RETURN TO CALLING PROGRAM * * THIS SUBROUTINE CONVERTS 6 OR 7 DIGITS OF BCD * DATA TO FLOATING PONT THE DATA TO BE CONVERTED * IS STORED IN DATA AND DATA+1.THE APPROPRIATE * EXPONENT MUST BE STORED IN EXPON, IF THE DATA IN * DATA+1 INDICATES OVERFLOW, THE VALUE .9.....E9 * WILL BE RETURNED . THE RETURNED DATA WILL BE IN * THE A AND B REGISTERS IN NORMAL FLOATING POINT FORM * IF 7 DIGITS EXIST,THE LSD WILL BE STORED IN TEMP1 AND TEMP2 * CONVT NOP LDA DATA+1 GET DATA WORD #2 ALF POSITION ANNUNCIATOR AND .15 AND MASK SZA,RSS OVERFLOW ? JMP OVERF YES LDB B400 + POLARITY,VOLT/FREQ/TIME CPA .7 TIME/FRQ/COUNT ? JMP *+3 YES,SKIP POLARITY SLA LDB B1000 - POLARITY,VOLTS STB SAVE SAVE FOR LATER * LDA DATA+1 GET DATA WORD #2 ALF,ALF POSITION DIGIT #7 AND .15 AND MASK CPA .15 BLANK ? JMP SIX YES,SIX DIGITS SZA,RSS ZERO ? JMP SIX YES * LDA DATA GET LEAST SIG WORD AND .15 AND KEEP DIGIT #1 JSB FLOAT FLOAT JSB .DST AND DEF TEMP1 SAVE * LDA DATA+1 GET DATA WORD #2 AND .15 AND SAVE DIGIT #5 STA B SAVE * LDA DATA+1 GET DATA WORD #2 ALF,ALF AND ALF POSITION AND B377 KEEP DIGITS 6&7 STA DATA+1 SAVE * LDA DATA GET DATA WORD #1 AND MASK\ MASK OFF DIGIT #1 ADA B ADD DIGIT #5 (4-3-2-5) ALF,ALF POSITION SO ORDER ALF IS (5-4-3-2) STA DATA * ISZ EXPON INCREMENT EXPONENT FOR 7 DIGITS NOP SHOULDN'T SKIP * SIX LDA DATA+1 GET DATA WORD #2 AND B377 KEEP LAST 2 DIGITS IOR SAVE ADD POLARITY STA DATA+1 STORE DATA WD JSB CONV DEF *+2 DEF DATA JSB .DST SAVE IN DEF TEMP2 TEMP2 FOR LATER JSB .RTOI MAKE MULTIPLIER DEF FP10 DEF EXPON JSB ERR0 HERE ONLY IF ERROR JSB .FMP SCALE DATA DEF TEMP2 * JMP CONVT,I RETURN * OVERF JSB .DLD GET 9.99999E9 DEF MAX TO INDICATE OVERFLOW * JMP CONVT,I RETURN * * * * * THIS SUBROUTINE READS DATA FROM THE 32 BIT * DSI CARD VIA DVR40.IT RETURNS 2 16 BIT DATA * WORDS TO STORAGE WORDS DATA AND DATA+1 . * * READ NOP JSB EXEC INPUT DEF *+5 VIA DEF .1 AN DEF JUNIT EXEC DEF DATA CALL DEF .2 TIO DVR40 * JMP READ,I RETURN * * * * THIS SUBROUTINE PROGRAMS THE 40 BIT GPO * CARD VIA DVR54.IT EXPECTS ALL 5 (ASCII * FORMAT) PROGRAM WORDS TO BE STORED IN * DATA1 THRU DATA5. * * * WRITE NOP JSB EXEC OUTPUT DEF *+5 VIA DEF .2 AN DEF IUNIT EXEC DEF DATA0 CALL DEF .6 TO DVR54 * JMP WRITE,I RETURN * * * * THIS SUBROUTINE EMITS AN ERROR MESSAGE VIA ERR0 * THERE ARE ENTRY POINTS OUTLINED BELOW * * ERR1- MESSAGE CTR 1 IS A PARAMETER ERROR * ERR2- MESSAGE CTR 2 IS A 'START' PROGRAMMED * WITHOUT 'STOP' * * THE RESULT OF EXITING THIS PROGRAM IS ABORTION OF THE * CALLING PROGRAM. * ERR1 LDA .1 STA ERRNO JMP OUT ERR2 LDA .2 STA ERRNO OUT JSB ERRO640R DEF *+5 DEF ERRNO DEF ERRMN DEF LUERR DSPLY UNIT FOR ERR MSG DEF ENDEF ENTRY POINT JMP EXITR,I ******EXIT****** ERRNO NOP ERRMN DEC 3 ASC 2,CTR * * CONSTANTS AND STORAGE * .1 DEC 1 .2 DEC 2 .3 DEC 3 .4 DEC 4 .5 DEC 5 .6 DEC 6 .7 DEC 7 .8 DEC 8 .9 DEC 9 .10 DEC 10 .12 DEC 12 .15 DEC 15 .100 DEC 100 .128 DEC 128 .1000 DEC 1000 M3 DEC -3 M7 DEC -7 M10 DEC -10 M128 DEC -128 M5 DEC -5 B377 OCT 377 B400 OCT 400 B1000 OCT 1000 B170 OCT 170 MASK OCT 177760 FP10 DEC 10.0 FP100 DEC 100.0 F1000 DEC 1000. MAX DEC 9.99999E9 B EQU 1 HALF DEC 0.5 TABLA DEF TABL TABL DEC 1,10,100,1000,10000 * * * LUERR EQU #ERRU DSPLY UNIT FOR ERR MSG EXITR NOP EXIT ADDRESS ENDEF NOP DEF TO ENTRY POINT DATA NOP DATA WORD STORAGE NOP DEC -1 IFUN =-1 FOR DVR 40 TIMER NOP TIME PROGRAMMED FUNCT NOP FUNCTION PROGRAMMED TEMP1 BSS 2 TEMPORARY STORAGE TEMP2 BSS 2 TEMPORARY STORAGE SAVE NOP STORAGE RGECD NOP RANGE CODE STORAGE INTEG NOP INTEGRATION CODE STORAGE EXPON NOP EXPONENT STORAGE IUNIT EQU #CTRA JUNIT EQU #CTRB END 6  09601-18011 A S 0122 RTE DEVICE SUBR FOR 12604B DSI CARD             H0101 6ASMB,R,B,L,C HED 12604B DSI DEVICE SUBROUTINE TO RTE DRIVER DVR40 NAM 12604,7 09601-16011 REV. A * ENT DSI *********************************************************** * * ERS: 09601-16011-1 * LISTING: 09601-16011-2 * SOURCE TAPE: 09601-18011 * RELOC. TAPE: 09601-16011 * *********************************************************** * * D. BOLIERE 3 APRIL 74 * B. PARRISH 22 AUG 74 REV A (1.1) * * *****EXTERNAL UTILITY ROUTINES USED***** * * ***SATISFIED BY RTE SYSTEM*** EXT EXEC * ***SATISFIED BY DEV. SUBR LIBRARY*** EXT CONV,ERROR,ERRCD * ***SATISFIED BY FLOATING PT. RELOCATABLE LIB.*** EXT FLOAT,.DST,.ENTR * *** SATISFIED BY INSTRUMENT TAPE CONSTANTS *** EXT #DSIT,#ERRU * * *****CONFIGURATION INFORMATION***** * * ENTRY FOR BASIC BRANCH AND MNEMONIC TABLE GENERATOR: * * DSI(I,I,R,R),SUB=DSI * * *****ENTRY FORMAT AND FUNCTION***** * * DSI(LU,N,V,F) * * U = DSI CARD UNIT NO. (A NEG UNIT# CAUSES NO ENCODE * WHEN USED WITH DVR40 P/N 29100-60041) * N = NUMBER OF DIGITS TO BE CONVERTED (0,6,7,8) * V = * IF N=0, SECOND WORD READ IN BCD FORMAT * N#0, VALUE OF SIX MOST SIGNIFICANT DATA DIGITS * F = * IF N=0, FIRST WORD READ IN BCD FORMAT * N=6, FUNCTION DIGIT * N=7 OR 8, LEAST SIGNIFICANT DATA DIGITS * * *****DSI ERROR MESSAGES***** * * ERROR 1: PARAMETER ERROR * *********************************************************** SKP * * PROGRAM MAINFLOW * UNIT NOP NDIG NOP VALU NOP FUNC NOP * DSI NOP ***ENTRY*** JSB .ENTR FETCH PARAM ADDRESSES DEF UNIT CLA STA ERRCD CLEAR ERROR CODE STA ERCNT CLEAR ERROR COUNT 9 STA FLG7 CLEAR 7 DIGIT FLAG STA ENCFG CLEAR ENCODE FLAG LDB UNIT,I SSB JSB NENC NEG UNIT# - CH SIGN & SET ENCFG=-1 SZB,RSS JMP ERR1 ZERO UNIT NUMBER, ERROR JSB GETLU GET LOGICAL UNIT # CMA,INA SSA,RSS LOG UNIT =< 0 ? JMP ERR1 YES. PARM ERROR! JSB EXEC NO. READ FROM DEVICE DEF *+5 DEF .1 DEF LUN DEF LSD DEF .3 * BCD0 LDA NDIG,I FETCH NUM OF DIGITS TO CONVERT SZA =0: BCD OUTPUT? JMP DIGT6 NO. NEXT CHECK LDA MSD YES. SAVE 2ND BCD WORD JSB FLOAT JSB .DST DEF VALU,I LDA LSD SAVE 1ST BCD WORD JSB FLOAT JSB .DST DEF FUNC,I JMP DSI,I ****BCD OUTPUT EXIT**** * DIGT6 CMA,INA SET UP CTR FOR NO. OF DIGITS ADA .5 STA NDIGI LDA MSD LDB LSD ISZ NDIGI 6 DIGITS? JMP DIGT7 NO. NEXT CHECK ALF,ALF YES. FUNC TO BITS 0-3 AND B17 MASK AND STORE FUNC STA FTEMP JMP FINIS * DIGT7 ISZ NDIGI 7 DIGITS? JMP DIGT8 NO. NEXT CHECK RRR 4 YES. SET UP 6 DATA DIGITS ISZ FLG7 SET FLG7 TO 1 JMP CONT DIGT8 ISZ NDIGI 8 DIGITS? JMP ERR1 NO. PARM ERR! RRR 8 YES. SET UP 6 DATA DIGITS CONT STB LSD STORE 4 LS DATA DIGITS CLB CPB FLG7 8 DIGITS? RRL 4 SHIFT 2 OVF DIGITS INTO B RRL 4 SHIFT 1 OVF DIGIT INTO B STB FTEMP STORE OVF DIGIT(S) ALF,ALF GET 2 MS DATA DIG IN BITS 0-7 CLB,INB CPB FLG7 7 DIGITS? ALF YES. AND B377 MASK OFF 2 MS DATA DIGITS ADA B400 SET FUNC CODE TO 1 FOR CONV STA MSD STORE 2 MS DIGITS & FUNC * FINIS JSB CONV CONV DIGITS TO REAL DEF *+2 DEF LSD JSB .DST DEF VALU@ ,I STORE CONVERTED VALUE IN 'V' LDB B400 LDA FTEMP LOAD FUNC/1 OR 2 OVF DIGITS JSB .DST DEF LSD JSB CONV CONV TO REAL DEF *+2 DEF LSD JSB .DST STORE IN 'F' DEF FUNC,I JMP DSI,I ****CONVERSION EXIT**** SKP * * GET LOGICAL UNIT NUMBER FROM TABLE * GETLU NOP ENTER WITH UNIT # IN B REG LDA CTABL SSA,RSS I BIT SET? JMP *+4 NO AND M7777 YES - MASK ADDRESS LDA 0,I GET CONTENTS JMP *-4 CHECK AGAIN ADA 1 ADD UNIT NUMBER CMA,INA CMA SUBTRACT 1 LDA 0,I GET UNIT # STA LUN STORE IT. JMP GETLU,I RETURN NENC NOP NO ENCODE CMB,INB MAKE UNIT # POSITIVE CLA CMA STA ENCFG ENCODE FLAG = -1 JMP NENC,I * * ERROR REPORTING * ERR1 ISZ ERCNT JSB ERROR DEF *+5 DEF ERCNT DEF ERMNC DEF #ERRU DEF DSI JMP DSI,I SKP * * CONSTANTS * .1 DEC 1 .3 DEC 3 .5 DEC 5 B17 OCT 17 B377 OCT 377 B400 OCT 400 M7777 OCT 77777 ERMNC DEC 3 ASC 2,DSI CTABL DEF #DSIT * * STORAGE * ERCNT NOP ERROR COUNT LUN NOP LOGICAL UNIT NO. * OUTPUT BUFFER ** LSD NOP DATA BUFFER MSD NOP ENCFG NOP ENCODE FLAG * END OUTPUT BUFFER ** FLG7 NOP 7 DIGIT FLAG NDIGI NOP NO. OF RTN DIGITS FTEMP NOP TEMP FUNC * END j>  09601-18014 A S 0122 3480D DVM RTE DEVICE SUBROUTINE             H0101 MASMB,R,B,L NAM .3480 * * ENT DVMSU,DVMMV *********************************** * * ERS: A-09601-16014-1 * LISTING: A-09601-16014-2 * SOURCE: 09601-18014 * RELOC: 09601-16014 * *********************************** * * *** UTILITY ROUTINES * EXT CONV,#DVMU,.ENTR,ERRCD,ERROR,#ERRU EXT .DLD,.DST,EXEC,.FMP * * * *** SYSTEM PARAMETERS * * M. SCHOENDORF AUGUST 13, 1974 REV. A * FUNCT BSS 1 RANGE BSS 1 FILTR BSS 1 TRIG BSS 1 DMA BSS 1 DVMSU NOP JSB .ENTR GET PARAMETER DEF FUNCT ADDRESSES CLA CLEAR GLOBAL STA ERRCD ERROR CODE LDA .6 LDB FUNCT,I GET FUNCTION PARAMETER SZB,RSS =0? JMP ERR1 YES, ERROR EXIT JSB CKPAM PARAMETER IN LIMITS? LDA M6 INITIALIZE STA R RANGE COUNTER JSB .DLD DEF RANGE,I SZA,RSS RANGE=0? JMP ERR1 YES, ERROR JSB .DST DEF TEMP SAVE RANGE LDB FUNCT,I CHECK CPB .3 IF OHMS JMP SU3 OHMS JSB .DLD VOLTS DEF F.1 JMP SU4 SU3 JSB .DLD OHMS DEF F100 SU4 CPA TEMP FIND RANGE? RSS JMP SU5 NOT FOUND CPB TEMP+1 RANGE FOUND? JMP SU7 PROBABLE! SU5 JSB .FMP CHECK NEXT RANGE, DEF F10 MPY BY 10. ISZ R INCREMENT RANGE COUNTER JMP SU4 TRY NEXT RANGE JMP ERR1 RANGE NOT FOUND SU7 LDA R GET FINAL RANGE COUNT(NEG) LDB FUNCT,I GET FUNCTION PARAMETER CMA,SZA,RSS MAKE COUNT POS,-1 IF NOT 0, SKIP 1 CPB .3 IF 0 AND OHMS RSS RANGE FOUND JMP ERR1 =0, NOT OHMS IS ERROR STA R SAVE RANGE CODE LDA .2 LDB FILTR,I GET FILTER PARAMETER JSB CKPAM PARAMETER IN LIMITS? pCLA,INA LDB TRIG,I GET TRIGGER PARAMETER JSB CKPAM CCA ADA FUNCT,I ADD FUNCTION PARAMETER ALF,RAR POSITION TO BITS 3-5 LDB R GET RAN GE CODE (BITS 0-2) IOR 1 ADD TO FUNCTION CODE LDB FILTR,I GET FILTER PARAMETER BLF POSITION RBL,RBL TO BITS (6-8) IOR 1 ADD TO FUNCTION,RANGE CODE LDB TRIG,I GET TRIGGER PARAMETER BLF,BLF POSITION. RBL TO BITS 9-11 IOR 1 ADD TO FUNC,RANGE,FILTER CODES STA IPROG SAVE PROGRAM WORD CLA,INA LDB DMA,I GET DMA PARAMETER JSB CKPAM PARAMETER IN LIMITS? SZB JMP DVMSU,I EXIT LDB FILTR,I GET FILTER PARAMETER SZB =0? JMP ERR1 YES, ERROR EXIT LDB FUNCT,I GET FUNCTION PARAMETER CPB .1 =1? RSS JMP ERR1 NO, ERROR EXIT LDA IPROG GET PROGRAM WORD IOR MNEG SET DMA BIT STA IPROG SAVE JMP DVMSU,I EXIT * .1 DEC 1 .2 DEC 2 .3 DEC 3 .6 DEC 6 .15 DEC 15 .7777 OCT 77777 B360 OCT 360 M6 DEC -6 MNEG OCT 100000 F.1 DEC .1 F10 DEC 10.0 F100 DEC 100.0 IBUFL BSS 1 IPROG BSS 1 NDATA BSS 1 R BSS 1 TEMP BSS 2 SKP NUMB BSS 1 DATA BSS 1 DVMMV NOP JSB .ENTR DEF NUMB CLA CLEAR GLOBAL STA ERRCD ERROR CODE LDA DVMMV GET ENTRY POINT STA DVMSU AND STORE LDA .7777 LDB NUMB,I GET NUMBER OF READINGS PARAMETER SZB,RSS =0? JMP ERR1 YES, ERROR JSB CKPAM PARAMETER IN LIMITS? LDB NUMB,I CPB .1 ONE READING? RSS NOP LDA DATA GET ADDRESSES OF DATA TEST SSA,RSS INDIRECT? JMP CONT NO, CONTINUE LDA 0,I YES, JMP TEST TEST AGAIN CONT STA IBUFR SAVE ADDRESS  STB NDATA SAVE NUMBER OF READINGS STB IBUFL SAVE BUFFER LENGTH JSB EXEC EXEC CALL TO DVR46 DEF *+6 DEF .1 DEF #DVMU DEF IBUFR,I DEF IBUFL DEF IPROG LDA NDATA GET NUMBER OF READINGS CMA,INA NEGATIVE STA TEMP SAVE AS COUNTER .CONV LDB IBUFR GET BUFFER ADDRESS INB LDA 1,I GET RANGE, FUNC, AND POL WORD STA SAVE AND .15 MASK OFF OVERRANGE BITS STA SAVE2 LDA SAVE AND B360 MASK OFF RANGE BITS ALF,ALF IOR SAVE2 MERGE WITH OVERRANGE STA SAVE2 LDA SAVE AND B7K4 MASK OFF FUNCTION BITS CPA B2K4 KOHMS? JMP F4 YES LDA B400 MERGE IOR SAVE2 STA 1,I SAVE WORD 2 FOR CONVERSION LDA SAVE ALF,ALF RAR SLA OVERLOAD? JMP OVRLD YES LDB DEC1 SSA POSITIVE MANTISSA ADB .2 NO STB THERE JSB CONV CONVERT NEXT DATA DEF *+2 DEF IBUFR,I JSB .FMP THERE DEF D1 JMP NEXT OVRLD JSB .DLD OVERLOAD DEF LN NEXT JSB .DST DEF IBUFR,I ISZ IBUFR INCREMENT BUFFER ADDRESS ISZ IBUFR TWICE ISZ TEMP INCREMENT COUNTER AND SKIP JMP .CONV CONVERT NEXT DATA JMP DVMMV,I EXIT F4 LDA B2000 JMP MERGE * B400 OCT 400 B2000 OCT 2000 B2K4 OCT 20000 B7K4 OCT 70000 LN DEC 1.0E+38 DEC1 DEF D1 D1 DEC 1.0 DEC -1.0 IBUFR BSS 1 SAVE BSS 1 SAVE2 BSS 1 SKP * * SUBROUTINE TO CHECK IF PARAMETER IS IN LIMITS * CKPAM NOP SSB PARAMETER POSITIVE? JMP ERR1 NO, ERROR EXIT CMB,INB ADB 0 SSB PARMETER EXCEED MAXIMUM VALUE? JMP ERR1 YES, ERROR EXIT JMP CKPAM,I * * ERROR PROCESSING * ERR1 ISZ ERRCD JSB ERROR DEF *+w5 DEF ERRCD DEF ERMSG DEF #ERRU DEF DVMSU JMP DVMSU,I ERMSG DEC 3 ASC 2,DVM END   09601-18016 A S 0122 5327A-H48 RTE-B DEVICE SUBROUTINE VERIFY TEST             H0101 H 100 PRINT "***************************************" 110 PRINT " 5327A-H48 RTE B DEVICE SUBROUTINE" 120 PRINT " VERIFICATION TEST" 125 REM 126 REM * SOURCE TAPE: 09601-18016 127 REM * ERS: 09601-18016-1 130 PRINT "***************************************" 140 PRINT 150 PRINT 500 PRINT " FREQUENCY 'A' TEST" 510 PRINT " ------------------" 515 PRINT 520 LET H=0 540 PRINT " 1-CONNECT SIGNAL GENERATOR TO 'CHANNEL A'" 542 PRINT " INPUT OF COUNTER" 544 PRINT 546 PRINT " 2-SET SIG. GEN. TO 100 KHZ" 548 PRINT 550 PRINT " 3-TYPE 'GO'" 555 PAUSE 556 GOSUB 5000 560 LET F=100000 565 FOR T=4 TO 8 570 CTRSF(1,T,0,0,0,0,1) 575 GOSUB 6000 580 NEXT T 600 PRINT 610 PRINT " PERIOD 'A' TEST" 612 PRINT " ---------------" 614 PRINT 620 PRINT "SET SIG. GEN. TO 10 HZ & TYPE 'GO'" 630 PAUSE 640 LET H=1 645 GOSUB 5000 650 LET F=10 660 FOR T=0 TO 3 670 CTRSF(2,T,0,0,0,0,1) 675 GOSUB 6000 680 NEXT T 699 PRINT 700 PRINT " PERIOD AVG. 'A' TEST" 702 PRINT " --------------------" 704 PRINT 710 PRINT "SET SIG. GEN. TO 1 KHZ & TYPE 'GO'" 711 PAUSE 720 GOSUB 5000 725 LET T=2 730 CTRSF(6,T,0,0,0,0,1) 735 LET F=1000 740 GOSUB 6000 799 PRINT 800 PRINT " TIME INTERVAL 'A' TO 'B' TEST" 802 PRINT " -----------------------------" 804 PRINT 820 GOSUB 5000 830 REM * DOUBLE 'F' SINCE ONLY HALF A PERIOD IS MEASURED 831 LET F=2000 840 LET T=0 845 CTRSF(7,T,0,3,0,0,1) 850 GOSUB 6000 899 PRINT 900 PRINT " TIME INTERVAL AVG. 'A' TO 'B' TEST" 902 PRINT " ----------------------------------" 904 PRINT 910 PRINT "TYPE 'GO' WHEN READY" 915 PAUSE 920 GOSUB 5000 925 LET T=2 930 CTRSF(8,T,0,3,0,0,1) 940 GOSUB 6000 999 PRINT 1000 PRINT " 'CHECK' FUNCTION TEST" 1002 PRINT " ---------------------" 1004 PRINT 1020 LET һ  H=0 1025 LET F=1E+07 1030 GOSUB 5000 1040 CTRSF(10,T,0,0,0,0,1) 1050 GOSUB 6000 1099 PRINT 1100 PRINT " START/STOP TEST" 1102 PRINT " ---------------" 1104 PRINT 1120 PRINT "SET SIG. GEN. TO 10 KHZ & TYPE 'GO'" 1125 PAUSE 1126 LET H=2 1128 GOSUB 5000 1130 LET T=1 1135 CTRSF(4,T,0,0,0,0,1) 1140 WAIT 900 1150 CTRSF(5,T,0,0,0,0,1) 1155 LET F=10000 1160 GOSUB 6000 1199 PRINT 1200 PRINT " FREQUENCY 'C' TEST" 1202 PRINT " ------------------" 1204 PRINT 1220 LET H=0 1230 PRINT "1-CONNECT SIG. GEN. TO FREQ.'C' INPUT OF COUNTER" 1232 PRINT "2-SET SIG. GEN. TO 100 KHZ." 1234 PRINT "3-TYPE 'GO'" 1240 PAUSE 1245 GOSUB 5000 1250 LET F=100000 1255 LET T=5 1260 CTRSF(3,T,0,0,0,0,1) 1270 GOSUB 6000 1299 PRINT 1300 PRINT " FREQUENCY 'C/10' TEST" 1302 PRINT " ---------------------" 1304 PRINT 1310 GOSUB 5000 1320 CTRSF(9,T,0,0,0,0,1) 1330 GOSUB 6000 2000 STOP 4999 REM 5000 REM * SUBROUTINE TO PRINT HEADING * 5010 REM 5020 PRINT 5030 PRINT "RANGE","PROGRAMMED","MEASURED","DEVIATION","TOLERANCE" 5035 PRINT "(TIMEBASE)", 5040 IF H=0 PRINT " HZ"," HZ", 5050 IF H=1 PRINT " SECS"," SECS", 5060 IF H=2 PRINT " VALUE"," VALUE", 5070 PRINT " %"," %" 5080 PRINT 5090 RETURN 5999 REM 6000 REM * SUBROUTINE TO MEASURE & PRINT DATA * 6010 REM 6020 CTRMF(V,D) 6030 IF H#1 LET X=F 6040 IF H=1 LET X=1/F 6050 LET T0=100*(V-X)/X 6052 IF T<3 PRINT 10^(T-1);TAB(4);"US", 6054 IF T>2 AND T<6 PRINT 10^(T-4);TAB(4);"MS", 6056 IF T>5 PRINT 10^(T-7);TAB(4);"S", 6060 PRINT X,V,T0,10;TAB(0); 6070 IF ABS(T0)>10 PRINT " FAIL *" 6080 IF ABS(T0) <= 10 PRINT 6090 RETURN ]   09601-18017 A S 0122 3480D/3484A RTE BASIC VERIFY PROGRAM             H0101 h100 REM 110 REM 3480D/3484A SUBSYSTEM RTE-B VERIFICATION TEST 120 REM LISTING: A-09601-18017-2 130 REM ERS: A-09601-18017-1 140 REM SOURCE: 09601-18017 150 REM 160 REM M. SCHOENDORF 170 REM 180 PRINT 190 PRINT "3480D/3484A SUBSYSTEM VERIFICATION" 200 PRINT 210 PRINT "CONNECT DC VOLTAGE SUPPLY SET AT" 220 PRINT "2 VOLTS TO INPUT OF 3484A" 230 PRINT 240 PRINT "CHECK MEASUREMENT SETUP CALL" 250 PRINT 260 PRINT "ENTER TRIGGER SOURCE (0=DSI CARD, 1=EXTERNAL PACER)" 270 PRINT "AND DMA TRANSFER (0=NO, 1=YES)" 290 PRINT 300 INPUT T,D 310 REM FUNCTION SET TO DC, RANGE 10 VOLTS AND FILTER OUT 320 DVMSU(1,10,0,T,D) 330 PRINT 340 PRINT "CHECK MEASUREMENT CALL" 350 PRINT 360 PRINT "ENTER NUMBER OF READINGS DESIRED (1-10)" 370 PRINT 380 INPUT N 390 DVMMV(N,A[1]) 400 FOR X=1 TO N 410 PRINT "DC VOLTAGE =";A[X] 430 NEXT X 440 END   09601-18018 A S 0122 12604B DSI CARD RTE BASIC VERIFICATION             H0101 4100 REM 110 REM 12604B D.S.I. RTE-BASIC VERIFICATION TEST 120 REM 130 REM SOURCE: 09601-18018 140 REM ERS: A-09601-18018-1 150 REM LSTG: A-09601-18018-2 160 REM 170 REM 200 PRINT 205 PRINT "12604B D.S.I. RTE-BASIC VERIFICATION TEST" 210 PRINT 220 PRINT "OPTIONS ARE:" 230 PRINT " 1) PRINT STATUS OF ALL 32 BITS" 240 PRINT " 2) PRINT EIGHT BCD DIGITS" 250 PRINT " 3) NEW UNIT NUMBER" 260 PRINT " ANYTHING ELSE) ABORT PROGRAM." 300 PRINT "UNIT NUMBER (NEGATIVE FOR NO ENCODE)" 310 INPUT U 320 PRINT "OPTION"; 330 INPUT Q 340 IF Q=3 THEN 300 350 IF Q=2 THEN 700 360 IF Q=1 THEN 400 370 STOP 400 REM OPTION TO PRINT STATUS OF ALL 32 BITS 410 DSI(U,0,A,B) 420 FOR I=15 TO 0 STEP -1 430 IBTST(A,I,Z) 440 PRINT Z; 450 IF I/4#INT(I/4) THEN 460 455 PRINT 460 NEXT I 470 PRINT 480 PRINT 500 FOR I=15 TO 0 STEP -1 510 IBTST(B,I,Z) 520 PRINT Z; 530 IF I/4#INT(I/4) THEN 540 535 PRINT 540 NEXT I 600 GOTO 320 700 REM PRINT AS EIGHT BCD DIGITS 710 DSI(U,8,A,B) 720 PRINT "M.S. 6 DIGITS=";A 730 PRINT "L.S. 2 DIGITS=";B 740 GOTO 320 800 END O  09601-18019 A S 0122 HP 12555B D TO A CONV  VERIFY TEST             H0101 100 REM 110 REM 12555B DIGITAL-TO-ANALOG CONVERTER 120 REM LISTING: A-09601-18019-2 130 REM ERS: A-09601-18019-1 140 REM SOURCE: 09601-18019 150 REM 160 REM M. SCHOENDORF 9/12/74 170 REM 180 PRINT 190 PRINT "12555B DIGITAL-TO-ANALOG CONVERTER VERIFICATION" 200 PRINT 210 PRINT "CHECK DUAL 8 BIT D TO A CONVERTER" 220 PRINT 230 PRINT "CONNECT DC VOLTMETER TO PIN 2 (HIGH) AND PIN" 240 PRINT "7 (LOW) ON THE 12555B CARD (CHANNEL 1)." 250 PRINT "SET VOLTAGE RANGE ON THE DC VOLTMETER TO 10 VOLTS" 260 PRINT 270 PRINT "TYPE GO TO CONTINUE" 280 PAUSE 290 PRINT "VERIFY THAT VOLTAGE ON CHANNEL 1 OF D TO A CARD" 300 PRINT "INCREASES APPROXIMATELY .04 VOLTS EVERY 1 SECOND." 310 DIM X[32],Y[32] 320 GOSUB 1000 330 PRINT 340 PRINT "CONNECT DC VOLTMETER TO PIN 23 (HIGH) AND PIN" 350 PRINT "7 (LOW) ON THE 12555B CARD (CHANNEL 2)." 360 PRINT 370 PRINT "TYPE GO TO CONTINUE" 380 PAUSE 390 GOSUB 1000 400 GOTO 1070 1000 FOR I=1 TO 32 1010 LET X[I]=I 1020 LET Y[I]=I 1030 GRAPH(1,X[I],Y[I]) 1040 WAIT 1000 1050 NEXT I 1060 RETURN 1070 END 8  09601-18020 A S 0122 HP12555B D TO A CONV  DEVICE SUBROUTINE             H0101 MASMB,R,B,L NAM .GRAF 09601-16020 REV. A * * ENT GRAPH * *********************************** * * ERS: A-09601-16020-1 * LISTING: A-09601-16020-2 * SOURCE: 09601-18020 * RELOC: 09601-16020 * *********************************** * * M. SCHOENDORF SEPTEMBER 12,1974 REV. A * * *** UTILITY ROUTINES * EXT #GRFU,.DLD,.ENTR,ERRCD,ERROR,#ERRU EXT EXEC,.FAD,.IENT * * * GRAPH(N,X(I),Y(I)) * * N = 0 CLEAR (X(I) AND Y(I) IGNORED) * ELSE * N = NUMBER OF POINTS IN X-Y BUFFER (1-32) * * X(I) = ARRAY WHOSE ELEMENTS ARE THE X-COORDINATES * OF THE ANALOG VOLTAGE * * Y(I) = ARRAY WHOSE ELEMENTS ARE THE Y-COORDINATES * OF THE ANALOG VOLTAGE * * WHERE EACH ELEMENT OF THE X AND Y ARRAY CAN * VARY FROM 0 TO 255 AND THE CORRESPONDING * VOLTAGE IS CALCULATED BY THE FOLLOWING * FORMULA: * * V = (X(I) OR Y(I) / 255)*10 * * SKP * * NDATA BSS 1 XARAY BSS 1 YARAY BSS 1 GRAPH NOP JSB .ENTR DEF NDATA CLA CLEAR GLOBAL ERROR CODE STA ERRCD LDA NDATA,I GET NUMBER OF ELEMENTS IN ARRAY SSA <0? JMP ERR1 YES, ERROR EXIT SZA,RSS =0? JMP CLEAR YES CMA,INA ADA .32 >32? SSA JMP ERR1 YES, ERROR EXIT LDA YARAY GET ADD. OF Y ELEMENTS OF ARRAY LDB BUFAD JSB INIT SUBROUTINE TO INITIALIZE VALUES JSB PACK SUBROUTINE TO PACK INTEGERS LDA XARAY GET ADDRESS OF X AND Y ELEMENTS LDB BUFAD OF ARRAY JSB INIT SUBROUTINE TO INITIALIZE VALUES JSB PACK SUBROUTINE TO PACK INTEGERS JSB EXEC EXEC WRITE CALL DEF *+5 RETURN ADDRESS DEF .2 WRITE REQUEST DEF #GRFU LOGICAL UNIT NUMBER DEF BUFAD,I BUFFER L)OCATION DEF NDATA,I BUFFER LENGTH JMP GRAPH,I RETURN TO CALLING PROGRAM * CLEAR JSB EXEC DEF *+3 DEF .3 DEF #GRFU JMP GRAPH,I * .2 DEC 2 .3 DEC 3 .32 DEC 32 BUFAD DEF *+1 BSS 32 SKP * * ERROR PROCESSING * ERR1 ISZ ERRCD TYPE 1 ERROR JSB ERROR CALL ERROR SUBROUTINE DEF *+5 RETURN ADDRESS DEF ERRCD TYPE OF ERROR DEF ERMSG ERROR MESSAGE DEF #ERRU DEF GRAPH ENTRY POINT JMP GRAPH,I RETURN TO CALLING PROGRAM ERMSG DEC 3 ASC 2,GRAPH * * SUBROUTINE TO INITIALIZE COUNTERS AND ARRAYS * INIT NOP STA ARRAY ADDRESS OF DATA ORIGIN STB BUFF ADDRESS OF DATA DESTINATION LDA NDATA,I NUMBER OF DATA POINTS CMA,INA STA INCR STORE FOR INCREMENTING JMP INIT,I * * SUBROUTINE TO PACK VALUES FROM TWO FLOATING POINT * ARRAYS TO ONE INTEGER ARRAY * PACK NOP GNUDT JSB .DLD GET FLOATING POINT VALUE DEF ARRAY,I JSB .FAD ADD 1/2 FOR ROUND OFF DEF HALF JSB .IENT CONVERT TO INTEGER JMP ERR1 WON'T CONVERT, ERROR EXIT LDB 0 SSB >0? JMP ERR1 NO, ERROR EXIT LDA BUFF,I GET CONTENTS OF INTEGER ARRAY AND B377 MASK OFF LOWER 8 BITS ALF,ALF SHIFT 8 BITS TO LEFT IOR 1 MERGE WITH NEXT INTEGER STA BUFF,I STORE IN INTEGER ARRAY CMB,INB ADB B377 SSB INTEGER > 255? JMP ERR1 YES, ERROR EXIT ISZ ARRAY INCREMENT ADD. OF SOURCE ARRAY ISZ ARRAY INCREMENT ADD. OF SOURCE ARRAY ISZ BUFF INCREMENT ADD. OF DESTINATION ARRAY ISZ INCR INCR. NO. OF VALUES LEFT TO CONVERT JMP GNUDT GET NEXT FLT. PT. NO. FOR CONV. JMP PACK,I * B377 OCT 377 ARRAY BSS 1 BUFF BSS 1 INCR BSS 1 HALF DEC 0.5 END    09601-18021 1901 S 0163 &DVR15 HP7261 OMR CARD READER DVR            H0101 UASMB,R,L NAM DVR15 09601-16021 781108 REV 1901 ENT I.15,C.15 SPC 4 * * ***HP 7261A RTE DVR 15*** * * SOURCE TAPE: 09601-18021 * RELOC. TAPE: 09601-16021 * SMALL PROG.MANUAL: 07261-90010 * * MAY 1974 L.W. HENNESSEY * JUNE 1974 A.M. WERNICK * MAY 1978 D.POT * * * * THIS DRIVER CAN CONVERT EITHER EBCDIC OR BCD CARDS: SPC 1 * WHEN CONFIGURING THIS DRIVER INTO RTE SYSTEM, ASSIGN CARD READER * THREE LOGICAL UNIT NUMBERS * LU#N = READER,SUBCHANNEL 0 * LU#M = READER,SUBCHANNEL 1 * LU#L = READER,SUBCHANNEL 2 * TO CONVERT EBCDIC PUNCH SET - ADDRESS READER AS SUBCHANNEL 0 * TO CONVERT BCD PUNCH SET - ADDRESS READER AS SUBCHANNEL 1 * TO CONVERT EBCDIC-RDTS PUNCH SET - ADDRS READER AS SUBCHN 2 SPC 2 * THIS CARD READER DRIVER PROCESSES READ AND CONTROL REQ'S. * WRITE REQ'S AND ILLEGAL CONTROL REQ'S ARE REJECTED. SPC 1 * TO PROCESS A READ, STATUS IS FIRST CHECKED. IF IT IS * "OK TO PICK" A PICK COMMAND IS ISSUED AND A DMA TRANSFER * IS BEGUN. IF STATUS IS NOT "OK TO PICK" A NOT READY * RETURN IS MADE TO THE SYSTEM. * THE DMA TRANSFER IS INTO THE DRIVER'S INTERNAL BUFFER. * THE DRIVER IS ENTERED UPON DEVICE CONTROLLER INTERRUPT. * THE CARD DATA IS CONVERTED FROM COLUMN IMAGE TO THE FORMAT * * SPECIFIED BY THE READ REQUEST AND STORED INTO THE CALLING * PROGRAM'S BUFFER. * THE THREE FORMATS A READ REQUEST CAN SPECIFY ARE: * ASCII SUBFUNCTION 0 * PACKED BINARY SUBFUNCTION 3 * COLUMN BINARY SUBFUNCTION 1 SPC 1 * THREE CONTROL REQUESTS ARE PROCESSED: * DYNAMIC STATUS SUBFUNCTION 6 * RING BELL SUBFUNCTION 4 (REWIND LU) * SELECT HOPPER SUBFUNCTION 1 (ENDFILE LU) * THE LATTER TWO CONTROL REQ'S ARE PROCESSED ON "OK TO PICK" * STATUS OR ELSE REJECTED AS IN THE CASE OF THE READ REQUEST. * NOTE THAT FOR EASE OF IMPLEMENTATION THESE TWO CONTROL RE-Q'S * CAN BE ACCOMPLISHED WITH THE STANDARD HIGH-LEVEL (MAG TAPE) * REWIND AND ENDFILE STATEMENTS. SPC 1 * INTERPRETATION OF STATUS BITS IN EQT: * 0 DEVICE NOT READY * 1 ILLEGAL HOLLERITH IF ASCII OR WORD COUNT IF PACKED BINARY * 4 PICK FAILURE (AFTER TEN ATTEMPTS) * 5 HOPPER BAD * 7 END OF FILE (DEFINED AS LAST-CARD.AND.BLANK-CARD) HED *** RTE OMR DRIVER,DVR15 *** * INITIATION SECTION SPC 1 I.15 NOP JSB SETIO CONFIGURE IO BLF,SLB STATUS OK-TO-PICK? JMP OK YES RBR,RBR IF NOT, SSB,SLB,RSS STATUS EXTENDED-CARD? ISZ EQT5,I NO - SET CR NOT READY OK LDB EQT5,I LOAD STATUS LDA EQT6,I LOAD CONTROL WORD AND D3 ISOLATE REQUEST CODE. CPA D3 CONTROL REQUEST? JMP R3 YES - GO GET SUBFUNCTION SLA,ARS NO - READ REQUEST? JMP READ YES, CONTINUE. JMP I.15,I REJECT SPC 1 B400 OCT 400 B600 OCT 600 B3700 OCT 3700 SPC 1 R3 LDA EQT6,I LOAD CONTROL WORD. AND B3700 ISOLATE THE FUNCTION CODE. CPA B100 HOPPER SELECT? JMP HOPR YES CPA B400 RING BELL? JMP BELL YES CPA B600 DYNAMIC STATUS? JMP A4 YES, GO TO IMMEDIATE COMPLETION. SPC 1 LDA D2 CONTROL REQ UNDEFINED JMP I.15,I REJECT SPC 1 READ CPA EQT8,I ZERO BUFFER LENGTH? JMP SKIP YES, GO CHECK THE MODE. READ0 SLB CR READY? JMP A3 NO - GO TO EXIT LDA EQT4,I SAVE AND B100 SUBCHANNEL RAR FOR STA EQT11,I CONVERSION LDA N10 INITIALIZE STA EQT13,I PICK FAIL COUNTER READ1 LDA SC LOAD CR SELECT CODE DMA1 OTA DMA ASSIGN DMA LDA BUFAD LOAD THE INTERNAL BUFFER ADDRESS. DMA2 CLC DMA-4 PREPARE THE ADDRESS REGISTER. DMA3 OTA DMA-4 OUTPUT THE BUFFER ADDRESS. LDA N81 LOAD THE WORD COUNT DMA4 STC DMA-4 PREPARE DMA WORD COUNT DMA5 OTA DMA-4 OUTPUT THE WORD COUNT CR1 STC CR,C ISSUE A PICK COMMAND TO THE CR. DMA6 STC DMA,C ACTIVATE DMA DMA7 CLC DMA CLEAR DMA CLA CPA I.15 PICK FAILURE RETRY? JMP C.RTN YES, GO TO CONTINUATION RETURN. JMP I.15,I NO, RETURN SUCCESSFUL INITIATION SPC 1 A3 LDA D3 SET FOR CR NOT READY JMP I.15,I RETURN SPC 1 BELL LDA B10 BIT 3 JMP CR2 HOPR LDA D4 BIT 2 SLB CR READY? JMP A3 NO - GO TO EXIT CR2 OTA CR TURN ON BIT SZA,RSS 10 U'SECS ELAPSED? JMP A4 YES - GO TO IMMEDIATE COMPLETION D2 DEC 2 NO - D3 DEC 3 BURN D4 DEC 4 TIME CLA TURN OFF LDB N10 WAIT 50 MICROSECS INB ISZ 1 DONE WAITING? JMP *-2 NO JMP CR2 THAT BIT SPC 1 SKIP LDA EQT6,I LOAD CONTROL WORD AND B100 ISOLATE THE MODE BIT. SZA MODE BINARY? JMP READ0 YES, GO SKIP RECORD A4 LDA D4 SET FOR IMMEDIATE COMPLETION JMP I.15,I RETURN SPC 2 BUFAD DEF I.BUF,I INTERNAL BUFFER FOR DMA SC BSS 1 CR SELECT CODE SPC 1 N10 DEC -10 N81 DEC -81 D8 EQU * B10 OCT 10 B100 OCT 100 B700 OCT 700 B4000 OCT 4000 B4200 OCT 4200 B4300 OCT 4300 SKP * CONFIGURATION SECTION SPC 1 SETIO NOP STA SC STORE SELECT CODE SPC 1 IOR CLCSC CONFIGURE STA *+1 & EXECUTE CLC CR CLEAR CR SPC 1 XOR B5000 STA CR1 CONFIGURE XOR B5200 CR IO STA DSTAT STA *+1 LIB CR LOAD CR STATUS XOR B4300 STA CR2 SPC 1 LDA CHAN SAVE ASSIGNED STA EQT12,I DMA CHANNEL SPC 1  IOR CLCSC STA DMA7 XOR B5000 STA DMA6 XOR B1600 STA DMA8 XOR B700 CONFIGURE STA DMA1 DMA IO XOR D4 STA DMA3 STA DMA5 ADA B100 STA DMA4 ADA B4000 STA DMA2 XOR B4200 STA DMA9 STA DMA10 SPC 1 LDA EQT5,I AND HIHAF CLEAR STATUS WORD STA EQT5,I SPC 1 JMP SETIO,I SPC 3 BUF DEF I.BUF CLCSC CLC 0 SPC 1 EXTRA IOR CLCSC CLEAR STA *+1 INTERRUPTING CLC 0 SELECT CODE C.RTN ISZ C.15 INCREMENT FOR JMP C.15,I CONTINUATION RETURN SKP * STD HP EBCDIC CHARS HWPTB DEF *+1 ASC 1,!$ ASC 1,;] ASC 1,+^ SPC 1 * EBCDIC-RDTS CHARS OCT 56444 RDTS CHAR=VERT BAR,$ OCT 35536 RDTS CHAR=;,] OCT 25441 RDTS CHAR=+,UNDERSCORE SPC 2 CRSET NOP LAST EBCDIC CHAR SET SPC 2 * COMPLETION SECTION SPC 1 C.15 NOP LDB EQT1,I INTERRUPT EXPECTED? SZB,RSS JMP EXTRA NO - QUEUE EMPTY LDB EQT12,I GET DMA NUMBER BEING USED CPB A DMA INTERRUPT? JMP EXTRA YES - IGNORE IT STB CHAN UPDATE SYSTEM WORD DSTAT LIB CR GET CR STATUS DMA8 STF DMA STOP ANY DMA TRANSFER NOP CLA STA LAST CLEAR LAST CARD SWITCH RBL,RBL SHIFT BIT 14 TO BIT 0 SLB ECIH SIGNAL PRESENT ? JMP *+4 YES: IT IS OK TO PROCESS DMA10 LIA DMA-4 LOAD DMA WORD COUNT REGISTER CPA N81 WAS ANY DATA TRANSMITTED ? JMP OPERR NO: HARDWARE FAILURE CLA RESTORE HARDWARE REGISTER SSB,SLB,RSS LAST CARD? ISZ LAST YES - SET SWITCH CPA EQT8,I WAS A RECORD BEING SKIPPED? JMP R.ERR YES, GO TO COMPLETION RETURN. STA CNTR NO, INITIALIZE THE WORD COUNTER. STA COUNT GINITIALIZE COLUMN COUNTER STA NULL INITIALIZE NULL SWITCH DMA9 LIA DMA-4 LOAD THE WORD COUNT REGISTER. CPA N81 WAS ANY DATA TRANSMITTED? JMP ERROR NO, GO PROCESS ERROR CMA,INA YES, WORD COUNT RESIDUE POSITIVE. ADA N81 COMPUTE & STA WCI STORE THE WORD COUNT INDEX. LDB BUF LOAD INTERNAL BUFFER ADDRESS. STB INPTR STORE BUFFER ADDRESS INDEX. STB TEMP SAVE THE BUFFER ADDRESS INDEX. LDB EQT6,I LOAD THE FUNCTION REQUEST CODE. BLF,BLF LOOK AT B5200 RBL MODE BIT SSB BINARY? JMP BINRY YES, GO PROCESS BINARY CARD. LDA EQT4,I GET SUBCHN NO AND B700 CPA B100 BCD? JMP OUTS YES-DONT FUSS WITH TABLE CPA CRSET SAME AS LAST CHAR SET? JMP OUTS YES STA CRSET UPDATE CRSET LDB HWPTB ADDRS OF STD EBCDIC TABLE CPA B200 RDTS EBCDIC? ADB D3 YES,USE RDTS CHARS LDA 1,I GET 1ST CHAR STA LASC1 OVERLAY 1ST CHAR IN TABLE INB ADDRS OF NEXT CHAR LDA 1,I GET 2ND CHAR STA LASC2 INB LDA 1,I STA LASC3 OUTS LDA WCI RESTORE A REG LDB EQT8,I LOAD THE ORIGINAL REQUEST LENGTH. SSB IS THE REQUEST IN WORDS? CMB,INB,RSS NO, COMPLEMENT CHARACTER COUNT. RBL YES, CONVERT WORDS TO CHARACTERS. SSB CHARACTER LENGTH OVERFLOW? JMP CHADR YES, CONTINUE. ADA B STORE LEAST CMB,INB OF # REQ'D SSA OR # READ STB WCI AS WORD COUNT INDEX CHADR LDA EQT7,I LOAD THE USER BUFFER ADDRESS. CLE,ELA SHIFT TO FORM CHARACTER ADDRESS. STA EXPTR SAVE THE CHARACTER ADDRESS. LOOP LDA INPTR,I LOAD THE DATA COLUMN. ISZ COUNT INCREMENT THE COLUMN COUNTER. AND B7777 GET RID OF STATUS SZA,RSS IF COLUMN IS BLANK, JMP BLANK SET CHARACTER A BLANK. ALF LEFT JUSTIFY COLUMN STA INPTR,I & RESTORE IT CCB PRESET BIT 8 STB EIGHT SWITCH LDB COUNT LOAD THE CURRENT COLUMN COUNTER. STB CNTR UPDATE CHARACTER COUNT SPC 1 AND B160 MASK OFF ALL BUT BITS 12,11,0 CLB CLEAR B FOR LATER SZA,RSS ANY HIGH PUNCHES ? JMP NOHI NO, TEST FOR LOW PUNCHES SPC 1 CPA B100 BIT 0 PUNCHED ? LDB D32 YES, LOAD 32 CPA B40 BIT 11 PUNCHED ? LDB D16 YES, LOAD 16 CPA B20 BIT 12 PUNCHED ? LDB D48 YES, LOAD 48 SZB,RSS WAS ONLY ONE COLUMN PUNCHED ? JMP BAD NO, ILLEGAL PUNCH SPC 1 NOHI STB TOTAL SET HIGH FIELD WEIGHT XOR INPTR,I ISOLATE LOWER BITS OF COLUMN SZA,RSS ANY LOW BITS PUNCHED ? JMP NOLOW NO, CHARACTER COMPLETED. SPC 1 CLE,SSA BIT 9 SET ? LDB D9 YES, LOAD WEIGHT B1600 ELA BIT 9 SET ? SEZ JMP SET YES, TEST FOR MORE BITS. SPC 1 ELA BIT 8 SET ? CLB,SEZ,RSS YES,CLEAR B FOR LATER JMP *+4 BIT 8 WAS NOT SET. STB EIGHT SET THE SWITH CLE,SZA,RSS WAS ONLY BIT 8 SET ? JMP BIT8 YES, EXIT TO FORM CHARACTER. SPC 1 LDB D7 LOAD WEIGHT COUNTER ELA IS BIT 7 SET ? SEZ JMP SET YES, CHECK FOR OTHER PUNCHES LDB D6 ELA IS BIT 6 SET ? SEZ JMP SET YES LDB D5 ELA IS BIT 5 SET ? SEZ JMP SET YES LDB D4 ELA IS BIT 4 SET ? SEZ JMP SET YES LDB D3 ELA IS BIT 3 SET ? SEZ JMP SET YES LDB D2 ELA IS BIT 2 SET ? SEZ,RSS YEy4S JMP ONE NO, BIT 1 MUST BE. SET SZA ANY OTHER PUNCHES ? JMP EXBAD YES, ILLEGAL COMBINATION ISZ EIGHT WAS BIT 8 SWITCH SET? BIT8 ADB D8 YES, ADD WEIGHT FOR IT. BIT1 ADB TOTAL ADD WEIGHT FOR FIELD BITS. NOLOW SLB,BRS PLACE ODD BIT IN A-REG. CLA,INA SET ODD CHARACTER FLAG ADB TABLE FIND PLACE IN ADB EQT11,I APPROPRIATE TABLE CLE,SZA ODD CHARACTER ? CCE LDA B,I GET WORD WITH TWO CHARS. SEZ,RSS ODD CHARACTER ? ALF,ALF YES, RIGHT JUSTIFY IT AND LOHAF ISOLATE THE CHARACTER. RSS SPC 1 BLANK LDA B40 LOAD ASCII BLANK SPC 1 LEGAL ISZ INPTR INCREMENT BUFFER ADDRESS POINTER. LDB EXPTR LOAD CHARACTER BUFFER ADDRESS. CLE,ERB SHIFT, FORM WORD BUFFER ADDRESS. SEZ,RSS IS NEW CHARACTER TO BE LOWER? ALF,SLA,ALF NO, SHIFT TO HIGH ORDER; SKIP. IOR B,I YES, INCLUDE THE HIGH ORDER PART. STA B,I STORE THE WORD IN USER BUFFER. ISZ EXPTR INCREMENT BUFFER ADDRESS POINTER. ISZ WCI IS THE BUFFER EXHAUSTED? JMP LOOP NO, GO PROCESS NEXT COLUMN. LDB CNTR YES, LOAD # NON-BLANK CHARACTERS. SZB,RSS NULL CARD? JSB EOF YES - GO CHECK FOR EOF LDA EQT8,I LOAD THE ORIGINAL REQUEST TYPE. CLE,SSA,RSS WAS THE REQUEST IN CHARACTERS? ERB NO, CONVERT CHARACTERS TO WORDS. END. CLA,SEZ WAS THE CHARACTER COUNT ODD? INB YES, INCREMENT THE WORD COUNT. JMP C.15,I COMPLETION RETURN. SPC 1 BAD LDB EQT11,I DO EXTRA SZB,RSS BCD TESTS? JMP OVERP NO SPC 1 CPA B140 11 - 0 PUNCH ? JMP BCDEX YES, MAY BE ! CPA B120 12 - 0 PUNCH ? JMP BCDQU YES, MAY BE ? SPC 1 EXBAD LDA EQT5,I SET ILLEGAL PUNCH STATUS IOR D2 STA =EQT5,I QUES LDA B77 LOAD ASCII QUESTION MARK. JMP LEGAL STORE CHARACTER SPC 1 ONE CLB,INB SET WEIGHT, TEST BIT 8 ISZ EIGHT SWITCH JMP EXBAD BIT 8 FLAG WAS ON, ILLEGAL PUNCH. JMP BIT1 JUST BIT 1 PUNCHED SPC 1 OVERP CPA B120 HOLLERITH 12 - 0 PUNCH ? RSS YES JMP EXBAD ILLEGAL PUNCH LDA B173 GET ASCII CODE JMP LEGAL D5 DEC 5 D6 DEC 6 D7 DEC 7 D9 DEC 9 D48 DEC 48 B160 OCT 160 B77 OCT 77 B7777 OCT 7777 LOHAF OCT 377 HIHAF OCT 177400 B173 OCT 173 ASCII FOR HOLLERITH 12-0 PUNCH SPC 1 BCDEX XOR INPTR,I TEST FOR OTHER BITS SZA JMP EXBAD ILLEGAL PUNCHES LDA B41 LOAD ! JMP LEGAL STORE SPECIAL CHARACTER SPC 1 BCDQU XOR INPTR,I TEST FOR OTHER PUNCHES SZA JMP EXBAD JMP QUES GO LOAD AND STORE ? SPC 1 B41 OCT 41 ! B120 OCT 120 B140 OCT 140 SPC 1 EOF NOP LDA LAST LAST CARD? SZA,RSS IF NOT, JMP EOF,I RETURN LDA EQT5,I OTHERWISE, IOR B200 SET BIT 7 STA EQT5,I TO INDICATE CLA END OF FILE JMP R.ERR GO TO COMPLETION RETURN SPC 1 B200 OCT 200 SKP BINRY STA COUNT STORE WORD COUNT INDEX RVRSE LDB B20 REVERSE CARD COLUMN LDA TEMP,I LOAD COLUMN ERA SHIFT OUT OF ELB A THRU E INTO B SEZ,RSS COLUMN REVERSED? JMP *-3 NO STB TEMP,I YES - STORE REVERSED COLUMN SZB WAS IT NULL? ISZ NULL NO - TRIP SWITCH ISZ TEMP POINT TO NEXT COLUMN ISZ COUNT CARD REVERSED? JMP RVRSE NO - GET NEXT COLUMN LDB NULL WAS ENTIRE SZB,RSS CARD NULL? JSB EOF YES - GO CHECK FOR EOF LDB EQT6,I GET CONTROL WORD BLF,BLF DETERMINE  IF SSB PACKED BINARY JMP PACKB YES, GO PROCESS PACKED BINARY. LDA WCI RELOAD WORD COUNT INDEX JSB INDEX IMAGE LDA INPTR,I LOAD THE DATA COLUMN. ISZ INPTR INCREMENT BUFFER ADDRESS POINTER. STA EXPTR,I STORE THE WORD IN USER BUFFER. ISZ EXPTR INCREMENT BUFFER ADDRESS POINTER. ISZ CNTR INCREMENT THE WORD COUNTER. ISZ WCI IS THE BUFFER EXHAUSTED? JMP IMAGE NO, CONTINUE. TLOG LDA EQT8,I LOAD THE ORIGINAL REQUEST TYPE. LDB CNTR LOAD THE TRANSMISSION LOG. CLE,SSA WAS THE REQUEST IN CHARACTERS? B5000 BLS YES, CONVERT WORDS TO CHARACTERS. JMP END. GO ISSUE A COMPLETION RETURN. SPC 2 INDEX NOP LDB EQT7,I LOAD THE USER BUFFER ADDRESS. STB EXPTR SAVE THE USER BUFFER ADDRESS. LDB EQT8,I LOAD THE ORIGINAL REQUEST LENGTH. SSB,RSS IS THE REQUEST IN WORDS? CMB,INB,RSS YES, COMPLEMENT WORD COUNT; SKIP. BRS NO, CONVERT CHARACTERS TO WORDS. CMA,INA MAKE THE RECORD LENGTH POSITIVE. ADA B STORE LEAST OF SSA,RSS # REQ'D OR # READ STB WCI AS WORD COUNT INDEX JMP INDEX,I SPC 1 B17 OCT 17 D60 DEC 60 SPC 1 PACKB LDA INPTR,I LOAD THE FIRST DATA COLUMN. RAR,RAR SHIFT ROWS 12-5 TO LOWER. RAR,RAR SHIFT ROWS 12-5 TO LOWER. AND LOHAF ISOLATE THE RECORD WORD LENGTH. CMA,INA,SZA,RSS ZERO RECORD LENGTH? JMP ERROR YES, GO FLAG WORD COUNT ERROR. STA WCI NO, SAVE THE RECORD WORD LENGTH. JSB INDEX GO COMPUTE THE WORD COUNT INDEX. LDA WCI LOAD THE WORD COUNT INDEX. ADA D60 SSA IS THE WORD COUNT > 60? JMP ERROR YES, GO FLAG WORD COUNT ERROR. LDB INPTR,I NO, LOAD DATA COLUMN 1 OF 4. ISZ INPTR INCREMENT BUFFER ADDRESS POINTER. UNPAK BLF SH%`IFT COLUMN TO BITS 15-4. STB TEMP SAVE THE DATA COLUMN. LDA INPTR,I LOAD DATA COLUMN 2 OF 4. ISZ INPTR INCREMENT BUFFER ADDRESS POINTER. ALF,ALF SHIFT ROW 12 TO BIT 3. LDB A SAVE THE DATA COLUMN. AND B17 ISOLATE ROWS 12-1. IOR TEMP INCLUDE COLUMN #1. JSB STORE GO STORE DATA WORD 1 OF 3. AND HIHAF ISOLATE ROWS 2-9. STA TEMP SAVE THE PARTIAL DATA COLUMN. BLF,BLF SHIFT ROW 12 TO BIT 7. BLF SHIFT ROW 12 TO BIT 7. LDA B LOAD DATA COLUMN 3 OF 4. AND LOHAF ISOLATE ROWS 12-5. IOR TEMP INCLUDE COLUMN #2. JSB STORE GO STORE DATA WORD 2 OF 3. AND HIFOR ISOLATE ROWS 6-9. IOR B INCLUDE DATA COLUMN 4 OF 4. JSB STORE GO STORE DATA WORD 3 OF 3. JMP UNPAK GO PROCESS THE NEXT 4 COLUMNS. SPC 1 HIFOR OCT 170000 D16 EQU * B20 OCT 20 D32 EQU * B40 OCT 40 SPC 1 STORE NOP STA EXPTR,I STORE THE BINARY DATA WORD. ISZ EXPTR INCREMENT BUFFER ADDRESS POINTER. ISZ CNTR INCREMENT THE WORD COUNTER. LDA B LOAD THE PREVIOUS DATA COLUMN. LDB INPTR,I LOAD THE NEXT DATA COLUMN. ISZ INPTR INCREMENT BUFFER ADDRESS POINTER. ISZ WCI IS THE BUFFER EXHAUSTED? JMP STORE,I NO, RETURN. JMP TLOG YES, GO LOAD TRANSMISSION LOG. SPC 1 OPERR CLA RESTORE A REGISTER ELB BIT 15 = FEED OK / BIT E = HOPPER SSB PICK FAILURE? JMP PICKF YES, GO CHECK FOR RETRY. SEZ,INA,RSS GOOD HOPPERS = DEVICE INOPERABLE? LDA B40 NO - BAD HOPPER NOPCK IOR EQT5,I INCLUDE THE UPPER STATUS. STA EQT5,I UPDATE THE STATUS WORD. CLA,INA SET FOR NOT READY RETURN R.ERR CLB JMP C.15,I RETURN SPC 1 PICKF STA I.15 CLEAR THE INITIATION FLAG. ISZ EQT13,I IS TXB@40 GOTO 1030 1050 PRINT "1=ON,0=OFF"; 1060 INPUT S 1065 IF S#0 AND S#1 GOTO 1050 1070 IF B0#40 GOTO 1100 1080 LET X=S 1090 GOTO 1190 1100 LET W=(B0>7)+(B0>23) 1120 LET R=B0-8*(W>0)-16*(W>1) 1130 IF S=0 AND W=2 IBCLR(A,R,A) 1140 IF S=0 AND W=1 IBCLR(B,R,B) 1150 IF S=0 AND W=0 IBCLR(C,R,C) 1160 IF S=1 AND W=2 IBSET(A,R,A) 1170 IF S=1 AND W=1 IBSET(B,R,B) 1180 IF S=1 AND W=0 IBSET(C,R,C) 1190 FBTWR(U,A,B,C,X,0) 1200 GOTO 270 2000 PRINT "BCD OUTPUT (10 DIGITS)" 2005 PRINT "----------------------" 2007 PRINT 2010 PRINT " NUMBER TO BE OUTPUT:" 2020 PRINT 2030 PRINT " 4 MOST SIGNIFICANT DIGITS (0-9999):"; 2040 INPUT A 2045 IF A<0 OR A>9999 GOTO 2030 2050 PRINT " 4 NEXT MOST SIGNIFICANT DIGITS (0-9999):"; 2060 INPUT B 2065 IF B<0 OR B>9999 GOTO 2050 2070 PRINT " 2 LEAST SIG?B  NIFICANT DIGITS (0-99):"; 2080 INPUT C 2085 IF C<0 OR C>99 GOTO 2070 2090 PRINT "BIT 41 (0 OR 1):"; 2100 INPUT X 2110 FBTWR(U,A,B,C,X,1) 2120 GOTO 270 3000 PRINT "ALL ZEROS OUT" 3002 PRINT "-------------" 3004 PRINT 3005 LET A=B=C=X=0 3010 FBTWR(U,A,B,C,X,0) 3020 GOTO 270 4000 PRINT "ALL 1'S OUT" 4004 PRINT "-----------" 4006 PRINT 4010 ISETC("177777",A) 4020 LET B=A 4030 ISETC("377",C) 4034 LET X=1 4040 FBTWR(U,A,B,C,X,0) 4050 GOTO 270 9999 END   09610-18001 A S 0222 REMOTE MICROCIRCUIT DIAGNOSTIC             H0102 l%ASMB,A,B,L,C HED REMOTE UCKT I\F DIAGNOSTIC 09610-16001 04475 -TLD- ORG 100B * * * THIS IS A DIAGNOSTIC PROGRAM DESIGNED TO VERIFY AND * TROUBLESHOOT THE SERIAL REMOTE MICROCIRCUIT INTERFACE * HP PART NO. 09610-60044. COMPLETE OPERATING INSTRUCTIONS * CAN BE FOUND IN THE APPROPRIATE MANUALS. * * * ABSOLUTE TAPE 09610-16001 * SOURCE TAPE 09610-18001 * * * * * * STARTING ADDRESS WITH CONFIGURATION IS 100(8) * RESTART ADDRESS WITHOUT CONFIGURATION IS 2000(8) * * * * WHEN STARTING AT 100 PUT SELECT CODE OF 12665 CARD IN * SWITCH REGISTER BITS 5-0 * * * * 15!14!13!12!11!10!9!8!7!6!5!4!3!2!1!0 * * USER CONFIGURATION (STARTING ADDRESS 100) * * BIT 5-0= SELECT CODE OF 12665 CARD * * HALT DISPLAYING 107000 - PUT IN INITIAL SWITCH SETTINGS * * HALT DISPLAYING 103000 - ALLOWS DUMP - PUSH RUN TO GO * * RUN TIME SWITCH SETTINGS - USED IF BIT 0 IS 0 * * BIT 15 = 1 - HALT DIAGNOSTIC AT END OF CURRENT TEST * BIT 14 = 1 - SUPRESS ERROR HALTS * BIT 13 = 1 - LOOP ON CURRENT TEST * BIT 12 = 1 - HALT AT END OF CURRENT PASS OF ALL TESTS * BIT 11 = 1 - RUN BASIC TEST * BIT 10 = 1 - RUN LOOP TEST * BIT 9 = 1 - RUN DEBUG TEST * BIT 8 = 1 - IF BIT 9 = 1 THEN GET DATA WORDS (ELSE IGNORE) * BIT 7 = 1 - IF BIT 9 = 1 THEN DON'T WAIT FOR RETURN WORD * BIT 6 = 1 - SUPRESS ERROR MESSAGES * BIT 5 = 1 - SUPRESS ALL MESSAGES * BIT 2 = 1 - TIMED MODE FOR TRANSMISSION TEST (IF 2-WORD MODE) * BIT 1 = 1 - TWO WORD MODE (0 = 1-WORD MODE) EXCEPT FOR BASIC TEST SKP * HALT CODES: * 1060XX - TRAP CELL HALT IN CELL XX * 103001 - INVALID USER SELECT CODE * 103007 - ATTEMPT TO ENTER DATA W/ALL MESSAGES SUPRESSED * 107000 - SET INITIAL SWITCH SETTING * 103000 - HALT TO ALLOW DUMP (END OF USER CONFIGURATION) * 102001 - NO RETURN WORD WHEN EXPECTED * 102002 - UNEXPECTED RECEPTION IN PROCESS * 102003 - PARITY ERROR DETECTED * 102004 - MISSED REu:CEPTION BUT NO PARITY INDICATION * 102005 - DATA COMPARE ERROR * 102006 - NO END OF FIRST WORD FLAG * 102007 - ERROR COUNT OVERFLOW * 102010 - TIMED RETURN FLAG UNEXPECTEDLY SET * 102011 - TIMED RETURN FLAG UNEXPECTEDLY CLEAR * 102012 - UNEXPECTED RETURN WORD RECEIVED * * 102076 - END OF CURRENT TEST * 102077 - END OF PASS SKP * * NOTE: ALL TESTS ASSUME THAT A DIAGNOSTIC HOOD CONNECTOR * IS INSTALLED ON THE MICROCIRCUIT CONNECTOR OF THE * REMOTE I/O BOARD. THIS CONNECTOR HAS EACH OF ITS OUTPUT * BITS STRAPPED TO ITS CORRESPONDING INPUT BITS PLUS THE DEVICE * COMMAND LINE STRAPPED TO THE FLAG IN LINE. (REFER TO * MANUAL FOR PIN NUMBERS) * * TO RUN THE FOLLOWING TESTS, SWITCH OPTIONS MUST BE ESTABLISHED * AT RUN TIME. TO AVOID ERRORS, SWITCH OPTIONS FOR A PARTICULAR * TEST SHOULD BE SET UP BEFORE ENABLING THAT TEST. SEE * DESCRIPTION OF SWITCH OPTIONS. * * *BASIC REMOTE I/O TEST- * * JUMPERS: * W0 - DON'T CARE - TESTS RUN FASTEST IN POSITION A * W1 - IN * W2 - SAME AS W3 (BOTH IN OR BOTH OUT) * W3 - SAME AS W2 (BOTH IN OR BOTH OUT) * W4 - IN * W5 - OUT * W6 - OUT IF W10 IN, IN IF W10 OUT * W7 - DON'T CARE * W8 - SAME PARITY AS 12665 (IN-EVEN OUT-ODD) * W9 - IN IF W10 IN, OUT IF W10 OUT * W10 - DON'T CARE * W11 - IN * * TEST SEQUENCE: * 1.OUTPUT A 0 WORD WITH ENCODE. RETURN WORD SHOULD MATCH * TRANSMITTED WORD (EXCEPT BIT 14 WHICH IS NOT CHECKED.) * 2 REPEAT STEP 1 WITH AN ALL 1'S WORD. * 3.REPEAT STEP 1 WITH BOTH ENCODE AND TIMED RETURN. CHECK * TIMED RETURN FLAG IN RETURN WORD (BIT 14). TIMED RETURN * FLAG SHOULD NOT BE SET. * 4.REPEAT STEP 3 USING ALL 1'S WORD. * 5.REPEAT STEP 1 WITH TIMED RETURN ONLY. CHECK TIMED RETURN * FLAG IN RETURN WORD (BIT 14). TIMED RETURN FLAG SHOULD * BE SET. * 6.REPEAT STEP 5 USING ALL 1'S WORD. * 7.REPEAT STEP 1 WITH NO ENCODE OR TIMED RETURN. NO RETURN * WORD SHOULD BE RECEIVED. * 8.REPEAT STEP 7 USING ALL 1'S WORD. * * *TRANSMISSION LOOP TEST * * JUMPERS: * W0 - DON'T CARE - TESTS RUN FASTEST IN POSITION A * W1 - DON'T CARE * W2 - SAME AS W3 (BOTH IN OR BOTH OUT) * W3 - SAME AS W2 (BOTH IN OR BOTH OUT) * W4 - OUT * W5 - DON'T CARE IF W1 OUT. IF W1 IN THEN OUT TO CHECK * TIMED RETURN. * W6 - OUT IF W10 IN, IN IF W10 OUT * W7 - DON'T CARE * W8 - SAME PARITY AS 12665 (IN-EVEN OUT-ODD) * W9 - IN IF W10 IN, OUT IF W10 OUT * W10 - DON'T CARE * W11 - IN * * TEST SEQUENCE: * 1.A WORD IS TRANSMITTED TO THE REMOTE I/O BOARD WITH ENCODE * OR, OPTIONALLY IN 2-WORD MODE, A TIMED RETURN REQUEST. * 2.A RETURN WORD IS EXPECTED FROM THE REMOTE I/O CARD. * WHEN IT IS RECEIVED IT IS COMPARED TO THE WORD SENT AND * SHOULD BE EQUAL. * 3.THE LAST TRANSMITTED DATA WORD IS INCREMENTED BY 1. IF * NOT EQUAL TO 0 THEN RETURN TO STEP 1. THE DATA WORD WAS * INITIALLY 0 SO THIS RESULTS IN ALL 65536 BIT COMBINATIONS * BEING USED AS DATA WORDS. * 4.EACH SEQUENCE OF 65536 DATA WORDS IS A CYCLE. AT THE * END OF A CYCLE THE CYCLE NUMBER AND A DATA SUMMARY FOR * THAT CYCLE ARE PRINTED. * *TROUBLESHOOTING AID * * JUMPERS: * -NO SPECIFIC JUMPER CONFIGURATION IS REQUIRED. * JUMPERS HAVE THE FOLLOWING POSSIBLE POSITIONS: * W0 - A BIT TIME=1US * - B BIT TIME=2US * - C BIT TIME=4US * - D BIT TIME=8US * - E BIT TIME=16US * - F BIT TIME=32US * W1 - IN 2-WORD MODE (6940) * - OUT 1-WORD MODE (2313) * W2 - IN + TRUE OUT * - OUT GND TRUE OUT * W3 - IN + TRUE IN * - OUT GND TRUE IN * W4 - ION BIT14=TIMED REQ. INDICATOR * - OUT BIT14=DEVICE BIT 14 * W5 - IN NO TIMED REQUEST * - OUT TIMED REQ. IF NO ENCODE AND TF BIT = 1 * W6 - IN SET REQ. FF ON + EDGE OF FLAG * - OUT SET REQ. FF ON - EDGE OF FLAG * W7 - IN ALWAYS CLEAR REQ. (CLF) * - OUT CLEAR REQ. DEPENDS ON CLF BAR * W8 - IN EVEN PARITY * - OUT ODD PARITY * W9 - IN RESET ENCODE ON + EDGE OF FLAG * - OUT RESET ENCODE ON - EDGE OF FLAG * W10 - IN + TRUE ENCODE * - OUT GND TRUE ENCODE * W11 - IN SYSTEM NORMALIZE DISABLE (6940) * - OUT SYSTEM NORMALIZE ENABLE (2313) * * * SWITCH OPTIONS: * A MORE DETAILED DESCRIPTION OF SWITCH OPTIONS FOR THIS SECTION * IS PRESENTED HERE: * SWITCH 1 - SHOULD BE ON IF THE CARD IS SET FOR 2-WORD MODE, * OFF IF SET FOR 1-WORD MODE * SWITCH 7 - IF ON WILL NOT WAIT FOR RETURN WORD FROM REMOTE * I/O CARD AFTER A TRANSMISSION. IF OFF WILL WAIT. * SWITCH 8 - WHEN SET ON REQUESTS SYSTEM ATTENTION. WILL BE * AUTOMATICALLY TURNED OFF WHEN REQUEST FOR * ATTENTION IS RECOGNIZED. SYSTEM RESPONSE WILL BE * TO PRINT CURRENT VALUES OF USER SPECIFIED * PARAMETERS AND WAIT FOR NEW VALUES TO BE ENTERED. * REQUEST FOR NEW PARAMETERS WILL BE OF THE FORM: * ZZZZ=XXXXXX > * * WHERE ZZZZ WILL BE "DATA","OPTS", OR "MASK" * CORRESPONDING TO A REQUEST FOR A NEW DATA WORD * A NEW OPTIONS WORD, OR A NEW MASK WORD. * WHERE XXXXXX WILL BE AN OCTAL NUMBER REPRESENTING * THE CURRENT VALUE OF THE SPECIFIED PARAMETER. * WHERE > IS A PRzqOMPT INDICATING THE SYSTEM IS * READY TO ACCEPT A NEW OCTAL NUMBER TO REPLACE * THE CURRENT VALUE. * ANY VALID OCTAL NUMBER MAY BE ENTERED. ENTRY * ERRORS WILL BE NOTED BY ? >. ONLY BITS 1,2, * AND 3 OF "OPTS" ARE SIGNIFICANT. ALL OTHERS * WILL BE MASKED BEFORE REPLACING CURRENT VALUE. * IF NO NUMBER IS ENTERED (ONLY CR-LF) THEN * CURRENT VALUE IS UNDISTURBED. * SINCE OPTIONS WORD IS NOT USED IN 1-WORD MODE, * IT WILL NOT BE ASKED FOR UNLESS SWITCH 1 IS 1. * * * *INSTRUCTIONS FOR CHECKING OPERATION OF SYSTEM NORMALIZE TRAP AND * OPTIONAL INHIBIT CLEAR FLAG * * JUMPERS: * W0 - DON'T CARE - TESTS RUN FASTEST IN POSITION A * W1 - OUT * W2 - SAME AS W3 (BOTH IN OR BOTH OUT) * W3 - SAME AS W2 (BOTH IN OR BOTH OUT) * W4 - IN * W5 - OUT * W6 - OUT IF W10 IN, IN IF W10 OUT * W7 - OUT * W8 - SAME PARITY AS 12665 (IN-EVEN OUT-ODD) * W9 - IN IF W10 IN, OUT IF W10 OUT * W10 - DON'T CARE * W11 - OUT * * 1. LOOP ON TROUBLESHOOTING AID TEST WITH SWITCH 1 OFF AND: * DATA = 140001 * MASK = 0 * 2. OBSERVE WITH OSCILLISCOPE SIGNAL ON TEST POINT 20. * SHOULD SEE 2 PULSES ABOUT 20 NS IN DURATION SEPARATED BY ABOUT * 4 US. THE PULSES WILL BE PLUS TRUE IF ENCODE IS * SET AS PLUS TRUE, GROUND TRUE IF ENCODE IS SET AS * GROUND TRUE. PRESENCE OF THE TWO PULSES VERFIES * OPERATION OF THE SYSTEM NORMALIZE TRAP. * * EXIT TROUBLESHOOTING LOOP, TURN ON SWITCH 1, INSTALL JUMPERS * W1 AND W11, RE-ENTER TROUBLESHOOTING LOOP. * * SET OPTS=2 * 3. OBSERVE THE SIGNAL ON TEST POINT 3. SHOULD BE A GROUND * TRUE PULSE WHOSE DURATION IS ONE BIT TIME (AS DETERMINED * BY BIT TIME JUMPER) * 4. SET OPTS = 12. AGAIN OBSERVE SIGNAL ON TEST POINT 3. * SIGNAL SHOULD ALWAYS REMAIN HIGH. * 5. INSTALL W7. SHOULD NOW AGAIN BE A GROUNDxT TRUE * PULSE OBSERVABLE AT TEST POINT 3. SKP SUP ORG 100B A EQU 0 B EQU 1 SC EQU 0 JMP BEGIN PTRDR EQU 101B FLIST EQU 102B LIST EQU 103B KYBRD EQU 104B ORG 105B FWA ABS FWAVL LWA EQU 106B ISWR EQU 120B TIMER EQU 121B SWRCK EQU 122B I2ASC EQU 123B O2ASC EQU 124B ASC2N EQU 125B FRMTR EQU 127B SKP ORG 130B BEGIN EQU * CLC 0,C TURN OF I/O SYSTEM GETSC EQU * LIA 1 READ SELECT AND OPTIONS FROM SWR LDB A SAVE IN B AND B77 MASK SELECT CODE STA USC SAVE USER SELECT CODE ADA DM7 IS IT LESS THAN 10(BASE 8) SSA,RSS JMP SCOK SELECT CODE >= 10(8) BADSC HLT 1,C TELL OPERATOR TO TRY AGAIN JMP GETSC GET NEXT TRY SCOK EQU * LDA TCHLT GET BASIC TRAP CELL HALT LDB D2 INITIALIZE STORE POINTER LDTCS EQU * STA B,I STORE TRAP CELL HALT INA MOVE INB TO NEXT CELL CPB B100 DONE? RSS YES - SKIP JMP LDTCS NO - DO NEXT CELL LDB IOADR FETCH ADDRESS OF I/O TABLE STB PNTR SET UP POINTER SLOOP EQU * I/O CONFIGURATION LOOP (USER CARD - 12771) LDB PNTR,I GET I/O INSTRUCTION ADDR SZB,RSS IF 0 THEN JMP SDONE DONE LDA B,I GET I/O INSTRUCTION AND SCMSK MASK OUT S.C. IOR USC PUT IN USER SELECT CODE STA B,I PUT INSTRUCTION BACK ISZ PNTR MOVE ON TO NEXT JMP SLOOP DO NEXT SDONE EQU * CLA OTA 1 CLEAR SWR OCT 107000 HALT WAITING FOR INITIAL SWR LIA 1 FETCH SWR STA ISWR SET AS INITIAL FOR DUMP CLA OTA 1 CLEAR SWR HLT 0,C HALT TO ALLOW FOR DUMP JMP *+1,I ASTRT ABS 2000B SKP OUTWT NOP STA CDATA SAVE DATA AS CURRENT DATA LDB MODE :hCHECK FOR 2 WORD OR 1 WORD MODE SSB JMP TWORD 2-WORD MODE OWORD EQU * 1-WORD MODE SC001 CLC SC,C PUT 12771 IN REC. MODE SC002 LIB SC,C INITIALIZE CARD SC003 LIB SC ..... SC004 OTA SC OUTPUT DATA JSB WAIT2 WAIT 2 MS LDB WAIT? SEE IF WAITING FOR FLAG SSB,RSS (-1=WAITING) JMP OUTWT,I NOT WAITING FOR FLAG SO RETURN SC005 SFS SC CHECK FOR RETURN WORD JMP NRTRN NO RETURN WORD - ERROR JSB CKRTN CHECK RETURN WORD FOR PARITY,ETC JMP OUTWT,I RETURN NRTRN EQU * JSB NRTN DO ERROR THING JMP OUTWT,I RETURN TWORD EQU * LDA CDATA PICK UP CURRENT DATA CLB SET DATA BIT 15 IN WORD 1 SSA ..... INB ..... IOR SIGN TURN ON BIT 15 IN WORD 2 STA WORD2 SAVE TO SEND LATER LDA B FORM WORD 1 IOR OPTNS PUT IN OPTION BITS SC006 CLC SC,C PUT 12771 IN REC. MODE SC007 LIB SC,C INITIALIZE CARD (CLEARS FLAG) SC008 LIB SC ..... SC009 CLC SC PUT 12771 IN XMIT MODE SC010 SFS SC WAIT FOR FLAG JMP *-1 SC011 OTA SC OUTPUT WORD 1 JSB WAIT2 WAIT 2 MS SC012 SFS SC CHECK FOR END OF XMIT FLAG JMP NOFST SOMETHING HAPPENED TO FIRST WORD LDA WORD2 GET SECOND WORD JMP OWORD OUTPUT IT LIKE 1 WORD NOFST EQU * JSB NFRST DO ERROR THING JMP OUTWT,I RETURN SKP CKRTN NOP SC013 LIA SC,C GET STATUS SC014 LIB SC GET DATA STB RDATA SAVE READ DATA STA STATS SAVE STATUS AND D4 CHECK RECEPTION IN PROCESS BIT SZA BETTER BE ZERO JSB UXRIP UNEXPECTED RECEPTION IN PROCESS LDA STATS FETCH SAVED STATUS SSA CHECK FOR PARITY ERROR JSB PRITY DO ERROR THING LDA STATS FETCH SAVED STATUS RAR,SLA CHECK MISSED RECEPTI3ON BIT JSB MISSD DO ERROR THING LDA RDATA GET READ DATA XOR CDATA COMPARE WITH SENT DATA AND DCMP? UNDER MASK SZA BETTER BE EQUAL JSB DCMP DO ERROR THING JMP CKRTN,I RETURN SPC 5 WAIT2 NOP LDA D2 SET TIMER FOR 2 MS JSB TIMER,I CALL TIMER JMP WAIT2,I RETURN SPC 5 ERROR NOP ERROR PROCESSOR LDB A SAVE (A) IN (B) (ERROR NUMBER) ADB EMT GET ERROR MESSAGE POINTER STB TEMP SAVE ERROR MESSAGE POINTER LDB A GET ERROR NUMBER ADB EHLT FORM ERROR HALT STB EHALT PUT AWAY HALT STA MSG# LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP NOMSG IF SET SUPRESS MESSAGE LDB BIT06 GET BIT 6 MASK JSB SWRCK,I CHECK BIT 6 JMP NOMSG IF SET SUPPRESS MESSAGE MSG EQU * LDA PPNTR GET PARAMETER AREA ADDRESS STA PNTR SAVE AS PARAMETER POINTER CLA,CLE SET START OF FORMATTED OUTPUT LDB TEMP GET ERROR MESSAGE POINTER LDB B,I GET FORMAT ADDRESS JSB FRMTR,I CALL FORMATTER SZA,RSS SEE IF NEED A PARAMETER JMP NOPRM NO PARAMS NEEDED PRMOT EQU * NEED NUMBER TO OUTPUT CCA SET OCTAL OUT MODE LDB PNTR,I GET NUMBER TO OUTPUT ISZ PNTR BUMP POINTER JSB FRMTR,I CALL FORMATTER SZA SEE IF NEED ANOTHER PARAMETER JMP PRMOT GO OUTPUT NEXT PARAM NOPRM EQU * OUTPUT LAST SENT AND RCV'D WORDS LDA D7 CPA MSG# ERROR 7? JMP NOMSG YES - SKIP SENT-RCVD PRINT CLA,CLE SET START OF FORMATTED OUTPUT LDB AERR GET FORMAT ADDRESS JSB FRMTR,I CALL FORMATTER CCA SET OCTAL OUT MODE LDB CDATA GET LAST WORD SENT JSB FRMTR,I CALL FORMATTER CCA SET OCTAL OUT MODE LDB RDATA GET LAST RCV'D WORD JSB FRMTR,I CALL FORMATTER NOMSG EQU * LDB BIT14 GET BIT 14 MASK JSB SWRCK,I CHECK SWR RSS SUPRESS HALT EHALT HLT 0 ERROR HALT GOES HERE JMP ERROR,I RETURN SPC 5 NRTN NOP NO RETURN WORD WHEN EXPECTED LDA ANFLG GET ERROR COUNT ADDRESS JSB INC INCREMENT ERROR COUNT CLA,INA GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP NRTN,I RETURN SPC 5 UXRIP NOP UNEXPECTED RECEPTION IN PROCESS LDA D2 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP UXRIP,I RETURN SPC 5 PRITY NOP PARITY ERROR LDA APRTY GET ERROR COUNT ADDRESS JSB INC INCREMENT ERROR COUNT LDA D3 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP PRITY,I RETURN SPC 5 MISSD NOP MISSED RECEPTION BIT SET LDA D4 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP MISSD,I RETURN SPC 5 DCMP NOP SENT-RCVD COMPARE ERROR LDA ADTAC GET ERROR COUNT ADDRESS JSB INC INCREMENT ERROR COUNT LDA D5 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP DCMP,I RETURN SPC 5 NFRST NOP FIRST WORD FLAG NOT RETURNED LDA D6 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP NFRST,I RETURN SPC 5 EOT NOP END OF TEST HALT CHECKER LDB BIT15 GET BIT 15 MASK JSB SWRCK,I CHECK SWR HLT 76B END OF TEST HALT (ON) LDB BIT13 GET BIT 13 MASK JSB SWRCK,I CHECK SWR JMP EOT,I REPEAT LAST TEST EXIT (ON) ISZ EOT BUMP RETURN ADDR (OFF) JMP EOT,I CONTINUE EXIT SPC 5 INC NOP ERROR COUNT INCREMENTER (CHECKS FOR OVERFLOW) LDB A,I GET ERROR COUNT (A=ADDR)  INB INCREMENT ERROR COUNT STB A,I SAVE ERROR COUNT SSB,RSS CHECK FOR OVERFLOW JMP INC,I RETURN FOR NO OVERFLOW CLB IF OVERFLOW - SET TO 0 STB A,I SAVE IT CLB STB KOUNT INITIALIZE COUNTER LOOK EQU * LDB OVTBL GET TABLE ORIGIN ISZ KOUNT UPDATE COUNT ADB KOUNT GET ADDR POINTER CPA B,I COMPARE ADDRESSES RSS EQUAL SO FOUND JMP LOOK LOOK AT NEXT ENTRY FOR MATCH LDB OMSGS GET MESSAGE TABLE ORIGIN ADB KOUNT GET POINTER LDB B,I GET ADDRESS OF CHARS LDA ANAME GET DESTINATION ADDR STA DEST SAVE LDA DM4 MOVE 4 WORDS STA KOUNT SLP EQU * LDA B,I GET 2 CHARS INB INCREMENT POINTER STA DEST,I STORE CHARS ISZ DEST UPDATE STORE POINTER ISZ KOUNT DONE? JMP SLP NO-DO NEXT 2 CHARS LDA D7 GET ERROR NUMBER JSB ERROR DO ERROR THING JMP INC,I RETURN SPC 5 TFSET NOP TIMED RETURN FLAG SET UNEXPECTLY LDA D8 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP TFSET,I RETURN SPC 5 TFCLR NOP TIMED RETURN FLAG CLEAR (EXP. SET) LDA D9 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP TFCLR,I RETURN SPC 5 UXRTN NOP RETURN WORD WHEN NONE EXPECTED LDA D10 GET ERROR NUMBER JSB ERROR DO ERROR PROCESSING JMP UXRTN,I RETURN SPC 5 TFCHK NOP CHECK TIMED RETURN BIT (BIT 14) LDA RDATA GET RCVD WORD AND BIT14 MASK BIT 14 SZA,RSS CHECK BIT ISZ TFCHK RETURN (P+2) FOR CLEAR JMP TFCHK,I RETURN (P+1)FOR SET SPC 5 ZERO NOP ERROR COUNT ZEROER CLA STA #NFLG ZERO NO RETURN WORD ERROR COUNT STA #DTAC ZEB@ ASCII "7" ? SSA,RSS ..... JMP REPMT YES-ERROR - TRY AGAIN LDA CHAR? UP TO CHARACTER 6? CPA D6 ..... JMP SIXDS YES-1ST DIGIT CAN ONLY BE 1 OR 0 ISZ CHAR? BUMP CHARACTER NUMBER ISZ COUNT DONE? JMP CKCHR NO-CHECK NEXT CHARACTER CONVT EQU * CONVERT TO NUMBER CCA,CLE SET OCTAL CONVERT MODE LDB ABUFR GET BUFFER ADDRESS=1 JSB ASC2N,I CALL CONVERSION ROUTINE JMP GTVAL,I RETURN * REPMT EQU * ERROR RETRY CLA,CLE SET START OF FORMATTED OUTPUT LDB A?? GET PROMPT ADDRESS JSB FRMTR,I CALL FORMATTER JMP RETRY GET RETRY VALUE * SIXDS EQU * EXACTLY 6 DIGITS CLA,INA SET TO FETCH LDB ABUFR CHARACTER 1 JSB CFTCH ONLY ALLOWED 1 OR 0 ADA BM62 > ASCII "1" ? SSA,RSS ..... JMP REPMT YES-ERROR - GET RETRY JMP CONVT OK - GO CONVERT * DEFLT EQU * DEFAULT TO LAST VALUE LDA PARAM,I FETCH LAST VALUE JMP GTVAL,I RETURN SPC 5 THALT EQU * HALT ON ATTEMPT TO INPUT HLT 7,C PARAMETERS WILL ALL MESSAGES LIA 1 SUPRESSED (BIT 05 SET) AND MASK CLEAR SWR EXCEPT BIT 05 OTA 1 AND RESTART IF JMP ASTRT,I RUN IS PUSHED SKP * * THIS ROUTINE FETCHES A SPECIFIED CHARACTER AND RETURNS * IT IN (A). ENTER WITH: * * (A)=CHARACTER IN BUFFER * (B)=BUFFER ADDRESS * * NOTE: (A)=(B)=0 DEFAULTS TO NEXT CHARACTER * CFTCH NOP SZA DEFAULT CHARACTER NUMBER? STA CHRNO NO-SAVE NEW CHARACTER NUMBER SZB DEFAULT BUFFER ADDRESS? STB BUFFR NO-SAVE BUFFER ADDRESS CCA SUBTRACT 1 FROM CHARACTER NUMBER ADA CHRNO TO REFERENCE IT TO 0 LDB BUFFR GET BUFFER ADDRESS CLE,ELB SHIFT ADB A ADD CHARACTER NUMBER CLE,ERB SHIFT LDA B,I FETCH WORD SEZ,RSS CHECK HI-LO ALF,ALF SHIFT ON HI AND LOWER MASK ISZ CHRNO MOVE TO NEXT CHARACTER JMP CFTCH,I RETURN SPC 5 * * THIS ROUTINE STORES A CHARACTER IN A SPECIFIED LOCATION. * ENTER WITH: * (A)=CHARACTER BUFFER (>=1) IN BUFFER * (B)=BUFFER ADDRESS * "SCHAR"=CHARACTER TO BE STORED * STCHR NOP FCHARACTER STORE CLE,ELB SHIFT BUFFER ADDRESS ADA DM1 SUBTRACT 1 FROM CHARACTER NUMBER ADB A ADD CHARACTER NUMBER TO BUFFER ADDRESS CLE,ERB SHIFT (E)=HI-LO FLAG - 0=HI LDA B,I FETCH WORD SEZ,RSS CHECK HI-LO ALF,ALF SHIFT ON HI AND UPPER MASK OUT CHARACTER IOR SCHAR OR IN NEW CHARACTER SEZ,RSS CHECK HI-LO ALF,ALF SHIFT BACK ON HI STA B,I STORE WORD JMP STCHR,I RETURN SCHAR OCT 40 SKP * CONSTANTS D1 EQU * BIT00 OCT 1 LTOPT EQU * D2 EQU * BIT01 OCT 2 D3 DEC 3 TTOPT EQU * D4 EQU * BIT02 OCT 4 D5 DEC 5 D6 DEC 6 D7 DEC 7 D8 EQU * BIT03 OCT 10 D9 DEC 9 D10 DEC 10 D12 DEC 12 B16 OCT 16 BIT04 OCT 20 MASK EQU * BIT05 OCT 40 B77 OCT 77 B100 EQU * BIT06 OCT 100 BIT07 OCT 200 LOWER OCT 377 BIT08 OCT 400 BIT09 OCT 1000 BIT10 OCT 2000 BIT11 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 MAX OCT 77777 SIGN EQU * BIT15 OCT 100000 EHLT OCT 102000 TCHLT OCT 106002 SYSNM OCT 140001 UPPER OCT 177400 SCMSK OCT 177700 BM62 OCT -62 BM60 OCT -60 DM17 DEC -17 DM8 DEC -8 DM7 DEC -7 DM6 DEC -6 DM4 DEC -4 DM3 DEC -3 DM2 DEC -2 DM1 DEC -1 ADDTA DEF DDATA ADOPT DEF DOPTS ADMSK DEF DMASK AERR DEF ERR OVTBL DEF * ANFLG DEF #NFLG ADTAC DEF #DTAC APRTY DEF #PRTY ABUFR DEF BUFR EOCM1 DEF ECM1 STMSG DEF STM OMSGS DEF * DEF NOF DEF COM DEF PAR PPNTR DEF P1 A?? DEF ?? ?? ASC 2,? >_ : PRMT1 DEF PMT1 PRMT2 DEF PMT2 PRMT3 DEF PMT3 ANAME DEF EM7+3 NOF ASC 4,NO RTRN COM ASC 4,COMPARE PAR ASC 4,PARITY T1MSG DEF IM1 T2MSG DEF IM2 T3MSG DEF IM3 AWM1 DEF WM1 AABRT DEF ABRTM SKP * STORAGE KOUNT NOP DEST NOP SMODE NOP #NFLG NOP #DTAC NOP #PRTY NOP CDATA NOP CYCLE NOP DCMP? DEC -1 TIMED NOP DMASK NOP PARAM NOP MODE NOP OPTNS NOP PNTR NOP RDATA NOP STATS NOP TDATA NOP TEMP NOP USC NOP WORD2 NOP WAIT? NOP CNTR NOP COUNT NOP CHRNO NOP BUFFR NOP TLOG NOP BUFR BSS 4 P1 NOP P2 NOP P3 NOP P4 NOP PRMPT NOP CHAR? NOP PNTS NOP DDATA NOP DOPTS NOP CNTR1 NOP MSG# NOP SKP IOADR DEF *+1 DEF SC001 DEF SC002 DEF SC003 DEF SC004 DEF SC005 DEF SC006 DEF SC007 DEF SC008 DEF SC009 DEF SC010 DEF SC011 DEF SC012 DEF SC013 DEF SC014 DEF SC015 DEF SC016 NOP EMT DEF * DEF EM1 DEF EM2 DEF EM3 DEF EM4 DEF EM5 DEF EM6 DEF EM7 DEF EM8 DEF EM9 DEF EM10 SKP ORG 2000B START EQU * CLC 0,C MAKE SURE I/O SYSTEM IS OFF LDA USC GET USER SELECT CODE SZA,RSS SEE IF CONFIGURED (#0) JMP BADSC THIS WILL PRODUCE ERROR LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP AGAIN IF SET THEN SUPRESS MESSAGE CLA,CLE SET START OF FORMATTED OUTPUT LDB STMSG GET BUFFER ADDRESS JSB FRMTR,I CALL FORMATTER AGAIN EQU * LDB BIT11 GET BIT 11 MASK JSB SWRCK,I CHECK SWR JSB T1 RUN BASIC TEST IF ON LDB BIT10 GET BIT 10 MASK JSB SWRCK,I CHECK SWR JSB T2 RUN LOOP TEST IF ON LDB BIT09 GET BIT 09 MASK JSB SWRCK,I CHECK SWR JSB T3 RUN DEBUG SECTION IF ON LDB BIT12 GET BIT 12 MASK JSB SWRCK,I CHECK SWR HLT 77B HALT IF ON JMP AGAIN DO ANOTHER PASS WITHOUT START MESSAGE SKP T2 NOP TRANSMISSION LOOP TEST ENTRY EQU * LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP CLA IF SET THEN SUPRESS MESSAGE CLA,CLE SET STFART OF FORMATTED OUTPUT LDB T2MSG GET FORMAT ADDRESS (HEADER MESS.) JSB FRMTR,I CALL FORMATTER CLA EQU * CLA INITIALIZE STA CYCLE CYCLE COUNTER CCA INITIALIZE STA DCMP? COMPARE MASK LOOP EQU * LDA CYCLE GET CYCLE COUNT CPA MAX IF DONE 32767 CYCLES JMP FINIS THEN QUIT INA INCREMENT STA CYCLE AND SAVE JSB ZERO ZERO ERROR COUNTS CLA STA TDATA START LOOP TEST DATA AT 000000 LLOOP EQU * LDB BIT10 GET BIT 10 MASK JSB SWRCK,I CHECK SWR BIT 10 JMP NABTL STILL ON SO CONTINUE TEST JSB ABORT PRINT MESSAGE JMP FINIS AND ABORT TEST NABTL EQU * JSB MSET SET MODE (1- OR 2-WORD) LDB BIT02 GET BIT 02 MASK JSB SWRCK,I CHECK SWR RSS ON - TIMED RETURN (-1) CLA,RSS OFF - FLAG RETURN (0) CCA STA TIMED SAVE INDICATOR LDA ISWR GET LAST SWR READING AND D6 MASK ADA DM4 >3? SSA ..... JMP NOT>3 NO - OK CPA D2 >3 SHOULD BE =6 JMP NOT>3 ITS OK LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP NOT>3 IF SET THEN SUPRESS MESSAGE LDB BIT06 GET BIT 06 MASK JSB SWRCK,I CHECK SWR JMP NOT>3 IF ON THEN DON'T PRINT MESSAGE CLA,CLE SET START OF FORMATTED OUTPUT LDB AWM1 GET FORMAT ADDRESS JSB FRMTR,I CALL FORMATTER NOT>3 EQU * LDA LTOPT OPTIONS - ENCODE ONLY LDB TIMED CHECK TIMED SSB RETURN FLAG LDA TTOPT OPTIONS - TIMED RETURN STA OPTNS SAVE OPTIONS-USED FOR 2-WORD MODE CCA SET TO STA WAIT? WAIT FOR RETURN WORD LDA TDATA FETCH CURRENT DATA WORD JSB OUTWT OUTPUT AND WAIT FOR REPLY LDA TDATA FER\TCH CURRENT DATA FOR UPDATE INA,SZA,RSS UPDATE - IF 0 THEN THRU JMP OUTLP SO EXIT LOOP STA TDATA SAVE UPDATED DATA JMP LLOOP GO DO NEXT DATA WORD OUTLP EQU * EOC EQU * END OF CYCLE MESSAGE PRINT LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP JSEOT IF SET THEN SUPRESS MESSAGES CLA,CLE SET START OF FORMATTED OUTPUT LDB EOCM1 GET MESSAGE ADDRESS JSB FRMTR,I CALL FORMATTER CLA,INA SET INTEGER OUT MODE LDB CYCLE GET CYCLE NUMBER JSB FRMTR,I CALL FORMATTER CLA,INA SET INTEGER OUT MODE LDB #NFLG GET NUMBER OF RETURN WORD ERRORS JSB FRMTR,I CALL FORMATTER CLA,INA SET INTEGER OUT MODE LDB #DTAC GET NUMBER OF DATA COMPARE ERRORS JSB FRMTR,I CALL FORMATTER CLA,INA SET INTEGER OUT MODE LDB #PRTY GET NUMBER OF PARITY ERRORS JSB FRMTR,I CALL FORMATTER JSEOT EQU * JSB EOT GO TO END OF TEST PROCESSOR JMP LOOP REPEAT THIS TEST (ON) SPC 2 FINIS EQU * JMP T2,I SKP T1 NOP BASIC REMOTE I O TEST LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP BASIC IF SET THEN SUPRESS MESSAGE CLA,CLE SET START OF FORMATTED OUTPUT LDB T1MSG GET FORMAT ADDRESS (HEADER MESS) JSB FRMTR,I CALL FORMATTER BASIC EQU * LDB BIT11 GET BIT 11 MASK JSB SWRCK,I CHECK SWR BIT 11 JMP NABBT STILL ON SO CONTINUE TEST JSB ABORT PRINT MESSAGE JMP T1,I AND ABORT TEST NABBT EQU * JSB ZERO ZERO ERROR COUNTS LDA MODE GET MODE STA SMODE SAVE MODE CCA SET MODE STA MODE TO 2-WORD LDA BIT14 SET COMPARE CMA MASK FOR ALL STA DCMP? BUT BIT 14 LDA D2 SET OPTIONS STA OPTNS TO ENCODE ONLY CCA SET WAIT STA WAIT? FOR RETURN WORD CLA JSB OUTWT OUTPUT WORD CCA JSB OUTWT OUTPUT WORD LDA D6 SET OPTIONS STA OPTNS TO ENCODE AND TIMED CLA JSB OUTWT OUTPUT WORD JSB TFCHK CHECK TIMED RETURN FLAG (EXPECT 0) JSB TFSET TIMED RETURN ERROR CCA JSB OUTWT OUTPUT WORD JSB TFCHK CHECK TIMED RETURN FLAG (EXPECT 0) JSB TFSET TIMED RETURN ERROR LDA D4 SET OPTIONS STA OPTNS TO TIMED ONLY CLA JSB OUTWT OUTPUT WORD JSB TFCHK CHECK TIMED RETURN FLAG (EXPECT 1) RSS JSB TFCLR TIMED RETURN ERROR CCA JSB OUTWT OUTPUT WORD JSB TFCHK CHECK TIMED RETURN FLAG (EXPECT 1) RSS JSB TFCLR TIMED RETURN ERROR CLA CLEAR WAIT STA WAIT? FOR REPLY STA OPTNS SET OPTIONS - NO ENCODE OR TIMED JSB OUTWT OUTPUT WORD SC015 SFC SC CHECK FOR RETURN WORD (EXPECT NONE) JSB UXRTN UNEXPECTED RETURN WORD CCA JSB OUTWT OUTPUT WORD SC016 SFC SC CHECK FOR RETURN WORD (EXPECT NONE) JSB UXRTN UNEXPECTED RETURN WORD LDA SMODE RESTORE STA MODE ORIGINAL MODE JSB EOT GO TO END OF TEST PROCESSOR JMP BASIC REPEAT THIS TEST (ON) JMP T1,I RETURN SKP T3 NOP DEBUGGING TEST SECTION LDB BIT05 GET BIT 5 MASK JSB SWRCK,I CHECK BIT 5 JMP CCA IF SET THEN SUPRESS MESSAGE CLA,CLE SET START OF FORMATTED OUTPUT LDB T3MSG GET MESSAGE ADDR (HEADER MESS) JSB FRMTR,I CALL FORMATTER CCA EQU * CCA INITIALIZE MASK STA DMASK TO ALL BITS DEBUG EQU * LDB BIT09 GET BIT 09 MASK JSB SWRCK,I CHECK SWR BIT 09 JMP NABTA STILL ON SO CONTINUE TEST  JSB ABORT PRINT MESSAGE JMP T3,I AND ABORT TEST NABTA EQU * JSB MSET SET MODE (1- OR 2-WORD) JSB ZERO ZERO ERROR COUNTS LDB BIT08 GET BIT 08 MASK JSB SWRCK,I CHECK SWR JMP GDATA IF 1 THEN GET NEW DATA GRTRN EQU * RETURN POINT FROM DATA FETCH LDB BIT07 GET BIT 07 MASK JSB SWRCK,I CHECK SWR RSS IF 1 THEN DON'T WAIT FOR RETURN WORD CCA,RSS IF 0 THEN WAIT FOR RETURN WORD CLA STA WAIT? SAVE WAIT FLAG LDA DMASK GET USER DATA COMPARE MASK STA DCMP? AND SAVE IT LDA DOPTS GET USER OPTIONS STA OPTNS AND SAVE THEM LDA DDATA GET USER SPECIFIED DATA JSB OUTWT AND OUTPUT WORD JSB EOT GO TO END OF TEST PROCESSOR JMP DEBUG REPEAT THIS TEST (1) JMP T3,I RETURN GDATA EQU * USER INPUTS FETCH LDB BIT08 TURN CMB OFF LIA 1 BIT 8 AND B IN OTA 1 INTERNAL LDA BIT08 AND CMA EXTERNAL AND ISWR SWR'S STA ISWR ..... LDA PRMT1 GET PROMPT ADDRES FOR USER DATA STA PRMPT SAVE LDA ADDTA GET STORE ADDRESS OF DATA JSB GTVAL GET VALUE STA DDATA SAVE VALUE LDA PRMT2 GET PROMPT ADDRESS FOR USER OPTIONS STA PRMPT SAVE LDA ADOPT GET STORE ADDRESS OF USER OPTIONS LDB MODE GET MODE FOR 2-WORD CHECK SSB,RSS 2-WORD MODE? JMP FMASK NO - SKIP OPTION FETCH JSB GTVAL GET USER OPTIONS AND B16 MASK STA DOPTS SAVE USER OPTIONS FMASK EQU * LDA PRMT3 GET PROMPT ADDRESS FOR USER MASK STA PRMPT SAVE LDA ADMSK GET STORE ADDRESS FOR USER MASK JSB GTVAL GET VALUE STA DMASK SAVE USER MASK JMP GRTRN g640RETURN SKP WM1 ASC 26,.W01. WARNING-REQUEST FOR TIMED RTN IN 1-WORD MODE/ EM1 ASC 20,.E01. EXPECTED RETURN WORD - NONE REC'D/ EM2 ASC 24,.E02. UNEXPECTED RECEPTION IN PROCESS DETECTED/ EM3 ASC 14,.E03. PARITY ERROR DETECTED/ EM4 ASC 22,.E04. MISSED RECEPTION BUT NO PARITY ERROR/ EM5 ASC 13,.E05. DATA COMPARE ERROR/ EM6 ASC 19,.E06. WORD 1 OF 2 FAILED TO TRANSMIT/ EM7 ASC 18,.E07. ERROR COUNT OVERFLOW/ EM8 ASC 15,.E10. TIMED RETURN FLAG SET/ EM9 ASC 15,.E11. TIMED RETURN FLAG CLEAR/ EM10 ASC 15,.E12. NO RETURN WORD EXPECTED/ ECM1 ASC 26,.I75. CYCLE # * NO RTRN: # * COMPARE: # * PARITY: #/ STM ASC 19,.I00. REMOTE MICROCIRCUIT DIAGNOSTIC/ IM1 ASC 14,.I01. BASIC REMOTE I\O TEST/ IM2 ASC 15,.I02. TRANSMISSION LOOP TEST/ IM3 ASC 13,.I03. TROUBLESHOOTING AID/ ERR ASC 20, LAST SENT = # ** LAST REC'D = # / PMT1 ASC 5, DATA=# >_: PMT2 ASC 5, OPTS=# >_: PMT3 ASC 5, MASK=# >_: ABRTM ASC 7,TEST ABORTED/ FWAVL EQU * END 6  09610-80019 B S 0122 EVENT SENSE HANDLER              H0101 ASMBҬ̬ìB HDVNԠSNSŠNUPԠHANDҠҠ690A-0960-6009- AAM-VNԠSNSŠNUPԠHANDҠҠHP690A SUŠAPŠ-0960-009V.B .APŠ-0960-6009V.B AUHҠ-.A.SAPNAS VSNNVMBҠ9--.PASSM AAMSSHDUDBYHŠHP690AŠDVҠDV6HNAN VNԠSNSŠNUPԠUS.HŠSԠϠPAAMSPASSD ϠAAMBYHŠDVҠNANHŠSԠNUMBҠANDNNS HŠNUPNGAD.AAMHNDMNSƠANYƠHŠB HANGSAŠNNDϠPGAMS.ƠSϬHŠSPNDNG PGAMSSHDUD.ƠANҠUSASASUԠƠSHDUNG HŠҠSPNDAS"AAMҠNN"HŠؠSHŠŠ YPŠANDNNSHŠNUMB. NAMAAM Ԡì$Bج$BҬVNԬ690 SUP SPà ABŠNP PBƠԠ00HSŠ6DSM .ԠHŠPŠ SANPSԠHԠBU. Dà-HSBUҠAUSSH NPNUPNGADϠB DAANPADANDNABD. SԠNP SPà AU0 BU SPà AAMDDBɠADSԠNPUԠD SBDAASAVŠNPU SASԠANDS AS̠MVŠSԠϠUPPҠBS SASAANDSAV DB690ADGA̠UN DABɠNUMBҠAND SAUSAV DAVNԠAS DAAɠNUP MANAAUSDBY ADASԠVNԠSNS SSASSAD? MPSSBNϠ-GNŠNUP ADBSԠMPUŠADDSS ADB.5ƠBԠPAN SBPANANDSAV DASԠMPUŠADDSS MPYDƠNY ADAVNԠNBԯAP NAAB SAABŠANDSAV YSBSB̠UPDAŠBԯAPAB  SPà SBàAD DƠ+6AND DƠ.S DƠUNUPNG DƠPBƠVN DƠ.6SNS DƠ.AD DADAAGԠDAAD SSAANDƠANYANSD MPYYHŠPSS ԠSBàMNA DƠ+ DƠ.6 SPà SSBDAUPUԠVN ҠB00SNSŠBԠN SAUN̠D SPà SBàPM DƠ+3N DƠ.3US DƠU MP .3Ԡ3 .5Dà5 PANNP UNP SPà SB̠SANSHŠBԯAPABŠANDASHŠAPPSSҠHN ANVNԠHASUD SB̠NP SB$BҠUNƠNUPS NP DADAAHDAAD DBPANɠANDASԠSAUSD SAPANɠUPDAŠVNԠADSAUS SB$BؠUNNNUPS DƠ+ DƠ+ SPà ҠNDBԠHANGS ANDBƠNϠHANGS SZASSMPVUSPAN MPSB̬ɠUN DBMNAZ SBNҠBԠUN B SBBNϠAҠBԠNUMB DBABŠHADDSSƠBԯAP SBPNҠABŠANDUSŠASND DBAPUԠBԠHANGSN"B" NBԠAMVŠNԠB ASҠNϠ"A" ҠPNҬɠUPDAŠBԯAPNY PAPNҬɠƠNϠHANGŠSKP MPNԠUPDAŠƠAB SPà SB$BҠ NPUNƠNUPԠSYSM SAPNҬɠϠUPDAŠAB SB$BؠUNNUPԠSYSM DƠ+BAKN DƠ+ SPà SSASSƠNנSAUSS(VNԩ  MPNԠSԠAPSŠNNU AŬASԠSGNBԠϠZ SBSAV.BSAVŠSAUSD SZASSƠNϠAPNUMBҠSKP MPNԠSHDUŠA SPà SANAMSAVŠSԠϠHASƠPGNAM SBàSHDU DƠ+6PGAM DƠB0 DƠNAM DƠS DƠDAA DƠBN MPŠҠUNGϠPNԠMSG N.DBSAV.BSŠDAAD SPà NԠSZPNҠBUMPABŠPN SZBNϠUPDAŠBԠNUMB SZNҠASԠB? MPNBԠNϬGϠϠNԠB MPSB̬ SPà3 ŠDSԠBƠSŠҠYP SBàPM DƠ+5 DƠ. DƠ.SYSM DƠBNS DƠ. MPN.NNU SPà MDà- .6Dà6 .Dà SAV.BNP PNҠNP NҠNP NAMASà3 BASà5AAM BƠBSS .Dà BNϠNP B0Ԡ000 NDAAM   09610-80020 A S 0122 TABLE GENERATOR              H0101 \SP̬̬Ϭ NAMŠG(390 ! ! ! ! !G---------ŠVSN ! ! !GSANNAVŠABŠNGUAҠҠ ! !SUŠAPŠ-0960-000V.A !.APŠ-0960-6000V.A ! !VSN-ANUAY9 ! !AUHҠ-.A.SAPNAS ! ! ! ! !NAZANPHAS ! ! ! ԠBUMDUBŠNGҬNA ԠSPAŠBŠNG( NAZŠSPAŠϠ"" ԠBU(60UUBŠNGҬGBA Ԡò33690BŠSUBUNŬNA̬D ԠHADҠBŠNG( NAZŠHADҠϠ33"33AND690ABŠGNAҠ" ԠPUNMSBŠNG(0 NAZŠPUNMSϠ"UNNPUNH" ԠAMBŠNG(6 NAZŠAMϠ9"ABŠGNANMPŠ" ԠSYSNSYSPҬSYSPUSYSPBŠNG( NAZŠSYSNSYSPҬSYSPUSYSPϠ5"SYSN"5"SYSPҠ"\ 5"SYSPU"5"SYSP" ԠԬPNPAUSBŠSUBUNŬNA ԠŬADҠBŠSUBUNŬD ! ! ! ! ! G:A̠PN(BUҬSYSN300K A̠PN(UUҬSYSPU00K A̠PN(MDUҬSYSP00K ! S_0 ! ! ! A̠(HADҩ!HADҠMSSAG ! A̠(PUNMS!UNNPUNHMSSAG ! ! ! !HSMDUŠNAZSKSPAŠNMMY ! ԠSԠBŠNGҬGBA̠!ŠKSPAŠSԠPN ԠSԠBŠNGҬGBA̠!SMASԠADDSSNԠUSD ԠASԠBŠNGҬGBA̠!AGSԠADDSSNԠUSD ԠKPBŠNGҬGBA̠!AGSԠUSABŠADDSSMD ԠKMNBŠNGҬGBA̠!SMASԠADDSSVҠAAD ! ! ASԬKPKMN_66K S_AS-5000K!KSPAŠSԠϠ5000KDS ! ! A̠(UUҬ0-!ŠAD A̠ADҠ!ɳj  ŠAD ! ! A̠ò33!GNAŠ33ABS A̠690!GNAŠ699ABS ! ! A̠ADҠ!ŠA ! A̠(AM!AҠƠAPŠMSSAG A̠PAUS GϠϠG!GϠBAKϠBGNNNG ! ! !ŠAMSSAGŠUN ! :SUBUN(BUƩDԬGBA A̠(MDUҬSPAũ A̠(MDUҬBUƩ UN ND ! !ŠUԠAD ! AD:SUBUNŠD A̠(UUҬ0- UN ND NDG ND$   09610-80021 A S 0122 ANALOG INPUT              H0101 ASMBҬ̬ìƬB HDSAS6.ANAGNPUԠA-0960-600-VA AD..-ANAGNPUԠUNSҠSAS6. SUŠAPŠ-0960-00V.A .APŠ-0960-600V.A VSN-MAY9 AUHҠ-.A.SAPNAS ADƬADנ-ANAGNPUԠNANDMD ASƬASנ-ANAGNPUԠNSUNA̠D NM-SYSMNMAZ PAҠ-SSUPSYSMPA GAN-ADSGANNAHANN SGAN-SSGANNAHANN NAMAD.. Ԡ..ADìì$BҬ$Bج..M.N NԠNMASƬSGANGANPA NԠADAD׬ASѬAS SUP SPà3 "GAN"ADSHŠGANƠAGVNHANN̠ҠGUPƠHANNS ANGSUN: A̠GAN(HNGN H:HN-DSDHANN̠NUMB GN-ANGPNԠGANƠHANN̠"HN" HNNP GNNP GANNP SB.NҠHPAAM DƠHNADDSSS DA..DUMMYUPҠUN SA DAGANSAVŠUN SANYADDSS DAHNɠNDHANN̠NY SBHNNNGUANAB BSMPUŠADDSSƠGAN ADBDҠNVSNA SBGANANDSAV DDAҠGAN DVGANɠ.005NVSNA DSԠGNɠSŠGAN MPNYɠANDUN SKP "SGAN"ADSHŠGANƠAGVNHANN̠ҠGUPƠHANNS ANGSUN: A̠SGAN(HNGN H:HN-DSDHANN̠NUMB GN-ANGPNԠGANƠHANN̠"HN" HNNP GNNP SGANNP SB.NҠHPAAM DƠHNADDSSS DA..DUMMYUPҠUN SA DASGANSAVŠUN SANYADDSS DAHNɠNDHANN̠NY SBHNNN4GUANAB SSBƠNԠנV MPNYɠUN DDAҠMPUŠMP ADAM(ADUSMNԠҠUNDƠҩ DVGNɠ.005GN SSAƠGANASNGAV SB..MMAKŠPSV DSԠMPANDSAV DBMNAZ SBNҠPUN DADҠNAZŠGAN SAAҠABŠPN SPà SGNDDMPƠDSDGAN SBAҬɠSҠAB SSAVAUŬHN MPSGNSԠUPGAN SZAҠNMNԠGAN SZAҠABŠPN SZNҠASԠNY? MPSGNNϬNNUŠKNG SPà SGNDAADSɠHGANNYAND AS̠3SHԠGANBSNϠ"B" DBNҠPUԠN ADB.GANN"B" ASҠ3SHԠGANBSBAKNϠ"A" SPà SB$BҠUNƠNUPԠSYSM NPANDUPDA SAADSɠNGUANABŠNY SB$BؠUNNUPԠSYSMBAK DƠNYNANDUN SKP "NM"PMSASYSMNMAZŠNHŠSPDUN UNԠNP NMNP SB.NҠHPAAM DƠUNԠADDSS DANMSAVŠUN SANYADDSS DBUNԠNDSUBSYSM SBNDUGA̠UNԠNUMB SPà SBà DƠ+5SYSM DƠ.NMAZ DƠUUS DƠ. DƠ. SPà MPNYɠSŬUN SPà3 "NDU"NDSHŠGA̠UNԠNUMBҠSPNDNGϠH SUBSYSMNUMBҠSPDNHŠA.ƠHŠNUMBҠSZ ҠNGAVŠANҠSGVN NDUNP ANAASSUM|UNԠ SZBƠUNԠSPD DABɠH MANAMPMNԠAND SSASS MPNYɠƠ<0HNUN SANҠSAVŠMP.ҠPUN DB..ADàHADDSSƠNG.AB ADABɠGMAŠUN SSAADDSS? MPNYɠNϠ-UN NBSSBUMPB̠PNҠϠSԠSUBSYS.NY SPà NSSADBBɠHNԠSUBSYSMNY SZNҠUNԠUND? MPNSSNϬNNUŠSAH SPà NBHSUBSYSM DBBɠGA̠UNԠNUMB SBUANDSAV MPNDUɠUN SKP "AD"PMSANAGNPUԠMHŠHANNSSPDN AA̠AAY.HŠSUSAŠNVDϠANGPNԠVS ANDUNDNANHҠA̠AAY. ANGSUN: A̠AD(NUMHANVԬҩ H:NUM-NUMBҠƠHANNSϠBŠAD(ƠN<0HN PMPADNVSN HAN-NGҠAAYNANNGHANN̠NUMBS VԠ-A̠AAYҠNVDDAA Ҡ-ҠUNPAAM BԠ0VנNAԠASԠNŠADNG BԠPAŠҠNAԠASԠNŠADNG ADƠNPANGP.ANDMSAN DAADƠHUNADDSS BANDAҠDPNԠAG MPDSNGϠϠANDMSAN SPà ADנNPNGҠANDMSAN DAADנHUNADDSS BNBANDSԠDPNԠAG SPà DSNSBSUPHPAAMS SPà ADDAHANɠADNԠHANN̠NUMB SBHNNDHADAŠADDSS ҠB00000SԠϠANDMMD ҠPADҠNPAŠB SAHAN̠ANDSAV SSBƠGANSNGAV MPDH̠GϠϠHGHVAD ҠB0000SԠUPGAN SAGHNHANN̠NY SPà SBà DƠ+5 DƠ.V DƠUANDM DƠBUƱAD DƠ. MPADGϠϠVAGŠNVSN SPà DH̠SBà DƠ+5HGH DƠ.V DƠUANDM DƠBUƲAD DƠ. SPà ADSZBSSƠANSMSSNGUAS MPҲZϬGVŠҠ SPà DBVԲɠHADNG SBNVPMNVSN SZHANBUMPHANN̠ADDSS SZVԲBUMPNPUԠDAAADDSS SZNҠASԠHANN MPADNϬNNU MPNYɠYSUN SKP "SUP"HSANDSSANGPAAMSҠVADY ҠUNSAD׬ADƬASנANDAS. SPà SUPNP SANYSAVŠUNADDSS SBPԠSAVŠDPNԠAG MPNY+GϠϠPAAM.H SPà NUMDNP HANNP VԠNP ҠNP NYNP SB.NҠHPAAM ..DƠNUMDADDSSS BNBNAZŠ SBҬɠϠN B DANUMDɠHNUMBҠƠHANNS SSAƠNGAV DBB0000ƠHANSS SBPADPAŠB SSAƠNGAV MANAMAKŠPSV SANUMANDSAV MANASZASSMPMNԠƠHANNS MP3ƠZϠGVŠ SANҠSAVŠҠPUN DAPԠƠDPN DBVԠAGSA SZASSDAABUҠADDSS ADBNUMNNҠƠAAY SBVԱV#*ԬSŠA SBVԲBGNNNGƠV MPSUP SKP "HN"SASUBUNŠHHNDSHŠNYNHŠ33 NGUANABŠHHSPNDSϠAGVNHANN̠NUMB ANGSUNŠ: "A"NANSHŠSAŠANAGHANN̠NUMB UND: "A"NANSHŠHADAŠADDSSƠHŠDSDMPؠHANN "U"_GA̠UNԠNUMBҠƠHŠSUBSYSMNANNG"A" "ADS"_ADDSSƠHŠN.ABŠNYҠ"A" "GAN"_GANҠHŠHANN̠(-ƠHGHV̩ "MH"_ƠHANNSMANNGNNY ƠHŠHANN̠SUSDŠHŠBUNDSƠHŠABŠ"HN" BANHSϠ"3" HNNP MASSANASZAMPMNԠHANN̠NUM. SSƠSSHAN MP3UA̠ϠZϠGVŠҠ3 SAMHNSAVŠ-(HANN̠NUM. SANMHN AASSUM SAGANHGHV DA..ADàHADDSSƠS SA.AD NASUBSYSMNYNN.AB B"B"_UNԠSUBSYSM MPSHSAHҠSUBSYS.NANNGHAN. SPà NSUBSANMHNSAVŠƠHNSPASԠASԠSUBSYS. NBNMNԠNUMBҠƠSUBSYSMS PB.ADìɠASԠSUBSYSM? MP3YS-GϠϠHANN̠NԠUND DAADSHADDSS ADAADSɠNԠSUBSYSM SHSAADSANDSAV ADA.SASԠHANN̠N DAAɠUNԠSUBSYSMBYND ADAMHNHŠDSD SSAHANN? MPNSUBNϠ-GϠϠNԠSUBSYSM SPà SUBSYSMNANNGHANN̠UND.HŠNGD SAHSHŠSUBSYSMNYҠAUA̠HANN̠NY DAADSHH NAGA̠UNԠNUMB DBAɠƠHŠSUBSYSM SBUANDSAV ADBB00SŴԠUPDMAU SBDMAUANDSAV ADA.MPUŠADDSSƠHGHV SAADSSNGŠNDDHANN̠UN SAADSANDSAV DBNMHNH-(HANN̠NHSSUBSYSM SS NNSZADSBUMPNYADDSS DAADSɠHANDMASK ANDB3NԠNY ADBAHANN̠N SSBHSNY? MPNNNϬNNUŠSAH SPà NBNYUND SBMHSAVŠHANNSMANNG SZNMHNMPUŠ-(HNS- NP A DBADSHH-SŠADDSS PBADSƠNYSHGHV̠-S MPHSűGϠϠMPUŠAN NBƠNYS PBADSHGHV̠D. MPHDƠGϠϠMPUŠD.AN HANN̠MUSԠBŠנV̠HNSϠMPUŠGAN DBADSɠH ̠3GAN SAGANANDSAV SPà ϠNVԠHANN̠NUMBҠϠ33HADAŠADDSSH NGAGHMSAPPD: Bؠ(N-3(3SS3HANNSSԩ S.HANN̠MANDҠMHŠABVŠUN HŠ"N"SHŠSUBSYSMAVŠHANN̠ADDSS.SN MUPSANNԠUPYSS0-NBؠ0 96MUSԠBŠADDDϠHANN̠NUMBS. ASϠDNA̠NPUԠHANNSMUSԠBŠUND. HDƠDAADSɠMPU ADANMHNNUMB HSűADANMHN MANAHANNS ADA.96SAԠSԠ3 BMPU DV.3HP33 AƬAƠBجS ASANDHANN ҠBADDSS DBGANUNHADDSSN MPHNɠ"A"ANDGANN"B" SPà .3Dà3 .96Dà96 .3Dà3 SKP "NV"SASUBUNŠHHNVS33ADNGS ANGPNԠVS. 'ANGSUN: "B"-33ADNG UND: HŠMPUDVAGŠSPUԠNHŠADDSSSPDBY "V"ANDHN"V"SNMNDϠPNԠAԠHŠN ANGPNԠAN. ҠHASBԠSԠƠVנANDBԠSԠƠPAŠ. ASϠNV׬+Ҡ-3SUNDҠVAG. NVNP DA.ƠPAŠ BSSBBSSԠҠ SAҬɠU DAPԠGԠNGҠAG BSŬBSA̠SHԠPAS PBB3ƠPS.V׬_ ŬSSANDGϠϠV PBB000ƠNG.V׬_0 MPV̠ANDGϠϠV SZAƠNGҬ MPNVɠ DABMVŠADNGϠAG. DBGANMPU BSADDSS ADBDҠNVSNA SBMPANDSAV ԠAԠHŠ33ADNG MPMPɠMUPYBYNVSNA SVԠDSԠVԬɠSŠVAGŠNAAY SZVԠMPUŠN SZVԠANGPNԠADDSS MPNVɠUN V̠DB.SԠҠϠ SBҬ SZAƠNGҬ MPNVɠ SPà DDƱ3UNPSV SZSSҠNGAV SB..MNNY MPSVԠADNG SKP SKP DҠDƠA+ AҠDà.0055-6-5-5-5 Dà5-5--- BUƱԠ3---------------------------------- ԠѠBU DƠGHNҠנV BUƲԠ5--------- ԠѠBU DƠHAN̠ҠHGHV VԲNP---------------------------------- SPà MDà- .Ԡ SPà GHNNPGAN GANNsPBU SPà SKP "AS"PMSANAGNPUԠNSUNA̠D.HŠSUS AŠNVDϠANGPNԠVSANDUNDNAA̠AAY. ANGSUN: A̠AS(NUMHANVԲұ H:NUM-NUMBҠƠHANNSϠBŠAD(ƠN<0HN PMPADNVSN HAN-SANGHANN̠ƠSAN(ƠHAN<0HN PMSNUMADNGSMHANN̠-HAN VԲ-A̠AAYҠNVDDAA Ҡ-ҠUNPAAM BԠ0VנNAԠASԠNŠADNG BԠPAŠҠNAԠASԠNŠADNG ASƠNPANGP.SUNA̠SAN DAASƠHUNADDSS BAҠDPNԠAG MPSSNGϠϠSUNA̠SAN SPà ASנNPDP.SUNA̠SAN DAASנHUNADDSS BNBSԠDPNԠAG SPà SSNSBSUPGϠϠNAZŠUN SPà DAHANɠSAVŠSAԠHANN̠AS NSàSASNG̠SNGŠHAN.AG SSAƠNGAV MANAMAKŠPSV SBHNHHANN̠HADAŠADDSS ҠDGZMDGZŠMMAND SAHAN̠DANDSAV ҠPADҠNPAŠB SSBSSƠנV MPSѠGϠPSS DBSNG̠ƠSNGŠHANN SSBSANGϠ MPHSҠHGHV̠àA ҠB60000GNAŠSUNA DBADSMMANDSNG PBADSBԠ0 Ҡ.SNGŠNDDSAN SPà DBMHNGHƠSAN ADBNҠSHŠSMA MBSSBNBSSƠ-N BҠHŠMAND ADBMHƠHŠHANNS SBNUMNHSNY SPà HSҠSASѠSAVŠMD SPà SBà DƠ+5PM DƠ.HGH DƠDMAUV DƠSBUƲSAN DƠ.3 SPà SNSZBSSƠANSMSSNGUAS MPҲZϬGVŠҠ HŠNGNSUNSNVԠHŠDAAUSԠADN ϠANGPNԠANDUPDAŠPNS"V"AND"VԱ" ϠPNԠAԠMANNGSAG. DANUMHHANNSHSSAN MANANUMBҠƠHANNS SAPàADҠPUN SPà SñDBVԱɠHNԠADNG SBNVNVԠϠANGPN SZVԱBUMPDAAADDSS SZPàASԠHANN MPSñNϠ-NNU SPà SòDBNUMUPDAŠ-(NUMBҠƠHNS ADBNҠMANNG SSBSSƠNҽ0ND MPNYɠSANSϠUN SBNҠHSŠSAV DANUMMPUŠN ADASNG̠SAԠHANN MBNBSAVŠPSVŠNUMBҠ SBNUMHANNSMANNG MPNSàGϠϠNԠSAN SPà SPà SѠҠB60000SԠUP SAGHNGANNY ҠB60000SŠ"A"ϠDGZ DBSNG̠ƠNԠSNG SSBSSHANN̠SAN ҠB60000HANGŠϠSUNA SASѠANDSAV SSBƠSNGŠHANN̠SAN MPSҠGϠPMSAN ANDB3MPUŠHŠNUMB MANAƠHANNSMANNG ADA.3NHŠADDSSD ASנV̠AD ADANҠSANNGH MASSANASUA AϠHŠSMASԠ ADANҠHŠNG: ADAMH.HNSԠNAD MASSANASS A.HNSԠGNSAN ADAMH SANUM3.HNSԠNABŠNY SPà SҠSBà DƠ+5PM DƠ. DƠDMAUV DƠSBUƱSAN DƠ.5 SPà MPSNNVԠDAAϠANGVS SPà SBUƱԠ3----------------------------- Ԡ DƠGHN SBUƲԠ3 ԠSM-DYNAMàBU DƠHAN̠Ҡ33SANS Ԡ3 Ԡ0 DƠS .Ԡ NUMNPNUMBҠƠADNGS VԱNPDAASAG Ԡ3AN ԠUPPAN DƠDGZϠASŠ̠MP SPà DGZԠ0000 MDà- SKP "PA"SSUPHŠSYSMPAҬҠƠHŠPAŠAŠSZ UNSƠHŠSYSMPA. ANGSUN: A̠PA(AŬMUԬMDŠ۬UNݩ H: AŠ-BASàPAҠAŠ(00 STA MULT JMP TIME,I MILLI ADA .9 ROUND UP TO NEAREST CLB TEN MILLISECONDS DIV .10 THEN CONVERT TO TENS JMP RESL. SKP ZERO NOP B1010 OCT 100012 B1014 OCT 100014 .9 DEC 9 .1 DEC 1 .10 DEC 10 HRS EQU MULT1 MIN EQU RESL1 SEC EQU ERR1 END P  09611-18005 1826 S 0122 &DVA72 RTE 6940B DRIVER DVA72             H0101 ASMB,R,C,L HED HP6940A/B RTE MPG DVA72 - LOCAL/REMOTE REV 1826 NAM DVA72,0 09611-16005 780403 REV 1826 ENT IA72,CA72 EXT $LIST,.MVW * ******************PROGRAM DESCRIPTION*********************** * * RELOC. TAPE: 09611-16005 REV 1826 * SOURCE TAPE: 09611-18005 REV 1826 * ************************************************************ * A EQU 0 B EQU 1 SC EQU 0 * ********* *CAUTION* ********* * * IF INSTRUCTION SPEEDS CHANGE IN FUTURE GENERATIONS * OF 2100 SERIES COMPUTERS, THE TIMING LOOPS OF THIS * DRIVER SHOULD BE VERIFIED FOR PROPER OPERATION. * * THERE ARE TIMING LOOPS IN THE FOLLOWING ROUTINES: * CPOLL,OUTWT,DELAY,TIME * * SYSTEM COMMUNICATION AREA * EQT1 EQU 1660B SHOWS I/O IN PROGRESS FOR CONTIN. EQT2 EQU 1661B DRIVER INITIATOR ADDRESS EQT3 EQU 1662B DRIVER CONTINUATOR ADDRESS EQT4 EQU 1663B SPECIAL BITS EQT5 EQU 1664B STATUS BITS EQT6 EQU 1665B REQUEST CODE, READ COUNT EQT7 EQU 1666B BUFFER ADDRESS EQT8 EQU 1667B BUFFER LENGTH EQT9 EQU 1670B FUNCTION TYPE CODE (PARAM.1) & * WRITE BEFORE READ COUNT EQT10 EQU 1671B RUNNING COUNTER EQT11 EQU 1672B SLOT# OF 1ST SENSE MODE INTERRUPTER EQT12 EQU 1771B DATA FROM THE INTERRUPTER EQT13 EQU 1772B SCHEDULE FLAG EQT14 EQU 1773B TIME OUT VALUE EQT15 EQU 1774B TIMEOUT CLOCK INTBA EQU 1654B INTERRUPT TABLE BASE ADDRESS SKP * IA72 NOP ENTRY POINT JSB SETIO "A" REG. CONTAINS CHANNEL # OF * DESIRED DEVICE ON ENTRY. SETIO USES * IT TO CONFIGURE DVA72'S I/O COMMANDS * LDA EQT5,I GET STATUS BITS AND MASKS RESET BITS 2,5,&7 STA EQT5,I RESTORE STATUS LDA RTNAD PUT (RETURN ADDRESS) STA CA72 INTO CONT. ENTRY LDA EQT13,I GET SCHEDULE FLAG SZA FLAG DEFINED YET? JMP CONT YES, SKIP DEFINITION SECTION * *  THIS SECTION PLACES EITHER THE POSITIVE ADDRESS OF AN 'ALARM' * PROGRAM OR A MINUS 1 IF THERE IS NO SUCH PROGRAM INTO EQT13,I. * IT ALSO SETS BIT 12 OF EQT4,I TO INDICATE THE DRIVER WILL * HANDLE TIMEOUTS ITSELF. * LDA CHAN A_I/O CHANNEL, SET UP INDEX ADA N6 INTO THE INTERRUPT TABLE ADA INTBA TO GET THE SCHEDULE WORD LDB A,I B _ WORD (ITS ADDR. IN A) CMB,SSB,INB IF WORD POSITIVE SEZ EQT CCB THEN SET -1(NO PROG) ELSE STB TEMP +ADDR OF PROG INTO EQT13,I LDB EQT1 SET THE EQT ADDRESS INTO STB A,I THE INTERRUPT TABLE LDA EQT4,I SET THE 'I WILL HANDLE TIMEOUT' IOR BIT12 BIT IN EQT4,I STA EQT4,I RESTORE * * SETUP DATA BUFFER * LDA COUNT BUFFER POINTER CPA .8 BUFFER FULL?? JMP ERBUF NO MORE ROOM IN BUFFER LDA ADRS GET ADDR OF FIRST WORD OF BUFFER STA EQT13,I ADA .11 STA ADRS INCREMENT TABLE ADDR BY 11 ISZ COUNT INCREMENT BUFFER POINTER LDB EQT13,I GET NEW ADDR OF EQT13 LDA TEMP STORE STA B,I ID SEGMENT ADDR * CONT LDA EQT6,I GET CONTROL WORD OF REQUEST AND .3 ISOLATE BITS 1 & 0, REQ.OPERATION CPA .3 IS IT A FUNCTION REQ.? JMP FUNCT YES, THEN PROCESS FURTHER SKP * * REQUEST WAS READ OR WRITE. IS IT LEGAL? * LDA EQT6,I NO, GET REQ. CONTROL WORD AGAIN AND M700 ISOLATE K,V,& M BITS, MUST MATCH CPA KVM NO KEYBOARD,BINARY,FIXED LENGTH. RSS IT DOES, SKIP JMP RCER LDA EQT8,I GET BUFFER LENGTH CMA,SSA,INA,SZA BUFFER>0 CLA,RSS O.K. ZERO COUNTER JMP RCER BUFFERTHE STEPPER CARD C SPECIFIED IN ITEST = 8. THE NUMBER OF PULSES MUST BE C LESS THAN 4000B. C C DIMENSION IBUFFR (5) DIMENSION IREGS(2) EQUIVALENCE (REGS,IREGS(1)) DATA IZERO/0/,ICOD1/1/,ICOD2/2/ DATA ICOD12/12/,IOFST/-1/ C IFUNC = 0 IF (ITEST.EQ.9) IDATA = 0 ITME = 0 GOTO (20,50,600,130,320),ITEST-7 20 WRITE (IOUTLU,1020) 1020 FORMAT (" UNIT #, SLOT # ? (-1 TO EXIT)") READ (INLU,*) IUNIT,ISLOT IF (IUNIT.LT.0) GOTO 999 IF (IUNIT.GT.I6941) GOTO 20 IF (ISLOT.LT.0.OR.ISLOT.GT.14) GOTO 20 40 BTEMP = ISLOT * 10000B GOTO (100,200,300,400,50),ITEST 50 IBUFFR(1) = 170040B + IUNIT IF (ITEST.EQ.8) IBUFFR(1) = IBUFFR(1) + 20B GOTO (320,500,320,320,350),ITEST-4 C C INPUT CALL - NORMAL READ. C 100 WRITE (IOUTLU,1000) 1000 FORMAT (" TME? (0=OFF,1=ON,-1 TO EXIT)") READ (INLU,*) ITME IF (ITME.EQ.-1) GOTO 999 IF (ITME.NE.0.AND.ITME.NE.1) GOTO 100 130 IBUFFR(1) = 2 IBUFFR(2) = 170240B + IUNIT + ITME*20B IBUFFR(3) = BTEMP IBUFFR(4) = 1 IBUFFR(5) = 0 IBUFFL = 5 REGS = EXEC (ICOD1,ICNWD,IBUFFR,IBUFFL,IFUNC) IFUNC = 0 IERR = IAND (IREGS(1),377B) IF (IERR.NE.0) GOTO 370 150 WRITE (IOUTLU,1500) ISLOT,IBUFFR(5) 1500 FORMAT (" SLOT # "I2" HAS DATA "@6) C IN NORMAL READ TEST KEEP INPUTTING DATA UNTIL USER C ENTERS -1 FOR TME. IF (ITEST.EQ.1) GOTO 100 GOTO 999 C C INPUT - READ DIRECT WITHOUT GATE. C 200 IFUNC = 2 GOTO 130 C C OUTPUT CALLS TO MULTIPROGRAMMER. C C SINGLE OUTPUT ENTRY POINT. 300 IDTE = 0 ISYE = 0 ITME = 0 WRITE (IOUTLU,3000) 3000 FORMAT (" DTE, SYE, TME? (-1 TO EXIT)") READ (INLU,*) IDTE,ISYE,ITME IF (IDTE.EQ.-1) GOTO 999 IF (IDTE.NE.0.AND.IDTE.NE.1) GOTO 300 IF (ISYE.NE.0.AND.ISYE.NE.1) GOTO 300 IF (ITME.NE.0.AND.ITME.NE.1) GOTO 300 310 IBUFFR(1) = 170000B + IUNIT IBUFFR(1) = IBUFFR(1) + ITME*20B + ISYE*40B + IDTE*100B C EVENT SENSE REFERENCE WORD, PROGRAMMABLE TIMER AND C STEPPER MOTOR ENTRY POINT. 320 WRITE (IOUTLU,3200) 3200 FORMAT (" ENTER DATA (OCTAL).") READ (INLU,3300) IDATA 3300 FORMAT (@4) IF (IDATA) 999,330 330 IF (IDATA-10000B) 340,320 340 IF (IDATA-4000B) 350,345 345 IF (ITEST.EQ.8.OR.ITEST.EQ.13) GOTO 320 C PULSE COUNTER TEST ENTRY POINT. 350 IBUFFR(2) = BTEMP + IDATA 360 REGS = EXEC (ICOD2,ICNWD,IBUFFR,ICOD2,IFUNC) IERR = IAND (IREGS(1),377B) IF (IERR.EQ.0) GOTO 380 370 WRITE (IOUTLU,3700) IERR 3700 FORMAT ("ERROR RETURN FROM DRIVER. STATUS = "@3) IERR = IAND (IREGS(1),4) IF (IERR.EQ.0.OR.ITME.EQ.0) GOTO 380 IBUFFR(1) = 170000B + IUNIT IBUFFR(2) = BTEMP REGS = EXEC (ICOD2,ICNWD,IBUFFR,ICOD2,IFUNC) IERR = IAND (IREGS(1),377B) IF (IERR.NE.0) WRITE (IOUTLU,3600) IERR 3600 FORMAT (" ERROR IN DISARMING CARD. STATUS = "@3) C IN OUTPUT TEST KEEP REPEATING OUTPUT CALL UNTIL THE C USER ENTERS A NEGATIVE NUMBER FOR DTE. 380 IF (ITEST.EQ.3) GOTO 300 C IN EVENT SENSE TEST ASK FOR UNIT & SLOT OF NEXT CARD C IN ORDER TO SET ITS REFERENCE WORD. IF (ITEST.EQ.5) GOTO 20 GOTO 999 C C CONTINUOUSLY ROTATED OUTPUT. C T6940 SUSPENDS FOR A SECOND AND THEN OUTPUTS A C WORD WITH THE NEXT CONSECUTIVE BIT TURNED ON. 400 IBUFFR(1) = 170140B + IUNIT DO 450 I = 1,2 DO 440 J = 0,11 WRITE (IOUTLU,4200) J 4200 FORMAT (" BIT "I2) IDATA = 2 ** J 410 IBUFFR(2) = BTEMP + IDATA REGS = EXEC (ICOD2,ICNWD,IBUFFR,ICOD2,IFUNC) IERR = IAND (IREGS(1),377B) IF (IERR.NE.0) WRITE (IOUTLU,3700) IERR CALL EXEC (ICOD12,IZERO,ICOD2,IZERO,IOFST) 440 CONTINUE 450 CONTINUE IF (IDATA.EQ.0) GOTO 460 C IN FINAL OUTPUT CLEAR ALL THE BITS. IDATA = 0 GOTO 410 460 GOTO 999 C C PULSE COU0.*NTER OVERFLOW CHECK. 500 IBUFFR(2) = BTEMP + 7777B GOTO 360 C C STEPPER MOTOR - ACTIVATE OUTPUT # 2. 600 IBUFFR(2) = BTEMP + 4000B + IDATA GOTO 360 C C 999 RETURN END END$ 0  09611-18007 A S 0106  SENSE - 6940 VERIFICATION INTERRUPT HANDLER             H0101 7ASMB,L HED SENSE -- EVENT SENSE INTERRUPT HANDLER 09611-18007 * * * * S E N S E -- EVENT SENSE INTERRUPT HANDLER * * * * * * BIN. RELOC. TAPE: 09611-16007 REV A * SOURCE TAPE: 09611-18007 REV A * MANUAL: 09611-90010 JUNE, 1975 * * AUTHOR: JULIA A. CATES * * VERSION: MAY, 1975 * * SENSE, EVENT SENSE INTERRUPT HANDLER, RETRIEVES THE * SLOT, DATA AND SELECT CODE INFORMATION OF INTERRUPTING * 6940 MULTIPROGRAMMER I/O CARDS. SENSE PRINTS THIS INFOR- * MATION ON THE SYSTEM CONSOLE, SO THAT THE USER MAY VERIFY * PROPER FUNCTIONING OF THE MULTIPROGRAMMER. * * NAM SENSE,2,89 09611-16007 REV A 20MAY75 * ENT SENSE EXT EXEC SUP * * SENSE LDA B,I STA SLOT# INB LDA B,I STA DATA ADB .3 LDA B,I AND MSK77 STA CHAN# PSLOT LDA SLOT# PREPARE INTERRUPT DATA FOR OUTPUT. ADA MIN18 SSA,RSS CHECK FOR VALID SLOT NUMBER. JMP PDATA LDA .14 STA TXT1L LDA SLOT# \ CLB \ DIV .10 \ ADB B60 \ CONVERT THE SLOT NUMBER TO ADA B60 / THE ASCII REPRESENTATION ALF,ALF / OF A DECIMAL NUMBER. IOR B / STA BUFR1 / PDATA LDA TXPT2 LDB DATA JSB OCTAS LDA TXPT3 LDB CHAN# JSB OCTAS START LDA TXT1D START OUTPUT. LDB TX1LD PRINT THE SLOT NUMBER JSB OUTPT ON THE TELETYPE. LDA TXT2D LDB TX2LD PRINT THE DATA OF THE JSB OUTPT INTERRUPTING CARD. LDA TXT3D LDB TX3LD PRINT THE SELECT CODE OF JSB OUTPT THE 6940 THAT INTERRUPTED. CONT JSB EXEC DEF *+2 DEF RCOD6 COMPLETION CALL. SKP * * VARIABLES, CONSTANTS * SLOT# NOP TXPT2 DEF BUFR2 DATA NOP TXPT3 DEF BUFR3 CHAN# NOP ICNWD OCT 1 .3 OCT 3 RCOD6 OCT 6 .10 DEC 10 x  .14 DEC 14 MIN18 DEC -18 B60 OCT 60 MSK77 OCT 77 * A EQU 0 B EQU 1 * TEXT1 ASC 13, THE INTERRUPTING SLOT IS BUFR1 ASC 4,INVALID TXT1L DEC 17 TXT1D DEF TEXT1 TX1LD DEF TXT1L TEXT2 ASC 7, THE DATA IS NOP NOP BUFR2 NOP TXT2L DEC 10 TXT2D DEF TEXT2 TX2LD DEF TXT2L TEXT3 ASC 13, THE 6940 SELECT CODE IS NOP NOP BUFR3 NOP TXT3L DEC 16 TXT3D DEF TEXT3 TX3LD DEF TXT3L SKP * * SUBROUTINE OCTAS -- OCTAL TO ASCII CONVERSION * * "OCTAS" USES THE B REGISTER AS THE INTEGER TO BE * CONVERTED. THE A REGISTER CONTAINS A POINTER TO * THE STORAGE LOCATION OF THE 3 ASCII WORDS. * OCTAS NOP STA BFRPT LDA MIN3 STA CNTR GOON LDA B AND MK7 STA TEMP2 LDA B AND M7770 STA TEMP1 ALF,ALS AND M3400 IOR TEMP2 ADA ASCII STA BFRPT,I ISZ CNTR RSS JMP DONE LDB BFRPT ADB MIN1 STB BFRPT LDB TEMP1 BRS,BRS BRS,BRS BRS,BRS JMP GOON DONE JMP OCTAS,I * BFRPT NOP TEMP1 NOP TEMP2 NOP ASCII OCT 30060 MIN1 OCT -1 MIN3 OCT -3 CNTR OCT 3 MK7 OCT 7 M3400 OCT 3400 M7770 OCT 177770 SKP * * * SUBROUTINE OUTPT -- OUTPUT DATA * * OUTPT OUTPUTS THE SLOT NUMBER, DATA AND SELECT CODE * OF THE INTERRUPTING 6940 CARD TO THE SYSTEM CONSOLE. * OUTPT NOP STA TEXT STB TEXTL JSB EXEC DEF *+5 DEF RCOD2 WRITE CALL. DEF ICNWD TEXT NOP TEXTL NOP JMP OUTPT,I * RCOD2 OCT 2 * * END SENSE END$ |   09611-18009 A S 0106 !$#&% OFF-LINE 2313/6940VERIFICATION START-UP PROG            H0101 ASMB,R,L,C NAM !$#&%,1,1 09611-16009 REV. A 75164 -TLD- * * * SOURCE 09611-18009 * BINARY 09611-16009 * * * THIS PROGRAM IS USED TO CONFIGURE THE EQT ENTRY FOR * THE OFF-LINE 2313 OR 6940 VERIFICATION RUNNING IN * THE RTE-C ENVIRONMENT. EQT 2 IS CONFIGURED FOR 2313- * EQT 3 IS CONFIGURED FOR 6940. IN ADDITION, THE INTERRUPT * TABLE IS CONFIGURED FOR THE PROPER SELECT CODE. LU 2 IS * ASSUMED TO POINT TO EQT 2, LU 3 TO EQT 3. THE DRT FOR * THE APPROPRIATE LU WILL HAVE THE SUBCHANNEL SET TO 1 FOR * REMOTE. * * EXT'S PROVIDE DATA TO DETERMINE WHICH EQT WILL BE CONFIGURED * EITHER 2313 (EQT 2) OR 6940 (EQT 3). * EXT EXEC,$LIBR,$LIBX EXT !$#&1,!$#&2,!$#&3,!$#&4 START EQU * JSB EXEC ASK FOR SC DEF *+5 DEF D2 DEF D1 DEF !$#&1 DEF DM20 JSB EXEC GET REPLY DEF *+5 DEF D1 DEF B401 DEF BFR DEF DM2 SZB,RSS JMP START IF TLOG=0 ERROR CPB D1 JMP START IF TLOG=1 ERROR LDA BFR GET CHARS AND B377 MASK STA TEMP SAVE LDA BFR GET CHARS ALF,ALF GET HI CHAR AND B377 MASK JSB D.CHK CHECK FOR DIGIT JMP START IF NOT DIGIT ERROR ALF,RAR MULTIPLY BY 8 STA BFR SAVE LDA TEMP GET LOW CHAR JSB D.CHK CHECK FOR DIGIT JMP START IF NOT DIGIT ERROR ADA BFR ADD UPPER CHAR VALUE STA TEMP SAVE SC ADA DM8 CHECK FOR < 8 SSA JMP START < 8 ERROR R.L? EQU * JSB EXEC ASK REMOTE OR LOCAL DEF *+5 DEF D2 DEF D1 DEF QQ DEF DM18 JSB EXEC GET REPLY DEF *+5 DEF D1 DEF B401 DEF BFR DEF DM1 SZB,RSS JMP R.L? IF TLOG=0 ERROR LDA BFR GET CHAR ALF,ALF AND B377 MASK CPA L LOCAL? JMP NOSCH YES - NO SUBCHANNEL TO BE SET CPA R REMOTE? RSS JMP R.L? NO - ERROR JSB $LIBR TURN OFF INTERRUPT SYSTEM NOP LDB DRT GET DRT ADDR ADB !$#&2 GET OFFSET INTO DRT LDA B,I GET DRT ENTRY IOR BIT11 TURN ON BIT 11 STA B,I REPLACE DRT ENTRY JMP SKPIO INTERRUPT ALREADY OFF NOSCH EQU * JSB $LIBR TURN OFF INTERRUPT SYSTEM NOP SKPIO EQU * LDA !$#&2 GET OFFSET INTO EQT MPY D15 MULTIPLY BY 15 ADA EQT ADD EQT ADDR LDB INTBA GET INT TABLE ADDR ADB DM6 ADJUST SC ADB TEMP INDEX INTO TABLE STA B,I SET EQT ADDR INTO INT TABLE LDB A SAVE EQT ADDR ADB D3 MOVE TO SC WORD LDA B,I GET WORD AND CMASK MASK SC IOR TEMP PUT IN NEW SC STA B,I RESTORE WORD JSB $LIBX TURN ON INTERRUPT SYSTEM DEF *+1 DEF *+1 JSB EXEC TELL WHICH LU TO USE DEF *+5 DEF D2 DEF D1 DEF !$#&4 DEF DM19 JSB EXEC SCHEDULE PROGRAM DEF *+8 DEF D10 DEF !$#&3 DEF ZERO DEF ZERO DEF ZERO DEF ZERO DEF ZERO JSB EXEC TERMINATE DEF *+2 DEF D6 D.CHK NOP CHECK FOR VALID OCTAL DIGIT ADA BM60 ADD -"0" SSA JMP D.CHK,I < "0" SO ERROR LDB A ADB DM8 ADD -8 SSB ISZ D.CHK IF <= 7 BUMP RETURN JMP D.CHK,I OTHERWISE ERROR RETURN BM60 OCT -60 B377 OCT 377 B401 OCT 401 BFR NOP BIT11 OCT 4000 CMASK OCT 177700 ZERO NOP D1 DEC 1 D10 DEC 10 D15 DEC 15 D2 DEC 2 D3 DEC 3 D6 DEC 6 DM1 DEC -1 DM2 DEC -2 DM6 DEC -6 DM8 DEC -8 DM18 DEC -18 DM19 DEC -19 DM20 DEC -20 L OCT 114 R OCT 122 TEMP NOP QQ ASC 9,LOCAL OR REMOTE? _:a DRT EQU 1652B EQT EQU 1650B INTBA EQU 1654B A EQU 0 B EQU 1 END START   09611-18010 A S 0122 !$#&A OFF-LINE 6940 VERIFICATION DATA TABLE             H0101 +ASMB,R,L,C NAM !$#&A,7 09611-16010 REV. A 75164 -TLD- * * * SOURCE 09611-18010 * BINARY 09611-16010 * * * DATA TABLE FOR !$#&% TO CONFIGURE 6940 ENT !$#&1,!$#&2,!$#&3,!$#&4 !$#&1 EQU * ASC 10,6940 SELECT CODE = _: !$#&2 EQU * DEC 2 !$#&3 EQU * ASC 3,T6940 !$#&4 EQU * ASC 10,FOR 6940 USE LU = 3 END   09611-18011 A S 0106 !$#&B OFF-LINE 2313 VERIFICATION DATA TABLE             H0101 "ASMB,R,L,C NAM !$#&B,7 09611-16011 REV. A 75164 -TLD- * * * SOURCE 09611-18011 * BINARY 09611-16011 * * * DATA TABLE FOR !$#&% TO CONFIGURE 2313 ENT !$#&1,!$#&2,!$#&3,!$#&4 !$#&1 EQU * ASC 10,2313 SELECT CODE = _: !$#&2 EQU * DEC 1 !$#&3 EQU * ASC 3,!2313 !$#&4 EQU * ASC 10,FOR 2313 USE LU = 2 END g  09611-18012 A S 0106 OFF-LINE 2313/6940 VERIF. RTE-C CONFIGURATION OVRLAY            H0101 u7ASMB,A,B,L,C * REV. A 75164 -TLD- * * * SOURCE 09611-18012 * ABSOLT 09611-16012 * * * * * * RTEC PATCH * * * * * THIS OVERLAY MAKES RTE-C SELF CONFIGURING FOR SYSTEM TTY AND TBG * THIS PATCH RETRIEVES FROM THE SWITCH REGISTER * THE SELECT CODE OF THE TELETYPE (BITS 0 THRU 5) * AND THE SELECT CODE OF THE TBG (BITS 6 THRU 11). * THE TBG SELECT CODE IS PUT IN LOCATION 1674. * THE TELETYPE SELECT CODE IS PUT IN EQT 1. * * ORG 2 JMP TBG,I JUMP TO OVERLAY * ORG 1674B DEF START ADDR OF OVERLAY FOR JUMP * ORG 37600B START EQU * LIB SWREG GET SELECT CODES IN SWR SZB,RSS = 0 IS ERROR JMP BADSC LDA B AND M7700 PICK OFF THE TBG CHANNEL, ALF,ALF AND STORE IT IN RAL,RAL RTE'S BASE PAGE JSB SCCHK CHECK SELECT CODE STA TBG COMMUNICATION AREA. LDA B AND M77 PICK OFF THE TTY'S SELECT CODE. JSB SCCHK CHECK SELECT CODE CPA TBG CHECK FOR TTY = TBG JMP BADSC = MUST BE ERROR STA TTYSC LDB INTBA STORE THE ADDRESS ADB A OF THE TELETYPE EQT ADB MIN6 IN THE INTERRUPT LDA EQTA TABLE. STA B,I ADA .3 STA EQT4 LDA A,I MERGE THE TELETYPE AND M1777 SELECT CODE INTO IOR TTYSC THE 4TH ENTRY OF THE STA EQT4,I TELETYPE EQT (EQT 1). JMP L3,I START UP RTEC. BADSC EQU * CCB OTB 1 SET SWR ALL 1'S ON ERROR HLT JMP START RETRY SCCHK NOP CHECK FOR SC > 7 STA TEMP SAVE SC ADA DM8 IF SC SSA < 10(8) JMP BADSC THEN ERROR LDA TEMP RESTORE SC JMP SCCHK,I RETURN * SWREG EQU 1 A EQU 0 B EQU 1 TBG EQU 1674B INTBA EQU 1654B EQTA EQU 1650B L3 EQU 3 TEMP NOP DM8 DEC -8 TTYSC NOP EQT4 NOP F  M7700 OCT 7700 M77 OCT 77 M1777 OCT 177700 MIN6 OCT -6 .3 OCT 3 END @)   09611-18015 A S 0106  HP6940 RTE VERIFICATION TEST SUBROUTINES             H0101 ASMB,L HED SERCH -- 09611-16015 A SUBROUTINES OF T6940 * * * * * S E R C H -- SYSTEM LIST SEARCH AND MODIFY * * * * * SOURCE TAPE: 09611-18015 REV A * BINARY RELOC TAPE: 09611-16015 REV A * MANUAL: O9611-90010 JUNE, 1975 * AUTHOR: JULIA A. CATES * * NAM: SERCH * ENTRY POINTS: SERCH, LUCHK, DSRCH * * "SERCH" SEARCHES THROUGH THE SYSTEM LIST TO SEE IF * "SENSE" IS SYSTEM RESIDENT. IF "SENSE" IS NOT FOUND, * MODE <= 1, AND THE VERIFICATION PROGRAM WILL NOT * OPERATE IN THE SENSE MODE. IF "SENSE" IS FOUND, * "SERCH" LOOKS FOR THE ID SEGMENT ADDRESS OF THE * USER'S ALARM--INTERRUPT HANDLING PROGRAM. "SERCH" * WILL SAVE ITS ADDRESS, SO THAT "DSRCH" MAY REPLACE * IT IN THE DRIVER'S TABLE AT THE COMPLETION OF "T6940". * "SERCH" STORES THE ID SEGMENT ADDRESS OF "SENSE" IN THE * DRIVER'S TABLE, SO THAT THE DRIVER WILL SCHEDULE "SENSE" * TO PROCESS EVENT SENSE INTERRUPTS. * NAM SERCH,7 09611-16015 A 75161 SUBR OF T6940 ENT SERCH,LUCHK,DSRCH EXT EXEC,.DIO.,.IOI.,.DTA.,$LIBR,$LIBX,.ENTR SUP * * MPLU NOP MULTIPROGRAMMER LOGICAL UNIT # TTYLU NOP OUTPUT LIST DEVICE - USED FOR MESSAGES. SCODE NOP I/O SLOT NUMBER OF THE 6940. DVRNO NOP SPECIFIES DRIVER 61 OR DRIVER 72 MODE NOP MODE: 0 - SENSE IS CONFIGURED IN DRIVER. * 1 - NO SENSE PROGRAM FOUND. * -1 - INTERRUPT TABLE ENTRY IS 0. * SERCH NOP POINT OF ENTRY. JSB .ENTR RETRIEVE PARAMETERS. DEF MPLU CLA STA MODE,I ADA TTYLU,I STA ICNWD * * SERCH CHECKS THAT THE INTERRUPT TABLE HAS A POSITIVE * ENTRY - THE ADDRESS OF THE 6940 DRIVER EQT TABLE. * ITABL LDA INTBA FIND THE LOCATION OF THE INTERRUPT ADA SCODE,I TABLE ENTRY FOR THE 6940. ADA MIN6 STA INTBL LDA INTBL,I IS AN ALARM PROGRAM OR DRIVER ADDRESS PRESENT? STA ICNTN CMYA,INA SSA,RSS JMP EMPTY NO ALARM PROGRAM OR DRIVER ADDRESS. SKP * * "SERCH" LOOKS THROUGH THE KEYWORD BLOCK FOR THE ID * SEGMENT ADDRESS OF "SENSE". KWORD LDA KEYWD FIRST WORD ADDRESS OF KEYWORD TABLE STA KYTBL NXTID LDB KYTBL,I ADDRESS OF NEXT ID SEGMENT STABL STB IDADR SZB,RSS AT END OF KEYWORD BLOCK? JMP NOSNS YES, NO SENSE PROGRAM FOUND. ADB .12 NO, CHECK NEXT PROGRAM NAME. STB NAME ADDRESS OF PROGRAM NAME IN ID SEGMENT LDA NAME,I CPA ASCSE RSS JMP NEXT IS ISZ NAME LDA NAME,I THE CPA ASCNS RSS PROGRAM JMP NEXT ISZ NAME NAME LDA NAME,I AND MASK "SENSE"? CPA ASCE JMP FOUND NEXT ISZ KYTBL JMP NXTID * * SERCH HAS FOUND THE ID SEGMENT ADDRESS OF "SENSE". * SERCH NEXT LOOKS FOR THE ID SEGMENT ADDRESS OF THE * USER'S INTERRUPT HANDLING PROGRAM ("ALARM") IN THE * 6940 DRIVER'S EQT TABLE. * FOUND LDA MPLU,I ADA MIN1 ADA DRT FROM THE DEVICE REFERENCE TABLE LDA A,I FIND THE EQT #. AND MSK77 ADA MIN1 LDB A \ ALF \ THESE INSTRUCTIONS MULTIPLY CMB,INB / THE EQT # BY 15. ADB A / ADB EQTA STB EQTBL ADB .12 FIND THE 13TH ENTRY OF THE EQT TABLE. LDA DVRNO,I AND RCOD2 IS THE DRIVER # 61 OR 72? SZA DVR72 LDB B,I DRIVER 72: ALARM ADDR IS IN DRIVER'S TABLE STORE STB LOCAT DRIVER 61: ALARM ADDR IS IN EQT ENTRY 13 LDA LOCAT,I STA CNTNT SKP * * SERCH PLACES THE ID SEGMENT ADDRESS OF "SENSE" IN THE * 6940 DRIVER'S TABLE. * RPLAC JSB $LIBR NOP LDA IDADR STA LOCAT,I JSB $LIBX DEF *+1 DEF *+1 DSPLY CLA ADA ICNWD CLB JSB .DIO. DEF TEXTA  DEF RTRN1 LDA CNTNT THE ID SEGMENT ADDRESS OF ALARM IS ... JSB .IOI. LDA LOCAT THE ADDRESS IS STORED AT ... JSB .IOI. JSB .DTA. RTRN1 JMP SERCH,I * NOSNS CLA,INA NO SENSE PROGRAM FOUND. STA MODE,I MODE <= 1 RTRN2 JMP SERCH,I * SKP * * * CONSTANTS AND VARIABLES. * INTBA EQU 1654B FWA OF INTERRUPT TABLE. DRT EQU 1652B ADDRESS OF DEVICE REFERENCE TABLE EQTA EQU 1650B ADDRESS OF EQUIPMENT TABLE KEYWD EQU 1657B FWA OF KEYWORD BLOCK. A EQU 0 B EQU 1 ICNTN NOP STORAGE FOR INTERRUPT TABLE CONTENTS. CNTNT NOP CONTENTS OF THE 13TH ENTRY OF THE 6940 * EQT TABLE. LOCAT NOP STORAGE LOCATION OF THE ID SEGMENT * ADDRESS OF THE USER'S ALARM PROGRAM. EQTBL NOP LOCATION OF EQT TABLE FOR THE 6940 ICNWD NOP CONTROL INFORMATION WORD FOR EXEC CALLS. INTBL NOP LOCATION OF INTERRUPT TABLE ENTRY. EQT13 NOP THE 13TH ENTRY OF THE 6940 EQT TABLE. KYTBL NOP LOCATION OF KEYWORD BLOCK. IDADR NOP SENSE'S ID SEGMENT ADDRESS ASCSE ASC 1,SE ASCNS ASC 1,NS ASCE OCT 42400 NAME NOP RCOD2 OCT 2 .12 DEC 12 MIN1 OCT -1 MIN6 OCT -6 MSK77 OCT 77 MASK OCT 77400 SKP * * PRINT STATEMENTS. * * TEXTA ASC 21,(" THE ID SEGMENT ADDRESS OF ALARM IS "@6 ASC 16,/" THE ADDRESS IS STORED AT "@6) * * EMPTY JSB EXEC DEF *+5 THE INTERRUPT TABLE ENTRY FOR THE DEF RCOD2 6940 IS ZERO OR NEGATIVE! BAD NEWS! DEF ICNWD DEF TEXTB DEF TXTBL JSB EXEC DEF *+5 DEF RCOD2 DEF ICNWD DEF TEXTC DEF TXTCL CCA MODE = -1, -> INDICATES AN ERROR STA MODE,I IN THE INTERRUPT TABLE. RTRN3 JMP SERCH,I * TEXTB ASC 15, ERROR! 6940 INTERRRUPT TABLE TEXTC ASC 18, ENTRY IS NOT DRIVER'S EQT ADDRESS. TXTBL DEC 15 TXTCL DEC 18 * SKP * * * * * * * * L U C H K"i - MAXIMUM LU RETRIEVER * * * * * MAXLU NOP * LUCHK NOP JSB .ENTR DEF MAXLU LOOK ON BASE PAGE TO FIND OUT THE LDA LUMAX MAXIMUM LU # IN THE SYSTEM. STA MAXLU,I JMP LUCHK,I * LUMAX EQU 1653B SKP * * * * * D S R C H * * * * * * "DSRCH" RESTORES THE ID SEGMENT ADDRESS OF THE USER'S * ALARM - INTERRRUPT PROCESSING PROGRAM TO THE DRIVER'S * TABLE. * * DSRCH NOP STARTING POINT . . . RSTOR JSB $LIBR NOP LDA CNTNT STA LOCAT,I * THE FOLLOWING CODE CLEARS THE T6940 ID SEGMENT'S * TIME VALUES. LDB XEQT GET THE ID SEGMENT ADDRESS OF T6940 ADB D17 GOTO WORD 18 (RES/T/MULT) LDA B,I GET CONTENTS AND TBIT ISOLATE TIME BIT SZA,RSS IS PROGRAM IN THE TIME LIST? STA B,I CLEAR RESOLUTION CODE AND MULTIPLE EXIT JSB $LIBX DEF DSRCH,I * XEQT EQU 1717B D17 DEC 17 TBIT OCT 10000 * END END$ )  09611-18017 1742 S 0122 &CRCNF RTE RECON. ROUTINE             H0101 ASMB,A,B,L,C * NAME : RTE-C RECONFIGURATION PATCH * MODIFIED TO RECOGNIZE DVR05 * SOURCE: 09611-18017 REV 1742 * RELOC: 09611-16017 REV 1742 * PROGRAMMER: A.R. SANDERSON 770805 * REVISED FOR RTE-C BASED 2313/91000 VERIFICATION * BASED ON PREVIOUS VERSIONS BY R.K. JUNCKER, * (92064-18139), E.J.W., AND D.L.S. * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * * **************************************************************** * * * ORG 2 JMP TBG,I SET UP TO START IN THIS ROUTINE INSTEAD OF ORG 1674B THE OP SYSTEM. DEF START BEGINNING OF THIS ROUTINE A EQU 0 B EQU 1 * ORG 37400B START CLB STARTS HERE. HLT 70B HALT FOR USER TO SET S AND B TO PARAMETERS. * * PHOTOREADER RECONFIGURATION * B CONTAINS PHOTOREADER SELECT CODE (IF USED). * * LDA B AND B77 STA NEWCH SET "NEWCH" TO PHOTOREADER S.C. SZA,RSS JMP CRTIO PHOTOREADER S.C.=0, SKIP RECONFIGURATION * * LDA PRMSK 770630 SET A=EQT TYPE, CHP2=NEW I/O CHANNEL JSB SCAN FIND EQT AND SET NEW I/O CHANNEL IN EQT JSB SINT SET UP INTERRUPT TABLE & TRAP CELL * * * SYSTEM CONSOLE RECONFIGURATION * CRTIO LIA 1 GET NEW S.C. FOR AND B77 CONSOLE FROM S-REG SZA,RSS BITS 0-5. JMP TBGIO IF ZERO, SKIP CRT SECTION * STA NEWCH SAVE S.C. FOR SCAN AND LDA CHSC3 CONFIGURE I-O IOR NEWCH INSTRUCTIONS. STA CHSC3 LDA CHSC4 IOR NEWCH STA CHSC4 LDA CHSC2 IOR NEWCH STA CHSC2 * ~ LDA CHMRS SEND MASTER RESET.FLAG SET=12966A. CHSC2 CLF 0 CHSC3 OTA 0 CHSC4 SFS 0 * CLE,RSS IF NOT 12966A CARD, SET E=0. CCE IF 12966A CARD, SET E=1. * LDB SYSTY GET ADB D4 OLD LDA B,I DEVICE AND B374C TYPE. CPA B2400 JMP PAS29 * SEZ JMP PAS28 OLD=00, NEW=05. JMP PAS27 OLD=00, NEW=00. * PAS29 SEZ JMP PAS27 OLD=05, NEW=05. * PAS28 CLA,SEZ OLD=05, NEW=00. LDA B2400 SCAN FOR 00 OR JSB SCAN 05 DEVICE. * STB SYSTY SETUP BASE PAGE CONSOLE WORD. * STA DRT,I FIX LU#1. * PAS25 JSB SINT SET INTERRUPT TABLE & TRAP CELL LDA DRT,I GET BACK LU1 EQT 770630 LDB DRT INDEX UP TO 770630 ADB D5 LU6 770630 STA B,I & ASSIGN IT TO CONSOLE 770630 JMP TBGIO * PAS27 ADB M1 CURRENT SYSTEM CONSOLE IS ALRIGHT LDA B,I EXCEPT FOR THE CHANNEL IN EQT AND C77 WORD 4. FIX UP WORD IOR NEWCH 4 THEN RETURN AND STA B,I FIX UP BASE PAGE ADB M3 JMP PAS25 TRAP CELL AND INTBA. * * * TIME-BASE-GENERATOR RECONFIGURATION * TBGIO LIA 1 GET NEW S.C.FOR ALF,ALF TBG FROM S-REG RAL,RAL BITS 6-11. AND B77 SZA,RSS IF ZERO, JMP PRVIO SKIP TBG SECTION * STA TBG CLB CLEAR LDA INTBA TBG ADA M6 INTERRUPT ADA TBG TABLE STB A,I LOCATION. * LDA JCICI SET UP TBG STA TBG,I TRAP CELL. * * * PRIVILEGED TERMINATOR CARD RECONFIGURATION * PRVIO LIA 1 GET NEW S.C. ALF FOR PRIVILEGED AND B17 INTERRUPT CARD. SZA,RSS IF ZERO, JMP FINIS SKIP PRIVILEGED INTERRUPT SECTION * CPA B10 IF NEW S.C=10 CLA i? THEN CLEAR STA DUMMY DUMMY. * LDB JCICI PUT 'JSB $CIC,I' INTO BASE STB DUMMY,I PAGE TRAP CELL. * * * * FINIS JMP 3,I RETURN TO SYSTEM START-UP SEQUENCE * * CHMRS OCT 150077 MASTER RESET FOR 12966A CARD. PRMSK OCT 400 770630 PHOTOREADER DRIVER TYPE OLDCH NOP SET BY SCAN. NEWCH NOP B10 OCT 10 B17 OCT 17 B77 OCT 77 B2400 OCT 2400 B374C OCT 37400 C77 OCT 177700 M6 DEC -6 M3 DEC -3 M1 DEC -1 D4 DEC 4 D5 DEC 5 D15 EQU B17 SKP * **************************************************************** * **************************************************************** * * OPERATION: * THE SYSTEM HALTS WITH 102070 AFTER IT IS STARTED. * AT THIS POINT, ENTER THE SELECT CODE OF THE CONSOLE * IN SWITCH REGISTER BITS 0-5, AND THE SELECT CODE OF * THE TBG IN BITS 6-11. * OPTIONAL: * ENTER THE SELECT CODE OF THE PHOTOREADER IN BITS * 0-5 OF THE B REGISTER. * PRESS RUN. * **************************************************************** * * THIS "PROGRAM" IS APPENDED TO THE END OF THE RTE-C * ABSOLUTE SYSTEM TAPE. **************************************************************** * * SCAN SUBROUTINE - FIND EQT BY TYPE & SET UP NEW I-O CHANNEL * * ENTRY: * :=NEW I/O CHANNEL # TO PUT INTO EQT * :=BITS 8-13 = DEVICE TYPE. * JSB SCAN * * EXIT: * :=EQT# * :=EQT1 ADDRESS. * :=OLD I/O CHANNEL # OF EQT * **************************************************************** * SCAN NOP STA TEMP0 SAVE DEVICE TYPE MASK. LDB EQT# SET CMB,INB UP STB COUNT COUNT. LDB EQTA POSITION TO FIRST ADB D4 EQT WORD 5 * SCAN1 LDA B,I GET DEVICE TYPE AND B374C FROM EQT WORD 5. CPA TEMP0 IF CORRECT TYPE,  JMP SCAN2 THEN EXIT. ADB D15 POSITION TO NEXT ISZ COUNT EQT WORD 5. JMP SCAN1 CONTINUE SCAN. * LDA TEMP0 HLT 61B IF NO DEVICE, JMP *-1 HLT 61. (A)=DEVICE TYPE TO BE FOUND * SCAN2 ADB M1 LDA B,I AND B77 GET OLD STA OLDCH CHANNEL AND LDA B,I SAVE IT. AND C77 FIX CHANNEL # IOR NEWCH IN EQT WORD 4. STA B,I ADB M3 POSITION TO EQT1. LDA COUNT COMPUTE ADA EQT# EQT # INA AND JMP SCAN,I RETURN. * ***************************************************************** * * SINT SUBROUTINE - SET UP INTERRUPT TABLE & TRAP CELL * * ENTRY: * :=NEW I/O CHANNEL # * :=EQT ADDR * JSB SINT * * EXIT: * REGISTERS MEANINGLESS * ***************************************************************** * SINT NOP STB TEMP0 SAVE EQT ADDR LDA NEWCH GET NEW I/O CHANNEL ADA M6 STA B ADB INTBA (B) = ADDR OF INTERRUPT TABLE ENTRY CMA,CLE,SSA TEST FOR NEGATIVE I/O CHANNEL ADA INTLG TEST FOR MAX I/O CHANNEL LDA TEMP0 SEZ,RSS ANY ERROR IN ABOVE TESTS? JMP BADCH YES, ERROR HALT * STA B,I SET EQT ADDR IN NEW INTERRUPT TABLE ENTRY * LDA JCICI GET 'JSB $CIC-LINK,I' AND STA NEWCH,I PUT INTO NEW TRAP CELL JMP SINT,I RETURN * BADCH LDB INTLG ERROR. I O CHANNEL # TOO HIGH ADB D5 LDA NEWCH (A)=NEW I/O CHANNEL HLT 63B HLT 63 (B)=MAX I/O CHANNEL ALLOWED JMP *-1 * * TEMP0 NOP COUNT NOP * * JCICI EQU 5B LOCATION 5 MUST BE 'JSB $CIC-LINK,I' EQTA EQU 1650B EQT# EQU 1651B DRT EQU 1652B INTBA EQU 1654B INTLG EQU 1655B TBG EQU 1674B SYSTY EQU 1675B DUMMY EQU 1737B * END ͟  12531-18001 1509 S 0122 012752/54 TTY & 12531 INTERFACE DIAGNOSTIC             H0101 $ ASMBAB̬ HDGNA̠PANGPDU G0 SUP GNA̠PANGPDU A.ADDAGNSàNGUAҠANDSԠԠUP. B.ADDAGNSàMANPGAM .ADADDSS00B. D.ADSHG.HSԠDŠANDPNS .PSSUNANDAԠҠHAԠ00. .ADSHGS ƠSԠ: 5HAԠAԠNDƠAHS SUPSSҠHAS 3PNASԠS PNDAGNS (SUPPSSA̠PAҠNVNN SUPSSҠMSSAGS 0SUPSSNN-ҠMSSAGS 9GϠϠUSҠN̠SN AԠNDƠPSNԠS SUPPSSPAҠNVNNSS DAGNSàPNS 0 N:SANDADUNSHUDBŠHS.G.0 USҠN̠̠ASKҠA3BԠD. AHBԠ̠S G.PSSUN. H.SAԠ-ADADDSS000B .NGUŠƠSNGɯϠNAŠ-ADADDSS00B GNA̠MPUҠHAS 00ؠŠҠH000Ϡ06 060ؠŠҠH00Ϡ6 030ؠŠҠH00Ϡ6 00ؠŠҠH300Ϡ36 N̠PGAMHAԠMSSAGS 00NDƠDAG(APASSUNԩ 006NDƠSԠ(ASԠ 005USҠSNUS 00SԠDŠNPUԠMP 003USҠSԠDŠ 00SVD 00SVD 000SVD 060AP̠HA HDPGAMGANZANHA  NGUAҠ00B NKAGŠABŠ UVŠ30B NKAGŠ NSANS50B AND SAGŠ 000B UVŠN̠ ƠUSD BASàɯϠSS(SԠ00 ZND ABŠƠSԠPNS ABŠƠɯϠNSҠPNS MANDAGNSS(-3 HDNGUAҠNKAGŠAB AU0AGSҠN B4%UBGSҠN SנUSHGSҠN NPU0NUPԠHANN̠N G00B MPGɠGϠϠNGUANSN ANBSSASԠNPUԠ(PHϠADҩ SPBSSSנUPUԠ(Sԩ APBSSASԠUPUԠ(DUMPҠPUNH SNBSSSנNPUԠ(KYBAD AMDƠAASԠDƠAVB.MMY AMBSSASԠDƠAVB.MMY BSSNԠUSD(MAGAPũ MàBSSM̠SàMŠUԠUN BSSSԠDSҠɯ PϠBSSMPUҠYPůPNS USSàBSSUSҠADYPŠANDSԠD MMϠBSSMMYSZŠANDYP SҠBSSNNA̠SHGS MҠBSSM̠SàM SàBSSNGUAҠSHKP ɲASBSSNGҠϠASɠNVSN ϲASBSSA̠ϠASɠNVSN ASNBSSASɠNVSN DSN̠BSSDAGNSàSA̠NUMB MҠBSSMA N̠NKAGŠANDDAANS GDƠZNƠNGUANSN MSGàDƠZMSGàMSSAGŠHNϠHA MSGHDƠZMSGHMSSAGŠHHA MSDƠZMSҠMSSAG SԠDƠZSԠSHGSҠHKUN SNԠ0UNԠSԠNUMB ԠDƠZԠUNϠN̠PGAM NPSVD HDUVŠN G000B ZSؠàNPàUNɯϠSYSM SBMSGìɠDϠ DƠZ DAHDMPGԠNDUYMSSAG SA+ SBMSGìɠUԠPUԠ NP AAҠPASS SAZàUN DBZS9HKҠUSҠSN SBSԬ MPZUSҠ'SUSSH ZNUSҠDASDAGԠSANDADSԠUN DBSDB MPZ ZUSҠDAZSNAVŠPVUSUN DBZSNB HԠ5BAԠҠUSҠNPU NP NP NP ZàSAZUNASAV SBZUNBUS SAZSNANPU SBZSNBPGAM DBZS9HKƠS9SDN SBSԬ MPZUSҠNϠGϠANDA ASԠSԠNUMB SASN- A SAZSAAҠSԠUNAG SKP Z̠DAZUNASŠAG. DBZUNBSŠBG. AA̠A BS ASԠB SAZUNASAVŠPSNS SBZUNB SZSNMVŠSԠUPN NP ẔDASN ADASPGԠ'S DAAɠADDSS PAZ.MSԠNDƠS MPZ̠YS DBZUNB SSBSSSHUDԠBŠUN? MPZ̠N SAZSAYS-SAVŠSԠADDSS SBZHNAZŠAP̠HAS SBZSAɠGϠDϠS ZԠDASNDSPAYSԠNUMBҠƠHAD DBZSױ5HKҠHAԠAԠNDƠS SBSԬ HԠ6BYSAԠҠPA DBZS9HKҠAB SBSԬ MPZUSҠYS DBZSױ3HKҠPNUN SBSԬ MPẔYS-P MPZ̠NNU Z̠DAZSAHKƠANYSSŠUN SZASS? MPZNUSҠNϠSϠPKUPSANDADUN DAZàUPDAŠPASSUN NA SAZ DBZPSAGԠPASSUN ADBZ.ADDSS SBϲASɠNVԠ SBMSGìɠA̠PNԠUN ZPSADƠZPS DBZSױHKҠPNDAG. SBSԬ MP+3YS DAZ pHԠBNϠAԠANDDSPAYPASSUN DAZSNASŠGNA DBZSNBPGAM MPZàDϠԠA̠AGAN SKP MSSAGŠUPUԠHUԠHA ZMSGàNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK MPZMSGìɠUNϠA MSSAGŠUPUԠHHA ZMSGHNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK DAZHԠGԠHAԠD SA+PUԠԠNPA DAZSAVASŠAGS NPHAԠҠDSPAY MPZMSGHɠUNϠA ҠMSSAGŠHHA ZMSNPNY SBZMSGUPUԠMSSAG Ԡ000SHHK A DBZSױHKSҠBԠϠSUPPSS SBSԬɠHA SA+3PUԠHAԠNPA DAZSAVASŠAB DBZSAVB ZHԠNPAԠҠPA MPZMSɠUNϠA SKP UPUԠMSSAG ZMSGNP SAZSAVASAVŠAANDBGSS SBZSAVB DBZMSGɠGԠSHGSҠB DAZMSG ADAZ.MDMNԠUNADDSS SAZMSG SBSԬɠHKϠSUPPSSMSSAG MPZMSG0YS DAZMSGɠHKƠ DAA DAAɠƠS AƬA ANDZ. PAZA. SBZNHKϠUPUԠSԠNUMB DAZMSGɠNϠVŠMA DBAɠADDSS A SBMҬ ZMSG0DAZMSGɠNVԠHAԠD DBAɠMASɠSNG A SBASN SAZNAϠSAVŠSU ANDZ.300DD DBZHHAԠD PAZ.00 DBZH6 PAZ.00 DBZH3 PAZ.3Z300 DBZH DAZNAϠGԠHAԠNUMB ANDZ. ҠB SAZHԠSAVŠ SZZMSGɠADUSԠUNPNS SZZMSG SZZMSG SZZMSG DAZSAVASŠAANDBGSS DBZSAVB MPZMSG SKP ZNNP DASNGԠSԠNUMB PAZԠSԠHŠSAMŠN? MPZNɠYSSKPUPU SAZԠNϠ-HNUPDAŠ SBZNAϠNVԠ SAZSNPUԠԠNSNG ADϠA SBSP AŠNDAŠSAԠƠMA DBZS SBMҬ MPZNɠUN ZSAVANP ZSAVBNP ZàNP ZSANP ZSNANP ZSNBNP ZUNANP ZUNBNP ZBMPNP Z.Ԡ Z.Ԡ Z.0Ԡ0 Z.60Ԡ60 Z.Ԡ Z.Ԡ Z.MDà- Z.MDà- ZD00Dà-00 ZMԠ00 ZSױ5Ԡ00000 ZSױԠ0000 ZSױ3Ԡ0000 ZSױԠ0000 ZSԠ0000 ZS9Ԡ000 Z.00Ԡ00 Z.00Ԡ00 Z.300Ԡ300 ZHԠ0000 ZH6Ԡ06000 ZH3Ԡ03000 ZHԠ0000 ZԠDà- ZSƠDƠ+ ASà3S ZSNASàد ZƠASà ZPSàASà6PASSد ZA.ŠԠ05 HDGNA̠UNS ZNAϠNP SAZADSAVŠNUMB ANDZ.NVԠS ҠZ.60NUMB SABSAVŠ DAZADG AҬAҠSND AҠNUMB ANDZ.NV ҠZ.60 AƬAƠMVŠϠUPPҠHA ҠBADD MPZNAϬɠANDUN SHGSҠHK ZSԠNP SAZNAϠSAVŠAGS ASנGԠSHG. ANDBMASKUԠB SZASSSԠUP? SZZSԠN DAZNAϠSŠAQGS BSנԠBSHGS MPZSԬɠUNϠA NAZŠAP̠HAS ZHNP DAZSHGԠSANGAP̠HA DBZ.GԠSԠAP̠AN ZSH̠SABɠPUԠԠNPA PBZ.AMɠNSHD MPZHɠYS NBNԠADDSS MPZSH ZSHԠ060 SKP PUԠSBNSUNNAP ZɠNP DBZSBɠGԠNSUN SBZSìɠPUԠԠNAP DAZɬɠGԠAN SA3BSAVŠԠҠSBNSUN SZZɠADUSԠUN MPZɬɠUNϠA ZSBɠSB3BɠSBNSUN NAZŠSԠDŠɯϠNSUNS ZSàNP SAZSàSAVŠSԠD SBZADSAVŠABŠADDSS Z̠DBZADɠGԠADDSSƠAN PBZ.MSԠHŠMNA MPZSìɠYSUNϠA DABɠNϠ-GԠNNS ANDZMMASKƠDSԠD ҠZSàADDNNנSԠD SABɠSŠ SZZADMVŠϠNԠADDSS MPZ̠DϠ ZSàNP ZADNP SKP NGUANSN ZNƠàNPàUNɯϠSYSM ASנGԠSԠDŠANDPNS SAUSSàSAVŠHM ANDZ.MNAŠPNS DBA MBNBHKHAԠSà ADBZ. SSB? MP+3KGϠN HԠ3BN MPZNƠYAGAN DBPNAZŠSԠɯ SBZSàNSUNS HԠBAנPAҠϠHANGŠS MPZSؠGϠϠàN̠SN HDBASàɯ0.*ϠSS HU0B S00U NP DAUSSàGԠ̠AN ANDZ. SBZBϠDϠBASàɯ MPS00 ZBϠNP àNPàUNƠA̠ɯ DBZBDNAZŠBASàɯ SBZSàNSUNS NUPԠAGHK ZBϱSƠNP ƠNP SàNP SS MP+3 000SBMSɠ000Ơ0-Sà0 DƠZB00 SSNP MP+3 00SBMSɠ00Ơ0-SS0 DƠZB0 SƠNP SàNP MP+ ƠNPUNƠNS 00SBMSɠ00SƠ0-Sà0 DƠZB0 SSNP MP+3 ƠNPUNƠNUPS MPZBϲ ƠNPUNƠNS 003SBMSɠ003SƠ0-SS0 DƠZB03 MPZBϲ ZB00ASà000Ơ0-Sà0ү ZB0ASà00Ơ0-SS0ү ZB0ASà00SƠ0-Sà0ү ZB03ASà003SƠ0-SS0ү r0  12531-18002 1509 S 0122 012752/54 TTY & 12531 INTERFACE DIAGNOSTIC             H0101 $ SKP ADAGHK ZBϲU ZBSSƠH ZBSƠH ZBS3SàH SS MP+3 005SBMSɠ005ƠH-SàH DƠZB05 ZBSSSH MP+3 006SBMSɠ006ƠH-SSH DƠZB06 ZBS5SƠH ZBS6SàH MP+3 00SBMSɠ00SƠH-SàH DƠZB0 ZBSSSH SS MPZB3 00SBMSɠ00SƠH-SSH DƠZBű0 MPZB3 ZB05ASà3005ƠH-SàHү ZB06ASà3006ƠH-SSHү ZB0ASà300SƠH-SàHү ZBű0ASà300SƠH-SSHү SKP NUPԠN ZB3SBZɠSԠSBNSUN DƠZB3 ZBS3SƠHSԠHŠAG ZBS3SàHSԠHŠN SƠNPUNɯϠSYSMNHN ƠNPUNɯϠSYSM NPGVŠԠAHANŠɠNUP NP ZBS33ƠHSԠHAG MPZBϴ ZB0ASà600Ơ0DDNԠNHBԠNԯ ZB3ŠNP ƠNPUNƠNS 00SBMSɠ00 DƠZB0 SKP SԠDŠSNS ZBϴDBZ.0SAԠHSԠADDSS ZB0DAUSSàGԠSԠD ANDZ. PBASԠHŠH? MPZ.+YS-SKPS DAZ.SƠSԠUP ANDZM ҠBSƠNSUN SAZ.SƠPUԠԠNPA DAZ.ƠSԠUP ANDZM ҠBƠNSUN SAZ.ƠPUԠԠNN ZBSƠHAҠHANN̠AG Z.SƠSƠHUŠSƠHNSUN ZBSSàHSԠHANN̠AG MPZB Z.ƠƠHAҠSԠAG zPBZ.SSԠNSHD? MPZB5YS NBN MPZB0DϠNԠHANN ZBűASà0SƠؠSԠADAG ZBSBZBMPSAVŠNUMB DABNVԠHҠMSSAG SBZNA SAZBű+5 DAZBMPVŠNUMB 0SBMSɠ0 DƠZBű SKP HKNUPԠHD ZB5SBZ DƠZB5 ASԠUP SAZB5AGS SAZB5ҠS SAZBMP ZBS5SàHUNN ZBS5SƠHAD SƠNPANDNUPS Sà SƠ à ƠNϠNUP MP+ɠSHUDU DƠ+H SB+ɠ DƠ+ ZB5NP SZZBMPN.SHUDBŠH SZZBMP ƠNPUNɯϠSYSM DAZB5DDԠNUP? SZA MP+ 0SBMSɠ0NϠN DƠZBű MPZB6ABԠSԠƠSN DAZBMPHKҠԠNUP PAZ.? MP+3 06SBMSɠ06NԠUN DƠZBŲ6 ZBS53ƠHUNƠHAG MPZB6GϠϠNԠSN ZBD5DƠZB5- ZBD5ADƠZB5+ ZBűASà60NԠDUNGHDƠNSү ZBű3ASà03SNDNԠUD ZBűASà060NϠNԯ ZBű5ASà05NԠNADDҠү ZBŲ6ASà306NԠUNү SKP ZB5NP ƠNPUNɯϠSYSM DAZBD5HKϠSŠƠA PAZB5NSUNMPD MP+3YS 0SBMSɠ0NԠDUNGHD DƠZBű DAZBD5AHKUNADDSS DBPϠƠ0 SSBADDN NA PAZB5 MPZB5A 05SBMSɠ05NԠNADDҠ DƠZBű5 MPZB6 ZB5ASBZɠSԠSNDNԠAP DƠZB5 SƠNPUNɯϠSYSMN MPZB5ɠNNUŠS ZB5NP ƠNPUNɯϠSYSM 03SBMSɠ03SNDNԠUD DƠZBű3 SKP àHANDà0 ZB6SBZɠSԠSBNSUN DƠZB6 ZBS6SàHSԠHN ZBS6SƠHSԠHAG SƠNPUNNNUPS ZBS63àHAҠHN NPGVŠԠAHAN NP ƠNPUNNS ZB60SBZɠSԠSBNSUN DƠZB6 ZBS6ƠHAҠHAG ZBS65SàHSԠHN ZBS66SƠHSԠHAG SƠNPUNNNS àNPAҠɯϠSYSM NPGVŠԠAHAN NP ƠNPUNƠNS MPZBϷ ZB6NP ƠNPUNƠNS 06SBMSɠ06àH DƠZBű6 MPZB60 ZB6NP ƠNPUNƠNS 0SBMSɠ0à0 DƠZBű MPZBϷ ZBű6ASà906àHү ZBűASà90à0ү SKP NA̠NNA̠PSԠS ZBϷDBZSHKϠSUPPSS SBSԬɠ? MPH05YS-SKPPSԠS H0SBMSGìɠ̠PA DƠZBMPSSPS ZBSƠHAҠHAG SƠNPUNNNS SBZɠSԠAP̠SBNSUN DƠZBɷ0 HԠBAԠҠPA ANASԠUPAGSҠSS SSNPHKNPAG ANԠSԠSϠAҠAG A̠MVŠϠNԠAG ƠNPUNNyNPS ZBSSSHHKHANN̠AG NANԠSԠSϠAG A̠MVŠϠNԠAG B0HKɯϠBUSS SZBSHUDBŠZ NANԠSϠAG A̠MVŠϠNԠAG SƠNPHKN̠NAD NPGVŠԠAHAN NP ƠNPUNƠNPS SKP ZB0SASSHKҠS MP+3 0SBMSɠ0DDNԠAҠN DƠZBŲ A SASS MP+3 03SBMSɠ03ɯϠNSNԠA DƠZBŲ3 A SASS MP+3 00SBMSɠ00AGNԠS DƠZBŲ0 A SASS MP+3 0SBMSɠ0DDNԠDABŠNS DƠZBŲ H05SBMSGìɠ̠PA DƠZBM5BASàɯϠSMP MPZBϬɠUNϠA ZBɷ0NPN̠AD ƠNPUNƠNPS NA MPZB0 ZBŲ0ASà00PS(ԩDDNԠSԠAG ZBŲASà90PS(NԩDDNԠDSABŠNS ZBŲASà00PS(ԩDDNԠAҠN̯ ZBŲ3ASà03PS(ԩDDNԠAҠ-ϠNS ZBMASàH0PSSPSԠ(ԦNԩUN ZBM5ASà0H05B-ϠMP SKP ZBDDƠ+ DƠZBS DƠZBS DƠZBS3 DƠZBS DƠZBS5 DƠZBS6 DƠZBS DƠZBS3 DƠZBS3 DƠZBS33 DƠZBS DƠZBS DƠZBS5 DƠZBS5 DƠZBS53 DƠZBS6 DƠZBS6 DƠZBS63 DƠZBS6 DƠZBS65 DƠZBS66 DƠZBS DƠZBS Dà- ZNDU ^HDBASŠPAGŠNKSANDNSANS G6B Ԡ0003DSN G0B PDƠDPNҠϠɯϠNSUNS SPDƠSDPNҠϠSS HDMPDƠHDMDPNҠϠHADҠMSSAG SDAԠ3 SDBԠ0 G50B HDMDU ASàSAԠYDAGNSï DU DƠ.Sñ DƠSñ DƠSò DƠS3 DƠSô DƠSñ DƠSò DƠS3 DƠSô DƠS5 DƠS6 DƠSS DƠSS DƠSS3 DƠSS DƠSS5 DƠSS6 DƠSS Dà- SDU DƠS00 DƠS0 DƠS0 DƠS03 DƠS0 DƠS05 DƠS06 DƠS0 DƠSԱ0AGNMN Dà- SKP YU0 SױԠ SԠ000 DM30Dà-30 DM60Dà-60 .Ԡ .Dà BԠ .3Ԡ3 .MDà- .MDà- .M0Dà-0 .M0Dà-0 ƠԠ6 MPNP NҠNP HDMMNSUBUNS UPUԠAG.ϠY AYNP SASAVŠKPHŠHAA SSASSSԠAMMAND? MP+N-UPUԠAG .SñAYYS-DϠ ؠDASAVŠVŠHAA MPAYɠANDUN AƬAƠUPPҠH.S AND.MASKƠUNANDBS SZASԠAHAA SBAYYS-ANSҠ DASAVŠDϠHҠHA AND.MASKƠUPPҠBS SZASԠAHAA SBAYYS-ANSҠ MPؠN-UNϠA AYNP SñAYGVŠDAAϠMNA SòSàYà A S3SàYAԠ MP+5 NASZAANS MP-3 03=/SBMSɠPԠMŠU DƠMPNҠϠMSSAG SôàYàUNAD MPAYɠ SAVŠNP MASà003AGMŠUԯ PUԠSBNAP ɠNP DAUSSàGԠSԠD ANDB DBSBɠGԠSBNSUN SBAɠPUԠԠNAP DAɬɠGԠUNAN SA3BSAVŠԠҠSBNSUN SZɠADUSԠUN MPɬɠUN SBɠSB3B ABԠHK ABàNP DBS SBSԬ MPԬ MPABì SKP UPUԠDAAPANAB ƠH.SPS.UPUԠBHHAAS ƠH.SNG.USŠUPPҠASHAAҠP.UN PDPԠNP SBMPSAVŠPNҠASADDSS BSԠҠHAAS DAMPɠGԠHS.MAB PA.MSԠHŠMNA MPPDPԬɠYS-UNϠA SSASSN-SԠAMUYH.UPU MP+6N-SKPSUP Ҡ.3 AƬAƠ SABSԠUPUN DAMPɠ AND. SBAY NBSZBUPUԠAGAN? MP-YS SZMPN-MVŠϠNԠH. MPPDP+DϠ NPUԠϠAG.MY YANP SñAYUPUԠMMAND SòSàYàNABŠNPU S3SàYHKҠNPU MPSô DBSױƠPAҠSS SBSԬɠSҠBԠABԠNPU SS MPS3 DABAԠҠSHBUN SBMҬ DBSױ SBSԬ MP- H0SBMSGìɠ̠PAҠƠAB DƠYMPNҠϠMSSAG MP+3 SôAYGԠDAA SZYAADUSԠUNҠDAA DBMDSŠo*($UPUԠMMAND S5BY S6àYàUNAD MPYAɠUNϠA MDԠ0000NPUԠHUԠH MDԠ0000 YMASàH0NPUԠMNAD HDSS PUNHPAN S0U PPNP SBAB H030SBMSGHɠ̠PAҠϠUNPUNHN DƠPPHPNҠϠMSSAG DAPMDSԠY SBAYPUNHNY(ƠHP5 DBDM60 A SBAYUPUԠAD NBSZB MP-3 DA.3SԠSANGDAAϠA̠N'S PP̱SAMPҠPUNH SBAYUPUԠDAA SBҠAŠDAA SBAYUPUԠDAA DAMPMVŠ ADA.MNԠDAAPAN SSASSSHAԠNUGH CS*  12531-18003 1509 S 0122 012752/54 TTY & 12531 INTERFACE DIAGNOSTIC             H0101 $ MPPP̱NϠ-DϠԠAGAN DBDM60 A SBAYUPUԠA NBSZB MP-3 DAƠUPUԠUNNŠD SBAYҠSAY SBMSGHɠ̠PAҠϠUNPUNH DƠPPHPNҠϠMSSAG MPPPɠUNϠN̠PGAM ҠNP DAMPGԠDAA DB.MSԠUP SBàANUN BNA̠DAA0 ŬA BA SZàDAA MP-3 DAB MPҬɠUNϠA àNP PMDԠ0000 PPHASàH030UNYPUNHN Ԡ6 ASà5PSSUN PPHASàH05UNYPUNH Ԡ6 ASà5PSSUN SKP ADS S0U ԠNP SBAB H03SBMSGHɠ̠PAҠϠADAP DƠHPNҠϠMSSAG DA.3NAZŠDAAPAN SAMP DADM60MAؠAD SAN ZDAMDA̠ҠNPU SBYAGԠDAA MPԬɠNPUԠABD SZASԠDAA? MP̱YS SZNҠNϠNUGHAD MPZNϠYAGAN 03SBMSɠPԠNϠDAA DƠűPNҠϠMSSAG MPԬɠNϠN̠PGAM HASà6H03ADPUNHDAPŠNAD Ԡ6 ASà5PSSUN űASà03NϠDAADD SKP ̱PAMPYS-SԠ MPNYS DBMPGԠPD 033ASBMPԠ NSBҠYS-GԠADDAA SASAVԠSAVŠԠҠMPA DAMDA̠ҠNPU SBYAGԠNԠDAA MPؠNPUԠABD PASAVԠSDAAGD? MPNYS DBSAVԠGԠPD 033BSBMPԠ NDAMPYS-MV ADA.MϠNԠDAAPAN SZASSSHAԠA MPN3YS-HKҠA SAMPN DAMDA̠ҠNPU SBYAGԠNԠDAAD MPؠNPUԠABD MP̱HKDAA N3DBDM30 SBNҠ DAMD SBYA SBؠHKAҠҠNϠDAA SZASS MPN 03SBMSɠPԠDAANA DƠM0PNҠϠMSSAG MPؠ NSZNҠNUGHƠA MPN3+N ؠDAƠDϠUNNŠD SBAYҠSAY SBMSGHɠ̠PAҠϠUNADҠ DƠHPNҠϠMSSAG MPԬɠANDUNϠN SAVԠNP M0ASà503DAADDNAү HASà0H06UNADҠ Ԡ6 ASà5PSSUN SKP PԠDAA MNP SAASAVŠDAAAD SBSAVԠSAVŠPD SBMàNVԠPD DƠM DBAVŠDAAAD SBMàNVԠDAAAD DƠM3 DASAVԠVŠPDҠDSPAY DBAANDAUA SBMSɠPԠ DƠMPNҠϠMSSAG MPMɠUNҠNԠDAA MàNP DAMìɠV SAMAMSSAG SZMàAN BƬBƠMVŠϠUPPҠHA AŠG BS AB ҠSPNϠADDSPAŠAND60 SAMAɠPUԠԠNMSSAG SZMA SBMҠDϠNԠB SBM A B A ҠPDN SAMA SZMA SBM MPMì SKP MҠNP A B A AƬA B A ҠNN SAMA SZMA MPMҬ ANP MANP SPNϠASà0 NNϠASà00 PDNϠASà.0 MASà0033DAA Ԡ6 ASà0PD MASà05. Ԡ6 ASà0AUA M3ASà05. ASà0 SKP PNԠS S03U PԠNP DA.M00NSƠDAA SAN DAMDPNԠNYMMAND SBAY P̱DAƠUNNŠD SBAY DA.0SAԠHSPA P̲SAMPSAVŠDAA SBAYUPUԠ DAMPMVŠ NANԠHAA PAMPҠMAؠPNABŠHAA? SS MPP̲NϠNNUŠN SZNҠYS-A̠0NSDN? MPP̱N DAƠUNNŠD SBAY MPPԬ MPҠԠ0 .0Ԡ0 SKP U̠KYBADNPUԠS S0U KɠNP SBAB DAMDSԠҠUPU SBAY DAƠDϠAUNNŠD SBAY SBKҠA̠ DƠKHS DƠKPN DƠKP SBK NP DƠKP DƠKP SBK NP DƠKP3 DƠKP3 SBK NP DƠKP DƠKP SBK DƠKH5 DƠKP5 DƠKP5 SBK NP DƠKP6 DƠKP6 SBK DƠKH DƠKP DƠK÷ SB.K DƠKH DƠKP DƠKø KؠDAƠDϠAUNNŠD SBAY MPKɬɠUNϠN SKP KHASà0NPUԠHŠNG: Ԡ KPASà635690:- Ԡ KPASà5YUP Ԡ KP3ASà5ASDGHK̻ Ԡ KPASà5ZVBNM. Ԡ KH5Ԡ6 ASà3SH+ Ԡ KP5ASà6!"$'( Ԡ KP6ASà_+ 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS CLA CLEARR S-REG OTA SW HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * E640* * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLC CH,C CLEAR CONTROL AND FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP *,6  12539-18002 1830 S 0122 TIME BASE GENERATOR DG              H0101 h* CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * vSKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS Q* * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED BASE PAGE ORG 126B DSN OCT 103301 DIAGNOSTIC SERIAL NUMBER * ORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS HDMP DEF HDMD POINTER TO HEADER MESSAGE HDMX DEF HDMD+11 STDA OCT 3777 STDB OCT 0 * ORG 150B HDMD EQU * ASC 15,TBG DIAGNOSTIC, DSN = XXXXXX/ * IOID EQU * DEF SRT01 ;{ DEF SRT02 DEF RTCLX DEF SLG01 DEF SLG02 DEF SLG03 DEF SLG04 DEF SLG05 DEF SLG06 DEF SLG07 DEF SLG10 DEF SLG11 DEF SLG12 DEF SLG13 DEF SLG14 DEF SLG15 DEF STTC1 DEF STTC2 DEF TTCEX DEC -1 * SKP TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEC -1 * * PUT JSB IN TRAP CELL * TCJI NOP LDA USSC GET SELECT CODE AND B77 LDB JSBI GET INSTRUCTION STB A,I PUT IT IN TRAP CELL LDA TCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ TCJI ADJUST RETURN JMP TCJI,I RETURN * JSBI JSB 3B,I * PTIPM NOP LDA TSTN GET TEST NUMBER CPA LTSTN SKIP OUTPUT IF SAME TEST JMP PTIPM,I STA LTSTN NO - UPDATE TEST NUMBER AND B7 CONVERT IOR B60 NUMBER STA B LDA TSTN RAR,RAR RAR AND B7 IOR B60 ALF,ALF IOR B STA H030+5 JSB MSGC,I OUTPUT TEST IN PROGRESS DEF H030 JMP PTIPM,I * H030 ASC 13,H030 TEST XX IN PROGRESS/ * LTSTN NOP B7 OCT 7 B20 OCT 20 B60 OCT 60 B77 OCT 77 HED RELATIVE TIME CHECKS * TEST 1 0.1 MILLSEC * TST01 NOP JSB RTCL DO RELATIVE TIME CHECK OCT 0 TBG GATE TIME DEC 1 TIME OUT ALLOWANCE ASC 1,31 ERROR CODE JMP TST01,I SPC 2 * TEST 2 1.O MILLSEC * TST02 NOP JSB RTCL OCT 1 D2 DEC 2 ASC 1,32 JMP TST02,I SPC 2 * TEST 3 1O MILLSEC * TST03 NOP JSB RTCL OCT 2 DEC 20 ASC 1,33 JMP TST03,I J SPC 2 * TEST 4 1OO MILLSEC * TST04 NOP JSB RTCL GT3 OCT 3 DEC 200 ASC 1,34 JMP TST04,I SKP * RELATIVE TIME CHECK LOWER DECADES * RTCL NOP CCA SET 1 REP COUNT STA RC SAVE IT JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE JSB TCJI PUT JSB IN TRAP CELL DEF RTCLI RETURN POINT FOR TRAP CLA STA TMRR,I CLEAR IMMEDIATE INTP FLAG LDB RTCL,I GET GATE TIME ISZ RTCL SRT01 OTB CH GIVE IT TO GENERATOR SRT02 STC CH,C START GENERATOR STF INTP TURN ON INTERRUPTS NOP WAIT FOR IMMEDIATE INTERRUPT NOP NOP LDA RTCL,I GET TIME ALLOWANCE JSB TMRR,I GO WAIT ISZ RC ANY REPS JMP *-3 YES CLF INTP NO TURN OFF INTERRUPTS ISZ RTCL MOVE PAST TIME ALLOWANCE LDA RTCL,I GET MESSAGE NUMBER STA RTCE1+1 E0XX JSB ERMS,I REPORT ERROR DEF RTCE1 RTCLX CLC CH,C INSURE CARD IS OFF ISZ RTCL ADJUST RETURN JMP RTCL,I AND RETURN * RC NOP * RTCLI NOP CLF INTP TURN OFF INTPS ISZ RTCL MOVE PAST TIME ALLOWANCE LDA TMRR,I DID IT INTERRUPT IMMEDIATELY SZA JMP RTCLX NO OK LDA RTCL,I YES ADA ASC40 ADD ASCII 40 FOR SEC NUMBER STA RTCE2+1 PUT CODE IN PLACE EOYY JSB ERMS,I REPORT ERROR DEF RTCE2 JMP RTCLX NOW EXIT * * ASC40 OCT 400 RTCE2 ASC 15,E0YY CARD INTP'D IMMEDIATELY/ * RTCE1 ASC 15,E0XX CARD FAILED TO TIME OUT/ SKP * TEST 5 1 SEC (W2 1 MILLSEC) * TST05 NOP JSB RTCU DO RELATIVE TIME CHECK OCT 4 TBG GATE TIME DEC 2 TIME OUT ALLOWANCE ASC 1,35 JMP TST05,I SPC 2 * TEST 6 1O SEC (W2 1O MILLSEC) * TST06 NOP JSB RTCU OCT 5 DEC 20 ASC 1,36 JMP TST06,I SPC 2 * TEST 7 1OO SEC (W2 1OO MILLSEC)) * TST07 NOP JSB RTCU OCT 6 DEC 200 ASC 1,37 JMP TST07,I SPC 2 * TEST 1O 1OOO SEC (W2 1 SEC) * TST10 NOP JSB RTCU OCT 7 DEC 2000 ASC 1,40 JMP TST10,I SKP * RELATIVE TIME CHECK UPPER DECADES * RTCU NOP LDA RTCU SET RETURN ADDRESS STA RTCL LDA DM.E3 GET -1OOO LDB SW1 CHECK IF W1 OR W2 JSB SWRT,I CCA W2 SET MULTIPLER JMP RTCL+2 * SW1 OCT 2 DM.E3 DEC -1000 HED LOGIC CHECK * TEST 11 LOGIC CHECK * TST11 EQU * * LOGIC NOP JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE SLG01 STC CH CLEAR STATUS BIT SLG02 LIA CH CHECK ERROR FF IS RESET SZA,RSS ? JMP *+4 YES-SO CONTINUE E051 JSB ERMS,I NOT RESET REPORT ERROR DEF LGE51 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI0 RETURN POINT FOR TRAP CLB,INB SET 1 MS GATE TIME LDA D2 ALLOW 2 MS SLG03 OTB CH OUTPUT GATE TIME TO CARD SLG04 STC CH,C START STF INTP TURN ON INTERRUPTS JSB TMRR,I WAIT FOR IT CLF INTP NEVER INTERRUPTED E052 JSB ERMS,I REPORT ERROR DEF LGE52 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * LGI0 NOP INTERRUPTED CLF INTP TURN OFF INTERRUPTS SLG05 LIA CH CHECK ERROR FF IS STILL RESET SZA,RSS ? JMP *+4 YES - SO CONTINUE E053 JSB ERMS,I NOT RESET SO REPORT ERROR DEF LGE53 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * SLG06 SFC CH CHECK FLAG WAS SET JMP *+4 YES - CONTINUE E054 JSB ERMS,I NOT SET REPORT ERROR DEF LGE54 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI1 RETURN POINT FOR TRAP LDA D2 ALLOW TIME FOR SECOND INTP STF INTP TURN ON INTERRUPTS JSB TMRR,I WAIT FOR INT CLF INTP OK TURN OFF INTS SLG07 LIA CH CHECK ERROR SET CPA B20 JMP *+4 E056 JSB ERMS,I REPORT ERROR DEF LGE56 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST SKP * SLG10 STC CH CLEAR ERROR FLAG SLG11 LIA CH CHECK ERROR FF IS RESET SZA,RSS ? JMP *+4 YES - SO CONTINUE E057 JSB ERMS,I NOT RESET REPORT ERROR DEF LGE57 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * JSB TCJI PUT JSB IN TRAP CELL DEF LGI2 RETURN POINT FOR TRAP CLB,INB SLG12 STC CH,C SLG13 STF CH STF INTP TURN ON INTERRUPTS SLG14 OTB CH SHOULD STOP INTERRUPT LDA D2 JSB TMRR,I LGEX CLF INTP OK - TURN INTPS OFF SLG15 CLC CH,C INSURE CARD IS OFF JMP LOGIC,I RETURN TO CONTROL * * LGI1 NOP CLF INTP TURN INTERRUPTS OFF E055 JSB ERMS,I REPORT INT DEF LGE55 POINTER TO MESSAGE JMP LGEX DON'T BOTHER WITH REST OF TEST * * LGI2 NOP CLF INTP TURN INTERRUPTS OFF E060 JSB ERMS,I REPORT INT DEF LGE60 POINTER TO MESSAGE JMP LGEX EXIT TEST * * LGE51 ASC 13,E051 ERROR FF NOT RESET BY ASC 09, STC INSTRUCTION/ LGE52 ASC 15,E052 CARD FAILED TO TIME OUT/ LGE53 ASC 14,E053 ERROR FF SET AFTER ONLY ASC 08, ONE GATE TIME/ LGE54 ASC 14,E054 FLAG DID NOT SET AFTER ASC 05,TIME OUT/ LGE55 ASC 17,E055 INTP'D AFTER FIRST TIME OUT/ LGE56 ASC 16,E056 ERROR FF DID NOT SET AFTER ASC 12,TWICE THE TIME INTERVAL/ LGE57 ASC 13,E057 ERROR FF NOT RESET BY ASC 09, STC INSTRUCTION/ LGE60 ASC 12,E060 OTB INSTMRUCTION DID ASC 10, NOT STOP INTERRUPT/ HED TIME TOLERANCE CHECK * TEST 12 TIME TOLERANCE CHECK * TST12 EQU * * TTC NOP JSB PTIPM PRINT "TEST IN PROGRESS" MESSAGE JSB TCJI PUT JSB IN TRAP CELL DEF TTCI RETURN POINT FOR TRAP LDA M2 SET LOOP COUNT TO -2 FOR STA T12CT 21MX TESTING (SEE BELOW *) LDA D98 GET FIRST GATE ALLOWANCE R21MX CCB SET OUT OF TOLERANCE STB RC FLAG LDB GT3 GET TBG GATE TIME STTC1 OTB CH STTC2 STC CH,C START GENERATOR STF INTP TURN ON INTERRUPTS JSB TMRR,I GO WAIT ISZ RC INDICATE IN TOLERANCE NOP LDA D3 IN TOLERANCE WAIT TIME JSB TMRR,I ISZ RC INDICATE OUT OF TOLERANCE LDA D98 ALLOW MORE TIME JSB TMRR,I CLF INTP NO INT E063 JSB ERMS,I REPORT ERROR DEF TTCE3 POINTER TO MESSAGE TTCEX CLC CH,C TURN CARD OFF JMP TTC,I * * TTCI NOP INTERRUPTED CLF INTP TURN OFF INTERRUPTS LDB RC CHECK IF IN TOLERANCE SZB,RSS ? JMP TTCEX YES - SO EXIT TEST LDA CPTO NO, CHECK IF CPU IS A 21MX? AND S1512 (SEE BELOW *) CPA SW15 JMP E21MX YES, CPU IS A 21MX T21MX SSB,RSS NO, ERROR. CHECK IF INTPT JMP *+4 BEFORE OR AFTER EO61 JSB ERMS,I BEFORE, REPORT ERROR DEF TTCE1 POINTER TO MESSAGE JMP TTCEX E062 JSB ERMS,I AFTER, REPORT ERROR DEF TTCE2 POINTER TO MESSAGE JMP TTCEX * * SKP * * THIS ROUTINE WAS ADDED WITH DSN RELEASE 103301 TO * COMPENSATE THE TIMING TOLERANCE CHECK FOR CPU PER- * FORMANCE DECREASE IN 21MX M-SERIES COMPUTERS WHEN * 16K MEMORY CONTROLLERS ARE INSTALLED. THESE CONTROL- * LERS WILL ISSUE A MEMORY REFRESH EVERY 15 MICROSEC * (4K MEM CONTL. EVERY 31 MICROSEC) RESULTING IN A * INSTRUCE640TION EXECUTION SPEED DECREASE OF APPRX 2.5%. * THE DIAGN. CAN'T DETERMEN THE TYPE OF MEMORY IN- * STALLED AND THEREFORE WILL TRY FIRST WITH 98 MILLISEC * AND IF THAT FAILES WITH 95 MILLISEC AS A LOWER * WINDOW LIMIT IF AN M-SERIES COMPUTER IS USED. * E21MX ISZ T12CT CHECK IF COUNTER IS 0? JMP *+2 NO JMP T21MX YES, BOTH TRIES FAILED, ERROR LDA D95 SET LOWER WINDOW LIMIT TO JMP R21MX 95 MILLISEC & TRY ONCE MORE * * * * * D3 DEC 3 D98 DEC 98 D95 DEC 95 M2 OCT 177776 T12CT OCT 0 S1512 OCT 170000 SW15 OCT 100000 TTCE1 ASC 15,E061 INT BEFORE 98 MILLSECOND/ TTCE2 ASC 15,E062 INT AFTER 102 MILLSECOND/ TTCE3 ASC 09,E063 NO INTERRUPT/ * * * * * ORG ZCEND FWAA EQU * END ^6  12560-18001 1540 S 0122 12560A PLOTTER INTERFACE DIAGNOSTIC             H0101 ASMB,A,B,L,C HED CALCOMP PLOTTER DIAGNOSTIC (DSN 107000) ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES * 10 = SUPPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = SEE PSEUDO OPDESIGN * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * * G. PRESS RUN. II * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 035 * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST (SET A-REG) * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 106077 TRAP CELL HALT * SKP * CONFIGURATOR LINKAGE TABLE * A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * * JMP CFIG,I GO TO CONFIGURATION SECTION BSS 1 COD BSS 1 CONSOLE OUTPUT DRIVER LPD BSS 1 LINE PRINT1ER DRIVER CID BSS 1 CONSOLE INPUT DRIVER FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) TMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O DRIVERS CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE BSS 1 TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR D2AS BSS 1 DECIMAL TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 107000 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM SKP * EXECUTIVE CONTROL * * ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I, JMP ZUSR NO - GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA gZTSTA CLEAR TEST RUN FLAG SKP Pl ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST? JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UPDATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GEjT HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I ELA,CLE,ERA LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS ELB,CLE,ERB CLEAR IND BIT CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING ELB,CLE,ERB CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT SKP Pl ZMSG1 LDA ZMSG,I CHECK FOR MORE OUTPUT LDA A,I SSA,RSS ? JMP ZMSG2 NO ISZ ZMSG,I YES MOVE TO NEXT POINTER LDB ZMSG SUPPRESS MESSAGE? ADB Z.2 2 LDB B,I JSB SWRT,I JMP ZMSG1 YES LDA ZMSG,I NO GET NEXT POINTER LDB A,I II ELB,CLE,ERB CLA,1TCLE JSB FMTR,I JMP ZMSG1 TRY NEXT POINTER ZMSG2 ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB COD,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN SKP ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 0 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 0 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 1] ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 SKP * GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP P^ STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RE:TURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * * ZJSBI JSB 3B,I JSB INSTRUCTION * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS LDB USSC CHECK FOR 563 565 AND RBL ENGLISH OR METRIC LDA INIS INITIALIZE COUNT JSB MP2.5 STA INIC LDA SIZES SET LINE LENGTH JSB MP2.5 STA SIZE LDA DECS DECREASING SIZE COUNT JSB MP2.5 STA DEC LDA DASHS AND DASHES LENGTH JSB MP2.5 STA DASH HLT 74B ALLOW OPERATOR TO SET S-REG. JMP ZSTEX GO TO EXEC CONTROL SECTION * * MP2.5 NOP SLB,RSS LARGE PLOTTER? JMP *+5 NO STA MPX YES MPY BY 2.5 ALS,ALS (BY 4) ADA MPX (THEN ADD 1 MAKES 5) ARS (THEN DIVIDE BY 2 = 2.5) SSB,RSS METRIC? JMP MP2.5,I NO RETURN STA MPX YES MPY BY 2.5 AGAIN ALS,ALS ADA MPX  ARS JMP MP2.5,I * * MPX ABS 0 SKP * BASIC I/O TESTS * SC EQU 10B * TST00 EQU *  NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF SCSk ZBS22 CLF SC ZBS23 SFC SCS: RSS JMP *+3 3H E005 JSB ERMS,I E005 CLF SC-SFC SC ERROR DEF ZBE05 ZBS24 SFS SC JMP *+3 E006 JSB ERMS,I E006 CLF SC-SFS SC ERROR DEF ZBE06 ZBS25 STF SC ZBS26 SFC SC JMP *+g3 E007 JSB ERMS,I E007 STF SC-SFC SC ERROR DEF ZBE07 ZBS27 SFS SC RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF SC-SFS SC ERROR DEF ZBE10 0 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF SC-SFC SC ERROR/ ZBE06 ASC 13,E006 CLF SC-SFS SC ERROR/ ZBE07 ASC 13,E007 STF SC-SFC SC ERROR/ ZBE10 ASC 13,E010 STF SC-SFS SC ERROR/ SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF SC SET THE FLAG ZBS32 STC SC SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TO INTERRUPT NOP ZBS33 CLF SC RESET SC FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * SELECT CODE SCREEN TEST * * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE SC? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF SC CLEAR SELECT CODE FLAG Z.STF STF SC EXECUTE STF SC INSTRUCTION ZBS42 SFC SC TEST SELECT CODE FLAG JMP ZB41 Z.CLF CLF SC CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT SELECT CODE * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT SC FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA 640 SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC SC TURN ON 6  12560-18002 1540 S 0122 12560A PLOTTER INTERFACE DIAGNOSTIC             H0101 ZBS52 STF SC CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCUR DEF *+1 * HERE JSB *+1,I * * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 4 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF SC TURN OFF SC FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTIONS COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP P CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 SKP * CLC SC AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 1~ ZBS61 STC SC SET SC CONTROL ZBS62 STF SC SET SC FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC SC CLEAR SC CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF SC CLEAR SC FLAG ZBS65 STC SC SET SC CONTROL ZBS66 STF SC SET SC FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC SC ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC SC ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF SC CLEAR SC FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF INTPS ZBS72 SFS SC CHECK SELECT CODE FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 3H E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR ` SLA,RSS JMP *+3 3H E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DISABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 5] DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * * ZCEND EQU * SKP ORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS LIST HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 17 STDB OCT 0 * ORG 150B HDMS EQU * ASC 18,CALCOMP PLOTTER DIAGNOSTIC/ * IOID EQU * DEF PEN01 DEF PEN02 DEF PEN03 DEC -1 * TSTD EQU * DEF TST00 BASIC I/O DEF TST01 TIME CHECKS DEF TST02 OCTAGON DEF TST03 OVERDRAW DEF TST04 PSEUDO OPDESIGN DEC -1 SKP * TIME CHECKS (ONE SHOTS) * 2.9/4.5 MS AND 60 MS * * TST01 EQU * *f * TMCK NOP CLA OUTPUT A NULL JSB PEN TO GET SHORTER ONE SHOT SSA ERROR? JMP TMCK0 YES TRY 60 ADA N5 ( LDB USSC CHECK IF LARGE PLOTTER SSB ADA N3 YES THEN LONGER TIME SSA,RSS GREATER THAN 2.5(4.0) JMP *+4 YES E031 JSB ERMS,I NO REPORT ERROR DEF MS031 JMP TMCK0 DO OTHER ONE SHOT ADA N3 SSA OVER 3.5(5.0)? JMP *+3 E032 JSB ERMS,I YES REPORT ERROR DEF MS032 TMCK0 LDA PENDN OUTPUT PEN DOWN JSB PEN SSA ERROR? JMP TMCK,I YES RETURN ADA N100 SSA,RSS GREATER THAN 50 MS? JMP *+4 YES E033 JSB ERMS,I NO REPORT ERROR DEF MS033 JMP TMCK,I RETURN ADA N40 SSA OVER 70 MS? JMP TMCK,I NO OK RETURN E034 JSB ERMS,I YES REPORT ERROR DEF MS034 JMP TMCK,I RETURN TO EXEC * N5 DEC -5 N3 DEC -3 N100 DEC -100 N40 DEC -40 MS031 ASC 18,E031 2.9(4.5)MS ONE SHOT TOO SHORT/ MS032 ASC 17,E032 2.9(4.5)MS ONE SHOT TOO LONG/ MS033 ASC 15,E033 60MS ONE SHOT TOO SHORT/ MS034 ASC 15,E034 60MS ONE SHOT TOO LONG/ SKP * OCTAGON PATTERN * DRAWS DECREASING CONCENTRIC OCTAGONS * TST02 EQU * * OCT NOP LDA PENUP JSB PEN LIFT PEN AND MOVE LDA VUHR UP AND RIGHT LDB INIC USE INITIALIZE COUNT JSB PLOT GO TO STARTING POINT LDA HL MOVE IN JUST A LITTLE LDB D10 TO AVOID PERFORATION JSB PLOT LDA SIZE GET STARTING SIZE STA LINE SAVE LINE LENGTH OCTL CCB,RSS DRAW A SOLID LINE LDB ALT THEN A DOTTED LINE STB TYPE JSB DRAW DO IT LDA PENUP JSB PEN N LDA HL MOVE PEN IN LDB DEC BLS JSB PLOT LDA VDHL AND DOWN TO LDB DEC JSB PLOT NEXT OCTAGON LDA DEC ALS CMA,INA ADA LINE DECREASE OCTAGON SIZE STA LINE SZA,RSS FINISHED? JMP OCT,I YES EXIT LDB TYPE CHANGE LINE TYPE CPB ALT IF PREVIOUS WAS DOTED JMP OCTL USE SOLID INB,SZB IF PREVIOUS WAS SOLID JMP OCTL+1 JMP OCTL+2 USE NO LINE SKP * OCTAGON PATTERN * DRAWS DECREASING OCTAGONS * WITH THE SAME ORIGIN * TST03 EQU * * OCTX NOP P LDA PENUP JSB PEN LIFT PEN AND MOVE LDA VUHR UP AND RIGHT LDB INIC USE INITIALIZE COUNT JSB PLOT GO TO STARTING POINT LDA HL MOVE IN JUST A LITTLE LDB D10 TO AVOID PERFORATION JSB PLOT LDA SIZE GET STARTING SIZE STA LINE SAVE LINE LENGTH OCTXL CCB DRAW A SOLID LINE JSB DRAW DO IT LDA DEC ALS CMA,INA ADA LINE DECREASE OCTAGON SIZE STA LINE SZA DONE? JMP OCTXL NO LDA PENUP YES LIFT PEN AND EXIT JSB PEN JMP OCTX,I SKP * PSEUDO OPDESIGN * SWR * BIT MEANING * 0 DRUM DOWN +X AXIS (VERTICAL UP) * 1 DRUM UP -X AXIS (VERTICAL DOWN) * 2 CARRIAGE LEFT +Y AXIS (HORIZONTAL LEFT) * 3 CARRIAGE RIGHT -Y AXIS (HORIZONTAL RIGHT) * 4 PEN UP * 5 PEN DOWN * 6 LOOP ON SELECTION * TST04 EQU * * OPDSN NOP P JSB MSGC,I TELL OPERATOR TO DEF MS035 MAKE SWR SELECTION PRESS RUN H035 HLT 35B WAIT FOR OPERATOR LDB .177 CHECK IF ANY SELECTION JSB SWRT,I ? RSS JMP OPDSN,I NO SELECTION EXIT LDA B AND .77 ISOLATE COMMANDS JSB PEN DO IT(THEM) LDB BIT6 CHECK FOR LOOP JSB SWRT,I JMP *-5 YES JMP H035 NO HALT AGAIN * MS035 ASC 19,H035 MAKE SWR SELECTION FOR OPDESIGN/ .177 OCT 177 .77 OCT 77 BIT6 OCT 100 SKP * THIS ROUTINE DRAWS AN OCTAGON * * A-REG. = SIDE "LINE" LENGTH * B-REG. = LINE TYPE 0= NO LINE * -1= SOLID LINE * 52525= -------- * DRAW NOP STA DRAWC SAVE LENGTH STB DRAWT AND TYPE OF LINE JSB DRAWL DRAW ONE LINE VD OCT 2 VERTICAL DOWN JSB DRAWL VDHL OCT 6 VERTICAL DOWN + HORIZONTAL LEFT JSB DRAWL HL OCT 4 HORIZONTAL LEFT JSB DRAWL HLVU OCT 5 HORIZONTAL LEFT + VERTICAL UP JSB DRAWL VU OCT 1 VERTICAL UP JSB DRAWL VUHR OCT 11 VERTICAL UP + HORIZONTAL RIGHT JSB DRAWL HR OCT 10 HORIZONTAL RIGHT JSB DRAWL HRVD OCT 12 HORIZONTAL RIGHT + VERTICAL DOWN JMP DRAW,I SKP * THIS ROUTINE DRAWS ONE LINE OF * AN OCTAGON. * * JSB DRAWL * OCT XX DIRECTION * * DRAWL NOP LDA DRAWC GET LENGTH CMA,INA MAKE NEGATIVE LDB DRAWT GET TYPE STA WORK SAVE LENGTH AND STB WORK+1 TYPE IN WORK AREA DRWL0 LDA PENUP START WITH PEN UP SLB SHOULD IT BE DOWN? LDA PENDN YES JSB PEN DRWL1 LDA DRAWL,I GET DIRECTION OF LINE LDB DASH AND DASH LENGTH JSB PLOT DRAW IT LDA WORK ADA DASH SUBTRACT FROM TOTAL LENGTH LDB WORK+1 ROTATE DASH FLAG BIT RBR SSA DONE WITH LINE? JMP *+3 NO DRAW ANOTHER PART ISZ DRAWL YES - ADJUST RETURN JMP DRAWL,I AND RETURN STA WORK SAVE LENGTH STB WORK+1 AND TYPE SZB,RSS IF NO LINE DONT CHANGE PEN JMP DRWL1 CPB .M1 IF SOLID LINE DONT CHANGE PEN JMP DRWL1 JMP DRWL0 * * PLOT NOP STA PLOTC CMB,INB MAKE LINE LET*($NGTH NEG. STB PLOTM SAVE IT JSB PEN DRAW DOT LDA PLOTC RESTORE COMMAND ISZ PLOTM DONE ALL? JMP *-3 NO JMP PLOT,I YES RETURN SKP * OUTPUT ROUTINE * * LDA CMD * JSB PEN * PEN NOP STA PENC SAVE COMMAND LDB BIT9 CHECK FOR ABORT JSB SWRT,I JMP EXRT,I YES - RETURN TO EXEC LDA PENIJ PUT "JSB" IN PEN01 STA SC TRAP CELL LDB PENC GET COMMAND LDA PENT AND TIME STF INTP TURN ON INTERRUPTS PEN02 OTB SC OUTPUT COMMAND PEN03 STC SC,C START ONE-SHOT JSB TMRR,I WAIT FOR COMPLETION CLF INTP TOO LONG LDA PENC GET COMMAND FOR DISPLAY E030 JSB ERMS,I REPORT ERROR DEF MS030 FLAG DID NOT RESPOND CCA INDICATE ERROR CLB JMP PEN,I * PENI NOP INTERRUPTED CLF INTP TURN OFF INTERRUPTS ADA PENT CALCULATE ALS TIME WITHIN CMB,INB .5 MILL SEC BLS ADB TMC SSB INA JMP PEN,I SKP MS030 ASC 11,E030 FLAG DID NOT SET/ PENIJ JSB PENI PENT DEC 100 0 PENUP OCT 20 PENDN OCT 40 BIT9 OCT 1000 ALT OCT 125252 D10 DEC 10 .M1 DEC -1 INIS DEC 1300 SMALL PLOTTER INITIALIZE COUNT SIZES DEC 360 SMALL PLTR STARTING LINE LENGTH DECS DEC 20 DASHS DEC 8 INIC ABS 0 SIZE ABS 0 DEC ABS 0 DASH ABS 0 TYPE ABS 0 0 DRAWC ABS 0 DRAWT ABS 0 LINE ABS 0 WORK ABS 0 ABS 0 PLOTC ABS 0 PLOTM ABS 0 PENC ABS 0 FWAA EQU ZCEND END *  12597-18001 1725 S 0122 TAPE READER PUNCH DIAGNOSTIC             H0101 ,ASMB,A,B,L,C HED PAPER TAPE READER PUNCH DIAGNOSTIC ORG 0 DSN=146200 JUNE 2, 1977 REV.1725 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRA%M ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLEt A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP SETUP CHECK FOR PROPER CONFIGURATION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL OCT 146200 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * HED POINTERS AND TABLES * * * BASE PAGE POINTERS AND TABLES * * IOIP DEF IODP POINTER TO I/O INST TABLE TSTP DEF TSTD POINTER TO TEST # TABLE STDA OCT 177 POINTER TO STANDARD TESTS STDB OCT 0 DEFAULT TEST HDMP DEF HDMS POINTER TO HEADER MESSAGE * * * HDMS EQU * OCT 6412 ASC 19,PAPER TAPE READER AND PUNCH DIAGNOSTIC ASC 6, DSN XXXXXX/ * * * * PUNCH INSTRUCTION POINTER TABLE  SPC 1 IODP DEF PUOTB DEF PUSTC DEF PUSFS DEF TTYCW DEF PULIB DEF PUCLC DEF T5PSC DEF INTPU DEF PUMTB DEF T5PI1 DEF T5PI2 DEF PIOA1 DEF PIOA2 DEF PIOA3 DEF PIOA4 DEF PIOA5 DEF PIOA6 DEF PIOA7 DEF PIOA8 DEC -1 SPC 1 * TEST SEQUENCE POINTER TABLE SPC 1 TSTD DEF TST.0 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEF TST14 DEC -1 SPC 4 SPC 1 * READER INSTRUCTION POINTER TABLE SPC 1 IODR DEF RDSTC DEF RDSFS DEF RDLIA DEF RDRLA DEF T5RSC DEF T5RDR DEF RDRSC DEF RDVR1 DEF RDVR2 DEF RIOA1 DEF RIOA2 DEF RIOA3 DEF RSRSC DEC -1 * * * * * SPC 1 * LINKS SPC 1 CONF DEF CONFG SO.SO DEF PINTR RDLNK DEF RDDVR BIT05 OCT 40 PULNK OCT 0 RRLNK OCT 0 X.CFG DEF IODR XZISC DEF ZISC XSTEX DEF ZSTEX .TST0 DEF TST00 * * * HED COMMON SUBROUTINES * SYNC NOP LDA ND100 INITIALIZE STA SNCTR XTHRU 100 HRSYN JSB READ RETURN W. 1. BYTE READ SZA,RSS LEADER GONE? JMP *+3 NO - DO ANXTHRU STA FIBYT STORE FIRST BYTE AWAY JMP SYNC,I YES, EXIT ISZ SNCTR TOO MANY TIMES? JMP HRSYN NO, TRY AGAIN JSB ERMS,I YES, DIE DEF SYTOM TELL OPPERATOR SYNC XTHRU JMP SYNC+1 DO AGAIN * ND100 DEC -1000 SNCTR OCT 0 FIBYT OCT 0 SPC 1 * SPC 1 LEADR NOP OUTPUT ALL ZEROS LEADER LDB ND060 INITIALIZE STB SPAD2 60 COUNTER CLB OUTPUT A 60 JSB PUDVR ZERO LEADER ISZ SPAD2 4E JMP *-2 CMB OUTPUT AN ALL JSB PUDVR ONES SYNC CHARACTER JMP LEADR,I EXIT * ND060 DEC -60 SPAD2 OCT 0 D22 DEC 22 * * * * * SKP * SPC 1 PUDVR NOP PUNCH ROUTINE (SIO) STB SPAD3 SAVE (BREG) LDA USSC CHECK IF TAPE LOOP MUST BE RAL PUNCHED ON A TTY. SSA JMP TTYCW-3 YES, OMIT PUNCH STATUS CHECK PULIB LIB PUNCH CHECK PUNCH SZB STATUS JSB LTSRP LDB PUTMC INITIALIZE STB SPAD4 XTHRU COUNTER LDB PUTMC+1 TTYCW OTB PUNCH PUT TTY INTO OUTPUT MODE LDB SPAD3 REGAIN PUOTB OTB PUNCH DATA & OUTPUT PUSTC STC PUNCH,C HIT THE PUNCH PUSFS SFS PUNCH READY TO JMP *+3 RESUME? PUCLC CLC PUNCH DISALLOW PUINT JMP PUDVR,I YES, EXIT ISZ SPAD4 NO, BUMP XTHRU COUNTER JMP PUSFS AND REITERATE CLF 0 INTSYS OFF FOR TCP JSB ERMS,I BUMPED OUT, SOMETHING IS DEF PUTMO WRONG, REPORT TO TCP JMP PUDVR,I * PUNCH EQU 00B SPAD3 OCT 0 SPAD4 OCT 0 PUTMC OCT 100000 OCT 110000 * * * * * SKP * LTSRP NOP LOW TAPE STATUS REPORT JSB ERMS,I DEF LTMSG JMP LTSRP,I SPC 1 * SPC 1 READ NOP READ ROUTINE (SIO) LDA PUTMC INITIALIZE THE TIMES STA SPADL THRU THE SFS ROUTINE RDSTC STC RDR,C HIT THE READER RDSFS SFS RDR READY TO READ? JMP CNTR1 RUN THRU THE DROP OUT COUNTER RDLIA LIA RDR GOTCHA JMP READ,I EXIT WITH A = READ CHARACTER CNTR1 ISZ SPADL INCREMENT TIMES THRU COUNTER JMP RDSFS NO DROP THRU YET CLF 0 JSB ERMS,I DROP THRU HAS OCCURRED, REPORT DEF RDTOM TO TCP VIA ERMS JMP READ,I BACK TO ROUTINE * RDR EQU 00B SPADL OCT 0 SPC 1 * SPC 1 RESYN NOP RE-SYNC IF NECESSARY JSB SYNC MAKE SURE RESYNC IS NECESSARY JSB READ ENTIRE 1. BLOCK IS PASSED SZA UNTIL LEADER IS REACHED JMP *-2 AGAIN. NO STILL IN BLOCK JSB READ YES, CHECK FOR 2. FEEDHOLE SZA JMP *-2 JMP RESYN,I * * * * * SKP * PUSSR NOP PUNCH START-STOP ROUTINE ISZ DOYET DO IT YET? JMP PUSSR,I NO, EXIT JSB STPIT DO A STOPIT LDB NXTMR,I NEXT STB DOYET TIMES - CONSTANT ISZ NXTMR ISZ XTHRU XTHRU? JMP PUSSR,I NO, EXIT JSB PUSET YES, RESET EVERYTHING JMP PUSSR,I AND EXIT SPC 1 * SPC 1 PUSET NOP LDB NXTMC INITIALIZE STB DOYET DOYET LDB NDN.8 RESET STB XTHRU XTHRU CTR LDB NXTM1 RESET STB NXTMR TIMER JMP PUSET,I * NDN.8 DEC -8 NXTM1 DEF NXTMC SPC 1 * SPC 1 STPIT NOP STA STPAD SAVE (AREG) LDA OCTCC GET TC JSB TMRR,I EXECUTES 100 MS DELAY LDA STPAD RESTART (AREG) JMP STPIT,I AND EXIT * STPAD OCT 0 OCTCC DEC 100 DOYET OCT 0 NXTMC DEC -5 DEC -22 DEC -13 DEC -35 DEC -17 DEC -26 DEC -4 DEC -32 NXTMR DEF NXTMC XTHRU OCT 0 * * * * * SKP RSCHK NOP INSURE READER PRESENCE LDA RDCHN GET READER SELECT CODE SZA ZERO? JMP RSCHK,I NO, OK TO EXECUTE TEST LDA RSCHK YES, GET RETURN ADDRESS ADA XNEG2 LDA A,I AND EXIT FROM THE TEST JMP A,I THAT CALLED THIS ROUTINE. RDCHN OCT 0 SPC 1 * SPC 1 PSCHK NOP INSURE PUNCH PRESENCE LDA PUCHN GET PUNCH SELECT CODE SZA IS THE PUNCH PRESENT? JMP PSCHK,I YES, GO AND EXECUTE TEST LDA PSCHK NO, RETFL ADA XNEG2 X LDA A,I ADDRESS, AND JMP A,I EXIT * PUCHN OCT 0 XNEG2 DEC -2 SPC 1 * SPC 1 BPRCK NOP BOTH PUNCH AND READER CHECK LDA RDCHN GET READER SELECT CODE SZA,RSS PRESENT? JMP *+4 NO, GO SET UP RETURN ADDRESS LDA PUCHN YES, NOW CHECK FOR PUNCH SZA PRESENT? JMP BPRCK,I YES, BOTH PRESENT, EXECUTE TEST LDA BPRCK NO, GET RETURN JMP RETFL ADDRESS AND EXIT * * * * * SKP SETUP NOP CLC INTP,C OFF THE INTERRUPT SYSTEM LIA SW GET SWITCH REGISTER CONTENTS STA USSC SAVE (SWR) FOR TCP ALF,ALF POSITION THE READER SELECT CODE RAL,RAL FOR ISOLATION. AND XM.77 MASK OFF ALL BUT READER S.C. STA RDCHN SZA IS SWR VALUE GREATER THAN ZERO? JSB CONF,I YES, GO TO CONFIGURATION ROUTINE LIA SW NO, NOW CHECK THE PUNCH AND XM.77 ELIMINATE ALL SAVE THE PUNCH SC STA PUCHN SZA IS PUNCH SC PRESENT IN THE SWR? JMP CFIG,I YES, DO CONFIGURATION ROUTINE LIA SW NO, INSURE READER ALF,ALF IS PRESENT TO PREVENT RAL,RAL THE DIAGNOSTIC BEING CONFIGURED AND XM.77 NO READER OR NO PUNCH SZA,RSS IS THERE A READER? JMP CONF,I NO, CRASH AND TRY AGAIN CLA CLEAR S-REG OTA SW HLT 74B YES, GO AHEAD AFTER THE HALT JMP XSTEX,I AND DO THE DIAGNOSTIC * XM.77 OCT 77 * * * SPC 5 TST.0 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGC,I YES, TELL THE OPERATOR DEF PIOMS JSB .TST0,I DO TST00 (BIO ON PUNCH) JMP TST.0,I EXIT * * * * * SKP MKBUF NOP MAKE ERROR MESSAGE BUFFER STA SPADD SAVE THE STB SPADE A AND B REGISTERS LDA NEG.4 INIT^IALIZE FOUR TIMES THRU STA SPADG THIS ROUTINE COUNTER MKBF1 LDA SPADD FOR NEXT TIME THRU ROUTINE AND MASK1 LEAVE ONLY BIT 0 STA B SAVE BIT 0 IN THE B REGISTER LDA SPADD GET THE WORD AGAIN RAR POSITION NEXT BIT IN BIT 0 STA SPADF STORE IN TEMPORARY SCRATCH PAD RAR POSITION FOR NEXT TIME THRU STA SPADD AND STORE BACK IN SCRATCH PAD LDA SPADF GET WORD BACK FROM TEMP SPAD AND MASK1 MASK OFF BITS 15 THRU 1 ALF,ALF (AREG0-7)-(AREG8-15) IOR B PUT THE TWO BITS TOGETHER IOR NUMSK ADD THE ASCII NUMBER MASK STA SPADE,I STORE IN THE OUTPUT BUFFER LDA SPADE DECREMENT THE CMA,INA POINTER TO THE CMA OUTPUT BUFFER STA SPADE ADDRESS ISZ SPADG COUNT 4 TIMES THRU ROUTINE JMP MKBF1 NOT FOURTH TIME, DO AGAIN JMP MKBUF,I EXIT, THE BUFFER IS COMPLETE * SPADD BSS 1 SCRATCH SPADE BSS 1 PAD REGISTERS SPADF BSS 1 D THRU G FOR SPADG BSS 1 THIS ROUTINE MASK1 OCT 1 BIT STRIPPER NEG.4 DEC -4 8 BIT COUNTER CONSTANT NUMSK OCT 30060 ASCII IOR MASK * ABBGM ASC 2,E040 ASC 3, BAD= ARB76 OCT 30060 AREGISTER BITS 7&6 ARB54 OCT 30060 AR B 5&4 ARB32 OCT 30060 AR B 3&2 ARB10 OCT 30060 AR B 1&0 OCT 20040 SPACE-SPACE ASC 3,GOOD= BRB76 OCT 30060 BREGISTER BITS 7&6 BRB54 OCT 30060 5&4 BRB32 OCT 30060 3&2 BRB10 OCT 30060 1&0 OCT 27400 ASCII/ M.377 OCT 377 NEG.1 DEC -1 ND008 DEC -8 .BIT1 OCT 2 SPADX OCT 0 TEMP4 OCT 0 HED MESSAGES * SPC 1 PUTMO ASC 10,E031 PUNCH TIME OUT/ SPC 1 P.TOM ASC 17,E032 PUNCH ROUTINE NOT COMPLETED SPC 1 LTMSG ASC 11,E033 LOW TAPE SUPPLY/ SPC 3 * SPC 1 RDTOM ASC 11,E041 READER TIME OUT/ SPC 1 OVRUN ASC 13,E042 MISSING SYNC CHARTR/ SPC 1 RSMSG ASC 6,H043 RESYNC/ SPC 1 IRDTO ASC 18,E044 READER INTRPT DRIVER TIME OUT/ SPC 3 SYTOM ASC 16,E045 SYNC CHARTR NOT FOUND AFTER ASC 11, 1000 (OCTAL) CHARTRS/ SPC 1 * SPC 1 PIOMS ASC 10,H050 BI-O ON PUNCH/ SPC 1 T3MSG ASC 15,H051 ALL CHARTR COMBINATIONS, ASC 5,PUNCH ONLY OCT 6412 ASC 14, TURN PUNCH ON, PRESS RUN/ SPC 1 T4MSS ASC 15,H052 ALL CHARTR COMBINATIONS, ASC 3,VERIFY OCT 6412 ASC 14, TEAR TAPE AT PUNCH, PLACE ASC 11, IN READER, PRESS RUN/ SPC 1 INMS1 ASC 18,H054 PLACE LOOP IN READER-PRESS RUN OCT 6412 ASC 16, TO START READ, SET BIT0 TO 1 OCT 6412 ASC 16, TO EXIT TEST, SET BIT0 TO 0/ SPC 1 T1MSG ASC 10,H055 BI-O ON READER/ SPC 1 SKP POMSG ASC 22,H056 TURN PUNCH ON, PRESS RUN. PUNCH ROUTINE OCT 6412 ASC 21, WILL START. LOAD THE TAPE BEING PUNCHED OCT 6412 ASC 10, INTO THE READER. OCT 6412 ASC 16, TO START READ, SET BIT0 TO 1 OCT 6412 ASC 13, TO EXIT, SET BIT0 TO 0/ SPC 1 T5M1H ASC 14,H057 TO COMPLETE, TEAR TAPE, ASC 6, PRESS RUN/ SPC 1 T7MSG ASC 18,H060 TO MAKE LOOP, PUNCH ON AND RUN/ SPC 1 INITM ASC 9,H061 RESET BIT 0/ * T10MS ASC 21,H062 OUTPUT BIT0-7 TO PUNCH. TO START SET OCT 6412 ASC 21, BIT13, PRESS RUN. TO EXIT CLEAR BIT13/ * RSTM1 ASC 15,H063 READER SPEED TEST. PLACE ASC 7,LOOP IN READER OCT 6412 ASC 14, BIT 5=0 FOR 2748-58, BIT ASC 13,5=1 FOR 2737. PRESS RUN./ * RMXEM ASC 11,E064 2737 SPEED SLOW/ * HPREM ASC 12,E065 2748-58 SPEED SLOW/ * RSEND ASC 11,H066 TEST 11 COMPLETE/ * PSTM1 ASC 11,H100 PUNCH SPEED TEST. OCT 6412 ASC 15, BIT 6=0 FOR 2895 OR BIT 6=1 ASC 10, FOR 2753-PRESSp<:6 RUN/ * TLYEM ASC 11,E101 2753 SPEED SLOW/ * FCTEM ASC 11,E102 2895 SPEED SLOW/ * PSEND ASC 11,H103 TEST 12 COMPLETE/ * * * MSEND EQU * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF, CLEAR FLAG LDA DSNL ADD DSN TO DIAGN HEADER MESSAGE, CCE LOAD DSN, (LOWER BYTE) LDB HDMP DETERMEN STORAGE LOCATION ADB D22 OF CONVERTED DSN & JSB O2AS,I GO TO OCTAL-ASCII CONVER. JSB MSGC,I OUTPUT HEADER MESSAGE DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT ZEXCZ LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LIA SW READ S-REG AND CLEAR AND ZSWM9 BIT 9 OTA SW LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM CCA SET TEST NUMBER STA TSTN TO -1 STA ZCFTT AND STORE CLA STA ZTSTA CLEAR TEST RUN FLAG * SKP <  12597-18002 1725 S 0122 TAPE READER PUNCH DIAGNOSTIC             H0101 -ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXCZ DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN 2PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR LDA ZSW9 CHECK IF EXECUTION OF TEST JSB SWRT,I SHALL BE ABORTED JMP ZEXRT YES, ABORT JMP ZERMS,I NO, RETURN TO CALLER * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 ZSWM9 OCT 176777 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CEu:LL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP SETUP TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS CLA CLEAR S-REG OTA SW HLT 74B ALLOW OPERATOR TO CHANGE SWITCH JMP ZSTEX GO TO EXEC CONTROL SECTION * SKP HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,Ip E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * SKP * SELECT CODE SCREEN TEST * ZBIO3 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA ZIOSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO4 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBgE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * INTERRUPT CONTROL * ZBIO4 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO5 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF 70.*ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP 1 0  12597-18003 1725 S 0122 TAPE READER PUNCH DIAGNOSTIC             H0101 .ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * HED CONFIGURE THE READER INSTRUCTIONS CONFG NOP CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODES ALF,ALF POSITION RAL,RAL FOR READER SELECT CODE AND Z.77 AND CONFIGURE LDB A CMB,INB ADB Z.7 SSB JMP *+3 HLT 73B JMP SETUP CRASH $$$***$$$ TRY AGAIN LDB XCONF JSB ZISC JMP CONFG,I EXIT BACK TO CALLE * XCONF DEF IODR * * * * * * * * * * HED BASIC I/O ON READER * * * TEST 01 * * THE MESSAGE "H055 B-IO ON READER" IS * PRINTED ON THE CONSOLE * * * NEXT, TCP IS CALLED, AND RUNS BASIC * I/O AGAIN, BUT THIS TIME, USING THE * SELECT CODE OF THE READER INTERFACE * BOARD. * * * OTHER THAN THE -H055 B-IO ON READER * MESSAGE, INFORMATION MESSAGES AND * ERROR HALTS AND MESSAGES ARE THE SAME * AS THOSE USED TO DESCRIBE ANY ERROR * DETECTED IN TEST 0. * * * * * SPC 5 TST01 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFIGURATION JSB MSGC,I REPORT TO CONSOLE DEF T1MSG B-IO ON READER LDA RDCHN GET READER SELECT CODE JSB ZBIO JMP TST01,I BACK TO EXEC * * * * * HED PUNCH ALL CHARACTER COMBINITIONS * * * TEST 02 * * THE IDENTIFICATION MESSAGE "H051 ALL * CHARACTER COMBINATIONS - PUNCH ONLY" * IS PRINTED ON THE CONSOLE. * * WHEN RUN IS PRESSED, A 60 CHARACTER * AL$L ZEROS LEADER IS PUNCHED. NEXT, * AN ALL ONES CHARACTER IS PUNCHED, * REVERSED E.G. BIT0 BECOMES BIT7, BIT1 * BECOMES BIT6 ETC, AND PUNCHED AGAIN * THEN THE ORIGINAL CHARACTER IS * DECREMENTED AND OUTPUT TO THE PUNCH * AGAIN. THIS CONTINUES UNTIL AN ALL * ZEROS CHARACTER IS OUTPUT. THEN * THE CHARACTER IS INCREMENTED AND * REVERSED UNTIL THE ORIGINAL ALL ONES * CHARACTER IS AGAIN PUNCHED. FINALLY, * A TRAILING ALL ZEROS PATTERN IS OUTPUT, * AND THE ROUTINE TERMINATES. * * VARIABLE RECORD LENGTH OUTPUT CAN BE * SELECTED BY SETTING SWITCH REGISTER * BIT3 TO A ONE * * * * * SKP TST02 EQU * SPC 1 NOP JSB PSCHK CHECK FOR PUNCH CONFIG. JSB MSGH,I GIVE THE OPERATOR DEF T3MSG THE INSTRUCTIONS. JSB PUSET JSB LEADR PUNCH A LEADER CCA T.RY3 AND M.377 LOWER EIGHT BITS ONLY STA SPADH STORE IN HOLDING LOCATION JSB OUTPU AND PUNCH IT JSB FLOPP FLIP-FLOP THE CHARACTER JSB OUTPU AND PUNCH IT LDA SPADH GET THE CHARACTER ADA NEG.1 SUBTRACT A ONE SZA FULLY DECREMENTED? JMP T.RY3 NO, RUN THRU AGAIN STA SPADH YES, STORE CHARACTER AND START TRY3. JSB OUTPU INCREMENTING - PUNCH JSB FLOPP - FLOP JSB OUTPU - PUNCH LDA SPADH GET THE UN-FLOPPED CHARACTER CPA M.377 INCREMENTED TO 377? JMP .DONE YES, GET READY TO EXIT INA NO, INCREMENT THE CHARACTER STA SPADH PUT BACK IN HOLDING LOCATION JMP TRY3. AND DO IT AGAIN SPC 1 .DONE NOP JSB LEADR PUNCH A 60 FEED HOLE LEADER JMP TST02,I SPC 1 * SPC 1 OUTPU NOP OUTPUT TO PUNCH ROUTINE STA OUTP1 SAVE THE A AND B STB OUTP2 REGISTER CONTENTS LDB BIT03 Ա SWR CHECK JSB SWRT,I JMP IF SET JSB PUSSR DO START-STOP ROUTINE LDB OUTP1 LDB WITH (AREG) JSB PUDVR AND PUNCH THE CHARPCTER LDA OUTP1 RESTORE THE A AND B LDB OUTP2 REGISTER CONTENTS JMP OUTPU,I * OUTP1 OCT 3 OUTP2 OCT 0 BIT03 OCT 10 * * * * SKP REST8 NOP RESET THE 8 TIME THRU COUNTER LDA ND008 RESET THE STA SPADJ TIMES 8 COUNTER JMP REST8,I AND EXIT SPC 1 * SPC 1 FLOPP NOP FLIP-FLOP AREG BITS 0-7 JSB REST8 INITIALIZE X-8 COUNTER LDA SPADH ERA FLIP FLOP THE LOWER ELB EIGHT AREG BITS ISZ SPADJ THEN JMP *-3 EXIT LDA B PUT IN AREG AND M.377 FOR AND INSTRUCTION JMP FLOPP,I * SPADH BSS 1 SPADJ BSS 1 * * * * * HED READ ALL CHARACTER COMBINATIONS * * * TEST 03 * * TEST 03 STARTS WITH THE IDENTIFICATION * AND INSTRUCTION MESSAGES: * H052 ALL CHARACTER COMBINATIONS - VERIFY * TEAR TAPE AT PUNCH, PLACE IN * READER, PRESS RUN * * USING AN INTERRUPT TYPE DRIVER FOR * READ OPERATION, THE TEST 02 GENERATED * TAPE IS READ AND PROPER PUNCHING * OPERATION IS VERIFIED. * * NO DATA BUFFER IS EMPLOYED BY TEST02 * OR TEST03, ALL THE WORK IN CHANGING * THE DATA PATTERN IS DONE BY THE SUB- * ROUTINE NAMED FLOPP WHICH USES THE * A,B,AND EXTEND REGISTERS. * * IF AN ERROR IS FOUND, THE OPERATOR MAY * CHOOSE TO ABORT THE ROUTINE. THIS CAN BE * DONE BY SETTING BIT1 TO A 1. * * * SKP TST03 EQU * SPC 1 NOP JSB BPRCK RDR AND PUNCH PRESENT? JSB MSGH,I DEF T4MSS LDA RDJSB STA RDRSC,I JSB SYNC RETURN W 1.BYTE STORED @ FIBYT & A-REG CPA M.377 COMPARE EXPECTED W ACTUAL BYTE JMP *+4 + COMPARE OK. LDB M.377 LOAD EXPECTED BYTE STB SPADH & STORE IN BUFFER JSB T4ERR REPORT ERROR SPC 1 LDA M.377 HERE4 STA SPADH INITIALIZE THE HOLDING BUFFER JSB INTRD READ ROUTINE CPA SPADH VALID CHARACTER READ? JMP *+2 YES, JUMP OVER ERROR JSB JSB T4ERR NO, REPORT TO TCP JSB FLOPP FLIP-FLOP THE WORD STA SPADX AND STORE IT JSB INTRD READ ROUTINE CPA SPADX VALID READ? JMP *+2 YES, OVER ERROR JSB T4ERR NO, REPORT ERROR LDA SPADH GET UNFLOPPED CHARACTER ADA NEG.1 SUBTRACT A ONE SZA,RSS DECREMENTED TO ZERO? JMP RVRSE YES, REVERSE THE PATTERN NOW AND M.377 NO, STRIP OFF UNNECESSARY BITS JMP HERE4 AND DO AGAIN SPC 1 RVRSE STA SPADH INITIALIZE REVERSE ROUTINE JSB INTRD READ ROUTINE CPA SPADH RIGHT ONE? JMP *+2 RIGHT ON JSB T4ERR NO, REPORT ERROR JSB FLOPP FLIP-FLOP THE WORD STA SPADX SAVE THE FLOPEE JSB INTRD READ ROUTINE CPA SPADX CHARACTER READ=FLOPEE? JMP *+2 YES, JUMP OVER ERROR JSB T4ERR NO, ERROR LDA SPADH GET THE UNFLOPPED CHARACTER INA BUMP CHARACTER CPA M.377 BACK TO STARTING PATTERN? JMP *+2 JMP RVRSE NO, BACK FOR MORE CLF 0 JMP TST03,I SKP T4ERR NOP ERROR REPORT FOR THIS TEST STA TEMP4 SAVE (AREG) LDB BAD. CALLING JSB MKBUF SEQUENCE LDA SPADH AND SETUP TO MAKE LDB GOOD. AN ASCII JSB MKBUF BUFFER FOR REPORT LDB SPADH RESTORE A AND B REGISTER LDA TEMP4 CONTENTS CLF 0 INTRPT SYS OFF JSB ERMS,I REPORT TO TCP DEF ABBGM A=BAD B=GOOD MESSAGE POINTER LDB .ByIT1 GIVE UP JSB SWRT,I AFTER ERROR? JMP *+2 YES, DO A P+2 JMP T4ERR,I NO, TRY AGAIN CLF 0 TURN OFF THE INTERRUPT SYSTEM JMP TST03,I AND EXIT TEST 3 * BAD. DEF ARB10 GOOD. DEF BRB10 SPC 1 * SPC 1 INTRD NOP INTERRUPT METHOD READ ROUTINE STF 0 INTERRUPT SYSTEM ON RDVR1 STC RDR,C TELL READER TO GO LDA RDRTC AND START A JSB TMRR,I TIME OUT ROUTINE CLF 0 JSB ERMS,I TIMED OUT, REPORT DEF IRDTO INT. RDR DRIVER TIME OUT JMP INTRD,I SPC 1 * SPC 1 RDDVR NOP INTERRUPTED TO HERE RDVR2 LIA RDR JMP INTRD,I EXIT * RDRTC OCT 1000 RDRSC EQU * NOP RDJSB JSB RDLNK,I * * * * * HED READ TAPE LOOP W/ DELAYS * * * TEST 04 * * TEST 04 USES A CONTINUOUS LOOP FOR * AN INPUT. THE INSTRUCTION MESSAGE * "H054 PLACE LOOP IN READER - ....." * IS OUTPUT, AND THEN THE ROUTINE WAITS * FOR THE OPERATOR TO PRESS RUN * * * WHEN THE OPERATOR STARTS THE TEST, * DELAYS BETWEEN READS CAN BE STARTED * BY SETTING BIT4 TO A 1. * * IN THE EVENT OF AN ERROR, THE TAPE * LOOP CAN BE SYNCHRONIZED TO THE * DATA BUFFER POINTER BY SETTING SWR * BIT2 TO A 1. * * THIS WILL CAUSE THE MESSAGE "H043 * RESYNC" TO BE PRINTED ON THE CONSOLE * AND THE RESYNC OPERATION WILL OCCUR. * THEN SWITCH REGISTER BIT2 SHOULD BE * RESET. * * TO EXIT TEST 04, SWITCH REGISIER * BIT0 MUST BE SET BACK TO 0. * * SKP ORG 4000B TST04 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFG. JSB MSGH,I OUTPUT MESSAGE W O HALT DEF INMS1 "PLACE LOOP IN READ, PRESS RUN" LDB BIT.0 B=000001 JSB SWRT,I JMP *+2 BIT0 NOW IS = 1 JMP *-3 STILL=0, WAIT SOME MORE JSB RESYN SET UP FOR SYNC ,n SPC 1 RONLY NOP INITIALIZE POINTERS & COUNTERS: LDA NEG.5 SET BLOCK READ COUNTER TO -5 STA SPADC LDA TMCST SET UP DELAY TIME STA SPADB LDA .BUFR INITIALIZE DATA POINTER TO STA SPADA IN1. LOCATION IN BUFFER JSB SYNC SYNCH.TAPE TO 1. BYTE SPC 1 NOP READS AND VERIFIES DATA LDB .SWR4 CHECK S-REG BIT 4 FOR JSB SWRT,I DESIRED DELAY JSB TIMER LDA FIBYT COMPARE FIBYT READ OF 2. BLOCK CPA SPADA,I AGAINST 1. LOC. IN BUFFER JMP *+2 JSB ERROR ISZ SPADA INCREMENT DATA BUFFER ADDRESS LDA NEG.5 STA SPADC LDA TMCST STA SPADB LDA .BUFE STA SPADA RHERE NOP LDB .SWR4 DELAY JSB SWRT,I DESIRED? JSB TIMER * TIMERS ARE INITIATED BETWEEN JSB READ * READS. IF NOT DESIRED, CPA SPADA,I * NO TIME DELAYS BETWEEN READS JMP *+2 * * JSB ERROR ISZ SPADA * * LDB .END * * CPB SPADA * * JSB SMWHR EXIT WHEN 1. LEADER AFTER BLOCK IS READ JMP RHERE RETURN WHEN READING INSIDE ANY BLOCKS JMP RHERE-2 NOP NOP SKP TIMER NOP IF CALLED, CAUSES A DELAY LDA SPADB,I GET TIMING CONSTANT JSB DELAY AND CAUSE A DELAY JMP TIMER,I THEN EXIT SPC 1 DELAY NOP STA CLOCK * THIS ISZ CLOCK * IS JMP *-1 * THE JMP DELAY,I * CLOCK SPC 1 SMWHR NOP CHECK XTHRU AND TIME TO EXIT ISZ SPADC JMP BSMF LDB BIT.0 CHECK S-REG AFTER EVERY 5 BLOCKS FOR JSB SWRT,I EXIT FORM TEST 04 JMP RONLY JMP TST04,I YES, FINISH SPC 1 BSMF ISZ SPADB NEXT TIMING CONSTANT JSB SYNC TAKE UP THE LEADER ISZ SMWHR SET UP RETURN ADDRESS JMP SMWHR,I AND RETURN T O CALLER SPC 1 * SPC 1 ERROR NOP LDB .BAD POINTER TO BAD BITS 0&1 JSB MKBUF GO MAKE AN ASCII BUFFER LDA SPADA,I LDB .GOOD POINTER TO GOOD BITS JSB MKBUF MAKE THE GOOD MESSAGE BUFFER RDRLA LIA RDR GET THE BAD CHARACTER AGAIN LDB SPADA,I GET THE GOOD CHARACTER JSB ERMS,I OUTPUT THE MESSAGE DEF ABBGM POINTER FOR TCP LDB .SWR2 RESYNC? JSB SWRT,I JMP RSYNC JMP ERROR,I NO, EXIT SPC 1 * SPC 1 RSYNC NOP JSB MSGC,I DEF RSMSG JSB READ GET A CHARACTER SZA ZERO? JMP *-2 JSB READ YES, LOOK FOR NEXT ZERO SZA ZERO? JMP *-2 JMP RONLY * SKP .BAD DEF ARB10 .GOOD DEF BRB10 NEG.5 DEC -5 SPADC BSS 1 .BUFR DEF BUFER .BUFE DEF BUFER+1 SPADA BSS 1 SPADB BSS 1 TMCST DEF DL001 BIT.4 OCT 20 .END DEF BUFER+55 TMEND DEF DL005 CLOCK BSS 1 DL001 DEC -100 DEC -1500 DEC -500 DEC -1000 DL005 DEC -2000 .SWR2 OCT 4 .SWR4 OCT 20 BUFER OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 000,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 * * * * * * * * HED READ TAPE LOOP - VARIABLE RECORD LENGTHS * * * TEST 05 * * TEST 05 IS SIMILIAR TO TEST 04. THE * SAME TAPE LOOP IS USED FOR READ/VERIFY * AND THE ROUTINES SHARE MANY COMMON * SUBROUTINES. * * THE MAIN DIFFERENCE IS THAT VARIABLE * RECORD LENGTHS ARE USED FOR THIS TEST * ERROR HANDLING ROUTINES AND THE * RESYNC ROUTINE ARE IDENTICAL. * * * * * SKP TST05 EQU * SPC 1 NOP JSB RSCHK CHECK FOR RDR CONFG. JSB MSGH,I DEF INMS1 TAPE LFOOP IN RDR LDB BIT.0 GET A JSB SWRT,I BIT0=1 YET JMP *+2 YES, GO ON JMP *-3 NO, WAIT SOME MORE JSB RESYN RESYNC TAPE TO FEEDHOLES JSB SYNC SYNC TAPE TO FIRST BYTE LDA .BUFR INITIALIZE THE DATA STA SPADA BUFFER POINTER LDA TMCST SET UP DELAY TIME STA SPADB SPC 1 EMSM2 LDA NEG16 INITIATE COUNTER FOR TOTAL STA BLK BLOCK LENGTH LDA LPTR. INITIATE LENGTH COUNTER OF STA PTSTR SEGMENT INSIDE BLOCK SPC 1 NBLOK LDA FIBYT BRING BACK READ BYTE LDB PTSTR,I SET UP POINTER TO STRING LENGTH STB EMSMW JSB READR COMPARE AGAINST BUFFER LDB .SWR4 CHECK S-REG TO TEST IF JSB SWRT,I DELAY IS DESIRED JSB TIMER YES, DELAY JSB READ RETURN WITH BYTE IN A-REG ISZ EMSMW INCREMENT VARIABLE REC. LENGTH COUNT JMP *-6 STA FIBYT STORE READ BYTE AWAY ISZ PTSTR INCREMENT LENTH POINTER NOP LDA BIT06 SET UP FOR 100 JSB TMRR,I MILLISECOND DELAY NOP ISZ BLK INCREM. BLOCK LENGTH COUNTER JMP NBLOK DO AGAIN JMP EMSM2 SPC 1 * SPC 1 READR NOP CPA SPADA,I AND COMPARE JMP *+2 GOOD JSB ERROR ERROR ISZ SPADA BUMP BUFFER POINTER LDA .END CHECK FOR CPA SPADA END OF BUFFER JMP RESTR END, RESET JMP READR,I NOT END, EXIT SPC 1 RESTR LDA .BUFR RESET STA SPADA BUFFER POINTER JSB SYNC TAKE UP LDB BIT.0 DONE JSB SWRT,I YES? JMP NBLOK NO, REPEAT JMP TST05,I YES, EXIT TEST SPC 1 * SPC 1 NEG16 DEC -16 BLK OCT 0 EMSMW OCT 0 LPTR. DEF N.PTR PTSTR DEF N.PTR N.PTR DEC -5 DEC -22 DEC -13 DEC -35 DEC -17 DEC -26 DEC +-4 DEC -32 DEC -10 DEC -16 DEC -23 DEC -15 DEC -24 DEC -13 DEC -19 N.LST DEC -7 * * * * * * * * HED READ-PUNCH * * * TEST 06 * * INSTRUCTION MESSAGE "H056 TURN PUNCH * ON, PRESS RUN. TO BEGIN READ, SET * BIT0 TO A 1, TO TERMINATE, SET BIT0 * TO 0" IS PRINTED ON THE CONSOLE, AND * THE ROUTINE HALTS THE COMPUTER. * * WHEN RUN IS PRESSED, THE SWITCH REGISTER * IS CHECKED TO INSURE BIT0 IS A 0. THIS IS * DONE TO PREVENT THE READ OPERATION FROM * STARTING BEFORE THE OPERATOR CAN PLACE * THE PUNCHED TAPE IN THE READER * * WHEN THE OPERATOR CHANGES SWITCH * REGISTER BIT 0 TO A 1, THE * PUNCH THEN BEGINS AN ALTERNATE SIO AND * INTERRUPT PUNCH OPERATION. THE READER * OPERATION IS SIO. * * THIS OPERATION WILL CONTINUE UNTIL BIT0 * IS RESET. THEN THE PUNCH OPERATION * CONTINUES UNTIL THE ENTIRE BUFFER IS * OUTPUT, THE MESSAGE "H057 TO COMPLETE, * TEAR TAPE - PRESS RUN" IS OUTPUT ON THE * CONSOLE, AND THE COMPUTER HALTS. THE * OPERATOR MAY THEN COMPLETE THIS ROUTINE * BY FOLLOWING THE ABOVE INSTRUCTIONS. * * * * * * * SKP TST06 EQU * SPC 1 NOP SPC 1 JSB BPRCK MAKE SURE OF PROPER CONF. JSB MSGH,I GIVE THE OPERATING DEF POMSG INSTRUCTIONS... LDA PUJSB INITIALIZE THE STA T5PSC,I PUNCH TRAP CELL CLA NOP THE STA T5RSC,I READER TRAP CELL NOP DEBUG LDB BIT.0 BIT 0 MUST JSB SWRT,I BE A ZERO OR ELSE JSB T5IEH TELL OPERATOR TO CLEAR BIT0 SPC 1 S0JMP JSB RESET JSB LEADR JSB PNCH1 OUTPUT ONE BUFFER LDB BIT.0 BEGIN READ? JSB SWRT,I IS SO, DO JMP *+2 ARROW JMP S0JMP IF NOT, TRY AGAIN SPC 1 ARROW JSB LEADR Z<:6 LDB SPAD1,I SET UP FOR INTERRUPT ISZ SPAD1 PUMTB OTB PUNCH RTSTR STF 0 AND GO INTO INTERRUPT INTPU STC PUNCH,C MODE OF PUNCHING NOP JSB SYNC TAKE UP THE LEADER JSB READ1 AND BEGIN READ OPERATION T5RDR CLC RDR LDA D1000 FINISH ROUTINE JSB TMRR,I OR ELSE NOP CLF 0 TURN OFF INTERRUPT SYSTEM JSB ERMS,I AND REPORT THAT THE PUNCH DEF P.TOM ROUTINE DID NOT FINISH. NOP DEBUG JMP TST06,I EXIT * * SKP R<  12597-18004 1725 S 0122 TAPE READER PUNCH DIAGNOSTIC             H0101 /PRST NOP CLF 0 JSB RESET LDB BIT.0 EXIT JSB SWRT,I TO JMP ARROW CCB MAKE B=ALL ONES JSB PUDVR JSB PUDVR JSB PUDVR OUTPUT A CHARACTER FOR END JSB LEADR AND A LEADR JSB MSGH,I TELL OPERATOR TO TEAR TAPE . DEF T5M1H JSB READ2 READ AND VERIFY PUNCHED TAPE JMP TST06,I * D1000 OCT 10000 T5PSC OCT 0 T5RSC OCT 0 BIT.0 OCT 1 * * * * * SPC 1 * SPC 1 T5IEH NOP THIS ROUTINE TELLS OPERATOR JSB MSGH,I TO CLEAR SW BIT0, THEN HALTS DEF INITM NOP JMP T5IEH,I SPC 1 * SPC 1 PNCH1 NOP PUNCH ROUTINE #1 LDB SPAD1 CHECK FOR POINTER CPB .END. OUT-OF-BOUNDS JMP PREST RESET POINTER LDB SPAD1,I GET THE DATA TO PUNCH ISZ SPAD1 BUMP POINTER JSB PUDVR PUNCH THE (BREG) JMP PNCH1+1 DOIT AGAIN PREST LDB BUFST RESET PUNCH STB SPAD1 POINTER JMP PNCH1,I EXIT * SPAD1 OCT 0 BUFST DEF BUF5 .END. DEF BUFND PUJSB JSB SO.SO,I SKP T5ERR NOP ERROR HANDLING ROUTINE STA T5ARS SAVE THE A AND B STB T5BRS REGISTERS FOR LATER LDB .BAD JSB MKBUF AKE THE "BAD" BUFFER NOP LDA SPAD6,I GET THE "GOOD" DATA PATTERN LDB .GOOD POINTER TO GOOD DATA BUFFER JSB MKBUF MAKE THE GOOD BUFFER NOP LDA T5ARS LDB T5BRS RESTORE THE A AND B REGISTERS NOP JSB ERMS,I REPORT THE ERROR DEF ABBGM NOP JMP T5ERR,I EXIT ROUTINE * T5BRS OCT 0 T5ARS OCT 0 SPC 1 * SPC 1 R.SET NOP LDA BUFST RESET THE STA SPAD6 RDR POINTER JMP R.SET,I SPC 1 * SPC 1 RESET NOP LDA BUFST RESET STA SPAD6 READ AND STA SPAD1 PUNCH POINTERS JMP RESET,I * SPAD6 OCT 0 SPC 1 * SPC 1 PINTR NOP PUNCH ROUTINE USING INTERRUPT NOP LDB SPAD1 POINTER CPB .END. OUT-OF-BOUNDS? JMP PRST YES, RESET LDB SPAD1,I NO, GET NEXT DATA ISZ SPAD1 BUMP POINTER NOP DEBUG T5PI1 OTB PUNCH T5PI2 STC PUNCH,C NOP JMP PINTR,I EXIT SKP READ1 NOP MAIN READ ROUTINE JSB R.SET INITIALIZE POINTERS, ETC SPC 1 .RD.1 LDA SPAD6 CHECK POINTER FOR CPA .END. OUT-OF-BOUNDS JMP READ1,I FINISHED, BACK TO CALLING ROUTINE JSB READ OK TO READ NOP CPA SPAD6,I READ VALID? JMP *+2 YES, PASS ERROR HALT JSB T5ERR REPORT ERROR ISZ SPAD6 BUMP POINTER NOP DEBUF JMP .RD.1 SPC 1 * SPC 1 READ2 NOP FINISH READ ROUTINE JSB SYNC TAKE UP LEADER JSB R.SET RESET POINTERS ETC SPC 1 .RD.2 LDA SPAD6 CPA .END. OUT-OF-BOUNDS JMP NDCK1 JSB READ OK TO READ NOP CPA SPAD6,I READ VALID? JMP *+2 YES, PASS ERROR HALT JSB T5ERR REPORT ERROR ISZ SPAD6 BUMP POINTER NOP DEBUF JMP .RD.2 SPC 1 * SPC 1 NDCK1 JSB READ GET NXT CHARAT CPA ENDCH ALL 1,S? JMP NDCK2 YES, DO 2ND CHECK JSB SYNC NO, READ ANOTHER BUFFER JMP READ2+2 * * * * * SKP * SPC 1 NDCK2 JSB READ GET NXT CHARACTER CPA ENDCH JMP READ2,I END FOUND, EXIT JSB ERMS,I DEF OVRUN NOP JMP *-1 * ENDCH OCT 377 SPC 5 BUF5 OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 00I0,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 000,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 000,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 OCT 377,201,125,252,333,155,066,033 OCT 204,037,340,377,127,201,102,145 OCT 132,347,030,377,132,245,030,102 OCT 044,030,201,245,102,044,030,231 OCT 044,102,201,377,252,125,250,377 OCT 000,347,122,255,211,152,235,052 OCT 367,010,167,030,245,044,333,000 BUFND OCT 377 * HED PUNCH OUT THE LOOP * * * TEST 07 * * THE MESSAGE "H060 TO MAKE LOOP, PUNCH ON * AND RUN" IS OUTPUT, AND THE COMPUTER HALTS. * THE OPERATOR CAN MAKE A LOOP BY FOLLOWING * THESE INSTRUCTIONS. THREE ITERATIONS OF * THE DATA BUFER WILL BE OUTPUT TO THE PUNCH * * THIS TAPE CAN THEN BE MADE INTO A LOOP * USING A TAPE REPAIR PATCH, OR TRANSPARENT * TAPE. * * THIS ROUTINE WILL NOT RUN AS PART OF THE * DIAGNOSTIC, BUT CAN BE CALLED AT CONFIGURATION * TIME BY THE OPERATOR * * * * * * * SKP TST07 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGH,I OUTPUT MSG DEF T7MSG LDA OCT.3 INITIALIZE STA R7X3C XTHRU COUNTER LDA NDN40 INITIALIZE STA R7SP1 40 COUNTER JSB R7LDR PUNCH LEADER SPC 1 * SPC 1 R7HR1 LDA NDN20 PUNCH A LEADER OF 20 STA R7SP1 FEED JSB R7LDR zn FRAMES LDA NDN55 INITIALIZE THE STA R7SP1 XTHRU 55 LDA R7BFP SET UP THE STA R7SP2 DATA PIINTER SPC 1 * SPC 1 R7HR2 LDB R7SP2,I GET DATA WORD JSB PUDVR PUNCH IT ISZ R7SP2 BUMP POINTER ISZ R7SP1 FINISHER ONE BUFFER? JMP R7HR2 NO, GET ANOTHER WORD ISZ R7X3C YES FINISHED 3 BUFFERS? JMP R7HR1 NO, PUNCH MORE LEADER LDA NDN40 YES, INITIALIZE STA R7SP1 JSB R7LDR AND PUNCH A TRAILER JMP TST07,I EXIT SPC 1 * SPC 1 R7LDR NOP THIS ROUTINE PUNCHES CLB AN ALL ZEROS LEADER/TRAILER JSB PUDVR ISZ R7SP1 JMP *-2 JMP R7LDR,I * OCT.3 DEC -3 R7X3C OCT 0 ROUTINE 7 X3 COUNTER NDN40 DEC -40 R7SP1 OCT 0 NDN20 DEC -20 NDN55 DEC -55 R7BFP DEF BUFER R7SP2 OCT 0 HED PUNCH SWR BITS 0-7 * * * TEST 10 * * THIS UTILITY ROUTINE OUTPUTS SWITCH * REGISTER BITS 0-7 TO THE PUNCH. * THIS ROUTINE MUST BE CALLED BY THE * OPERATOR. * * * * SKP TST10 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGH,I DEF T10MS X2 JSB SWRT,I NOP JSB PUDVR LDA B AND BIT13 SZA JMP X2 JMP TST10,I * BIT13 OCT 20000 SKP HED READER SPEED TEST * * TST11 * * TEST 11 IS THE READER SPEED TEST. IT IS ANOTHER UTILITY TEST * WHICH MAY BE SELECTED BY THE OPERATOR. THE INITIAL MESSAGE * INSTRUCTING THE OPERATOR TO SELECT A SWITCH REGISTER BIT TO * DIFFERENTIATE BETWEEN 2748/58 AND 2737 PHOTOREADERS, AND THE * PROGRAM HALTS THE COMPUTER. IF THE READER IS A 2737, BIT 5 * SHOULD BE SET TO A ONE. IF THE READER IS A 2748/58, BIT 5 * SHOULD BE SET TO A ZERO. AND RUN MUST BE PRESSED. THE READER * WILL THEN ADVANCE TAPE, AND THE PROGRAM WILL CAL?CULATE THE * READER SPEED. IF THE SPEED IS CORRECT, THE TEST IS TERMINATED * IF A SLOW SPEED IS DETECTED, THE ERROR IS REPORTED AND THE A * REGISTER CONTAINS THE NUMBER OF ACTUAL CHARACTERS READ, THE B * REGISTER CONTAINS THE EXPECTED NUMBER OF CHARACTER. * * IF THE OPERATOR WISHES THIS TEST TO CONTINUE LONGER THAN THE * NORMAL ONE SECOND, HE MAY SET SWITCH REGISTER BIT 7 TO A ONE * PRIOR TO THE START OF TEST 11 EXECUTION. TO EXIT THIS LOOP * CONDITION, SWITCH REGISTER BIT 7 SHOULD BE SET TO A ZERO. * * * SKP TST11 EQU * SPC 1 NOP JSB RSCHK WANT TO RUN TEST? JSB MSGH,I OUTPUT INSTRUCTION MESSAGE DEF RSTM1 AND HALT. JSB FREQ,I SET CHAR/SEC CONSTANT FOR 50/60 HZ LDB BIT05 IS THE READER A JSB SWRT,I 2737? JSB RMXRT YES, GET THE 300 CPS CONSTANT LDA HPRDC NO, GET THE 500 CPS CONSTANT STA MBGTC AND PUT IN HOLD/CONSTANT LDA RSJSB PUT THE READ/COUNTER SUBROUTINE STA RSRSC,I ADDRESS IN THE RDR S.C. LDA RSTIR ESTABLISH THE BASE STA RRLNK PAGE LINK ADDRESS .TS11 CLA ZERO THE INTERRUPT STA RSICL COUNTER LOCATION. LDA OSTMC GET THE ONE SECOND CONSTANT STF INTP TURN INTSYS ON RIOA1 STC RDR,C TELL THE READER TO START UP JSB TMRR,I START TIMING CLF INTP TURN OFF THE INTERRUPT SYSTEM RIOA2 CLC RDR,C ROUTINE CLEAN-UP LDA RSICL GET THE INTERRUPT COUNT ADA MBGTC SUBTRACT THE MBG CONSTANT SSA,RSS IN READ SPEED SPEC? JMP RSEDR YES, JUMP OVER ERROR LDA RSICL GET COUNT FOR DISPLAY LDB MBGTC NO, WAS THIS THE TEST FOR CPB RXRDC THE 2737 READER? JSB ERRMX YES, REPORT 2737 SPEED SLOW JSB ERRHP NO, REPORT 2748 SPEED SLOW JSB LPCHK BIT 7=1? JMP .TS11 YES, LOOP UNTIL =0 JMP TST11,I EXIT T|HE LOOP AND ROUTINE * SPC 4 RSTIH NOP ISZ RSICL BUMP INTERRUPT COUNTER RIOA3 STC RDR,C HIT THE READER AGAIN, JMP RSTIH,I AND BACK TO THE TIMER. * RSICL OCT 0 INTERRUPT COUNT LOCATION SPC 2 RSEDR JSB MSGC,I TELL OPERATOR TEST IS DEF RSEND FINSHED, & EXIT JSB LPCHK BIT 7=1? JMP .TS11 UES LOOP JMP TST11,I NO, EXIT LOOP RMXRT NOP LDA RXRDC GET THE 2737 CONSTANT ISZ RMXRT GO PAST 2748 INSTRUCTION FETCH JMP RMXRT,I AND EXIT * RXRDC NOP CONTAINS 2737 CPS CONSTANT SPC 2 ERRMX NOP CMB,INB MAKE B POSITIVE FOR DISPLAY ISZ ERRMX BUMP PAST NEXT ERROR JSB ERMS,I REPORT THAT THE 2737 DEF RMXEM SPEED WAS TOO SLOW. JMP ERRMX,I AND EXIT SPC 2 ERRHP NOP CMB,INB MAKE B POSITIVE FOR DISPLAY JSB ERMS,I REPORT THAT THE 2748/58 DEF HPREM SPEED WAS TOO SLOW. JMP ERRHP,I SPC 2 * * HPRDC NOP CONTAINS 2748 2758/CPS CONSTANT MBGTC OCT 0 WILL CONTAIN CONSTANT FOR TIMING RSJSB JSB RRLNK,I RSRSC OCT 0 WILL = RDR S.C. AFTER CONFIG. RSTIR DEF RSTIH RDR ROUTINE POINTER OSTMC DEC 1000 ONE SECOND TIMER CONSTANT FREQ DEF ZFREQ POINTER TO FREQUENCY ROUTINE * * * * SKP SKP HED PUNCH SPEED TEST * * TST12 * * TEST 12 IS THE PUNCH SPEED TEST. LIKE THE READER SPEED TEST, * IT MUST BE SELECTED BY THE OPERATOR, AND LIKE THE READER TEST * IT REQUIRS A SWITCH REGISTER INPUT FROM THE OPERATOR TO INFORM * THE PROGRAM WHICH PUNCH IS BEING TESTED. SWITCH REGISTER BIT6 * MUST BE SET TO 1 IF THE PUNCH IS A 2753, OR SET TO 0 IF THE * PUNCH BEING TESTED IS A 2895. * AN INSTRUCTION MESSAGE IS OUTPUT INFORMING THE OPERATOR OF THE * NEED TO SET OR CLEAR BIT6, AND THE PROGRAM HALTS AWAITING THIS * INFORMATION. * * IF THE OPERATOR WISHESUR TO EXTEND THE EXECUTION TIME OF THIS * TEST, SWITCH REGISTER BIT 7 SHOULD BE SET TO A ONE PRIOR TO * THE START OF EXECUTION. TO EXIT THIS LOOP CONDITION, SWITCH * REGISTER BIT 7 MUST BE SET TO A ZERO. * * * SKP TST12 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGH,I OUTPUT INSTRUCTION MESSAGE DEF PSTM1 AND HALT LDB BIT06 IS THE PUNCH TO BE JSB SWRT,I TESTED A 2753? JSB TLYRT YES, GO GET THE CONSTANT LDA FCTPC NO, GET THE 2895 CONSTANT STA MBGTC AND PUT IT IN HOLDER LDA PUSUB GET JSB PUSUB INSTRUCTION STA PIOA6,I LDA PSTIR GET THE ROUNTIN4S ADDRESS STA PULNK AND PLACE IN BASE PAGE LINK .TS12 CLA ZERO THE STA PSICL COUNTER LDA FCTPC GET A NUMBER TO OUTPUT PIOA1 OTA PUNCH OUTPUT BUFFER LDA OSTMC GET THE ONE SECOND CONSTANT STF INTP INTERRUPT SYSTEM ON PIOA2 STC PUNCH,C TELL THE PUNCH TO START, JSB TMRR,I AND CONTINUE TIMING TEST. CLF INTP OFF THE INTERRUPT SYSTEM PIOA3 CLC PUNCH,C OFF PUNCH CONTROL LDA PSICL GET THE INTERRUPT COUNT ADA MBGTC SUBTRACT THE MBGT CONSTANT SSA,RSS IS THE PUNCH SPEED CORRECT? JMP PSEDR YES, OVER ERROR LDA PSICL GET COUNT FOR DISPLAY LDB MBGTC NO, GET THE SHOULD BE VALUE CPB TLYRC WAS THIS A 2753? JSB TLYER YES, REPORT ERROR JSB FCTER NO, REPORT 2895 ERROR. JSB LPCHK BIT 7=1? JMP .TS12 YES, LOOP JMP TST12,I EXIT PSEDR JSB MSGC,I REPORT SUCESSFUL SPEED TEST DEF PSEND JSB LPCHK CHECK FOR LOOP JMP .TS12 YES, LOOP UNTIL BIT7 IS CLEARED JMP TST12,I EXIT * BIT06 OCT 100 FCTPC DEC -74 PUSUB JSB PULNK,I PIOA6 OCT 0 PSTIR DEF PSTIH PSICL OCT 0 TLYRC DEC -119 PTR12 DEF BUF5 SKP TLYRT NOP LDA TLYRC / GET 2753 TIME CONSTANT ISZ TLYRT OVER THE 2895 CONSTANT JMP TLYRT,I AND RETURN SPC 2 PSTIH NOP ISZ PSICL INCREMENT THE PUINT COUNTER PIOA7 OTA PUNCH PIOA4 STC PUNCH,C HIT THE PUNCH WITH ANOTHER GO JMP PSTIH,I AND BACK TO TIMER. SPC 2 TLYER NOP CMB,INB MAKE B A POSITIVE NUMBER JSB ERMS,I REPORT THE PUNCH IS DEF TLYEM TO SLOW ISZ TLYER GO PAST THE 2895 ERROR JMP TLYER,I AND EXIT. SPC 2 FCTER NOP CMB,INB MAKE B POSITIVE JSB ERMS,I REPORT 2895 OPERATION DEF FCTEM WAS TOO SLOW JMP FCTER,I EXIT SPC 2 LPCHK NOP LDB BIT07 IS BIT 7 A ONE? JSB SWRT,I IF SO, JMP LPCHK,I LOOP ISZ LPCHK IF NOT, JMP LPCHK,I EXIT * BIT07 OCT 200 P12AD OCT 0 HED 2753 STATUS TEST * * TST13 * * TEST 13 IS THE 2753 HIGH SPEED PUNCH STATUS TEST. IT CONSISTS * OF A ONE BIT CHECK. THE OPERATOR IS TOLD TO REMOVE THE TAPE * SUPPLY REEL TO FORCE AN ERROR. WHEN RUN IS PUSHED, BIT 5 * FROM THE PUNCH INTERFACE IS CHECKED TO INSURE THE ABILITY OF * THE INTERFACE DTTECTING A LOW SUPPLY REEL CONDITION. THE * OPERATOR IS THEN INSTRUCTED TO REINSTALL THE SUPPLY REEL, AND * WHEN RUN IS PRESSED, THE BIT 5 IS TESTED FOR A ZERO CONDITION * AND THE TEST IS EXITED. * * * * * * * * * SKP TST13 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGH,I INSTRUCT THE OPERATOR TO REMOVE DEF TST1H PIOA5 LIB PUNCH GET THE PUNCH STATUS CPB BIT05 LOW TAPE STATUS? JMP *+3 YES, OVER THE ERROR JSB ERMS,I NO, TELL THE OPERATOR DEF T13EM ABOUT THE PROBLEM JSB MSGH,I INSTRUCT THE OPERATOR TO REPLACE DEF TSTH2 THE SUPPLY REEL. PIOA8 LIB PUNCH SZB,RSS JMP *+3 YES, OVER THE RERRER JSB ERMS,I  NO, INFORM THE OPERATOR DEF T13EN OF THE PROBLEM JSB MSGC,I ANNOUNCE A SUCESSFUL TEST DEF TSTH3 TO THE OPERATOR JMP TST13,I AND EXIT SPC 5 * TST1H ASC 16,H104 2753 HIGH SPEED TAPE PUNCH ASC 6,STATUS CHECK OCT 6412 ASC 17, REMOVE SUPPLY REEL, PRESS RUN OCT 3457 BELL AND SLASH * T13EM ASC 18,E105 DID NOT DETECT LOW TAPE STATUS/ * T13EN ASC 17,E106 REPLACING SUPPLY REEL DID NOT ASC 7, CLEAR STATUS/ * TSTH2 ASC 18,H107 REPLACE SUPPLY REEL, PRESS RUN/ * TSTH3 ASC 14,H110 STATUS CHECK COMPLETE/ * * * HED 2895 MANUAL FUNCTIONS TEST * * TST14 * * TEST 14 IS A TEST OF THE MANUAL FUNCTIONS OF THE 2895 PUNCH. * THERE ARE EIGHT FUNCTIONS TO BE TESTED. EACH TEST IS STARTED * BY AN INSTRUCTION MESSAGE, TELLING THE OPERATOR WHAT TO DO. * * 'PRESS RUN' IN THE MESSAGES, REFERS TO THE COMPUTER RUN * SWITCH. * * THE EIGHT FUNCTIONS ARE: * * 1 POWER ON SWITCH. * * 2 DC ON SWITCH * * 3 TAPE FEED SWITCH * * 4 FEED HOLE SWITCH * * 5 CODE HOLE SWITCH * * 6 LOW TAPE SWITCH/INDICATOR * * 7 LOOSE TENSION ARM/ERROR INDICATOR * * 8 TIGHT TENSION ARM/ERROR INDICATOR * * * * * SKP TST14 EQU * SPC 1 NOP JSB PSCHK WANT TO RUN TEST? JSB MSGC,I TITLE DEF T14M1 MESSAGE JSB MSGH,I POWER ON SWITCH DEF TFPOM MESSAGE JSB MSGH,I DC ON SWITCH DEF TFDCM MESSAGE JSB MSGH,I TAPE FEED SWITCH DEF TFTFM MESSAGE JSB MSGH,I DEF TFFHM JSB MSGH,I CODE HOLE SWITCH DEF TFCHM MSG JSB MSGH,I REMOVE REEL DEF TFFRM JSB MSGH,I REPLACE REEL DEF TFRPM MSG JSB MSGH,I TENSION ARM LET DEF TFLEM MESSAGE. JSB MSGC,I COMPLETE DEF TFICM MESSAGE NO2EP JMP TST14,I EXIT THE BMC SPECIAL TEST SKP * * T14M1 ASC 16,H111 2895 MANUAL FUNCTIONS TEST/ * TFPOM ASC 16,H112 PRESS 'POWER ON'-PRESS RUN OCT 3457 BELL AND SLASH * TFDCM ASC 17,H113 PRESS 'DC ON', 'READY' SHOULD ASC 11, ILLUMINATE. PRESS RUN OCT 3457 BELL AND SLASH * TFTFM ASC 18,H114 PRESS 'TAPE FEED', SHOULD FEED ASC 11,BLANK TAPE. PRESS RUN OCT 3457 BELL AND SLASH * TFFHM ASC 18,H115 PRESS 'FEED HOLD'. SHOULD FEED ASC 16,TAPE WITH FEED HOLES. PRESS RUN OCT 3457 BELL AND SLASH * TFCHM ASC 18,H116 PRESS 'CODE HOLE'. SHOULD FEED ASC 15,FULLY PUNCHED TAPE. PRESS RUN OCT 3457 BELL AND SLASH * TFFRM ASC 17,H117 REMOVE THE TAPE SUPPLY REEL. ASC 5,PRESS RUN OCT 3457 BELL AND SLASH * TFRPM ASC 15,H120 TAPE LOW INDICATOR SHOULD ASC 16, BE ILLUMINATED. REPLACE SUPPLY OCT 6412 ASC 9, REEL. PRESS RUN OCT 3457 BELL AND SLASH * TFLEM ASC 13,H121 MOVE THE TAPE TENSION ASC 15, ARM TO MAXIMUM RIGHT AND LEFT OCT 6412 ASC 15, THE ERROR INDICATOR SHOULD ASC 15,ILLUMINATE AT THE TWO MAXIMUM OCT 6412 ASC 17, POSITIONS, AND BE EXTINGUISHED ASC 11,IN THE CENTER-PUSH RUN OCT 3457 BELL AND SLASH * TFICM ASC 18,H122 MANUAL FUNCTIONS TEST COMPLETE/ * * * HED SUBROUTINE 50/60 HZ FOR PAPER TAPE READER TEST * * THIS ROUTINE SETS UP THE CHARACTER COUNTERS * FOR OPERATION OF THE 2748/58 AND 2737 * PAPER TAPE READERS * THE CHARACTER COUNTERS WILL BE SET DIFFERENTLY * WHETHER THE READERS ARE OPERATED AT * ************* 50HZ OR 60HZ ******************** * * * ZFREQ NOP UPDATE POINTER ROUTINE LDA USSC IS IT 50HZ OR 60HZ ? SSA,RSS JMP *+7 GO TO 60HZ OPERATION * * * OPERATION AT 50HZ * * LDA HPRDD GET THE 415 CPS CONSTANT STA HPR1,I SAVE IT IN HPRDC B@< LDA RXRDE GET THE 250 CPS CONSTANT STA RXR1,I SAVE IT IN RXRDC LDA SAVA,I RESTORE THE A REGISTER JMP ZFREQ,I RETURN TO MAIN PROGRAM * * * OPERATION AT 60HZ * * LDA HPRDE GET THE 500 CPS CONSTANT STA HPR1,I SAVE IT IN HPRDC LDA RXRDF GET THE 300 CPS CONSTANT STA RXR1,I SAVE IT IN RXRDC LDA SAVA,I RESTORE THE A REGISTER JMP ZFREQ,I RETURN TO MAIN PROGRAM * * HPRDE DEC -498 500 CPS CONSTANT HPRDD DEC -413 415 CPS CONSTANT RXRDE DEC -248 250 CPS CONSTANT RXRDF DEC -298 300 CPS CONSTANT RXR1 DEF RXRDC 2737 CPS CONSTANT IN TEST 11 HPR1 DEF HPRDC 2748-58 CPS CONSTANT IN TEST 11 SAVA DEF ZSAVA SPC 3 FWAA EQU * SPC 3 END B  12621-18001 1532 S 0122 REC SYNC DATA SET              H0101 SASMB,A,B,L,T,C HED RECEIVE (ONLY) INTERFACE DIAGNOSTIC ORG 100B JMP CFGR GO TO CONFIGURATION TTY.I BSS 1 TAPE INPUT TTY.O BSS 1 LIST OUTPUT TTY.P BSS 1 PUNCH OUTPUT TTY.K BSS 1 KEYBOARD INPUT DEF FWAM FIRST WORD AVAILABLE MEMORY ORG 126B OCT 103012 DSN BSS 1 EXRTN DEF RETR SKP * A EQU 0 B EQU 1 CH EQU 10B FERC ABS -FER FER DEF *+1 ERROR NUMBER TABLE DEF E1 DEF E2 DEF E3 DEF E4 DEF E5 DEF E6 DEF E10 DEF E12 DEF E13 DEF E14 DEF E15 DEF E16 DEF E21 DEF E22 DEF E23 DEF E24 DEF E25 DEF E31 DEF E32 DEF E33 DEF E34 DEF E35 DEF E41 DEF E42 DEF E43 DEF E44 DEF E50 DEF E51 DEF E53 DEF E61 DEF E67 DEF E100 DEF E106 DEF E107 DEF E125 DEF E134 DEF E137 DEF E150 DEF E151 DEF E152 DEF E153 DEF E160 DEF E161 DEF E162 LER DEF * SKP CHLT DEF * CODED HALT TABLE HLT 1 HLT 2 HLT 3 HLT 4 HLT 5 HLT 6 HLT 10B HLT 12B HLT 13B HLT 14B HLT 15B HLT 16B HLT 21B HLT 22B HLT 23B HLT 24B HLT 25B HLT 31B HLT 32B HLT 33B HLT 34B HLT 35B HLT 41B HLT 42B HLT 43B HLT 44B HLT 50B HLT 51B HLT 53B HLT 61B HLT 67B OCT 103000 HLT 100 OCT 103006 HLT 106 OCT 103007 HLT 107B OCT 103025 HLT 125 OCT 103034 HLT 134 OCT 103037 HLT 137B OCT 103050 OCT 103051 OCT 103052 OCT 103053 OCT 103060 OCT 103061 SKP zSPC 2 FMI DEF * MESSAGE ADDRESS TABLE DEF M1 DEF M2 DEF M3 DEF M4 DEF M5 DEF M6 DEF M10 DEF M12 DEF M13 DEF M14 DEF M15 DEF M16 DEF M21 DEF M22 DEF M23 DEF M24 DEF M25 DEF M31 DEF M32 DEF M33 DEF M34 DEF M35 DEF M41 DEF M42 DEF M43 DEF M44 DEF M50 DEF M51 DEF M53 DEF M61 DEF M67 DEF M100 DEF M106 DEF M107 DEF M125 DEF M134 DEF M137 DEF M150 DEF M151 DEF M152 DEF M153 DEF M160 DEF M161 DEF M162 SKP FML DEF * MESSAGE LENGTH TABLE DEF L1 DEF L2 DEF L3 DEF L4 DEF L5 DEF L6 DEF L10 DEF L12 DEF L13 DEF L14 DEF L15 DEF L16 DEF L21 DEF L22 DEF L23 DEF L24 DEF L25 DEF L31 DEF L32 DEF L33 DEF L34 DEF L35 DEF L41 DEF L42 DEF L43 DEF L44 DEF L50 DEF L51 DEF L53 DEF L61 DEF L67 DEF L100 DEF L106 DEF L107 DEF L125 DEF L134 DEF L137 DEF L150 DEF L151 DEF L152 DEF L153 DEF L160 DEF L161 DEF L162 SKP FIRST DEF *+1 TABLE OF SELECT CODES TO BE DEF CH0 DEF CH1 MODIFIED DEF CH2 DEF CH3 DEF CH4 DEF CH5 DEF CH6 DEF CH7 DEF CH8 DEF CH9 DEF CH10 DEF CH11 DEF CH12 DEF CH13 DEF CH14 DEF CH15 DEF CH16 DEF CH17 DEF CH18 DEF CH19 DEF CH20 DEF CH21 DEF CH22 DEF CH23 DEF CH24 DEF CH25 DEF CH26 DEF CH27 DEF CH28 DEF CH29 DEF CH30 DEF CH31 DEF CH32 DEF CH33 DEF CH34 DEF CH35 DEF CH37 DEF CH38 DEF CH39 DEF CH41 DEF CH43 DEF HLTC DEF DCH LAST DEF *-1 SKP A0077 OCT 77 COMMON CONSTANTS AND SYMBOLS A0002 OCT 2 A0003 OCT 3 A0100 OCT 100 THLT OCT 106002 TRAP CELL HALT P0000 OCT 170000 P7700 OCT 177700 NSYNC OCT 223 SYNC OCT 1 NOTTP NOP SAVA NOP SAVB NOP SAVC NOP SAVD NOP SAVE NOP HLTA OCT 106000 A REG TRAP CELL HALT HLTB OCT 106001 B REG HLTC OCT 106000 SELECTED CHANNEL DCH NOP IO NOP SRP NOP CNT1 NOP * ERROR CNT2 NOP * COUNTERS SETXX NOP SWB NOP CRL OCT 2 CRI DEF *+1 OCT 6400 CARRIAGE RETURN TABL DEF *+1 DEC -2 DEC -4 DEC -8 DEC -16 DEC -32 DEC -64 DEC -128 DEC -256 AC OCT 20060 BT158 OCT 100400 PTNC NOP WD1 NOP CHCNT NOP PAR NOP CNR NOP TRW NOP BTNM NOP A0377 OCT 377 TEMPA NOP P7400 OCT 177400 P7770 OCT 177770 A0017 OCT 17 NB4 OCT 177757 NBT5 OCT 177737 MN9 DEC -9 MN8 DEC -8 SKP BP1 OCT 32000 BP2 OCT 101000 BP3 OCT 12000 BT0 OCT 1 BT4 OCT 20 BT5 OCT 40 BT6 OCT 100 BT8 OCT 400 BT9 OCT 1000 BT10 OCT 2000 BT11 OCT 4000 BT12 OCT 10000 BT13 OCT 20000 BT14 OCT 40000 BT15 OCT 100000 CW1 OCT 140010 CW2 OCT 150010 CW3 OCT 140510 CW4 OCT 140550 CW5 OCT 140450 CW6 OCT 140020 CW7 OCT 146020 CW8 OCT 144020 CW9 OCT 140220 CW10 OCT 146220 CW11 OCT 144220 CW12 OCT 140020 CW13 OCT 146020 CW14 OCT 144020 CW15 OCT 040001 CW16 OCT 141010 CW17 OCT 140037 CWX NOP SKP J1 JSB *+1,I DEF IJ1 J2 JSB *+1,I DEF IJ2 J3 JSB *+1,I DEF IJ3 J4 JSB *+1,I DEF IJ4 E26 HLT 26B E36 HLT 36B E45 HLT 45B E54 HLT 54B E62 HLT 62B E101 OCT 103001 E126 OCT 103026 E140 OCT 103040 TTSKI DEF TTSK INDIRECT ADDRESSES JSB1 JSB R1,I INTERRUPT ROUTINE SKP ERROR DEF ERR ADDRS DEF INTPT+1 SW09I DEF SW09 SW10I DEF SW10 SWRPI DEF SWRPT BRAI DEF BRP1 BRBI DEF BRP2 BRCI DEF BRP3 SWAI DEF SWSA SWBI DEF SWRC DELAY DEF DELY DATAI DEF DATA AS0M DEF AS0 AS1M DEF AS1 AS2M DEF AS2 MI7 DEF M7 LM7 DEF L7 MI11 DEF M11 LM11 DEF L11 MSG25 DEF G25 MSG35 DEF G35 MSG44 DEF G44 MG53A DEF G53A MG53B DEF G53B MG53C DEF G53C MG53D DEF G53D MI52 DEF M52 LM52 DEF L52 MG61 DEF G61 MI70 DEF M70 LM70 DEF L70 MI77 DEF M77 LM77 DEF L77 MG00A DEF G00A MG00B DEF G00B MG00C DEF G00C MG00D DEF G00D MI110 DEF M110 LM110 DEF L110 MG25A DEF G25A MG25B DEF G25B MG25C DEF G25C MG37A DEF G37A MG37B DEF G37B MG37C DEF G37C MI145 DEF M145 LM145 DEF L145 MI154 DEF M154 LM154 DEF L154 MI163 DEF M163 LM163 DEF L163 R1 DEF RETRN STR DEF START SML DEF SL SMI DEF SM SKP B2ASC NOP OCTAL ASCII AND A0077 LDB A BRS,BRS BRS BLF,BLF AND A0007 IOR B IOR D0060 JMP B2ASC,I A0007 OCT 7 D0060 OCT 30060 ASCII PREFIXES SPC 2 PARTY NOP STUFF PARITY MODE INTO MESSAGE STB ADRS PAR IN A, ADDRESS IN B LDB AS0M SZA JMP YE LDA B,I NO PARITY YA STA ADRS,I INB LDA B,I ISZ ADRS STA ADRS,I JMP PARTY,I EXIT YE CPA A0002 JMP YO LDB AS1M EVEN PARITY LDA B,I JMP YA YO LDB AS2M ODD PARITY LDA B,I JMP YA ADRS NOP SPC 2 SWR NOP LIA 1 JMP SWR,I SPC 2 OTACH NOP CH15 OTA CH JMP OTACH,I SPC 1 LIACH NOP CH16 LIA CH JMP LIACH,I HED CONFIGURATION PROGRAM - RECEIVE INTERFACE DIAGNOSTIC ORG 1744B CFGR CLC 0,C CONFIGURATION ROUTINE LIA 1 SW REG ANYD A0077 ADA MN8 SSA,RSS SC > 7 ? JMP *+3 E73 HLT 73B SELECT CODE INPUT ERROR JMP CFGR LIA 1 AND A0077 STA IO LDB FIRST MODIFY I/O INSTRUCTIONS STB SRP L LDB SRP,I LDA B,I AND P7700 IOR IO STA B,I CPB LAST,I FINISHED? JMP *+3 YES ISZ SRP JMP L CLA LDB 112B SZB,RSS CCA STA NOTTP TELEPRINTER AVAILABLE BIT H74 HLT 74B **END OF CONFIGURATION** HED INITIALIZATION PROGRAM - RECEIVE INTERFACE DIAGNOSTIC START CLC 0,C TURN EVERYTHING OFF LDB A0002 TRAP CELL LOCATION LDA THLT TRAP CELL HALT STA B,I INB INA CPB A0100 TRAP CELL HALTS COMPLETE? RSS YES JMP *-5 NO, REPEAT JSB SW09I,I OMIT START MESSAGE? RSS NO JMP BI/O YES JSB TTSKI,I LDA CRL LDB CRI JSB TTY.O,I OUTPUT CR,LF JSB TTSKI,I LDA SML LDB SMI JSB TTY.O,I START DATA SET DIAGNOSTIC JMP BI/O HED BI/O - BASIC I/O - RECEIVE INTERFACE DIAGNOSTIC * TEST ABILITY TO SET AND CLEAR THE CHANNEL FLAG SPC 2 BI/O CLC 0,C CLF 0 LDA CW1 MASTER CLEAR - 140010 JSB OTACH CLEAR SP CHAR, ERROR JSB DELAY,I JSB LIACH AND P7400 SZA,RSS STATUS = 0? JMP HT YES STA SAVA NO, REPORT ERROR CLB STB SAVB LDB MSG25 JSB DATAI,I LDA E26 JSB BRAI,I RTN *+2 IF NO TTP SELECTED E25 JSB ERROR,I * STATUS NOT = 0 HT LDA HLTA TRAP CELL HALTS LDB HLTB CH0 STF CH CH1 CLF CH CLEAR CHANNEL FLAG CH2 SFS CH RSS ** CLF DID NOT CLEAR FLAG OR SFS E1 JSB ERROR,I CAUSED SKIP WITH FLAG CLEAR CH7 CLF CH CH3 SFC CH E2 JSB ERROR,I * SFC NO SVKIP WITH FLAG CLEAR CH4 STF CH CH5 SFC CH RSS ** STF DID NOT SET FLAG OR SFC E3 JSB ERROR,I CAUSED SKIP WITH FLAG SET CH10 STF CH CH6 SFS CH E4 JSB ERROR,I * SFS NO SKIP WITH FLAG SET CH18 STF CH CH19 CLC CH,C CH20 SFC CH * ERROR = CLC CH,C DID NOT CLEAR E24 JSB ERROR,I * FLAG OR SFC DID NOT SKIP SKP * TEST ABILITY TO ENABLE AND DISABLE INTERRUPT SYSTEM SPC 2 STF 0 ENABLE INTS CLF 0 DISABLE INTS SFS 0 IS INTERRUPT SYSTEM ON? RSS NO E17 HLT 17B * CLF 0 DID NOT DISABLE INTS OR CLF 0 * SFS 0 CAUSED BAD SKIP SFC 0 IS INT SYSTEM ON? E20 HLT 20B * CLF 0 DID NOT DISABLE INTS OR STF 0 * SFC 0 CAUSED BAD SKIP SFC 0 IS INT SYSTEM ON? RSS YES E21 JSB ERROR,I * STF 0 DID NOT ENABLE INTS OR STF 0 * SFC 0 CAUSED BAD SKIP SFS 0 IS INT SYSTEM ON? E22 JSB ERROR,I * STF 0 DID NOT ENABLE INTS OR CLF 0 * SFS 0 CAUSED BAD SKIP SKP * TEST INTERRUPT CAPABILITY SPC 2 LDA JSB1 SET INTERRUPT TRAP CELL STA DCH,I LDA HLTA TRAP CELL HALTS LDB HLTB CH8 STC CH SET CHANNEL TO REQUEST CH9 STF CH AN INTERRUPT STF 0 ENABLE INTERRUPTS STC 1 * INTERRUPTS STF 1 SHOULD CLC 1 BE CLF 1 DELAYED JMP *+1,I UNTIL DEF *+1 . JSB *+1,I . DEF *+1 . NOP . INTPT NOP * HERE E5 JSB ERROR,I * DID NOT INTERRUPT JMP TCR SPC 1 RETRN NOP INTERRUPT SUBROUTINE CLF 0 DISABLE INTERRUPTS LDA J1 IJ1 INTERRUPT ROUTINE STA DCH,I STF 0 TEST INTERRUPT ACKNOWLEDGE NOP * SHOULD NOT NOP e INTERRUPT HERE CLF 0 DISABLE INT LDA RETRN DID INTERRUPT OCCUR AT THE CPA ADDRS CORRECT MEM LOCATION? RSS E6 JSB ERROR,I * RETURN ADDRESS IS INCORRECT STB RETRN CHANGE RETRN JMP TCR SPC 1 IJ1 NOP CLF 0 E14 JSB ERROR,I * INTERRUPT ACKNOWLEDGE DID NOT JMP GOOD * WORK. TEST ABORTED SKP * TEST CONTROL RESET SPC 2 TCR LDA J2 IJ2 INTERRUPT ROUTINE STA DCH,I LDA HLTA LDB HLTB CH11 STC CH SET CONTROL CH12 STF CH CLC 0 SHOULD CLEAR ALL CONTROL BITS STF 0 ENABLE NOP ** SHOULD NOT NOP INTERRUPT HERE CLF 0 DISABLE INTS TCR2 LDA J4 STA DCH,I IJ4 INTERRUPT ROUTINE LDA HLTA LDB HLTB CH33 STC CH CH34 STF CH CH17 CLC CH CLEAR CHANNEL CONTROL BIT STF 0 ENABLE INTS NOP ** SHOULD NOT NOP INTERRUPT HERE CLF 0 JMP PRSET SPC 1 IJ2 NOP CLF 0 E15 JSB ERROR,I * CLC 0 DID NOT CLEAR CONTROL JMP TCR2 * FLIP-FLOP IJ4 NOP CLF 0 E23 JSB ERROR,I * CLC 0 ON CHANNEL DID NOT CLEAR JMP PRSET * CONTROL FLIP-FLOP SKP * PRESET TEST SPC 2 PRSET JSB SW10I,I OMIT TEST? RSS NO JMP GOOD YES JSB TTSKI,I LDA LM7 LDB MI7 JSB TTY.O,I LDA HLTA LDB HLTB CH13 STC CH,C SET CONTROL, CLEAR FLAG STF 0 ENABLE INTS H7 HLT 7 ** PRESS PRESETS, THEN PRESS RUN CH14 SFS CH IS FLAG SET? JMP *+4 NO SFC 0 YES, IS INT SYSTEM DISABLED? E12 JSB ERROR,I * PRESET DID NOT DISABLE INTS JMP CL YES SFC 0 JMP E13 E10 JSB ERROR,I * PRESET DID NOT SET FLAG JMP GOOD E13 JSB ERROR,I * PRESET DID NOT SET FLAG AND JMP GOOD * DID NOT DISABLE INTS CL LDA J3 IJ3 INTERRUPT ROUTINE STA DCH,I CHECK FOR A CLC 0 BY PRESET LDA HLTA LDB HLTB STF 0 ENABLE INTS NOP SHOULD NOT INTERRUPT HERE NOP CLF 0 JMP GOOD SPC 1 IJ3 NOP CLF 0 E16 JSB ERROR,I * PRESET DID NOT CLEAR CONTROL SPC 1 GOOD CLC 0,C TURN EVERYTHING OFF LDA HLTC STA DCH,I RESET TRAP CELL HALT JSB SWAI,I CONTINUE AUTOMATIC? JMP EBIO YES JSB TTSKI,I RUN SEMI-AUTO LDA LM11 LDB MI11 JSB TTY.O,I LIST H11 HLT 11B END BI/O EBIO JSB SWBI,I RECYCLE TEST? JMP BI/O YES, REPEAT JMP FCTST NO, EXIT HED FCTST - FUNCTION-STATUS - RECEIVE INTERFACE DIAGNOSTIC FCTST NOP TST1 LDA CW2 150010 SET CD JSB OTACH JSB DELAY,I JSB LIACH AND BT11 CE,CD = 1? SZA,RSS E31 JSB ERROR,I * CD,CE NOT 1 CH21 CLF CH CH22 SFS CH FLAG SHOULD BE SET (AGAIN) BY CE E32 JSB ERROR,I * FLAG NOT SET SPC 2 TST2 LDA CW1 140010 RESET CD JSB OTACH . JSB DELAY,I JSB LIACH AND BT11 SZA CD,CE = 0? E33 JSB ERROR,I * NOT ZERO CH23 CLF CH CH24 SFC CH FLAG SHOULD STAY CLEAR E34 JSB ERROR,I * FLAG NOT CLEAR SPC 2 TST3 LDA CW3 140510 SET SA JSB OTACH STATUS FLAGS ENABLED JSB DELAY,I JSB LIACH AND BP1 CPA BP3 CF,SA,BB = 1; CC,TEST = 0? JMP CH25 YES STA SAVA NO, REPORT ERROR LDB BP3 STB SAVB LDB MSG35 JSB DATAI,I LDA E36 JSB BRAI,I RTN *+2 IF NO TTP SELECTED E35 JSB ERROR,I * STATUS ERROR CH25 CLF CH CH26 SFS CH FLAG SHOULD BE SET (AGAIN) BY CC E41 JSB ERROR,I * FLAG NOT SET SPC 2 TST4 LDA CW4 140550 SET TEST JSB OTACH JSB DELAY,I JSB LIACH AND BT13 SZA,RSS CC,TEST = 1? E42 JSB ERROR,I * STATUS ERROR BIT 13 CH27 CLF CH CH28 SFC CH FLAG SHOULD STAY CLEAR E43 JSB ERROR,I * FLAG SHOULD BE CLEAR SPC 2 TST5 LDA CW5 140450 RESET SA JSB OTACH JSB DELAY,I JSB LIACH AND BP1 CPA BT13 CF,SA,BB = 0; TEST = 1? JMP CH29 YES STA SAVA NO, REPORT ERROR LDB BT13 STB SAVB LDB MSG44 JSB DATAI,I LDA E45 JSB BRAI,I RTN *+2 IF NO TTP SELECTED E44 JSB ERROR,I * STATUS ERROR CH29 CLF CH CH30 SFS CH CF SHOULD HOLD FLAG SET E50 JSB ERROR,I * FLAG SHOULD BE SET SPC 2 TST6 LDA CW1 140010 JSB OTACH DISABLE STATUS LINE FLAGS CH31 CLF CH CH32 SFC CH FLAGS SHOULD STAY CLEAR E51 JSB ERROR,I * FLAG SET SPC 3 JSB SWAI,I CONTINUE AUTOMATIC? JMP EFCT YES JSB TTSKI,I NO LDA LM52 LDB MI52 JSB TTY.O,I H52 HLT 52B END FCTST EFCT JSB SWBI,I RECYCLE TEST? JMP FCTST YES JMP RECVP NO, EXIT HED RECVP - RECEIVE PATTERN - RECEIVE INTERFACE DIAGNOSTIC RECVP NOP LDA CW1 MASTER CLEAR - 140010 JSB OTACH JSB DELAY,I SPC 2 LDA CW6 NO PARITY RECEIVE - 140020 JSB INP RECNP JSB RCV RECEIVE ALL PATTERNS JSB SETNP FOR 8 BITS LDA MN9 OF DATA ADA CHCNT SZA JMP RECNP SPC 2 LDA CW7 ODD PARITY RECEIVE - 146020 JSB IOP RECOP JSB RCV RECEIVE ALL PATTERNS JSB SETOP FOR 7 BITS LDA MN8 OF DATA ADA CHCNT SZA JMP RECOP SPC 2 LDA CW8 EVEN PARITY RECEIVE - 144020 JSB IEP RECEP JSB RCV RECEIVE ALL PATTERNS JSB SETEP FOR 7 BITS LDA MN8 OF DATA ADA CHCNT SZX<:6A JMP RECEP SPC 2 JSB SWAI,I CONTINUE AUTO? JMP ESEND YES JSB TTSKI,I NO LDA LM70 LDB MI70 JSB TTY.O,I LIST H70 HLT 70B END RECVP ESEND JSB SWBI,I RECYCLE TEST? JMP RECVP YES JMP SPCHR NO, EXIT SKP RCV NOP JSB PRTY READY DATA OUT JSB SEND SEND DATA OUT AND JSB LIACH RETURN IT HERE STA TEMPA AND A0377 CPA WD1 DATA COMPARE OK? JMP CHSTT YES STA SAVE NO, REPORT ERROR LDB MG53D WORD RECEIVED JSB DATAI,I LDA WD1 STA SAVD O<  12621-18002 1532 S 0122 REC SYNC DATA SET              H0101 T LDB MG53C WORD SENT JSB DATAI,I LDA CHCNT STA SAVB IOR AC ASCII STA MG53B,I NO. OF BITS IN WORD LDA PAR STA SAVA LDB MG53A STUFF PROPER PARITY MODE INTO JSB PARTY MESSAGE LDA E54 JSB BRCI,I RTN *+2 IF NO TTP SELECTED E53 JSB ERROR,I * ERROR * CHSTT LDA TEMPA CHECK STATUS AND BT158 100400 CPA BT15 15 SHOULD BE 1, BIT 8 = 0 JMP CH37 (STATUS OK) STA SAVA REPORT STATUS ERROR LDB MG61 JSB DATAI,I LDA BT15 STA SAVB LDA E62 JSB BRAI,I RTN *+2 IF NO TTP SELECTED E61 JSB ERROR,I * STATUS ERROR CH37 SFS CH CHECK FLAG E67 JSB ERROR,I * FLAG NOT SET - ERROR ISZ CNR INCREMENT PATTERN LDA PTNC,I PATTERN COUNT ADA CNR SZA FINISHED WITH ALL PATTERNS? JMP RCV+1 NO, REPEAT JMP RCV,I YES, EXIT SKP PRTY NOP SET PARITY BIT INTO DATA LDA CNR STA WD1 LDA CHCNT CMA,INA STA CHC STA CHD LDA PAR 0 = NO, 1 = ODD, 2 = EVEN PARITY SZA,RSS JMP PRTY,I NO PARITY, EXIT CPA A0002 JMP EVN EVEN PARITY JSB PADD ODD PARITY CMA EVEN AND BT0 ALR ISZ CHD JMP *-2 IOR WD1 INCLUDE APPROPRIATE PARITY BIT STA WD1 JMP PRTY,I EVN JSB PADD JMP EVEN SPC 2 PADD NOP LDB WD1 DATA TO B CLA ADA B BRS ISZ CHC JMP *-3 JMP PADD,I PARITY BIT IN A0 CHC NOP CHD NOP SKP SEND NOP SEND BITS TO INTERFACE (RETRIEVE LDA BTNM LATER) IOR P7770 STA CHE NO. OF BITS BEFORE FINAL SET LDA BTNM CMA,INA STA CHF NO. OF BITS IN FINAL SET AND A0007 IF 8 BIT MODE SELECTED, OMIT LDB WD1 C SEND FIRST SET SZA,RSS FIRST PART AND SEND ONLY FINAL JMP CLCC CLC 0 HERE1 JSB SENDC BRS ISZ CHE JMP HERE1 CLCC CLC 0 HERE2 JSB SENDC SEND FINAL SET BRS ISZ CHF JMP HERE2 JMP SEND,I CHE NOP CHF NOP SPC 2 SENDC NOP CHARACTER IN B JSB DEL10 CH35 CLF CH LDA TRW SLB,RSS IOR BT6 DATA BIT IOR BT5 WITH CLOCK = 1 JSB OTACH AND NBT5 DATA BIT WITH CLOCK = 0 JSB OTACH JSB DEL10 JMP SENDC,I SKP INP NOP NO PARITY INITIALIZATION STA CWX CLA,INA STA CHCNT CHARACTER SIZE, START WITH 1 BIT STA BTNM BITS PLUS PARITY CLA STA PAR 0 = NO PARITY STA CNR PATTERN COUNTER = 0 LDA TABL MAX COUNT OF PATTERNS REQUIRED STA PTNC FOR DIFFERENT CHAR. SIZES LDA CHCNT CMA,INA AND A0017 IOR CWX BASIC CONTROL WORD STA TRW JMP INP,I SPC 2 IOP NOP ODD PARITY INITIALIZATION STA CWX CLA STA CNR CLA,INA STA CHCNT STA PAR 1 = ODD PARITY LDA TABL STA PTNC LDA CHCNT CMA AND A0017 IOR CWX STA TRW LDA A0002 STA BTNM JMP IOP,I SPC 2 IEP NOP EVEN PARITY INITIALIZATION JSB IOP ISZ PAR JMP IEP,I SKP SETNP NOP SET NO PARITY TABLES ISZ CHCNT ISZ PTNC CLA STA CNR LDA CHCNT CMA,INA AND A0017 IOR CWX STA TRW LDA CHCNT STA BTNM JMP SETNP,I SPC 2 SETOP EQU * SETEP NOP SET EVEN PARITY TABLES ISZ CHCNT ISZ PTNC CLA STA CNR LDA CHCNT CMA AND A0017 IOR CWX STA TRW LDA CHCNT  INA STA BTNM JMP SETEP,I SKP DEL10 NOP DELAY AT LEAST 10 MICROSECONDS NOP NOP NOP NOP NOP NOP JMP DEL10,I HED SPCHR - SPECIAL CHARACTER - RECEIVE INTERFACE DIAGNOSTIC SPCHR NOP LDA CW9 140220 - SPECIAL CHAR FLG ENABLD JSB INP SPNP JSB SPRN NO PARITY MODE JSB SETNP LDA MN9 ADA CHCNT REPEAT 8 TIMES SZA JMP SPNP SPC 2 LDA CW10 146220 - SPECIAL CHAR FLG ENABLD JSB IOP SPOP JSB SPRN ODD PARITY MODE JSB SETOP LDA MN8 ADA CHCNT REPEAT 7 TIMES SZA JMP SPOP SPC 2 LDA CW11 144220 - SPECIAL CHAR FLG ENABLD JSB IEP SPEP JSB SPRN JSB SETEP LDA MN8 ADA CHCNT REPEAT 7 TIMES SZA JMP SPEP SPC 2 LDA CW9 SET SPECIAL CHARACTER BUT SEND JSB INP DIFFERENT DATA JSB PRTY LDA WD1 JSB OTACH SET SP CHAR CMA STA WD1 JSB SEND SEND DATA JSB LIACH INPUT STATUS AND BT9 CPA BT9 IS SPECIAL CHARACTER BIT SET? E107 JSB ERROR,I * YES, REPORT ERROR * JSB SWAI,I CONTINUE AUTO? JMP SPF YES JSB TTSKI,I NO LDA LM110 LDB MI110 JSB TTY.O,I LIST H110 OCT 103010 HLT - END SPCHR SPF JSB SWBI,I RECYCLE TEST? JMP SPCHR YES JMP SYNCH NO SKP SPRN NOP JSB PRTY READY DATA LDA WD1 JSB OTACH SET DATA TO SPECIAL CHARACTER JSB SEND SEND DATA TO INTERFACE JSB LIACH RETURN DATA HERE STA TEMPA AND BP2 CPA BP2 BIT 15,9 = 1? JMP CH38 YES, CHECK FLAG STA SAVE NO, REPORT ERROR LDB MG00D JSB DATAI,I STATUS INTO MSG LDA PAR STA SAVA LDB MG00A STUFF PROPER PARITY MODE I=NTO JSB PARTY MESSAGE LDA CHCNT NO. OF BITS STA SAVB IOR AC STA MG00B,I LDA WD1 DATA WORD STA SAVD LDB MG00C JSB DATAI,I LDA E101 JSB BRCI,I RTN *+2 IF NO TTP SELECTED E100 JSB ERROR,I * STATUS ERROR CH38 SFS CH CHECK FLAG E106 JSB ERROR,I * FLAG NOT SET ISZ CNR INCREMENT PATTERN LDA PTNC,I PATTERN COUNT ADA CNR SZA FINISHED WITH ALL PATTERNS? JMP SPRN+1 NO, REPEAT JMP SPRN,I YES, EXIT HED SYNCH - SYNC CHARACTER - RECEIVE INTERFACE DIAGNOSTIC SYNCH NOP LDA CW12 140020 - SYNC CODE FLAG ENABLED JSB INP SYNP JSB SYRN NO PARITY MODE JSB SETNP LDA MN9 ADA CHCNT REPEAT 8 TIMES SZA JMP SYNP SPC 2 LDA CW13 146020 JSB IOP SYOP JSB SYRN ODD PARITY MODE JSB SETOP LDA MN8 ADA CHCNT REPEAT 7 TIMES SZA JMP SYOP SPC 2 LDA CW14 144020 JSB IEP SYEP JSB SYRN EVEN PARITY MODE JSB SETEP LDA MN8 ADA CHCNT REPEAT 7 TIMES SZA JMP SYEP JSB SWAI,I CONTINUE AUTO? JMP SPY YES JSB TTSKI,I NO LDA LM145 LDB MI145 JSB TTY.O,I LIST H145 OCT 103045 HLT - END SYNCH SPY JSB SWBI,I RECYCLE TEST? JMP SYNCH YES JMP LOCKN NO SKP SYRN NOP JSB PRTY READY DATA LDA WD1 IOR BT14 CONTROL WORD JSB OTACH SET DATA TO SYNC CODE JSB SEND SEND DATA TO INTERFACE JSB LIACH RETURN DATA HERE SSA BIT 15 SET? JMP CH39 YES, CHECK FLAG LDA PAR NO, REPORT ERROR STA SAVA LDB MG25A STUFF PROPER PARITY MODE INTO JSB PARTY MESSAGE LDA CHCNT NO. OF BITS STA SAVB IOR AC STA MG25B,I LDA WD1 DATA WORD STA SAVD LDB MG25C JSB DATAI,I LDA E126 JSB BRBI,I RTN *+2 IF NO TTP SELECTED E125 JSB ERROR,I * STATUS ERROR, BIT 15 NOT SET CH39 SFS CH CHECK FLAG E134 JSB ERROR,I * FLAG NOT SET LDA TRW AND NB4 REMOVE BIT 4 FROM CONTROL WORD STA TRW JSB SEND SEND DATA AGAIN JSB LIACH SSA,RSS IS BIT 15 SET? JMP E137+1 NO LDA PAR YES, REPORT ERROR STA SAVA LDB MG37A STUFF PROPER PARITY MODE INTO JSB PARTY MESSAGE LDA CHCNT NO. OF BITS STA SAVB IOR AC STA MG37B,I LDA WD1 DATA WORD STA SAVD LDB MG37C JSB DATAI,I LDA E140 JSB BRBI,I RTN *+2 IF NO TTP SELECTED E137 JSB ERROR,I * STATUS ERROR, BIT 15 SET. LDA TRW IOR BT4 ADD BIT 4 TO CONTROL WORD STA TRW ISZ CNR INCREMENT PATTERN LDA PTNC,I PATTERN COUNT ADA CNR SZA FINISHED WITH ALL PATTERNS? JMP SYRN+1 NO, REPEAT JMP SYRN,I YES, EXIT HED LOCKN - LOCK-ON DATA TEST - RECEIVE INTERFACE DIAGNOSTIC LOCKN NOP LDA CW15 040001 JSB OTACH SET SYNC PATTERN IN INTERFACE LDA MN8 STA CHE LDA CW16 141010 STA TRW LDB NSYNC SEND NON-SYNC PATTERN CLC 0 RPT1 JSB SENDC BRS ISZ CHE JMP RPT1 JSB LIACH GET STATUS AND BT14 CPA BT14 RSS E150 JSB ERROR,I * BIT 14 NOT SET CH41 SFC CH E151 JSB ERROR,I * FLAG SET AND SHOULD BE CLEAR CLE TRP LDA MN8 STA CHE LDB SYNC SEND 1ST SYNC PATTERN CLC 0 RPT2 JSB SENDC BRS ISZ CHE JMP RPT2 CME SEZ JMP TRP SEND 2ND SYNC PATTERN JSB LIACH INPUT STATUS AND BT14 SZA E152 JSB ERROR,I s * BIT 14 SET AND SHOULD BE 0 CH43 SFC CH E153 JSB ERROR,I * FLAG SET AND SHOULD BE CLEAR JSB SWAI,I CONTINUE AUTO? JMP LOC YES JSB TTSKI,I NO LDA LM154 LDB MI154 JSB TTY.O,I H154 OCT 103054 HLT - END LOCKN LOC JSB SWBI,I RECYCLE TEST? JMP LOCKN YES JMP ERRFF NO HED ERRFF - ERROR FLIP-FLOP - RECEIVE INTERFACE DIAGNOSTIC ERRFF NOP LDA CW8 EVEN PARITY RECEIVE CONTROL WORD JSB IOP ODD PARITY SETUP JSB PRTY JSB SEND SEND INCORRECT PARITY DATA TO JSB LIACH FORCE ERROR FLIP-FLOP TO SET AND BT8 SZA,RSS ERROR BIT SET? E160 JSB ERROR,I * NO, ERROR BIT NOT SET SPC 2 LDA CW7 ODD PARITY RECEIVE CONTROL WORD JSB IEP EVEN PARITY SETUP JSB PRTY JSB SEND JSB LIACH AND BT8 SZA,RSS ERROR BIT SET? E161 JSB ERROR,I * NO, REPORT ERROR IN ERROR BIT SPC 2 LDA CW17 NO PARITY, ONE BIT CHARACTER STA TRW SIZE CONTROL WORD CLC 0 JSB SENDC SEND ANY CHARACTER TWICE WITHOUT LDA TRW A CLF - THIS SHOULD FORCE THE SLB,RSS ERROR FLIP-FLOP TO SET IOR BT6 DATA BIT IOR BT5 WITH CLOCK = 1 JSB OTACH AND NBT5 DATA BIT WITH CLOCK = 0 JSB OTACH JSB DEL10 JSB LIACH GET STATUS AND BT8 SZA,RSS ERROR BIT SET? E162 JSB ERROR,I * NO, REPORT ERROR JSB SWAI,I CONTINUE AUTO? JMP ERSD YES JSB TTSKI,I NO LDA LM163 LDB MI163 JSB TTY.O,I LIST H163 OCT 103063 HLT - END ERRFF ERSD JSB SWBI,I RECYCLE TEST? JMP ERRFF YES JMP END NO, EXIT HED END - COMMON SUBROUTINES - RECEIVE INTERFACE DIAGNOSTIC END NOP JSB SW09I,I OMIT STOP MESSAGE? RSS NO JMP RETR-1 JSB TTSKI,I  LDA LM77 LDB MI77 JSB TTY.O,I TELL OPERATOR TEST IS FINISHED JMP EXRTN,I RETR JSB SWRPI,I REPEAT TEST AUTO? H77 HLT 77B NO JMP STR,I SPC 2 *** SUBROUTINES *** SPC 2 DATA NOP CHANGE DATA IN A TO ASCII AND STA DX STORE IN LOCATION IN B STB DADD JSB B2ASC CHANGE TWO LEAST SIG CH TO ASCII LDB DADD ADB A0002 MODIFY ADDRESS STA B,I STORE TWO CHARACTERS LDA DX ALF,ALF RAL,RAL JSB B2ASC CHANGE NEXT TWO CH TO ASCII LDB DADD INB MODIFY ADDRESS STA B,I STORE TWO CHARACTERS LDA DX AND P0000 ALF JSB B2ASC CHANGE TWO MOST SIG CH TO ASCII STA DADD,I STORE FINAL TWO CHARACTERS JMP DATA,I EXIT DX BSS 1 DATA TO BE CONVERTED DADD BSS 1 ADDRESS WHERE ASCII CH MUST GO SPC 2 DELY NOP DELAYS A FEW HUNDRED MSEC CLA INA,SZA JMP *-1 JMP DELY,I SPC 2 SWEH NOP CHECK SW REG BIT 14 FOR HALT LDB SWEH ON ERRORS INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT14 SZA JMP B,I NO HALT - RETURN *+2 JMP SWEH,I HLT ON ERRORS - RETURN *+1 SPC 1 SWTP NOP CHECK SW REG BIT 11 FOR TTP LDB SWTP SUPPRESSED INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT11 SZA JMP SWTP,I TTP IS SUPPRESSED - RTN *+1 LDA NOTTP SZA JMP SWTP,I TTP NOT AVAILABLE, RTN *+1 JMP B,I NOT SUPPRESSED - RETURN *+2 SPC 1 SWRC NOP CHECK SW REG BIT 13 FOR RECYCLE LDB SWRC LAST TEST INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT13 SZA JMP SWRC,I RECYCLE LAST TEST - RETURN *+1 JMP B,I NO RECYCLE RETURN *+2 SPC 1 SWSA NOP CHECK SW REG BIT 15 FOR HALT AT LDB SWSA END OF TEST INB JSB SWR LDA WITH INTERNAL OR EXT SW REG SSA JMP B,I RUN SEMI-AUTO - RETURN *+2 JMP SWSA,I CONTINUE AUTO - RETURN *+1 SPC 1 SWRPT NOP CHECK SW REG BIT 12 FOR HALT AT LDB SWRPT END OF DIAGNOSTIC INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT12 SZA,RSS JMP SWRPT,I BIT SET - RETURN *+1 AND HALT JMP B,I REPEAT TEST - RETURN *+2 SPC 2 SW09 NOP CHECK TO OMIT START AND STOP LDB SW09 MESSAGES INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT9 SZA,RSS OMIT MESSAGE? JMP SW09,I NO JMP B,I YES SPC 2 SW10 NOP CHECK TO OMIT PRESET AND CKFRQ LDB SW10 TESTS INB JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT10 SZA OMIT TEST? JMP SW10,I NO JMP B,I YES SPC 2 * TWO ERRORS PLUS SW REG SPC 2 BRP1 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP BRP1,I RTN *+1 LDA SAVA JSB EY4R LDA SAVB JSB EY4R LDA SAVC JSB EY4R ISZ BRP1 JMP BRP1,I RETURN *+2 SPC 2 * THREE ERRORS PLUS SW REG SPC 2 BRP2 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP BRP2,I RTN *+1 LDA SAVA JSB EY4R LDA SAVB JSB EY4R LDA SAVD JSB EY4R LDA SAVC JSB EY4R ISZ BRP2 JMP BRP2,I RETURN *+2 SPC 2 * FOUR ERRORS PLUS SW REG SPC 2 BRP3 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP BRP3,I RTN *+1 LDA SAVA JSB EY4R LDA SAVB JSB EY4R LDA SAVD JSB EY4R LDA SAVE JSB EY4R LDA SAVC RESTORE SW REG JSB EY4R ISZ BRP3 JMP BRP3,I RETURN *+2 SPC 2 INR NOP ** RETURN *+2 IF NO STA EY4 TTP SELECTED LDA NOTTP SZA,RSS JMP INR,I RTN *+1 LIA 1 STA SAVC SAVE SW REG ISZ INR JMP INR,I RTN *+2 SPC 2 EY4R NOP ** OUTPUT TO SWITCH REGISTER OTA 1 LDB SAVC RBL SSB,RSS HALT SELECTED? EY4 HLT 0 YES ISZ EY4 JMP EY4R,I SPC 2 ERR NOP ERROR REPORTING ROUTINE CLF 0 DISABLE INTERRUPTS CCB ADB ERR LDA FER FIND ERROR NUMBER BASED ON RETRN CPB A,I ADDRESS AND TABLE JMP *+5 FOUND IT INA CPA LER END OF TABLE? JMP ERR,I YES, EXIT ERROR ROUTINE JMP *-5 CONTINUE SEARCH ADA FERC NORMALIZE NUMBER STA SETXX JSB SWTP TTP SUPPRESSED? JMP NOH YES LDA SETXX NO LDB FMI MESSAGE ADDRESS TABLE ADB A LDB B,I MESSAGE ADDRESS INTO B ADA FML LDA A,I MESSAGE LENGTH INTO A JSB TTY.O,I TYPE MESSAGE NOH ISZ CNT2 COUNT ALL ERRORS RSS ISZ CNT1 NOP LDB CHLT CODED HALT TABLE ADB SETXX LDB B,I CODED HALT IN B STB EXX JSB SWEH ERROR HALT? EXX HLT 0 YES, SO HALT JMP ERR,I SPC 2 TTSK NOP CHECKS FOR PRINTOUT SELECTION CLF 0 DISABLE INTERRUPTS LDB TTSK ADB A0003 MODIFY RETURN ADDRESS STB SWB JSB SWTP TTP SUPPRESSED? JMP SWB,I YES, SKIP PRINTOUT JMP TTSK,I NO, EXIT AND PRINT SPC 2 *** MESSAGES *** SPC 2 SUP AS0 ASC 2, NO AS1 ASC 2, ODD AS2 ASC 2,EVEN M1 ASC 17,E1. CLF DID NOT CLEAR FLAG, OR SF^S ASC 14, CAUSED SKIP WITH FLAG CLEAR L1 EQU *+*-M1-M1 M2 ASC 18,E2. SFC DID NOT SKIP WITH FLAG CLEAR L2 EQU *+*-M2-M2 M3 ASC 20,E3. STF DID NOT SET FLAG, OR SFC CAUSED ASC 9,SKIP WITH FLAG SET L3 EQU *+*-M3-M3 M4 ASC 17,E4. SFS DID NOT SKIP WITH FLAG SET L4 EQU *+*-M4-M4 M5 ASC 11,E5. DID NOT INTERRUPT L5 EQU *+*-M5-M5 M6 ASC 19,E6. THE RETURN ADDRESS IS NOT CORRECT L6 EQU *+*-M6-M6 M7 ASC 20,H7. PRESS INTERNAL AND EXTERNAL PRESET, ASC 07,THEN PRESS RUN L7 EQU *+*-M7-M7 M10 ASC 18,E10. EXTERNAL PRESET DID NOT SET THE ASC 03, FLAG L10 EQU *+*-M10-M10 M11 ASC 7,H11. END BI/O L11 EQU *+*-M11-M11 M12 ASC 18,E12. INTERNAL PRESET DID NOT DISABLE ASC 06, INTERRUPTS L12 EQU *+*-M12-M12 M13 ASC 19,E13. EXTERNAL PRESET DID NOT SET FLAG OCT 6412 ASC 18,AND INTERNAL PRESET DID NOT DISABLE ASC 05,INTERRUPTS L13 EQU *+*-M13-M13 M14 ASC 17,E14. INTERRUPT ACKNOWLEDGE DID NOT ASC 10, WORK. TEST ABORTED. L14 EQU *+*-M14-M14 M15 ASC 16,E15. CLC 0 DID NOT CLEAR CONTROL ASC 5, FLIP-FLOP L15 EQU *+*-M15-M15 M16 ASC 17,E16. EXTERNAL PRESET DID NOT CLEAR ASC 04, CONTROL L16 EQU *+*-M16-M16 M21 ASC 16,E21. STF 0 OR SFC 0 DID NOT WORK L21 EQU *+*-M21-M21 M22 ASC 16,E22. STF 0 OR SFS 0 DID NOT WORK L22 EQU *+*-M22-M22 M23 ASC 17,E23. CLC ON CHANNEL DID NOT CLEAR ASC 4,CONTROL L23 EQU *+*-M23-M23 M24 ASC 20,E24. CLC CH,C DID NOT CLEAR FLAG OR SFC ASC 14,DID NOT SKIP WITH FLAG CLEAR L24 EQU *+*-M24-M24 M25 ASC 11,E25. STATUS BITS ARE G25 ASC 14,XXXXXX AND SHOULD BE 000000 L25 EQU *+*-M25-M25 M31 ASC 19,E31. INCORRECT STATUS. BIT 11 NOT SET L31 EQU *+*-M31-M31 M32 ASC 9,E32. FLAG NOT SET L32 EQU *+*-M32-M32 M33 ASC 17,E33. INCORRECT STATUS. BIT 11 SET L33 EQU *+*-M33-M33 M34 ASC 17,E34. FLAG SET AND SHOULD BE CLEAR L34 EQU *+*-M34-M34 M35 ASC 11,E35. STj>ATUS BITS ARE G35 ASC 14,XXXXXX AND SHOULD BE 012000 L35 EQU *+*-M35-M35 M41 ASC 9,E41. FLAG NOT SET L41 EQU *+*-M41-M41 M42 ASC 19,E42. INCORRECT STATUS. BIT 13 NOT SET L42 EQU *+*-M42-M42 M43 ASC 17,E43. FLAG SET AND SHOULD BE CLEAR L43 EQU *+*-M43-M43 M44 ASC 11,E44. STATUS BITS ARE G44 ASC 14,XXXXXX AND SHOULD BE 020000 L44 EQU *+*-M44-M44 M50 ASC 9,E50. FLAG NOT SET L50 EQU *+*-M50-M50 M51 ASC 17,E51. FLAG SET AND SHOULD BE CLEAR L51 EQU *+*-M51-M51 M52 ASC 7,H52. END FCTST L52 EQU *+*-M52-M52 M53 ASC 18,E53. ERROR IN RECEIVE PATTERN TEST. G53A ASC 13,XXXX PARITY MODE SELECTED, OCT 6412 ASC 9,CHARACTER SIZE IS G53B ASC 14,XX BITS, WORD RECEIVED WAS G53D ASC 11,XXXXXX AND SHOULD BE OCT 6412 G53C ASC 3,XXXXXX L53 EQU *+*-M53-M53 M61 ASC 17,E61. STATUS ERROR IN RECEIVE TEST. ASC 5, STATUS IS OCT 6412 G61 ASC 14,XXXXXX AND SHOULD BE 100000 L61 EQU *+*-M61-M61 M67 ASC 19,E67. FLAG NOT SET AFTER RECEIVE CYCLE L67 EQU *+*-M67-M67 M70 ASC 7,H70. END RECVP L70 EQU *+*-M70-M70 M77 ASC 17,H77. DIAGNOSTIC HAS BEEN COMPLETED L77 EQU *+*-M77-M77 SM ASC 12,H8. START RECEIVE (ONLY) ASC 11, INTERFACE DIAGNOSTIC SL EQU *+*-SM-SM M100 ASC 20,E100. ERROR IN SPECIAL CHARACTER TEST. G00A ASC 13,XXXX PARITY MODE SELECTED, OCT 6412 ASC 9,CHARACTER SIZE IS G00B ASC 11,XX BITS, DATA WORD IS G00C ASC 13,XXXXXX. STATUS RECEIVED IS OCT 6412 G00D ASC 14,XXXXXX AND SHOULD BE 101000 L100 EQU *+*-M100-M100 M106 ASC 16,E106. FLAG NOT SET AFTER SPECIAL ASC 8, CHARACTER TEST L106 EQU *+*-M106-M106 M107 ASC 17,E107. SPECIAL CHARACTER BIT IS SET L107 EQU *+*-M107-M107 M110 ASC 8,H110. END SPCHR L110 EQU *+*-M110-M110 M125 ASC 19,E125. ERROR IN SYNC CODE TEST. BIT 15 ASC 6,IS NOT SET. G25A ASC 8,XXXX PARITY MODE OCT 6412 ASC 14,SELECTED, CHARACTER SIZE IS G25B ASC 11,XX BITS, DATA WORD LHFBIS G25C ASC 4,XXXXXX. L125 EQU *+*-M125-M125 M134 ASC 20,E134. FLAG NOT SET AFTER SYNC CODE TEST L134 EQU *+*-M134-M134 M137 ASC 19,E137. ERROR IN SYNC CODE TEST. BIT 15 ASC 4,IS SET. G37A ASC 13,XXXX PARITY MODE SELECTED, OCT 6412 ASC 9,CHARACTER SIZE IS G37B ASC 11,XX BITS, DATA WORD IS G37C ASC 4,XXXXXX. L137 EQU *+*-M137-M137 M145 ASC 8,H145. END SYNCH L145 EQU *+*-M145-M145 M150 ASC 10,E150. BIT 14 NOT SET L150 EQU *+*-M150-M150 M151 ASC 17,E151. FLAG SET AND SHOULD BE CLEAR L151 EQU *+*-M151-M151 M152 ASC 18,E152. BIT 14 SET AND SHOULD BE CLEAR L152 EQU *+*-M152-M152 M153 ASC 17,E153. FLAG SET AND SHOULD BE CLEAR L153 EQU *+*-M153-M153 M154 ASC 8,H154. END LOCKN L154 EQU *+*-M154-M154 M160 ASC 18,E160. ERROR BIT 8 NOT SET WITH EVEN OCT 6412 ASC 20,PARITY CONTROL WORD AND ODD PARITY DATA L160 EQU *+*-M160-M160 M161 ASC 17,E161. ERROR BIT 8 NOT SET WITH ODD ASC 10, PARITY CONTROL WORD OCT 6412 ASC 10,AND EVEN PARITY DATA L161 EQU *+*-M161-M161 M162 ASC 20,E162. ERROR BIT 8 NOT SET WITH TWO DATA OCT 6412 ASC 17,TRANSFERS WITHOUT A CLF ON CHANNEL L162 EQU *+*-M162-M162 M163 ASC 8,H163. END ERRFF L163 EQU *+*-M163-M163 FWAM EQU * FIRST WORD AVAILABLE MEMORY END H  12622-18001 1532 S 0122 SEND SYNC DATA SET              H0101 /UASMB,A,B,L,C HED SEND (ONLY) INTERFACE DIAGNOSTIC ORG 100B JMP CFGR GO TO CONFIGURATION TTY.I BSS 1 TAPE INPUT TTY.O BSS 1 LIST OUTPUT TTY.P BSS 1 PUNCH OUTPUT TTY.K BSS 1 KEYBOARD INPUT DEF FWAM FIRST WORD AVAILABLE MEMORY ORG 126B OCT 103013 DSN BSS 1 EXRTN DEF H77-1 SKP A EQU 0 B EQU 1 CH EQU 10B FERC ABS -FER FER DEF *+1 ERROR NUMBER TABLE DEF E0 DEF E1 DEF E2 DEF E3 DEF E4 DEF E5 DEF E6 DEF E10 DEF E12 DEF E13 DEF E14 DEF E15 DEF E16 DEF E21 DEF E22 DEF E23 DEF E24 DEF E30 DEF E31 DEF E32 DEF E33 DEF E34 DEF E40 DEF E41 DEF E43 DEF E44 DEF E53 DEF E61 DEF E70 DEF E120 DEF E167 DEF E200 DEF E201 DEF E202 DEF E203 DEF E204 DEF E205 DEF E206 DEF E207 DEF E210 DEF E211 DEF E212 DEF E213 DEF E214 DEF E215 DEF E216 DEF E217 DEF E220 DEF E221 DEF E222 DEF E223 DEF E224 DEF E225 DEF E226 DEF E227 DEF E230 DEF E231 DEF E232 DEF E233 LER DEF * SKP CHLT DEF * CODED HALT TABLE HLT 0 HLT 1 HLT 2 HLT 3 HLT 4 HLT 5 HLT 6 HLT 10B HLT 12B HLT 13B HLT 14B HLT 15B HLT 16B HLT 21B HLT 22B HLT 23B HLT 24B HLT 30B HLT 31B HLT 32B HLT 33B HLT 34B HLT 40B HLT 41B HLT 43B HLT 44B HLT 53B HLT 61B HLT 70B OCT 107020 OCT 107067 OCT 103000 OCT 103001 OCT 103002 OCT 103003 SL OCT 103004 OCT 103005 OCT 103006 OCT 103007 OCT 103010 OCT 103011 OCT 103012 OCT 103013 OCT 103014 OCT 103015 OCT 103016 OCT 103017 OCT 103020 OCT 103021 OCT 103022 OCT 103023 OCT 103024 OCT 103025 OCT 103026 OCT 103027 OCT 103030 OCT 103031 OCT 103032 OCT 103033 SKP FMI DEF * MESSAGE ADDRESS TABLE DEF M0 DEF M1 DEF M2 DEF M3 DEF M4 DEF M5 DEF M6 DEF M10 DEF M12 DEF M13 DEF M14 DEF M15 DEF M16 DEF M21 DEF M22 DEF M23 DEF M24 DEF M30 DEF M31 DEF M32 DEF M33 DEF M34 DEF M40 DEF M41 DEF M43 DEF M44 DEF M53 DEF M61 DEF M70 DEF M120 DEF M167 DEF M200 DEF M201 DEF M202 DEF M203 DEF M204 DEF M205 DEF M206 DEF M207 DEF M210 DEF M211 DEF M212 DEF M213 DEF M214 DEF M215 DEF M216 DEF M217 DEF M220 DEF M221 DEF M222 DEF M223 DEF M224 DEF M225 DEF M226 DEF M227 DEF M230 DEF M231 DEF M232 DEF M233 SKP FML DEF * MESSAGE LENGTH TABLE DEF L0 DEF L1 DEF L2 DEF L3 DEF L4 DEF L5 DEF L6 DEF L10 DEF L12 DEF L13 DEF L14 DEF L15 DEF L16 DEF L21 DEF L22 DEF L23 DEF L24 DEF L30 DEF L31 DEF L32 DEF L33 DEF L34 DEF L40 DEF L41 DEF L43 DEF L44 DEF L53 DEF L61 DEF L70 DEF L120 DEF L167 DEF L200 DEF L201 DEF L202 DEF L203 DEF L204 DEF aL205 DEF L206 DEF L207 DEF L210 DEF L211 DEF L212 DEF L213 DEF L214 DEF L215 DEF L216 DEF L217 DEF L220 DEF L221 DEF L222 DEF L223 DEF L224 DEF L225 DEF L226 DEF L227 DEF L230 DEF L231 DEF L232 DEF L233 SKP FIRST DEF *+1 TABLE OF SELECT CODES TO BE DEF CH0 DEF CH1 MODIFIED DEF CH2 DEF CH3 DEF CH4 DEF CH5 DEF CH6 DEF CH7 DEF CH8 DEF CH9 DEF CH10 DEF CH11 DEF CH12 DEF CH13 DEF CH14 DEF CH15 DEF CH16 DEF CH17 DEF CH18 DEF CH19 DEF CH20 DEF CH21 DEF CH22 DEF CH23 DEF CH24 DEF CH25 DEF CH26 DEF CH27 DEF CH28 DEF CH29 DEF CH30 DEF CH31 DEF CH33 DEF CH34 DEF HLTC DEF DCH LAST DEF *-1 SKP A0077 OCT 77 COMMON CONSTANTS AND SYMBOLS A0002 OCT 2 A0003 OCT 3 A0100 OCT 100 THLT OCT 106002 TRAPCELL HALT P0000 OCT 170000 P7700 OCT 177700 NOTTY NOP SAVA NOP SAVB NOP SAVC NOP SAVD NOP SAVE NOP HLTA OCT 106000 A REG TRAP CELL HALT HLTB OCT 106001 B REG HLTC OCT 106000 SELECTED CHANNEL DCH NOP IO NOP SRP NOP CNT1 NOP * ERROR CNT2 NOP * COUNTERS SETXX NOP SWB NOP CRL OCT 2 CRI DEF *+1 OCT 6400 CARRIAGE RETURN DIN NOP SNA NOP SNB NOP P7760 OCT 177760 MSK1 OCT 140000 MN11 DEC -11 TABL DEF *+1 DEC -2 DEC -4 DEC -8 DEC -16 DEC -32 DEC -64 DEC -128 DEC -256 AC OCT 20060 PTNC NOP WD1 NOP CHCNT NOP PAR NOP CNR NOP TRW NOP BTNM NOP A0017 OCT 17 MN8 DEC -8 SKP BT0 OCT 1 BT1 OCT 2 BT2 OCT 4 BT3 OCT 10 BT4 OCT 20 BT5 OCT 40 BT6 OCT 100 .- BT7 OCT 200 BT8 OCT 400 BT9 OCT 1000 BT10 OCT 2000 BT11 OCT 4000 BT12 OCT 10000 BT13 OCT 20000 BT14 OCT 40000 BT15 OCT 100000 NBT7 OCT 177577 MSK2 OCT 66001 MSK3 OCT 46000 MSK4 OCT 14001 MSK5 OCT 1017 MSK6 OCT 60000 SYNCH OCT 040001 CW1 OCT 160010 CW2 OCT 150610 CW3 OCT 150017 CW4 OCT 150410 CW5 OCT 156016 CW6 OCT 150010 CW7 OCT 154016 CW8 OCT 151017 CW9 OCT 157016 CW10 OCT 155016 CW11 OCT 150014 SEND, AUTO ON CW12 OCT 140014 RCVE, AUTO ON CW13 OCT 151014 SEND, AUTO OFF CW14 OCT 141014 RCVE, AUTO OFF CW15 OCT 140610 CWX NOP CWXX NOP SKP TSNC1 OCT 14 TSNC2 OCT 17 TSNC3 OCT 0 TSYNC OCT 040014 TDATA OCT 3 SNBB NOP P7774 OCT 177774 P7776 OCT -2 DFLAG NOP ASDT DEF ASDTA MG0A DEF M0A MG0B DEF M0B JSB1 JSB R1,I INTERRUPT ROUTINE R1 DEF RETRN ADDRS DEF INTPT+1 STR DEF START SML DEF SL SMI DEF SM J1 JSB *+1,I DEF IJ1 J2 JSB *+1,I DEF IJ2 J3 JSB *+1,I DEF IJ3 J4 JSB *+1,I DEF IJ4 J5 JSB *+1,I DEF IJ5 E25 HLT 25B E35 HLT 35B E45 HLT 45B E54 HLT 54B E62 HLT 62B E121 OCT 107021 E170 OCT 107070 SKP AS0M DEF AS0 AS1M DEF AS1 AS2M DEF AS2 MI7 DEF M7 LM7 DEF L7 MI11 DEF M11 LM11 DEF L11 MG44A DEF G44A MG44B DEF G44B MG53A DEF G53A MG53B DEF G53B MG53C DEF G53C MG53D DEF G53D MI52 DEF M52 LM52 DEF L52 MI65 DEF M65 LM65 DEF L65 MG67A DEF G67A MG67B DEF G67B MG67C DEF G67C MG67D DEF G67D MI77 DEF M77 LM77 DEF L77 MG20A DEF G20A MG20B DEF G20B MG20C DEF G20C MG20D DEF G20D MG33A DEF G33A MG33B DEF G33B MG61A DEF G61A MG61B DEF G61B MI140 DEF M140 LM140 DEF L140 MI176 DEF M176 LM176 DEF L176 LM270 DEF L270 MI270 DEF M270 SKP *** SUBROUTINES *** SPC 2 DATA NOP CHANGE DATA IN A TO ASCII AND STA DX STORE IN LOCATION IN B STB DADD JSB B2ASC CH'ANGE TWO LEAST SIG CH TO ASCII LDB DADD ADB A0002 MODIFY ADDRESS STA B,I STORE TWO CHARACTERS LDA DX ALF,ALF RAL,RAL JSB B2ASC CHANGE NEXT TWO CH TO ASCII LDB DADD INB MODIFY ADDRESS STA B,I STORE TWO CHARACTERS LDA DX AND P0000 ALF JSB B2ASC CHANGE TWO MOST SIG CH TO ASCII STA DADD,I STORE FINAL TWO CHARACTERS JMP DATA,I EXIT DX BSS 1 DATA TO BE CONVERTED DADD BSS 1 ADDRESS WHERE ASCII CH MUST GO SPC 2 B2ASC NOP CONVERT 2 LEASE SIGNIFICANT AND A0077 DIGITS (IN A) TO ASCII AND LDB A RETURN WITH OCTAL ASCII'S IN A BRS,BRS BRS BLF,BLF AND A0007 IOR B IOR D0060 JMP B2ASC,I A0007 OCT 7 D0060 OCT 30060 ASCII PREFIXES SPC 2 STN NOP * STN CONTAINS LAST TEST START JMP STN,I ADDRESS SPC 2 DELAY NOP DELAYS A FEW HUNDRED MSEC CLA INA,SZA JMP *-1 JMP DELAY,I SPC 2 OTACH NOP CH15 OTA CH JMP OTACH,I SPC 1 LIACH NOP CH16 LIA CH JMP LIACH,I SPC 1 SW13 NOP CHECK SW REG BIT 13 FOR RECYCLE JSB SWR LAST PROGRAM AND BT13 SZA,RSS REPEAT PROGRAM? ISZ SW13 NO JMP SW13,I YES SPC 2 SW15 NOP CHECK SW REG BIT 15 FOR HALTING JSB SWR AT END OF PROGRAM OR CONTINUE SSA AUTOMATICALLY TO NEXT PROGRAM ISZ SW15 NO JMP SW15,I YES SPC 2 SW09 NOP CHECK TO OMIT START AND STOP JSB SWR MESSAGES AND BT9 SZA OMIT MESSAGE? ISZ SW09 YES JMP SW09,I NO SPC 2 SW10 NOP CHECK BIT 10 TO OMIT PRESET JSB SWR TEST AND BT10 SZA,RSS OMIT TEST? ISZ SW10gh YES JMP SW10,I NO SPC 2 SW11 NOP CHECK SW REG BIT 11 FOR TTY JSB SWR LDA WITH INTERNAL OR EXT SW REG AND BT11 SZA JMP SW11,I TTY IS SUPPRESSED - RTN *+1 LDA NOTTY SZA,RSS TTY AVAILABLE? ISZ SW11 YES JMP SW11,I NO SKP SW12 NOP CHECK SW REG BIT 12 FOR HALT AT JSB SWR END OF DIAGNOSTIC AND BT12 SZA HALT? ISZ SW12 NO JMP SW12,I YES SPC 1 SW7 NOP CHECK SW REG BIT 7 FOR RECYCLE JSB SWR LAST TEST - LDA WITH INTERNAL AND BT7 SZA BIT 7 JMP STN,I RECYCLE LAST TEST JMP SW7,I NO RECYCLE, RETURN *+1 SKP SW14 NOP CHECK SW REG BIT 14 FOR HALT JSB SWR ON ERRORS AND BT14 SZA ISZ SW14 NO HALT - RETURN *+2 JMP SW14,I HALT ON ERRORS, RETURN *+1 SPC 1 SW8 NOP CHECK SW REG BIT 8 FOR HALT AT JSB SWR END OF TEST AND BT8 TEST BIT 8 SZA,RSS JMP SW8,I EXIT *+1 LDB P7776 ADB SW8 LDA FER FIND CODED HALT T3 CPB A,I JMP T4 FOUND IT INA CPA LER JMP SW8,I EXIT *+1 JMP T3 T4 ADA FERC ADA CHLT LDA A,I STA *+1 NOP HALT JMP SW8,I EXIT *+1 SKP * TWO ERRORS PLUS SW REG SPC 2 MHLT3 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP MHLT3,I RETURN *+1 LDA SAVA JSB EY4R LDA SAVB JSB EY4R LDA SAVC JSB EY4R ISZ MHLT3 JMP MHLT3,I RETURN *+2 SPC 2 * THREE ERRORS PLUS SW REG SPC 2 MHLT4 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP MHLT4,I RETURN *+1 LDA SAVA JSB EY4R LDA SAVB JSB +DEY4R LDA SAVD JSB EY4R LDA SAVC JSB EY4R ISZ MHLT4 JMP MHLT4,I RETURN *+2 SPC 2 * FOUR ERRORS PLUS SW REG SPC 2 MHLT5 NOP ** REPORT ERROR VIA SW REG JSB INR AND A REG JMP MHLT5,I RETURN *+1 LDA SAVA JSB EY4R LDA SAVB JSB EY4R LDA SAVD JSB EY4R LDA SAVE JSB EY4R LDA SAVC RESTORE SW REG JSB EY4R ISZ MHLT5 JMP MHLT5,I RETURN *+2 SKP INR NOP ** RETURN *+2 IF NO STA EY4 TTY SELECTED LDA NOTTY SZA,RSS JMP INR,I RTN *+1 LIA 1 STA SAVC SAVE SW REG ISZ INR JMP INR,I RTN *+2 SPC 2 EY4R NOP ** OUTPUT TO SWITCH REGISTER OTA 1 LDB SAVC RBL SSB,RSS HALT SELECTED? EY4 HLT 0 YES ISZ EY4 JMP EY4R,I SPC 2 ERROR NOP ERROR REPORTING ROUTINE CLF 0 DISABLE INTERRUPTS CCB ADB ERROR LDA FER FIND ERROR NUMBER BASED ON RETRN T1 CPB A,I ADDRESS AND TABLE JMP T2 FOUND IT INA CPA LER END OF TABLE? JMP ERROR,I YES, EXIT ERROR ROUTINE JMP T1 CONTINUE SEARCH T2 ADA FERC NORMALIZE NUMBER STA SETXX JSB SW11 TTY SUPPRESSED? JMP NOH YES LDA SETXX NO LDB FMI MESSAGE ADDRESS TABLE ADB A LDB B,I MESSAGE ADDRESS INTO B ADA FML LDA A,I MESSAGE LENGTH INTO A JSB TTY.O,I TYPE MESSAGE NOH ISZ CNT2 COUNT ERRORS. LEAST SIG IN RSS CNT2 AND MOST SIG IN CNT1 ISZ CNT1 NOP LDB CHLT CODED HALT TABLE ADB SETXX LDB B,I CODED HALT IN B STB EXX JSB SW14 ERROR HALT? EXX HLT 0 YES, SO HALT JMP ERROR,I EXIT ERROR ROUTINE :0.* SKP TTSK NOP CHECKS FOR PRINTOUT SELECTION CLF 0 DISABLE INTERRUPTS LDB TTSK ADB A0003 MODIFY RETURN ADDRESS STB SWB JSB SW11 TTY SUPPRESSED? JMP SWB,I YES, SKIP PRINTOUT JMP TTSK,I NO, EXIT AND PRINT SPC 2 PARTY NOP STUFF PARITY MODE INTO MESSAGE STB ADRS PAR IN A, ADDRESS IN B LDB AS0M SZA JMP YE LDA B,I NO PARITY YA STA ADRS,I INB LDA B,I ISZ ADRS STA ADRS,I JMP PARTY,I EXIT YE CPA A0002 JMP YO LDB AS1M EVEN PARITY LDA B,I JMP YA YO LDB AS2M ODD PARITY LDA B,I JMP YA ADRS NOP SPC 2  0   12622-18002 1532 S 0122 SEND SYNC DATA SET              H0101 0USWR NOP LIA 1 JMP SWR,I YES SPC 2 MCLR NOP ENTER MCLR WITH CONTROL WORD IN CLC 0 A REGISTER STA CWXX IOR MSK5 001017 - BYTE SIZE 1, SYNC OFF JSB OTACH ALL ONE'S TO BIT COUNTER JSB TOGLE OUTPUT ZERO LDA SYNCH JSB OTACH LOAD SYNC REGISTER LDA CWXX JSB OTACH JSB TOGLE OUTPUT ZERO CLA JSB OTACH DATA ALL ZERO JMP MCLR,I SKP TOGLE NOP ENTER TOGLE WITH CONTROL WORD IN STA B A REGISTER IOR BT7 TEST = 1 JSB OTACH AND NBT7 TEST = 0 JSB OTACH LDA B REINSTATE TEST BIT JSB OTACH JMP TOGLE,I SPC 2 SENDC NOP SEND SYNC CHARACTER LDA BTNM NO. OF BITS (WITH PARITY) CMA,INA STA SNA LDA TRW CONTROL WORD JSB TOGLE OUTPUT ONE BIT ISZ SNA JMP *-2 JMP SENDC,I SPC 2 SENDD NOP SEND CHARACTER AND RETURN CLA WITH CHAR RECEIVED IN DIN STA DIN LDA BTNM NO. OF BITS (INCLUDING PARITY) CMA,INA STA SNB SLOOP ISZ SNB NEXT TO LAST BIT? JMP PZ NO, CONTINUE LDA CNR YES, SEND JSB OTACH OTA OF DATA PZ LDA TRW CONTROL WORD JSB TOGLE OUTPUT ONE BIT JSB LIACH IOBI IN A NOP (EXTRA INSTRUCTION) CMA AND BT11 RETURN THE BIT IOR DIN RAR STA DIN STACK BITS NOP (EXTRA INSTRUCTION) LDB SNB SZB FINISHED? JMP SLOOP NO, SEND MORE BITS LDB BTNM YES, RIGHT JUSTIFY THE DATA ADB MN11 RAR DATA STILL IN A ISZ B JMP *-2 STA DIN RT JUSTIFIED AND STORED IN DIN JMP SENDD,I SKP PRTY NOP SET PARITY BIT INTO DATA - DATA  STB CHE IN B-REG LDA CHCNT CMA,INA STA CHC STA CHD LDA PAR 0 = NO, 1 = ODD, 2 = EVEN PARITY SZA,RSS JMP PRTY,I NO PARITY, EXIT CPA A0002 JMP EVN EVEN PARITY JSB PADD ODD PARITY CMA EVEN AND BT0 ALR ISZ CHD JMP *-2 IOR CHE INSERT PARITY STA B REPLACE WITH PARITY IN WORD JMP PRTY,I EVN JSB PADD JMP EVEN PADD NOP CLA ADA B BRS ISZ CHC JMP *-3 JMP PADD,I PARITY BIT IN A0 CHC NOP CHD NOP CHE NOP SKP INP NOP NO PARITY INITIALIZATION STA TRW AND P7760 STA CWX CLA,INA STA CHCNT CHARACTER SIZE, START WITH 1 BIT STA BTNM BITS PLUS PARITY CLA STA PAR 0 = NO PARITY STA CNR PATTERN COUNTER = 0 LDA TABL MAX COUNT OF PATTERNS REQUIRED STA PTNC FOR DIFFERENT CHAR. SIZES JMP INP,I SPC 2 IOP NOP ODD PARITY INITIALIZATION STA TRW AND P7760 STA CWX CLA STA CNR CLA,INA STA CHCNT STA PAR 1 = ODD PARITY LDA TABL STA PTNC LDA A0002 STA BTNM JMP IOP,I SPC 2 IEP NOP EVEN PARITY INITIALIZATION JSB IOP ISZ PAR 2= EVEN PARITY JMP IEP,I SKP SETNP NOP SET NO PARITY TABLES ISZ CHCNT ISZ PTNC CLA STA CNR LDA CHCNT CMA,INA AND A0017 IOR CWX STA TRW LDA CHCNT STA BTNM JMP SETNP,I SPC 2 SETOP EQU * SETEP NOP SET EVEN PARITY TABLES ISZ CHCNT ISZ PTNC CLA STA CNR LDA CHCNT CMA AND A0017 IOR CWX STA TRW LDA CHCNT INA STA BTNM JMP SETEP,I ӲSKP SDTA NOP OUTPUT DATA WD TO BUFFER LDB CNR JSB PRTY RETURN WITH DATA IN B AND STB WD1 PARITY ADDED LDA CNR JSB OTACH JMP SDTA,I SPC 2 SC3 NOP LDA SYNCH JSB OTACH OUTPUT SYNC WORD TO BUFFER JSB SENDC SEND 1ST SYNC CHARACTER JSB SENDC SEND 2ND JSB SDTA OUTPUT DATA WD TO BUFFER JSB SENDC SEND 3RD JMP SC3,I SPC 2 SN NOP OUTPUT SYNC CHARACTER TO BUFFER LDB CNR JSB PRTY STB WD1 STORE FOR DATA COMPARE LDA CNR ADA BT14 JSB OTACH JMP SN,I SPC 2 SENCC NOP SEND SYNC AND RETURN WITH CLA CHAR RECEIVED IN DIN STA DIN LDA BTNM NO. OF BITS (INCLUDING PARITY) CMA,INA STA SNB CLOOP LDA TRW JSB TOGLE OUTPUT ONE BIT JSB LIACH CMA AND BT11 RETURN THE BIT IOR DIN RAR STA DIN STACK BITS ISZ SNB FINISHED? JMP CLOOP NO LDB BTNM YES, RIGHT JUSTIFY DATA ADB MN11 RAR DATA STILL IN A ISZ B JMP *-2 STA DIN JMP SENCC,I SUP M7 ASC 18,H7. PRESS PRESET (INT/EXT) THEN RUN L7 EQU *+*-M7-M7 UNS HED CONFIGURATION PROGRAM - SEND INTERFACE DIAGNOSTIC ORG 1745B CFGR LIA 1 SWR AND A0077 ADA MN8 SSA,RSS SC > 7 ? JMP *+3 H73 HLT 73B *SELECT CODE INPUT ERROR JMP CFGR LIA 1 AND A0077 STA IO LDB FIRST MODIFY I/O INSTRUCTIONS STB SRP L LDB SRP,I LDA B,I AND P7700 IOR IO STA B,I CPB LAST,I FINISHED? JMP *+3 YES ISZ SRP JMP L CLA LDB 112B SZB,RSS CCA STA NOTTY TELETYPE AVAILABLE BIT H74 HLT 74B **END OF CONFIGU-RATION** HED INITIALIZATION PROGRAM - SEND INTERFACE DIAGNOSTIC START CLC 0,C TURN EVERYTHING OFF LDB A0002 TRAP CELL LOCATION LDA THLT TRAP CELL HALT STA B,I INB INA CPB A0100 TRAP CELL HALTS COMPLETE? RSS YES JMP *-5 NO, REPEAT JSB SW09 OMIT START MESSAGE? RSS NO JMP EXECX YES JSB TTSK LDA CRL LDB CRI JSB TTY.O,I OUTPUT CR, LF JSB TTSK LDA SML LDB SMI JSB TTY.O,I START DATA SET DIAGNOSTIC HED EXECX - EXECUTIVE PROGRAM - SEND INTERFACE DIAGNOSTIC EXECX NOP ONE JSB SWR CALL BI/O? AND BT1 (SWITCH 1) SZA JMP TWO NO JSB BI/O YES, EXECUTE BI/O JSB SW15 CONTINUE AUTO? JMP ONE2 YES JSB TTSK NO, PRINT MSG? LDA LM11 YES, OTHERWISE HALT AT H11 LDB MI11 JSB TTY.O,I PRINT END BI/O H11 HLT 11B SELECT OPTIONS AND PRESS RUN ONE2 JSB SW13 REPEAT BI/O? JMP ONE YES (IF NO, JUMP TO TWO) SPC 2 TWO JSB SWR CALL FCTST? AND BT2 (SWITCH 2) SZA JMP THREE NO JSB FCTST YES JSB SW15 CONTINUE AUTO? JMP TWO2 YES JSB TTSK NO, PRINT MSG? LDA LM52 YES LDB MI52 JSB TTY.O,I PRINT END FCTST H52 HLT 52B SELECT OPTIONS AND PRESS RUN TWO2 JSB SW13 REPEAT FCTST? JMP TWO YES (IF NO, JUMP TO THREE) SPC 2 THREE JSB SWR CALL TNS? AND BT3 (SWITCH 3) SZA JMP FOUR NO JSB TNS YES JSB SW15 CONTINUE AUTO? JMP THRE2 YES JSB TTSK NO, PRINT MSG? LDA LM270 LDB MI270 JSB TTY.O,I PRINT END TNS H270 OCT 103070 THRE2 JSB SW13 REPEAT TNS? JMP THREE YES (IF NO, JUMP TO FOUR) SPC 2 FOUR JSB SWR CALL ASON? AND BT4 (SWITCH 4) SZA JMP FIVE NO JSB ASON YES JSB SW15 CONTINUE AUTO? JMP FOUR2 YES JSB TTSK NO, PRINT MSG? LDA LM65 YES LDB MI65 JSB TTY.O,I PRINT END ASON H65 HLT 65B SELECT OPTIONS AND PRESS RUN FOUR2 JSB SW13 REPEAT ASON? JMP FOUR YES (IF NO, JUMP TO FIVE) SPC 2 FIVE JSB SWR CALL ASOFF? AND BT5 (SWITCH 5) SZA JMP SIX NO JSB ASOFF YES JSB SW15 CONTINUE AUTO? JMP FIVE2 YES JSB TTSK NO, PRINT MSG? LDA LM176 YES LDB MI176 JSB TTY.O,I PRINT END ASOFF H176 OCT 107076 SELECT OPTIONS AND PRESS RUN FIVE2 JSB SW13 REPEAT A JMP FIVE YES (IF NO, JUMP TO SIX) SPC 2 SIX JSB SWR CALL ASDTA? AND BT6 (SWITCH 6) SZA JMP END NO JSB ASDT,I YES JSB SW15 CONTINUE AUTO? JMP SIX2 YES JSB TTSK NO, PRINT MSG? LDA LM140 YES LDB MI140 JSB TTY.O,I PRINT END ASDTA H140 OCT 107040 SELECT OPTIONS AND PRESS RUN SIX2 JSB SW13 REPEAT ASDTA? JMP SIX YES (IF NO, PROCEED TO END) HED END - END OF TEST - SEND INTERFACE DIAGNOSTIC END NOP JSB SW09 OMIT STOP MESSAGE? RSS NO JMP H77-2 YES JSB TTSK LDA LM77 LDB MI77 JSB TTY.O,I TELL OPERATOR TEST IS FINISHED JMP EXRTN,I JSB SW12 REPEAT TEST AUTO? H77 HLT 77B JMP STR,I YES HED BI/O - BASIC I/O PROGRAM - SEND INTERFACE DIAGNOSTIC * TEST ABILITY TO SET AND CLEAR THE CHANNEL FLAG SPC 2 BI/O NOP CLC 0,C LDA CW6 150010 JSB MCLR MASTER CLEAR THE INTERFACE NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP LDA HLTA TRAP CELL HALTS LDB HLTB CH0 STF CH CH1 CLF CH CLEAR CHANNEL FLAG CH2 SFS CH RSS ** CLF DID NOT CLEAR FLAG OR SFS E1 JSB ERROR CAUSED SKIP WITH FLAG CLEAR JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP CH7 CLF CH CH3 SFC CH E2 JSB ERROR * SFC NO SKIP WITH FLAG CLEAR JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP CH4 STF CH CH5 SFC CH RSS ** STF DID NOT SET FLAG OR SFC E3 JSB ERROR CAUSED SKIP WITH FLAG SET JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP CH10 STF CH CH6 SFS CH E4 JSB ERROR * SFS NO SKIP WITH FLAG SET JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP CH18 STF CH CH19 CLC CH,C CH20 SFC CH * ERROR = CLC CH,C DID NOT CLEAR E24 JSB ERROR * FLAG OR SFC DID NOT SKIP JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) SPC 2 * TEST ABILITY TO ENABLE AND DISABLE INTERRUPT SYSTEM SPC 2 NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP CH29 CLF CH STF 0 ENABLE INTS CLF 0 DISABLE INTS SFS 0 IS INTERRUPT SYSTEM ON? JMP E17+1 NO JSB SW14 SUPPRESS HALT SWITCH 14 E17 HLT 17B * CLF 0 OR SFS 0 ERROR JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP  CLF 0 SFC 0 IS INT SYSTEM ON? RSS YES JMP E20+1 NO JSB SW14 SUPPRESS HALT SWITCH 14 E20 HLT 20B * CLF 0 OR SFC 0 ERROR JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP STF 0 SFC 0 IS INT SYSTEM ON? RSS YES E21 JSB ERROR * STF 0 OR SFC 0 ERROR JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP STF 0 SFS 0 IS INT SYSTEM ON? E22 JSB ERROR * STF 0 OR SFS 0 ERROR JSB SW8 HALT AT END OF TEST (BIT 8) CLF 0 JSB SW7 LOOP ON LAST TEST (BIT 7) SKP * TEST INTERRUPT CAPABILITY SPC 2 NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP LDA JSB1 SET INTERRUPT TRAP CELL STA DCH,I LDA HLTA TRAP CELL HALTS LDB HLTB CH8 STC CH SET CHANNEL TO REQUEST CH9 STF CH AN INTERRUPT STF 0 ENABLE INTERRUPTS STC 1 * INTERRUPTS STF 1 SHOULD CLC 1 BE CLF 1 DELAYED JMP *+1,I UNTIL DEF *+1 . JSB *+1,I . DEF *+1 . NOP . INTPT NOP * HERE E5 JSB ERROR * DID NOT INTERRUPT JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP TCR SPC 1 RETRN NOP INTERRUPT SUBROUTINE CLF 0 DISABLE INTERRUPTS LDA J1 IJ1 INTERRUPT ROUTINE STA DCH,I STF 0 TEST INTERRUPT ACKNOWLEDGE NOP * SHOULD NOT NOP INTERRUPT HERE CLF 0 DISABLE INT LDA RETRN DID INTERRUPT OCCUR AT^ THE CPA ADDRS CORRECT MEM LOCATION? RSS E6 JSB ERROR * RETURN ADDRESS IS INCORRECT JSB SW8 HALT AT END OF TEST (BIT 8) STB RETRN CHANGE RETRN JSB SW7 LOOP ON LAST TEST (BIT 7) JMP TCR SPC 1 IJ1 NOP CLF 0 E14 JSB ERROR * NO INTERRUPT ACKNOWLEDGE JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP EB SKP * TEST CONTROL RESET SPC 2 TCR NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP LDA J2 IJ2 INTERRUPT ROUTINE STA DCH,I LDA HLTA LDB HLTB CH11 STC CH SET CONTROL CH12 STF CH CLC 0 SHOULD CLEAR ALL CNTL FLIP-FLOPS STF 0 ENABLE NOP ** SHOULD NOT NOP INTERRUPT HERE CLF 0 DISABLE INTS TCR2 LDA J4 STA DCH,I IJ4 INTERRUPT ROUTINE LDA HLTA LDB HLTB CH33 STC CH CH34 STF CH CH17 CLC CH CLEAR CHANNEL CONTROL FLIP-FLOP STF 0 ENABLE INTS NOP ** SHOULD NOT NOP INTERRUPT HERE CLF 0 JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP PRSET SPC 1 IJ2 NOP CLF 0 E15 JSB ERROR * CLC 0 DID NOT CLEAR CONTROL JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP TCR2 IJ4 NOP CLF 0 E23 JSB ERROR * CLC ON CH DID NOT CLEAR CONTRL JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) SKP * PRESET TEST SPC 2 PRSET NOP (EXTRA INSTRUCTION) JSB STN SET TEST NUMBER FOR SW7 LOOP LDA J5 STA DCH,I JSB SW10 OMIT TEST? RSS NO JMP EB YES JSB TTSK LDA LM7 LDB MI7 JSB TTY.O,I !LDA HLTA LDB HLTB CH13 STC CH,C SET CONTROL, CLEAR FLAG STF 0 ENABLE INTS H7 HLT 7 ** PRESS PRESETS, THEN PRESS RUN CH14 SFS CH IS FLAG SET? JMP TZ NO SFC 0 YES, IS INT SYSTEM DISABLED? E12 JSB ERROR * PRESET DID NOT DISABLE INTS JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP CL YES TZ SFC 0 JMP E13 E10 JSB ERROR * PRESET DID NOT SET FLAG JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP EB E13 JSB ERROR * FLG NOT SET, INTS NOT DISABLED JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP EB CL JSB LIACH STATUS TO A-REG AND MSK1 CPA BT15 STATUS CORRECT? JMP Z YES STA SAVA NO, REPORT ERROR LDB MG0A JSB DATA LDA BT15 STA SAVB LDB MG0B JSB DATA LDA E25 JSB MHLT3 E0 JSB ERROR * STATUS AFTER PRESET ERROR Z JSB SW8 JSB SW7 LOOP ON LAST TEST (BIT 7) LDA J3 IJ3 INTERRUPT ROUTINE STA DCH,I CHECK FOR A CLC 0 BY PRESET LDA HLTA LDB HLTB STF 0 ENABLE INTS NOP SHOULD NOT INTERRUPT HERE NOP CLF 0 JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) JMP EB SPC 2 IJ5 NOP CLF 0 E70 JSB ERROR * PRESET FAILED - ABORT BI/O JSB SW8 JSB SW7 JMP EB SPC 1 IJ3 NOP CLF 0 E16 JSB ERROR * PRESET DID NOT CLEAR CONTROL JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) SPC 1 EB CLC 0,C TURN EVERYTHING OFF LDA HLTC STA DCH,I RESET TRAP CELL HALT JMP BI/O,I EXIT ***** HED FCTST - FUNCTION-STATUS - SEND INTER FACE DIAGNOSTIC FCTST NOP TST1 NOP (EXTRA INSTRUCTION) JSB STN LDA CW4 150410 JSB MCLR MASTER CLEAR THE INTERFACE JSB LIACH SSA TEST READY E30 JSB ERROR * READY NOT RESET BY DATA OUTPUT JSB SW8 JSB SW7 SPC 2 TST2 NOP (EXTRA INSTRUCTION) JSB STN LDA CW1 160010 SET CD JSB OTACH JSB DELAY JSB LIACH AND BT12 CD,CE = 1? SZA,RSS E31 JSB ERROR * CD,CE NOT 1 JSB SW8 JSB SW7 CH21 CLF CH CH22 SFS CH FLAG SHOULD BE SET (AGAIN) BY CE E32 JSB ERROR * FLAG NOT SET JSB SW8 JSB SW7 SPC 2 TST3 NOP (EXTRA INSTRUCTION) JSB STN LDA CW2 150610 CLEAR CD JSB OTACH JSB DELAY JSB LIACH AND MSK4 14001 CPA BT0 00001 JMP E33+1 STATUS OK STA SAVA REPORT ERROR LDB MG33A JSB DATA LDA BT0 STA SAVB LDB MG33B JSB DATA LDA E35 JSB MHLT3 E33 JSB ERROR * STATUS ERROR JSB SW8 JSB SW7 CH23 CLF CH CH24 SFS CH FLAG SHOULD BE SET (AGAIN) BY SB E34 JSB ERROR * FLAG NOT SET JSB SW8 JSB SW7 SPC 2 TST4 NOP (EXTRA INSTRUCTION) JSB STN LDA CW4 150410 JSB MCLR JSB DELAY JSB LIACH AND MSK2 66001 CPA MSK3 46000 JMP E44+1 STATUS OK STA SAVA REPORT ERROR LDB MG44A JSB DATA LDA MSK3 STA SAVB LDB MG44B JSB DATA LDA E45 JSB MHLT3 E44 JSB ERROR * STATUS ERROR JSB SW8 JSB SW7 CH25 CLF CH FLAG SHOULD BE SET (AGAIN) BY CC CH26 SFS CH E40 JSB ERROR * FLAG NOT SET JSB SW8 JSB SW7 SPC 2 TST5 NOP (EXTRA INSTRUCTION) JSB STN LDA CW15 B@<140610 JSB MCLR JSB DELAY JSB LIACH AND MSK6 60000 CPA BT13 20000 JMP E61+1 STATUS OK STA SAVA REPORT ERROR LDB MG61A JSB DATA LDA BT13 STA SAVB LDB MG61B JSB DATA LDA E62 JSB MHLT3 E61 JSB ERROR * STATUS ERROR JSB SW8 JSB SW7 CH27 CLF CH CH28 SFS CH FLAG SHOULD BE SET AGAIN BY CB E43 JSB ERROR * FLAG NOT SET JSB SW8 JSB SW7 LDA CW3 150017 JSB OTACH JSB DELAY LDA CW3 JSB MCLR CH30 CLF CH CH31 SFC CH E41 JSB ERROR * FLAG NOT CLEAR JSB SW8 JSB SW7 JMP FCTST,I EXIT ***** HED TNS - TEST SYNC/NON-SYNC OPERATIONS - SEND INT. DIAG þB  12622-18003 1532 S 0122 SEND SYNC DATA SET              H0101 1UTNS NOP SPC 2 * CHECK FOR THREE SYNC PATTERNS FOLLOWED BY A DATA PATTERN WITH * AUTO-SYNC ON. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN CLA STA DFLAG (OUTPUT DATA FLAG IN SYNC CHAR) LDA CW11 JSB OTACH JSB DELAY LDA CW11 SEND, AUTO ON 150014 STA CWX JSB MCLR LDA TDATA JSB OTACH OUTPUT DATA TO BUFFER LDA TSYNC JSB OTACH OUTPUT SYNC TO BUFFER JSB SSNCH SEND 1ST SYNC PATTERN E200 JSB ERROR 1ST SYNC INCORRECT JSB SW8 (HALT SELECTION) JSB SW7 (LOOP) JSB SSNCH SEND 2ND SYNC PATTERN E201 JSB ERROR 2ND SYNC INCORRECT JSB SW8 (HALT) JSB SW7 (LOOP) CLA,INA STA DFLAG OTA DATA BEFORE LAST BIT TOGGLE JSB SSNCH SEND 3RD SYNC PATTERN E202 JSB ERROR 3RD SYNC INCORRECT JSB SW8 JSB SW7 CLA STA DFLAG JSB SSDTA SEND DATA E203 JSB ERROR DATA INCORRECT JSB SW8 JSB SW7 SKP * CHECK FOR THREE SYNC PATTERNS FOLLOWED BY FOUR * MORE SYNC PATTERNS FOLLOWED BY A DATA PATTERN * WITH AUTO-SYNC ON. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN CLA STA DFLAG LDA CW11 JSB OTACH JSB DELAY LDA CW11 SEND,AUTO ON 150014 STA CWX JSB MCLR CLC 0 LDA TSYNC JSB OTACH JSB SSNCH E204 JSB ERROR 1ST SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E205 JSB ERROR 2ND SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E206 JSB ERROR 3RD SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E207 JSB ERROR 4TH SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E210 JSB ERROR 5TH SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E211 JSB ERROR 6TH SYNC INCORRE:CT JSB SW8 JSB SW7 CLA,INA STA DFLAG JSB SSNCH E212 JSB ERROR 7TH SYNC INCORRECT JSB SW8 JSB SW7 CLA STA DFLAG JSB SSDTA E213 JSB ERROR DATA INCORRECT JSB SW8 JSB SW7 SKP * CHECK FOR DATA SEND TWICE FOLLOWED BY A * RECEIVE MODE CONTROL WORD FOLLOWED BY THREE * SYNCS. THE BOARD SHOULD NOT SEND BUT FORCING * A TOGGLE SHOULD RETURN ALL ONE'S. TEST WITH * AUTO-SYNC ON. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN LDA CW11 JSB OTACH JSB DELAY LDA CW11 SEND, AUTO ON 150014 STA CWX JSB MCLR LDA TSYNC JSB OTACH JSB SEND3 SEND 3 SYNCS WITH DATA CLA,INA STA DFLAG JSB SSDTA E214 JSB ERROR 1ST DATA INCORRECT JSB SW8 JSB SW7 CLA STA DFLAG JSB SSDTA E215 JSB ERROR 2ND DATA INCORRECT JSB SW8 JSB SW7 LDA CW12 RECEIVE MODE, AUTO-SYNC ON STA CWX JSB OTACH CLA STA DFLAG JSB SSNCH E216 JSB ERROR 1ST SYNC ERROR JSB SW8 JSB SW7 JSB SSNCH E217 JSB ERROR 2ND SYNC ERROR JSB SW8 JSB SW7 JSB SSNCH E220 JSB ERROR 3RD SYNC ERROR JSB SW8 JSB SW7 JSB SCHAR LDA DIN CPA TSNC2 ALL 1'S? RSS YES E221 JSB ERROR INPUT SHOULD BE 1'S JSB SW8 JSB SW7 SKP * CHECK FOR DATA SEND TWICE FOLLOWED BY FOUR * SYNCS WITH AUTO-SYNC ON. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN LDA CW11 JSB OTACH JSB DELAY LDA CW11 SEND, AUTO ON 150014 STA CWX JSB MCLR LDA TSYNC JSB OTACH JSB SEND3 SEND 3 SYNCS WITH DATA CLA,INA STA DFLAG JSB SSDTA E222 JSB ERROR 1ST DATA INCORRECT  JSB SW8 JSB SW7 CLA STA DFLAG JSB SSDTA E223 JSB ERROR 2ND DATA INCORRECT JSB SW8 JSB SW7 CLA STA DFLAG JSB SSNCH E224 JSB ERROR 1ST SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E225 JSB ERROR 2ND SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E226 JSB ERROR 3RD SYNC INCORRECT JSB SW8 JSB SW7 JSB SSNCH E227 JSB ERROR 4TH SYNC INCORRECT JSB SW8 JSB SW7 SKP * CHECK FOR NO SYNC SENT WHEN AUTO-SYNC OFF. A * FORCED TOGGLE SHOULD TRANSFER 0'S. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN LDA CW13 JSB OTACH JSB DELAY LDA CW13 SEND, AUTO OFF STA CWX JSB MCLR LDA TSYNC JSB OTACH CLA STA DFLAG JSB SCHAR LDA DIN CPA TSNC3 ALL 0'S? RSS YES E230 JSB ERROR INPUT SHOULD BE 0'S JSB SW8 JSB SW7 SKP * CHECK FOR DATA SENT, DATA REPEAT. THEN SEND A * RECEIVE MODE CONTROL WORD AND CHECK FOR ALL * ONE,S BY FORCING A TOGGLE. TEST WITH AUTO-SYNC * OFF. SPC 2 NOP (EXTRA INSTRUCTION) JSB STN LDA CW13 JSB OTACH JSB DELAY LDA CW13 SEND, AUTO OFF STA CWX JSB MCLR CLC 0 LDA TSYNC JSB OTACH LDA TDATA JSB OTACH CLA STA DFLAG JSB SSDTA SEND DATA (ONCE ONLY) E231 JSB ERROR DATA ERROR JSB SW8 JSB SW7 CLA STA DFLAG JSB SSDTA SEND SYNC (SHOULD = DATA) E232 JSB ERROR SYNC CHAR NOT EQUAL TO DATA JSB SW8 JSB SW7 LDA CW14 RECEIVE MODE, AUTO-SYNC OFF STA CWX JSB OTACH JSB SCHAR LDA DIN CPA TSNC2 ALL 1'S? RSS YES E233 JSB ERROR INPUT SHOULD BE 1'S | JSB SW8 JSB SW7 JMP TNS,I EXIT ***** SKP SSNCH NOP SEND SYNC JSB SCHAR LDA DIN CPA TSNC1 SYNC OK? ISZ SSNCH YES JMP SSNCH,I SPC 2 SSDTA NOP SEND DATA JSB SCHAR LDA DIN CPA TDATA DATA OK? ISZ SSDTA YES JMP SSDTA,I SPC 2 SCHAR NOP SEND CHARACTER CLA STA DIN RESET DATA IN LDA P7774 STA SNBB FLOP ISZ SNBB NEXT TO LAST BIT? JMP FLP NO LDA DFLAG YES SZA,RSS OUTPUT DATA? JMP FLP NO LDA TDATA YES JSB OTACH FLP LDA CWX CONTROL WD JSB TOGLE OUTPUT ONE BIT JSB LIACH RETURN CMA AND BT11 THE BIT IOR DIN RAR STA DIN STACK BITS LDB SNBB SZB FINISHED? JMP FLOP NO ALF,ALF YES, NORMALIZE BITS RAL (RT JUSTIFIED) STA DIN JMP SCHAR,I EXIT SPC 2 SEND3 NOP SEND 3 SYNCS WITH A DATA OTA CLA BEFORE LAST BIT STA DFLAG JSB SCHAR JSB SCHAR CLA,INA STA DFLAG JSB SCHAR JMP SEND3,I HED ASON - SEND (AUTO-ON) - SEND INTERFACE DIAGNOSTIC ASON NOP NOP (EXTRA INSTRUCTION) JSB STN LDA CW3 JSB OTACH JSB DELAY LDA CW3 150017 CNTL WD - NO PARITY, AUTO JSB MCLR MASTER CLEAR INTERFACE LDA CW3 JSB INP INITIALIZE PROGRAM NTST JSB TEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP OTST YES - GO TO NEXT TEST NOP (EXTRA INSTRUCTION) JSB SETNP NO - INITIALIZE NEXT CHARACTER JMP NTST SIZE AND REPEAT THE TEST SPC 2 OTST NOP (EXTRA INSTRUCTION) JSB ST5JN LDA CW5 JSB OTACH JSB DELAY LDA CW5 156016 CNTL WD - ODD PARITY,AUTO JSB MCLR MASTER CLEAR INTERFACE LDA CW5 JSB IOP INITIALIZE PROGRAM OTSOT JSB TEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP ETST YES - GO TO NEXT TEST NOP (EXTRA INSTRUCTION) JSB SETOP NO - INITIALIZE NEXT CHARACTER JMP OTSOT SIZE AND REPEAT TEST SPC 2 ETST NOP (EXTRA INSTRUCTION) JSB STN LDA CW7 JSB OTACH JSB DELAY LDA CW7 154016 CNTL WD, EVEN PARITY,AUTO JSB MCLR MASTER CLEAR INTERFACE LDA CW7 JSB IEP INITIALIZE PROGRAM ETSET JSB TEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP ASON,I YES - EXIT PROGRAM ******** NOP (EXTRA INSTRUCTION) JSB SETEP NO - INITIALIZE NEXT CHARACTER JMP ETSET SIZE AND REPEAT TEST SPC 2 TEST NOP NOP (EXTRA INSTRUCTION) LDA TRW JSB MCLR JSB SC3 TLOOP JSB SDTA JSB SENDD SEND DATA CHARACTER LDA DIN DATA IN FROM INTERFACE CPA WD1 DATA COMPARE OK? JMP CHST YES STA SAVE NO, REPORT ERROR LDB MG53D WORD RECEIVED JSB DATA LDA WD1 STA SAVD LDB MG53C WORD SENT JSB DATA LDA CHCNT STA SAVB IOR AC ASCII STA MG53B,I NO. OF BITS IN WORD LDA PAR STA SAVA LDB MG53A STUFF PROPER PARITY MODE INTO JSB PARTY MESSAGE LDA E54 JSB MHLT5 RTN *+2 IF NO TTY SELECTED E53 JSB ERROR * DATA ERROR CHST JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) ISZ CNR INCREMBENT DATA PATTERN LDA PTNC,I ADA CNR SZA FINISHED? JMP TLOOP NO, SEND NEXT CHARACTER JMP TEST,I YES, EXIT HED ASOFF - SEND (AUTO-OFF) - SEND INTERFACE DIAGNOSTIC ASOFF NOP NOP (EXTRA INSTRUCTION) JSB STN LDA CW8 JSB OTACH JSB DELAY LDA CW8 151017 CNTL WD - NO PARITY MODE, JSB MCLR AUTO OFF LDA CW8 JSB INP INITIALIZE PROGRAM FTST JSB FTEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP FOTST YES, GO TO NEXT TEST NOP (EXTRA INSTRUCTION) JSB SETNP NO, INITIALIZE NEXT CHARACTER JMP FTST SIZE AND REPEAT THE TEST SPC 2 FOTST NOP (EXTRA INSTRUCTION) JSB STN LDA CW9 JSB OTACH JSB DELAY LDA CW9 157016 CONTROL WORD - ODD PARITY JSB MCLR MODE, AUTO OFF LDA CW9 JSB IOP INITIALIZE PROGRAM FOT JSB FTEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP FETST YES, GO TO NEXT TEST NOP (EXTRA INSTRUCTION) JSB SETOP NO, INITIALIZE NEXT CHARACTER JMP FOT SIZE AND REPEAT TEST SPC 2 FETST NOP (EXTRA INSTRUCTION) JSB STN LDA CW10 JSB OTACH JSB DELAY LDA CW10 155016 CONTROL WORD, EVEN PARITY JSB MCLR MODE, AUTO OFF LDA CW10 JSB IEP INITIALIZE PROGRAM FET JSB FTEST SEND ALL PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED WITH ALL CHAR SIZES? JMP ASOFF,I YES, EXIT PROGRAM ******* NOP (EXTRA INSTRUCTION) JSB SETEP NO, INITIALIZE NEXT CHARACTER JMP FET SIZE AND REPEAT TEST SPC 2 FTEST NOP NOP (EXTRA INSTRUCTION) LDA TRW JSB MCLR LDA SYNCH JSB OTACH OUTPUT SYNC WORD TO BUFFER FLOOP JSB SDTA OUTPUT DATA WD TO BUFFER JSB SENDD SEND DATA CHARACTER LDA DIN DATA IN FROM INTERFACE CPA WD1 DATA COMPARE OK? JMP CHSF YES STA SAVE NO, REPORT ERROR LDB MG67D WORD RECEIVED JSB DATA LDA WD1 STA SAVD LDB MG67C WORD SENT JSB DATA LDA CHCNT STA SAVB IOR AC ASCII STA MG67B,I NO. OF BITS IN WORD LDA PAR STA SAVA LDB MG67A STUFF PARITY MODE INTO MESSAGE JSB PARTY LDA E170 JSB MHLT5 RTN *+2 IF NO TTY SELECTED E167 JSB ERROR * DATA ERROR CHSF JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) ISZ CNR INCREMENT DATA PATTERN LDA PTNC,I ADA CNR SZA FINISHED? JMP FLOOP NO, SEND NEXT CHARACTER JMP FTEST,I YES, EXIT SPC 2 SUP M10 ASC 18,E10. EXTERNAL PRESET DID NOT SET THE ASC 03, FLAG L10 EQU *+*-M10-M10 UNS HED ASDTA - SYNC PATTERNS - SEND INTERFACE DIAGNOSTIC ORG 4000B ASDTA NOP NOP (EXTRA INSTRUCTION) JSB STN LDA CW3 JSB OTACH JSB DELAY LDA CW3 150017 CNTL WD - NO PARITY, AUTO JSB MCLR MASTER CLEAR INTERFACE LDA CW3 JSB INP INITIALIZE PROGRAM ATEST JSB ASTST SEND ALL SYNC PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINISHED? JMP OST YES NOP (EXTRA INSTRUCTION) JSB SETNP NO - INITIALIZE JMP ATEST AND REPEAT SPC 2 OST NOP (EXTRA INSTRUCTION) JSB STN LDA CW5 JSB OTACH JSB DELAY LDA CW5 156016 CNTL WD - ODD PARITY,AUTO JSB MCLR MASTER CLEAR INTERFACE _ LDA CW5 JSB IOP INITIALIZE PROGRAM OSTO JSB ASTST SEND ALL SYNC PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINI? JMP EST YES NOP (EXTRA INSTRUCTION) JSB SETOP NO - INITIALIZE JMP OSTO AND REPEAT SPC 2 EST NOP (EXTRA INSTRUCTION) JSB STN LDA CW7 JSB OTACH JSB DELAY LDA CW7 154016 CNTL WD, EVEN PARITY,AUTO JSB MCLR MASTER CLEAR INTERFACE LDA CW7 JSB IEP INITIALIZE PROGRAM ESTE JSB ASTST SEND ALL SYNC PATTERNS LDA MN8 ADA CHCNT SZA,RSS FINI? JMP ASDTA,I YES - EXIT ***** NOP (EXTRA INSTRUCTION) JSB SETEP NO - INITIALIZE JMP ESTE AND REPEAT SPC 2 ASTST NOP NOP (EXTRA INSTRUCTION) LDA TRW JSB MCLR CLC 0 ALOOP JSB SN OUTPUT SYNC CHARACTER TO BUFFER JSB SENCC SEND SYNC CHARACTER LDA DIN SYNC IN FROM INTERFACE CPA WD1 SYNC OK? JMP AK YES STA SAVE NO, REPORT ERROR LDB MG20D WORD RECEIVED JSB DATA LDA WD1 STA SAVD LDB MG20C WORD SENT JSB DATA LDA CHCNT STA SAVB IOR AC ASCII STA MG20B,I NO. OF BITS IN WORD LDA PAR STA SAVA LDB MG20A STUFF PARITY MODE INTO MSG JSB PARTY LDA E121 JSB MHLT5 RTN *+2 IF NO TTY SELECTED E120 JSB ERROR * SYNC ERROR AK JSB SW8 HALT AT END OF TEST (BIT 8) JSB SW7 LOOP ON LAST TEST (BIT 7) NOP (EXTRA INSTRUCTION) ISZ CNR INCREMENT DATA PATTERN LDA PTNC,I ADA CNR SZA FINISHED? JMP ALOOP NO, SEND NEXT CHARACTER JMP ASTST,I YES, EXIT HED MESSAGES - SEND INTERFACE DIAGNOSTIC SUP AS0 ASC 2, NO AS1 ASC 2, ODD AS2 ͬ ASC 2,EVEN M0 ASC 18,E0. PRESET STATUS ERROR. STATUS IS M0A ASC 11,XXXXXX AND SHOULD BE M0B ASC 3,XXXXXX L0 EQU *+*-M0-M0 M1 ASC 17,E1. CLF DID NOT CLEAR FLAG, OR SFS ASC 14, CAUSED SKIP WITH FLAG CLEAR L1 EQU *+*-M1-M1 M2 ASC 18,E2. SFC DID NOT SKIP WITH FLAG CLEAR L2 EQU *+*-M2-M2 M3 ASC 20,E3. STF DID NOT SET FLAG, OR SFC CAUSED ASC 9,SKIP WITH FLAG SET L3 EQU *+*-M3-M3 M4 ASC 17,E4. SFS DID NOT SKIP WITH FLAG SET L4 EQU *+*-M4-M4 M5 ASC 11,E5. DID NOT INTERRUPT L5 EQU *+*-M5-M5 M6 ASC 19,E6. THE RETURN ADDRESS IS NOT CORRECT L6 EQU *+*-M6-M6 M11 ASC 7,H11. END BI/O L11 EQU *+*-M11-M11 M12 ASC 18,E12. INTERNAL PRESET DID NOT DISABLE ASC 06, INTERRUPTS L12 EQU *+*-M12-M12 M13 ASC 19,E13. EXTERNAL PRESET DID NOT SET FLAG OCT 6412 ASC 18,AND INTERNAL PRESET DID NOT DISABLE ASC 05,INTERRUPTS L13 EQU *+*-M13-M13 M14 ASC 17,E14. INTERRUPT ACKNOWLEDGE DID NOT ASC 9, WORK. ABORT BI/O L14 EQU *+*-M14-M14 M15 ASC 16,E15. CLC 0 DID NOT CLEAR CONTROL L15 EQU *+*-M15-M15 M16 ASC 17,E16. EXTERNAL PRESET DID NOT CLEAR ASC 04, CONTROL L16 EQU *+*-M16-M16 M21 ASC 16,E21. STF 0 OR SFC 0 DID NOT WORK L21 EQU *+*-M21-M21 M22 ASC 16,E22. STF 0 OR SFS 0 DID NOT WORK L22 EQU *+*-M22-M22 M23 ASC 17,E23. CLC ON CHANNEL DID NOT CLEAR ASC 4,CONTROL L23 EQU *+*-M23-M23 M24 ASC 20,E24. CLC CH,C DID NOT CLEAR FLAG OR SFC ASC 14,DID NOT SKIP WITH FLAG CLEAR L24 EQU *+*-M24-M24 M30 ASC 18,E30. READY NOT RESET BY DATA OUTPUT L30 EQU *+*-M30-M30 M31 ASC 17,E31. STATUS ERROR - BIT 12 NOT = 1 L31 EQU *+*-M31-M31 M32 ASC 9,E32. FLAG NOT SET L32 EQU *+*-M32-M32 M33 ASC 14,E33. STATUS ERROR - DATA IS G33A ASC 11,XXXXXX AND SHOULD BE G33B ASC 3,XXXXXX L33 EQU *+*-M33-M33 M34 ASC 9,E34. FLAG NOT SET L34 EQU *+*-M34-M34 M40 ASC 9,E40. FLAG NOT SET L40 EQU *+*-M40-M40 M4:H1 ASC 10,E41. FLAG NOT CLEAR L41 EQU *+*-M41-M41 M43 ASC 9,E43. FLAG NOT SET L43 EQU *+*-M43-M43 M44 ASC 14,E44. STATUS ERROR - DATA IS G44A ASC 11,XXXXXX AND SHOULD BE G44B ASC 3,XXXXXX L44 EQU *+*-M44-M44 M52 ASC 7,H52. END FCTST L52 EQU *+*-M52-M52 M53 ASC 18,E53. ERROR IN SEND DATA PATTERN TEST ASC 10, WITH AUTO-SYNC ON. OCT 6412 G53A ASC 13,XXXX PARITY MODE SELECTED, ASC 9, CHARACTER SIZE IS OCT 6412 G53B ASC 14,XX BITS, WORD RECEIVED WAS G53D ASC 11,XXXXXX AND SHOULD BE G53C ASC 3,XXXXXX L53 EQU *+*-M53-M53 M61 ASC 14,E61. STATUS ERROR - DATA IS G61A ASC 11,XXXXXX AND SHOULD BE G61B ASC 3,XXXXXX L61 EQU *+*-M61-M61 M65 ASC 07,H65. END ASON L65 EQU *+*-M65-M65 M70 ASC 15,E70. PRESET FAILED, ABORT BI/O L70 EQU *+*-M70-M70 M77 ASC 12,H77. DIAGNOSTIC COMPLETE L77 EQU *+*-M77-M77 M120 ASC 17,E120. ERROR IN SYNC PATTERN TEST. G20A ASC 13,XXXX PARITY MODE SELECTED, OCT 6412 ASC 9,CHARACTER SIZE IS G20B ASC 14,XX BITS, WORD RECEIVED WAS G20D ASC 11,XXXXXX AND SHOULD BE OCT 6412 G20C ASC 3,XXXXXX L120 EQU *+*-M120-M120 M140 ASC 8,H140. END ASDTA L140 EQU *+*-M140-M140 M167 ASC 19,E167. ERROR IN SEND DATA PATTERN TEST ASC 10,WITH AUTO-SYNC OFF. OCT 6412 G67A ASC 13,XXXX PARITY MODE SELECTED, ASC 9, CHARACTER SIZE IS OCT 6412 G67B ASC 14,XX BITS, WORD RECEIVED WAS G67D ASC 11,XXXXXX AND SHOULD BE G67C ASC 3,XXXXXX L167 EQU *+*-M167-M167 M176 ASC 08,H176. END ASOFF L176 EQU *+*-M176-M176 M200 ASC 12,E200. 1ST SYNC INCORRECT L200 EQU *+*-M200-M200 M201 ASC 12,E201. 2ND SYNC INCORRECT L201 EQU *+*-M201-M201 M202 ASC 12,E202. 3RD SYNC INCORRECT L202 EQU *+*-M202-M202 M203 ASC 10,E203. DATA INCORRECT L203 EQU *+*-M203-M203 M204 ASC 12,E204. 1ST SYNC INCORRECT L204 EQU *+*-M204-M204 M205 ASC 12,E205. 2ND SYNC INCORRECT L205 EQU *+*-M205-M205 M206 ASC 12,E206. 3RD SYNC INCORRECFB@66 IS MADE. ONLY * * EVEN SECTORS ARE ALLOWED TO BE COMPATIBLE WITH THE RTE II * * FMGR. * * * * CONWD * * BITS 0-5 = LOGICAL UNIT NUMBER OF FLOPPY DRIVE * * BITS 6-10 * * 30 = READ WITH CLOSE TOLERANCE. THIS MODE MAY BE * * USED FOR READ AFTER WRITE (USER PROGRAMMED) * * WHERE THE FUTURE RECOVERY OF DATA IS VERY * * IMPORTANT. THIS MODE WILL CAUSE THE FLOPPY * * CONTROLLER TO PERFORM ADDITIONAL CHECKS IN * * THE READ FUNCTION. * * 23 = DSECT CONTAINS INFORMATION FOR FORMATTING DISC. * * THIS IS A "HOOK" PUT INTO THE DRIVER FOR USE BY * * A DISC FORMAT PROGRAM "DSKET". IT IS NOT * * --- * * INTENDED THE BELOW SPECIAL CALLS BE DOCUMENTED * * FOR USER OPERATION BECAUSE OF THE POSSIBILITY * * OF DAMAGING THE HARDWARE AND/OR ACCIDENTALLY * * "WIPING OUT" INFORMATION OF THE DISKETTE. * * DSECT FUNCTION * * 7630 STEP TRACK IN * * 7640 WRITE ALL ZEROS (FOR DEFECTIVE TRACK) * * * * * * 0 FORMAT TRACK CONTAINED IN DTRACK * * * * DVR33 IS INTIALLY ENTERED THROUGH I.33. THE RETURN CONDITION * * IS INDICATED BY THE A REGISTER: * * * * A=0=OPERAYTION INITIATED * * 1=ILLEGAL READ/WRITE * * * * AN A=1 EXIT WILL OCCUR IN THE BELOW CONDITIONS: * * * * 1. SPECIFY NEGATIVE TRACK NUMBER * * 2. SPECIFY ODD OR NEGATIVE SECTOR * * 3. SPECIFY SECTOR > 58 * * 4. SPECIFY NON-EXISTENT TRACK N(066 * * WILL RETURN THE NUMBER OF TRACKS IN THE B * * REGISTER. THEREFORE MAXIMUM TRACK NUMBER IS * * (B REGISTER-1). * * 5. WRITE TO TRACK 0, SECTOR 0. THIS ADDRESS IS * * RESERVED FOR USE BY DVR33. * * WORD 1 = NO. OF AVAILABLE TRACKS (1-67) * * WORD 2 = NO. OF REVOLUTIONS TO READ ONE TRACK. * * 6. ATTEMPT TO WRITE MORE SECTORS THAN ARE AVAILABLE ON THE * * DISKETTE. FOR EXAMPLE, IF THERE ARE ONLY 2 SECTORS LEFT * * ON THE LAST TRACK AND THE CURRENT REQUEST IN TO WRITE * * 512 WORDS (4 SECTORS). * * * * A=2=ILLEGAL CONTROL. ONLY VALID CONTROL REQUEST IS DYNAMIC STAT * * AND RESET (0) * * A=3=EQUIPMENT MALFUNCtTION OR NOT READY. CHECK FOR POWER ON. * * * * SUBSEQUENT INTERRUPTS CAUSE AN ENTRY AT C.33. IF THE OPERATIO * * IS NOT COMPLETED EXIT IS THROUGH CONTINUATION P+2. THE * * REGISTERS ARE NOT SIGNIFICANT. IF THE OPERATION IS COMPLETED, * * EXIT IS THROUGH CONTINUATION P+1 WITH RETURN CONDITION IN THE * * A AND B REGISTERS. * * * * A=0=SUCCESSFUL COMPLETION * * 1=DEVICE MALFUNCTION. THIS EXIT IS FOR SPURIOUS INTERRUPTS * * (UNEXPECTED INTERRUPTS WITH NO REQUEST IN PROCESS). * * THIS EXIT IS ALSO USED FOR CONTROLLER/DRIVE ERRORS. * * SEE STATUS WORD FOR CAUSE. * * 3=TRANSMISSION ERROR. THIS EXIT IS FOR THE BELOW ERRORS: * * 1. RECORD NOT FOUND * * 2. TRACK NOT FOUND * * 3. DATA CHECKWORD ERROR * * 4. DATA OVERRUN * * 5. TRANSFER INCOMPLETE * * FOR NORMAL READS 10 TRIES ARE MADE BEFORE TRANSMISSION * * ERROR EXIT IS TAKEN. FOR READ WITH CLOSE TOLERANCE * * (CONWD=30) 1 TRY IS MADE. * * 4=TIME OUT. THIS EXIT IS TAKEN IF AN EXPECTED INTERRUPT * * DOES NOT OCCUR WITHIN 5 SECONDS. PRIOR TO TAKING THIS * * EXIT, DVR33 RESETS (HEADS GO TO TRACK 0) THE 9885M/9885S. * * B=# OF WORDS OR CHARACTERS TRANSMITTED (DEPENDING ON USER * * REQUEST) * * *.* STATUS REQUEST * * * * CALLING SEQUENCE: * * * * JSB EXEC * * DEF RTRN * * DEF RCODE * * DEF LUN * * DEF STAT1 * * DEF STAT2 * * * * RTRN . (RETURN POINT) * * . * * . * * RCODE DEC13 (REQUEST CODE FOR STATUS) * * LUN DEC N (DECIMAL LOGICAL UNIT # OF DISC) * * STAT1 BSS 1 (STORAGE FOR STATUS WORD EQT5) * * STAT2 BSS 1 (STORAGE FOR EQT WORD 4)(OPTIONAL) * * * * THIS CALL RETURNS THE LAST ACCESSED DRIVE'S STATUS WORD (WORD * * OF THE EQUIPMENT TABLE) IN STAT1. * * * * BITS 8-15 ARE AS DESCRIBED IN THE RTE MANUAL. BITS 0-7 CONTAI * * THE HARDWARE STATUS. SEE TABLE 1. * * * * WORD 4 OF THE EQT (AS DEFINED IN THE RTE MANUAL) IN STAT2 IF * * IT IS CODED. * * * * TABLE 1 * * I/O STATUS WORD BITS * * --------------------- * * * STATUS IS RETURNED PER BELOW: * * * * BITS 0-6 MEANING OCTAL VALUE * * 0000000 NO ERROR 0 * * 0000011 NO DRIVE POWER 3 * * 0000101 DOOR OPEN 5 * * 0000111 NO DISC 7 * * 0001011 RECORD NOT FOUND 13 * * 0001101 TRACK NOT FOUND 15 * * 0001111 DATA CHECKWORD ERROR 17 * * 0010001 DATA OVERRUN 21 * * 0010011 READ CLOSE TOL. ERROR 23 * * 0011111 TRANSFER INCOMPLETE 37 * * * * BITS 0-7 * * 00100000 END OF TRACK 40 * * 01000000 DISC CHANGE 100 * * 10000000 DISC WRITE PROTECTED 200 * RETURNS OF 3, 5, AND 7 CAUSE A NOT READY (A=1) EXIT. * * * 13, 15, 17, 21, 37 CAUSE A PARITY ERROR (A=3) EXIT AFTER 10 TR * TRACK NO. IS IN B REGISTER. * 13, 15, 17 INDICATE A MEDIA PROBLEM (I.E., SCRATCHED SURFACE), * POSSIBLE HARDWARE MALFUNCTION. ERRORS 21 AND 37 INDICATE A HARDWA * MALFUNCTION * * * 23 CAUSES A SUCCESSFUL EXIT (A=0) AFTER 1 TRY.. TRACK NO. IS * B REGISTER. THEREFORE WHEN USING A READ WITH CLOSE TOLERANCE, IT * IMPORTANT THE STATUS AFTER EACH READ BE CHECKED FOR 23 IN EQT 5. * IF THIS OCCURS, THE DATA MAY STILL BE RECOVERABLE WITH A STANDARD * READ REQUEST. * * * (OCTAL 40) IS SET WHEN AN ATTEMPT IS MADE TO READ/WRITE * A TRACK >66. THE NUMBER OF TRACKS IS RETURNED IN THE B * WITH A REG. = 0. * (OCTAL100) IS SET WHEN A NEW DISC HAS BEEN INSERTED OR * POWER TURNED ON SINCE THE LAST REQUEST OR RESET JUST PERFORMED. * * * (OCTAL 200) IS SET IF THE WRITE PROTECTED NOTCH ON THE * DISK IS NOT COVERED. * * *.* CONTROL REQUEST * * * * CALLING SEQUENCE: * * * * JSB EXEC * * DEF RTRN * * DEF RCODE * * DEF CONWD * * * * RTRN (RETURN POINT) * * RCODE DEC3 (REQUEST CODE FOR CONTROL) * * CONWD * * BITS 0-5=LOGICAL UNIT NUMBER OF FLOPPY DRIVE * * BITS 6-10 * * 0=RESET CONTROLLER. ALL DRIVES ARE RESET WITH * * HEADS MOVING TO TRACK 0. RESET IS ALSO DONE AT POWE * * 6=DYNAMIC STATUS. CURRENT STATUS OF SELECTED LU * * RETURNED IN EQT5. * * * * * * * * * * * * *.* OPERATING SPECIFICATIONS * * *.* HARDWARE * * * * MINIMUM RTE SYSTEM WITH DCPC * * HP 12732A FLOPPY DISC DRIVE SUBSYSTEM (MASTER) * * HP 12735-60001 MICROCIRCUIT CARD (CONTROL) INTERFACE 1 * * HP 12735-60002 MICROCIRCUIT CARD (DATA) INTERFACE 2 * * INTERFACE CABLE (DUAL HOOD, LENGTH 15') HP 12735-60003 * * * * OPTIONAL: * * * * HP 12733A FLOPPY DISC DRIVE SUBSYSTEM (SLAVE) * * (3 SLAVES MAY BE CONNECTED TO ONE MASTER) * * SLAVE CABLE IS 6'. * * *.* SOFTWARE INSTALLATION * * *.* PROGRAM INPUT PHASE * * * * DRIVER DVR33 MUST BE LOADED DURING THIS PHASE * * *.* TABLE GENERATION PHASE * * * * *EQUIPMENT TABLE ENTRY * * * * A. EQUIPMENT TABLE ENTRY (EQT) FOR THE FLOPPY DISC CONTROLLER * * SC1,DVR33,D, * * WHERE SC1 IS THE SELECT CODE OF THE CONTROL CARD (HIGHER * * PRIORITY), AND "D" INDICATES DMA REQUIRED. * * * * B. DEVICE TABLE ENTRY * * * * *DEVICE REFERENCE TABLE * * LU=EQT,M,SUB * * WHERE LU IS THE LOGICAL UNIT NUMBER OF DRIVE, M IS THE EQT * * NUMBER, AND SUB IS THE DRIVE SUBCHANNEL NUMBER (0-3). * * THIS SAME NUMBER IS SET AS THE DRIVE NUMBER ON THE REAR OF * * 9885M/S. * * * *  C. INTERRUPT TABLE ENTRY FOR THE FLOPPY DISC * * * * *INTERRUPT TABLE * * * * SC1,EQT,M * * SC2,EQT,M * * * * WHERE SC2 IS THE SELECT CODE OF THE DATA CARD (LOWER PRIOR *.* REFERENCES * * * * RTE II SOFTWARE SYSTEM P.N. 92001-93001 * * ------ ---------------- * * * * HP 12732 FLOPPY DISKETTE SUBSYSTEM P.N. 12732-90003 * * * * *.* FLOPPY DISKETTE FORMAT PROGRAM DSKET * * * * PRIOR TO USING A NEW DISC, IT IS NECESSARY TO FORMAT IT BY * * WRITING TRACK AND SECTOR ADDRESSES ON THE DISC. THIS IS * * DONE BY THE PROGRAM DSKET. * * * * ANOTHER FUNCTION OF DSKET IS TO IDENTIFY BAD TRACKS AND * * "MARK" THEM AS SUCH. DSKET IS A RELOCATABLE PROGRAM WHICH * * USES DVR33 FOR DISC COMMUNICATION. * * * * TO RUN DSKET PROCEED PER BELOW: * * * * 1. LOAD DSKET * * * * 2. TYPE RU,DSKET,X * * WHERE X=LU OF TERMINAL DSKET IS CONTROLLED FROM * * 3. DSKET RESPONDS: * * ENTER DRIVE LU? * * TYPE IN THE DISKETTE DRIVE LU * * 4. DSKET RESPONDS: * * DO YOU REALLY WANT TO FORMAT THIS DISKETTE? * * * * THIS QUESTION IS ASKED TO PREVENT ACCIDENTAL ERASURE * * OF VALUABLE INFORMATION. FORMATTING A DISKETTE ERASES AL * * DATA. * * * * IF THE OPERATOR RESPONDS YES THEN DSKET CONTINUES. FOR * * ANY OTHER RESPONSE DSKET ENDS. * * * * AFTER RESPONDING WITH YES, DSKET ASKS: * * * * STANDARD FORMAT? * * * * THIS QUESTION REFERS TO THE NUMBER OF REVOLUTIONS IT * * WILL TAKE TO READ AN ENTIRE TRACK. IF YES THEN FIVE * * REVOLUTIONS (1 SEC) MINIMUM IS REQUIRED TO READ A TRACK. * * * * BETWEEN CONSECUTIVE SECTORS THERE ARE 4 "FILL" SECTORS. * * THE "FILL" SECTORS GIVE THE SYSTEM PROCESS TIME BEFORE * * THE NEXT REQUEST. THIS TIME IS NEEDED BECAUSE MOST * * REQUESTS ARE ON A SECTOR (128 WORD RECORD) BASIS. FOUR i* * * * FOUR "FILL" SECTORS GIVE 4 X (1/6) X (1/30)=22 MSEC * * MAXIMUM AFTER THE LAST REQUEST IS COMPLETED AND THE * * NEXT ONE IS STARTED. IF THIS TIME IS EXCEEDED, THEN * * THE DISKETTE MUST ROTATE A COMPLETE REVOLUTION * * (167 MSEC) BEFORE THAT SECTOR CAN BE READ. * * * * THESE CALCULATIONS ASSUME: * * * * 6 REVOLUTIONS/SECOND * * 30 SECTORS/TRACK * * 4 FILL SECTORS * * * * TRACK 0 WOULD BE FORMATTED PER BELOW: * * SECTOR: 0,6,12,18,24,1,7,13,19,25,2,8 * * 14,20,26,3,9,15,21,27,4,10,16,22 * * 28,5,11,17,23,29 * * * * EACH SUCCEEDING TRACK WILL BE IN THE SAME ORDER AS * * ABOVE BUT THE STARTING TRACK CHOSEN TO ALLOW A TRACK * * SWITCHING TIME OF 4 "FILL" SECTORS. THAT IS * * TRACK 1 WILL PHYSICALLY START WITH SECTOR 11 SUCH THAT * * BY THE TIME THE HEAD IS SETTLED ON TRACK 1, SECTOR 0 * * WILL BE READY TO READ. * * * * IF THE OPERATOR ANSWERS NO TO THE STANDARD FORMAT? * * -------- ------- * * QUESTION THEN ALL TRACKS WILL BE FORMATTED WITH * * SERIAL SECTORS (0,1,2, ETC.) ALLOWING 4 "FILL" SECTORS * * BETWEEN TRACKS FOR TRACK SWITCHING SETTLING TIME. * * * * IT IS ANTICIPATED MOST DISKETTES WILL BE FORMATTED * * WITH THE "STANDARD FORMAT". THIS WILL OPTIMIZE * * THROUGHPUT USING SINGLE RECORD TRANSFERS. * * * * WE ARE ALLOWING THE SERIAL FORMAT FOR THE SITUATION * * WHERE THE USER HAS A LARGE BUFFER SPACE TO MAKE * * MULTIPLE SECTOR READ/WRITE REQUESTS AND THROUGHPUT * * IS IMPORTANT (I.E., STORAGE FOR HIGH SPEED ANALOG * * TO DIGITAL CONVERTER MEASUREMENTS). BOTH FORMATS * * ARE INTERECHANGEABLE FOR READING AND WRITING. THE * * ONLY NOTICEABLE DIFFERENCE WILL BE DATA THROUGHPUT  * * SPEED. * * * * DATA FOR EACH READ/WRITE REQUEST IS TRANSFERRED VIA DMA * * AT 30 KHZ. * * IF NEITHER YES OR NO IS ENTERED TO THE QUESTION, * * STANDARD FORMAT?, THEN DSKET ENDS. * * -------- ------- * * * * IF YES OR NO WAS ENTERED THEN THE DISKETTE IS * * FORMATTED. UPON COMPLETION, THE NUMBER OF GOOD TRACKS * * IS WRITTEN IN SECTOR 0, TRACK 0, WORD 1 AND THE TYPE * * OF FORMAT (STANDARD = 5, SERIAL = 1) WRITTEN IN * * WORD 2. * * * * THE INFORMATION IN WORD 1 IS NEEDED TO TELL THE FILE * * MANAGER THE LAST TRACK AS WELL AS PREVENTING THE HEAD * * FROM BANGING AGAINST THE HEAD STOP ON MULTIPLE SECTOR * * READ/WRITE. THIS COULD OCCUR IF THE DRIVER DID NOT * * KNOW THE LAST LOGICAL TRACK. * * * * THE INFORMATION IN WORD 2 CAN BE USED TO READ THE * * FORMAT TYPE. * * * * COMPLETION OF FORMATTING IS INDICATED BY THE MESSAGE: * * * * THE NUMBER OF GOOD TRACKS IS N * * - * * WHERE N=NUMBER OF GOOD TRACKS (0-67). * * * * ALL TRACKS ARE NUMBERED SERIALLY AND THE USER NEED NOT * * CONCERN HIMSELF WITH BAD TRACKS OTHER THAN TO REALIZE * * THEIR EXISTENCE LIMITS THE STORAGE CAPACITY OF THE * * DISKETTE. * * STORAGE CAPACITY = NUMBER OF GOOD TRACKS X 3840 WORDS. * * REV. 1650 ORIGINAL * REV. 1723 FIXED PRIVELEGED PROBLEM * REV. 1805 FIXED MOUNT WITH NO DISK PROBLEM * AND PRIV. WITH DMA PROBLEM * * NAM DVR33 12732-16001 REV 1805 10-20-77 ENT I.33,C.33 * I.33 NOP STA COMAD SAVE SELECT CODE JSB SETIO CONFIGURE IO * CLA CLR COMMAND CHANNEL STA TEMP6 JSB OUTAC * * LDA B.12 SET RETRY COUNTER OF 10 FOR NORMAL READ STA EQT12,I * LDx<:6A EQT4,I IOR BN11 SET TO HANDLE TIMEOUT STA EQT4,I * * CLA SET FOR INITIATION ENTRY STA TEMP4 RESRT LDA EQT6,I GET CONTROL WORD AND B2303 IS THIS A REQUEST FOR A FORMAT CPA B2302 INITIALIZATION ROUTINES? JMP FIP YES! GO PROCESS * LDA EQT6,I RAR SSA,SLA IF A CONTROL REQUEST JMP CONTL THEN GO TO CONTL ** LDA EQT6,I CHECK FOR READ MAX TRACK AND B2303 CPA B2301 JMP RMXTK YES! READ MAX TRACK ** LDA EQT9,I GET TRACK NO. SSA IF NEG. THEN REJECT JMP IREJ1 REJECT WITH A =1 (ILL. R\W) ADA D.67 IF >66 THEN READ NO. OF TRACKS SSA,RSS JMP RMXTK * LDB EQT6,I REJECT IF WRITE TO TRACK 0,SECTOR 0. LDA EQT9,I THIS IS RESERVED: ADA EQT10,I WORD 1 = NO. OF TRACKS SZA,RSS WORD 2 = NO. OF REV. TO READ (FORMAT TYPE) SLB JMP ON1 JMP IREJ1 * ON1 LDA EQT10,I GET SECTOR NO. SLA IF ODD OR >58 JMP IREJ1 REJECT REQUEST (A=1 FOR ILL. R W) SSA IF NEG. THEN REJECT JMP IREJ1 ADA D.59 SSA,RSS JMP IREJ1 NEG. SECTOR LDA EQT9,I GET TRACK LDB NUTRK GET NO. OF TRACKS FOR DISKETTE CMB,INB "NUTRK" IS LAST TRACK +1 ADA B IS REQUEST WITHIN NO. OF SSA GOOD TRACKS? JMP ISTR1 IT IS OK! JMP IREJ1 OUT OF RANGE A=1 (ILLEGAL R W) * 6<*^^^^^^^FIRST LINE OF SECOND TAPE^^^^^^^ * * D.XX IS MINUS DECIMAL XX * DXX IS PLUS DECIMAL XX * B.XX IS MINUS OCTAL XX * BXX IS PLUS OCTAL XX * BNXX IS SOME OCTAL NUMBER * D30 DEC 30 D.59 DEC -59 D.67 DEC -67 D128 DEC 128 D.5 DEC -5 B.12 OCT -12 B2302 OCT 2302 B2301 OCT 2301 B2303 OCT 2303 B2 OCT 2 BN13 OCT 177000 BN11 OCT 10000 RDCLS NOP =4000 IF READ WITH CLOSE TOL. TEMP6 NOP NUTRK NOP # OF TRACKS ON DISK MWORD NOP -# OF WORDS TO TRANSFER TEMP2 NOP SECTOR # DRIVE NOP DRIVE # SEEK OCT 140000 FIPCD NOP FORMAT COMMAND STORAGE DMAIN OCT 100000 DMAW1 NOP DMA WORD 1 COMAD NOP COMMAND CHANNEL DMACH NOP DMA CHANNEL * DATA DEC 67 STORE DEF DATA * * IF TRACK NO. > 66 RMXTK IS CALLED TO * READ MAXIMUM TRACK NO. STORED ON TRACK 0 SECTOR 0 * RMXTK CLA STA EQT9,I SET FOR TRACK 0 STA EQT10,I AND SECTOR 0 INA STA EQT8,I READ ONE WORD LDA STORE "STORE" HAS ADDRESS OF DATA STA EQT7,I SET BUFFER ADD. TO "DATA" LDA EQT6,I SET FOR READ AND BN13 IOR B2301 SET SPECIAL CODE FOR RMXTK STA EQT6,I * * * * BEGIN R\W OPERATION * ISTR1 LDA EQT8,I GET BUFFER LENGTH SSA,RSS CONVERT TO -WORDS CMA,INA,RSS ARS STA MWORD CMA,INA STA B SW1 NOP FORMAT SWITCH =NOP JMP OVER2 IF FORMAT COMMAND THAN GOTO OVER2 * SZB,RSS IS ZERO LENGTH? JMP IREJ4 YES, IMMEDIATE COMPLETION CLB DIV D128 DIVIDE WORDS BY SECTOR SIZE SZB,RSS A=QUOTIENT B=REMAINDER JMP OVER8 WHOLE SECTOR READ ISZ TEMP6 SET TEMP6 FOR PARTIAL SECTOR INA OVER8 STA TEMP2 TEMP2 =NO. SECTORS * * BELOW CODE DETERMINES NO. OF SECTORS LEFT FROM * REQUEST ADDRESS TO END OF DISK. IT THEN COMPARES * THIS TO THE NO. SECTORS REnQUIRED TO COMPLETE * THE REQUEST. IF THERE ARE NOT ENOUGH THE REQUEST * IS REJECTED. * THE ABOVE CHECK IS IMPORTANT IN THAT IT KEEPS * THE HEAD FROM FLYING REPEATEDLY INTO THE * CAST IRON STOP. * * LDA NUTRK GET NO. OF TRACKS LDB EQT9,I GET TRACK ADDRESS CMB,INB ADA B SUBTRACT FROM NO. OF TRACKS MPY D30 MULIPLY BY NO. OF SECTORS PER TRACK * LDB EQT10,I GET STARTING SECTOR BRS CHANGE TO PHYSICAL SECTOR CMB,INB ADA B SUBTRACT FROM SECTORS AVAILABLE * * A REG. NOW HAS NO. OF SECTORS AVAILABLE * LDB TEMP2 GET NUMBER OF SECTORS REQUIRED CMB,INB MAKE NEG. ADA B SUBTRACT FROM SECTORS AVAILABLE SSA IT SHOULD NOT BE NEG. JMP IREJ1 TOO MANY SECTORS REQUIRED. JSB PWORD SEND PASSWORD * LDA TEMP6 SZA,RSS CHECK FOR PARTIAL SECTOR READ JMP OVER9 LDA B2 SET FOR PARTIAL SECTOR JSB OUTAC OVER9 LDA EQT9,I GET STARTING TRACK ALF,RAL MOVE TO POSITION 5-11 LDB EQT10,I GET LOGICAL SECTOR BRS CHANGE TO PHYSICAL SECTOR BITS 0-4 IOR B ADD TRACK (BITS 5-11) IOR DRIVE ADD DRIVE (BITS 12-13) IOR SEEK COMPLETE SEEK COMMAND (14XXXX) * JSB OUTA SEND SEEK OVER2 JSB PWORD SEND PWORD FOR R\W * LDA EQT6,I GET CONTROL WORD RAR,CLE,ELA E=IN\OUT =1\0 * LDB EQT7,I GET STARTING ADDRESS SEZ SET DMA DIRECTION BIT ADB DMAIN IN/OUT = 1/0 LDA DMAW1 GET DMA WORD ONE OCT 1000SC DMASW NOP NOP/RSS= CHAN6/CHAN7 JMP CHAN6 OTA 7 SEND WORD 1 (CONTROL WORD) CLC 3 CONTROL IS 1000SC OTB 3 SEND WORD2(BUFFER ADDRESS) BIT 15 =1 FOR IN LDA MWORD GET MINUS NO. WORDS STC 3 OTA 3 SEND WORD3(WORD COUNT) * * DMA STARTS WITH FIRS0T FLAG. FOR READ DVR33 HAS SENT * FIRST STC. FOR WRITE NO STC IS SENT(DMA WILL SUPPLY) * JMP ON3 * * SAME AS ABOVE BUT FOR CHANNEL 6 * CHAN6 OTA 6 CLC 2 OTB 2 LDA MWORD STC 2 OTA 2 * ON3 LDA FIPCD GET "FORMAT" COMMAND ** CLF 0 DISABLE INTERRUPTS FOR PRIVELEGE TIMING PROBLEM ** SW2 NOP "FIP" SWITCH =NOP FOR "FORMAT" JMP OTA03 CLA,CME BITS 15-14 = R/W 00/10 ERA IOR DRIVE ADD DRIVE BITS 12-13 IOR RDCLS ADD READ CLOSE TOLERANCE IOR TEMP2 ADD RECORD COUNT BITS 0-11 SSA IF WRITE THEN SEND COMD. AT OTA03 JMP OTA03 OTA04 OTA DATCH SEND READ COMD. HERE STC04 STC DATCH CLA CLR. BI DIRECTIONAL BUS SFS02 SFS DATCH RACE CONDITION HERE BETWEEN STC04 JMP *-1 AND STC06 (12 USEC. MAX) OTA03 OTA DATCH R\W =0XXXXX\1XXXXX STC06 STC DATCH * * BELOW CODE NECESSARY TO ALLOW RTE TO * RECOGNIZE AND PROCESS THE DMA INTERRUPT * USED TO DETERMINE WHEN THE SECTOR HAS * BEEN TRANSMITTED. * STCDM STC CMDCH,C INITIATE DMA CLA CPA DUMMY BYPASS BELOW CODE IF NO PRIVILIGED JMP OUT INTERRUPT REQUIRED * CLCD1 CLC CMDCH INHIBIT DMA INTERRUPT LDB INTBA GET EQT ASSIGNED TO DMA CHANNEL LDA DMACH GET CURRENT DMA CHANNEL CPA B7 IS IT 7? INB YES LDA B,I SET BIT 15 OF ENTRY EQUAL IOR DMAIN TO 1 STA B,I STF 0 ENABLE INTERRUPT SYSTEM * OUT JSB EXIT1 JMP CLCD2 * * * EXIT1 NOP STC10 STC CMDCH ENABLE ERROR INTERRUPT LDA BN10 SET 5 SEC. TIMEOUT STA EQT15,I CLA SET FOR GOOD RETURN LDB TEMP4 FIND OUT WHICH EXIT WE SZB,RSS SHOULD JMP I.33,I TAKE. ISZ C.33 TEMP2=0/1 = I.33/C.33+2 JMP C.33,I * * IS CONTINUATION INTERRUPT * C.33 NOP  STA TEMP1 ISZ TEMP4 SET FOR CONTINUATION ENTRY * LDB EQT4,I CHECK FOR TIME OUT ENTRY BLF SSB JMP TIMOT WE HAVE TIMED OUT LDA TEMP1 GET INTERRUPT S.C. CPA DMACH IS THIS A DMA INTERRUPT? JMP STATW YES? * CPA COMAD IS THIS AN ERROR INTERRUPT? RSS JMP ON2 NO ERROR INTERRUPT CLCD2 CLC CMDCH TURN OFF DMA INTERRUPT FOR ERROR STFDM STF CMDCH STOP DMA HANDSHAKE CLFDM CLF CMDCH CLEAR FLAG TO KILL INT. * JMP STATU * * B4 OCT 4 B3 OCT 3 B17 OCT 17 B11 OCT 11 B7 OCT 7 BN9 OCT 10017 BN10 OCT 177000 BN12 OCT 50017 BN8 OCT 177400 BN2 OCT 177600 BN7 OCT 40000 BN20 OCT 77777 * BREGX NOP AREGX NOP STATS NOP STATUS STORAGE TEMP4 NOP 0\1 = I.33\C.33 TEMP1 NOP TEMP STORAGE PASS OCT 127207 PASSWORD * * ON2 LDA EQT1,I GET QUE WORD SZA,RSS JMP CREJ1 SPURIOUS INTERRUPT * JMP EXIT1,I CONTINUE AT ADDRESS STORED HERE * * RESETS CONTROLLER AND TAKES TIMEOUT EXIT * TIMOT JSB PRESA RESET CONTROLLER JMP CREJ4 TIMEOUT EXIT * * * ** STATW CLA CPA DUMMY CHECK FOR PRIV. CARD JMP STATX LDB INTBA GET MY EQT LDA DMACH GET MY DMA CPA B7 MUST CLEAR SIGN BIT ON INTBA INB OR SYSTEM WILL ISSUE ANOTHER LDA B,I "STC" WHICH WILL CAUSE FLOPPY AND BN20 TO START HANDSHAKING AGAIN STA B,I AND CLEAR CORE ** STATX LDA EQT6,I IF DMA INT. AND WRITE THEN SLA,RSS CHECK DATA FLAG JSB SKPFG * * GETS CONTROLLER STATUS * STATU CLA JSB OUTA LIA02 LIA DATCH GET STATUS STC02 STC DATCH JSB SKPFG TELL CONTROLLER WE GOT STATUS ALF,ALF STA STATS * LDB EQT7,I IF "FPCON" REQUEST THEN GOTO CPB BN10 OVER5. DO NOT CHECK XFER COMPLETE. JMP OVER5 * AND BN12 CHECK XFER COMPLETE(BIT 14) AND NO ERROR. CPA BN7 BN12=50017,BN7=40000 . JMP ERR0 NO ERROR SZA,RSS IF ONLY XFER COMP. NOT SET (BIT 14) THEN STA TEMP1 TEMP1 =0. (NO OTHER ERRORS) LDA STATS JMP ERR1 * * * "STATS" LOOKS LIKE THIS * * BITS 0-3 MEANING * 0 NO ERROR * 1 NO POWER * 2 DOOR OPEN * * 3 NO DISK IN DRIVE * 4 INVALID CMD. * 5 RECORD NOT FOUND * 6 TRACK NOT FOUND * 7 DATA CHECKWORD ERROR * 10 DATA OVER RUN * 11 VERIFY ERROR * * BITS 8-9 DRIVE NO. * 10 DISK CHANGE (2000) * 11 WRITE PROTECT (4000) * 12 NOT READY (10000) * 13 SEEK COMPLETE (20000) * 14 XFER COMPLETE (40000) * OVER5 AND BN9 CHECK FOR NR AND BITS 0-3 SZA ANY ERROR JMP ERR1 YES! EXAMINE STATUS * ERR0 LDB EQT8,I CALCULATE NO. WORDS SSB OR CHAR. CMB,INB IF CHAR. MAKE POS. STB BREGX SET TRANSMISSION LOG OK1 CLA SET A REG FOR SUCCESSFUL STA AREGX COMPLETION JMP EOOP1 EXIT * ERR1 LDB EQT10,I IF STATUS REQUEST DO NOT DOWN. CPB B7740 JMP OK1 STATUS REQUEST. * AND B11 IF VERIFY ERROR DO NOT RETRY CPA B11 JMP ERR0 VERIFY ERROR THEREFORE EXIT LDA STATS AND B17 ADA D.5 IF GREATER THAN 4 WE SSA,RSS WILL RETRY FOR TRANS. JMP RETRY ERROR LDA TEMP1 CHECK FOR TRANS. INCOMPLETE SZA,RSS JMP RETRY CREJ1 CLA,INA SET FOR MALFUNCTION STA AREGX CLA STA BREGX JMP EOOP1 * * ADDRESS,CHECKWORD,OVER RUN AND VERIFY ERROR * MAY BE RECOVERABLE * * RETRY ISZ EQT12,I INCR8EMENT COUNTER JMP RESRT HAVE WE RETRIED 10 TIMES JMP CREJ3 YES! RECOVERY NO POSSIBLE * IREJ1 CLA,INA SET FOR ILLEGAL R/W RSS * IREJ2 LDA B2 SET FOR ILLEGAL CONTROL JMP I.33,I * IREJ3 LDB B3 SET FOR NOT READY LDA EQT5,I AND BN8 IOR B SET FOR NOT READY STA EQT5,I LDA B3 RSS RSS IREJ4 LDA B4 SET FOR IMMEDIATE COMPLETION JMP I.33,I * * TRANSMISSION ERROR EXIT * CREJ3 LDB EQT9,I GET TRACK IN B REG. STB BREGX LDA B3 STA AREGX JMP EOOP1 * * SENDS PASSWORD TO CONTROLLER * PWORD NOP JSB PSTS CHECK FOR POWER ON JSB FIRST CHECK FOR FIRST ENTRY LDB PASS GET PASSWORD 127207 OTB02 OTB DATCH STC03 STC DATCH,C SEND IT JSB SKPFG JMP PWORD,I RETURN * * CHECKS FOR POWER STATUS. IF OFF THEN * A "PRESET" IS DONE TO CLEAR CONTROLLER AND * IT IS CHECKED AGAIN. * PSTS NOP LIA01 LIA CMDCH SSA IF SIGN SET THEN OK JMP PSTS,I JSB PRESA RESET CONTROLLER LIA03 LIA CMDCH CHECK IT AGAIN SSA JMP PSTS,I IT IS OK NOW LDB TEMP4 CHECK FOR ENTRY SZB,RSS I.33\C.33 =0\1 JMP IREJ3 I.33 NOT READY EXIT CLB,INB STB AREGX SET FOR C.33 NOT READY LDB B3 JMP OVER6 FIRST NOP LDA EQT11,I SZA IF EQT11 =0 THEN FIRST ENTRY JMP FIRST,I ISZ EQT11,I JSB PREST RESET CONTROLLER JMP FIRST,I * * OUTPUTS CONTENTS OF A REG. TO DATA CH. AND WAITS * FOR FLAG * OUTA NOP OTA01 OTA DATCH,C STC01 STC DATCH,C JSB SKPFG WAIT FOR FLAG JMP OUTA,I * * GIVES TIMED INTERRUPT RESPONSE * SKPFG NOP  STC09 STC CMDCH ENABLE INTERRUPT LDB BN2 SETUP TIMER FOR 200 USEC. ISZ B IF FLAG NOT SET EXIT JMP *-1 DRIVER AND CONTINUE TO SFS01 SFS DATCH WAIT FOR INTERRUPT. JSB EXIT1 CLF01 CLF DATCH JMP SKPFG,I * CNTL0 JSB PREST LDA B4 LDB TEMP4 CHECK FOR I.33\C.33 EXIT SZB,RSS JMP IREJ4 CLA JMP C.33,I * * CONTL LSR 5 GET CONTROL WORD IN LOWER BITS AND B37 SZA,RSS IF CODE 0 THEN ABORT AND RESET JMP CNTL0 CPA B6 ONLY VALID COMMAND IS 6 RSS JMP IREJ2 LDA B7740 LOAD STATUS COMD STA EQT10,I * * * DOES THE PROCESSING OF SPECIAL COMMANDS USED * IN THE FORMATTING OF A DISK. IT IS ONLY CALLED * IF BITS 6-10 OF CONWD=23. EQT10 (DSECT) CONTAINS * COMMAND TO BE PROCESSED. * * * DSECT COMMAND * 0 FORMAT * 7600 STEP TRACK IN * 7630 WRITE TRACK 0 AND SECTOR 0 * 7640 WRITE DEFECTIVE TRACK * 7740 STATUS * * FIP LDA EQT10,I GET COMMAND SZA,RSS JMP FMTRK FOR FORMAT TRACK CPA B7600 JMP FPCON STEP HEAD IN CPA B7630 JMP WRMAX FOR WRITING TRACK 0, SECTOR 0 CPA B7640 JMP FPCON WRITE DEFECTIVE TRACK CPA B7740 GET STATUS JMP FPCON JMP IREJ1 ILLEGAL R\W * * * USED FOR FORMATTING DISK * FMTRK LDA EQT9,I GET TRACK TO FORMAT ALF,ALS POSITION IN BITS 5-11 IOR DRIVE ADD DRIVE IN BITS 12-13 IOR FMTCD ADD FORMAT COMMAND (140036) STA FIPCD * * USED FOR "STEP TRACK","WRITE DEF. TRK." * AND "STATUS" * * JMP ISTR1 * * FPCON JSB PWORD SEND PASSWORD LDA EQT10,I GET COMMAND LDB BN10 SET FPCON FLAG STB EQT7,I IOR DRIVE ADD DRIVE IOR STPCD ADD OCT 140037 JSB ʋOUTA JMP STATU * * WRMAX CLA SET FOR SECTOR 0 STA EQT10,I STA EQT9,I SET FOR TRACK 0 JMP ISTR1 * * * DOES NOT WAIT FOR FLAG ON RESET * THIS IS USED BY AND * PRESA NOP CLB JMP OVER1 * SETS 9885 TO POWER ON CONDITION * AND WAITS FOR FLAG * PREST NOP CLB,INB OVER1 CLA,INA DRIVE IS PRESET BY TOGGLING BIT 0 JSB OUTAC CLA JSB OUTAC SZB,RSS CHECK FOR PRESA ENTRY JMP PRESA,I JSB OUTA WAIT FOR CONTROLLER TO PROCESS PRESET JMP PREST,I * BN3 OCT 170001 BN6 OCT 103700 BN5 OCT 100077 BN4 OCT 102300 B5600 OCT 5600 B5000 OCT 5000 B4000 OCT 4000 B.1 OCT -1 B.4 OCT -4 B200 OCT 200 B1400 OCT 1400 B40 OCT 40 B300 OCT 300 B100 OCT 100 B6 OCT 6 B1000 OCT 1000 B37 OCT 37 B400 OCT 400 B7740 OCT 7740 B7600 OCT 7600 B7630 OCT 7630 B7640 OCT 7640 B2000 OCT 2000 * FMTCD OCT 140036 STPCD OCT 140037 * * IS TIMEOUT EXIT * CREJ4 LDA B4 STA AREGX * * IS PRIMARY DRIVER EXIT * * EOOP1 LDB B37 IF TRANSMISSION INCOMPLETE ERROR LDA TEMP1 ONLY,THE SET FOR ERROR 37 SZA,RSS JMP OVER6 * LDA STATS GET STATUS WORD ALS SHIFT 1 AND B37 ISOLATE BITS (0-4) SZA IF NO ERROR SKIP INA ERROR,SET BIT 0 STA B LDA STATS POSITION DISK CHANGE TO ALF,ALF BIT 6 AND WRITE PROTECT ALF TO BIT 7 AND B300 ISOLATE AND IOR B OR WITH ERROR BITS STA B AND STORE OVER6 LDA EQT5,I GET OLD STATUS AND BN8 IOR B MERGE NEW STATUS STA EQT5,I AND REPLACE ** LDA EQT6,I CHECK FOR RMXTK EXIT AND B2303 CPA B2301 JMP MXTEK THIS IS A MAX TRACK EXIT ** LDB BREGX GET TRANS. LOG JMP EOOP2 RETQUEST COMPLETE * * STATUS IN EQT5 IS RETURNED PER BELOW: * BITS 0-6 MEANING * 0000000 NO ERROR * 0000011 NO DRIVE POWER * 0000101 DOOR OPEN * 0000111 NO DISK * 0001001 INVALID COMMAND * 0001011 RECORD NOT FOUND * 0001101 TRACK NOT FOUND * 0001111 DATA CHECKWORD ERROR * 0010011 READ CLOSE TOL. ERROR * 0011111 TRANSMISSION INCOMPLETE * 0100001 END OF TRACK. DATA BLOCK TOO LONG * 0010001 DATA OVER RUN * * * * BITS 0-7 * 00100000 END OF TRACK. ACCESS TRACK>66 * 01000000 DISK CHANGE * 10000000 DISK WRITE PROTECTED * * * USED FOR "FIP" EXITS * MXTEK LDB DATA GET NO. OF TRACKS ON DISK LDA DRIVE ALF GET DRIVE NO. ADA ADDR FIND STORAGE ADDRESS STB A,I STORE IT FOR FUTURE USE LDA AREGX SLA IF NO ERROR RETURN SET EOT BIT 5 JMP C.33,I LDA B40 IOR EQT5,I STA EQT5,I EOOP2 LDA AREGX CHECK FOR ERROR (A NOT 0) SLA,RSS JMP C.33,I CLA JSB OUTA ERROR, SO HANDSHAKE TO AVOID ANY EXTRA LDA AREGX INTERRUPTS ON DATA CHANNEL LDB BREGX JMP C.33,I RETURN * * * * SETIO NOP INA SET FOR CONFIG. DATA CHANNEL IOR BN4 STA SFS01 SFS IS 1023XX STA SFS02 IOR B1400 STC ID 1037XX STA STC01 STA STC02 STA STC03 STA STC04 STA STC06 ADA B.1 COFIG. COMMD. CHANNEL STA STC09 CMD CH. STA STC10 STA STC11 XOR B200 LIA IS 1025XX STA LIA01 CMD CH. STA LIA03 INA STA LIA02 DATA CH. STA LIA02 XOR B400 STA CLF01 * * LDA DMA STA DMACH * * LDA STC01 OTA IS 1026XX XOR B100 STA OTA01 STA OTA0`{3 STA OTA04 ADA B.1 STA OTA05 CMD CH. XOR B4000 INA STA OTB02 DATA CH. AND BN5 STA DMAW1 CONFIGURE DMA WORD 1 LDA BN6 IOR DMACH STA STCDM STC,C DMACH * IOR B5000 STA CLCD1 CLC IS 1077XX STA CLCD2 * XOR B5600 STF IS 1021XX STA STFDM THIS IS STF ON DMA IOR B1000 STA CLFDM THIS IS A 1031XX(CLF) ON DMA * * LDA EQT4,I CONFIGURE DRIVE # FROM SUBCHANNEL ALF ALS,ALS AND BN3 DRIVE IN BITS 12-13 (0-3) STA DRIVE ALF ADA B.4 CHECK FOR LEGAL SUBCHANNEL SSA,RSS LEGAL IS 0-3 JMP IREJ3 NOT READY ADA B4 ADA ADDR FIND NO OF TRACKS FOR THIS DRIVE LDA A,I STA NUTRK STORE IT AT NUTRK * * CLB LDA EQT6,I IS THIS READ CLOSE TOLERANCE SLA,RSS JMP OVER4 NOT A READ AND B2000 CPA B2000 LDB BN7 OVER4 STB RDCLS 40000B LDA RSS LDB DMACH GET ASSIGNED DMA CH. SLB,RSS CH7\CH6 = RSS\0 FOR DMASW CLA STA DMASW * LDB RSS LDA EQT6,I GET CONWD AND B2302 IF "FIP" COMMAND CPA B2302 THEN SEE IF "FORMAT" RSS JMP OVER7 LDA EQT10,I SZA,RSS CLB OVER7 STB SW1 SET A "RSS" IN ALL SWITCHES FOR STB SW2 NON "FORMAT" COMMAND JMP SETIO,I * * * STORAGE FOR NO. OF TRACKS * INITIALIZED FOR 67 * MAX1 DEC 67 DEC 67 DEC 67 DEC 67 ADDR DEF MAX1 * EQU'S FOR VARIOUS ENTRIES * A EQU 0 B EQU 1 CMDCH EQU 20 DATCH EQU 21 * * SYSTEM BASE PAGE COMMUNICATION AREA * . EQU 1650B ESTABLISH ORIGIN OF EQT'S EQT1 EQU .+8 LIST POINTER EQT2 EQU .+9 I.33 ADDRESS EQT3 EQU .+10 C.33 ADDRESS EQT4 EQU .+11 SUBCHANNEL(6-10) EQT5 EQU .+12 STATUS(0-7aB@<) EQT6 EQU .+13 CONWD EQT7 EQU .+14 BUFFER ADD. EQT8 EQU .+15 BUFFER LENGTH EQT9 EQU .+16 TRACK NO. EQT10 EQU .+17 SECTOR NO.(EXCEPT IF CONWD=33) EQT11 EQU .+18 FIRST ENTRY FLAG EQT12 EQU .+81 RETRY COUNTER EQT13 EQU .+82 EXIT1 RETURN EQT14 EQU .+83 TIME OUT CLOCK EQT15 EQU .+84 TIME OUT VALUE * DMA EQU .+19 CURRENT DMA CHANNEL INTBA EQU .+4 FWA OF INTERRUPT TABLE DUMMY EQU .+55 ADDRESS OF PRIVILEGED IO CARD * * ORG * END gB  12732-18002 1709 S C0122 &DSKET FORMAT UTILITY             H0101 FTN4,L PROGRAM DSKET EXTERNAL EXEC,ABREG DIMENSION IBUF1(384) ,IPRAM(5),IBUF2(30),I(3) C C************************************************************** C (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. ALL RIGHTS * C RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT* C THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * C************************************************************** C DATE CODE 3- 15-77 REV. 1709 C C THIS PROGRAM IS A DISKETTE FORMAT PROGRAM WHICH C OPERATE WITH RTE DRIVER DVR33. C ***** W-A-R-N-I-N-G***** C FORMATING A TRACK(S) WILL DESTROY C ANY DATA ON THE TRACK C ************************ C C C PICK TERMINAL LU C CALL RMPAR(IPRAM) C IF (IPRAM)5,5,10 5 L=1 GOTO 20 10 L=IPRAM  20 WRITE(L,35) 35 FORMAT("ENTER DRIVE LU?_") C C READ(L,*)I1 75 WRITE(L,80) 80 FORMAT("DO YOU REALLY WANT TO FORMAT THIS DISC?_") C READ(L,85)J3 85 FORMAT(A2) IF(J3-54505B)940,90,940 C C DETERMINE FORMAT TYPE C 1.STANDARD (4 FILL SECTORS) C 2.SERIAL (NO FILL SECTORS) C C 90 WRITE(L,92) 92 FORMAT("STANDARD FORMAT?_") READ(L,94)J3 94 FORMAT(A2) IF(J3-47117B)98,97,98 97 K1=1 GOTO 102 C Cu 98 IF(J3-54505B)940,100,940 100 K1=5 C C RESET CONTROLLER C 102 CALL EXEC(3,I1) C C C C ICOUN IS PHYSICAL TRACK C M1 IS LOGICAL TRACK C C C C Cu C CALC. FORMAT ARRAY FOR TRACK ZERO C Cu GOTO 500 C C M1 IS LOGICAL TRACK C ICOUN IS PHYSICAL TRACK C 110 M1=0 ICOUN=0 C C FOR TRACK 0 IBUF1 IS THE SAME AS IBUF2 C uu 114 DO 115 N=1,30 115 IBUF1(N)=IBUF2(N) GOTO 2000 C C uu C CALCULATE TRACK OFFSET (J1) FOR TRACK M1 C C CALC NO. OF FILL SECTORS (NO. REV.-1) C 116 J1=K1-1 Q C C MUST HAVE 4 MIN. FILL SECTORS C IF(J1-4)120,122 120 J1=4 122 N2=1 C C N2 IS IBUF1 POINTER (CURRENT TRACK BUFFER) C J2 IS IBUF2 POINTER (TRACK 0 BUFFER) C 125 J2=30-J1*M1 C C ARRAY POINTER MUST BE >0 C IF(J2-1)130,135 130 J2=30+J2 IF(J2-1)130,135 135 IBUF1(N2)=IBUF2(J2) N2=N2+1 J2=J2+1 IF(N2-31)140,200 140 IF(J2-31)135,145 145 J2=1 GOTO 135 C 300 IF(M2)310,305 C C DO NOT INCREMENT LOGICAL TRACK POINTER IF C TRACK DEFECTIVE (M2 IS NEG.) C uu 305 M1=M1+1 C 310 ICOUN=ICOUN+1 IF(ICOUN-67)320,330 C C C MOVE HEAD IN C C 320 CALL EXEC(2,2300B+I1,IBUF1(1),1,0,7600B) C Cu GOTO 116 C C REPORT TOTAL NO. OF BAD TRACKS C C C WRITE (NUMBER GOOD TRACKS ) IN WORD 1 C OF TRACK 0 SECTOR 0 C Cu C WRITE NO. OF REV. IN WORD 2 C C 330 IBUF1(1)=M1 IBUF1(2)=K1 CALL EXEC(2,2300B+I1,IBUF1(1),2,0,7630B) C C FILL BUFFER WITH ZEROS C M1=M1-1 DO 410 N=1,384 410 IBUF1(N)=0 DO 415 J=0,58,6 415 CALL EXEC(2,I1,IBUF1(1),384,M1,J) C C CREATE FILE DIRECTORY FOR CARTRIDEGE C "FORMAT" C IBUF1(1)=143117B IBUF1(2)=51115B IBUF1(3)=40524B IBUF1(4)=32760 IBUF1(6)=2 IBUF1(7)=60 IBUF1(8)=M1 IBUF1(9)=-1 C Cu C CREATE ENTRY FOR FILE "FLOPLK" C IBUF1(17)=43114B IBUF1(18)=47520B IBUF1(19)=46113B C IBUF1(20)=1 IBUF1(23)=2 IBUF1(25)=-32767 CALL EXEC(2,I1,IBUF1(1),128,M1,0) C M1=M1+1 WRITE(L,335)M1 335 FORMAT("THE NO. OF GOOD TRACKS IS" I6) GO TO 950 C C FORMAT TRACK M1 C 200 CALL EXEC(2,2300B+I1,IBUF1(1),30,M1,0) C C SET DATA PATTERNS C I(1)=033066B I(2)=155555B M2=0 DO 230 M=1,2 C C FILL DATA BUFFER WITH TEST PATTERN C DO 210 N=1,384 210 IBUF1(N)=I(M) DO 220 J=0,58,6 C C WRt ITE DATA ON TRACK M1 SECTOR J C C IF TRACK 0,SECTOR 0 USE SPECIAL WRITE C IF((M1+J)-1)215,219 215 CALL EXEC(100002B,2300B+I1,IBUF1(1),384,M1,7630B) GOTO 751 217 M123=1= GOTO 220 219 CALL EXEC(100002B,I1,IBUF1(1),384,M1,J) GOTO 752 220 CONTINUE C C READ DATA BACK C DO 230 J=0,58,6 218 M123=1 225 ITRY=1 226 CALL EXEC(100001B,3000B+I1,IBUF1(1),384,M1,J) GO TO 750 247 CALL ABREG(IA,IB) C C CHECK STATUS IN A REG. C RETRY ONCE IF ERROR C IF(15400B-IA)233,228,233 233 IF(ITRY-2)227,250 227 ITRY=ITRY+1 GOTO 226 C CHECK DATA HERE C 228 DO 230 N=1,384 IF(IBUF1(N)-I(M))250,230,250 230 CONTINUE C Cu C GOTO 300 C C WRITE A DEFECTIVE TRACK C 250 CALL EXEC(2,2300B+I1,IBUF1(1),1,M1,7640B) WRITE(L,255)ICOUN 255 FORMAT("TRACK",I3," IS DEFECTIVE") M2=-1 GO TO 300 C C CALCULATE SECTOR ARRAY IBUF2 C 500 K3=30/K1 IBUF2(1)=0 K4=1 K2=2 510 K5=IBUF2(K2-1)+K3 IF(29-K5)520,540 520 IBUF2(K2)=K4 K4=K4+1  GOTO 550 540 IBUF2(K2)=K5 550 K2=K2+1 IF(K2-31)510,570 570 GOTO 110 750 GOTO 247 751 GOTO 220 752 GOTO 220 C 940 WRITE(L,941) 941 FORMAT("DSKET END") 950 END END$   12732-18003 1708 S C1022 &MFLX0 12732 FLEXIBLE DISC DIAG.             H0110 ASMB,A,B 770223 REV.1708 DSN 111104 HED 12732A/12733A FLEXIBLE DISC DIAGNOSTIC * ORG 0 * * NAME : MFLEX * SOURCE: 12732-18003 * BINARY: 12732-16003 * PROGMR: H.L.CLAWSON * * **************************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1976. 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. * * **************************************************************** * * SKP ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR. * B. (HALT 102077) CONFIGURE PROGRAM INPUT DEVICE, * CONSOLE DEVICE, & LINE PRINTER (IF AVAILABLE). * LOAD DIAGNOSTIC PROGRAM WITH CONFIGURATOR LOADER. * C. (HALT 102077) SET P-REG = 100B. * SET S-REG BITS 5-0 = SC OF DISKETTE (CONTROL CHANNEL). * PRESS RUN. * D. (HALT 102074) LOAD S-REG WITH OPTIONS. PRESS RUN. * ***** S-REGISTER OPTIONS ***** * * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * (ABORT CURRENT OPERATION) * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * 7 = ECHO CONSOLE I/O ON LINE PRINTER * 6 = SPARE * 5 = ENABLE FORMAT & MARK COMMANDS * 4 = ENABLE FORMAT & MARK COMMANDS * 3 = GO TO OPDSN INPUT SECTION * (ABORT CURRENeT OPERATION) * 2 = ALTER PATTERNS IN 'TRAK' * 1 = ENABLE FORMAT & MARK COMMANDS * 0 = ENABLE FORMAT & MARK COMMANDS * NOTE: STANDARD RUN SHOULD BE WITH S-REG = 0 * * TO RESTART WITHOUT RECONFIGURATING, SET P-REG = 2000B, * THEN GO TO D. * TO RECONFIGURE GO TO C. * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST XXXXXX) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 106077 TRAP CELL HALT * * * * USER CONTROL SECTION * * SWITCH REGISTER BIT 9 IS SENSED AT THE END OF EACH TEST. * IF SET THE COMPUTER HALTS 102075. THE USER MAY THEN * SELECT A TEST SEQUENCE BY ENTERING BITS IN THE * A REGISTER. EACH BIT SET WILL CAUSE ONE TEST TO EXECUTE. * BITS 0-15 OF A CORRESPOND TO TESTS 0-15. * CLEAR A TO RUN STANDARD SEQUENCE OF TESTS. * HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * * CONTROL LINKAGE * * * DATA STORAGE 1777B * * ******************************************* * * EXECUTIVE CONTROL 2000B * * * TABLE OF I/O INSTRUCTIONS * * * STANDARD DIAGNOSTICS 3777B * * ******************************************* * * OPERATOR DESIGN 4000B * * * GENERAL ROUTINES 5777B * * ******************************************* * * OPDSN SYNTAX CHECK 6000B * * * DISKETTE ROUTINES 11577B * * ******************************************* * * OPDSN USER PROGRAM 11600B * * * 12077B * * ******************************************* * * I/O BUFFERS 12100B * * * N6477B * * ******************************************* * * DIAGNOSTIC N6500B * * * CONFIGURATOR N7777B * * ******************************************* * * * * N = 1 FOR 8K MEMORY * 3 FOR 16K MEMORY * 5 FOR 24K MEMORY * 7 FOR 32K MEMORY * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE DMAH EQU 6 DMA HIGH CHANNEL DMAL EQU 2 DMA LOW CHANNEL DMA6 EQU 6 DMA CHANNEL 6 DMA7 EQU 7 DMA CHANNEL 7 CC EQU 10B DISKETTE COMMAND CHANNEL DC EQU 11B DISKETTE DATA CHANNEL CH EQU 10B INTERFACE TEST CHANNEL * * ORG 2 HLT 77B DISKETTE LOADER ROM JUMPS HERE JMP CFIG,I GO TO CONFIGURATION SECTION * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAINL BSS 1 FAST INPUT (PHOTO READER) SLOPL BSS 1 SLOW OUTPUT (LIST) FAOPL BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLINL BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF ZZZZZ FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT SCFI BSS 1 SELECT CODE OF FAST INPUT DEVICE SCSO BSS 1 SELECT CODE OF SLOW OUTPUT DEVICE SCFO BSS 1 SELECT CODE OF FAS T OUTPUT DEVICE SCSI BSS 1 SELECT CODE OF SLOW INPUT DEVICE CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE BSS 1 TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL OCT 111104 DIAGNOSTIC SERIAL NUMBER FMTRL BSS 1 FORMATTER * * * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * DBD EQU FWAM START OF OUTPUT BUFFER DBDI NOP START OF INPUT BUFFER DBCO NOP BUFFER SIZE ERLIM DEC 10 MAX NO. OF ERRORS OUTPUT BY 'COMPARE' COMCH OCT 10 DISKETTE COMMAND CHANNEL DATCH OCT 11 DISKETTE DATA CHANNEL CHAN OCT 6 CURRENT DMA CHANNEL TRACK DEC 67 NO. OF GOOD TRACKS ZEOLC NOP PASS COUNT RETRY NOP NUMBER OF RETRIES PERMITTED COP NOP CURRENT DISKETTE OPERATION STATW NOP LAST STATUS RETURNED STEXP NOP EXPECTED STATUS MASK NOP STATUS MASK CSEC NOP CURRENT SECTOR(TRACK X 30 + SECTOR) DRIV. NOP CURRENT DRIVE CMOD. NOP DMA/NON-DMA FLAG (104B=DMA) PATRN EQU * OCT 033066 OCT 033066 OCT 125252 OCT 052525 OCT 106615 OCT 106615 OCT 155555 OCT 155555 OCT 133333 OCT 133333 OCT 143306 OCT 143306 RN1 NOP RANDOM OCTAL PATTERN RN2 NOP PATNE DEF * * HED DISKETTE COMMAND CODES * * DISKETTE COMMAND CODES * READ OCT 000000 READ A BLOCK OF SECTORS WR8T OCT 100000 WRITE A BLOCK OF SECTORS VRF OCT 040000 VERIFY A BLOCK OF SECTORS SEK OCT 140000 SEEK A TRACK AND SECTOR FMT OCT 140036 FORMAT A TRACK STEPT OCT 147637 STEP IN ONE TRACK BAD OCT 147677 MARK A TRACK DEFECTIVE DUMPS OCT 147737 DUMP A SECTOR STSRQ OCT 147777 REQUEST STATUS UNDF OCT 140037 UNDEFINED COMMAND * PASSW OCT 127207 DISKETTE CONTROLLER PASSWORD * SKP * * * * DISKETTE STATUS WORD * * P 0 0 0 EEEE 0 T S R W C DD * * * P: POWER OFF OR DRIVE NOT READY 100000 B * * EEEE: * 0000 NO ERROR 000000 B * 0001 NO DRIVE POWER 000400 B * 0010 DOOR OPEN 001000 B * 0011 NO DISC IN DRIVE 001400 B * 0100 INVALID COMMAND 002000 B * 0101 SECTOR NOT FOUND 002400 B * 0110 TRACK NOT FOUND 003000 B * 0111 CHECKWORD ERROR 003400 B * 1000 DATA OVERRUN 004000 B * 1001 VERIFY ERROR 004400 B * * * T: TRANSFER COMPLETE 000100 B * * S: SEEK COMPLETE 000040 B * * R: DRIVE NOT READY 000020 B * * W: WRITE PROTECTED DISC 000010 B * * C: DISKETTE CHANGE 000004 B * * DD: DRIVE NUMBER 3,2,1,0 B * HED OPDSN UTILITY COMMANDS - IMMEDIATE EXECUTION ONLY * STTBP EQU * * ASC 2,LP LIST PROGRAM ASC 1, LP.P DEF LP * ASC 2,LPP LIST PROGRAM ON LINE PRINTER ASC 1, LPP.P DEF LPP * ASC 2,EP ERASE OPDSN PROGRAM ASC 1, EPP DEF EP * ASC 2,GO EXECUTE OPDSN PROGRAM ASC 1, GOP DEF GO * ASC 2,DBRK REPLACE OCTAL WORDS ASC 1,II FIRST & LAST WORDS DBRKP DEF DBRK * HED OPDSN PROGRAM STATEMENTS - MAY BE EXECUTED IMMEDIATELY * XLIMP EQU * * ASC 2,CB COMPARE INPUT AND OUTPUT BUFFERS ASC 1,II  NO. OF WORDS, NO. OF ERRORS CB.P DEF CB * ASC 2,CBP COMPARE BUFFERS - ERRORS ON PRINTER ASC 1,II NO. OF WORDS, NO. OF ERRORS CBP.P DEF CBP * ASC 2,LO LIST OUTPUT BUFFER ASC 1,II FIRST & LAST WORDS LO.P DEF LO * ASC 2,LOP LIST OUTPUT BUFFER ON PRINTER ASC 1,II FIRST & LAST WORDS LOP.P DEF LOP * ASC 2,LI LIST INPUT BUFFER ASC 1,II FIRST & LAST WORDS LI.P DEF LI * ASC 2,LIP LIST INPUT BUFFER ON PRINTER ASC 1,II FIRST & LAST WORDS LIP.P DEF LIP * ASC 2,EX EXIT OPDSN - RETURN TO STANDARD TESTS ASC 1, EXP DEF EX * ASC 2,TEST EXECUTE TEST ASC 1,I TEST NUMBER(0-15) TESTP DEF TEST * ASC 2,DBFK FILL BUFFER WITH ALTERNATING PATTERN ASC 1,KK OCTAL PATTERN DBFKP DEF DBFK * SPSP EQU *+1 ASC 2,DB FILL BUFFER WITH RANDOM DATA ASC 1, DBP DEF DB * ASC 2,DBSZ PRINT OUTPUT BUFFER SIZE ASC 1, DBSZP DEF DBSZ * ASC 2,MSG OUTPUT 4-CHAR MESSAGE ASC 1,AA MSGP DEF MSG * ASC 2,DLY DELAY ASC 1,I I: MILLISECONDS DLYP DEF TMRR,I HED OPDSN PROGRAM STATEMENTS - DISKETTE CONTROL * ASC 2,FALL FORMAT DISK ASC 1,II NO. OF PATTERNS, OFFSET FALLP DEF FALL (S-REG BITS 1,2,4, & 5 MUST BE SET) * ASC 2,WD WRITE ASC 1,I I: WORD COUNT (I<0: ALL OF DISC) WDP DEF WD (I=-1: SEQUENTIAL DATA - ALL OF DISC) * ASC 2,RD READ ASC 1,IA I: WORD COUNT (I<0: ALL OF DISC) * (I=-1: SEQUENTIAL DATA - ALL OF DISC) RDP DEF RD A:C=COMPARE BUFFERS * ASC 2,VRFY VERIFY (READ WITH CLOSE TOLERANCE) ASC 1,IA I: WORD COUNT (I<0: ALL OF DISC) * (I=-1: SEQUENTIAL DATA - ALL OF DISC) VRFYP DEF VRFY A:C=COMPARE BUFFERS * ASC 2,SK SE՗*($EK TRACK & SECTOR ASC 1,II TRACK,SECTOR SKP DEF SK * ASC 2,MOVE ADVANCE/BACKSPACE SECTORS ASC 1,I I: SECTOR COUNT MOVEP DEF MOVE I>0:ADVANCE I<0:BACKSPACE * I=0:POSITION TO LAST DATA TRANSFER * ASC 2,RAND RANDOM SEEK, READ, & WRITE ASC 1,IA I: ITERATION COUNT RANDP DEF RAND A:W=SEEK RANDOM SECTOR, THEN WRITE * RANDOM DATA, READ, & COMPARE BUFFERS * R=SEEK RANDOM SECTOR & READ SEQ. DATA * (MUST FOLLOW WRIT -1 COMMAND) * Z=SEEK RANDOM SECTOR & READ 0 SECTORS * (PHYSICALLY POSITIONS HEAD) * D=SEEK RANDOM SECTOR, THEN WRITE * RANDOM DATA, DUMP, & COMPARE BUFFERS * S=SEEK RANDOM SECTOR (NO HEAD MOVEMENT) * ASC 2,STAT PRINT LAST STATUS ASC 1, STATP DEF STAT * ASC 2,ST STATUS REQUEST COMMAND ASC 1,KK EXPECTED STATUS, MASK STP DEF ST PRINT IF MASKED STATUS NOT = EXPECTED * ASC 2,SD SET UP DRIVE XXXXXX ASC 1,I DRIVE NUMBER SDP DEF SD * o* SKP * ASC 2,MDIS MOUNT DISKETTE ASC 1,I I: NUMBER OF GOOD TRACKS MDISP DEF MDIS (I=0: READ FROM TRACK 0, SEC 0) * ASC 2,MODE MODE OF I/O CONTROL ASC 1,AK A:DI=DMA, INTP ON (K: DMA CHANNEL XXXXXX) MODEP DEF MODE D=DMA, INTP OFF (K: DMA CHANNEL XXXXXX) * NI=NON-DMA, INTP ON * N=NON-DMA, INTP OFF * ASC 2,RTRY SET UP RETRY COUNT ASC 1,I RTRYP DEF RTRY * ASC 2,DUMP DUMP ONE SECTOR ASC 1,A A:C=COMPARE BUFFERS DUMPP DEF DUMP * ASC 2,PRST PRESET DUMBO CONTROLLER & SEEK HOME ASC 1, PRSTP DEF PRST * ASC 2,STEP STEP TRACK ASC 1,KK EXPECTED STATUS, MASK STEPP DEF STEP * ASC 2,FTRK FORMAT SINGLE TRACK (NO TRACK TEST) ASC 1,II TRACK, OFFSET FTRKP DEF FTRK (S-REG BITS 1,2,4, & 5 MUST BE SET) * ASC 2,TRAK TEST TRACK WITH WORST CASE PATTERNS ASC 1,II TRACK, NO. OF PATTERNS TRAKP DEF TRAK * ASC 2,MARK MARK A TRACK BAD ASC 1,KK (S-REG BITS 1,2,4, & 5 MUST BE SET) MARKP DEF MARK EXPECTED STATUS, MASK * ASC 2,ERRR ERROR STATUS TEST ASC 1, (PARTLY INTERACTIVE) ERRRP DEF ERRR * ASC 2,CARD TEST INTERFACE CARDS & INTERRUPTS ASC 1, CARDP DEF CARD * SKP * ASC 2,WX LOW-LEVEL WRITE ASC 1,IK I: WORD COUNT (I<0: CTL0) WXP DEF WX K:EXPECTED STATUS * ASC 2,RX LOW-LEVEL READ ASC 1,IK SAME AS WX RXP DEF RX * ASC 2,VX LOW-LEVEL VERIFY ASC 1,IK SAME AS WX VXP DEF VX * ASC 2,SX LOW-LEVEL SEEK ASC 1,IK I: TRACK X 100 + SECTOR SXP DEF SX K: EXPECTED STATUS * ASC 2,DX LOW-LEVEL DUMP ASC 1,KK STATUS EXPECTED, MASK DXP DEF DX * ASC 2,FX LOW-LEVEL FORMAT ASC 1,IK I: TRACK KHS: STATUS EXPECTED FXP DEF FX (S-REG BITS 1,2,4, & 5 MUST BE SET) * ASC 2,UX UNDEFINED COMMAND ASC 1,IK I: "TRACK" UXP DEF UX K: STATUS EXPECTED * HED OPDSN PROGRAM STATEMENTS - NO IMMEDIATE EXECUTION * XLIMI EQU * * ASC 2,WAIT WAIT FOR OPERATOR ASC 1, (OPERATOR ENTERS 'ST' TO STOP WAITP DEF WAIT OR 'CO N' TO CONTINUE AT LINE N) * ASC 2,GOTO PROGRAM JUMP ASC 1,I I: LINE NUMBER GOTOP DEF GOTO * ASC 2,GOSB REPEAT SUBROUTINE ASC 1,II LINE XXXXXX, ITERATION CNT (DEFAULT=1) GOSBP DEF GOSB * AN. EQU *+1 ASC 2,RTN RETURN FROM SUBROUTINE ASC 1, RTNP DEF RTN * AST ASC 2,STOP STOP EXECUTION ASC 1, STOPP DEF STOP * DEC -1 * * HED OPERATOR MESSAGES * * MESSAGES PREFIXED BY E ARE ERROR MESSAGES * (SUPPRESSED BY SETTING S-REG BIT 11) * MESSAGES PREFIXED BY H ARE HEADINGS & NON-ERROR MESSAGES * (SUPPRESSED BY SETTING S-REG BIT 10) * * * INTERFACE CARD AND INTERRUPTS TEST MESSAGES * Z000E ASC 09,E000 CLF 0-SFC 0/ Z001E ASC 09,E001 CLF 0-SFS 0/ Z002E ASC 09,E002 STF 0-SFC 0/ Z003E ASC 09,E003 STF 0-SFS 0/ Z004E ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ Z005E ASC 10,E005 CLF CH-SFC CH/ Z006E ASC 10,E006 CLF CH-SFS CH/ Z007E ASC 10,E007 STF CH-SFC CH/ Z010E ASC 10,E010 STF CH-SFS CH/ Z011E ASC 14,E011 STF XX SET CARD FLAG// Z012E ASC 16,E012 INT DURING HOLD OFF INSTR/ Z013E ASC 08,E013 SECOND INT/ Z014E ASC 06,E014 NO INT/ Z015E ASC 09,E015 INT RTN ADDR/ Z016E ASC 06,E016 CLC CH/ Z017E ASC 06,E017 CLC 0/ Z020E ASC 15,E020 PRESET DID NOT SET FLAG/ Z021E ASC 17,E021 PRESET DID NOT DISABLE INTS/ Z022E ASC 17,E022 PRESET DID NOT CLEAR CONTROL/ Z023E ASC 18,E023 PRESET DID NOT CLEAR I-O LINES/ Z024H ASC 12,H024 PRESS PRESET, RUN/ Z025I ASC 09,I025 CARD (SC=00)/ * Z042I ASC 06,I042 FORMAT/ Z043H ASC 13,H043 GOOD TRACKS: XXXXXX/ Z044I EQU * Z044E ASC 08,E044 TR 0 SEC 0/ Z045H ASC 09,H045 END OF DISC/ Z046H ASC 17,H046 WORD NO. OUTPUT INPUT/ Z047E ASC 18,E047 XXXXXX XXXXXX XXXXXX/ Z050E ASC 15,E050 TLOG=000000 EXP=000000/ Z051E ASC 09,E051 *TO* DMA,CC/ Z052E ASC 15,E052 *TO* DC,CC-DMA LAST WORD/ Z053E ASC 07,E053 *TO* DC/ Z054E ASC 08,E054 *TO* DC,CC/ Z055E ASC 10,E055 *DC INTP--DMA*/ * SKP * * DISKETTE STATUS MESSAGES * Z100H EQU * Z100E EQU * Z200H EQU * Z200E EQU * Z300H EQU * Z300E EQU * STAT1 ASC 5,H100 STAT= STAT2 ASC 6,000000 EXP= STAT7 ASC 6,000000 OP= STAT3 ASC 6,000000 TR= STAT4 ASC 5,0000 SEC= STAT5 ASC 5,00 MODE= STAT6 ASC 3,DI 6/ * HED CONTROL LINKAGE AND DATA REFERENCES * * .1 OCT 1 .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .7 OCT 7 .10 OCT 10 .11 OCT 11 .12 OCT 12 .14 OCT 14 .15 OCT 15 .17 OCT 17 .20 OCT 20 .24 OCT 24 .37 OCT 37 .40 OCT 40 .54 OCT 54 .55 OCT 55 .60 OCT 60 .77 OCT 77 .100 OCT 100 .101 OCT 101 .104 OCT 104 .105 OCT 105 .110 OCT 110 .111 OCT 111 .113 OCT 113 .116 OCT 116 .140 OCT 140 .177 OCT 177 .200 OCT 200 .300 OCT 300 .377 OCT 377 .400 OCT 400 .1000 OCT 1000 .1777 OCT 1777 .2000 OCT 2000 .4000 OCT 4000 .7740 OCT 7740 .160K OCT 160000 * M1 DEC -1 M2 DEC -2 M4 DEC -4 M5 DEC -5 M9 DEC -9 M10 DEC -10 M15 DEC -15 M20 DEC -20 M24 DEC -24 M26 DEC -26 M64 DEC -64 M124 DEC -124 M128 DEC -128 M256 DEC -256 * .M60 OCT -60 .M101 OCT -101 * D10 EQU .12 D20 EQU .24 D72 EQU .110 D100 DEC 100 D128 EQU .200 D256 EQU .400 D2048 EQU .4000 * SW0 EQU .1 SW1 EQU .2 SW2 EQU .4 SW3 EQU .10 SW4 EQU .20 SW5 EQU .40 SW6 EQU .100 SW7 EQU .200 SW8 EQU .400 SW9 EQU .1000 SW10 EQU .2000 SW11 EQU .4000 SW12 OCT 10000 SW13 OCT 20000 SW14 EQU VRF SW15 EQU WRT * SW812 OCT 010400 y SWITCH 8 OR SWITCH 12 SW239 OCT 001014 SWITCH 2, 3, OR 9 SW3M9 OCT 176767 MASK OFF SW 3 AND SW 9 ENAB. OCT 177714 ALL BITS EXCEPT FORMAT ENABLE BITS SW2M EQU M5 MASK OFF SWITCH 2 * * AA EQU .101 AD EQU .104 AE EQU .105 AI EQU .111 AK EQU .113 AN EQU .116 * * ACO ASC 1,CO ADI ASC 1,DI DMA WITH INTERRUPTS ANI ASC 1,NI NON-DMA WITH INTERRUPTS AC. ASC 1,C AD. ASC 1,D AR. ASC 1,R AS. ASC 1,S AW. ASC 1,W AZ. ASC 1,Z AH1 ASC 1,H1 AE1 ASC 1,E1 AE3 ASC 1,E3 AE0 EQU Z000E AI0 EQU Z025I A.0 EQU Z000E+4 MINUS EQU .55 SPC EQU .40 COMMA EQU .54 * SKP * IOCCP DEF IOCC COMMAND CHANNEL INSTRUCTIONS IODCP DEF IODC DATA CHANNEL INSTRUCTIONS IODHP DEF IODMH DMA HIGH CHANNEL INSTRUCTIONS IODLP DEF IODML DMA LOW CHANNEL INSTRUCTIONS TSTP DEF TESTD POINTER TO TESTS STDA OCT 007767 STANDARD TESTS (3 & 12-15 NOT EXECUTED) STDB EQU READ STANDARD TESTS: 16-31 NOT EXECUTED SCTRS DEC 30 NO. OF SECTORS PER TRACK SM1 DEC 29 NO. OF SECTORS PER TRACK - 1 MSEC DEC -30 NEG. NO. OF SECTORS PER TRACK TRKS DEC 67 MTRKS DEC -67 MLSTR DEC -66 MINUS LAST TRACK MTRP1 DEC -68 * ZSAVA NOP ZSAVB NOP LSTST DEC -1 LAST TEST NO. PRINTED SCFLG NOP LAST SELECT CODE PRINTED ZTSTA NOP ZMSGD NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP ZIOM EQU M64 * ZTSH OCT 106077 TRAP CELL HALT * ZH2 OCT 102000 HALT CODE ZH6 OCT 106000 " " ZH3 OCT 103000 " " ZH7 OCT 107000 " " * MXNM DEC -10000 * * SVA NOP SVB NOP PRPTR NOP PRPLA NOP LDBD NOP STTBD DEF STTBP * CULN NOP * TMP NOP LINE NUMBER NOP POINTER TO STATEMENT TABLE NOP PRAM A NOP PRAM B * * TEMPA NOP TEMPB NOP TEMPC NOP TEMPD NOP * * * IBUFP NOP IBUFD DEF IBUF BFPTR NOP IOCNT iNOP BFSIZ NOP NUMBER OF SECTORS PER I/O BUFFER CNT2 NOP TIME OUT COUNTER SUPA DEF PROG START OF USER PROGRAM AREA EUPA DEF PGEND END OF USER PROGRAM AREA * PRSET EQU .1 PRESET DUMBO CONTROLLER & SEEK HOME CTL0 NOP TERMINATE PARTIAL SECTOR IF = 2 RCNT NOP RANDOM TEST REPEAT COUNT SRW NOP SEEK/READ/WRITE FLAG VC NOP VERIFY/COMPARE FLAG VFY NOP SET TO 40000 TO CHANGE READ TO VERIFY PHYST DEC -1 PHYSICAL TRACK XXXXXX OFSET DEC 5 SECTOR OFFSET PER TRACK STSEC NOP STARTING SECTOR FOR TRAK TEST TRCK NOP TRACK FOR TRAK TEST ALCNT NOP WORD CNT: WRIT -N, READ -N, VRFY -N COUNT NOP WORD COUNT SECS NOP FULL SECTORS * NOSEC NOP XXXXXX OF GOOD SECTORS LSEC NOP SAVED SECTOR XXXXXX SEC NOP B2114 NOP 160000 B IF CPU IS 2114B REVS NOP NUMBER OF REVOLUTIONS (MIN) TO READ TRACK INC NOP DISTANCE BETWEEN SECTORS * SKP SKSTS EQU .40 SEEK STATUS STSTS EQU SKSTS STEP STATUS MSTS EQU READ MARK STATUS WSTS EQU .140 WRITE STATUS FSTS EQU .100 FORMAT STATUS RSTS EQU WSTS READ STATUS DSTS EQU FSTS DUMP STATUS ILSTS OCT 102000 ILLEGAL COMMAND STATUS OVSTS OCT 4040 DATA OVERRUN STATUS TRSTS OCT 103000 TRACK NOT FOUND STATUS PWSTS OCT 100420 NO DRIVE POWER STATUS DRSTS OCT 1024 DRIVE DOOR OPEN STATUS NDSTS OCT 1424 NO DISC IN DRIVE STATUS PRSTS EQU .14 PROTECTED DISKETTE STATUS CHSTS EQU .4 DISKETTE CHANGE STATUS SCSTS OCT 102400 SECTOR NOT FOUND STATUS * * * SKMSK OCT 177763 SEEK MASK PMASK EQU SKMSK PRESET MASK STMSK EQU SKMSK STEP MASK MMASK EQU M5 MARK MASK WMASK EQU M5 WRITE MASK FMASK EQU M5 FORMAT MASK RMASK EQU SKMSK READ MASK DMASK EQU SKMSK DUMP MASK ILMSK EQU SKMSK ILLEGAL COMMAND MASK OVMSK EQU SKMSK DATA OVERRUN MASK TRMSK EQU SKMSK TRACK NOT FOUND MASK PWMSK EQU SKMSK NO DRIVE POWER MASK DRMSK EQU M1 DRIVE DOOR OPEN MASK NDMSK EQU M1 NO DISC IN DRIVE MASK PRMSK EQU M1 PROTECTED DISKETTE MASK CHMSK EQU M1 DISKETTE CHANGE MASK SCMSK EQU SKMSK SECTOR NOT FOUND MASK XMSK EQU M1 LOW-LEVEL MASK * SKP * PASS NOP RETRY COUNT SAVEA NOP SAVEB NOP AIN NOP BIN NOP HLTN NOP DMCNT NOP ECNT NOP CHAR COUNT FOR ECHO ON LP EADDR NOP ADDRESS FOR ECHO ON LP * PHYS NOP ERCNT NOP ERRORS COUNT - FORMAT TEST ERLM NOP NUMBER OF COMPARE ERRORS SCCNT NOP PATND DEF PATRN PATNF NOP PATNP NOP DRIVE NOP DRIVE NO. (SHIFTED LEFT 12 BITS) CMOD NOP CURRENT IO MODE INTSP NOP POINTER TO INTERRUPT STATUS STACK INTSD DEF INTPS INTPS NOP NOP NOP NOP INEND DEF * * STC EQU SW15 IN EQU SW15 DMA INPUT BIT * ILGLP NOP ILGLD DEF ILGLL LIST OF ILLEGAL COMMANDS ILGLE DEF ILGLL+8 ILGFD DEF ILGLE+6 * W1 OCT 100001 WRITE ONE SECTOR SKP * DVLNK NOP SLOP OR FAOP * FAIN DEF FAINP SLOP DEF SLOPP FAOP DEF FAOPP SLIN DEF SLINP FMTR DEF FMTRP * ZISCP DEF ZISC OPNO DEF OPDSN .FMTP DEF .FMT COMND DEF CMND INDCP DEF INDC OTDCP DEF OTDC STTNP DEF STATN STTPP DEF STATU SKSP DEF SKS SYNTP DEF SYNTX PARM DEF PARAM TRAP DEF ZITCH STT7 DEF STAT7 COMPP DEF COMP DFLT DEF DEFLT RANN DEF RANDN ALTER DEF ALTR SSUBP DEF SSUB DSUBP DEF DSUB FSUBP DEF FSUB ENABP DEF ENABL WOKP DEF WOK .MPY DEF MPY .DIV DEF DIV S3LNK NOP S3OPI DEF H030 SW3.9 DEF S3.9 SWDB DEF ZSWDB INITC NOP SKP * JMP.I JMP DMAIL,I DMAIL DEF ZTSH JMPCI JMP CCIL,I CCIL DEF ZTSH JMPDI JMP DCIL,I DCIL DEF ZTSH JCTLO JMP CTLPO,I CTLPO DEF CTLZO JDC18 JMP DC18 JDC60 JMP DC60P,I DC60P DEF DC60 JDC72 JMP DC72 * * *($*********NON-DMA PROCESSOR (INTERRUPTS ON)*********** * DC18 STC DC,C DC16 OTA DC ISZ IOCNT JMP *+3 LDB JCTLO DC62 STB DC ISZ BFPTR LDA BFPTR,I TO3 LDB SW12 TIME OUT COUNT = 4 SEC JSB TIMR3 JMP E054P,I E054P DEF E054 * * DC72 STC DC,C DC34 LIA DC ISZ IOCNT JMP *+3 LDB JDC60 DC64 STB DC STA BFPTR,I ISZ BFPTR JMP TO3 * * TIMR3 NOP ONE MILLISECOND TIMER CMB,INB STB TEMPD LP03 LDB OTMC MILLISECOND CONSTANT INB,SZB JMP *-1 ISZ TEMPD JMP LP03 JMP TIMR3,I * *************************************************** * NXTD EQU * "* HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF LDA INTSD CLEAR INTERRUPT STATE STACK STA INTSP H205A JSB MSGC,I BELL-CR-LF DEF Z205H H204 JSB MSGC,I PRINT INTRODUCTORY MESSAGE DEF Z204H LDA CPTO GET COMPUTER TYPE & OPTIONS AND .4 SZA DMA AVAILABLE? JMP *+4 YES H101 JSB MSGC,I DEF Z101H 'NO DMA' JMP NOD LDA DATCH DATA CHANNEL NO. IOR STC PREPARE TO SET CONTROL AFTER EACH DMA CYCLE OTA DMA6 OTA DMA7 SET UP BOTH DMA CHANNELS TO MONITOR DATA CHANNEL LDA CPTO AND SW7 SZA LDA .160K SINGLE CHANNEL DMA STA B2114 NOD CLA STA SUPA,I CLEAR OPDSN PROGRAM STA ZEOLC CLEAR PASS COUNT CCA STA LSTST SET TO PRINT TEST NO. WITH ERROR LDA OFSET STA REVS MIN. NO. OF REVS TO READ A TRACK LDA TRKS ASSUME ALL TRACKS GOOD JSB MDISP,I LDA SUPA SET OPDSN LAST STATEMENT ADDRESS STA PRPLA LDA SLOP STA DVLNK SLOW OUTPUT ON 'COMPARE' LDA .10 STA ERLIM SET PRINT LIMIT FOR 'COMPARE' LDA FWAM *COMPUTE CMA,INA * ADA LWAM * AVAILABLE INA * CLB * BUFFER JSB .DIV,I * SIZE DEF SW8 STA BFSIZ *SAVE NO. OF SECTORS JSB .MPY,I * DEF SW7 * STA DBCO *SAVE WORD COUNT STA COUNT INITIALLY, COMPARE ALL OF BUFFER ADA FWAM * STA DBDI *INPUT BUFFER START ADDRESS JSB DEFLT SET UP DEFAULT PARAMETERS JSB PRSTP,I PRESET CONTROLLER & SEEK HOME SWTST LDB SW2 JSB SWRT,I JSB ALTER,I ALTER PATTERNS IN 'TRAK' LDB SW3 JSB SWRT,I ENTER OPDSN? JSB OPNO,I YES LDB SW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMsP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED LIA SW INPUT S-REGISTER AND SW3M9 MASK OFF SW3 AND SW9 OTA SW OUTPUT IT LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB SW239 JSB SWRT,I TEST SELECTION REQUESTED? JMP SWTST YES CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP LDA EXRT STA S3LNK JUMP TO ZEXRT IF SW3 SETS ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS H205B JSB MSGC,I DEF Z205H BELL-CR-LF LDB SW10 JSB TSTNO OUTPUT TEST NUMBER JSB DFLT,I SET UP DEFAULT TEST PARAMETERS JSB ZTSTA,I *** GO DO TEST *** ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB SW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I RSS JMP *+3 JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED HLT 76B YES WAIT FOR OPERATOR LDB SW3 JSB SWRT,I ENTER OPDSN? JSB OPNO,I YES LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB SW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CLE LDB ZPSCA GET PASS COUNT JSB O2AS,I CONVERT IT I203 JSB .FMTP,I CALL PRINT ROUTINE DEF Z203I 'PASS 000000' H205C JSB MSGC,I DEF Z205H BELL-CR-LF H205D JSB MSGC,I DEF Z205H BELL-CR-LF LDB SW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+4 YES LDA ZEOLC JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * ZPSCA DEF Z203I+3 ZTSTN DEF Z202H+3 SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY STA ZSAVA STB ZSAVB LDB ZMSGC,I GET ADDRESS OF MESSAGE ISZ ZMSGC BUMP RETURN LIA SW AND SW10 CLE,SZA,RSS SUPPRESS MESSAGE? JSB FMTR,I NO LDA ZSAVA LDB ZSAVB JMP ZMSGC,I YES * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY STB ZSAVB SAVE B LDB ZMSGH,I ISZ ZMSGH BUMP RETURN JSB HLT. SET UP HALT LDB SW10 JSB SWRT,I SUPPRESS MESSAGE? JMP ZHLT1-2 LDB ZMSGD CLA,CLE JSB FMTR,I LDB RUNP CLA,CLE JSB FMTR,I 'PRESS RUN' JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED LDA ZSAVA LDB ZSAVB ZHLT1 NOP (FILLED WITH HALT BY HLT.) JMP ZMSGH,I * RUNP DEF Z211H * * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY STB ZSAVB LDB ZERMS,I ADDRESS OF MESSAGE ISZ ZERMS BUMP RETURN JSB HLT. SET UP HALT LDB SW11 JSB SWRT,I SUPPRESS MESSAGE?  JMP ZHLT. YES LDB SW11 JSB TSTNO OUTPUT TEST NUMBER LDA HLTN ADA M24 MESSAGE NO. LESS THAN 24? SSA,RSS JMP SCP NO LDA SCFLG YES, INTERFACE CARD TEST SZA,RSS JMP SCP SELECT CODE ALREADY PRINTED CLA STA SCFLG I025 JSB .FMTP,I DEF Z025I 'CARD (SC=XX)' SCP LDB ZMSGD CLA,CLE JSB FMTR,I OUTPUT ERROR MESSAGE ZHLT. LDB SW14 JSB SWRT,I HALT? JMP ZERMS,I NO JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED LDA ZSAVA RESTORE A LDB ZSAVB ZHLT2 NOP (FILLED WITH HALT BY HLT.) JMP ZERMS,I RETURN TO CALLER * SKP HLT. NOP SET UP HALT FROM MESSAGE NUMBER STB ZMSGD SAVE ADDRESS OF MESSAGE STA ZSAVA SAVE A CCA,CCE JSB AS2N,I STA HLTN SAVE RESULT AND .300 DECODE LDB ZH2 HALT CODE CPA .100 LDB ZH6 CPA .200 LDB ZH3 CPA .300 LDB ZH7 LDA HLTN GET HALT NUMBER AND .77 IOR B STA ZHLT1 SAVE IT STA ZHLT2 JMP HLT.,I * * * TSTNO NOP OUTPUT TEST NUMBER JSB SWRT,I SUPPRESS MESSAGE? JMP TSTNO,I YES LDA TSTN CPA LSTST SAME AS LAST TIME? JMP TSTNO,I YES STA LSTST NO, SAVE TEST NO. CLE LDB ZTSTN JSB I2AS,I CONVERT TO ASCII H202 JSB .FMTP,I DEF Z202H 'TEST XXXXX' JMP TSTNO,I * * SKP * ISOFF NOP TURN OFF INTERRUPTS & SAVE PREVIOUS STATE STB IRSTR LDB INTSP CPB INEND STACK OVERFLOW? HLT 67B YES CLB SFC INTP CCB STB INTSP,I SAVE INTERRUPT STATE ISZ INTSP CLF INTP TURN OFF INTERRUPTS LDB IRSTR RESTORE B JMP ISOFF,I * * IRSTR NOP RESTORE STATUS OF INTERRUPTS  STA ISOFF LDA INTSP CPA INTSD STACK UNDERFLOW? HLT 57B YES ADA M1 STA INTSP LDA A,I GET PREVIOUS STATUS FLAG SZA TURN BACK ON? STF INTP YES LDA ISOFF JMP IRSTR,I * * SKP * FAINP NOP TURN OFF INTERRUPTS & DO FAST OUTPUT JSB ISOFF TURN OFF INTS JSB FAINL,I FAST INPUT JSB IRSTR RESTORE INTS JMP FAINP,I * * SLOPP NOP DO SLOW OUTPUT & RESTORE INTERRUPTS JSB ISOFF TURN OFF INTS STA ECNT STB EADDR JSB SLOPL,I OUTPUT TO CONSOLE LDB SW7 JSB SWRT,I ECHO ON LINE PRINTER? RSS JMP *+4 NO LDA ECNT LDB EADDR JSB FAOPL,I ECHO JSB IRSTR RESTORE INTS JMP SLOPP,I * * FAOPP NOP DO FAST OUTPUT & RESTORE INTERRUPTS JSB ISOFF TURN OFF INTS JSB FAOPL,I FAST OUTPUT JSB IRSTR RESTORE INTS JMP FAOPP,I * * SLINP NOP DO SLOW INPUT & RESTORE INTERRUPTS JSB ISOFF TURN OFF INTS JSB SLINL,I SLOW INPUT JSB IRSTR RESTORE INTS JMP SLINP,I * * FMTRP NOP DO FORMATTED OUTPUT & RESTORE INTERRUPTS JSB ISOFF TURN OFF INTS STB EADDR CLA,SEZ CONSOLE OR PRINTER? JMP *+6 PRINTER JSB FMTRL,I OUTPUT TO CONSOLE LDB SW7 JSB SWRT,I ECHO? CLA,CCE,RSS YES JMP *+3 NO LDB EADDR JSB FMTRL,I FORMATTED OUTPUT JSB IRSTR RESTORE INTS JMP FMTRP,I HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND .7 CONVERT FIRST IOR .60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND .7 CONVERT IOR .60 IT ALF,ALF MOVE TO UPPER HA2LF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * ZSWDB NOP WAIT UNTIL ALL SWITCHES ARE RELEASED STA ZSDBA STB ZSDBB ZSWDL LDA M128 STA ZLOCT SET UP LOOP COUNTER LIB SW SAVE ORIGINAL S-REGISTER LDA B CMA OTA SW INVERT ALL BITS LIA SW READ S-REG AGAIN OTB SW RESTORE ORIGINAL S-REG CMA CPA B MAKE SURE THAT S-REG IS NOT CHANGED RSS JMP ZSWDL NOT EQUAL - REINITIALIZE COUNTER ISZ ZLOCT MUST NOT CHANGE FOR 128 PASSES JMP ZSWDL+2 LDA ZSDBA RESTORE A & B LDB ZSDBB JMP ZSWDB,I * ZSDBA NOP ZSDBB NOP ZLOCT NOP * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB .2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB .77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA DCIL SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB DCIL,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB M1 IS IT THE TERMINATOR JMP ZISC,I @ YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND .77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB .7 SSB ? JMP *+4 OK GO ON JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED HLT 73B NO JMP ZCONF TRY AGAIN STA COMCH COMMAND CHANNEL STA DATCH ISZ DATCH DATA CHANNEL ONE HIGHER LDB IOCCP INITIALIZE COMMAND CHANNEL INSTR. JSB ZISC LDA DATCH LDB IODCP JSB ZISC INITIALIZE DATA CHANNEL INSTR. JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED CLA OTA SW CLEAR S-REGISTER HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * SKP * ********SET UP DEFAULT TEST PARAMETERS * DEFLT NOP CCA STA PHYST CLEAR FORMAT FLAG CLA JSB SDP,I DRIVE 0 STA CSEC STA SEC STA LSEC STA VFY STA COP STA STATW STA STEXP STA CTL0 CLA,INA JSB RTRYP,I RETRY COUNT = 1 JSB TRAP,I INITIALIZE TRAP CELLS LDA DBCO CMA,INA STA TEMPC LDB DBDI CLA CLEAR STA B,I INPUT INB BUFFER ISZ TEMPC JMP *-3 LDB .6 JSB MODEP,I DMA CHAN 6, INTP OFF JMP DEFLT,I * * ALTR NOP ALTER PATTERNS IN 'TRAK' TEST JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED LIA SW AND SW2M MASK OFF BIT 2 OTA SW Ȧ0.*LDB PATND STB DEFLT LP26 LDB DEFLT CPB PATNE DONE? JMP ALTR,I LDA B,I FIRST HALF IN A INB LDB B,I SECOND HALF IN B OCT 106002 LET OPERATOR CHANGE VALUES STA DEFLT,I SAVE A ISZ DEFLT STB DEFLT,I SAVE B ISZ DEFLT MOVE TO NEXT PAIR JMP LP26 * * bV0 HED I/O INSTRUCTION POINTERS ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * SKP IOCC EQU * COMMAND CHANNEL DEF CC02 DEF CC04 DEF CC06 DEF CC08 DEF CC10 DEF CC14 DEF CC16 DEF CC18 DEF CC20 DEF CC22 DEF CC24 DEF CC26 DEF CC28 DEF CC30 DEF CC32 DEF CC34 DEF CC36 DEF CC38 DEF CC46 DEC -1 * * IODC EQU * DATA CHANNEL DEF DC02 DEF DC04 DEF DC06 DEF DC08 DEF DC10 DEF DC12 DEF DC14 DEF DC16 DEF DC18 DEF DC20 DEF DC22 DEF DC24 DEF DC26 DEF DC28 DEF DC30 DEF DC32 DEF DC34 DEF DC36 DEF DC38 DEF DC40 DEF DC42 DEF DC44 DEF DC46 DEF DC48 DEF DC50 DEF DC52 DEF DC54 DEF DC56 DEF DC58 DEF DC60 DEF DC62 DEF DC64 DEF DC68 DEF DC70 DEF DC72 DEF DC76 DEF DC78 DEF DC80 DEC -1 * SKP IODMH EQU * DMA HIGH CHANNEL DEF DH02 DEF DH04 DEF DH06 DEF DH08 DEF DH12 DEF DH14 DEF DH16 DEF DH18 DEC -1 * IODML EQU * DMA LOW CHANNEL DEF DL02 DEF DL04 DEF DL06 DEF DL08 DEF DL10 DEF DL12 DEF DL14 DEF DL16 DEF DL18 DEF DL20 DEF DL22 DEF DL24 DEF DL26 DEF DL28 DEF DL46 DEF DL48 DEC -1 * * HED DIAGNOSTICS - ENTRY POINTS * * TESTD EQU * LIST OF TEST ENTRY POINTS DEF TST00 BASIC I/O TESTS DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST08 DEF TST09 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEF TST14 DEF TST15 DEC -1 * * HED STANDARD DIAGNOSTICS - TEST 0 (CARD) * TST00 EQU * CARD NOP INTERFACE CARD & INTERRUPT TEST JSB ISOFF SAVE STATUS OF INTP & TURN OFF INTP LDA COMCH COMMAND CHANNEL JSB ZBIO DO BASIC I/O LDA DATCH DATA CHANNEL JSB ZBIO DO BASIC I/O JSB IRSTR RESTORE STATUS OF INTP JMP CARD,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O STA SCFLG JSB ZN2AO CONVERT TO OCTAL STA Z025I+7 LDA ZIOAD GET CHANNEL NO. LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF Z000E SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF Z001E STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF Z002E SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF Z003E JMP ZBIO2 * * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF Z005E ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF Z006E ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SF_C CH ERROR DEF Z007E ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF Z010E JMP ZBIO3 SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 CLF 0 DID NOT INHIBIT INT DEF Z004E * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB .10 START WITH LOWEST ADDRESS ZB40 LDA ZIOSC GET SELECT CODE CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB .77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA Z011E+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF Z011E * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 I  * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF Z014E JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA .2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF Z026E ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF Z012E LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF Z015E JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF Z013E * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SY^STEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF Z016E JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF Z017E JMP ZBIO7 * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB SW812 CHECK TO SUPPRESS JSB SWRT,I ? JMP ZBIO,I RETURN TO CALLER H024 JSB MSGC,I TELL OPERATOR DEF Z024H 'PRESS PRESET' * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF Z022E RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF Z023E RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF Z020E RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF Z021E JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * * HED STANDARD DISKETTE DIAGNOSTICS * * TST01 NOP FALL LDA .5 JSB RTRYP,I 10 RTRY 5 LDA .3 CLB JSB FALLP,I 20 FALL 3 JMP TST01,I 30 RTN * * TST02 NOP READ-ONLY TEST LDA .3 JSB RTRYP,I 10 RTRY 3 LDA DBCO 20 RD -MAX CMA,INA CLB JSB RDP,I JMP TST02,I 30 RTN * * TST03 NOP VERIFY TEST LDA .4 JSB RTRYP,I 10 RTRY 4 LDA DBCO CMA,INA CLB JSB VRFYP,I 20 VRFY -MAX JMP TST03,I 30 RTN * * TST04 NOP ERRR JSB ERRRP,I JMP TST04,I RTN * * TST05 NOP WORST-CASE PATTERN TEST CLA LDB .3 JSB TRAKP,I 10 TRAK 0 3 LDA TRACK ARS LDB .3 JSB TRAKP,I 20 TRAK 38 3 CCA ADA TRACK LDB .3 JSB TRAKP,I 30 TRAK 76 3 JMP TST05,I * TST06 NOP RAND Z LDA D256 LDB AZ. JSB RANDP,I 10 RAND 256 Z JMP TST06,I 20 RTN * * TST07 NOP RANDOM WRITE LDA D256 LDB AW. JSB RANDP,I 10 RAND 256 W JMP TST07,I 20 RTN * * TST08 NOP SEEK TEST CCA JSB WDP,I 10 WD -1 CCA LDB AC. JSB VRFYP,I 20 VRFY -1 C LDA D256 LDB AR. JSB RANDP,I 30 RAND 256 R JMP TST08,I 40 RTN * * TST09 NOP STEP/MARK DEFECTIVE JSB PRSTP,I 10 PRST CLB JSB MARKP,I 20 MARK LDA MLSTR 30 GOSB 50 76 STA TST00 40 GOTO 80 CLA CLB JSB STEPP,I 50 STEP CLA CLB JSB MARKP,I 60 MARK ISZ TST00 JMP *-7 70 RTN JSB PRSTP,I 80 PRST LDA .3 CLB JSB FALLP,I 90 FALL 3 JMP TST09,I 100 RTN * * TST10 NOP DUMP TEST CLA JSB MDnHISP,I 10 MDIS LDA D256 LDB AD. JSB RANDP,I 20 RAND 256 D JMP TST10,I 30 RTN * * TST11 NOP DMA MODES TEST LDA AD. LDB .6 JSB MODEP,I 10 MODE D 6 LDA D20 LDB AW. JSB RANDP,I 20 RAND 20 W LDA AD. LDB .7 JSB MODEP,I 30 MODE D 7 LDA D20 LDB AW. JSB RANDP,I 40 RAND 20 W LDA ADI LDB .6 JSB MODEP,I 50 MODE DI 6 LDA D20 LDB AW. JSB RANDP,I 60 RAND 20 W LDA ADI LDB .7 JSB MODEP,I 70 MODE DI 7 LDA D20 LDB AW. JSB RANDP,I 80 RAND 20 W JMP TST11,I * * TST12 NOP NON-DMA MODES TEST LDA AN. JSB MODEP,I 10 MODE N LDA D20 LDB AW. JSB RANDP,I 20 RAND 20 W LDA ANI JSB MODEP,I 30 MODE NI LDA D20 LDB AW. JSB RANDP,I 40 RAND 20 W JMP TST12,I * * TST13 NOP JMP TST13,I * * TST14 NOP JMP TST14,I * * TST15 NOP JMP TST15,I * * SKP * NOP IBUF BSS 37 TTY BUFFER DIRC EQU * FMGR DIRECTORY DATA OCT 143117 1 OCT 051115 2 OCT 040524 3 DEC 32760 4 DEC 0 5 OCT 000002 6 DEC 60 7 DTRK DEC 66 8 (LAST TRACK) DEC -1 9 DEC 0 10 DEC 0 11 DEC 0 12 DEC 0 13 DEC 0 14 DEC 0 15 DEC 0 16 OCT 043114 17 OCT 047520 18 OCT 046113 19 DEC 1 20 DEC 0 21 DEC 0 22 DEC 2 23 DEC 0 24 DEC -32767 25 * * غ0.**0 HED OPERATOR DESIGN SECTION * OPERATOR DESIGN SECTION * OPDSN NOP LDA SCSO CHECK FOR CONSOLE DEVICE SZA,RSS JMP OPDSN,I NO SO DONT DO OPDSN LDA TSTN STA LSTST DO NOT PRINT TEST NO. ON ERROR H030 JSB MSGC,I TELL OP HE'S IN OPDSN DEF Z030H 'OPDSN' JSB SWDB,I WAIT FOR SWITCH TO BE RELEASED LIA SW GET SWITCH REGISTER AND SW3M9 MASK OFF SW 3 AND SW 9 OTA SW REPLACE SWITCH REGISTER * IRQ LDA S3OPI STA S3LNK JUMP TO H030 IF SW3 SETS JSB GIFO GET INPUT FROM OPERATOR DEF Z201I (PROMPT= @) JSB GETC INPUT A CHARACTER JMP INER EMPTY BUFFER - REPORT ERROR JMP *-2 SPACE - TRY AGAIN JMP INER COMMA - ERROR JMP INER MINUS - ERROR JMP GTIN DIGIT - GET LINE NUMBER LDB IBUFP LETTER ADB M1 STB IBUFP RESTORE BUFFER POINTER CLA STA TMP SET FOR IMMEDIATE EXECUTION JMP IM EXECUTE IMMEDIATELY * GTIN LDB IBUFP RESET BUFFER POINTER ADB M1 STB IBUFP JSB GTDEC GET DECIMAL LINE NUMBER NOP SZA,RSS IF IT'S A ZERO JMP INER THEN IT'S AN ERROR STA TMP SAVE LINE NO. ADA MXNM CHECK FOR MAX NUMBER SSA,RSS IF OVER 9999 JMP INER THEN ERROR IM JSB GTASC GET STATEMENT TYPE CPA SPSP JMP DLL DELETE LINE SKP * FIND STATEMENT * STA SVA SAVE TYPE STB SVB "" LDB STTBD STATEMENT TABLE DEF FNDSL LDA B,I CPA M1 IS IT THE TERMINATOR JMP INER YES - NOT FOUND CPA SVA IS IT THIS CHARACTER JMP *+3 YES ADB .4 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT INB MOVE TO SECOND CHARACTERS LDA B,I CPA SVB DO THESE COMPARE (E JMP *+3 YES ADB .3 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT INB LDA B,I RETRIEVE PARAMETER TYPES INB STA SVB STB TMP+1 ALF,ALF INPRN AND .177 CPA AA IS IT ASCII? JMP TAA YES CPA AI IS IT INTEGER? JMP TAI YES JSB GTOCT ASSUME OCTAL NOP JMP INPRC * TAA JSB GTASC GET NEXT BLOCK CPA SPSP CLA JMP INPRC * TAI JSB GTDEC GET NEXT BLOCK NOP INPRC LDB SVB SZB,RSS FIRST PARAMETER? JMP INPR2 NO STA TMP+2 LDA SVB GET TYPE CLB STB SVB JMP INPRN INPR2 STA TMP+3 SAVE SECOND PARAMETER SKP * PUT STATEMENT IN QUE * JSB SYNTP,I CHECK FOR VALID PARAMETERS JMP INER PARAMETER ERROR LDA TMP SZA,RSS JMP EXEC EXECUTE IMMEDIATELY JSB FNDLN FIND LINE NUMBER JMP INSTR NOT FOUND ISZ PRPTR FOUND IT LDA TMP+1 JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+2 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+3 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT JMP IRQ ASK FOR MORE * INSTR LDA PRPLA CHECK ADA .5 TO CMA,INA SEE IF ADA EUPA QUEUE FULL SSA,RSS ? JMP .STR NO - OK STORE IT I033A JSB .FMT YES TELL OPERATOR DEF Z033I 'FULL' JMP IRQ * .STR LDA TMP MOVE LINE NUMBER LDB PRPTR,I INTO PLACE STA PRPTR,I SZA,RSS IF NUMBER=0 THEN JMP SVLA SAVE LAST ADDRESS STB TMP ELSE ISZ PRPTR MOVE BLOCK LDA TMP+1 IN LDB PRPTR,I TO END STA PRPTR,I OF STB TMP+1 PROGRAM ISZ }PRPTR LDA TMP+2 LDB PRPTR,I STA PRPTR,I STB TMP+2 ISZ PRPTR LDA TMP+3 LDB PRPTR,I STA PRPTR,I STB TMP+3 ISZ PRPTR JMP .STR * EXEC STA VFY SET FOR NORMAL READ CCA STA PHYST CLEAR FORMAT FLAG LDA TMP+1 LDA A,I STA TMP+1 LDA TMP+2 GET FIRST PARAMETER LDB TMP+3 GET SECOND PARAMETER JSB TMP+1,I ***EXECUTE SUBROUTINE*** JMP IRQ FETCH NEXT COMMAND SKP * DELETE A LINE * DLL JSB FNDLN FIND IT JMP IRQ NOT FOUND ADB .4 PDLL LDA M4 SET COUNT FOR COMPARE STA TMP PDLL0 LDA B,I MOVE NEXT LINE UP STA PRPTR,I ISZ PRPTR INB ISZ TMP TIME FOR A COMPARE JMP PDLL0 NO LDA PRPTR,I YES CHECK FOR END OF LIST SZA ? JMP PDLL NO SVLA LDA PRPTR SAVE LAST STATEMENT ADDRESS STA PRPLA JMP IRQ * * * * FIND LINE NUMBER IN QUE =TMP * FNDLN NOP LDB SUPA START AT FIRST STATEMENT STB PRPTR LDA B,I SZA,RSS IF ZERO JMP FNDLN,I THEN NOT FOUND CMA,INA ADD THE TWO ADA TMP NUMBERS SZA,RSS IF EQUAL JMP *+5 THEN FOUND SSA IF IT GOES NEG. JMP FNDLN,I THEN NOT FOUND ADB .4 TRY NEXT STATEMENT JMP FNDLN+2 ISZ FNDLN JMP FNDLN,I SKP * GET INFORMATION FROM OPERATOR * GIFO NOP LDB GIFO,I ADDRESS OF PROMPT ISZ GIFO CLA,CLE I201 JSB FMTR,I LDA D72 INPUT COUNT LDB IBUFD JSB SLIN,I GET INPUT FROM OPERATOR SZA,RSS WAS THERE ANY INPUT JMP *-4 NO - SO ASK AGAIN STA ECNT XOR D72 DO I NEED A CR-LF? SZA,RSS JSB SLOP,I LDA ECNT RESTORE COUNT LDB SW7 \ JSB SWRT,I ECHO ON LINE PRINTER? RSS YES JMP *+3 LDB IBUFD JSB FAOP,I LIST IT LDB IBUFD * RBL * STB IBUFP * ADD CR TO ADB ECNT * LDA .15 * END OF BUFFER JSB A2BUF * JMP GIFO,I RETURN TO CALLER * * * SKP * GET A CHARACTER FROM INPUT BUFFER * GETC NOP LDB IBUFP JSB BUF2A CPA .15 JMP GETC,I CARRIAGE RETURN - NORMAL RETURN ISZ IBUFP MOVE POINTER TO NEXT CHARACTER LDB GETC CPA SPC ADB .1 SPACE CPA COMMA ADB .2 COMMA CPA MINUS ADB .3 MINUS JSB DGCK ADB .4 DIGIT JSB LETR ADB .5 LETTER CPB GETC JMP INER NONE OF THE ABOVE - ERROR JMP B,I RETURN * * BUF2A NOP LOAD A-REG WITH NEXT CHAR FROM BUFFER CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2CHR TO AREG SEZ,RSS UPPER OR LOWER? ALF,ALF UPPER AND .177 MASK UNWANTED CHARACTER JMP BUF2A,I RETURN. * * A2BUF NOP STORE A-REG IN PRINT BUFFER STA GETC SAVE CHARACTER SLB,INB OPPSITE ADB M2 CHARACTER JSB BUF2A ALF,ALF IOR GETC ADD NEW CHARACTER SEZ SHOULD IT BE SWAPPED? ALF,ALF YES STA B,I STORE IT JMP A2BUF,I * * PUTC NOP PUT LOW CHAR OF A-REG IN BUFFER AND .177 MASK UPPER BITS SZA,RSS IF IT'S ZERO JMP PUTC,I DON'T PUT IN BUFFER LDB IBUFP GET ADDRESS JSB A2BUF PUT CHATACTER IN BUFFER ISZ IBUFP MOVE TO NEXT CHARACTER JMP PUTC,I RETURN TO CALLER SKP * GET INPUT BLOCK FROM INPUT BUFFER * * GTASC NOP GET 2 ASCII CHARS IN A-REG & 2 IN B-REG LDA SPSPb STA AIN STA BIN JSB GETC GET FIRST CHAR JMP EXG EMPTY BUFFER JMP *-2 SPACE - TRY AGAIN JMP EXG COMMA NOP MINUS NOP DIGIT ALF,ALF LETTER - MOVE TO HIGH BYTE IOR SPC ADD SPACE IN LOW BYTE STA AIN * JSB GETC GET SECOND CHAR JMP EXG EMPTY BUFFER JMP EXG SPACE JMP EXG COMMA NOP MINUS NOP DIGIT XOR AIN LETTER - ADD TO PREVIOUS CHAR XOR SPC COMPENSATE FOR SPACE STA AIN * JSB GETC GET THIRD CHAR JMP EXG EMPTY BUFFER JMP EXG SPACE JMP EXG COMMA NOP MINUS NOP DIGIT ALF,ALF LETTER - MOVE TO HIGH BYTE IOR SPC SPACE IN LOW BYTE STA BIN * JSB GETC GET FOURTH CHAR JMP EXG EMPTY BUFFER JMP EXG SPACE JMP EXG COMMA NOP MINUS NOP DIGIT XOR BIN ADD TO PREVIOUS CHAR XOR SPC COMPENSATE FOR SPACE STA BIN * DMP JSB GETC SKIP OVER REMAINING CHARS JMP EXG EMPTY BUFFER JMP EXG SPACE JMP EXG COMMA JMP DMP MINUS JMP DMP DIGIT JMP DMP LETTER * EXG LDA AIN LDB BIN JMP GTASC,I * DGCK NOP STA BUF2A SAVE CHARACTER ADA .M60 ADD -60 OCTAL SSA SHOULD STILL BE POS.? ISZ DGCK NO - NOT A DIGIT ADA M10 ADD -10 SSA,RSS SHOULD GO NEG? ISZ DGCK NO - ADJUST RETURN LDA BUF2A RETRIEVE CHARACTER JMP DGCK,I RETURN * LETR NOP CHECK FOR LETTER (A,...,Z) STA BUF2A ADA .M101 SSA ISZ LETR ADA M26 SSA,RSS ISZ LETR LDA BUF2A JMP LETR,I * SKP GTDEC NOP GET A DECIMAL BLOCK FROM BUFFER LDA D10 INDICATE DECIMAL JSB GTINT GET INTEGER BLOCK ISZ GTDEC P+1 IF EMPTY, ELSE P+2 JMP GTDEC,I * GTOCT NOP GET AN OCTAL BLOCK FROM BUFFER LDA .10 INDICATE OCTAL JSB GTINT GET INTEGER BLOCK ISZ GTOCT P+1 IF EMPTY, ELSE P+2 JMP GTOCT,I * GTINT NOP GET AN INTEGER BLOCK FROM BUFFER STA SVA SAVE MULTIPLIER CLA STA AIN CCA STA GTASC ASSUME POSITIVE JSB GETC GET FIRST CHAR JMP EXE EMPTY BUFFER JMP *-2 SPACE - TRY AGAIN JMP EXO COMMA JMP NEG MINUS JMP MPYO DIGIT - START MULTIPLICATION JMP INER LETTER - ERROR * NEG STA GTASC SET TO COMPLEMENT RESULT GTOLP JSB GETC GET NEXT CHAR JMP EXO BUFFER EMPTY JMP EXO SPACE JMP EXO COMMA JMP INER MINUS - ERROR JMP MPYO DIGIT JMP INER LETTER - ERROR * MPYO ADA .M60 SUBTRACT ASCII PREFIX LDB SVA CPB D10 JMP *+5 DECIMAL - 9 & 8 LEGAL CPA .10 JMP INER 8 - ERROR CPA .11 JMP INER 9 - ERROR STA BIN LDA AIN CLB JSB .MPY,I MULTIPLY PREVIOUS TOTAL BY 8 OR 10 DEF SVA SZB JMP INER TOO LARGE - ERROR LDB SVA CPB .10 JMP *+3 OCTAL - SKIP SIGN TEST SSA JMP INER TOO LARGE ADA BIN ADD THIS DIGIT STA AIN SAVE TOTAL JMP GTOLP * EXE ISZ GTINT INDICATE END OF BUFFER EXO LDA AIN ISZ GTASC CMA,INA JMP GTINT,I * * * * OUTPUT TO FORMATTER * .FMT NOP LDB .FMT,I GET ADDRESS ISZ .FMT ADJUST RETURN CLA,CLE INDICATE STARTING FORMAT JSB FMTR,I GO TO FORMATTER JMP .FMT,I *($ RETURN I032 EQU * INER JSB .FMT 'INPUT ERROR' DEF Z032I JMP IRQ TRY AGAIN * EX NOP EXIT OPDSN - RETURN TO STANDARD TESTS JMP OPDSN,I q* SKP * LIST PROGRAM * LPP NOP LIST PROGRAM ON PRINTER LDA FAOP JMP *+3 * LP NOP LIST PROGRAM ON CONSOLE LDA SLOP STA DVLNK SET UP LIST DEVICE LDA SUPA SET STARTING OF LIST STA PRPTR POINTER PLFL LDA PRPTR,I CHECK TO PRINT STATEMNET SZA,RSS IS IT THE END OF LIST JMP IRQ YES JSB SW3.9,I CHECK TO ABORT CCB CONVERT AND ADB IBUFD PACK CLE STATEMENT JSB I2AS,I NUMBER LDB IBUFD ADD NUMBER TO POINTER ADB .2 RBL STB IBUFP LDA SPC PUT SPACE IN BUFFER JSB PUTC ISZ PRPTR LDA PRPTR,I * ISZ PRPTR * ADA M1 * LDB A,I * GET PRAM TYPES STB SVB * SAVE PRAM TYPES ADA M1 * LDB A,I * STB TMP+3 * ADA M1 * LDA A,I * AND STATEMENT STA TMP+2 * SAVE STATEMENT ALF,ALF * JSB PUTX * PUT STATEMENT TYPE LDA TMP+2 * IN JSB PUTX * BUFFER LDA TMP+3 * AND SECOND CHATACTERS ALF,ALF JSB PUTX * LDA TMP+3 * JSB PUTX * JMP *+7 * PUTX NOP AND .177 CPA SPC IF IT'S A SPACE JMP *+3 SKIP IT JSB PUTC PUT IT IN BUFFER JMP PUTX,I TRY NEXT CHARACTER LDA SPC ADD SPACE TO BUFFER JSB PUTC SKP LDA SVB RETRIEVE PRMS TYPES ALF,ALF MOVE TO FIRST PARAMETER PLFP LDB PRPTR,I CHECK IF NO PARAMETER SZB,RSS ? JMP SPACE NO SO DON'T PROCESS IT AND .177 CPA AA IS IT ASCII? JMP PAA YES CPA AI IS IT INTEGER? JMP PAI YES CPA AK IS IT OCTAL? JMP PAK YES JMP PLFC TYPE* NOT FOUND SO SKIP IT * PAA LDA PRPTR,I GET CHARACTERS ALF,ALF JSB PUTC FIRST ONE TO BUFFER LDA PRPTR,I AND .177 SKIP IF SPACE CPA SPC RSS JSB PUTC SECOND ONE TO BUFFER JMP PLFC * PAI LDA PRPTR,I CLB SSA,RSS IF POS CCB MOVE BUFFER POINTER BACK ONE ADB IBUFP STB IBUFP CLE,ERB JSB I2AS,I * PAE LDA IBUFP ADA .6 STA IBUFP JMP PLFC * PAK LDA PRPTR,I LDB IBUFP CLE,ERB JSB O2AS,I JMP PAE * SPACE LDA SPC JSB PUTC ADD SPACE TO BUFFER LDA SPC JSB PUTC ADD SPACE TO BUFFER * SKP PLFC ISZ PRPTR MOVE TO NEXT PARAMETER LDA SPC ADD SPACE TO BUFFER JSB PUTC LDA SVB SZA,RSS JMP *+4 CLB STB SVB JMP PLFP LDA IBUFP DETERMINE BUFFER COUNT LDB IBUFD * RBL * CMB,INB * ADA B * LDB IBUFD JSB DVLNK,I OUTPUT BUFFER JMP PLFL DO NEXT INSTRUCTION * * * ERASE PROGRAM FILE * EP NOP CLA STA SUPA,I LDA SUPA JMP SVLA+1 SKP * PROCESS GO * GO NOP EXECUTE OPDSN PROGRAM JSB DFLT,I SET UP DEFAULT TEST PARAMETERS LDA GSPTS CLEAR GO SUB TABLE STA GSPTR LDB SUPA START AT BEGINNING STB PRPTR LDA PRPTR,I STA TMP LINE NUMBER PGOL1 JSB SW3.9,I TEST TO ABORT ISZ PRPTR LDA PRPTR,I LDA A,I STA TMP+1 POINTER TO ROUTINE ISZ PRPTR LDA PRPTR,I STA TMP+2 PARAM A ISZ PRPTR LDA PRPTR,I STA TMP+3 PARAM B ISZ PRPTR LDA TMP STA CULN SAVE CURRENT LINE NUMBER SZA,RSS JMP IRQ LDA PRPTR,I STA TMP NEXT LINE NUMBER K LDA TMP+2 GET PARAM A LDB TMP+3 GET PARAM B JSB TMP+1,I **GO TO ROUTINE** JMP PGOL1 NO LINE CHANGE STA TMP SAVE NEW LINE NO. JSB FNDLN FIND IT JMP OPLNE LINE NUMBER NOT FOUND JMP PGOL1 FOUND * S3.9 NOP TEST FOR ABORT LDB SW2 JSB SWRT,I IF SW2 SET JSB ALTER,I ALTER PATTERN TABLE LDB SW3 JSB SWRT,I IF SW3 SET JMP S3LNK,I GO TO OPDSN INPUT LDB SW9 JSB SWRT,I IF SW9 SET JMP EXRT,I GO TO USER SELECTION JMP S3.9,I * * I034 EQU * OPLNE JSB .FMT 'LINE?' DEF Z034I OPLNN JSB OPLN OUTPUT LINE NO. JMP IRQ RETURN TO OPERATOR * * OPLN NOP OUTPUT LINE NO. CCE LDA CULN LDB CULNA JSB I2AS,I CONVERT LINE NO. TO ASCII JSB .FMT PRINT LINE DEF Z037I '(LINE XXXXXX)' JMP OPLN,I * CULNA DEF Z037I+3 SKP * LIST OUTPUT BUFFER SIZE * DBSZ NOP CCE GIVE OPERATOR BUFFER COUNT LDA DBCO LDB DBCA JSB I2AS,I CONVERT SIZE TO ASCII I036 JSB .FMT 'CNT=XXXXXX' DEF Z036I JMP DBSZ,I * DBCA DEF Z036I+4 * * * REPLACE OCTAL VALUES IN OUTPUT BUFFER * DBRK NOP SZB,RSS LDB A ADA M1 BACK UP ONE STB TMP+2 SAVE IT ADB DBD ADA DBD STA TMP+1 STA TMP+3 * * DELETE UNWANTED WORDS * CLSE1 CPB DBDI LAST ADDRESS? JMP CLSE2 YES LDA B,I MOVE DATA STA TMP+3,I ISZ TMP+3 INB JMP CLSE1 NO MOVE NEXT WORD CLSE2 LDA TMP+3 CPA DBDI LAST ADDRESS? JMP *+5 CLA STA TMP+3,I ISZ TMP+3 MOVE TO NEXT ADDRESS JMP CLSE2 * JSB GIFO CALL FOR INPUT DEF Z206I (PROMPT= :) DBI0 LDA TMP+1  STA TMP+2 CPA DBDI IS BUFFER FULL? JMP DBBC YES, TELL OPERATOR LDA TMP+1,I SAVE CURRENT CONTENTS STA TMP+3 GTI JSB GTOCT GET A BLOCK OF INPUT JMP CO4 NONE, READ NEXT LINE STA TMP+1,I STORE IT ISZ TMP+1 MOVE UP ADDRESSES DBI1 ISZ TMP+2 LDA TMP+2 CPA DBDI LAST ADDRESS? JMP DBI0 YES LDB TMP+3 MOVE REST OF BUFFER LDA TMP+2,I DOWN STB TMP+2,I STA TMP+3 JMP DBI1 NO MOVE MORE * CO4 JSB GIFO READ NEXT LINE DEF Z206I (PROMPT= :) JMP GTI * DBBC JSB DBSZ PRINT SIZE OF BUFFER JMP IRQ GET NEXT COMMAND SKP * FILL BUFFER WITH PATTERN * DBFK NOP STA TEMPB LDA DBCO ARS DIVIDE BY 2 CMA,INA MAKE COUNT NEG STA TEMPC LDA DBD STA TEMPA STARTING ADRESS LDA TEMPB LP01 STA TEMPA,I ISZ TEMPA STB TEMPA,I ISZ TEMPA ISZ TEMPC DONE? JMP LP01 NO JMP DBFK,I * * DB NOP FILL BUFFER WITH RANDOM DATA LDA DBCO CMA,INA STA TEMPC LDB DBD LP04 JSB RANDN GET RANDOM NUMBER STA B,I STORE IT INB ISZ TEMPC DONE? JMP LP04 NO JMP DB,I * SKP * * RANDOM NUMBER GENERATOR * NO CLAIM IS MADE FOR STATISTICAL RANDOMNESS. * EXITS WITH PATTERN IN A, B UNCHANGED. * RANDN NOP LDA BASE LOAD BASE ADA PRIME SUBTRACT THE PRIME SSA LDA BASE OOPS, BASE NOT BIG ENOUGH CLE,ELA DOUBLE BASE OR REMAINDER STA BASE FOR NEXT TRY RAR LSB NOT RANDOM - ROTATE TO MSB AND .377 STA TEMPA LDA BASE REPEAT PROCEDURE ADA PRIME SSA LDA BASE CLE,ELA STA BASE AND M256 =177400B IOR TEMPA COMBINE RIGH=T & LEFT HALVES JMP RANDN,I * PRIME DEC -31069 * THIS PRIME NUMBER LOOPS EVERY 31068 TIMES * IN ITS RECIPROCAL EXPANSION BASE OCT 034521 * * * SKP LO NOP LIST OUTPUT BUFFER STA TEMPA STB TEMPB ADA DBD BUFFER ADDRESS LDB SLOP OUTPUT TO CONSOLE JSB PLB JMP LO,I * * LOP NOP LIST OUTPUT BUFFER ON PRINTER STA TEMPA STB TEMPB ADA DBD BUFFER ADDRESS LDB FAOP OUTPUT TO PRINTER JSB PLB JMP LOP,I * * LI NOP LIST INPUT BUFFER STA TEMPA STB TEMPB ADA DBDI BUFFER ADDRESS LDB SLOP OUTPUT TO CONSOLE JSB PLB JMP LI,I * * LIP NOP LIST INPUT BUFFER ON PRINTER STA TEMPA STB TEMPB ADA DBDI BUFFER ADDRESS LDB FAOP OUTPUT TO PRINTER JSB PLB JMP LIP,I SKP * PLB NOP LIST INPUT OR OUTPUT BUFFER ADA M1 BACK UP ONE STA LDBD FIRST WORD ADDRESS STB DVLNK SET UP OUTPUT DEVICE LDB TEMPB SZB,RSS LDB TEMPA CMB ADB TEMPA STB TEMPB -NO. OF WORDS DBL0 JSB SW3.9,I CHECK TO ABORT CCE LDA TEMPA LDB DBLFM JSB I2AS,I CONVERT WORD NO. TO ASCII CLA,CCE SET FOR FAST OUTPUT LDB DVLNK CPB SLOP CLE SET FOR SLOW OUTPUT LDB DBLFM GET FORMAT JSB FMTR,I LDA M4 SET MAX LINE NUM. CNT STA TEMPC DBL1 CCE LDB DBLO LDA LDBD,I FETCH WORD FROM BUFFER JSB O2AS,I CONVERT TO OCTAL CLA,CCE SET FOR FAST OUTPUT LDB DVLNK CPB SLOP CLE SET FOR SLOW OUTPUT LDB DBLO JSB FMTR,I ISZ LDBD STEP TO NEXT BUFFER POSITION ISZ TEMPA BUMP WORD NO. ISZ TEMPB DONE? RSS NO JJMP DBL2 YES ISZ TEMPC END OF LINE? JMP DBL1 NO CLA JSB DVLNK,I CARRIAGE RETURN, LINE FEED JMP DBL0 DBL2 CLA JSB DVLNK,I CLA JSB DVLNK,I DOUBLE CARRIAGE RETURN JMP PLB,I FINISHED DBLFM DEF Z207I DBLO DEF Z210I * SKP * * COMPARE INPUT AND OUTPUT BUFFERS * CB NOP COMPARE INPUT AND OUTPUT BUFFERS SZB STB ERLIM CHANGE ERROR LIMIT LDB SLOP STB DVLNK OUTPUT TO CONSOLE JSB COMP COMPARE BUFFERS JMP CB,I * * CBP NOP COMPARE - LIST ERRORS ON PRINTER SZB STB ERLIM CHANGE ERROR LIMIT LDB FAOP STB DVLNK OUTPUT TO PRINTER JSB COMP COMPARE BUFFERS JMP CBP,I * * COMP NOP COMPARE INPUT & OUTPUT BUFFERS SZA STA COUNT LDA DBD LDB DBDI STA TEMPA CMA,INA INA STA TEMPD STB TEMPB CLA STA HEDC SET TO OUTPUT HEADING STA ERLM CLEAR ERROR COUNT JSB SW3.9,I CHECK TO ABORT LDA COUNT CMA,INA SSA,RSS JMP COMP,I ILLEGAL COUNT STA TEMPC LP08 LDB TEMPA,I CPB TEMPB,I SAME? JMP OK3 LDA ERLM CMA ADA ERLIM ISZ ERLM ADD ONE TO ERROR COUNT SSA TOO MANY ERRORS? JMP OK3 YES, STOP LISTING JSB SW3.9,I CHECK TO ABORT LDB SW11 JSB SWRT,I OUTPUT ENABLED? JMP OK3 NO LDA HEDC SZA,RSS HEADING ALREADY OUTPUT? JSB HEDC NO, DO IT E047 LDA TEMPD ADA TEMPA COMPUTE WORD NO. CLE LDB E47D1 JSB I2AS,I CONVERT TO ASCII CLE LDA TEMPA,I LDB E47D2 JSB O2AS,I VALUE OF OUTPUT BUFFER CLE LDB E47D3 LDA TEMPB,I JSB O2AS,I VALUE OF INPUT BUFFER CLA,CCE FAST OUTPUT DEVI7CE LDB DVLNK CPB SLOP CLE SLOW OUTPUT DEVICE LDB E047D JSB FMTR,I FORMATTED OUTPUT OK3 ISZ TEMPA ISZ TEMPB MOVE TO NEXT PAIR OF VALUES ISZ TEMPC DONE? JMP LP08 NO JMP COMP,I * E047D DEF Z047E E47D1 DEF Z047E+3 E47D2 DEF Z047E+9 E47D3 DEF Z047E+14 * * HEDC NOP 'COMPARE' HEADING LDB SW10 JSB SWRT,I SUPPRESS NON-ERROR MESSAGES? JMP HEDC,I YES H046 CLA,CCE LDB DVLNK CPB SLOP CLE SET FOR SLOW OUTPUT LDB H046D JSB FMTR,I JMP HEDC,I * H046D DEF Z046H * * HED OPERATOR DESIGN SECTION - PROGRAM STATEMENTS * WAIT FOR OPERATOR * WAIT NOP I040 JSB .FMT 'WAIT (LINE XXXXXX)' DEF Z040I JSB OPLN OUTPUT LINE NO. JSB GIFO CALL FOR INPUT DEF Z206I (PROMPT= :) JSB GTASC GET BLOCK OF INPUT CPA AST STOP? JMP IRQ YES WAPN JSB GTDEC GET BLOCK OF INPUT JMP WAIT,I NO 'GOTO' SZA ISZ WAIT GOTO JMP WAIT,I * * * * * PROCESS GO TO STATEMENT * GOTO NOP ISZ GOTO ADJUST RETURN FOR LINE CHANGE JMP GOTO,I SKP * PROCESS GOSUB * GOSB NOP ISZ GSPTR MOVE TO NEXT BLOCK STB SVB SAVE REP COUNT LDB GSPTR CHECK CMB,INB IF THERE IS ADB GSPTE ROOM SSB ? JMP GSPE NO - SO ERROR LDB PRPTR SAVE PROGRAM POINTER STB GSPTR,I LOCATION ISZ GSPTR LDB SVB GET REP COUNT SZB,RSS INB CMB,INB MAKE IT NEG STB GSPTR,I ISZ GOSB ADJUST RETURN FOR LINE CHANGE JMP GOSB,I GSPTR NOP GOSB STACK PTR GSPTS DEF GSPB GSPTE DEF GSPB+30 GSPB BSS 32 SUBR. RETURN PTR & COUNT STACK * I035 EQU * GSPE JSB .FMT 'GOSB' v"0.*DEF Z035I JMP OPLNN _0 SKP * PROCESS RTN STATEMENT * RTN NOP LDA GSPTR CHECK IF THERE HAS CPA GSPTS BEEN A GOSUB JMP OPLNE NO - THEN ERROR ISZ GSPTR,I FINISHED WITH LOOP JMP RTPN NO LDA GSPTR YES ADA M2 MOVE POINTER BACK TWO STA GSPTR INA RESET LINE NUMBER LDA A,I STA PRPTR LDA PRPTR,I STA TMP JMP RTN,I RTPN CCA ADA GSPTR LDA A,I ADA M2 LDA A,I ISZ RTN ADJUST RETURN FOR LINE CHANGE JMP RTN,I SKP * OUTPUT A MESSAGE * MSG NOP STA MSPM+2 STB MSPM+3 LDA .6 LDB MSPM JSB SLOP,I JMP MSG,I MSPM DEF *+1 ASC 3,* XXXX * * * TEST EXECUTION * TEST NOP STA TSTN CCB STB LSTST SET TO PRINT TEST NO. IF ERROR ADA TSTP LDA A,I JSB A,I EXECUTE TEST LDA TSTN STA LSTST DO NOT PRINT TEST NO. JMP TEST,I RETURN TO CONTROL * * * STOP EXECUTION * STOP NOP I031 JSB .FMT OUTPUT STOP MESSAGE DEF Z031I JMP OPLNN * HED OPERATOR MESSAGES - OPDSN * * MESSAGES PREFIXED BY H ARE HEADINGS & NON-ERROR MESSAGES * (SUPPRESSED BY SETTING S-REG BIT 10) * MESSAGES PREFIXED BY I CANNOT BE SUPPRESSED * * Z026E ASC 10,E026 INT EXECUTION/ Z030H ASC 06,H030 OPDSN/ Z031I ASC 05,I031 STOP_/ Z032I ASC 09,I032 INPUT ERROR/ Z033I ASC 05,I033 FULL/ Z034I ASC 06,I034 LINE?_/ Z035I ASC 05,I035 GOSB/ Z036I ASC 08,I036 CNT=XXXXXX/ Z037I ASC 08, (LINE XXXXXX)/ Z040I ASC 05,I040 WAIT_/ Z041H ASC 06,H041 RAND R/ HED OPERATOR DESIGN STATEMENT PARAMETER CHECK * * * * RETURNS +2 FOR VALID PARAMETERS * RETURNS +1 FOR INVALID PARAMETERS * LIMI ABS -XLIMI PROGRAM-ONLY AFTER THIS STATEMENT LIMP ABS -XLIMP IMMEDIATE-EXECUTION-ONLY BEFORE THIS * SYNTX NOP $ CHECK PARAMETERS - OPDSN LDB TMP+1 LDA TMP SZA JMP SYNT1 PROGRAM STATEMENT LDA B IMMEDIATE EXECUTION ADA LIMI SSA,RSS JMP SYNTX,I CANNOT BE EXECUTED IMMEDIATELY JMP SYNT2 SYNT1 LDA B ADA LIMP SSA JMP SYNTX,I CANNOT BE EXECUTED FROM PROGRAM SYNT2 LDA TMP+2 LDB B,I ADDRESS OF SUBROUTINE CPB FALLP JMP FMATX CPB WDP JMP WRITX CPB RDP JMP READX CPB VRFYP JMP VRFYX CPB SKP JMP SEEKX CPB RANDP JMP RANDX CPB SDP JMP DRIVX CPB MODEP JMP MODEX CPB MDISP JMP MDISX CPB RTRYP JMP RTRYX CPB FTRKP JMP FRMTX CPB TRAKP JMP TRAKX CPB DLYP JMP DLYX CPB TESTP JMP TESTX CPB GOSBP JMP GOSBX CPB GOTOP JMP GOTOX CPB WXP JMP WXX CPB RXP JMP RXX CPB VXP JMP VXX CPB SXP JMP SXX CPB FXP JMP FXX CPB UXP JMP UXX CPB DBRKP JMP DBRKX CPB LO.P JMP LOX CPB LOP.P JMP LOPX CPB LI.P JMP LIX CPB LIP.P JMP LIPX CPB CB.P JMP CBX CPB CBP.P JMP CBPX JMP SYNOK * * FMATX AND .7 CPA TMP+2 RSS JMP SYNTX,I LDA TMP+3 CPA .17 JMP SYNOK CPA .12 JMP SYNOK CPA .6 JMP SYNOK CPA .5 JMP SYNOK AND .3 CPA TMP+3 ISZ SYNTX JMP SYNTX,I * VRFYX EQU * WRITX SZA,RSS CNT =0? JMP SYNTX,I YES, ERROR READX EQU * WXX EQU * RXX EQU * VXX EQU * SSA,RSS CMA,INA SUBTRACT FROM BUFFER SIZE ADA DBCO SSA,RSS TOO BIG? SYNOK ISZ SYNTX JMP SYNTX,I * LIPX EQU * LOPX EQU * LOX EQU * LIX EQU * DBRKX SZA,RSS JMP SYNTX,I SSA JMP SYNTX,I LDB TMP+3 SZB,RSS JMP READX CMA,INA ADB A SSB JMP SYNTX,I SECOND MUST BE LARGER JMP READX * CBPX EQU * CBX EQU * LDB TMP+3 SSB JMP SYNTX,I SSA JMP SYNTX,I JMP READX * MDISX SSA JMP SYNTX,I NEG TRACK ADA MTRP1 SSA ISZ SYNTX JMP SYNTX,I * FRMTX SSA JMP SYNTX,I NEGATIVE TRACK ADA MTRKS SSA,RSS JMP SYNTX,I JMP FMATX+4 * SEEKX LDB TMP+3 SSB JMP SYNTX,I NEGATIVE SECTOR ADB MSEC SSB SECTOR TOO HIGH? JMP TRSKX JMP SYNTX,I * DLYX EQU * RANDX SZA,RSS JMP SYNTX,I SSA JMP SYNTX,I LDB TMP+3 CPB AW. JMP SYNOK CPB AR. JMP SYNOK CPB AS. JMP SYNOK CPB AZ. JMP SYNOK CPB AD. JMP SYNOK SZB,RSS ISZ SYNTX JMP SYNTX,I * * DRIVX AND .3 CPA TMP+2 ISZ SYNTX JMP SYNTX,I DRIVE>3 * MODEX SZA,RSS JMP DMAX DMA AVAILABLE? CPA AN. JMP SYNOK CPA ANI JMP SYNOK CPA AD. JMP *+4 CPA ADI RSS JMP SYNTX,I DMAX LDA CPTO GET COMPUTER OPTIONS AND .4 SZA JMP *+3 H101B JSB MSGC,I DEF Z101H 'NO DMA' LDB TMP+3 SZB,RSS JMP SYNOK CPB .6 DMA CHANNEL 6 JMP SYNOK CPB .7 DMA CHANNEL 7 ISZ SYNTX JMP SYNTX,I * TESTX EQU * RTRYX AND .17 JMP DRIVX+1 * GOSBX LDB TMP+3 SSB JMP SYNTX,I NEGATIVE REPEAT COUNT GOTOX SSA JMP SYNTX,I NEGATIVE LINE NO. SZA,RSS JMP SYNTX,I ZERO ILLEGAL ADA MXNM JMP MDISX+3 * TRAKX LDA TMP+3 AND .7 CPA TMP+3  RSS JMP SYNTX,I LDA TMP+2 TRSKX SSA JMP SYNTX,I NEG. TRACK ADA MTRKS JMP MDISX+3 * SXX CLB JSB .DIV,I DEF D100 STA TEMPA AND .177 XOR TEMPA SZA JMP SYNTX,I JMP SEEKX+1 * UXX AND .177 CPA TMP+2 RSS JMP SYNTX,I ADA M124 JMP MDISX+3 * FXX AND .177 JMP DRIVX+1 * HED DISKETTE CONTROL ROUTINES - FORMAT * FALL NOP FORMAT DISK STA GOOD NO. OF PATTERNS SZB,RSS LDB OFSET STANDARD VALUE JSB ENABL COMMAND ENABLED? JMP FALL,I NO STB REVS MIN. NO. OF REVOLUTIONS TO READ A TRACK I042 JSB .FMTP,I 'FORMAT' DEF Z042I JSB PRSTP,I INITIALIZE DUMBO & SEEK HOME LDA TRKS JSB MDIS ALL TRACKS GOOD CLA LOGICAL TRACK 0 STA PHYST PHYSICAL TRACK 0 LP06 LDB REVS XXXXXX OF REVOLUTIONS JSB FTRK FORMAT A TRACK LDA TRACK LDB GOOD NO. OF PATTERNS SZB,RSS JMP CONT1 SKIP TRACK TEST JSB TRAK TEST TRACK & FORMAT LDA ERCNT SZA,RSS JMP CONT1 NO ERRORS JSB PRSTP,I SEEK HOME LDA PHYST SZA,RSS JMP MK CMA,INA STA PHYS SET UP COUNT CLA CLB JSB STEPP,I STEP TO DEFECTIVE TRACK ISZ PHYS JMP *-4 MK LDA PHYST LDB Z043D CLE JSB I2AS,I CONVERT PHYSICAL TRACK TO ASCII LDA Z043H+11 STA Z104D,I SAVE LAST TWO DIGITS JSB .FMTP,I DEF Z104I 'TR XX DEFECTIVE' CLB CLA JSB MARKP,I MARK IT BAD RSS DO NOT CHANGE LOGICAL TRACK NO. CONT1 ISZ TRACK INC LOGICAL TRACK NO. ISZ PHYST INC PHYSICAL TRACK NO. LDA PHYST CPA TRKS CHECK FOR DONE JMP FEX YES CLA CLB JSB STEPP,I 1STEP HEAD IN LDA TRACK JMP LP06 * ************************************************ * THIS SECTION WRITES A DIRECTORY * ON THE LAST TRACK FOR FMGR. * A FILE 'FLOPLK' IS CREATED THAT * COVERS TRACK 0, SECTOR 0. * * FEX LDA PATRN STA PAT1 LDA PATRN+1 STA PAT2 SAVE PATTERN TABLE CLA STA PATRN STA PATRN+1 LDA TRACK ADA M1 STA DITRK,I CLB,INB JSB TRAK WRITE ZERO'S ON LAST TRACK LDA PAT1 STA PATRN LDA PAT2 STA PATRN+1 RESTORE PATTERN TABLE * LDA DBD MOVE DIRECTORY INFO TO BUFFER STA TEMPB LDA DIREC STA TEMPA LDB M25 LP02 LDA TEMPA,I STA TEMPB,I ISZ TEMPA ISZ TEMPB INB,SZB JMP LP02 * LDA DITRK,I JSB SK LAST TRACK, SECTOR 0 LDA D25 JSB WRITB WRITE DIRECTORY INFO * ********************************************* * JSB GOOD WRITE NO. OF GOOD TRACKS CCA STA PHYST CLEAR FORMAT FLAG JMP FALL,I * Z104D DEF Z104I+4 PAT1 NOP PAT2 NOP M25 DEC -25 D25 DEC 25 DIREC DEF DIRC DITRK DEF DTRK * * * GOOD NOP WRITE NO. OF GOOD TRACKS ON TR 0 SEC 0 JSB PRSTP,I SEEK TR 0 SEC 0 LDA TRACK LDB A JSB DBFKP,I FILL BUFFER WITH NO. OF GOOD TRACKS LDA REVS LDB DBD INB STA B,I SAVE NO. OF REVOLUTIONS LDA D128 JSB WRITB WRITE 1 SECTOR CLA STA CSEC SEEK TR 0 SEC 0 LDA D128 LDB AC. JSB VRFY VERIFY & COMPARE BUFFERS CLA JSB MDIS MOUNT DISKETTE JMP GOOD,I * * ENABL NOP CHECK FOR FORMAT/MARK ENABLED LIA SW IOR ENAB. INA,SZA,RSS ISZ ENABL JMP ENABL,I * * HED DISKETTE CONTROL ROUTINES - nFTRK * FTRK NOP FORMAT A TRACK STA TRACK SZB,RSS LDB OFSET STANDARD VALUE STB ALCNT NO. OF REVOLUTIONS (MIN) TO READ TRACK JSB ENABL COMMAND ENABLED? JMP FTRK,I NO JSB PARM,I SAVE PARAMETERS JMP FTRK,I END OF DISC LDA FSTS STA STEXP EXPECTED STATUS = 100100 B LDA FMASK STA MASK LDA SCTRS CLB JSB .DIV,I DEF ALCNT STA INC NO OF PHYSICAL SECTORS BETWEEN LOGICAL SECS JSB FBUF FILL 30 WORD FORMAT BUFFER LDA ALCNT LDB A ADB M4 SSB LDA .4 OFFSET AT LEAST 4 SECTORS PER TRACK JSB .MPY,I DEF TRACK JSB .DIV,I DEF SCTRS CMB,INB SZB ADB SCTRS ADB DBD GET START SECTOR FOR THIS TRACK LDB B,I JSB FBUF FILL FORMAT BUFFER JSB FSUBP,I FORMAT SUBROUTINE JMP FTRK,I * * FBUF NOP FILL OUTPUT BUFFER WITH SECTOR NUMBERS LDA DBD STA TEMPA LDA MSEC STA TEMPC LP05 STB TEMPA,I ADB INC LDA B ADA MSEC SSA JMP CO2 INA SECTOR NUMBER > MAX CPA INC CLA WRAP AROUND TO 0 LDB A CO2 ISZ TEMPA ISZ TEMPC JMP LP05 JMP FBUF,I * SKP * TRAK NOP TEST TRACK WITH WORST CASE PATTERNS STA TRCK SZB,RSS LDB .3 DEFAULT TO 3 PATTERNS BLS STB PATNF JSB RANN,I GET A RANDOM NUMBER STA RN1 SAVE IT JSB RANN,I GET ANOTHER STA RN2 SAVE IT LDB SW2 JSB SWRT,I JSB ALTER,I ALTER PATTERNS CLA STA ERCNT CLEAR ERROR FLAG LDA PATND STA PATNP START AT BEGINNING OF LIST ADA PATNF STA PATNF SET END OF LIST LDA SCTRS SET TO TEST 28 SECTORS STA SCCNT LDA TRCK W JSB .MPY,I DEF SCTRS STA STSEC STARTING SECTOR SZA TR 0 SEC 0? JMP LP12 NO, TEST ALL OF TRACK JSB ENABL OK TO CHANGE TR 0 SEC 0? JMP T0S1 NO, START AT TR 0 SEC 1 LDA PHYST SSA,RSS DISKETTE BEING FORMATTED? JMP LP12 YES DO NOT MOUNT I044A LDA AI0 NON-ERROR HEADING STA Z044I JSB .FMTP,I DEF Z044I 'TR 0 SEC 0' CLA JSB MDIS READ NO. OF GOOD TRACKS FROM TR 0 SEC 0 JMP LP12 TEST ALL OF TRACK 0 T0S1 LDA SM1 TEST REMAINING 27 SECTORS STA SCCNT ISZ STSEC START AT SECTOR 1 LP12 LDA PATNP CPA PATNF JMP TR0 LAST PATTERN COMPLETE LDA STSEC STA CSEC LDA SCCNT STA SECS LDA PATNP,I FIRST HALF OF PATTERN ISZ PATNP LDB PATNP,I SECOND HALF ISZ PATNP JSB DBFKP,I FILL BUFFER WITH PATTERN LP14 LDA BFSIZ NO. OF SECTORS IN BUFFER LDB A CMB,INB ADB SECS ADD TO REMAINING SECTORS SSB ADA B TOO MANY SECTORS - SUBTRACT EXCESS STA COUNT SZA,RSS END OF TRACK? JMP LP12 YES, GO TO NEXT PATTERN CMA,INA ADA SECS STA SECS UPDATE REMAINING SECTORS LDA COUNT JSB .MPY,I CHANGE SECTORS TO WORDS DEF SW7 JSB WRITB WRITE PATTERN JSB ERSUM KEEP TOTAL OF ERRORS CLA JSB MOVE RESTORE POSITION LDA COUNT LDB AC. SET TO COMPARE BUFFERS JSB VRFY VRFY PATTERN AND COMPARE JSB ERSUM KEEP TOTAL OF ERRORS LDA ERLM SZA ANY COMPARISON ERRORS? ISZ ERCNT JMP LP14 * TR0 LDA TRCK SZA JMP TRAK,I LDA PHYST SSA,RSS DISKETTE BEING FORMATTED? JMP TRAK,I YES, DO NOT RESTORE TR 0 SEC 0 JSB ENABL TR 0 SEC 0 MODIFIED? JMP TRAK,I YES NH0.* JSB GOOD YES, RE-WRITE IT JMP TRAK,I * ERSUM NOP KEEP RUNNING TOTAL OF MEDIA ERRORS LDA STATW ALF,ALF AND .17 MASK OFF GARBAGE ADA M5 CHECK FOR MEDIA ERROR SSA,RSS ISZ ERCNT ERROR, INCREMENT COUNT JMP ERSUM,I ~0 HED DISKETTE CONTROL ROUTINES - WRITE * * WD NOP WRITE SSA JMP WTALL NEGATIVE COUNT: WRITE ALL OF DISC STA COUNT LDB CSEC JSB WOK CURRENT SECTOR PROTECTED? JMP WD,I YES, REJECT COMMAND LDA COUNT JSB WRITB WRITE BLOCK OF DATA JMP WD,I * * WOK NOP CHECK FOR CURRENT SECTOR PROTECTED SZB JMP OK JSB ENABL OK TO CHANGE TR 0 SEC 0? JMP E044 NO I044B LDB AI0 NON-ERROR HEADING STB Z044I JSB .FMTP,I DEF Z044I 'TR 0 SEC 0' OK ISZ WOK JMP WOK,I E044 LDB AE0 ERROR HEADING STB Z044E JSB ERMS,I DEF Z044E 'TR 0 SEC 0' JMP WOK,I REJECT COMMAND * * WTALL CMA,INA MAKE COUNT POSITIVE STA ALCNT CLA JSB MDIS READ NO. OF GOOD TRACKS FROM TR 0 SEC 0 LDA ALCNT CPA .1 BUFFER DATA JMP WTSEQ SEQUENTIAL DATA LP22 LDA ALCNT JSB WRITB WRITE BLOCK OF DATA LDA CSEC CPA .1 END OF DISC? JMP WD,I YES JMP LP22 NO * * WTSEQ JSB BFSEQ CREATE SEQUENTIAL BUFFER LDA DBCO USE MAXIMUM BUFFER SIZE JSB WRITB WRITE BLOCK OF DATA LDA CSEC CPA .1 END OF DISC? JMP WD,I YES JMP WTSEQ NO * * WRITB NOP WRITE BLOCK OF DATA JSB PARM,I SAVE PARAMETERS JMP WRITB,I ABORT JSB SKS SEEK CURRENT SECTOR DL10 CLC DMAL LDB DBD STB BFPTR ADDRESS DL12 OTB DMAL SET UP DMA LDB WSTS STB STEXP EXPECTED STATUS = 100140 B LDB WMASK JSB LIMIT CHECK FOR END OF DISC SZA,RSS JMP WRITB,I YES, REJECT COMMAND IOR WRT ADD WRITE COMMAND JSB OTDCP,I OUTPUT COMMAND & DATA JMP WRITB,I * HED DISKETTE CONTROL ROUTINES - READ RD NOP RE AD STB VC SZA,RSS JMP READ0 READ 0 SECTORS SSA JMP RDALL JSB READB READ A BLOCK OF INPUT CLA LDB VC CPB AC. JSB COMPP,I COMPARE READ & WRITE BUFFERS JMP RD,I * * READB NOP READ BLOCK OF DATA JSB PARM,I SAVE PARAMETERS JMP READB,I JSB SKS SEEK CURRENT SECTOR DL14 CLC DMAL LDB DBDI STB BFPTR BUFFER ADDRESS ADB IN DMA INPUT DL16 OTB DMAL LDB RSTS STB STEXP EXPECTED STATUS = 100140 B LDB RMASK JSB LIMIT CHECK FOR END OF DISC SZA,RSS JMP READB,I YES, REJECT REQUEST IOR VFY JSB INDCP,I OUTPUT COMMAND & READ DATA JMP READB,I * * RDALL CMA,INA MAKE COUNT POSITIVE STA ALCNT CLA JSB MDIS READ NO. OF GOOD SECTORS FROM TR 0 SEC 0 LDA ALCNT CPA .1 SEQUENTIAL? JMP RDSEQ YES LP20 LDA ALCNT JSB READB READ BLOCK OF DATA CLA LDB VC CPB AC. JSB COMPP,I COMPARE BUFFERS LDA CSEC CPA .1 END OF DISC? JMP RD,I YES JMP LP20 * SKP * RDSEQ JSB BFSEQ CREATE SEQUENTIAL BUFFER LDA DBCO JSB READB READ BLOCK OF DATA CLA LDB VC CPB AC. JSB COMPP,I COMPARE INPUT & OUTPUT BUFFERS LDA CSEC CPA .1 END OF DISC? JMP RD,I YES JMP RDSEQ NO * * READ0 JSB PARM,I SAVE PARAMETERS JMP RD,I ABORT JSB SKS SEEK CURRENT SECTOR LDA SKSTS STA STEXP EXPECTED STATUS = 100040 B LDA SKMSK MASK=177760B STA MASK CLA (READ 0 COMMAND CODE = 0) JSB COMND,I OUTPUT COMMAND NOP DRIVE ERROR JSB STTNP,I ANALYZE STATUS JMP RD,I * * * HED DISKETTE CONTROL ROUTINES - VERIFY * * VRFY NOP VERIaFY (READ WITH CLOSE TOLERANCE) STA RD SAVE A LDA VRF STA VFY CHANGE READS TO VERIFIES LDA RD RESTORE A JSB RD READ STATEMENT CLA STA VFY CHANGE VERIFIES TO READS JMP VRFY,I * * HED DISKETTE CONTROL ROUTINES - FMAT/WRIT/READ/VRFY COMMON SUBS * * LIMIT NOP CHECK FOR END OF DISC & SET UP I/O STB MASK SAVE STATUS MASK STA COUNT CLB JSB .DIV,I DIVIDE INTO FULL & PARTIAL SECTORS DEF SW7 SZB INA PARTIAL SECTOR STA TEMPC ADA CSEC CALCULATE NEW CURRENT SECTOR STA CSEC CMA,INA ADA NOSEC SUBTRACT FROM TOTAL SECTORS SSA,RSS LAST SECTOR USED? JMP LIM1 NO H045A JSB MSGC,I YES, TELL OPERATOR DEF Z045H 'DISC OVFL' ADA TEMPC SUBTRACT EXCESS FROM REQUEST STA TEMPC USE ALL AVAILABLE SECTORS JSB .MPY,I GET NEW WORD COUNT DEF SW7 STA COUNT CLB,INB CLEAR PARTIAL SECTOR INDICATOR STB CSEC NEXT SEEK TO SEC 0 CLB LIM1 EQU * DL18 STC DMAL LDA COUNT CMA,INA NEGATE COUNT STA DMCNT STA IOCNT DL20 OTA DMAL SET UP DMA LDA TEMPC SZB PARTIAL SECTOR? LDB .2 YES STB CTL0 JMP LIMIT,I * SKP * * BFSEQ NOP FILL BUFFER WITH SEQUENTIAL DATA LDA BFSIZ CMA,INA STA TEMPC LDA DBD STA TEMPA LDA CSEC STA TEMPB LP24 CLB JSB .DIV,I DEF SCTRS SEPARATE TRACK AND SECTOR ALF RAL,RAL SHIFT TRACK LEFT TWO DIGITS IOR B LDB M64 LP25 STA TEMPA,I STORE TRACK & SECTOR NO. IN ODD WORDS ISZ TEMPA CMA STA TEMPA,I STORE COMPLEMENT IN EVEN WORDS ISZ TEMPA CMA INB,SZB JMP LP25 ISZ TEMPB NEXT SECTOR B|LDA TEMPB ISZ TEMPC CHECK FOR LAST SECTOR JMP LP24 JMP BFSEQ,I * * HED DISKETTE CONTROL ROUTINES - SEEK/MOVE * SK NOP SK TRACK & SECTOR STB TEMPB JSB .MPY,I CALCULATE SECTOR NUMBER DEF SCTRS ADA TEMPB STA CSEC UPDATE CURRENT SECTOR JMP SK,I * * SKS NOP SEEK CURRENT SECTOR LDA SKSTS STA STEXP EXPECTED STATUS = 100040 B LDA SKMSK STA MASK MASK = 177760 JSB SSUBP,I SEEK SUBROUTINE LDA SAVEA RESTORE A LDB SAVEB RESTORE B JMP SKS,I * * MOVE NOP ADVANCE/BACKSPACE SECTORS SZA,RSS JMP MOVE0 ADA CSEC COMPUTE DESTINATION RSS MOVE0 LDA LSEC LAST SECTOR SOUGHT STA CSEC SET CURRENT SECTOR JMP MOVE,I * * HED DISKETTE CONTROL ROUTINES - RANDOM SEEK, READ, & WRITE * * RAND NOP RANDOM SEEK, READ, & WRITE CMA,INA STA RCNT STORE NEGATIVE COUNT STB SRW RANDL JSB RANN,I GET RANDOM NUMBER AND .7740 BETWEEN 1 AND 4096 STA CSEC JSB RANN,I AND .37 IOR CSEC INA LDB A ADB .10 LEAVE ROOM FOR MAX BUFFER SIZE CMB,INB ADB NOSEC SSB OFF END OF DISC? JMP RANDL YES, TRY AGAIN STA CSEC CURRENT SECTOR LDA SRW CPA AW. JMP RANDW CPA AR. JMP RANDR CPA AZ. JMP RANDZ CPA AD. JMP RANDD RANDS JSB PARM,I SAVE PARAMETERS JMP RAND,I JSB SKS OUTPUT SEEK COMMAND RANDC ISZ RCNT JMP RANDL CONTINUE JMP RAND,I * RANDW JSB DBP,I CREATE RANDOM BUFFER JSB RANN,I GET RANDOM LENGTH AND .1777 INA BETWEEN 1 AND 2000B JSB WRITB WRITE MAXIMUM BLOCK CLA JSB MOVE RESTORE LOCATION LDA COUNT LDB AC. JSB RD READ & COMPARE BUFFERS JMP RANDC * SKP * RANDR JSB BFSEQ CREATE SEQUENTIAL BUFFER JSB RANN,I GET RANDOM LENGTH AND .1777 INA BETWEEN 1 AND 2000B LDB AC. JSB RD READ & COMPARE BUFFERS LDA ERLM ADA M64 SSA TOO MANY ERRORS? JMP RANDC NO H041 JSB MSGC,I YES, SEEK MUST HAVE FAILED DEF Z041H 'RANDOM SEEK' JMP RANDC * * RANDZ CLA JSB RD DO PHYSICAL SEEK JMP RANDC * RANDD JSB DBP,I CREATE RANDOM BUFFER LDA D128 JSB WRITB WRITE ONE SECTOR CLA JSB MOVE LDA AC. JSB DUMPP,I DUMP AND COMPARE JMP RANDC * HED DISKETTE CONTROL ROUTINES - STATUS * * ST NOP STATUS REQUEST COMMAND SZB,RSS LDB XMSK JSB PARM,I SAVE PARAMETERS JMP ST,I END OF DISC STA STEXP SAVE EXPECTED STATUS STB MASK SAVE MASK LDA STSRQ JSB COMND,I OUTPUT COMMAND NOP DRIVE ERROR JSB STTNP,I ANALYZE STATUS JMP ST,I * * STATU NOP PREPARE STATUS REPORT STA STATW LDA STEXP AND M4 MASK OFF DRIVE IOR DRIV. ADD DRIVE TO EXPECTED STATUS STA STEXP LDA MASK IOR STEXP EXPECTED STATUS MUST BE IN MASK STA MASK LDB AE1 AND STATW CPA STEXP ANY ERRORS? LDB AH1 NO CC08 SFC CC INB STB STAT1 MESSAGE PREFIX LDA STATW CLE LDB STT2 JSB O2AS,I CONVERT STATUS TO ASCII LDA COP CLE LDB STT3 JSB O2AS,I CONVERT CURRENT OP TO ASCII LDA LSEC CLB JSB .DIV,I DEF SCTRS STB TEMPB SAVE SECTOR NO. CLE LDB STT7 JSB I2AS,I CONVERT TRACK TO ASCII LDA STAT7+1 STA STAT4 PUT IN MESSAGE &LDA STAT7+2 STA STAT4+1 LDA TEMPB CLE LDB STT7 JSB I2AS,I CONVERT SECTOR TO ASCII LDA STAT7+2 STA STAT5 PUT IN MESSAGE LDA STEXP CLE LDB STT7 JSB O2AS,I CONVERT EXPECTED TO ASCII LDA CMOD STA STAT6 LDA CMOD. CPA AD MODE = DMA? JMP DMOD LDA STAT2+3 GET SPACES TO MASK CHANNEL JMP STD DMOD LDA CHAN ADA A.0 ADD ASCII SPACE STD STA STAT6+1 SAVE DMA CHANNEL JMP STATU,I * STT2 DEF STAT2 STT3 DEF STAT3 * * STAT NOP PRINT LAST STATUS LDB STATW DISPLAY STATUS IN B-REG LDA STAT1 ALF,ALF AND .177 MASK CPA AE ERROR? JMP ERST YES H100 JSB MSGC,I DEF Z100H PRINT STATUS INFO JMP STAT,I ERST LDA COP DISPLAY CURRENT OP IN A-REG E200 EQU * E100 JSB ERMS,I DEF Z100E JMP STAT,I * * HED DISKETTE CONTROL ROUTINES - MDIS/DRIV/MODE/RTRY * MDIS NOP MOUNT DISKETTE (READ NO. OF GOOD TRACKS) SZA JMP MX STA CSEC LDA D128 JSB READB READ TR 0 SEC 0 LDA DBDI,I SSA JMP E103 NEGATIVE - ILLEGAL SZA,RSS JMP E103 ZERO - ILLEGAL LDB A ADB MTRP1 SSB,RSS JMP E103 BAD VALUE - DO NOT ALTER TRACK COUNT STA TRACK CLE LDB Z043D JSB I2AS,I CONVERT GOOD TRACKS TO ASCII H043 JSB MSGC,I DEF Z043H 'GOOD TRACKS: XXXXXX' LDB DBDI INB LDB B,I GET SECOND WORD OF BUFFER CPB .17 CHECK FOR LEGAL NO. OF REVOLUTIONS JMP MX-2 CPB .12 JMP MX-2 CPB .6 JMP MX-2 CPB .5 JMP MX-2 LDA B AND .3 CPA B JMP MX-2 JMP E103 NOT A FACTOR OF 30 * STB REVS MINIMUM REVOLUTIONS TO READ 1 TRACK LDA TRACK MX STA ĥ*($TRACK JSB .MPY,I CALCULATE XXXXXX OF GOOD SECTORS DEF SCTRS STA NOSEC JMP MDIS,I * E103 JSB ERMS,I DEF Z103E 'BAD FORMAT' JMP MDIS,I * Z043D DEF Z043H+9 * SKP * SD NOP SET UP DRIVE NUMBER STA DRIV. ALF,ALF ALF STA DRIVE JMP SD,I * * MODE NOP MODE OF I/O CONTROL SZA,RSS LDA AD. DEFAULT TO DMA, INTP OFF STA CMOD CURRENT I/O MODE ALF,ALF AND .177 STA CMOD. DMA/NON-DMA CPA AD RSS DMA - SAVE CHANNEL JMP MODE,I DONE LDA CPTO AND .4 SZA JMP DAV DMA AVAILABLE LDA CMOD AND .177 SAVE INTERRUPT MODE ALF,ALF IOR AN CHANGE TO NON-DMA MODE ALF,ALF JMP MODE+3 DAV LDA B2114 SINGLE CHANNEL DMA? SZA JMP MODE, I YES, NO RECONFIGURATION ALLOWED SZB,RSS JMP MODE,I NO CHANGE - DMA CHANNEL CPB CHAN NEW CHANNEL SAME AS OLD? JMP MODE,I YES STB CHAN LDA B LDB IODHP JSB ZISCP,I CONFIGURE DMA INSTRUCTIONS LDA CHAN ADA M4 DMA LOW CHANNEL LDB IODLP JSB ZISCP,I JMP MODE,I * RTRY NOP SET UP RETRY COUNT STA RETRY JMP RTRY,I 0j* HED DISKETTE CONTROL ROUTINES - FORCE ERROR STATUS * * * * * MESSAGES PREFIXED BY E ARE ERROR MESSAGES * (SUPPRESSED BY SETTING S-REG BIT 11) * MESSAGES PREFIXED BY H ARE HEADINGS & NON-ERROR MESSAGES * (SUPPRESSED BY SETTING S-REG BIT 10) * * Z056H ASC 11,H056 TURN OFF MASTER_/ Z060H ASC 10,H060 TURN OFF SLAVE_/ Z061E ASC 08,E061 PSTS HIGH/ Z062H ASC 10,H062 RESTORE POWER_/ Z063H ASC 08,H063 OPEN DOOR_/ Z064H ASC 15,H064 REMOVE DISC, CLOSE DOOR_/ Z065H ASC 14,H065 INSERT PROTECTED DISC_/ Z066H ASC 15,H066 INSERT UNPROTECTED DISC_/ * Z101H ASC 06,H101 NO DMA/ Z103E ASC 08,E103 BAD FORMAT/ Z104I ASC 11,I104 TR XX DEFECTIVE/ * Z201I OCT 3407 TWO BELLS ASC 01,@_/ THEN @ (OPDSN PROMPT) Z202H ASC 07, TEST XXXXXX/ Z203I ASC 07, PASS XXXXXX/ Z204H ASC 17,HP 12732 FLEXIBLE DISC DIAGNOSTIC/ Z205H OCT 3457 BELL--CARRIAGE RETURN--LINE FEED Z206I ASC 02, :_/ PROMPT FOR DBRK AND WAIT Z207I ASC 05,(XXXXXX)_/ Z210I ASC 04, XXXXXX_/ Z211H ASC 06,, PRESS RUN/ * * ILLEGAL COMMAND CODES: ILGLL OCT 100000 WRITE ZERO SECTORS OCT 040000 VERIFY ZERO SECTORS OCT 144640 SEEK TRACK 77 SEC 0 OCT 147775 SEEK TRACK 127 SEC 29 OCT 140037 UNDEFINED COMMAND OCT 147577 UNDEFINED COMMAND OCT 144676 FORMAT TRACK 77 OCT 147776 FORMAT TRACK 127 * * * ERRR NOP FORCE ERROR STATUSES * * INTERACTIVE PORTION: LDB SW812 JSB SWRT,I OPERATOR INTERVENTION SUPPRESSED? JMP ILGL-3 YES H056 JSB MSGH,I DEF Z056H 'TURN OFF MASTER' CC02 LIA CC CONTROLLER POWER ON? SSA,RSS JMP H062A NO E061 JSB ERMS,I DEF Z061E 'PSTS HIGH' * H062A JSB MSGH,I DEF Z062H 'RESTORE POWER' H060 JSB MSGH,I DEF Z060H 'TURN OFF SLAVE' LDA PWSTS EXP STATUS = 420 B LDB PWMSK MASK = 177760 B JSB STP,I AN4ALYZE STATUS H062B JSB MSGH,I DEF Z062H 'RESTORE POWER' H063 JSB MSGH,I DEF Z063H 'OPEN DOOR' LDA DRSTS STATUS = 1020 B LDB DRMSK MASK = 177760 B JSB STP,I H064 JSB MSGH,I DEF Z064H 'REMOVE DISC, CLOSE DOOR' LDA NDSTS STATUS = 1420 B LDB NDMSK MASK = 177760 B JSB STP,I ANALYZE STATUS H065 JSB MSGH,I DEF Z065H 'INSERT PROTECTED DISC' LDA PRSTS STATUS = 100014 B LDB PRMSK MASK = 177774 B JSB STP,I ANALYZE STATUS H066 JSB MSGH,I DEF Z066H 'INSERT UNPROTECTED DISC' LDA CHSTS STATUS = 100004 B LDB CHMSK MASK = 177774 B JSB STP,I ANALYZE STATUS * * NON-INTERACTIVE PORTION: * LDA ILGLD STA ILGLP JSB PRSTP,I PRESET CONTROLLER & SEEK HOME ILGL CLA LDB PMASK JSB STP,I CHECK FOR GOOD STATUS ISZ CSEC CLA JSB RDP,I LDA ILGLP CPA ILGLE END OF LIST? JMP OVRN YES CPA ILGFD FORMAT COMMAND? RSS YES JMP *+3 JSB ENABP,I ENABLED? JMP OVRN NO JSB PARM,I SAVE PARAMETERS JMP OVRN END OF DISC LDA ILSTS ILLEGAL COMMAND STATUS = 102000 B STA STEXP LDA ILMSK MASK = 177760 B STA MASK LDA ILGLP,I JSB COMND,I OUTPUT ILLEGAL COMMAND NOP DRIVE ERROR JSB STTNP,I ANALYZE STATUS ISZ ILGLP MOVE TO NEXT ILLEGAL COMMAND JMP ILGL LOOP * * OVRN JSB PARM,I SAVE PARAMETERS JMP OVRN2 END OF DISC JSB SKSP,I SEEK CLA STA CTL0 LDA STATW IOR M9 =177767B LDB ILSTS INA,SZA,RSS JMP *+3 WRITE PROTECTED - ILLEGAL COMMAND LDB OVSTS DATA OVERRUN EXPECTED LDA M10 TEN WORDS TRANSFERRED STB STEXP JSB DOSUB SET UP DMA OLDB OVMSK STB MASK LDA W1 WRITE-ONE-SECTOR COMMAND JSB OTDCP,I OUTPUT COMMAND & DATA * OVRN2 JSB PARM,I SAVE PARAMETERS JMP MKTR ABORT JSB SKSP,I SEEK CLA STA CTL0 OMIT PARTIAL SECTOR SIGNAL LDA M10 JSB DISUB SET UP DMA LDB OVSTS OVERRUN STATUS = 104040 B STB STEXP LDB OVMSK STB MASK CLA,INA READ-ONE-SECTOR COMMAND JSB INDCP,I OUTPUT COMMAND & INPUT DATA * * MKTR JSB ENABP,I FORMAT/MARK ENABLED? JMP ERRR,I NO,DONE LDA .2 CLB JSB SKP,I SEEK TRACK 2 - SEC 0 CLA JSB RDP,I PHYSICALLY POSITION TO TRACK CLA CLB JSB MARKP,I MARK TRACK 2 DEFECTIVE JSB PRSTP,I PRESET CONTROLLER AFTER MARK CLB JSB R02 CHECK FOR TRACK 2 NOT FOUND LDB .17 JSB R02 TRACK 2 NOT FOUND LDB SM1 SECTOR 29 JSB R02 TRACK 2 NOT FOUND CLA,INA LDB SM1 JSB SKP,I SEEK TRACK 1 - SEC 27 CLA JSB RDP,I DO PHYSICAL SEEK LDA .3 CLB JSB SKP,I SEEK TRACK 3 - SEC 0 CLA JSB RDP,I DO PHYSICAL SEEK LDA SM1 LDB SM1 JSB DBFKP,I FILL BUFFER WITH 29'S JSB PARM,I SAVE PARAMETERS JMP ERRR,I ABORT LDA FSTS STA STEXP LDA FMASK STA MASK LDA .3 STA TRACK SET TO FORMAT TRACK 3 JSB FSUBP,I FORMAT SUBROUTINE JSB PRSTP,I PRESET CONTROLLER CLB,INB JSB R03 SECTOR 1 NOT FOUND LDB .17 JSB R03 SECTOR 15 NOT FOUND LDB SM1 JSB R03 SECTOR 29 NOT FOUND LDA .3 CLB JSB SKP,I CLA JSB RDP,I PHYSICAL SEEK LDA .3 CLB JSB FALLP,I FORMAT DISKETTE JMP ERRR,I * SKP * * R02 NOP READ 0 SECTORS - TRACK NOT FOUND LDA .2 JSB SKP,I SEEK TRACK 2 JSB PARM,I SAVE PARAMETERS JMP ERRR,I ABORT JSB SKSP,I SEND SEEK COMMAND TO CONTROLLER LDA TRSTS STATUS = 3000 B STA STEXP LDA TRMSK MASK = 177760 B STA MASK CLA JSB COMND,I OUTPUT READ 0 SECTORS COMMAND NOP JSB STTNP,I ANALYZE STATUS JMP R02,I * * R03 NOP READ 0 SECTORS - SECTOR NOT FOUND LDA .3 JSB SKP,I SEEK TRACK 3 JSB PARM,I SAVE PARAMETERS JMP ERRR,I JSB SKSP,I SEND SEEK COMMAND LDA SCSTS STA STEXP SECTOR-NOT-FOUND STATUS LDA SCMSK STA MASK CLA JSB COMND,I OUTPUT COMMAND NOP JSB STTNP,I ANALYZE STATUS JMP R03,I * HED DISKETTE CONTROL ROUTINES - DUMP * * DUMP NOP DUMP SECOND SECTOR JSB PARM,I SAVE PARAMETERS JMP DUMP,I END OF DISC STA B CLA JSB RDP,I PHYSICALLY POSITION TO SECTOR JSB PARM,I RESET RETRY COUNT JMP DUMP,I END OF DISC LDA CSEC CLB JSB .DIV,I POSITION TO CURRENT TRACK, DEF SCTRS STB TEMPB STA TEMPA SZB,RSS JMP CO3 WRAP AROUND FROM 0 TO 29 LDA SCTRS CLB JSB .DIV,I DEF REVS CMA,INA LDB A ADB TEMPB PREVIOUS SECTOR ON SAME TRACK SSB CO3 ADB SM1 LDA TEMPA JSB SKP,I SET UP CURRENT SECTOR JSB SKSP,I SEND SEEK COMMAND LDA LSEC INA STA CSEC LDA DSTS LDB DMASK JSB DSUBP,I DUMP SUBROUTINE LDA D128 STA COUNT CLA LDB VC CPB AC. JSB COMPP,I COMPARE BUFFERS JMP DUMP,I * HED DISKETTE CONTROL ROUTINES - STEP/MARK * STEP NOP STEP TRACK JSB PARM,I SAVE PARAMETERS JMP STEP,I ABORT SZA,RSqxS LDA STSTS STA STEXP EXPECTED STATUS = 000040 B SZB,RSS LDB STMSK STB MASK MASK = 177760 B LDA STEPT JSB COMND,I OUTPUT COMMAND NOP DRIVE ER JSB STTNP,I ANALYZE STATUS JMP STEP,I * * MARK NOP MARK A TRACK BAD JSB PARM,I SAVE PARAMETERS JMP MARK,I END OF DISC STA STEXP EXP STATUS = 000000 B SZB,RSS LDB MMASK STB MASK MASK = 177773 B JSB ENABP,I COMMAND ENABLED? JMP MARK,I NO LDA BAD JSB COMND,I OUTPUT COMMAND NOP DRIVE ER JSB STTNP,I ANALYZE STATUS JMP MARK,I * * HED DISKETTE CONTROL ROUTINES - GENERAL I/O CMND NOP OUTPUT COMMAND IOR DRIVE ADD IN DRIVE NO. STA COP SAVE FOR STATUS PRINT LDA CMND INA STA CMND2 SET FOR GOOD RETURN LDA PASSW OUTPUT PASSWORD JSB TIMR1 MONITOR TIMING JMP CMND,I DRIVE ER LDA COP JSB TIMR1 CHECK FOR TIME OUT JMP CMND,I DRIVE ER JMP CMND2,I * CMND2 NOP * * PARAM NOP SAVE PARAMETERS & CHECK FOR ABORT STA SAVEA STB SAVEB CLA STA PRST JSB DOSUB SET EXPECTED WORD COUNT TO ZERO LDA PARAM INA STA PARM2 SET FOR GOOD RETURN LDA CSEC STA LSEC SAVE CURRENT SECTOR SSA JMP H045B NEGATIVE SECTOR NO. CMA ADA NOSEC SSA JMP H045B OFF END OF DISC LDA RETRY CMA STA PASS SET UP RETRY COUNT * AGAIN JSB SW3.9,I TEST FOR ABORT LDA LSEC STA CSEC JSB TRAP,I FILL TRAP CELLS WITH HALTS LDA CMOD AND .177 CPA AI SHOULD INTERRUPTS BE ON? STF INTP YES LDA SAVEA LDB SAVEB JMP PARM2,I * PARM2 NOP * H045B JSB MSGC,I DEF Z045H 'DISC OVFL' CLA STA COUNT INA STA CSEC JMP PARAM,I REJECT COMMAND * STATN NOP ANALYZE STATUS CLF INTP TURN OFF INTERRUPTS DH02 CLC DMAH TURN OFF DMA DH18 STF DMAH CLB,INB WAIT ONE MILLISECOND TO JSB TIMR3 ENSURE CTL0 IS RECOGNIZED CC06 LIA CC CMA AND SW15 CC04 SFS CC JSB TIMR1 JSB TIMR2 DC02 LIA DC INPUT STATUS JSB STTPP,I PREPARE TO OUTPUT STATUS LDA STATW AND MASK MASK STATUS CPA STEXP RSS STATUS OK JSB STATP,I PRINT STATUS CLA CC32 OTA CC JSB TIMR1 ACKNOWLEDGE STATUS JMP STATN+1 DRIVE ERROR CC10 CLC CC DC04 CLC DC TURN OFF INTERRUPTS JSB TRAP,I INITIALIZE TRAP CELL HALTS LDA STATW AND MASK CPA STEXP JMP STATN,I NO ERRORS - DONE LDA PASS ISZ PASS SSA,RSS JMP STATN,I RETRY COUNT EXCEEDED JMP AGAIN TRY AGAIN * INIT CLC INTP,C TURN OFF INTERRUPTS DC06 LIA DC INITIALIZE CONTROLLER & TRY AGAIN JSB STTPP,I PREPARE STATUS INFO LDA AE3 STA STAT1 JSB STATP,I PRINT STATUS MESSAGE LDA PRST CLB STB PRST SZA JMP A,I TIME-OUT OCCURRED DURING PRESET JSB TLOG PRINT TRANSMISSION LOG JSB PRST PRESET CONTROLLER LDA PASS ISZ PASS SSA,RSS JMP S3LNK,I ABORT IF RETRY EXCEDED JMP AGAIN SKP * OTDC NOP OUTPUT COMMAND & DATA TO DATA CHANNEL LDB CMOD. CPB AD JMP DOC DMA OUTPUT CONTROL SFC INTP JMP NIOC NON-DMA, INTP ON * NOC JSB CMND OUTPUT COMMAND JMP ERSTO DRIVE ER LDB M20 STB CNT2 LDA BFPTR,I JMP NOC. LP99 ISZ BFPTR MOVE TO NEXT WORD LDA BFPTR,I CLB TIME OUT COUNT LP98 INB,SZB,RSS  JSB TO1 DC08 SFS DC JMP LP98 NOC. EQU * DC12 STC DC,C DC10 OTA DC ISZ IOCNT LAST WORD? JMP LP99 NO CLB TIME OUT COUNT LP97 INB,SZB,RSS JSB TO1 DC14 SFS DC JMP LP97 CTLZO LDB CTL0 TERMINATE TRANSMISSION CC46 OTB CC IF PARTIAL SECTOR ERSTO JSB STATN ANALYZE STATUS JSB TLOG CHECK TRANSMISSION LOG JMP OTDC,I * TO1 NOP CC14 SFC CC JMP ERSTO DRIVE ER ISZ CNT2 JMP TO1,I JMP E054 TIME OUT * NIOC JSB CMND OUTPUT COMMAND JMP ERSTO DRIVE ER LDB JDC18 DC76 STB DC LDA BFPTR,I JMP DC18 (BASE PAGE) * SKP * INDC NOP OUTPUT COMMAND & INPUT DATA LDB CMOD. CPB AD JMP DIC DMA INPUT CONTROL SFC INTP JMP NIIC NON-DMA, INTP ON * NIC JSB CMND OUTPUT COMMAND JMP ERSTI DRIVE ER CLA DC20 OTA DC DC22 STC DC,C LDA BFPTR LDB M20 STB CNT2 TIME OUT COUNT ISZ IOCNT 1 WORD ONLY? RSS NO JMP LP95-1 YES CLB LP96 INB,SZB,RSS JSB TO2 DC24 SFS DC JMP LP96 DC28 STC DC,C DC26 LIB DC STB A,I ADA .1 ISZ IOCNT LAST WORD? JMP LP96-1 NO CLB LP95 INB,SZB,RSS JSB TO2 DC68 SFS DC JMP LP95 DC70 LIB DC STB A,I CTLZI LDB CTL0 TERMINATE TRANSMISSION CC30 OTB CC IF PARTIAL SECTOR ERSTI JSB STATN ANALYZE STATUS JSB TLOG CHECK TRANSMISSION LOG JMP INDC,I * TO2 NOP CC16 SFC CC JMP ERSTI DRIVE ER ISZ CNT2 JMP TO2,I JMP E054 TIME OUT * * NIIC JSB CMND OUTPUT COMMAND JMP ERSTI DRIVE ER LDB JDC60 ISZ IOCNT LDB JDC72 DC78 STB DC CLA DC30 OTA DC DC32 STC DC,C JMP TO3 * DC60 LIA DC STA BFPTR,I JMP CTLZI U0.**0 SKP * * DOC EQU * DMA OUTPUT CONTROL SFC INTP JMP DIOC INTERRUPTS ON JSB CMND OUTPUT COMMAND JMP ERSTO DRIVE ER DH04 STC DMAH,C TURN ON DMA CHANNEL LDB M20 STB CNT2 CLB LP10 INB,SZB,RSS JMP TO4 TO4I EQU * DH06 SFS DMAH JMP LP10 * CLB LP09 INB,SZB,RSS JMP TO5 TO5I EQU * DC44 SFS DC JMP LP09 JMP CTLZO DONE * TO4 EQU * CC24 SFC CC JMP ERSTO ISZ CNT2 JMP TO4I E051 JSB ERMS,I DEF Z051E '*TO* DMA,CC' JMP INIT * TO5 EQU * CC26 SFC CC JMP ERSTO ISZ CNT2 JMP TO5I E052 JSB ERMS,I '*TO* DC,CC - DMA LAST WORD' DEF Z052E JMP INIT PRESET CONTROLLER & TRY AGAIN * DIOC JSB DMLNK SET UP DMA TRAP CELL DEF INT1 JSB CMND OUTPUT COMMAND JMP ERSTO DRIVE ER JSB DCLNK SET UP DC TRAP CELL DEF E055 INTERRUPT NOT EXPECTED DH08 STC DMAH,C LDB SW14 JSB TIMR3 WAIT FOR INTERRUPT JMP E051 TIME OUT * INT1 LDB M20 STB CNT2 JMP LP09-1 * E055 JSB ERMS,I DEF Z055E '*DC INTP--DMA*' JMP INIT * * * DIC EQU * DMA INPUT CONTROL SFC INTP JMP DIIC INTP ON JSB CMND OUTPUT COMMAND JMP ERSTI DRIVE ER CLA DC46 OTA DC,C DH12 STC DMAH,C START UP DMA CHANNEL DC48 STC DC,C LDB M20 STB CNT2 CLB LP23 INB,SZB,RSS JMP TO6 TO6I EQU * DH14 SFS DMAH JMP LP23 JMP CTLZI DMA COMPLETE * TO6 EQU * CC28 SFC CC JMP ERSTI DRIVE ER ISZ CNT2 JMP TO6I JMP E051 '*TO* DMA,CC' * DIIC JSB DMLNK SET UP DMA TRAP CELL DEF CTLZI JSB CMND OUTPUT COMMAND JMP ERSTI DRIVE ER CLA DC50 OTA DC,C JSB DCLNK SET UP DC TRAP CELL DEF E055 INTERRUPT NO!T EXPECTED DH16 STC DMAH,C START UP DMA DC52 STC DC,C JMP DH08+1 CHECK FOR TIME OUT SKP * * DMLNK NOP SET UP DMA INTERRUPT LINK LDB DMLNK,I STB DMAIL ISZ DMLNK LDB JMP.I STB CHAN,I PUT JMP,I IN TRAP CELL JMP DMLNK,I * * CCLNK NOP SET UP COMMAND CHANNEL INTERRUPT LINK LDB CCLNK,I STB CCIL ISZ CCLNK LDB JMPCI STB COMCH,I PUT JMP,I IN TRAP CELL JMP CCLNK,I * * DCLNK NOP SET UP DATA CHANNEL INTERRUPT LINK LDB DCLNK,I STB DCIL ISZ DCLNK LDB JMPDI STB DATCH,I PUT JMP,I IN TRAP CELL JMP DCLNK,I * SKP * TLOG NOP CHECK TRANSMISSION LOG LDB CMOD. CPB AD JMP DLOG DMA MODE LDA IOCNT ACTUAL WORD COUNT SZA,RSS JMP TLOG,I TRANSMISSION COMPLETE ADA M1 LDB DMCNT EXPECTED WORD COUNT JMP TEXP DLOG EQU * DL46 STC DMAL DL48 LIA DMAL DMA WORD COUNT SZA,RSS JMP TLOG,I TRANSMISSION COMPLETE IOR B2114 ADD HIGH BITS IF 2114 CPU LDB COP SSB READ OR WRITE? ADA M1 WRITE, COUNT IS OFF BY 1 LDB IOCNT DMA EXPECTED TEXP CMB,INB STB TEMPB ADA B SUBTRACT WORDS NOT TRANSFERRED CLE,SSA CLA LDB TLG02 JSB I2AS,I CONVERT LOG TO ASCII CLE LDA TEMPB LDB TLG03 JSB I2AS,I CONVERT EXPECTED TO ASCII E050 JSB ERMS,I DEF Z050E 'TLOG=000000 EXP=000000' JMP TLOG,I * * TLG02 DEF Z050E+5 TLG03 DEF Z050E+11 * * * SKP TIMR1 NOP MONITOR I/O TIMING DC36 OTA DC LDB TIMR1 INB STB OK1 SFC INTP JMP ITIM1 INTERRUPTS ON CC18 STC CC,C DC38 STC DC,C LDB M26 STB CNT2 CLB LP11 INB,SZB,RSS JMP TO8 TO8I EQU * DC40 SFS DC JMpOP LP11 JMP OK1,I * TO8 EQU * CC20 SFC CC JMP TIMR1,I DRIVE ER ISZ CNT2 JMP TO8I E054 JSB ERMS,I '*TO* DC,CC' DEF Z054E TIME OUT JMP INIT RESTART DIAGNOSTIC * OK1 NOP * ITIM1 JSB CCLNK SET UP CC TRAP CELL DEF TIMR1,I JSB DCLNK SET UP DC TRAP CELL DEF OK1,I CC22 STC CC,C DC42 STC DC,C JMP TO3 CHECK FOR TIME OUT * * SKP * TIMR2 NOP MONITOR ERROR STATUS TIMING (INTP OFF) DC54 OTA DC DC56 STC DC,C REQUEST STATUS CLB STB CNT2 LP18 EQU * DC58 SFC DC JMP TIMR2,I READY ISZ CNT2 JMP LP18 E053 JSB ERMS,I TIME OUT DEF Z053E '*TO* DC - STATUS' JMP INIT PRESET CONTROLLER & TRY AGAIN * * HED DISKETTE CONTROL ROUTINES - LOW-LEVEL * PRST NOP PRESET DUMBO CONTROLLER & SEEK HOME LDA PRSET CC34 OTA CC OUTPUT PRESET BIT CLA CC36 OTA CC CLEAR PRESET BIT STA CSEC SET CURRENT SECTOR TO 0 STA SEC STA STEXP JSB TIMR1 WAIT FOR PRESET TO COMPLETE NOP DO NOT PRINT ERROR DC80 CLC DC CC38 CLC CC PREVENT INTERRUPT CLA LDB PRST STA PRST SIGNAL END OF PRESET COMMAND JMP B,I * * FX NOP LOW-LEVEL FORMAT JSB XSUB SET RETRY TO 0 STA TRACK JSB ENABP,I COMMAND ENABLED? JMP FX,I NO JSB FSUB FORMAT SUBROUTINE JMP FX,I * * FSUB NOP FORMAT SUBROUTINE LDA MSEC JSB DOSUB DMA OUTPUT SUB LDA TRACK ALF,RAL IOR FMT JSB OTDCP,I OUTPUT COMMAND AND DATA JMP FSUB,I * * DOSUB NOP DMA OUTPUT SUBROUTINE DL02 STC DMAL STA DMCNT STA IOCNT DL04 OTA DMAL DL06 CLC DMAL LDA DBD STA BFPTR DL08 OTA DMAL JMP DOSUB,I * * WX NOP LOW-LEVEL WRITE < JSB XSUB SET UP RETRY AND MASK SZA,RSS JMP WX0 LDB .2 PARTIAL SECTOR SSA JMP *+3 CLB NO PARTIAL SECTOR CMA,INA STB CTL0 JSB DOSUB SET UP DMA LDB SEC JSB WOKP,I PROTECTED SECTOR? JMP WX,I YES, REJECT COMMAND LDA IOCNT CMA,INA CLB JSB .DIV,I DIVIDE INTO SECTORS AND WORDS DEF SW7 SZB INA A=NO. OF SECTORS IOR WRT JSB OTDCP,I OUTPUT COMMAND AND DATA JMP WX,I * WX0 LDA WRT JSB COMND,I NOP JSB STTNP,I INPUT STATUS JMP WX,I * * RX NOP LOW-LEVEL READ JSB XSUB SET UP RETRY AND MASK SZA,RSS JMP RX0 LDB .2 PARTIAL SECTOR SSA JMP *+3 CLB NO PARTIAL SECTOR CMA,INA STB CTL0 JSB DISUB SET UP DMA LDA IOCNT CMA,INA CLB JSB .DIV,I DIVIDE INTO SECTORS AND WORDS DEF SW7 SZB INA A = NO. OF SECTORS IOR VFY JSB INDCP,I OUTPUT COMMAND & INPUT DATA JMP RX,I * RX0 JSB COMND,I NOP JSB STTNP,I INPUT STATUS JMP RX,I * * VX NOP LOW-LEVEL VERIFY STA RX LDA VRF STA VFY CHANGE READ COMMAND TO VERIFY LDA RX JSB RX LOW-LEVEL READ CLA STA VFY CHANGE BACK TO READ JMP VX,I * * XSUB NOP SET UP RETRY, MASK, & INTERRUPTS STA SAVEA CCA STA MASK STA PASS STB STEXP EXPECTED STATUS CLA STA PRST JSB DOSUB SET EXPECTED COUNT TO ZERO JSB TRAP,I FILL TRAP CELLS WITH HALTS LDA CMOD AND .177 CPA AI INTERRUPT MODE? STF INTP YES LDA SAVEA LDB STEXP JMP XSUB,I * * SX NOP LOW-LEVEL SEEK JS.B XSUB SET UP RETRY AND MASK CLB JSB .DIV,I DEF D100 JSB SKP,I STA LSEC JSB SSUB SEEK SUBROUTINE JMP SX,I * * SSUB NOP SEEK SUBROUTINE LDA CSEC STA SEC CLB JSB .DIV,I DEF SCTRS ALF,RAL POSITION TRACK IOR B IOR SEK ADD SECTOR AND SEEK PREFIX JSB COMND,I JSB STTNP,I STATUS RETURN ON ERROR ONLY JMP SSUB,I * * DX NOP LOW-LEVEL DUMP JSB XSUB SET UP RETRY AND MASK SZB,RSS LDB DMASK JSB DSUB DUMP SUBROUTINE JMP DX,I * * DSUB NOP DUMP SUBROUTINE STA STEXP STB MASK LDA M128 JSB DISUB DMA INPUT SUBROUTINE LDA DUMPS JSB INDCP,I OUTPUT COMMAND & INPUT DATA JMP DSUB,I * * DISUB NOP DMA INPUT SUBROUTINE DL22 STC DMAL STA DMCNT STA IOCNT DL24 OTA DMAL DL26 CLC DMAL LDA DBDI STA BFPTR IOR IN DL28 OTA DMAL JMP DISUB,I * * UX NOP UNDEFINED COMMAND CODE JSB XSUB SET UP RETRY AND MASK ALF,RAL IOR UNDF =140037B JSB COMND,I OUTPUT COMMAND NOP JSB STTNP,I INPUT STATUS JMP UX,I * HED ARITHMETIC ROUTINES * MPY NOP MULTIPLY (NON-EAU) LDB MPY,I ISZ MPY LDB B,I MULTIPLIER STB DIV LDB M15 STB UX COUNTER CLB CLE,SLA ADB DIV MPYLP ERB ERA,CLE,SLA SHIFT ADB DIV AND ADD IF BIT SET ISZ UX JMP MPYLP ERB ERA,CLE JMP MPY,I * * DIV NOP DIVIDE (NON-EAU) STB MPY CLEAR QUOTIENT LDB DIV,I ISZ DIV LDB B,I DIVISOR CMB,INB DIVLP ADA B SUBTRACT DIVISOR ISZ MPY INCREMENT QUOTIENT SSA,RSS DONE? JMP DIVLP NO$" CMB,INB ADB A ONE TOO MANY SUBTRACTIONS CCA ADA MPY JMP DIV,I * * PROG EQU * START OF USER PROGRAM AREA ORG 12100B * PGEND EQU *-1 END OF USER PROGRAM AREA * ZZZZZ EQU * START OF I/O BUFFER AREA END $ WZ 12740-18001 1926 S C0122 *HFADG FPP-SIS             H0101 %** ** THIS IS THE LOAD FILE FOR THE FPP-SIS-FFP DIAGNOSTIC. ** RTMLG IS USED TO GENERATE THE BINARY VERSION ** FROM THE SEPARATE RELOCATABLE MODULES. ** THE RELOCATABLES ARE GENERATED ** FROM THE SOURCES BY THE ASSEMBLER. ** SEVERAL POINTS SHOULD BE NOTED: ** ** 1) TCPR MUST BE RELOCATED AT 2000, SINCE IT MUST TALK TO ** THE CONFIGURATOR, AND RESTART AT 2000. ALSO, ** BASE PAGE LOCS 100+ ARE USED FOR CONFIG. LINKAGES. ** ** 2) BASE PAGE LOCS 200+ ARE USED FOR EASY ACCESS LINKS, ** AND THIS IS THE REASON FOR THE BPLOCC SET. ** ** 3) TSTBC IS LOAD POINT SENSITIVE, I.E. IT FUNCTIONS SOMEWHAT ** DIFFERENTLY DEPENDING ON WHERE IT IS LOADED. ** ** 4) HFBAS SHOULD BE ASSEMBLED WITH THE Z OPTION ** FOR SPEED AND LINK CONSERVATION. ** ** 5) FPPSW LOAD IS SET TO 22000 TO GET IT ALL ON 1 PAGE ** TO PREVENT LINKS (SPEED REASONS). ** ** 6) THERE ARE 10 RELOCATABLES TO BE LOADED. ** ** ** ** ** SOURCES ARE AS FOLLOWS: ** ** 1) *HFADG THIS FILE ** 2) &TCPR DIAG. CONTROL... ** 3) &HFBAS FPP TESTS... ** 4) &TSTBC BASIC CONTROL TESTS... ** 5) &HFAUX AUX. ROUTINES FOR TESTS, ERRORS... ** 6) &SISDG SIS TESTS... ** 7) &FPPSW S/W FP ROUTINES... ** 8) &FFPD1 FFP PART 1 TESTS... ** 9) &FFPD2 FFP PART 2 TESTS... ** 10) &FFPD3 FFP PART 3 TESTS... ** 11) &FWAA FWAA ENTRY POINT FOR TCPR... ** ** !HFADG IS THE ABSOLUTE DIAGNOSTIC... ** ** 'ADGLD (NOT INCLUDED) IS THE LOAD MAP PRODUCED BY RTMLG... ** ** ** LOAD ECHO ON 'ADGLD::78 MAP MODULES,GLOBALS,LINKS ON 'ADGLD::78 BOUNDS FWAM=2000,LWAM=77777,FWABP=100,LWABP=1677 BOUNDS FWAC=1700,LWAC=1777 LINKS IN BASE OUTPUT ON !HFADG::78 RELOCATE %TCPR::78 SET BPLOCC TO 200 RELOCATE %HFBAZ::78 RELOCATE %TSTBC::78 RELOCATE %HFAUX::78 RELOCATE %SISDG::78 SET LOCC TO 22000 RELOCATE %FPPSW::78 RELOCATE %FFPD1::78 RELOCATE %FFPD2::78 RELOCATE %FFPD3::78 RELOCATE %FWAA::78 DISPLAY UNDEFSb   END END END x   12740-18002 1926 S C0122 &TCPR FPP-SIS             H0101 -ASMB,L,C *&TCPR * HED RELOCATABLE DIAGNOSTIC CONTROL MODULE (TCP) NAM TCPR 790520 1905 REV 1926 CC * * EDITED 7901XX TO CHANGE STDA TO 77777 * TO USE NEW SWRT... CHECK FOR IC BIT15.... * EDITED 790108 TO MOVE TSTBC CALL.... AFTER 102074, B4 TST00 * TO PRINT REV IN PRIV. MODE * EDITED 790110 TO ADD IFBRK,DNPUX,PAUSE * TO SET TSTN,CFTT B4 TSTBC * EDITED 790118 TO DISABLE TST15 IN EXC IF NOT PRIV., PASS IN DEC. FMT * EDITED 790306 TO USE BIT 6 FOR OCTOPUS VERSION- NO HLT74... * EDITED 790502 TO CHG REV TO 1926 * EDITED 790520 TO ADD STDIC... * * LAST CODE CHANGE 790520 * * * * THIS DIAGNOSTIC TESTS THE F SERIES FLOATING POINT PROCESSOR, * SCIENTIFIC INSTRUCTION SET, AND FAST FORTRAN INSTRUCTIONS, * AS WELL AS APPROPRIATE SECTIONS OF THE F-SERIES BASE SET. * * IT IS BACKWARDS COMPATIBLE WITH INITIAL RELEASE FIRMWARE * AND THEREFORE REPLACES FPP-SIS DIAG. DSN 101021. * * NOTE: THIS DIAGNOSTIC USES SPECIAL DIAGNOSTIC INSTRUCTIONS * IN SOME OF ITS TESTS. THESE INSTRUCTIONS ARE * NOT INTENDED TO BE USED IN NORMAL PROGRAMMING, * AND ARE NOT SUPPORTED FOR SUCH APPLICATIONS. * * THE INSTRUCTIONS WHICH FALL INTO THIS CLASS ARE * AS FOLLOWS (IN OCTAL): * * 105003 5 WORD ADD * 105023 5 WORD SUB * 105043 5 WORD MPY * 105063 5 WORD DIV * 105103 5 WORD FIXS * 105107 5 WORD FIXD * 105123 5 WORD FLTS * 105127 5 WORD FLTD * * 105005 USED FOR EXPANDED EXPONENT TESTING * 105006 RESET FFP * 105007 PROCESS STACK OF OPERATIONS * * 105004 BASE SET PRE-TEST * 105200 FFP PRE-TEST * 105337 SIS PRE-TEST * * THE FUNCTION AND SPECIFICATIONS OF THESE INSTRUCTIONS * ARE SUBJECT TO CHANGE. CC * * * SKP EXT TSTBC EXT TST00,TST01,TST02,TST03,TST04,TST05,TST06,TST07 EXT TST08,TST0Z9,TST10,TST11,TST12,TST13,TST14,TST15 EXT PASST,PASSL,ICEN,PASSF EXT STDAM EXT STCSC,STFSC,CLCSC,INTSC EXT PASND,PASST,MSGD EXT FWAA EXT IS,IST,IC * * ENT FAIN BSS 1 FAST INPUT (PHOTO READER) ENT SLOP BSS 1 SLOW OUTPUT (LIST) ENT FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) ENT SLIN BSS 1 SLOW INPUT (KEYBOARD) ENT FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY ENT LWAM BSS 1 LAST WORD OF AVBL. MEMORY ENT OTMC BSS 1 1 MILL SEC TIME OUT COUNT ENT CPTO BSS 1 COMPUTER TYPE/OPTIONS ENT USSC BSS 1 USER CARD TYPE AND SELECT CODE ENT MEMO BSS 1 MEMORY SIZE AND TYPE ENT ISWR BSS 1 INTERNAL SWITCH REGISTER ENT TMRR BSS 1 1 MILL SEC TIMER ENT SWRC BSS 1 CONFIGURATOR SWITCH CK PTR ENT I2AS BSS 1 INTEGER TO ASCII CONVERSION ENT O2AS BSS 1 OCTAL TO ASCII CONVERSION ENT AS2N BSS 1 ASCII CONVERSION ENT DSN DIAGNOSTIC SERIAL NUMBER ENT FMTR BSS 1 FORMATTER * ENT CFIG DEF .CONF CONFIGURATION SECTION ENT MSGC DEF .MSGC MESSAGE WITH NO HALT ENT MSGH DEF .MSGH MESSAGE WITH HALT ENT ERMS DEF .ERMS ERROR MESSAGE ENT SWRT DEF .SWRT SWITCH REGISTER CHECK ROUTINE ENT TSTN OCT 0 CURRENT TEST NUMBER ENT EXRT DEF .EXRT RETURN TO CONTROL PROGRAM * ENT EOLC * ENT IFBRK,DNPUX,PAUSE * * * * SKP * SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND CONFIG. * B. LOAD DIAGNOSTIC PROGRAM. * C. LOAD ADDRESS 100B * D. LOAD SW REG WITH SELECT CODE * E. PRESS RUN WAIT FOR HALT 102074 * F. ENTER PROGRAM OPTION: (8-15) * IF SET =: * 15 = HALT AT END OF /EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES. * 10 = SUPPRESS NON-ERROR MESSAGES. * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = SHORT PASS * * 7 * = RESERVED * 0 * * * * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE - RETURN TO STEP C * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * 106070 - * 106076 CONFIG. HALTS SEE DIAG. CONFIG. MANUAL HED DEFINITION OF MNEMONICS OR ABBERVIATION * ** DEFINITION OF MNEMONICS OR ABBREVIATIONS ** * * * * * A, A-REG - A-REGISTER. * ACT - ACTUAL. * ADDR - ADDRESS. * B, B-REG - B-REGISTER. * CNT - COUNT. * CONFIG - CONFIGURE, CONFIGURATOR. * CONST - CONSTANT. * DEC - DECIMAL. * DGT - DIGIT. * E, E-REG - EXTEND REGISTER. * EXP - EXPECT, EXPECTED. * INCR - INCRMENT. * INSTR - INSTRUCTION. * INTP - INTERRUPT. * MEM - MEMORY. * NEG - NEGATIVE * NOS, NUM, NUMB - NUMBER. * O-REG, OVR, - OVERFLOW REGISTER. * P, P-REG - P-REGISTER. * PARAM - PARAMETER. * q POS - POSITIVE. * REG - REGISTER. * RTN - RETURN. * SC, SELECT CODE * SUBT - SUBTRACT * SYS, SYST - SYSTEM. * TP, TABLE POINTER. * WD, WDS- WORD, WORDS. * WDT, WATCH DOG TIMER. * := - REPLACED BY, I.E. A:=B, WHERE AS A IS REPLACED BY VALUE B. HED TEST DESCRIPTION * TEST SELECTION BY OPERATOR: * ********************************************************************** * A-REG SETTING * TEST TO BE * TEST NAME: * * IF SET: * SELECTED * * ********************************************************************** * * * * 0 * 0 * FIXS * * 1 * 1 * FIXD * * 2 * 2 * FLTS * * 3 * 3 * FLTD * * 4 * 4 * ADD * * 5 * 5 * SUB * * 6 * 6 * MPY * * 7 * 7 * DIV * * 8 * 8 * ACC * * 9 * 9 * SIS1 * * 10 * 10 * SIS2 * * 11 * 11 * SIS3 * * 12 * 12 * FFP1 * * 13 * 13 * FFP2 * * 14 * 14 * FFP3 * * 15 * 15 * MAN ENTRY * ********************************************************************** * * IF A-REG IS CLEAR THEN TST00-TST14 ARE RUN. HED LINKAGE TABLE A EQU 0 S A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE CH EQU 0 I-O CHANNEL SELECT CODE * * ORG 100B ORB * TCPR JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA+0 FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 101121 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF .CONF+0 CONFIGURATION SECTION MSGC DEF .MSGC+0 MESSAGE WITH NO HALT MSGH DEF .MSGH+0 MESSAGE WITH HALT ERMS DEF .ERMS+0 ERROR MESSAGE SWRT DEF .SWRT+0 SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF .EXRT+0 RETURN TO CONTROL PROGRAM NOP RESERVED * ORR * * HED DIAGNOSTIC CONTROL SECTION * * * STEX CLC INTP,C TURN I/O SYSTEM OFF CCA,CLE SET PASSF STA PASSF STA TSTN SET TSTN STA CFTT SET CFTT-- NO TSTXX MSG DURING BASIC TEST LDA DSN LDB HDMX JSB O2AS,I JSB MSGC,I OUT PUT IT DEF HDMS+0 JSB MSGD IF PRIV., PRINT REV DEF REVM+0 CLA CLEAR PASS  STA EOLC COUNT STA PASSL LDB SW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP USR IT'S USERS CHOICE * JSB TSTBC EXECUTE BASIC CONTROL TESTS LDB SW15 IF BIT 15 SET, HALT JSB SWRT,I CHECK SWREG JMP *+2 HALT FOR BASIC TESTS JMP NUSR NO HALT CCA A=177777 LDB STDAM B=DECONFIGURED TESTS HLT 76B WAIT FOR USER * * * * NUSR LDA STDAM GET STANDARD TEST RUN, MASKED BY STDAM CMA AND STDA LDB STDB * JMP EXC * USR LDA SINA RETRIEVE PREVIOUS RUN LDB SINB HLT 75B WAIT FOR USER INPUT * EXC STB UINB SAVE USER INPUTS STB SINB LDB IC IF NOT PRIV. MODE, DISABLE TST15 SLB,RSS AND STDA ONLY TST00-TST14 STA UINA STA SINA LDB SW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP USR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 STA CFTT CLA STA TSTA CLEAR TEST RUN FLAG SPC 2 * JSB PASST CHECK FOR SHORT LONG PASS * EXCL LDA UINA RESTORE A REG. LDB UINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA UINA SAVE POSITIONS STB UINB ISZ TSTN MOVE TEST UP ONE NOP XCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA .M1 IS IT END OF LIST JMP EOL YES LDB UINB SSB,RSS SHOULD IT BE RUN? JMP EXCL NO STA TSTA YES - SAVE TEST ADDRESS JSB ITCH INITIALIZE TRAP CELL HALTS JSB TSTA,I GO DO TEST .EXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB SW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB SW9 CHECK FOR ABORT JSB SW]RT,I JMP USR YES LDB SW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP XCL1 YES - LOOP JMP EXCL CONTINUE * EOL LDA TSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP NUSR NO SO PICK UP STANDARD RUN LDA EOLC UP DATE PASS COUNT INA SSA IF NEG, CLEAR IT (ONLY 32767 PASSES) CLA STA EOLC CCE LDB PSCA GET PASS COUNT ADB .2 ADDRESS JSB I2AS,I CONVERT IT, DECIMAL FMT * LDA PASSL INC LOGICAL PASS COUNT INA STA PASSL * JSB MSGC,I CALL PRINT ROUTINE PSCA DEF PSC+0 LDB SW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+4 YES LDA EOLC LDB PASSL LOGICAL PASS COUNT HLT 77B NO WAIT AND DISPLAY PASS COUNT * JSB PASND CHECK FOR PASSL ADJ. * LDA SINA RESTORE ORIGINAL LDB SINB PROGRAM JMP EXC DO IT ALL AGAIN SKP * MESSAGE OUTPUT WITH OUT HALT * .MSGC NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP .MSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * .MSGH NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA HLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA SAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP .MSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * .ERMS NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB SW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA SAVA RESTORE A & B LDB SAVB HLT NOP WAIT FOR OPERATOR JMP .ERMS,I RETURN TO CALLER SKP * OUTPUT MESSAGE * MSG NOP D STA SAVA SAVE A AND B REGISTERS STB SAVB LDB MSG,I GET SWITCH REGISTER BIT LDA MSG ADA .-2 DECREMENT RETURN ADDRESS STA MSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP MSG0 YES LDA MSG,I CHECK IF ERROR LDA A,I ELA,CLE,ERA LDA A,I IF SO ALF,ALF AND .177 CPA A.E JSB CFTN CHECK TO OUTPUT TEST NUMBER LDA MSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS ELB,CLE,ERB CLA,CLE JSB FMTR,I MSG0 LDA MSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING ELB,CLE,ERB CCA,CCE JSB AS2N,I STA N2AO SAVE RESULT AND .300 DECODE LDB H2 HALT CODE CPA .100 LDB H6 CPA .200 LDB H3 CPA .300 LDB H7 LDA N2AO GET HALT NUMBER AND .77 IOR B STA HLT SAVE IT MSG1 LDA MSG,I LDA A,I SSA,RSS JMP MSG2 ISZ MSG,I LDB MSG ADB .2 LDB B,I JSB SWRT,I JMP MSG1 LDA MSG,I LDB A,I ELB,CLE,ERB CLA,CLE JSB FMTR,I JMP MSG1 MSG2 ISZ MSG,I ADJUST RETURN POINTERS ISZ MSG ISZ MSG ISZ MSG LDA SAVA RESTORE A AND B REGISTERS LDB SAVB JMP MSG,I SKP CFTN NOP LDA TSTN GET TEST NUMBER CPA CFTT IS IT THE SAME ONE? JMP CFTN,I YES SKIP OUTPUT STA CFTT NO - THEN UPDATE IT CLE LDB PCB JSB I2AS,I LDB PCBX STB .TSTN CLA JSB SLOP,I CLA,CLE LDB TSTF JSB FMTR,I JMP CFTN,I SPC 2 * IOAD NOP N2AO NOP STA IOAD SAVE NUMBER AND .7 CONVERT FIRST IOR .60 NUMBER STA B SAVE IT LDA IOAD GET RAR,RAR SECOND RAR  NUMBER AND .7 CONVERT IOR .60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP N2AO,I AND RETURN * * SWITCH REGISTER CHECK * .SWRT NOP STA N2AO SAVE A REGISTER * LDA IC CHECK FOR CW PRIV. MODE & BIT15 SET SSA,SLA JMP SWRT1 IF SO, SWR=IC LIA SW ELSE SWR=IS STA IS JMP SWRT2 * SWRT1 LIA SW SWR=IC STA IC SSA DID USER JUST RESET BIT15? JMP SWRT2 NO LDA IS YES... SET IS BIT7 IOR .200 STA IS OTA SW PUT SREG BACK * SWRT2 LDA IS GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ .SWRT NO LDA N2AO RESTORE A REGISTER LDB IS LET B = SWITCH REGISTER JMP .SWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ITCH NOP LDA TSH GET STARTING TRAP CELL HALT LDB .2 GET FIRST TRAP CELL LOCATION TSHL STA B,I PUT IT IN PLACE CPB .77 AM I FINISHED JMP ITCH,I YES INB NEXT ADDRESS JMP TSHL * TSH OCT 106077 * * PUT JSB INSTRUCTION IN TRAP CELL * TCJI NOP LDB JSBI GET INSTRUCTION STB IOSC,I PUT IT IN TRAP CELL LDA TCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ TCJI ADJUST RETURN JMP TCJI,I RETURN TO CALLER * JSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ISC NOP STA IOSC SAVE SELECT CODE IOL LDA B,I GET ADDRESS OF LOCATION CPA .M1 IS IT THE TERMINATOR JMP ISC,I YES RETURN TO CALLER STA SAVA SAVE ADDR LDA A,I GET INSTR AND IOM MASK OFF OLD SELECT CODE IOR IOSC ADD IN NEW SELECT CODE STA SAVA,I R5ESTORE IT INB MOVE TO NEXT ADDRESS JMP IOL DO IT * * CONFIGURATION SECTION * * NOTE: THIS SECTION HAS BEEN MODIFIED FOR USE OF A CONTROL WORD * AND TO ALSO EXECUTE A BASIC TEST BEFORE THE STANDARD ONES. * .CONF JSB CONF CONFIG I-O CHANNEL JMP STEX RETURN TO DIAG CONTROL CONF NOP CLC INTP,C TURN I/O SYSTEM OFF CON1 LIA SW GET CONFIGURATION OPTIONS STA USSC SAVE THEM AND .77 CHECK FOR VALID SELECT CODE SZA,RSS IF=0, OK (NONE) JMP CONFA LDB A IF NOT, CHECK FOR > 7 CMB,INB ADB .7 SSB IF SC>7, GO ON JMP CONFA HLT 73B ELSE HALT FOR USER TO TRY AGAIN JMP CON1 CONFA LDB IOID GET BUFFER OF POINTERS TO IO INSTRS JSB ISC CONFIGURE INSTRS LDA USSC GET CONF. OPTS AGAIN ALF,ALF GET BIT 7 ELA,ELA BIT0=SW7, E=SW6 IOR STDIC SET BIT0 IF STDIC BIT0 SET AND .+1 STA ICEN SET PRIV. MODE FLAG IF SET CLA CLEAR STD TEST MASK WORD STA STDAM LDA STDIC SET CONF WORD WITH STDIC STA IC CLA,SEZ IF E SET (SWR6) THEN A=CONF. OPT. WORD, ELSE=0 LDA USSC OTA SW CLEAR OR SET SW SEZ,RSS IF E SET (SWR6) THEN NO HALT 74 HLT 74B ALLOW USER TO CHANGE SR OPTIONS JMP CONF,I GO TO EXEC CONTROL SECTION * * HED AUXILARY ROUTINES * * * *S * STAND ALONE VERSION OF IFBRK-- CHECK FOR CNF. REQUEST * * ENTRY: JSB IFBRK * DEF *+1 * * ON EXIT, A=0 FOR NO, A=1 FOR CNF. REQUEST (SW BIT 7 SET) * IFBRK NOP CLA LDB .200 FLAG WORD JSB SWRT,I CHECK SWR INA IF SET, A=1 LDB ICEN GET PRIV. FLAG SZB,RSS IF NOT PRIV. A=0 CLA LDB IFBRK,I GET RTN POINTER JMP B,I * * * * *S * STAND ALONE INPUT #ROUTINE DNPUX * *GET PARMS FROM REGS FOR CONF. * * ENTRY: JSB DNPUX * DEF *+1 * DNPUX NOP LIA SW SAVE SWREG STA DNPSR LDA IS PUT IS IN SWREG OTA SW LDA IC GET CONF WORD LDB PASSL LOCAL PASS# INB INC FOR USER LDX IST X=IST HLT 67B WAIT FOR HIM STA IC PUT BACK NEW CONF. WORD ADB .-1 DEC. PASS# STB PASSL STX IST SAVE NEW IST LIA SW NEW SREG STA IS LDA DNPSR SAVED VALUE LDA DNPUX,I GET RTN POINTER JMP A,I * DNPSR BSS 1 * * * * *S * STAND ALONE PAUSE ROUTINE-- HALTS FOR OPERATOR * CALLING SEQ: JSB PAUSE * DEF *+2 * DEF HALT INSTR TO EXECUTE * PAUSE NOP STA PAUSA SAVE AREG ISZ PAUSE POINT TO INSTR LDA PAUSE,I LDA A,I STA PAUS1 PUT INSTR IN PLACE LDA PAUSA GET AREG ISZ PAUSE POINT TO RTN PAUS1 NOP HALT INSTR JMP PAUSE,I DONE * PAUSA BSS 1 * * * * * HED MESSAGES HDMS OCT 6412 ASC 11,FPP-SIS-FFP DIAGNOSTIC HDM1 ASC 07, DSN XXXXXX// REVM ASC 06, REV 1926// * * * HED DIAGNOSTIC TABLES, ETC. * STDA OCT 77777 STDB OCT 0 STDIC OCT 0 DEFAULT CONF. WORD HDMX DEF HDM1+3 * TSTP DEF *+1 TABLE OF TEST NUMBERS DEF TST00+0 FIXS TEST DEF TST01+0 FIXD TEST DEF TST02+0 FLTS TEST DEF TST03+0 FLTD TEST DEF TST04+0 ADD TEST DEF TST05+0 SUB TEST DEF TST06+0 MPY TEST DEF TST07+0 DIV TEST DEF TST08+0 ACC. TEST DEF TST09+0 SIS1 TEST DEF TST10+0 SIS2 TEST DEF TST11+0 SIS3 TEST DEF TST12+0 FFP1 TEST DEF TST13+0 FFP2 TEST DEF TST14+0 FFP3 TEST DEF TST15+0 MAN ENTRY TEST .M1 DEC -1 * IOID DEF *+1 TABLE OF I-O CHANNEL CONB+HFBFIGURATION DEF STCSC+0 DEF STFSC+0 DEF CLCSC+0 DEF INTSC+0 DEC -1 * IOSC NOP HED DIAGNOSTIC CONSTANTS & STORAGE LOCATIONS * SAVA NOP SAVB NOP EOLC NOP TSTA NOP SINA NOP SINB NOP UINA NOP UINB NOP BTMP NOP DEC -10,-9,-8,-7,-6,-5,-4,-3,-2,-1 . OCT 0 DEC 1,2,3,4,5,6,7,8,9,10 .2 OCT 2 .7 OCT 7 .10 OCT 10 .60 OCT 60 .77 OCT 77 .177 OCT 177 D100 DEC -100 IOM OCT 177700 SW15 OCT 100000 SW14 OCT 40000 SW13 OCT 20000 SW12 OCT 10000 S812 OCT 010400 SW9 OCT 1000 .100 OCT 100 .200 OCT 200 .300 OCT 300 H2 OCT 102000 H6 OCT 106000 H3 OCT 103000 H7 OCT 107000 CFTT DEC -1 TSTF DEF *+1 ASC 3,TEST .TSTN ASC 2,XX// PSC ASC 6,PASS XXXXXX/ A.E OCT 105 PCB DEF *+1 STORE DECIMAL TEST OCT 0 NUMBER IN OCT 0 STRING PCBX ASC 1,XX * END TCPR * * 2H  12740-18003 1913 S C0122 &HFBAS FPP-SIS             H0101 ASMB,L,C,Z *&HFBAS * * NOTE: THIS MODULE MUST BE ASSEMBLED WITHOUT THE Z OPTION FOR SYSTEM USE * * * TO FIX BUG IN GETOP, FIX TEST * EDITED 780914 TO MODIFY TSTSI FOR NEW TN FMT, LOOP BUG (SIBFP) * TO TEST FOR POS15 IN ACCOP * EDITED 781209 TO ADD DIPLAY ALL, PORT MODE OPTS * TO SET WRDS TO WDOUT IN SWSTR * TO USE FIXFG,FLTFG, NOT SKNF1 * EDITED 790117 TO CHECK FOR PRIV. MODE IN TSTMN * * LAST CODE CHANGE 790117 1145 CC * NAM HFBAS 790121 2345 REV 1913 CC * * THIS MODULE CONTAINS THE BULK OF THE HFP TESTS, TST00-TST09, AND TST15. * MOST OF THE TIME IN THE DIAGNOSTIC IS SPENT HERE AND * IN FPPSW, WHERE THE SOFTWARE ANSWERS ARE COMPUTED. * HFAUX CONTAINS AUXILARY ROUTINES FOR ERRORS, INITIALIZATION, ETC. * * THE ONLY ROUTINES ENTERED FROM EXERNALS ARE THE TESTS THEMSELVES. * HFAUX REFERENCES LOCATIONS IN SOME ROUTINES FOR SETTING LOOPS, ETC.. * ALSO, MOST GLOBAL VARIABLES ARE DECLARED HERE (ONES REFERENCED * BY MORE THAN ONE MODULE). MANY OF THE VARIABLES AND CONSTANTS * ARE CONDITIONALLY PUT ON THE BASE PAGE FOR SPEED (Z COMPL). * THE N OPTION IS NOT USED EXCEPT FOR DEBUGGING. * SKP * * GLOBAL DEFINITIONS * * * * ENT ACLPS,ACOD1,ACOD2 ENT ACOD3,ACOD4,ACOD5,ACOD6,ACOD7 ENT ACOD8,ACOP1,ACOP2,ACOP3,ACOP4 ENT ACOP5,ACOP6,ACOP7,ACOP8,ACOPI ENT ACOPZ,ANS13,ANS1O,ANS23 ENT ANS2O,ANSO,ANSW,ANSW1,ANSW2 ENT ANSWZ,AOVFL,ARSLT,ARST0,ARST1 ENT ARST2,ARST3,ARSTE ENT BIT0,DBIT0,ECODE ENT EOVFL,ERCNT,ERSLT,ERST0,ERST1 ENT ERST2,ERST3,ERSTE,EVNOD ENT FIXFG,FLTFG ENT HIWRD,HWCNT ENT IC,ICEN,INBUF ENT INBUZ,INDCT,INSTR ENT IS,IST,LOWRD ENT LPCNT,NOPND,NRSLT ENT ODAD1,ODAD2 ENT OEILP,OND13,OND23,ONDUP ENT OPND1,OPND2,OPNDN ENT OPNNL,OPSEL,OTINS,OTN13,OTN23 ENT OTND1,OTND2,OWRDS,PASSF ENT PASSL ENT RSLT1,RSLT2 ENT RSLT3,RSLTZ,RST13,RST1O ENT RST23,RST2O,RST33,RST3O ENT STDAM ENT STKP ENT STSTN,TECNT ENT TRYN,TSTLP ENT WDFLG,WDIN,WDIN2,WDOU2,WDOUT ENT WRDS * SKP * * *S * * IFZ IF ABS VERSION, PUT ON BASE PAGE ORB XIF * * IC OCT 0 CONFIGURATION WORD IS OCT 0 SWITCH REG. OPTS WORD IST OCT 0 SUBTEST WORD STDAM OCT 0 STD TEST MASK WORD PASSL OCT 0 LOGICAL PASS COUNT PASSF OCT 0 PASS FLAG- SHORT/LONG ERCNT OCT 0 NUMBER OF ERRORS TOTAL LOWRD OCT 1 LOW #WORDS-1 FOR ASMDXTC HIWRD OCT 5 HIGH #WORDS FOR ASMDXTC HWCNT OCT 0 PSEUDO OPN COUNT ASMDXTC OCT 0 OCT 0 OPNNL OCT 0 LOGICAL OPN# ASMDXT OPNDN OCT 0 OPND IDENTIFIER OCT 0 FREE OCT 0 FREE * * ERROR INFO **** * * OTINS BSS 1 OTN13 BSS 5 OTN23 BSS 5 ERST3 BSS 1 ERST2 BSS 1 ERST1 BSS 1 ERST0 BSS 1 ERSTE BSS 1 EOVFL BSS 1 ARST3 BSS 1 ARST2 BSS 1 ARST1 BSS 1 ARST0 BSS 1 ARSTE BSS 1 AOVFL BSS 1 * * * * * * * DBIT0 DEF BIT0 OCT 0 FOR BASIC TEST-- TSTN=-1 BIT0 OCT 1 OCT 2 OCT 4 OCT 10 OCT 20 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 OCT 2000 OCT 4000 OCT 10000 OCT 20000 OCT 40000 OCT 100000 * * * * WDFLG OCT 17 4 BITS FOR 2,3,4,5 WORD OPERATIONS * ICEN BSS 1 FLAG SET IF IC BIT 0 HAS BEEN SET * * * * * VARIABLES * * OWRDS BSS 1 #WORDS OPNDS TRUNCATED TO WRDS BSS 1 #WORDS OF INSTRUCTION EXECUTED WDIN BSS 1 WDIN2 BSS 1 WDOUT BSS 1 WDOU2 BSS 1 LPCNT BSS 1 USED AS COUNT OF SUB LOOPS IN ASMDXT TSTLP BSS 1 PARM FOR TEST LOOPS, IE FIX,FLT,SIS OEILP BSS 1 PARM FOR SETTING OVFL,EXT,INDS IN TESTS * BIT0=OVFL, BIT1=EXT, BIT2 2,3=INDS INDCT BSS 1 NUMBER OF IND LEVELS USED IN SOME TESTS (TSTDI) * NOPND BSS 1 #OPNDS FOR MACRO NRSLT BSS 1 #RSLTS FOR MACRO * * * * * * * OPND1 DEF OND13 OPND2 DEF OND23 OND13 BSS 5 OND23 BSS 5 BSS 20 EXTRA BUFFER SPACE * ANSW DEF *+1 BSS 5 ANSO BSS 1 ANSWZ DEF ANSW1 ANSW1 DEF ANS13 ANSW2 DEF ANS23 ANS13 BSS 5 ANS1O BSS 1 ANS23 BSS 5 ANS2O BSS 1 * RSLTZ DEF RSLT1 RSLT1 DEF RST13 HFP RESULTS RSLT2 DEF RST23 RSLT3 DEF RST33 RST13 BSS 5 RST1O BSS 1 RST23 BSS 5 RST2O BSS 1 RST33 BSS 5 RST3O BSS 1 * * OTND1 DEF OTN13 OTND2 DEF OTN23 ERSLT DEF ERST3 ARSLT DEF ARST3 * ODAD1 BSS 1 ADDR OF 1ST OPND, WRDLP... ODAD2 BSS 1 ADDR OF 2ND OPND, WRDLP... * * * TRYN BSS 1 # OF HFP OPN-- 0=DIR.,1=IND.,2=BIT 7 ECODE DEC -1 OCTAL ERROR CODE (6 BITS) ACLPS BSS 1 #LOOPS IN ACC OPNS TECNT BSS 1 COUNT OF ERRORS IN TEST * * ONDUP DEC 5 OPND INCREMENT INSTR BSS 1 * * * EVNOD BSS 1 USED FOR WHICH OP FROM GETOP * FIXFG BSS 1 FLAG FOR FIX TYPE OPN FLTFG BSS 1 FLAG FOR FLT TYPE OPN * STSTN BSS 1 SUBTEST IN TEST * * * * * * * * * * * * * * INBUZ DEF *+1 INPUT BUFFER INBUF BSS 4 * * * ACC. TEST DATA & POINTERS * * OPSEL BSS 1 STKP BSS 1 * ACOPI BSS 1 INDEX POINTER ACOPZ DEF ACOP1 BASE ADDR ACOP1 DEF ACOD1 ACOP2 DEF ACOD2 ACOP3 DEF ACOD3 ACOP4 DEF ACOD4 ACOP5 DEF ACOD5 ACOP6 DEF ACOD6 ACOP7 DEF ACOD7 ACOP8 DEF ACOD8 * ACOD1 BSS 5 ACOD2 BSS 5 ACOD3 BSS 5 ACOD4 BSS 5 ACOD5 BSS 5 ACOD6 BSS 5 ACOD7 BSS 5 ACOD8 BSS 5 * * * IFZ IF ABS VERSION, RESTORE TO CURR. PAGE ORR XIF * SKP * A EQU 0 B EQU 1 * * SKP ENT A.D21,A.D22,A.D23,A.D31,A.D32 ENT A.D33,ACBT7,ACCCP,ACELP WENT CLANS,CLRST,CPAN1 ENT CPAN2,CPAN3 ENT FIX21,FIX22 ENT FIX23,FIX31,FIX32,FIX33 ENT FLT21,FLT22,FLT23,FLT31,FLT32 ENT FLT33 ENT STDCP,STELP,SWBF1 ENT TST00,TST01,TST02 ENT TST03,TST04,TST05,TST06,TST07 ENT TST08,TST15 * IFN EXT $LIBR,$LIBX XIF * EXT ACBLD EXT ACPRT,ADDOP,ASCNV,COM5,CWCHK EXT DISPB,DIVOP,DNPUX,EXPCK,FIXOP EXT FLTOP,MPYOP,MSGC,MSGD EXT MSGI,MSGIN,OPDIN,PAK5,PORTB EXT RANF,RND5,SKNCW,STINI EXT STSTE,SUBOP,TINIT,TRNC5,TSTN EXT UNPK5,WRANS SUP * SKP * MIC INSTRUCTIONS * MIC ADD,105000B,0 MIC SBB,105020B,0 MIC MPB,105040B,0 MIC DVB,105060B,0 MIC FXS,105100B,0 MIC XDB,105104B,0 MIC TSB,105120B,0 MIC TDB,105124B,0 * MIC XPD,105005B,0 MIC STK,105007B,0 MIC RST,105006B,0 * * * * * * * SKP *S * IFZ IF ABS, ON BASE PAGE ORB XIF * * CONSTANTS * NEG1 DEC -1 NEG2 DEC -2 NEG5 DEC -5 NEG15 DEC -15 NG513 DEC -513 POS0 DEC 0 POS1 DEC 1 POS2 DEC 2 POS3 DEC 3 POS4 DEC 4 POS5 DEC 5 POS6 DEC 6 POS7 DEC 7 POS8 DEC 8 POS10 DEC 10 POS12 DEC 12 POS15 DEC 15 POS64 DEC 64 PS128 DEC 128 PS256 DEC 256 PS512 DEC 512 * UPBYT OCT 177400 * ZERO DEF BUF0 BUF0 OCT 0,0,0,0,0,0,0,0 * * * * * * VARIABLES * ACBFP BSS 1 BUFP BSS 1 EXPNT BSS 1 FCTNT BSS 1 TEMP FOR USE IN ACCOP, ETC INTWD BSS 1 ODFLG BSS 1 ODSEL BSS 1 OPADR BSS 1 OPBAS ADD OPCOD BSS 1 TPSEL BSS 1 * * * * * * * SUBROUTINE DEFS DEFSW DEF *+1,I ZDDOP DEF ADDOP+0 ZUBOP DEF SUBOP+0 ZPYOP DEF MPYOP+0 ZIVOP DEF DIVOP+0 * * IFZ RETURN TO CURR. PAGE ORR XIF * * * * * * * * * * * PTNST BSS 1 PATTERN START ADDRESS BASE PTNAD DEF PTN00 PTNSB DEF PTN04 EPTNMD DEF PTN08 PTNFT DEF PTN08 PTN00 DEF PON13 DEF PON23 DEF PON23 DEF PON13 * DEF NON13 DEF NON23 DEF NON23 DEF NON13 * DEF PON13 DEF NON23 DEF NON23 DEF PON13 * DEF NON13 DEF PON23 DEF PON23 DEF NON13 * PTN04 DEF PON13 DEF PON23 DEF NON23 DEF NON13 * DEF NON13 DEF NON23 DEF PON23 DEF PON13 * DEF PON13 DEF NON23 DEF PON23 DEF NON13 * DEF NON13 DEF PON23 DEF NON23 DEF PON13 * * PTN08 DEF PON13 DEF PON23 DEF NON13 DEF NON23 * DEF PON23 DEF PON13 DEF NON23 DEF NON13 * DEF PON13 DEF NON23 DEF NON13 DEF PON23 * DEF PON23 DEF NON13 DEF NON23 DEF PON13 * PTN12 DEF PON13 DEF PON23 DEF PON13 DEF PON23 * * * * POND1 DEF PON13 POND2 DEF PON23 NOND1 DEF NON13 NOND2 DEF NON23 PON13 BSS 5 PON23 BSS 5 NON13 BSS 5 NON23 BSS 5 * * * * * * BFBGM EQU * OCT 77777,100000,77777,100000,0 OCT 77600,77600,77600,77600,0 OCT 74170,74170,74170,74170,0 OCT 63146,64146,63146,63146,0 OCT 70707,16161,43434,70707,0 OCT 76037,03701,170174,17476,0 OCT 44444,111111,22222,44444,0 OCT 52525,52525,52525,52525,0 OCT 42104,42104,42104,42104,0 OCT 73567,73567,73567,73567,0 OCT 66666,155555,133333,66666,0 OCT 77401,175007,170037,140177,0 OCT 61430,143061,106143,14306,0 OCT 60606,14141,103030,60606,0 OCT 74747,117171,163636,74747,0 BFBGR EQU * BFBGE EQU * OCT 76340,140403,176170,35700,0 OCT 41437,37701,161603,57200,0 BFNDE EQU * OCT 40000,377,177777,177777,0 OCT 100000,377,177777,177777,0 BFNDR EQU * OCT 41020,102041,4102,10204,0 OCT 75736,173675,167573,157367,0 OCT 0,0,0,0,0 OCT 77777,177777,177777,177777,0 OCT 137777,177777,177777,177777,0 OCT 40100,40100,40100,40100,0 OCT 77577,77577,77577,77577,0 * OCT 70160,70160,70160,70160,0 OCT 76174,76174,76174,76174,0 * OCT 52525,63146,70707,40404,0 OCT 40001,40001,40001,40001,0 BFNDM EQU * * BFBGO OCT 40000,377,177777,177777,177 1/2 * 2**127 OCT 40000,377,177777,177777,176 OCT 40000,7,77,777,177600 3 OCT 40000,377,177777,177777,177601 OCT 100000,5,25,525,177 5/8 * 2**14 OCT 100000,377,177777,177777,176 OCT 100000,13,57,731,177600 OCT 100000,377,177777,177777,177601 OCT 77777,177777,177777,177777,177 OCT 77777,177777,177777,177777,176 OCT 137777,177777,177777,177777,177 OCT 137777,177777,177777,177777,176 OCT 77777,177777,177777,177777,177600 OCT 77777,177777,177777,177777,177601 OCT 137777,177777,177777,177777,177600 OCT 137777,177777,177777,177777,177601 * OCT 40000,123,357,246,0 OCT 40000,377,177777,177777,1 OCT 77777,177777,177777,177777,0 OCT 100000,351,715,34726,0 OCT 137777,177777,177777,177777,0 OCT 137777,177777,177777,177777,1 * OCT 40000,370,37037,3073,177000 1/2 OCT 40000,54,3627,77035,777 OCT 100000,377,7760,170000,777 OCT 100000,53,7751,2357,177000 OCT 77777,177777,177777,177777,777 OCT 137777,177777,177777,177777,777 OCT 137777,177777,177777,177777,177000 BFNDO OCT 77777,177777,177777,177777,177000 * * * * BUF1A OCT 105000 N WORD FPOPN DEC 2 DEF ACOD1+0 DEC 2 DEF ACOD2+0 OCT 0 DEC 0 DEF 0 * BUF1B OCT 105110 FIXS,ACC DEC 0 DEF 0 DEC 0 DEF 0 OCT 0 DEC 0 DEF 0 * BUF1C OCT 105130 EFLTS,ACC DEC 0 DEF 0 DEC 0 DEF 0 OCT 0 DEC 2 DEF RST13+0 * BUF1D OCT 105010 FPOPN, ACC1 DEC 0 DEF 0 DEC 2 DEF ACOD3+0 OCT 0 DEC 0 DEF 0 * BUF1E OCT 105004 FPOPN, ACC2 DEC 2 DEF ACOD4+0 DEC 0 DEF 0 OCT 0 DEC 2 DEF RST13+0 * BUF1F OCT 105014 FPOPN, ACC,ACC DEC 0 DEF 0 DEC 0 DEF 0 OCT 0 DEC 2 DEF RST13+0 * BUF2B OCT 105114 FIXD,ACC DEC 0 DEF 0 DEC 0 DEF 0 OCT 0 DEC 0 DEF 0 * BUF2C OCT 105134 FLTD,ACC DEC 0 DEF 0 DEC 0 DEF 0 OCT 0 DEC 0 DEF 0 * BUF3B OCT 105100 FIXS DEC 2 DEF ACOD3+0 DEC 0 DEF 0 OCT 0 DEC 1 DEF ACOD5+0 * BUF4B OCT 105104 FIXD DEC 2 DEF ACOD3+0 DEC 0 DEF 0 OCT 0 DEC 2 DEF ACOD5+0 * BUF5C OCT 105120 FLTS DEC 1 DEF ACOD5+0 OCT 0,0,0,0,0 * BUF6C OCT 105124 FLTD DEC 2 DEF ACOD5+0 OCT 0,0,0,0,0 * * * BACB1 OCT 105000 2 WORD ADD 0+0 DEC 2 DEF BUF0+0 DEC 2 DEF BUF0+0 OCT 0 DEC 2 DEF RST13+0 * * BACH1 OCT 105000 HANG THE BOX-- NO OPNDS OCT 0,0,0,0,0,0,0 * BACH2 OCT 105021 HANG-- SEND 1 OPND DEC 3 DEF ACOD1+0 OCT 0,0,0,0,0 * BACH3 OCT 105062 HANG IT, 6 OUT OF 8 WORDS DEC 4 DEF ACOD1+0 DEC 2 DEF ACOD1+0 OCT 0,0,0 * * * * * * * * * * MSGE ASC 3, EXP / MSGR ASC 3, RND / MSGO ASC 3, OVF / MSGM ASC 3, MIX / * * * * * * * * SKP * * ADD TEST ROUTINE * TST04 EQU * * * ROUTINE TO TEST HFP ADD OPERATIONS * *STSTAD TSTAD NOP JSB TINIT SET PAwRMS, ETC. FOR TEST, CALL CWCNF LDA ADDBS GET BASE OPCODE STA OPCOD LDA ZDDOP SET UP SW ROUTINE ADDR STA OPADR LDA PTNAD SET UP PATTERN START POINT STA PTNST * JSB MSGI "ADD" DEF MSGAD * JSB TSTAS GO TO COMMON ADD,SUB TEST SECTION JMP TSTAD,I RETURN * *LTSTAD MSGAD ASC 6,ADD TEST / ADDBS ADD ADD BASE *ETSTAD * * *STSTSB TST05 EQU * TSTSB NOP ROUTINE TO TEST SUBTRACT OPERATIONS JSB TINIT INIT PARMS, CALL CWCNF LDA SUBBS GET OPCODE BASE STA OPCOD LDA ZUBOP SET UP SW ROUTINE ADDRESS STA OPADR LDA PTNSB SET UP PATTERN START POINT STA PTNST * JSB MSGI "SUB" DEF MSGSB * JSB TSTAS GO TO COMMON TEST ROUTINE FOR ADD, SUB JMP TSTSB,I * *LTSTSB * MSGSB ASC 6,SUB TEST / SUBBS SBB SUB BASE * *ETSTSB * * *S TSTAS NOP ADD,SUB TEST ROUTINE * * JSB STSTE ELSE EXECUTE SUBTESTS, BASED ON IST OCT 10 SHORT PASS TESTS DEF TSTEA,I DEF TSTRA,I DEF TSTOA,I DEF TSTMA JMP TSTAS,I THATS ALL *E * * * TEST EXPONENTS-- ADD 2 NUMBERS WITH SAME EXP, EXP: -512,511 * *S TSTEA NOP JSB MSGD DEF MSGE LDA POS1 JSB STINI+0 LDA POS2 ONLY OPNDS TRUNC TO 2 WORDS STA OWRDS+0 LDA NG513 LOW EXP-1 STA EXPNT ODEAR CLA,CLE RESET GETOP JSB GETOP DEF BFBGE DEF BFNDE ODEAL CLA,INA GET OPND JSB GETOP JMP ODEAR IF OUT OF OPNDS, START OVER LDA EXPNT SET EXPS INA STA EXPNT CPA PS512 OUT OF RANGE, DONE JMP TSTEA,I NEXT TEST STA OND13+4 PT EXPS IN PLACE STA OND23+4 JSB WIEXA TEST THE HW JMP ODEAL BACK FOR ANOTHER *E * * * TEST FOR CORRECT ROUNDING-- EXP DIFFERENCE FROM 1 JoTO 64 * *STSTRA TSTRA NOP JSB MSGD DEF MSGR LDA POS2 JSB STINI+0 INIT SUB FUNCTION LDA POS2 SET OWRDS STA OWRDS+0 LDA NEG32 SET BASE EXP. STA EXPNT ODRAR CLA,CLE JSB GETOP RESET GETOP DEF BFBGR DEF BFNDR ODRAL CLA,INA GET OPNDS JSB GETOP JMP ODRAR START OVER WITH OPNDS LDA EXPNT NEW BASE CPA PS480 IF OUT OF RANGE, NEXT TEST JMP TSTRA,I NEXT TEST ADA POS64 STA EXPNT LDA NEG64 RESET EXP OFFSET STA EXPOF XORAL LDA EXPOF SET EPXS ARS ADA EXPNT STA OND13+4 LDA EXPOF CMA,INA ADA OND13+4 STA OND23+4 JSB WIEXA TEST HW LDA OND13+4 NOW WITH COMPLEMENTED EXPS CMA STA OND13+4 LDA OND23+4 CMA STA OND23+4 JSB WIEXA TEST ISZ EXPOF NEXT OFFSET JMP XORAL JMP ODRAL IF=0, GET NEXT OPNDS, EXP BASE * *LTSTRA * NEG64 DEC -64 NEG32 DEC -32 PS480 DEC 480 EXPOF BSS 1 * *ETSTRA * * * TEST OVERFLOW RANGES, ADD/SUB * *S TSTOA NOP JSB MSGD DEF MSGO LDA POS3 JSB STINI+0 LDA POS2 STA OWRDS+0 CLA,CLE RESET GETOP JSB GETOP DEF BFBGO DEF BFNDO ODOAL CLA,INA GET NEXT OPND PAIR JSB GETOP JMP TSTOA,I NEXT TEST JSB WIEXA TEST HW JMP ODOAL *E * * * * *S TSTMA NOP JSB MSGD DEF MSGM LDA POS4 JSB STINI+0 LDA POS1 #STARTING # OF OPND WORDS-1, FOR TRUNC. STA OWRDS+0 * BWMAL LDA OWRDS+0 TEST #WORDS IN OPNDS CPA POS5 IF=MAX, DONE LOOPING JMP TSTMA,I DONE WITH TEST INA STA OWRDS+0 #WORDS OPERANDS TRUNCATED TO STA WRDS+0 #WORDS FOR OPERATION ISZ LPCNT+0 CLA,CCE CLEAR OPND BUFFER POINTERS,INDEX MODE  JSB GETOP DEF BFBGM DEF BFNDM ODMAL CLA,INA GET NEXT BASE OPNDS JSB GETOP JMP BWMAL IF NO MORE OPNDS, INC OPND WORD COUNT * LDB OPND1+0 MIX IT UP JSB OPMIX ISZ EVNOD+0 LDB OPND2+0 JSB OPMIX THE 2ND ONE TOO ISZ EVNOD+0 JSB WIEXA LOOP FROM OWRDS TO 5, EXEC., CMPR JMP ODMAL GET NEXT OPNDS *E * * *S WIEXA NOP ROUTINE TO LOOP FROM OWRDS TO 5, COMP & CMPR ANS. ISZ OPNDN+0 LDA OWRDS+0 TRUNCATE OPNDS TO CORRECT # WORDS LDB OPND1+0 CBX JSB TRNC5+0 LDA OWRDS+0 LDB OPND2+0 CBY JSB TRNC5+0 JSB ODTST+0 TEST OPNDS FOO RANGE, SET ODFLG JMP WIEXA,I IF 5 WORD OVFL, NO GO LDA OPND1+0 MOVE OPNDS INTO WORKING BUFFER LDB POND1 CBX SET X,Y TO OPND ADDRS LDY POND2 MVW POS10 LDB ANSW+0 JSB OPADR,I COMPUTE S/W ANSWER IN ANSW LDB PTNST RUN 1ST PATTERN JSB WRDLP TEST WITH DIFFERENT WORD LENGTHS LDB ANSW+0 COMPLEMENT ANSWER JSB COM5+0 LDB PTNST 2ND PATTERN ADB POS4 JSB WRDLP RUN AGAIN LDA OPND1+0 RESTORE OPNDS LDB POND1+0 CBX SET X,Y TO OPND ADDRS LDY POND2 MVW POS10 LDB POND2 COMPLIMENT 2ND OPND=> X-Y JSB COM5+0 LDB ANSW+0 PUT ANSWER IN ANSW JSB OPADR,I CALCULATE 1ST OPND- 2ND OPND LDB PTNST PATTERN 3 ADB POS8 JSB WRDLP LDB ANSW+0 COMPLEMENT RESULT JSB COM5+0 LDB PTNST PATTERN 4 ADB POS12 JSB WRDLP JMP WIEXA,I *E * * SKP * ROUTINE TO TEST HFP MPY OPERATIONS * * *STSTMP TST06 EQU * TSTMP NOP JSB TINIT SET PARMS, CALL CWCNF LDA MPYBS STA OPCOD LDA ZPYOP SET UP SW ROUTINE ADDR STA OPADR LDA PTNMD SET UP PATTERN START P'OINT STA PTNST * JSB MSGI "MPY" DEF MSGMP * JSB STSTE LONG PASS-- USE IST FOR SUBTEST SELECTION OCT 4 SHORT PASS SUBTESTS DEF TSTEM,I EXPONENT DEF TSTOM,I OVFL DEF TSTMM MIXED JMP TSTMP,I * * *LTSTMP * MSGMP ASC 6,MPY TEST / MPYBS MPB MPY BASE * *LTSTMP * *ETSTMP * * * EXPONENT MULTIPLY TEST * *S TSTEM NOP JSB MSGD DEF MSGE LDA POS1 JSB STINI+0 CLA STA EXPNT LDA POS2 SET OPND WORDS STA OWRDS+0 ODEMR CLA,CLE JSB GETOP RESET POINTERS DEF BFBGE DEF BFNDE ODEML CLA,INA JSB GETOP GET OPND PAIR JMP ODEMR LDA EXPNT INC EXP INA STA EXPNT CPA PS256 CHECK FOR DONE JMP TSTEM,I STA OND13+4 PUT EXP IN OPNDS STA OND23+4 JSB WIEXM TEST HW ISZ OND23+4 TRY IT AGAIN WITH 2ND OP INCED NOP JSB WIEXM TEST IT LDA OND13+4 COMLEMENT 1ST OPND CMA STA OND13+4 JSB WIEXM TEST LDA OND23+4 COMPL 2ND OPND CMA STA OND23+4 JSB WIEXM ISZ OND23+4 INC 2ND OP NOP JSB WIEXM TEST JMP ODEML BACK FOR THE NEXT BASE *E * * OVERFLOW MULTIPLY TEST * *S TSTOM NOP LDA POS2 JSB STINI+0 JSB MSGD DEF MSGO LDA POS2 SET OWRDS STA OWRDS+0 CLA,CLE CLEAR GETOP JSB GETOP DEF BFBGO DEF BFNDO ODOML CLA,INA GET OPND PAIR JSB GETOP JMP TSTOM,I NEXT TEST JSB WIEXM TEST HW JMP ODOML TRY NEXT PAIR * * * * * MIXED MULTIPLY TEST * TSTMM NOP JSB MSGD DIAG. INFO DEF MSGM LDA POS3 JSB STINI+0 LDA POS1 # OPERAND WORDS-1 STA OWRDS+0 * BWMML LDA OWRDS+0 TEST #WORDS IN OPNDS CPA POS5 IF=MAX-, DONE LOOPING JMP TSTMM,I NEXT TEST INA STA OWRDS+0 #WORDS OPERANDS TRUNCATED TO STA WRDS+0 #WORDS FOR OPERATION ISZ LPCNT+0 CLA,CCE CLEAR OPND BUFFER POINTERS JSB GETOP DEF BFBGM DEF BFNDM ODMML CLA,INA GET NEXT BASE OPNDS JSB GETOP JMP BWMML IF NO MORE OPNDS, INC OPND WORD COUNT LDB OPND1+0 MIX IT UP JSB OPMIX ISZ EVNOD+0 2ND OPND LDB OPND2+0 JSB OPMIX ISZ EVNOD+0 JSB WIEXM RUN THROUGH WORDS, ETC. JMP ODMML GET NEXT OPNDS *E * *S WIEXM NOP ISZ OPNDN+0 LDA OWRDS+0 TRUNCATE OPNDS TO CORRECT # WORDS LDB OPND1+0 JSB TRNC5+0 LDA OWRDS+0 LDB OPND2+0 JSB TRNC5+0 JSB ODTST TEST OPNDS FOR RANGE JMP WIEXM,I 5WD OVFLW, NO GO LDA OPND1+0 MOVE OPNDS INTO WORKING BUFFER LDB POND1 CBX SET X,Y TO OPND ADDRS LDY POND2 MVW POS10 LDB ANSW+0 JSB OPADR,I COMPUTE S/W ANSWER IN ANSW LDB PTNST RUN 1ST PATTERN JSB WRDLP TEST WITH DIFFERENT WORD LENGTHS LDB PTNST 2ND PATTERN ADB POS4 JSB WRDLP RUN AGAIN LDB ANSW+0 COMPLEMENT ANSWER JSB COM5+0 LDB PTNST PATTERN 3 ADB POS8 JSB WRDLP LDB PTNST PATTERN 4 ADB POS12 JSB WRDLP JMP WIEXM,I *E * * * ROUTINE TO TEST HFP DIV OPERATIONS * * *S TST07 EQU * * TSTDV NOP JSB TINIT SET PARMS, CALL CWCNF LDA DIVBS STA OPCOD LDA ZIVOP SET UP SW ROUTINE ADDR STA OPADR LDA PTNMD SET UP PATTERN START POINT STA PTNST * JSB MSGI "DIV" DEF MSGDV * * JSB STSTE LONG PASS- EXECUTE SUBTESTS PER IST OCT 4 SHORT PASS SUBTESTS DEF TSTED,I EXP DEF TSTOD,I OVFL DEF TSTMD MIXED qmJMP TSTDV,I * * *LTSTDV * MSGDV ASC 6,DIV TEST / DIVBS DVB DIV BASE * *LTSTDV * *ETSTDV * * * EXPONENT DIVIDE TEST * *S TSTED NOP LDA POS1 JSB STINI+0 JSB MSGD DEF MSGE CLA STA EXPNT LDA POS2 SET OPND WORDS STA OWRDS+0 ODEDR CLA,CLE JSB GETOP RESET POINTERS DEF BFBGE DEF BFNDE ODEDL CLA,INA JSB GETOP GET OPND PAIR JMP ODEDR LDA EXPNT INC EXP INA STA EXPNT CPA PS256 CHECK FOR DONE JMP TSTED,I STA OND13+4 PUT EXP IN OPNDS STA OND23+4 JSB WIEXD TEST HW ISZ OND23+4 TRY IT AGAIN WITH 2ND OP INCED NOP JSB WIEXD TEST IT LDA OND13+4 COMLEMENT 1ST OPND CMA STA OND13+4 JSB WIEXD TEST LDA OND23+4 COMPL 2ND OPND CMA STA OND23+4 JSB WIEXD ISZ OND23+4 INC 2ND OP NOP JSB WIEXD TEST JMP ODEDL BACK FOR THE NEXT BASE *E * * OVERFLOW DIVIDE TEST * *S TSTOD NOP LDA POS2 JSB STINI+0 JSB MSGD DEF MSGO LDA POS2 STA OWRDS+0 CLA,CLE CLEAR GETOP JSB GETOP DEF BFBGO DEF BFNDO ODODL CLA,INA GET OPND PAIR JSB GETOP JMP TSTOD,I NEXT TEST JSB WIEXD TEST HW JMP ODODL TRY NEXT PAIR *E * * * * MIXED DIVIDE TEST * *S TSTMD NOP JSB MSGD DEF MSGM LDA POS3 JSB STINI+0 LDA POS1 # OPERAND WORDS-1 STA OWRDS+0 * BWMDL LDA OWRDS+0 TEST #WORDS IN OPNDS CPA POS5 IF=MAX, DONE LOOPING JMP TSTMD,I NEXT TEST INA STA OWRDS+0 #WORDS OPERANDS TRUNCATED TO STA WRDS+0 #WORDS FOR OPERATION ISZ LPCNT+0 CLA,CCE CLEAR OPND BUFFER POINTERS JSB GETOP DEF BFBGM DEF BFNDM ODMDL CLA,INA GET NEXT BASE OPNDS JSB GETOP JMP BWMDL IF NO MORE OPNDS, INC OPND WORD COUNT LDB OPND1+0 MIX UP OPNDS JSB OPMIX ISZ EVNOD+0 LDB OPND2+0 JSB OPMIX ISZ EVNOD+0 * JSB WIEXD TEST HW JMP ODMDL LOOP AGAIN *E * *S WIEXD NOP DIVIDE WORD INC+TEST ROUTINE ISZ OPNDN+0 LDA OWRDS+0 TRUNCATE OPNDS TO CORRECT # WORDS LDB OPND1+0 JSB TRNC5+0 LDA OWRDS+0 LDB OPND2+0 JSB TRNC5+0 JSB ODTST TEST OPND RANGES JMP WIEXD,I 5WD OVFLW, NO GO LDA OPND1+0 MOVE OPNDS INTO WORKING BUFFER LDB POND1 CBX SET X,Y TO OPND ADDRS LDY POND2 MVW POS10 LDB ANSW+0 JSB OPADR,I COMPUTE S/W ANSWER IN ANSW LDB PTNST RUN 1ST PATTERN JSB WRDLP TEST WITH DIFFERENT WORD LENGTHS LDB ANSW+0 COMPLEMENT ANSWER JSB COM5+0 LDB PTNST 2ND PATTERN ADB POS8 JSB WRDLP RUN AGAIN LDA OPND1+0 RESTORE OPNDS LDB POND1 CBY THIS TIME ITS Y/X LDX POND2 MVW POS10 LDB ANSW+0 COMPUTE ANSWER JSB OPADR,I LDB PTNST PATTERN 3 ADB POS4 JSB WRDLP LDB ANSW+0 COMPLEMENT ANSWER JSB COM5+0 LDB PTNST PATTERN 4 ADB POS12 JSB WRDLP JMP WIEXD,I DONE *E * * SKP * * * ROUTINES TO TEST HFP FIX SINGLE AND DOUBLE OPERATIONS * S/D SELECTED BY INTWD=0 OR 1 * *S TST00 EQU * TSTXS NOP FIXS JSB MSGI "FIXS TEST" DEF MSGXS CLA INTWD=0 LDB FXSBS B=BASE OPCODE JSB TSTFX GO TO COMMON SECTION JMP TSTXS,I DONE * FXSBS FXS FIXS BASE MSGXS ASC 6,FIXS TEST / * * *S TST01 EQU * TSTXD NOP FIXD JSB MSGI "FIXD TEST" DEF MSGXD CLA,INA A=INTWD LDB FXDBS B=INSTR BASE JSeB TSTFX COMMON ROUTINE JMP TSTXD,I DONE * FXDBS XDB FIXD BASE MSGXD ASC 6,FIXD TEST / * * *S TSTFX NOP STA INTWD INTWD=0 OR 1 FOR S/D STB OPCOD SAVE OPCODE JSB TINIT SET PARMS, CALL CWCNF * LDA ZIXOP SET UP SW ROUTINE ADDR * STA OPADR * LDA PTNAD SET UP PATTERN START POINT STA PTNST * * * JSB STSTE LONG PASS- USE IST OCT 2 SHOT PASS SUBTEST DEF TSTEX,I EXP DEF TSTMX MIX JMP TSTFX,I * *E * * EXPONENT FIX TEST (OVERFLOW TOO) * *S TSTEX NOP JSB MSGD DEF MSGE LDA POS1 JSB STINI+0 LDA POS2 ONLY OPNDS TRUNC TO 2 WORDS STA OWRDS+0 LDA NG513 LOW EXP-1 STA EXPNT ODEXR CLA,CLE RESET GETOP JSB GETOP DEF BFBGE DEF BFNDE ODEXL CLA,INA GET OPND JSB GETOP JMP ODEXR IF OUT OF OPNDS, START OVER LDA EXPNT SET EXPS INA STA EXPNT CPA PS512 OUT OF RANGE, DONE JMP TSTEX,I NEX TEST STA OND13+4 PT EXPS IN PLACE STA OND23+4 JSB WIEXX TEST THE HW JMP ODEXL BACK FOR ANOTHER *E * * * MIXED FIX TEST * *S TSTMX NOP JSB MSGD "FIX MIX" DEF MSGM LDA POS2 JSB STINI+0 LDA NEG15 SET LOOP CNT STA TSTLP+0 FXMLP LDA POS1 # OPERAND WORDS-1 STA OWRDS+0 * BWMXL LDA OWRDS+0 TEST #WORDS IN OPNDS CPA POS5 IF=MAX, DONE LOOPING JMP TSDMX DONE? INA STA OWRDS+0 #WORDS OPERANDS TRUNCATED TO STA WRDS+0 #WORDS FOR OPERATION ISZ LPCNT+0 CLA,CCE CLEAR OPND BUFFER POINTERS JSB GETOP DEF BFBGM DEF BFNDM ODMXL CLA,INA GET NEXT BASE OPNDS JSB GETOP JMP BWMXL IF NO MORE OPNDS, INC OPND WORD COUNT LDB OPND1+0 MIX UP OPND JSB OPMIX * LDB OPND1+^0 ADJUST EXP. JSB OPRED * * JSB WIEXX JMP ODMXL * TSDMX ISZ TSTLP+0 DONE LOOPING? JMP FXMLP NO JMP TSTMX,I YES *E * * *S WIEXX NOP ISZ OPNDN+0 LDA OWRDS+0 TRUNCATE OPNDS TO CORRECT # WORDS LDB OPND1+0 JSB TRNC5+0 JSB ODTST TEST OPNDS FOR RANGE JMP WIEXX,I 5 WORD OVFL, NO GO LDA OPND1+0 MAKE 2ND OPND=1ST LDB OPND2+0 MVW POS5 LDA OPND1+0 MOVE 1ST OPND INTO ANSWER BUFFER LDB ANSW+0 MVW POS5 LDA INTWD LDB ANSW+0 JSB FIXOP+0 COMPUTE S/W ANSWER IN ANSW LDA POS0 TEST OVERFLOW SOC LDA POS1 STA ANSO+0 LDB PTNST RUN 1ST PATTERN JSB WRDLP TEST WITH DIFFERENT WORD LENGTHS * LDA OPND1+0 RELOAD OPERAND LDB ANSW+0 MVW POS5 LDB ANSW+0 JSB COM5+0 COMPLEMENT OPERAND LDA INTWD JSB FIXOP+0 COMPUTE ANSWER LDA POS0 TEST OVERFLOW SOC LDA POS1 STA ANSO+0 LDB PTNST 2ND PATTERN ADB POS4 JSB WRDLP RUN AGAIN JMP WIEXX,I *E * * * SKP * * * ROUTINES TO TEST HFP FLOAT SINGLE AND DOUBLE OPERATIONS * S/D SELECTED BY INTWD * * *S TST02 EQU * TSTTS NOP FLTS JSB MSGI "FLTS TEST" DEF MSGTS CLA A=INTWD LDB FTSBS B=OPCODE BASE JSB TSTFT COMMON SECTION JMP TSTTS,I * FTSBS TSB FLTS 2 WD MSGTS ASC 6,FLTS TEST / * * TST03 EQU * TSTTD NOP FLTD JSB MSGI "FLTD TEST" DEF MSGTD CLA,INA A=INTWD LDB FTDBS B=OPCODE BASE JSB TSTFT COMMON SECTION JMP TSTTD,I * FTDBS TDB FLTD BASE MSGTD ASC 6,FLTD TEST / * * * TSTFT NOP STA INTWD STB OPCOD JSB TINIT SET PARMS, CALL CWCNF * JSB STSTE LONG PASS- USE IST OCT 2 | SHORT PASS SUBTEST DEF TSTET,I DEF TSTMT JMP TSTFT,I * * *E * * * EXPONENT FLOAT TESTS ( INTEGER RANGE) * *STSTET TSTET NOP LDA POS1 JSB STINI+0 JSB MSGD DEF MSGE LDA POS2 ONLY OPNDS TRUNC TO 2 WORDS STA OWRDS+0 LDA NEG1 LOW EXP-1 STA EXPNT ODETR CLA,CLE RESET GETOP JSB GETOP DEF BFBGE DEF BFNDE ODETL CLA,INA GET OPND JSB GETOP JMP ODETR IF OUT OF OPNDS, START OVER LDA EXPNT SET EXPS INA STA EXPNT CPA POS33 OUT OF RANGE, DONE JMP TSTET,I NEXT TEST STA OND13+4 PT EXPS IN PLACE STA OND23+4 JSB WIEXT TEST THE HW JMP ODETL BACK FOR ANOTHER * *LTSTET * POS33 DEC 33 * *ETSTET * * * MIXED FLOAT TEST * *S TSTMT NOP * LDA NEG15 LOOP 5 TIMES STA TSTLP+0 JSB MSGD "FLT MIX" DEF MSGM LDA POS2 JSB STINI+0 FTMLP LDA POS1 # OPERAND WORDS-1 STA OWRDS+0 * BWMTL LDA OWRDS+0 TEST #WORDS IN OPNDS CPA POS5 IF=MAX, DONE LOOPING JMP TSDMT DONE? INA STA OWRDS+0 #WORDS OPERANDS TRUNCATED TO STA WRDS+0 #WORDS FOR OPERATION ISZ LPCNT+0 CLA,CCE CLEAR OPND BUFFER POINTERS JSB GETOP DEF BFBGM DEF BFNDM ODMTL CLA,INA GET NEXT BASE OPNDS JSB GETOP JMP BWMTL IF NO MORE OPNDS, INC OPND WORD COUNT LDB OPND1+0 MIX UP OPND JSB OPMIX * LDB OPND1+0 ADJ. EXP JSB OPRED * * * JSB WIEXT TEST HW JMP ODMTL NEXT OPNDS * TSDMT ISZ TSTLP+0 CHECK FOR DONE LOOPING JMP FTMLP NO JMP TSTMT,I DONE *E * * * * * *S WIEXT NOP ISZ OPNDN+0 LDA OWRDS+0 TRUNCATE OPNDS TO CORRECT # WORDS LDB OPND1+0 JSB TRNC5+0 JSB ODTST TEST OPNDS FOR RANGE , JMP WIEXT,I 5WD OVFL, NO GO LDA OPND1+0 MAKE 2NDOP=1ST LDB OPND2+0 MVW POS5 LDA INTWD FIX OPERAND LDB OPND1+0 JSB FIXOP+0 LDA OPND1+0 MOVE 1ST OPND INTO ANSWER BUFFER LDB ANSW+0 MVW POS5 LDA INTWD LDB ANSW+0 JSB FLTOP+0 COMPUTE S/W ANSWER IN ANSW LDA POS0 RESET OVERFLOW STA ANSO+0 LDB PTNFT RUN 1ST PATTERN JSB WRDLP TEST WITH DIFFERENT WORD LENGTHS * LDB OPND2+0 USE 2ND OPERAND, COMPLEMENT LDA OWRDS+0 TRUNCATE JSB TRNC5+0 JSB COM5+0 COMPLEMENT LDA INTWD FIX JSB FIXOP+0 LDA OPND2+0 MOVE TO ANSWER BUFFER LDB ANSW+0 MVW POS5 LDB ANSW+0 LDA INTWD JSB FLTOP+0 LDA POS0 TEST OVERFLOW STA ANSO+0 LDB PTNFT 2ND PATTERN ADB POS1 JSB WRDLP RUN AGAIN JMP WIEXT,I DONE * * * * TST08 EQU * *ROUTITI TO TEST ACCUMULATOR O ORATIONS S HFP * *MODIFIES A,B,X,Y,E * *STSTAC TSTAC NOP JSB TINIT SET PARMS, CALL CWCNF * JSB MSGI "ACC" DEF MSGAC * * JSB STSTE EXECUTE SUBTEST OCT 1 SHORT PASS SUBTEST DEF STACC JMP TSTAC,I DONE * * MSGAC ASC 6,ACC TEST / * * SKP * *S STACC NOP LDA ACLPS+0 STA ACCNT * TACLP EQU * JSB ACWRD SET UP INSTRUCTIONS WITH # WORDS DEF ACBF1 JSB CHSEL GET ODSEL,OPSEL * JSB ACCOP COMPUTE S/W & H/W, AND COMPARE DEF *+8 ACBF1 DEF BUF1A ACC=A OP B DEF BUF1B ACC=FIXS(ACC) DEF BUF1C RSLT=FLTS(ACC) DEF BUF1D ACC=ACC OP B DEF BUF1E RSLT=A OP ACC DEF BUF1F RSLT=ACC OP ACC DEF BUF0+0 * * IFN IF SYSTEM TURN OFF INTERRUPTS JSB $LIBR NOP XIF * STK HANG THE BOX DEF *+2 DE5 F BACH1 RST * IFN TURN INTERRUPTS BACK ON JSB $LIBX DEF *+1 DEF *+1 XIF * * * * JSB ACWRD SET UP INSTRUCTIONS WITH #WORDS DEF ACBF2 JSB CHSEL CHANGE OPSEL, ODSEL * JSB ACCOP AGAIN WITH DOUBLE INTGERS DEF *+8 ACBF2 DEF BUF1A ACC=A OP B DEF BUF2B ACC=FIXD(ACC) DEF BUF2C ACC=FLTD(ACC) DEF BUF1D ACC=ACC OP B DEF BUF1E RSLT=A OP ACC DEF BUF1F RSLT=ACC OP ACC DEF BUF0+0 * JSB ACWRD DEF ACBF3 JSB CHSEL JSB ACCOP DEF *+6 ACBF3 DEF BUF1A ACC= A OP B DEF BUF3B ACC=FIXS(A) DEF BUF1C RSLT=FLTS(ACC) DEF BUF1E RSLT=A OP ACC DEF BUF0+0 * * IFN IF SYSTEM TURN OFF INTERRUPTS JSB $LIBR NOP XIF * STK HANG THE BOX DEF *+2 DEF BACH2 RST * IFN TURN INTERRUPTS BACK ON JSB $LIBX DEF *+1 DEF *+1 XIF * * * * JSB ACWRD DEF ACBF4 JSB CHSEL JSB ACCOP DEF *+6 ACBF4 DEF BUF1A ACC=A OP B DEF BUF4B RSLT=FIXD(A) DEF BUF2C ACC=FLTD(ACC) DEF BUF1E RSLT=A OP ACC DEF BUF0+0 * JSB ACWRD DEF ACBF5 JSB CHSEL JSB ACCOP DEF *+6 ACBF5 DEF BUF3B RSLT=FIXS(A) DEF BUF1A ACC= A OP B DEF BUF5C ACC=FLTS(RSLT) DEF BUF1E RSLT=A OP ACC DEF BUF0+0 * * IFN IF SYSTEM TURN OFF INTERRUPTS JSB $LIBR NOP XIF * STK HANG THE BOX DEF *+2 DEF BACH3 RST * IFN TURN INTERRUPTS BACK ON JSB $LIBX DEF *+1 DEF *+1 XIF * * * * JSB ACWRD DEF ACBF6 JSB CHSEL JSB ACCOP DEF *+6 ACBF6 DEF BUF4B dRSLT=FIXD(A) DEF BUF1A ACC=A OP B DEF BUF6C ACC=FLTD(RSLT) DEF BUF1E RSLT=A OP ACC DEF BUF0+0 * JSB ACWRD DEF ACBF7 JSB CHSEL JSB ACCOP DEF *+6 ACBF7 DEF BUF4B RSLT=FIXD(A) DEF BUF2C ACC=FLTD(ACC) DEF BUF1B ACC=FIXS(ACC) DEF BUF1C RSLT=FLTS(ACC) DEF BUF0+0 * ISZ ACCNT TEST FOR COOKING TIME JMP TACLP STILL KICKING JMP STACC,I WELL DONE * *LSTACC * ACCNT BSS 1 LOOP COUNTER * * *ESTACC * * * * SKP * *ROUTINE TO SET # OF FP WORDS TO 2,3,4 OR 5 *A REG=#WORDS, E=1 FOR BIT 7 TYPE *DEF TO ADDR OF 1ST BUF. ADDR FOLLOWS JSB * * *S ACWRD NOP JSB RANF+0 GET WRDS LDA B AND POS3 ADA POS2 STA WRDS+0 CLA SET EFLAG-- BIT7OP BLF SSB,SLB INA ACBT7 RSS IF IC SAYS NO BIT7 OPNS, ALWAYS CLEAR EFLAG CLA STA EFLAG LDB ACWRD,I SAVE POINTER TO BUFFERS IN ACBFP STB ACBFP ISZ ACWRD SET UP RETURN ADDR * ACWDL LDB ACBFP,I GET INSTRUCTION LDA B,I SZA,RSS IF=0, RETURN JMP ACWRD,I RAR,RAR GET OPCODE RAR,RAR AND POS7 STA FCTNT SAVE LDA EFLAG SET E TO FLAG FOR BIT 7 ERA LDA B,I GET INSTR AGAIN AND NB710 MASK OF #WORDS, BIT7 SEZ IF E SET, OR IN BIT7 IOR PS128 ADA WRDS+0 NOW SET # FP WORDS ADA NEG2 STA B,I PUT BACK ADB POS1 #WORDS IN 1ST OPND LDA FCTNT IF FLOAT, GO ON CPA POS5 JMP ACWD2 INC POINTER AND SET UP #RESULT WORDS LDA B,I #WORDS IN 1ST OPND SZA,RSS IF 0, TEST 2ND OPND JMP ACWD2 LDA WRDS+0 ELSE REPLACE WITH NEW VALUE STA B,I ACWD2 ADB POS2 #WORDS IN 2ND OPND LDA B,I SZA,RSS IF=0, GO ON TO RESULT ՙ JMP ACWDR LDA WRDS+0 STA B,I ELSE REPLACE ACWDR LDA FCTNT IF FIX, DON'T CHANGE CPA POS4 JMP ACWDI INC AND LOOP ADB POS2 #RESULT INSTR STB ACWP2 JSB RANF+0 GET #RSLT WORDS LDA B AND POS3 STA ACWP1 LDB ACWP2 GET #RESULT WORDS INB LDA B,I SZA,RSS IF=0, RETURN JMP ACWDI LDA ACWP1 GET #WORDS ADA POS2 STA B,I LDA ACWP1 FORM RSLT INSTR ADA OPBAS LDB ACWP1 B=#RSLT WORDS ADB POS2 CPB WRDS+0 IF SAME AS #WORDS, DONT SET RSLT INSTR CLA STA ACWP2,I STORE RSLT INSTR ACWDI ISZ ACBFP INC BUFFER POINTER JMP ACWDL * * ACWP1 BSS 1 ACWP2 BSS 1 EFLAG BSS 1 NB710 OCT 177574 * * * * *ROUTINE TO SELECT ODSEL, OPSEL 4 BITS * *S CHSEL NOP JSB RANF+0 GET ODSEL STB ODSEL JSB RANF+0 STB OPSEL+0 JMP CHSEL,I * * * SKP * * MANUAL ENTRY TEST * ALLOWS PROGRAMMABLE TESTING OF ADD,SUB,MPY,DIV,FIX, AND FLT * OPERATIONS, IN ACCUMULATOR MODE. * *STSTMN TST15 EQU * TSTMN NOP LDA IC CHECK FOR PRIV. MODE SLA,RSS IF BIT0=0, NO GO JMP TSTMN,I JUST RETURN * JSB TINIT SET PARMS, CALL CWCNF JSB MSGC,I PRINT TEST MESSAGE DEF MAMSG * JSB STSTE EXECUTE ONLY SUBTEST OCT -1 ALL SUBTESTS SHORT PASS DEF STMAN JMP TSTMN,I DONE * MAMSG ASC 10,MANUAL ENTRY TEST / * *S STMAN NOP MNTLP LDA MBUFZ SET UP POINTERS FOR INSTR BUFFERS ADA NEG1 ALWAYS INC FIRST STA BUFP POINTS TO INSTR BUFR CLA CLEAR OPERAND,RESULT POINTERS STA ACOPI+0 OPND PTR STA RSLTI RESULT POINTER MNILP ISZ BUFP LOOP FOR EACH OPERATION LDA BUFP,I SET UP PTR INTO OPN BUFR STA STKP+0 CPA MBUF8 IF LAST BUFFER, FORCE END JMP tMNIND JSB MSGIN SEND MSG, GET INPUT DEF MAINS "OPCODE: " LDB INBUF+0 CHECK 1ST CHAR CPB ASCE IF=E, DONE JMP MNEND CPB ASCG IF="G", START EXECUTION JMP MNINC CPB ASCR IF=R, REST IS SAME AS LAST TIME JMP MNLIN JSB ASCNV+0 CONVERT TO OCTAL IN A REG STA STKP+0,I PUT IN BUFFER ISZ STKP+0 INC POINTER JSB MSGC,I SEND "OPND 1" DEF MAOD1 JSB OPDIN+0 GET 1ST OPND JSB MSGC,I SEND "OPND 2" DEF MAOD2 JSB OPDIN+0 GET OPND 2 * JSB MSGIN SEND & GET # DEF MARIN "RSLT OPCODE" JSB ASCNV+0 CONV TO OCTAL STA STKP+0,I PUT IN BUFFER ISZ STKP+0 JSB MSGIN SEND & GET # DEF MARST "#RSLT WORDS" JSB ASCNV+0 CONVERT TO OCTAL IN A REG STA STKP+0,I PUT IN BUFFER ISZ STKP+0 SZA,RSS IF=0, GET NEXT INSTR JMP MNILP LDA RSLTI GET RSLT ADDR AND POS1 ONLY 2 ADA RSLTZ+0 BASE ADDR LDA A,I STA STKP+0,I PUT IN BUFFER ISZ RSLTI JMP MNILP GET NEXT INSTR * MNINC LDA BUFP,I 1ST BUFFER, ASSUME REPEAT CPA MBUF1 JMP MNLIN YES, TREAT AS "R" MNIND CLA PUT INSTR=0 IN BUFFER STA STKP+0,I MNLIN JSB MSGIN SEND AND GET # LOOPS DEF MALPS "LOOP? " LDA INBUF+0 IF="Y", YES CPA ASCY JMP MNSLP IF SO, SET FOR LOOPING JSB ASCNV+0 GET OCTAL #LOOPS SZA,RSS IF=0 OR NOT#, 1 TIME MN1LP CLA,INA ONE LOOP CMA,INA STA MNCNT -#LOOPS MNELP CLA SET #WRDS TO 0 STA WRDS+0 STA TECNT+0 CLEAR ERROR CNT JSB ACCOP EXECUTE OPERATIONS, COMPARE & REPORT DEF *+9 DEF MBF11 DEF MBF12 DEF MBF13 DEF MBF14 DEF MBF15 DEF MBF16 DEF MBF17 DEF MBF18 * ISZ MNCNT TEST #LOOPS  JMP MNELP NO DONE YET * LDA TECNT+0 IF NO ERRORS, PRINT BUFFERS, IF LEGAL SZA JMP MNTLP READY FOR NEXT SET OF OPNS * JSB ACBLD+0 LOAD ACC. BUFFERS JSB ACPRT+0 * JMP MNTLP GO BACK FOR MORE * MNSLP CLA SET ACCOP TO LOOP MODE STA ACELP LDA IC+0 SET CW BIT 12 IOR BIT12 STA IC+0 JMP MN1LP * MNEND NOP * IFN IF IN SYSTEM, GET INPUT JSB DNPUX+0 DEF *+1 * XIF JMP STMAN,I * *LSTMAN BIT12 OCT 10000 * MAINS ASC 6,OPCODE: _ / MAOD1 ASC 5,1ST OPND / MAOD2 ASC 5,2ND OPND / MARIN ASC 8,RSLT OPCODE: _ / MARST ASC 6,NRSLTS: _ / MALPS ASC 5,LOOP?: _ / * ASCE ASC 1,E ASCG ASC 1,G ASCR ASC 1,R ASCY ASC 1,Y RSLTI BSS 1 INDEX POINTER MNCNT BSS 1 MBUFZ DEF MBUF1 BASE ADDR OF MANUAL ENTRY INSTR. BUFFERS MBUF1 DEF MBF11 MBUF2 DEF MBF12 MBUF3 DEF MBF13 MBUF4 DEF MBF14 MBUF5 DEF MBF15 MBUF6 DEF MBF16 MBUF7 DEF MBF17 MBUF8 DEF MBF18 * MBF11 BSS 8 MAN. ENTRY INSTR BUFS MBF12 BSS 8 MBF13 BSS 8 MBF14 BSS 8 MBF15 BSS 8 MBF16 BSS 8 MBF17 BSS 8 MBF18 BSS 8 * *ESTMAN * * SKP * * *ROUTINE TO PROCESS ACC. OPNS, FOR TSTAC * * CALLING SEQ: JSB ACCOP * DEF * + #BUFFERS + 1 * DEF BUFFER1 * DEF BUFFER2 * ... * *WHERE BUFFER1, ETC. ARE THE BUFFERS OF OPERATIONS TO EXECUTE * *S ACCOP NOP ISZ OPNDN+0 INC OPND IDENT * LDA ACCOP BET #BUFFERS STA ACBFP SAVE POINTER CMA ADA ACCOP,I #BUFFERS = END ADDR-START ADDR-1 CMA,INA WANT NEG. COMPL STA NBUFS LDA HWBUF SET UP BUFFER POINTERS STA HWBFP LDA SWBUF STA SWBFP * LDA ACCOP SET UP POINTER TO 1ST BUFFER ADA POS1 SKIP OVER DEF TO RETURN STA BUFP1 SAVE LDA ACCOP,I SET UP RETURN ADDRESS STA ACCO\P * * LDA WRDS+0 CHECK IF WRDS IS A VALID NUMBER SZA,RSS IF=0, OK JMP ACCLP ADA DBIT0+0 ADA NEG2 LDA A,I AND WDFLG+0 IF THIS BIT IN MASK WORD SET, OK SZA,RSS JMP ACCOP,I IF NOT, RETURN * * ACCLP ISZ ACBFP TRANSFER 1ST BUFFER ADDR TO HWSTK CALL, SWSTK CALL LDA ACBFP,I STA HWBFP,I STA SWBFP,I ISZ HWBFP ISZ SWBFP ISZ NBUFS IF #BUFS LEFT=0, DONE JMP ACCLP * LDA TSTN+0 TEST FOR MAN. ENTRY TEST CPA POS15 IF SO, DON'T CONFIGURE JMP ACCSW * LDB BUFP1 B=ADDR OF 1ST BUFFER JSB ACOND SET UP OPERANDS LDB BUFP1 B=ADDR OF 1ST BUFFER JSB ACOPN SET UP OPERATIONS * ACCSW JSB CLANS CLEAR ANSWER BUFFER JSB CLRST CLEAR RESULT BUFFER JSB SWSTK COMPUTE RESULT IN S.W DEF ACCSE SWBF1 BSS 12 ACCSE NOP ERROR RETURN * LDA RSLT1+0 MOVE RESULT TO ANSW1 LDB ANSW1+0 MVW POS5 ACCHW JSB CLRST CLEAR RESULT AGAIN * HWSTK STK COMPUTE H-W RESULT DEF ACCHE HWBF1 BSS 12 ACCHE JMP ACHNG ERROR RETURN SOC CHECK FOR OVERFLOW ACSOV ISZ RST1O+0 SET OVFLW BUF * LDA WRDS+0 IF 5 WORDS, CHOP OFF LOW BYTE OF LAST WORD CPA POS5 JMP *+2 JMP ACCPR LDA RST13+3 AND UPBYT STA RST13+3 * ACCPR JSB ACMPR COMPARE RESULTS, REPORT ERRORS ACELP RSS NORMALLY RETURN JMP ACSTT IF IN LOOP MODE, CHECK CW * JMP ACCOP,I ACSTT JSB CWCHK+0 TEST CW AND CHANGE PARMS IF NECESSARY JMP ACCHW REPEAT LAST OPERATION * ACHNG LDA NEG1 BOX HUNG, RETURN HUNG COND. STA RST13+0 JMP ACSOV SET OVERFLOW * BUFP1 BSS 1 USED AS POINTER TO 1ST BUFFER FOR ACC. OPNS HWBUF DEF HWBF1 SWBUF DEF SWBF1 HWBFP BSS 1 SWBFP BSS 1 NBUFS BSS 1 * * SKP * * ROUTINE TO SET UP ACC. OPERANDS IN BUFFERS * * ON ENTRY B=ADDR OF 1ST BUFFER * OPND ADDR INDEX SPECIFIED BY 4 BITS IN ODSEL * THE MOST SIG. BITS ARE USED FIRST, ETC. * *SACOND ACOND NOP LDA ODSEL SET UP OPERAND INDEX STA TPSEL STB ACBFP SAVE BUF POINTER ACODL LDB ACBFP,I GET #WORDS IN 1ST OPND ADB POS1 LDA B,I SZA,RSS IF=0, TEST 2ND OPND JMP ACODB STA WRDS+0 SET #WORDS FOR PACK LDA TPSEL GET ADDR OF OPERAND ALF GET NEXT 4 BITS STA TPSEL SAVE ROTATED FORM AND POS15 ONLY 4 BIT ADDR MPY POS5 5 WORDS/OPND ADA BMBGN START ADDR LDB ACBFP,I B=ADDR OF ACC. OPND ADB POS2 LDB B,I CBX SAVE OPERAND ADDRESS MVW POS5 TRANSFER OPERAND * ADB NEG5 B=OPND ADDR JSB OPMIX MAKE ADJUSTMENTS TO EXPONENT & MANTISSA CXB RESTORE OPERAND ADDR LDA WRDS+0 JSB PAK5+0 PACK UP OPERAND * ACODB LDB ACBFP,I GET #WORDS IN 2ND OPND ADB POS3 LDA B,I SZA,RSS IF=O, TEST NEXT INSTR JMP ACTIN STA WRDS+0 LDA TPSEL ALF GET NEXT OPND STA TPSEL SAVE AND POS15 MPY POS5 ADA BMBGN LDB ACBFP,I B=ADDR OF ACC. OPND ADB POS4 LDB B,I CBY SAVE OPERAND ADDR MVW POS5 ADB NEG5 B=OPND ADDR JSB OPMIX MAKE MANT, EXP ADJUSTMENTS CYB RESTORE OPERAND ADDR LDA WRDS+0 JSB PAK5+0 * ACTIN ISZ ACBFP GET NEXT BUFFER ADDR LDB ACBFP,I LDB B,I GET INSTR SZB IF=0, DONE JMP ACODL LOOP AGAIN JMP ACOND,I * *LACOND * BMBGN DEF BFBGM *EACOND * * SKP * ROUTINE TO SET UP INSTRS IN ACC BUFFERS * * ON ENTRY, B =ADDR OF 1ST BUFFER * * OPSEL DETERMINES THE INSTR. USED FOR SUCCESSIVE OPERATIONS * TOP 2 BITS FOR 1ST OPN, ETC. * * *SACOPN ACOPN NOP STB ACBFP SAVE BUFFER POINTER LDA OPSEL+0 SET UP OPCODE SELECTION BUFFER STA TPSEL SAVE IT ACOPL LDB ACBFP,I GET INSTR. BASE LDA B,I SZA,RSS IF INSTR=0, DONE JMP ACOPN,I AND POS64 IF BIT 6 SET, NOT ADD,SUB,MPY,DIV -- DON'T CHANGE SZA IF NOT, GO ON JMP ACOUP INC POINTER, LOOP LDA B,I GET INSTR LESS OPCODE AND NBT64 STA B,I REPLACE LDA TPSEL GET OPCODE # ALF GET NEXT TWO BITS STA TPSEL SAVE AND POS3 ALF MOVE TO BITS 4-6 IOR B,I OR INTO INSTR STA B,I NEW INSTRUCTION ACOUP ISZ ACBFP INC BUFFER POINTER JMP ACOPL GO FOR NEXT INSTR * *LACOPN * NBT64 OCT 177617 * *EACOPN * SKP * ROUTINES TO CLEAR OUT RESULT AND ANSWER BUFFERS * * *S CLANS NOP LDA ZERO OPERAND WITH ALL ZEROS LDB ANSW1+0 MVW POS6 LDA ZERO LDB ANSW2+0 MVW POS6 JMP CLANS,I DONE * * *S CLRST NOP CLA CLEAR ALL RESULT BUFFERS STA RST13+0 STA RST13+1 STA RST13+2 STA RST13+3 STA RST13+4 STA RST13+5 STA RST23+0 STA RST23+1 STA RST23+2 STA RST23+3 STA RST23+4 STA RST23+5 STA RST33+0 STA RST33+1 STA RST33+2 STA RST33+3 STA RST33+4 STA RST33+5 JMP CLRST,I * * * SKP * ROUTINE TO COMPARE RESULTS FROM HFP & S/W FOR ACC. OPERATIONS * HFP RESULT IN RSLT1, S/W ANSWER IN ANSW1 * REPORTS ERRORS IF FOUND * ON RETURN, E CLEAR IF NO ERROR, E SET IF ERROR * *S ACMPR NOP ACCCP RSS NORMALLY EXECUTE JMP ACCSP UNLESS SPECIAL CONF. LDA ANS1O+0 CHECK OVERFLOWS CPA RST1O+0 JMP *+2 =, CHECK FOR SET, OR OPERANDS JMP ACMER ERROR CLE CLEAR E IN CASE CORRECT RESULT CPA POS1 IF OVFLW=SET, IGNORE RESULT JMP ACMPR,I OVERFLOW, DON'T TEST #S, JUST RETURN LDA ANSW1+0 COMPARE RESULT AND ANSWER LDB RSLT1+0 CMW WDOUT+0 JMP ACMPR,I OK, RETURN JMP ACMER ELSE ERROR JMP ACMER * ACMER LDA WRDS+0 SET UP ECODE ADA NEG2 =#WORDS-2 STA ECODE+0 LDA POS0 GO TO ERROR ROUTINE, 1ST TRY STA TRYN+0 JSB WRANS+0 CCE SET E FOR ERROR RETURN JMP ACMPR,I GO HOME * ACCSP JSB SKNCW+0 TEST FOR DISPLAY ALL OPNS DEF DISPB+0 JMP ACMER IF SO, TREAT AS ERROR JMP ACMPR,I ELSE DONE, IE NO REPORT * * * SKP *S * * * ROUTINE TO PROCESS STACK OF OPERATIONS IN S/W, AS HFPSTK * * CALLING SEQUENCE: JSB SWSTK * DEF ERROR RETURN * DEF BUFFER 1 * DEF BUFFER 2 * . * . * . * ERROR RETURN * NORMAL RETURN * * BUFFER FORMAT: HFP INSTRUCTION * # WORDS IN 1ST OPND * ADDRESS OF 1ST OPND * # WORDS IN 2ND OPND * ADDRESS OF 2ND OPND * RESULT INSTRUCTION * # WORDS IN RESULT * RESULT ADDRESS * SWSTK NOP LDA SWSTK SET UP BUFFER POINTER STA BUFP LDA POS0 CLEAR OVERFLOW FLAG STA ANS1O+0 SWSLP ISZ BUFP GET 1ST BUFFER ADDRESS LDA BUFP,I AND PUT IN STKP STA STKP+0 LDA STKP+0,I GET HFP INSTRUCTION STA INSTR+0 SZA,RSS IF INSTR=0, DONE JMP SWSEN RAR,RAR SHIFT RIGHT FOR OPCODE STA INTWD BIT0=S/D FLAG IN FIX,FLOAT RAR,RAR OPCODE IN BITS 2-0 AND POS7 MASK OFF GARBAGE STA FCTNT LDA INSTR+0 GET #WORDS IN FP OPERANDS AND POS3 ONLY BITS 1,0 ADA POS2 ADD 2 STA WRDS+0 SAVE LDA ANSW1+0 IN CASE OF ACC OPN LDB OPND1+0 LOAD LAST RESULT IN OPERANDS CBX SET UP X FOR OPND ADDR MVW POS5 LDA ANSW1+0 LDB OPND2+0 CBY SET UP Y FOR OPND ADDR MVW POS5 LDB OPND1+0 GET 1ST OPERAND JSB SWSOP LDB OPND2+0 GET 2ND OPERAND JSB SWSOP LDA FCTNT TEST FOR TYPE-- FIX,FLOAT CPA POS4 JMP SWSFX IF FIX, GO THERE CPA POS5 TET FOR FLOAT JMP SWSFT * SWSTD LDA WRDS+0 ADD,SUB,MPY OR DIV STA WDIN+0 SET WDIN * LDB OPND1+0 TRUNCATE 1ST OPERAND * JSB TRNC5+0 * LDA WRDS+0 * LDB OPND2+0 SAME FOR 2ND OPERAND * JSB TRNC5+0 LDA FCTNT GET S/W OPN ADDR ADA DEFSW LDB ANSW1+0 JSB A,I GET S/W ANSWER LDA WRDS+0 ROUND ANSWER LDB ANSW1+0 JSB RND5+0 CLE CHECK FOR EXPONENT OVERFLOW LDA INSTR+0 AND PS128 IF BIT 7 SET, SET E CPA PS128 CCE JSB EXPCK+0 LDA ANS1O+0 IF OVERFLOW, SET FLAG SOC LDA POS1 SWSTO STA ANS1O+0 ISZ STKP+0 GET RESULT INSTR LDA STKP+0,I SZA,RSS IF=0, GET ORIG. INSTR LDA INSTR+0 AND POS3 GET # WORDS IN RESULT ADA POS2 STA WDOUT+0 * JSB TRNC5+0 TRUNCATE ANSWER SWSTR ISZ STKP+0 STORE RESULT IF NECESSARY LDA STKP+0,I SZA,RSS IF #RSLT WORDS=0, NO SAVE JMP SWSLP ISZ STKP+0 LDA ANSW1+0 LDB STKP+0,I MVW POS5 LDA FCTNT IF FIX, THATS ALL CPA POS4 JMP SWSLP LDA WDOUT+0 PACK UP RETURNED RESULT STA WRDS+0 SET WRDS TO WDOUT LDB STKP+0,I JSB PAK5+0 JMP SWSLP GET NEXT INSTR * * SWSFX LDA OPND1+0 PUT OPERAND IN ANSW1 LDB ANSW1+0 MVW POS5 LDA WRDS+0 TR!UNCATE OPERAND STA WDIN+0 LDB ANSW1+0 * JSB TRNC5+0 LDA INTWD SET UP INTWD AND POS1 STA INTWD STA WDOUT+0 SET UP WDOUT ISZ WDOUT+0 JSB FIXOP+0 GET INTEGER LDA ANS1O+0 SOC SET FLAG IF OVERFLOW LDA POS1 STA ANS1O+0 ISZ STKP+0 ADVANCE POINTER JMP SWSTR TEST & SAVE RESULT * * SWSFT LDA OPND1+0 MOVE OPERAND TO ANSW1 LDB ANSW1+0 MVW POS5 LDA INTWD SET INTWD, WDIN AND POS1 STA INTWD STA WDIN+0 ISZ WDIN+0 LDB ANSW1+0 JSB FLTOP+0 GET FP # LDA WRDS+0 JSB TRNC5+0 TRUNC. RESULT LDA ANS1O+0 DON'T CHANGE OVERFLOW JMP SWSTO SAVE & HANDLE OVERFLOW,RESULT * * SWSEN LDA SWSTK,I JUMP OVER ERROR RETURN ADA POS1 JMP A,I RETURN TO CALLER * * *SSWSOP SWSOP NOP PUT OPERAND IN LOCS AT B REG IF #WORDS>0 ISZ STKP+0 GET # WORDS LDA STKP+0,I ISZ STKP+0 POINT TO ADDR SZA,RSS IF #WORDS=0, GO HOME JMP SWSOP,I LDA STKP+0,I ELSE MOVE IN BUFFER MVW POS5 B HAS ADDRESS LDA FCTNT IF FLOAT, THATS ALL CPA POS5 JMP SWSOP,I LDA WRDS+0 ELSE UNPACK # ADB NEG5 JSB UNPK5+0 JMP SWSOP,I DONE! * * * * * * * SKP * * ROUTINE TO TEST 5 WORD UNPACKED OPERANDS FOR RANGE * SETS ODFLG BASED ON THE MOST RESTRICTIVE OPERAND AS FOLLOWS * ODFLG= 0 NO RESTRICTIONS, STD OR 5 WORD FORMAT * 1 STD. OPERAND CANNOT BE COMPLEMENTED (5 WORD CAN) * 2 STD. OPERAND OVERFLOW, 5 WORD O.K. * 3 STD. OVERFLOW, 5 WORD CANNOT BE COMPLEMENTED * 4 STD. AND 5 WORD OVERFLOW * * STD. OVERFLOW: EXP.>127 OR <-128 * 5 WD OVERFLOW: EXP.>512 OR <-512 * NO COMPLIMENT: EXPONENT= MAX POS & OPERAND= -1 * OR MAX NEG 1/2 * * OPERAND ADDR5ESSES IN X,Y * RESULT RETURNED IN ODFLG, IF=4, NO SKIP OTHERWISE 1 INSTR SKIPPED * A,B,E MODIFIED * *SODTST ODTST NOP LDB OPND1+0 CHECK 1ST OPND FOR RANGE JSB ODCHK STA ODFLS SAVE ODFLG LDB OPND2+0 CHECK 2ND OPND JSB ODCHK LDB ODFLS CMB,INB PUT HIGHER OF 2 VALUES IN ODFLG ADB ODFLG SSB LDA ODFLS STA ODFLG CPA POS4 IF 5 WORD OVERFLOW, NO SKIP JMP ODTST,I ISZ ODTST IF NOT TOTALLY FATAL, SKIP INSTR JMP ODTST,I * ODFLS BSS 1 *EODTST * SKP * * ROUTINE TO TEST AN OPERAND FOR RANGE * B=ADDR OF OPND, RETURN WITH VALUE IN A REG. AND ODFLG * *SODCHK ODCHK NOP CLA CLEAR ODFLG STA ODFLG ADB POS4 A=EXPONENT LDA B,I SSA,RSS IF POS, A=-EXP CMA ADA PS127 TEST FOR EXP<127 AND >-128 SSA,RSS JMP ODCEX IF SO, DONE INA,SZA,RSS TEST FOR EXP=127,-128 JMP ODLMT IF SO, TEST MANTISSA ISZ ODFLG ELSE ODFLG>=2, TEST FOR 5 WRD CASE ISZ ODFLG ADA PS383 127+1+383=511 = 5 WD EXP. TEST SSA,RSS TEST FOR EXP<511 AND >-512 JMP ODCEX IF SO, DONE INA,SZA,RSS ELSE TEST IF=511 OR -512 JMP ODLMT IF SO, TEST MANTISSA LDA POS4 ELSE 5 WD OVERFLOW STA ODFLG PUT VALUE IN FLAG JMP ODCEX ODLMT ADB NEG4 TEST MANT FOR = 1/2 OR -1 LDA B,I A=MOST SIG WORD OF MANT CPA BIT14 TEST FOR 1/2 JMP ODCH0 IF SO TEST OTHER WORDS=0 CPA BIT15 TEST FOR -1 JMP ODCH0 IF SO TEST OTHER WORDS=0 JMP ODCEX IF NOT, DONE ODCH0 INB ADDR OF 2ND WORD LDA B,I SZA JMP ODCEX IF NOT=0, DONE INB TEST 3RD WORD LDA B,I SZA JMP ODCEX INB TEST 4TH WORD LDA B,I SZA,RSS ISZ ODFLG IF ALL WERE=0, INCREME8NT ODFLG ODCEX LDA ODFLG A REG. = RETURN VALUE JMP ODCHK,I DONE * *LODCHK NEG4 DEC -4 PS383 DEC 383 PS127 DEC 127 BIT14 OCT 40000 BIT15 OCT 100000 *EODCHK * * SKP * * * ROUTINE TO LOOP FROM OWRDS TO 5, TESTING HFP * ON ENTRY, B=ADDR OF 1ST OF 2 PAIRS OF OPERANDS TO EXECUTE (SAME RESULT) * A,B,X,Y,E MODIFIED * *SWRDLP WRDLP NOP STB OPNDS+0 SAVE ADDR OF OPND PAIRS LDA OWRDS+0 SET START # WORDS LDB WDFLG+0 =#WRDS>=OPWRDS CPA POS2 IF=2, READY JMP IWDLP BRS IF=3, START THERE CPA POS3 JMP IWDLP BRS CPA POS4 JMP IWDLP BRS IWDLP STB WDFLL SAVE ROTATED WDFLG STA WRDS+0 STA WDIN+0 SET #INPUT AND OUTPUT WORDS TO SAME STA WDIN2+0 STA WDOUT+0 SLB,RSS IF LSB=0, DONT TEST ON THIS #WORDS JMP WRDUP ADA NEG2 FORM INSTRUCTION ADA OPCOD STA INSTR+0 JSB SWOPN ROUND,TRUNC & PACK S/W ANSWER JSB HWOND SET POND1,NOND1,POND2,NOND2 LDA OPNDS,I ODAD1,2 = ADDRS OF 1ST OPNDS STA ODAD1+0 LDA OPNDS GET NEXT ONE ADA POS1 LDA A,I STA ODAD2+0 JSB HWTST GET & COMPARE HFP RESULTS LDA OPNDS GET NEXT PAIR OF OPNDS ADA POS2 LDA A,I STA ODAD1+0 LDA OPNDS ADA POS3 LDA A,I STA ODAD2+0 JSB HWTST GET & COMPARE HFP RESULTS WRDUP LDB WDFLL GET NEXT WORD FLAG BRS LDA WRDS+0 A=#WRDS INA INC FOR NEXT TIME SZB IF=0, NO MORE LOOPS JMP IWDLP ELSE TRY AGAIN JMP WRDLP,I IF SO, DONE-- RETURN * *LWRDLP * OPNDS BSS 1 OPERAND PAIRS STORAGE VAR. WDFLL BSS 1 *EWRDLP * * SKP *ROUTINE TO ROUND, CHECK, AND PACK SW ANSWERS * WITH BIT 7 =0,1 *GENERAL ANSWER IN ANSW *ANSWERS RETURNED IN ANSW1,ANSW2 *A,B,E LOST * *S SWOPN NOP * CLA,INA TEST FOR FIX,FLOAT CPA FIXFG JMP SWFIX YES, FIS CPA FLTFG JMP SWFLT * LDA ANSW+0 MOVE GEN. ANS INTO WORKING BUFFER LDB ANSW1+0 MVW POS5 LDB ANSW1+0 STD. ANSWER LDA WRDS+0 ROUND ANSWER TO # OF WORDS JSB RND5+0 LDA ANSW1+0 MOVE ANSWER TO ANSW2 ALSO LDB ANSW2+0 MVW POS5 LDA WRDS+0 CHECK FOR OVERFLOW-- BIT 7=0 LDB ANSW1+0 CLE FOR BIT 7=0 JSB EXPCK+0 CLA TEST OVERFLOW SOC INA STA ANS1O+0 LDA WRDS+0 PACK ANSW1 JSB PAK5+0 * LDA WRDS+0 CHECK FOR OVERFLOW-- BIT 7=1 LDB ANSW2+0 CCE FOR BIT 7=1 JSB EXPCK+0 CLA TEST FOR OVERFLOW SOC INA STA ANS2O+0 LDA WRDS+0 PACK ANSW2 JSB PAK5+0 JMP SWOPN,I DONE * * * SWFIX DLD ANSW+1 PUT ANSWER IN ANSW1,2 DST ANS13+0 DST ANS23+0 LDA ANSO+0 SAVE OVERFLOW STA ANS1O+0 STA ANS2O+0 JMP SWOPN,I ALL DONE * * * SWFLT LDA ANSW+0 MOVE ANSWER INTO WORKING BUFFER LDB ANSW1+0 MVW POS5 LDB ANSW1+0 PACK ANSWER LDA WRDS+0 JSB PAK5+0 LDA ANSW1+0 PUT SAME IN ANSW2 LDB ANSW2+0 MVW WDOUT+0 LDA POS0 CLEAR OVERFLOW REGS STA ANS1O+0 STA ANS2O+0 JMP SWOPN,I DONE! * SKP * * ROUTINE TO SET UP OPERANDS FOR HFP CALCULATIONS-- + AND - * MODIFIES A,B,E * *S HWOND NOP LDA OPND1+0 MOVE POS. OPNDS INTO WORKING BUFFER LDB POND1 MVW POS10 LDA OPND1+0 MOVE POS OPNDS INTO NEG. OPND BUFFER LDB NOND1 MVW POS10 * LDA FLTFG IF FLOAT, THATS ALL SZA JMP HWOND,I * LDB POND1 TRUNC & PACK 1ST OPND LDA WRDS+0 JSB PAK5+0 * LDA WRDS+0 SAME FOR 2ND OPND LDB POND2 JSB PAK5+0 * LDB NOND1 COMPLEMENT 1ST OPND JSB COM5+0 LDA WRDS+0 NOW PACK JSB PAK5+0 * LDB NOND2 COMPLEMENT 2ND OPND JSB COM5+0 LDA WRDS+0 PACK IT JSB PAK5+0 JMP HWOND,I DONE * SKP * * ROUTINE TO GET HFP RESULTS & COMPARE WITH S/W * * MODIFIES A,B,E * *ROUTINE TO TEST OPERANDS AND EXECUTE H/W TESTS AND COMPARISIONS * * *S HWTST NOP ISZ OPNNL+0 LOGICAL # OF OPERATION JMP *+1 LDA ODFLG TEST FOR SUITABLE OPERANDS CLE,SZA,RSS JMP HWTGO IF OK, GO ON CPA POS2 IF=2, CHECK FOR 5 WORDS JMP HWTS5 CPA POS4 IF=4, NO CHANCE JMP HWTST,I LDA ODAD1+0 CHECK 1ST OPND FOR ADDR OF NON-COMPL. OPND JSB POTST SET E IF NON COMPL. OPND LDA ODAD2+0 CHECK 2ND ADDR JSB POTST LDA ODFLG TEST FOR TYPE 3 CPA POS3 JMP HWTT3 IF SO TEST FOR NON COMPL AND 5 WD SEZ TYPE 2, TEST FOR NON COMPL JMP HWTS5 COMPL OPND, TEST FOR 5 WORDS JMP HWTGO NON COMPL OPNDS, OK * HWTT3 SEZ TYPE 3, MUST MEET BOTH TESTS JMP HWTST,I YOU LOSE HWTS5 LDA WRDS+0 TEST #WORDS=5 CPA POS5 JMP HWTGO OK, EXECUTE JMP HWTST,I SORRY, NO GO * HWTGO JSB HWOPN GET HFP RESULTS JSB CPANS COMPARE TO S/W -- REPORT ERRORS STELP RSS NORMALLY RETURN JMP HWSTT IF LOOP MODE, TEST CW JMP HWTST,I HWSTT JSB CWCHK+0 TEST CW, SET PARMS JMP HWTGO REPEAT LAST INSTRUCTION (GROUP OF 3) * * * * * * ROUTINE TO TEST IF OPND IS AT PON13 OR PON23 (NON COMPL. FORM) * A=ADDR OF OPND, SET E ON RETURN IF FAILS TEST * *S POTST NOP ROUTINE TO TEST ADDR OF OPND FOR = PON13,PON23 CPA POND1 TEST IF 1ST NON COMPL OPND JMP POTST,I IF=, OK-- RETURN CPA POND2 IF NOT 1ST, CHECK FOR 2ND JMP POTST,I RETURN IF= CCE a ELSE SET E, RETURN JMP POTST,I * * * * SKP * * * *ROUTINE TO COMPARE RESULTS FROM HFP WITH S/W *HFP RESULTS IN RSLT1,RSLT2,RSLT3 * S/W RESULTS IN ANSW1,ANSW2,ANSW3 *CALLS ERROR ROUTINE IN CASE OF DISCREPANCY * *S CPANS NOP STDCP RSS NORMALLY COMPARE, UNLESS JMP CPASP SPECIAL CONF. CPAN1 RSS NORMALLY TEST, UNLESS CW BIT 6 SET JMP CPAN2 LDA ANSW1+0 CHECK DIRECT/1ST RESULT LDB RSLT1+0 CMW WDOUT+0 JMP CPOV1 IF=, COMPARE OVERFLOW NOP ERROR JMP WRAN1 ERROR CPOV1 LDA ANS1O+0 CHECK OVERFLOW CPA RST1O+0 JMP CPAN2 IF=, OK-- GO ON WRAN1 CLA ELSE GO TO ERROR ROUTINE, 1ST TRY JSB WRANS * CPAN2 RSS NORMALLY TEST, UNLESS CW BIT 7 SET JMP CPAN3 LDA ANSW1+0 CHECK INDIRECT/2ND RESULT LDB RSLT2+0 CMW WDOUT+0 JMP CPOV2 IF=, CHECK OVFLW NOP JMP WRAN2 ERROR CPOV2 LDA ANS1O+0 CHECK OVFLW CPA RST2O+0 JMP CPAN3 IF=, CHECK NEXT RESULT WRAN2 CLA,INA ERROR-- GO TO ERROR ROUTINE-- 2ND TRY JSB WRANS * CPAN3 RSS NORMALLY TEST, UNLESS CW BIT 8 SET JMP CPANS,I IF SO, RETURN LDA ANSW2+0 BIT 7 ANSWER LDB RSLT3+0 CMW WDOUT+0 JMP CPOV3 IF=, CHECK OVERFLOW NOP JMP WRAN3 ERROR CPOV3 LDA ANS2O+0 CHJECK OVERFLOW CPA RST3O+0 JMP CPANS,I IF=, DONE WRAN3 LDA POS2 ERROR-- 3RD RESULT JSB WRANS JMP CPANS,I DONE * CPASP JSB SKNCW+0 CHECK FOR PORT TEST MODE DEF PORTB+0 JMP CPAPT IF SO, FUDGE POINTERS,... JSB SKNCW+0 TEST FOR DISPLAY ALL OPNS DEF DISPB+0 JMP CPADP IF SO, CALL WRANS 3 TIMES JMP CPANS,I ELSE DONE. CPADP CLA 1ST TRY JSB WRANS LDA POS1 2ND TRY JSB WRANS LDA POS2 JSB WRANS 3RD TRY -JMP CPANS,I DONE * CPAPT LDA WDIN+0 SET WDOUT= MIN(WDIN,WDOUT) LDB WDOUT+0 CMB,INB ADB A SSB STA WDOUT+0 LDA ODAD1+0 SET UP ANSW1,ANSW2=OPND1 LDB ANSW1+0 MVW WDOUT+0 LDA ODAD1+0 LDB ANSW2+0 MVW WDOUT+0 CLA SET EXPECTED OVFLS STA ANS1O+0 STA ANS2O+0 JSB SKNCW+0 TEST FOR PRINT ALL DEF DISPB+0 JMP CPADP IF SO, DO JMP CPAN1 ELSE NORMAL CHECK * * * * SKP * *ROUTINE TO SEND OPNDS TO HFP, GET RESULTS, FOR DIRECT, INDIRECT, BIT 7 *OPND ADDRS IN ODAD1,2 B=INSTRUCTION *RESULT RETURNED IN RSLT1, RSLT2, RSLT3 *A,B,E DESTROYED! * *SHWOPN HWOPN NOP ISZ HWCNT+2 JMP HWCLR ISZ HWCNT+1 JMP HWCLR ISZ HWCNT+0 NOP HWCLR NOP NORMALLY DON'T CLEAR BUFFERS JSB CLRST CLEAR OUT RESULTS LDB INSTR+0 B=OPCODE CLA,INA TEST FOR FIX,FLOAT CPA FIXFG JMP HFIX FIX OPERATION CPA FLTFG JMP HFLT FLOAT OPERATION * LDA ODAD1+0 STA I341+2 ADD,SUB,MPY OR DIV-- SAVE OPND ADDRESSES LDA ODAD2+0 STA I341+3 LDA WRDS+0 TEST FOR 2,5 WORDS CPA POS2 JMP ASMD2 2 WORD OPN * STB I341 3,4 WORD OPN PUT INSTR IN PLACE STB I342 ADB POS0 SET BIT 7 STB I343 * A.D31 RSS NORMALLY EXECUTE, UNLESS CW BIT 6 SET JMP A.D32 I341 NOP STD 3,4 WORDS, DIRECT DEF RST13+0 RESULT ADDR NOP 1ST OPND NOP 2ND OPND SOC IF OVERFLOW, SET WORD=1 ISZ RST1O+0 * A.D32 RSS NORMALLY EXECUTE, UNLESS CW BIT 7 SET JMP A.D33 I342 NOP 3,4 WORDS, INDIRECT DEF RSLT2+0,I RESULT DEF I341+2,I 1ST OPND DEF I341+3,I 2ND OPND SOC TEST OVERFLOW ISZ RST2O+0 SET WORD IF OVERFLOW * A.D33 RSS NORMALLY EXECUTE, UNLESS CW BIT 8 SET JMP HWOCH IF SO, TEST FOR 5 WORDS HFP71 XPD SPECIAL BIT 7 MACRO I343 NOP 3,4 WORDS INDIRECT, BIT 7 SET DEF RSLT3+0,I RESULT DEF I342+2,I 1ST OPND DEF I342+3,I 2ND OPND SOC TEST OVERFLOW ISZ RST3O+0 HWOCH LDA WRDS+0 IF 5 WORDS, CHOP OFF LAST 8 BITS CPA POS5 JMP *+2 JMP HWOPN,I RETURN NOW LDA RST13+3 AND UPBYT STA RST13+3 LDA RST23+3 AND UPBYT STA RST23+3 LDA RST33+3 AND UPBYT STA RST33+3 JMP HWOPN,I GO HOME * * * ASMD2 STB IN21 2 WORD OPN, SET UP INSTRUCTIONS STB IN22 ADB POS0 SET BIT 7 STB IN23 LDA ODAD2+0 STA IN21+1 SET UP OPND 2 * A.D21 RSS NORM EXECUTE JMP A.D22 DLD I341+2,I GET 1ST OPND IN A,B IN21 NOP 2 WORD INSTR, DIRECT NOP DEF TO 2ND OPND DST RST13+0 PUT RESULT IN BUFFER SOC TEST OVERFLOW ISZ RST1O+0 * A.D22 RSS NORM EXECUTE JMP A.D23 DLD I341+2,I GET 1ST OPND IN A,B IN22 NOP 2 WORD OPN, INDIRECT DEF IN21+1,I 2ND OPND DST RST23+0 SAVE RESULT SOC TEST OVERFLOW ISZ RST2O+0 * A.D23 RSS NORM EXECUTE JMP HWOPN,I ELSE RETURN DLD I341+2,I GET 1ST OPND HFP72 XPD SPECIAL BIT 7 MACRO IN23 NOP 2 WORD OPN, INDIRECT, BIT 7 SET DEF IN22+1,I 2ND OPND DST RST33+0 SAVE RESULT SOC TEST OVERFLOW ISZ RST3O+0 JMP HWOPN,I * * * HFIX LDA ODAD1+0 SAVE 1ST OPND STA X341+1 LDA INTWD SET WDOUT ADA POS1 STA WDOUT+0 LDA WRDS+0 TEST FOR 2,5 WORDS CPA POS2 JMP HFIX2 FIX AND FLOAT 2 WORD STB X341 SET UP INSTRS STB X342 ADB POS0 SET BIۄT 7 FOR 3RD OPN STB X343 * CLB CLEAR B FOR SINGLE FIX * FIX31 RSS NORM EXECUTE JMP FIX32 X341 NOP 3,4 WORD DIRECT FIXS, FIXD NOP DEF TO OPND STA RST13+0 STORE RESULT STB RST13+1 SOC TEST OVERFLOW ISZ RST1O+0 * FIX32 RSS NORM EXECUTE JMP FIX33 X342 NOP 3,4 WORD FIX INDIRECT DEF X341+1,I OPND STA RST23+0 SAVE RESULT STB RST23+1 SOC TEST OVERFLOW ISZ RST2O+0 * FIX33 RSS NORM EXECUTE JMP HWOPN,I RETURN X343 NOP 3,4 WORD FIX, INDIRECT, BIT 7 SET DEF X342+1,I OPND STA RST33+0 SAVE RESULT STB RST33+1 SOC TEST OVERFLOW ISZ RST3O+0 JMP HWOPN,I DONE * * HFIX2 STB FX21 SET UP INSTRS STB FX22 ADB POS0 STB FX23 * FIX21 RSS NORM EXEC. JMP FIX22 DLD X341+1,I GET OPND FX21 NOP 2 WORD FIX,FLOAT S-D STA RST13+0 STORE RESULT STB RST13+1 SOC TEST OVERFLOW ISZ RST1O+0 * FIX22 RSS NORM EXEC. JMP FIX23 DLD X341+1,I SAME THING AGAIN (NO IND. POSSIBLE) FX22 NOP 2 WORD FIX,FLOAT S-D STA RST23+0 STORE RESULT STB RST23+1 SOC TEST OVERFLOW ISZ RST2O+0 * FIX23 RSS NORM. EXEC. JMP HWOPN,I RETURN DLD X341+1,I SET BIT 7 THIS TIME FX23 NOP INSTR STA RST33+0 STORE RESULT STB RST33+1 * LDB INTWD * SZB,RSS * STA RST33+0 SOC TEST OVERFLOW ISZ RST3O+0 JMP HWOPN,I * * HFLT LDA ODAD1+0 SAVE OPND ADDR STA X341+1 LDA INTWD SET UP WDIN ADA POS1 STA WDIN+0 LDA WRDS+0 TEST FOR 2,5 WORDS CPA POS2 JMP HFLT2 * STB T341 SET UP INSTRS STB T342 ADB POS0 b STB T343 DLD X341+1,I * FLT31 RSS NORM EXEC JMP FLT32 T341 NOP 3,4 WORD DIRECT FLOAT S-D DEF RST13+0 RESULT SOC TEST OVERFLOW ISZ RST1O+0 * FLT32 RSS NORM EXEC JMP FLT33 T342 NOP 3,4 WORD INDIRECT FLOAT S-D DEF RST23+0 RESULT SOC TEST OVERFLOW ISZ RST2O+0 * FLT33 RSS NORM EXEC JMP HWOCH TEST FOR 5 WORDS T343 NOP 3,4 WORD INDIRECT, BIT 7 SET DEF RST33+0 RESULT SOC TEST OVERFLOW ISZ RST3O+0 JMP HWOCH TEST FOR 5 WORDS-- CHOP OFF RESULT * HFLT2 STB FT21 SET UP INSTRUCTIONS STB FT22 STB FT23 DLD X341+1,I IF DOUBLE B=1ST WORD * FLT21 RSS NORM EXECUTE JMP FLT22 FT21 NOP FLOAT S-D DST RST13+0 SAVE RESULT SOC TEST FOR OVERFLOW ISZ RST1O+0 * FLT22 RSS NORM EXECUTE JMP FLT23 DLD X341+1,I GET OPND FT22 NOP DST RST23+0 SAVE 2ND RESULT SOC TEST OVERFLOW ISZ RST2O+0 * FLT23 RSS NORM EXECUTE JMP HWOPN,I RETURN DLD X341+1,I GET OPND FT23 NOP DST RST33+0 SAVE 3RD RESULT SOC TEST OVERFLOW ISZ RST3O+0 JMP HWOPN,I DONE! * *EHWOPN * * * SKP * * ROUTINE TO RETRIEVE 2 OPNDS FROM THE DATA BUFFER * XR,YR ARE SET TO OPND ADDRESSES, * ON ENTRY, AR=0 FOR RESET, -1 FOR CURRENT OPNDS, 1 FOR NEXT OPND * ALSO, TWO PARMS PASSED, DEF BFBGN, DEF BFEND= BUF LIMITS * * *SGETOP GETOP NOP SZA,RSS IF A=0, RESET POINTERS JMP RESET SSA IF A<0, RETURN CURRENT OPNDS JMP RTNOP NXTOP LDA INXF SLA,RSS IF FLAG=0, USE INDEXED FORMAT JMP INXOP CLA,INA IF FIX OR FLOAT, BYPASS PTR2 CPA FIXFG JMP INCP1 CPA FLTFG JMP INCP1 LDPA PTR2 ADVANCE PTR2 TO NEXT OPND ADA ONDUP+0 IE FORWARD BY ONDUP STA PTR2 CMA,INA IF PTR2>BFEND, RESET PTR2 AND ADVANCE PTR1 ADA BFEND SSA,RSS JMP INCNT ELSE GET OPERAND INCP1 LDA PTR1 ADVANCE PTR1 ADA ONDUP+0 GPBEX STA PTR1 STA PTR2 PTR2=PTR1 CMA,INA IF PTR1>BFEND, RETURN WITHOUT SKIP ADA BFEND AND WITHOUT OPND SSA JMP GETOP,I RETURN W/O SKIP, ALSO YESET,I GPCNT... INCNT ISZ GPCNT RTNOP LDA PTR1 PUT 1ST OPND IN OPND1 LDB OPND1+0 CBX XR= OPND1 ADDR MWP1 MVW POS5 LDA PTR2 PUT 2ND OPND IN OPND2 LDB OPND2+0 CBY YR=OPND2 ADDR MWP2 MVW POS5 ISZ GETOP NORMAL EXIT WITH SKIP JMP GETOP,I LAND HO, MATES * * THIS SECTION RETURNS INDEXED OPERANDS * INXOP LDA GPTR GET INDEXES TO OPERANDS ADA GPCNT LDA A,I SSA IF INDEX<0, DONE WITH THIS PART JMP RSET2 SET UP FOR ALL COMB TEST STA INXP SAVE INDEX WORD AND LWBYT A=INDEX OF 2ND OPND IN TABLE LDB A MPY INDEX BY 5 TO GET OFFSET ALS,ALS ADA B ADA BFBGN FORM PTR2 STA PTR2 LDA INXP HIGH BYTE HAS 1ST OPND ADDR ALF,ALF AND LWBYT LDB A MPY INDEX BY 5 TO GET OFFSET ALS,ALS ADA B ADA BFBGN FORM PTR1 STA PTR1 JMP INCNT INC COUNT AND PUT OPNDS IN OPND1 & 2 * *INITIALIZATION SECTION * RESET CLA CLEAR COUNTER STA GPCNT STA INXF =0 FOR INDEXED OPNS, 1 FOR EXHAUSTIVE * LDA GETOP,I GET OPND BUFFER LIMITS STA BFBGN ISZ GETOP LDA GETOP,I STA BFEND ISZ GETOP * LDA INXBF SET UP INDEX POINTER ADA TSTN+0 ADD IN TEST# LDA A,I GET ADDR OF BUFFER FOR CURRENT OPERATION SEZ,RSS IF E=0, NO INDEXING LDA ONES Fp STA GPTR JMP GETOP,I THATS ALL FOR NOW RSET2 LDA BFBGN SET PTR1 TO BFBGN, ISZ INXF SET UP FOR EXHAUSTIVE TEST JMP GPBEX SET PTR1, PTR2 TO BFBGN, GET OPNDS * *LGETOP * LWBYT OCT 377 INXF BSS 1 INXP BSS 1 PTR1 BSS 1 PTR2 BSS 1 GPCNT BSS 1 BFBGN BSS 1 BFEND BSS 1 GPTR BSS 1 ONES DEF NEG1 INXBF DEF *+1 DEF FIXBF DEF FIXBF DEF FLTBF DEF FLTBF DEF ADDBF DEF SUBBF DEF MPYBF DEF DIVBF * FLTBF EQU * FIXBF EQU * SUBBF EQU * MPYBF EQU * DIVBF EQU * ADDBF BYT 1,1 BYT 3,3 OCT 177777 * *EGETOP * * * * ROUTINE TO ADJUST STANDARD OPERANDS, BOTH MANTISSA AND EXPONENT * USES PASS COUNT, WDCNT * * ON ENTRY BREG=ADDR OF OPERAND * * MODIFIES A,B,E * *SOPMIX OPMIX NOP LDA B,I IF MANT=0, DON'T CHANGE IT SZA,RSS JMP OPMIX,I ADB POS4 FORM EXP. ADDR STB OPMPT SAVE IT LDA EVNOD+0 IF ODD, USE LAST OPNDS BASE SLA JMP OPMBS * JSB RANF+0 GET FP #, A=EXP, B=MANT STA BASSV SAVE IT JSB RANF+0 ANOTHER ADA BASSV STA BASSV OPMBS JSB RANF+0 AGAIN ADA BASSV -45= TERMINATOR * * IF AN ERROR OCCURS, ERMS AND FATAL ARE CALLED (NO RTN. STD) * INSEB NOP INSEL DST ISBAB SAVE A,B REGS DLD INSEB,I GET OPCODE,RTNS ISZ INSEB SZA,RSS IF OPCODE=0, DONE JMP INSBD DST JINSX+1 STORE OPCODE,RTNS IN PLACE ISZ INSEB POINT TO ERROR MSG LDA INSEB,I PUT IT IN PLACE STA JERMS+1 ISZ INSEB ADA POS2 GET MESSAGE PART, PRINT IN DIAG. MODE LDB IMIBP MVW POS7 JSB MSGD DEF IMISB+0 JINSX JSB INSEX EXECUTE INSTR BSS 2 OPCODE,RTNS JMP INSEL IF NO ERROR, GET NEXT INSTR DST ISBAB SAVE A,B LDA ISSAV SET SWR-- INSURE ERROR PRINT OTA SW JERMS JSB ERMS,I ERROR, REPORT BSS 1 DEF TO MSG DLD ISBAB GET A,B BACK JSB FATAL JMP INSEL IN CASE OF RETURN * INSBD DLD ISBAB GET LAST RTNS JMP INSEB,I * * POS2 DEC 2 POS7 DEC 7 ISBAB BSS 2 A,B SAVE IMIBP DEF IMISB+0 IMISB ASC 8, 2 WORD ADD / * * SKP *S * ROUTINE TO EXECUTE 1 INSTR, TEST RETURN * * CALLING SEQ: JSB INSEX * OPCODE * VALID RETURN POINTS (BIT 0 FOR OPCODE+1) * * SKIPS IF ERROR * INSEX NOP LDA ISXEN GET ADDR IF 1ST WORD OF NEXT HALF PAGE IOϱR BT0.8 INA STA ISXBP SAVE ADDR AND BIT9 IF END OF ROUTINE IS IN LOW HALF OF PAGE, IOR ISZR0 THEN A=ISZ REL TOP HALF OF PAGE STA ISZR IF IN TOP HALF, A=ISZ REL BOTTOM HALF OF PAGE LDA ISXBP RESTORE A CPA ISZR IF SAME PAGE AS ADDR OF OPNDS, THEN INC ADA BIT10 STA ISXBP LDB ISXS1 SAVE AREA IN BUFFER MVW POS20 * LDA DISZR FILL BUF WITH ISZS LDB DISZR INB MVW POS15 * LDA ISZR SAVE LOCS AT OPND ADDRS... LDB ISXS2 MVW POS16 * LDA INSEX,I GET OPCODE STA ISXOP PUT IN BUFFER LDA ISXBF TRANSFER BUFFER TO THE CHOSEN PAGE LDB ISXBP MVW POS20 * CLA CLEAR X,Y CXA CAY STA ISZR,I CLEAR POTENTIAL OPNDS LDA ISZR LDB ISZR INB MVW POS15 * LDA ISZR A,B=ADDR OF OPNDS... LDB ISZR JMP ISXBP,I GO EXECUTE INSTRUCTION * * INSX2 LDA ISXBP,I GET RTN CNT CMA,INA COMPUTE RTN POINT ADA POS16 ADA DBIT0 WANT IN 2**N FORM, IE BIT CORR. TO RTN LDA A,I STA ISXRT SAVE RTN * LDA ISXS1 RESTORE RAVAGED MEMORY LDB ISXBP MVW POS20 LDA ISXS2 LDB ISXOP+1 MVW POS16 * LDA ISXRT GET ACTUAL RETN ISZ INSEX AND INSEX,I CHECK IF RETURN IS A VALID ONE LDB INSEX,I B=LEGAL RETURNS ISZ INSEX BUT FIRST SET NON ERROR RTN POINT SZA,RSS IF NO MATCH, BUMP RTN ADDR ISZ INSEX BUMP RTN LDA ISXRT A=RETN POINT JMP INSEX,I * POS15 DEC 15 POS16 DEC 16 POS20 DEC 20 BT0.8 OCT 777 BIT9 OCT 1000 BIT10 OCT 2000 ISZR0 OCT 36000 ISZ CURR PAGE REL. 0 ISXBP BSS 1 ISXRT BSS 1 * ISXS1 DEF *+1 BSS 20 ISXS2 DEF *+1 BSS 16 * DISZR DEF ISZR ISXBF DEF *+1 INSTRUCTION EXECUTION BUFFER ISXCT NOP  RTN CNT ISXOP NOP INSTRUCTION ISZR BSS 16 ISZ CURRENT PAGE RELATIVE INSTRUCTION JMP BPLNK,I RETURN TO INSEX * ORB PUT RTN ADDR POINTER ON BASE PAGE BPLNK DEF INSX2 ORR * ISXEN DEF * * *ASET BSS 1 *OS16 DEC 16 *G255 DEC -255 *BAST ISZ BASET *BAST STA BASET *AVBF DEF *+1 * BSS 16 * *1ISX ASC 24,E000 PROGRAM PAGE CROSS ERROR ON ROUTINE INSEX/ *2ISX ASC 24,E000 PROGRAM PAGE LOC ERROR ON ROUTINE INSEX/ * * * SKP *S * ROUTINE TO PUT REV ID# INTO OUTPUT BUFFER * * CALLING SEQ: * JSB IDCNF * DEF BUFR * IDCNF NOP LDB IDCNF,I GET ADDR OF ID IN BUFFER ADB POS5 CLE START IN UPPER BYTE JSB O2AS,I CONVERT # TO ASCII ISZ IDCNF SET RTN JMP IDCNF,I * POS5 DEC 5 * * * * *S * ROUTINE TO CHECK S REG FOR PRETEST RETN, PRINT ERROR MSG, FATAL * * CALLING SEQ: * JSB CHKPT * DEF MSG * CHKPT NOP DST CHKPA SAVE A,B LDA CHKPT,I GET MSG STA CHKPM PUT IN PLACE ISZ CHKPT RETURN LOC. LIA SW GET SWREG STA CHKPS SAVE LDB ISSAV SET SWREG OTB SW SZA,RSS IF=0 OK JMP CHKP1 CPA HLT77 OR IF=102077 OK JMP CHKP1 JSB ERMS,I REPORT ERRROR CHKPM BSS 1 DEF TO MSG LDA CHKPS A=SWREG CLB B=0 JSB FATAL ITS A NO RETURN TYPE... * CHKP1 DLD CHKPA GET A,B RETURN JMP CHKPT,I GO HOME * CHKPA BSS 2 A,B SAVE CHKPS BSS 1 SREG SAVE HLT77 OCT 102077 * * * * * * SKP *S * ROUTINE TO MAKE N COPIES OF A WORD AT SOME LOC. * * CALLING SEQ: JSB CLONE * N * SOURCE ADDR * DEST. ADDR * CLONE NOP LDA CLONE,I GET N ADA NEG1 CLCNT=#WORDS-1 STA CLCN$HFBT ISZ CLONE LDA CLONE,I GET WORD LDA A,I ISZ CLONE LDB CLONE,I GET DEST ADDR STA B,I PUT WORD IN DEST BUF. LDA B A=ADDR OF 1ST WORD INB NEXT LOC. MVW CLCNT COPY N-1 TIMES ISZ CLONE RETN ADDR JMP CLONE,I DONE * NEG1 DEC -1 CLCNT BSS 1 * * * * SKP *S * ROUTINE TO PRINT A,B IF IN DIAG. MODE * CALLING SEQ: JSB MSGAB * * SAVES A,B * MSGAB NOP STA MABSA STB MABSB CLE UPPER BYTE LDB IMABP ADDR OF MSG ADB POS2 START OF A JSB O2AS,I CONVERT TO ASCII LDB IMABP NOW B ADB POS7 LDA MABSB GET B JSB O2AS,I CONVERT JSB MSGD PRINT MSG DEF IMMAB+0 LDA MABSA GET A,B LDB MABSB JMP MSGAB,I DONE * MABSA BSS 1 MABSB BSS 1 IMABP DEF *+1 IMMAB ASC 11, A=XXXXXX B=XXXXXX / * * * * SKP *S * ROUTINE TO TRAP ON FATAL ERRORS, DISALLOW CONTINUATION * FATAL NOP JSB ERMS,I DEF EMFTL+0 JSB MSGAB PRINT A,B IF IN DIAG. MODE FATLP JSB PAUSE HALT FOR OPERATOR DEF *+2 DEF HLT0+0 JSB IFBRK TEST FOR OPERATOR INTERVENTION DEF *+1 SZA,RSS IF NOT, LOOP JMP FATLP JSB DNPUX ELSE GET INPUTS DEF *+1 JMP FATAL,I AND RETURN * HLT0 HLT 0 EMFTL ASC 10,E000 FATAL ERROR / * * END rhH  12740-18005 1926 S C0122 &HFAUX FPP-SIS             H0101 6ASMB,L,C *&HFAUX * * FPP DIAGNOSTIC AUXILARY ROUTINES * * THIS MODULE CONTAINS ROUTINES TO REPORT ERRORS, SET OPTIONS, ETC. * REFERENCES ARE MADE TO ENTRYS IN EXT MODULES FOR SETTING PARMS, ETC. * INITIALIZATION ROUTINES, ETC. ARE ALSO INCLUDED. * * *CREATED 780606 1345 * EDITED 780930 TO CALL SWRT FROM PASST, MODIFY CWCHK * TO ADD INDB TO FLAGS-TESTS * EDITED 781126 TO ADD WDINI, WRDIX CALLED BY STSTI * EDITED 781129 TO ADD ERINI FOR ECODE,EBASE INIT, CALL BY STSTI * EDITED 781209 TO ADD DISPLAY ALL TO CWCNF, SKNCW, PORT MODE * EDITED 790110 TO ADD RTNB FLAG TO ATAN,TANH * EDITED 790417 TO FIX BUG IN OPDIN- DEF TO MAWRD FOR WORD# (DAWRD) * EDITED 790520 TO FIX FFP2 ERROR BASE * EDITED 790525 TO CHG TRNL TO DPOL * * LAST CODE CHANGE 790525 1400 CC * * NAM HFAUX 790525 1400 REV 1926 CC * A EQU 0 B EQU 1 SW EQU 1 * * SKP * FLAG BIT DEFINITIONS * A.DB EQU 1 ADD-DIV FCTN FIXB EQU 2 FIX FCTN FLTB EQU 4 FLT FCTN ACCB EQU 10B ACC. FCTN SISB EQU 20B SIS FCTN FFPB EQU 40B FFP FCTN INDB EQU 100B INDS USED OD1B EQU 200B 1 OPND OD2B EQU 400B 2 OPNDS OD3B EQU 600B 3 OR MORE OPNDS RT1B EQU 1000B 1 RSLT RT2B EQU 2000B 2 RSLTS RT3B EQU 3000B 3 OR MORE RSLTS INTB EQU 4000B INTEGER OPN OVFB EQU 10000B OVF VALID EXTB EQU 20000B E BIT VALID RTNB EQU 40000B MULTIPLE RETURN POINTS * * * * SKP * CONF WORD DEFINITIONS ENOPB EQU 1B OPTIONS ENABLE NMSGB EQU 2B INHIBIT INFO MSGS NWD2B EQU 4B NO 2 WORD OPNS TST00-TST08 NWD3B EQU 10B NO 3 WORD OPNS TST00-TST08 NWD4B EQU 20B NO 4 WORD OPNS TST00-TST08 NWD5B EQU 40B NO 5 WORD OPNS TST00-TST08 N1O3B EQU 100B NO 1 OF 3 OPNS, TST00-TST07 N2O3B EQU 200B NO 2 OF 3 OPNS, TST00-TST07 N3O3B EQU 400B NO 3 OF 3 OPNS, TST00-TST07 NVARB EQU 1000B NONVARYING PASAES#, TST00-TST14 SHOTB EQU 2000B SHORT OUTPUT, TST00-TST13,TST15 NCMPB EQU 4000B INHIBIT ANSWER COMPARE, TST00-TST13,TST15 REPTB EQU 10000B REPEAT OPN, TST00-TST13 DISPB EQU 20000B DISPLAY ALL OPNS, WHETHER FAIL OR NOT, NO CHECK PORTB EQU 40000B PORT TEST MODE, TST00-TST07 * * SKP ENT ASCNV,OPERR ENT STROP,STHLT,STRFN,TINIT ENT STSTE,STSTI,STINI,PASND,PASST ENT CWCHK,CWCNF,RANFI,RANF ENT MSGI,MSGD,MSGIN ENT SKNF1,SKF1,GETPM ENT SKNCW ENT OPDIN ENT WRANS ENT ACBLD ENT ACPRT * ENT DISPB,PORTB * ENT OVFB,EXTB,RTNB * * EXT A.D21 EXT A.D22,A.D23,A.D31,A.D32,A.D33 EXT ACBT7,ACCCP EXT ACELP EXT ACLPS EXT ACOD1,ACOD2,ACOD3,ACOD4,ACOD5 EXT ACOD6,ACOP1,ACOP2,ACOP3,ACOP4 EXT ACOP5,ACOP6,ACOPI,ACOPZ,ANS13 EXT ANS23,ANSW1,ANSW2,ANSWZ,AOVFL EXT ARSLT,AS2N EXT CPAN1,CPAN2,CPAN3 EXT DBIT0,DIECP,DIELP,DNPUX EXT ECODE,EOVFL,ERCNT,ERMS,ERSLT EXT EVNOD,FIX21,FIX22,FIX23,FIX31 EXT FIX32,FIX33,FIXFG,FLT21,FLT22 EXT FLT23,FLT31,FLT32,FLT33,FLTFG,HIWRD EXT IC,ICEN,IFBRK,INBUF,INBUZ EXT INDCT,INSTR,IS,IST,LOWRD,LPCNT EXT MSGC,NOPND,NRSLT EXT O2AS,ODAD1,ODAD2,OEILP,ONDUP EXT OPNDN,OPNNL,OTINS,OTND1 EXT OTND2,PASSF,PASSL EXT RSLT1,RSLT2,RSLTZ EXT RST13,RST23,SLIN,STDAM,STDCP EXT STELP,STKP,STSTN,SWBF1,SWRT EXT TECNT,TRYN,TSTLP,TSTN EXT WDFLG,WDIN,WDIN2,WDOU2 EXT WDOUT,WRDS * * * INSTRUCTION DEFINITIONS * MIC RST,105006B,0 BOX RESET MIC PRT,105010B,0 MPP PORTB X-Y * SUP * * SKP * CONSTANTS * ASC0 OCT 60 BLNK2 ASC 1, MSGND ASC 1,/ NEG1 DEC -1 POS1 DEC 1 POS2 DEC 2 POS3 DEC 3 POS4 DEC 4 POS5 DEC 5 POS7 DEC 7 POS15 DEC 15 UBLNK OCT 20000 * * * VARIABLES * EBASE OCT 0 ERROR BAYgSE FLAG1 BSS 1 FLAG FOR PRINT FMTS, MICRO FCTN TYPE, ETC. WRDSL BSS 1 * * * * PPER1 DEF OPER1 PPER2 DEF OPER2 PPER3 DEF OPER3 PPER4 DEF OPER4 PPER5 DEF OPER5 PPER6 DEF OPER6 PPER7 DEF OPER7 PPER8 DEF OPER8 * * * * ASCII DATA BUFFERS * * OPER1 ASC 28,EXXX XXXX X WD OPCODE= XXXXXX ASC 6, / OPER2 ASC 28,INSTRUCTION: X WD XXXX OPCODE XXXXXX ASC 2, / OPER3 ASC 28,1ST OPERAND XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX ASC 9,XXXXXX XXXXXX OPER4 ASC 28,2ND OPERAND XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX ASC 2, / OPER5 ASC 28,ACTUAL RESULT XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX ASC 8,XXXXXX XXXXXX OPER6 ASC 28,ACTUAL OVERFLOW X ASC 2, / OPER7 ASC 28,EXPECTED RESULT XXXXXX XXXXXX XXXXXX XXXXXX XXXXXX ASC 8,XXXXXX XXXXXX / OPER8 ASC 28,EXPECTED OVFLW X ASC 2, / OPER9 ASC 2, / * * * * * * ACER1 ASC 28,BUFR1 ASC 8, ASC 1,/ ACER2 ASC 28,BUFR2 ASC 8, ASC 1,/ ACER3 ASC 28,BUFR3 ASC 8, ASC 1,/ ACER4 ASC 28,BUFR4 ASC 8, ASC 1,/ ACER5 ASC 28,BUFR5 ASC 8, ASC 1,/ ACER6 ASC 28,BUFR6 ASC 8, ASC 1,/ * ACER7 ASC 28,OPND1 ASC 4, ASC 1,/ ACER8 ASC 28,OPND2 ASC 4, ASC 1,/ ACER9 ASC 28,OPND3 ASC 4, ASC 1,/ ACE10 ASC 28,OPND4 ASC 4, ASC 1,/ ACE11 ASC 28,OPND5 ASC 4, ASC 1,/ ACE12 ASC 28,OPND6 ASC 4, ASC 1,/ * ACE13 ASC 28,ANSW1 ASC 4, ASC 1,/ ACE14 ASC 28,ANSW2 ASC 4, ASC 1,/ ACE15 ASC 28,RSLT1 ASC 4, ASC 1,/ ACE16 ASC 28,RSLT2 ASC 4, ASC 1,/ * * * * * * * * * * SKP * *ROUTINE TO REPORT HFP FAILURES VIA HALTS AND OR A CRT *ON ENTRY A=OPN #-1, IE 0 FOR DIRECT, 1 FOR IND 2, 2 FOR BIT 7 *A,B,E DESTROYED * *SWRANS WRANS NOP WRSET RST RESET BOX, (MPP1) NOP r IN CASE ITS AN "E" STA TRYN SAVE TRY # ISZ ERCNT INC COUNT OF ERRORS NOP ISZ TECNT ERRORS THIS TEST NOP CLA JSB SKNF1 IF NOT ASMD, NO INSTR ADJ. ABS A.DB LDA TRYN IF ASMD, TRYN TO MODIFY INSTR CLE,ERA IF =2, SET BIT 7 CPA POS1 ADA PS127 ADA INSTR PUT INSTRUCTION CODE IN BUFFER STA OTINS LDB PPER1 PUT INSTR IN OUTPUT BUFFER ADB POS16 CLE JSB O2AS,I LDA WRDS PUT #WORDS IN OUTPUT BUFFER ADA ASC0 ADA UBLNK LDB IC IF #WRDS=0, AND IC(0)=0, TERMINATE E MSG SLB,RSS LDB WRDS SZB,RSS LDA MSGND LDB PPER1 GET ADDR OF WORDS IN BUFFER ADB POS5 STA B,I JSB STRFN PUT OPERATION MNEMONIC IN OUTPUT BUFFER JSB STHLT SET UP HALT CODE IN BUFFER * LDA MSGND NORMALLY PUT TERM AFTER #WORDS LDB IC IF LSB SET, PUT OPND IDENT IN BUFFER, PRINT OPCODE SLB,RSS JMP WRNDE JSB OPDID LDA BLNK2 NO TERM AFTER #WORDS IN E MSG WRNDE LDB PPER1 PUT TERM OR BLNK AFTER #WORDS IN E MSG ADB POS8 STA B,I * * * LDA NEG22 CLEAR ERROR REPORT BUFFERS STA WRCNT CLA LDB OTND1 FROM OTND1 THRU AOVFL CLRBF STA B,I INB ISZ WRCNT IF CNT=0, DONE JMP CLRBF * JSB SKF1 IF NO OPNDS, DONT MOVE INTO BUFFER ABS OD1B+OD2B JMP WRATR LDA ODAD1 MOVE IST OPND IN LDB OTND1 MVW WDIN LDA ODAD2 2ND OPND LDB OTND2 MVW WDIN2 WRATR LDA TRYN EXPECTED ANSWER CLE,ERA A= 1 FOR BIT 7 ADA ANSWZ LDA A,I LDB ERSLT MVW WDOUT LDA TRYN EXPECTED OVERFLOW CLE,ERA ADA ANSWZ LDA A,I ADA POS5 LDA A,I STA EOVFL LDA TRYN HFP RESULT ADA RS+LTZ LDA A,I A= ANSWER ADDR LDB ARSLT MVW WDOUT LDA RSLTZ HFP OVERFLOW ADA TRYN LDA A,I ADA POS5 LDA A,I STA AOVFL * JSB OPERR GO TO ERROR ROUTINE-- LOAD UP BUFFERS WITH ASCII * WRAST RSS NORMALLY PRINT LONG MESSAGE JMP WRASH JSB SKNF1 DETERMINE PRINT FORMAT ABS ACCB TEST FOR ACC. TYPE FMT JMP WRACT YES, TEST FURTHER * JSB SKF1 IF NO OPNDS, USE MINI ACC. FORM ABS OD1B+OD2B JMP WRPAC JSB SKNF1 NOW FOR THE 1 OPND ONES ABS OD1B JMP WRP1O JSB ERMS,I PRINT MESSAGES & RESULTS DEF OPER1,I DEF OPER3,I DEF OPER4,I DEF OPER7,I DEF OPER5,I DEF OPER9 JMP WRCNF WRP1O JSB ERMS,I ONLY 1 OPERAND DEF OPER1,I DEF OPER3,I DEF OPER7,I DEF OPER5,I DEF OPER9 JMP WRCNF * WRACT LDA IC TEST FOR BUFFER PRINTING SLA JMP WRACB YES, WE DO WRPAC JSB ERMS,I NO OPERANDS DEF OPER1,I DEF OPER7,I DEF OPER5,I DEF OPER9 JMP WRCNF * WRACB JSB ACBLD LOAD UP ACC. BUFFERS JSB ERMS,I PRINT ERROR MESSAGE, ACC. BUFFERS DEF OPER1,I DEF OPER9,I DEF ACER1,I DEF ACER2,I DEF ACER3,I DEF ACER4,I DEF ACER5,I DEF ACER6,I DEF BLKLN,I DEF ACER7,I DEF ACER8,I DEF ACER9,I DEF ACE10,I DEF ACE11,I DEF ACE12,I DEF BLKLN,I DEF ACE13,I DEF ACE15,I DEF ACE14,I DEF ACE16,I DEF BLKLN JMP WRCNF CHECK CONF. * WRCNF JSB CWCHK TEST CW, SET PARMS JSB CWCNF SET PARMS UNCOND. LDA IC IF BIT 12 OF CW SET, SET TO LOOP MODE SLA,RSS BUT IF BIT0=0, NO CHANCE JMP WRANS,I AND BIT12 SZA,RSS JMP WRANS,I ELSE RETURN cCLA STA STELP SET RSS'S TO NOPS STA ACELP STA DIELP JMP WRANS,I NOW RETURN * WRASH JSB ERMS,I JUST REPORT 1ST LINE DEF OPER1 JMP WRCNF TEST CONFIGURATION * *LWRANS * BIT12 OCT 10000 POS16 DEC 16 PS127 DEC 127 BLKLN ASC 1, / NEG22 DEC -22 WRCNT BSS 1 *EWRANS * * * * * * SKP * * * * ROUTINE TO CALCULATE OPERAND IDENTIFIER FOR ASMDXT ROUTINES * * ALSO STORES SUBTEST#, AND LOG. PASS COUNT * * * * MODIFIES A,B,E * * *SOPDID OPDID NOP LDA OPNDN OPND IDENT. CLE FORM ASCII LDB PPER1 ADB POS20 PUT IN BUFFER AFTER INSTR JSB O2AS,I * LDA STSTN PUT SUB TEST IN AFTER IDENT LDB PPER1 ADB POS24 JSB O2AS,I * LDA PASSL AND LOG. PASS# INA LDB PPER1 ADB POS28 JSB O2AS,I * LDA MSGND LDB PPER1 ADB POS32 PUT TERM. CHAR IN BUFFER AFTER IT STA B,I JMP OPDID,I * *LOPDID * POS20 DEC 20 POS24 DEC 24 POS28 DEC 28 POS32 DEC 32 *EOPDID * * SKP * * ROUTINE TO LOAD UP ACCUMULATOR BUFFERS WITH OPNDS,RSLTS * * *S ACBLD NOP * JSB LDBFR LOAD UP BUFFERS WITH OPERANDS AND RESULTS DEF SWBF1+0,I DEF ACER1+4 DEF SWBF1+1,I DEF ACER2+4 DEF SWBF1+2,I DEF ACER3+4 DEF SWBF1+3,I DEF ACER4+4 DEF SWBF1+4,I DEF ACER5+4 DEF SWBF1+5,I DEF ACER6+4 DEF ACOP1+0 DEF ACER7+4 DEF ACOD1+0 DEF ACER7+8 DEF ACOP2+0 DEF ACER8+4 DEF ACOD2+0 DEF ACER8+8 DEF ACOP3+0 DEF ACER9+4 DEF ACOD3+0 DEF ACER9+8 DEF ACOP4+0 DEF ACE10+4 DEF ACOD4+0 DEF ACE10+8 DEF ACOP5+0 DEF ACE11+4 DEF ACOD5+0 DEF ACE11+8 DEF ACOP6+0 DEF ACE12+4 DEF ACOD6+0 DEF ACE12+8 DEF ANSW1+0 DEF ACE13+4 DEF ANS13+0 DEF ACE13+8 DEF ANSW2+0 DEF ACE14+4 DEF ANS23+0 DEF ACE14+8 DEF RSLT1+0 DEF ACE15+4 DEF RST13+0 DEF ACE15+8 DEF RSLT2+0 DEF ACE16+4 DEF RST23+0 DEF ACE16+8 OCT 0 TERMINATOR * JMP ACBLD,I DONE * * * * SKP * * * ROUTINE TO LOAD UP ASCII BUFFER WITH NUMBERS * * CALLING SEQ: JSB LDBFR * DEF NUM1 * DEF BUF1 * DEF NUM2 * DEF BUF2 * . * . * OCT 0 * * WHERE NUMX IS ADDR OF 1ST NUMBER TO GO IN BUFFER (CAN BE INDIRECT) * AND BUFX IS ADDR OF 1ST BUFFER LOCATION, DIRECT ONLY * STOPS LOADING NUMBERS WHEN A "/ " IS REACHED IN THE BUFFER * *S LDBFR NOP LDBLP LDA LDBFR GET ADDR OF 1ST #, CHECK FOR IND. LDA A,I RAL,CLE,SLA,ERA IF SIGN BIT CLEAR, GO ON JMP *-2 ELSE LOOP AGAIN ISZ LDBFR INC POINTER SZA,RSS IF ADDR=0,RETURN JMP LDBFR,I LDB LDBFR,I B=BUFFER ADDR ISZ LDBFR INC POINTER AGAIN STA LDBP1 SAVE POINTER TO # LINLP STB LDBP2 SAVE BUFFER POINTER LDB B,I TEST BUFFER FOR "/ " CPB MSGND JMP LDBLP IF SO, GO TO NEXT BUFFER LDA LDBP1,I A=NUMBER LDB LDBP2 B=ADDR IN BUFFER JSB O2AS,I CONVERT TO ASCII ISZ LDBP1 TMPA POINTS TO NEXT # LDB LDBP2 ADVANCE 4 WORDS IN BUFFER ADB POS4 JMP LINLP TRY NEXT # * LDBP1 BSS 1 LDBP2 BSS 1 * * SKP * * * * * ROUTINE TO GET OPND FOR TSTMN * *SOPDIN OPDIN NOP JSB MSGIN SEND & GET # DEF MAWDS "#WORDS" JSB ASCNV CONV TO OCTAL STA STKP,I PUT IN BUFFER STA WDIN ISZ STKP LDB A B=#WORDS LDA ACOPI GET OPND ADDR x AND POS7 ONLY 8 POSSIBLE ADA ACOPZ BASE ADDR LDA A,I STA STKP,I STA OPTR SAVE POINTER ISZ STKP SZB,RSS IF #WORDS=0, RETURN JMP OPDIN,I ISZ ACOPI INC OPND PTR CLA GET 1ST WORD STA OPDCT WORD COUNTER OPDIL ISZ OPDCT LDA ASC0 PUT WORD # IN BUFFER ADA OPDCT LDB DAWRD ADB POS2 STA B,I JSB MSGIN SEND MSG, GET WORD DAWRD DEF MAWRD "WORD X" JSB ASCNV GET OCTAL STA OPTR,I PUT IN OPND BUFFER ISZ OPTR LDA OPDCT IF CNT=#WORDS, DONE CPA WDIN JMP OPDIN,I DONE JMP OPDIL * *LOPDIN * MAWDS ASC 6,NWORDS: _ / MAWRD ASC 6,WORD : _ / OPTR BSS 1 OPDCT BSS 1 *EOPDIN * * * * * ROUTINE TO OUTPUT MESSAGE AND READ FROM CONSOLE * ON ENTRY, B REG=ADDR OF MESSAGE, * ON EXIT A REG=#CHARS RETURNED STARTING AT INBUF * *SMSGIN MSGIN NOP LDA BLNK2 CLEAR INPUT BUFFER STA INBUF STA INBUF+1 STA INBUF+2 STA INBUF+3 LDA MSGIN,I ADDR OF ASCII BUFFER STA *+2 PUT ADDR AFTER JSB JSB MSGC,I SEND MESSAGE BSS 1 LDA POS7 7 CHARS MAX LDB INBUZ BUFFER ADDR JSB SLIN,I GET INPUT ISZ MSGIN POINT TO RETURN POINT JMP MSGIN,I RETURN * * * SKP *S * ROUTINE TO PRINT ACC. BUFFERS FOR TSTMN * ACPRT NOP JSB MSGC,I DEF ACER1,I DEF ACER2,I DEF ACER3,I DEF ACER4,I DEF ACER5,I DEF ACER6,I DEF ACER7,I DEF ACER8,I DEF ACER9,I DEF ACE10,I DEF ACE11,I DEF ACE12,I DEF ACE13,I DEF ACE15,I DEF ACE14,I DEF ACE16,I DEF BLKLN * JMP ACPRT,I * * * ROUTINE TO CONVERT FROM ASCII STRING IN INBUF, TO OCTAL=> A REG * *S ASCNV NOP CCA,CLE START WITH UPPER BYTE, OCTAL LDB INBUZ JSB AS2N,I CONF. ROUTINE JMP ASCNV,I THATS IT! * * * * * SKP * * * SUBR TO SET UP NUMBERS FOR ERROR MESSAGES * CLEARS BUFFERS AND LOADS IN OPNDS,RESULTS, AND CALLS ERMS * *SOPERR OPERR NOP * JSB SKNF1 IF ACC. OPN, NO OPERANDS ABS ACCB JMP LDRST * JSB SKF1 IF NO OPNDS, DONT LOAD BUFFERS ABS OD1B+OD2B JMP LDRST LDA WDIN SET UP NUMBER OF INPUT WORDS STA WRDSL LDA OTND1 LOAD ASCII OF 1ST OPND LDB PPER3 GET BUF ADDR ADB POS8 STB OPEAS JSB STROP DEF OPEAS * JSB SKF1 TEST FOR OVFL PRESET ABS OVFB JMP OPOXT IF NOT, TEST FOR EXT LDA OEILP GET LSB OF PARM AND BIT0 JSB STRFG PUT VALUE IN OPND1 BUFFER DEF ASCOF DEF OPEAS OPOXT JSB SKF1 TEST FOR EXT PRESET ABS EXTB JMP OPOIT IF NOT TEST FOR INDS LDA OEILP GET PARM RAR AND BIT0 JSB STRFG PUT IN BUF DEF ASCXT DEF OPEAS OPOIT JSB SKF1 TEST FOR INDS ABS INDB JMP OPEO2 GO ON TO 2ND OPND LDA INDCT JSB STRFG PUT IN BUF DEF ASCID DEF OPEAS OPEO2 LDA OTND2 2ND OPERAND LDB PPER4 ADB POS8 STB OPEAS JSB STROP DEF OPEAS LDRST LDA WDOUT SET UP NUMBER OF OUTPUT WORDS STA WRDSL LDB PPER5 ADB POS8 STB OPEAS JSB SKF1 TEST FOR RSLT PRINT ABS RT1B JMP OPAOV NO, CHECK FOR OVFLW LDA ARSLT A=RSLT ADDR JSB STROP DEF OPEAS OPAOV JSB SKF1 TEST FOR OVFL PRINT ABS OVFB JMP OPAXT LDA AOVFL AND BIT0 ONLY LSB JSB STRFG DEF ASCOF DEF OPEAS * OPAXT JSB SKF1 TEST FOR EXT PARM ABS EXTB JMP OPART LDA AOVFL GET EXTEND BIT RAR AND BIT0 JSB STRFG ́ DEF ASCXT DEF OPEAS * OPART JSB SKF1 TEST FOR RTN PARM ABS RTNB IF NO RTN PARM GO TO NEXT SECTION JMP OPEED LDA AOVFL RTN=UPPER 8 BITS ALF,ALF AND LWBYT JSB STRFG DEF ASCRT DEF OPEAS * * OPEED LDB PPER7 ADB POS8 STB OPEAS SAVE ADDR JSB SKF1 CHECK FOR RSLT PRINT ABS RT1B JMP OPEOV LDA ERSLT A=RSLT ADDR JSB STROP DEF OPEAS OPEOV JSB SKF1 TEST FOR OVFLW PRINTING ABS OVFB JMP OPEXT TEST FOR EXT LDA EOVFL AND BIT0 JSB STRFG DEF ASCOF DEF OPEAS * OPEXT JSB SKF1 TEST FOR E BIT PRINT ABS EXTB JMP OPERT TEST FOR RTN LDA EOVFL GET E BIT RAR AND BIT0 JSB STRFG DEF ASCXT DEF OPEAS * OPERT JSB SKF1 ABS RTNB IF NO RTN PARM, GO ON JMP OPEND LDA EOVFL GET RETURN PARM ALF,ALF AND LWBYT JSB STRFG DEF ASCRT DEF OPEAS * * OPEND JMP OPERR,I * * *LOPERR * BIT0 OCT 1 POS8 DEC 8 LWBYT OCT 377 * ASCOF ASC 2,OVF= ASCXT ASC 2,EXT= ASCRT ASC 2,RTN= ASCID ASC 2,IND= OPEAS BSS 1 SAVE FOR BUF ADDR *EOPERR * SKP * SUBR TO STORE N WORDS IN BUFFER, * ENTRY: A=FROM ADDR * JSB STROP * DEF TO POINTER TO TO ADDR, WHICH IS ADJUSTED UP BY N WORDS * N TAKEN FROM WRDSL * *SSTROP STROP NOP STA STRSA SAVE ADDR OF NUMBERS LDB STROP,I GET DEST ADDR STB STRBS SAVE POINTER LDB B,I LDA WRDSL CMA,CLE,INA STA STRCT SET CNT= -#WORDS STRLP STB STRBS,I SAVE CURRENT POINTER LDA STRSA,I STORE NUMBER JSB O2AS,I ISZ STRSA GET NEXT NUMBER LDB STRBS,I GET NEXT LOCATION ADB POS4 ISZ STRCT TEST FOR DONE JMP STRLP NO -- PROCESS NEXT WORD LDA MSGND PUT TERM. CHAR AFTER BUFFER STA B,I STB STRBS,I SAVE BUF POINTER ISZ STROP GET RTN ADDR JMP STROP,I PULL ANCHOR & SET THE MIZZEN * STRCT BSS 1 STRSA BSS 1 STRBS BSS 1 * * SKP *SSTRFG * SUBROUTINE TO PUT FLAG, INCL. ASCII NAME IN OUTPUT BUFFER * ENTRY: A=FLAG * JSB STRFG * DEF ASCII NAME (2 WRDS) * DEF BUF POINTER, WHICH CONTAINS ADDR INTO OUTPUT BUFFER * * EXIT: BUF POINTER=OLD+4 * STRFG NOP STA STRFS LDA STRFG,I GET ASC. DESCR. ISZ STRFG GET BUF POINTER LDB STRFG,I STB STRAS SAVE ADDR LDB B,I GET POINTER MVW POS2 TRANSFER DESCR. TO BUFFER LDA STRFS GET FLAG ADA ASC0 CONVERT TI ASCII ADA UBLNK STA B,I PUT IN BUFFER ADB POS2 ADVANCE POINTER STB STRAS,I SAVE UPDATED BUF POINTER LDA MSGND PUT TERM. CHAR AFTER BUFFER STA B,I ISZ STRFG RET. ADDR JMP STRFG,I * STRFS BSS 1 STRAS BSS 1 * * * SKP * SUBR TO PUT ASCII OF ERROR CODE IN A BUFFER * * *SSTHLT STHLT NOP * JSB SKF1 IF ASMDXT, COMPUTE ECODE ABS A.DB+FIXB+FLTB JMP STHLD * ECODE=TRYN*4+WRDS-2 LDA TRYN ALR,ALR ADA WRDS ADA NEG2 USE WRDS-2 STA ECODE STHLD LDA ETYPE NOW MAKE ASCII ADA ASC0 ADA UPE UPPER BYTE="E" STA PPER1,I PUT IN ERROR BUFFER LDA ECODE NOW FOR ERROR CODE ADA EBASE ADD IN BASE LDB A B=SAME AND POS7 ADA ASC0 BRS,BRS BRS ADB ASC0 BLF,BLF MOVE TO UPPER BYTE ADA B PUT IN A TOO LDB PPER1 GET ADDR INB STA B,I PUT ASCII OF ERROR IN BUFFER JMP STHLT,I NOW WE CAN RELAX * *LSTHLT * NEG2 DEC -2 UPE OCT 42400 BT0.7 OCT 377 ETYPE BSS 1 ERROR CODE TYPE *ESTHLT * * SK;P * * SUBR TO STORE MNEMONIC OF OPERATION IN BUFFER * BR= ADDR OF BUFFER, TSTN IS USED AS INDEX * *S STRFN NOP LDB PPER1 GET INSTR MNEMONIC ADDR ADB POS3 STB STRBP SAVE ADDR OF BUFFER LDA ASCTX STORE FUNCTION NAME IN BUFFER ADA TSTN LDA A,I LDB STSTN GET OFFSET FROM BUFF ADDR, IN CASE IND. ADB B 2 WORDS RAL,CLE,SLA,ERA SKIP IF NOT IND,IF SO CLEAR BIT 15 ADA B ADD IN OFFSET LDB A,I B=1ST WORD STB STRBP,I PUT IN BUFFER INA NEXT WORD TOO LDB A,I ISZ STRBP STB STRBP,I JMP STRFN,I JIBE HO! * STRBP BSS 1 * * * ASCII DATA BUFFER POINTERS * ASCTX DEF *+2 INDEX ON TSTN, THEN SFCTN DEF ASCOV,I TSTBC DEF ASCXS FIXS DEF ASCXD FIXD DEF ASCTS FLTS DEF ASCTD FLTD DEF ASCAD ADD DEF ASCSB SUB DEF ASCMP MPY DEF ASCDV DIV DEF ASCAC ACC DEF ASCS1,I SIS1 DEF ASCS2,I SIS2 DEF ASCS3,I SIS2 DEF ASCF1,I FFP1 DEF ASCF2,I FFP2 DEF ASCF3,I FFP1 DEF ASCMN MAN. ENTRY TEST * * * * ASCII FUNCTION NAMES * ASCAD ASC 2,ADD ASCSB ASC 2,SUB ASCMP ASC 2,MPY ASCDV ASC 2,DIV ASCXS ASC 2,FIXS ASCXD ASC 2,FIXD ASCTS ASC 2,FLTS ASCTD ASC 2,FLTD ASCAC ASC 2,ACC ASCMN ASC 2,MAN * ASCOV ASC 2,OVFL ASCRN ASC 2,RETN * * ASCS1 ASC 2,TAN ASC 2,ALOG ASC 2,ATAN ASC 2,COS ASC 2,SIN ASC 2,ALGT * ASCS2 ASC 2,SQRT ASC 2,EXP ASC 2,TANH * ASCS3 ASC 2,DPOL ASC 2,CMRT ASC 2,ATLG ASC 2,FPWR ASC 2,TPWR * * ASCF3 ASC 2,DAD ASC 2,DSB ASC 2,DMP ASC 2,DDI ASC 2,DSBR ASC 2,DDIR ASC 2,DIN ASC 2,DDE ASC 2,DIS ASC 2,DDS ASC 2,DNG ASC 2,DCO ASC 2,.BLE ASC 2,.NGL r ASC 2,FCM ASC 2,TCM * ASCF1 ASC 2,DBLE ASC 2,SNGL ASC 2,DCM ASC 2,PWR2 ASC 2,FLUN ASC 2,PACK ASC 2,XPAK ASC 2,XCOM ASC 2,DDIN * ASCF2 ASC 2,DFER ASC 2,XFER ASC 2,CFER ASC 2,ENTR ASC 2,ENTP ASC 2,SETP ASC 2,GOTO ASC 2,MAP * * * * * * SKP *STINIT * ROUTINE TO INITALIZE PARAMETERS FOR ALL TESTS, ETC. * TINIT NOP CLA CLEAR OPNDN STA OPNDN STA ECODE STA EBASE STA ETYPE STA TSTLP LOOP COUNT STA OEILP OVF,EXT,IND PARM STA INDCT IND. COUNTER STA TRYN STA LPCNT SUB LOOP COUNT STA EVNOD STA OPNNL CLEAR LOG. OPN# STA STSTN STA TECNT ALSO TEST ERROR COUNT LDA POS1 SET LOWRD, HIWRD STA LOWRD LDA POS5 STA HIWRD LDA POS15 ALSO WDFLG STA WDFLG * * JSB RANFI INIT RANF FOR PASSL * * JSB CWCHK TEST & GET CW JSB CWCNF * JMP TINIT,I DONE * * SKP * * SUBROUTINE TO EXECUTE SUBTESTS IF SELECTED * CALLING SEQUENCE: JSB STSTE * OCT SHORT PASS SUBTESTS * DEF SUBTEST1,I * DEF SUBTEST2,I * ... * DEF SUBTESTN * * *S STSTE NOP CCA RESET SUBTEST CNTR STA STSTN LDA IST SET UP LOCAL COPY OF SUBTEST WORD SZA,RSS IF=0, SET TO ALL ONES CMA LDB PASSF =1 FOR SHORT PASS SZB IF SHORT PASS, AND WITH SUBTEST PARM AND STSTE,I RAL SHIFT ONCE FOR LOOP STA STESL SAVE IT ISZ STSTE POINT TO NEXT WORD STEL1 ISZ STSTN NOP * JSB CWCHK TEST & SET CONF. WORD JSB CWCNF JSB STSTI SET FLAG1 LDA STESL ROTATE POINTER RAR STA STESL #$ CMA,SLA IF BIT NOT SET, NOT THIS SUBTEST JMP STENC NO, NOT THIS ONE LDA STSTE,I GET SUBTEST ADDR RAL,CLE,ERA MASK OFF IND. BIT (FLAG FOR MORE) JSB A,I * STENC LDA STSTE,I CHECK IND BIT FOR FURTHER TESTS ISZ STSTE SSA IF IND, GO AGAIN JMP STEL1 JMP STSTE,I ELSE DONE * STESL BSS 1 LOCAL VAR * * * * SKP * * ROUTINE TO SET FLAG1 FROM STSTN * ALSO WRDS, ETC. * *SSTSTI STSTI NOP LDA FLG1X INDEX OFF TSTN INTO FLAG LIST ADA TSTN LDA A,I RAL,CLE,SLA,ERA IF IND, INDEX OFF STSTN JMP *+2 JMP STST1 ADA STSTN LDA A,I NOW WE GOT IT * STST1 STA FLAG1 SAVE IT * CLA SET FIXFG,FLTFG JSB SKNF1 ABS FIXB CLA,INA IF SET, FLAG=1 STA FIXFG CLA NOW FOR FLTFG JSB SKNF1 ABS FLTB CLA,INA STA FLTFG * * JSB WDINI GET WRDS,ETC. JSB ERINI GET ECODES, EBASES. JSB STINI INIT RANDOM # GEN. JMP STSTI,I * *LSTSTI * * * * GENERAL FLAGS FOR TESTS, SUBTESTS * INDEX OFF TSTN, IF BIT15 SET, INDEX AGAIN BY SUBTEST * FLG1X DEF *+2 INDEX FOR FLAGS- FCTNS,OPNDS, ETC DEF BASF,I BASIC TEST ABS FIXB+INTB+OVFB+OD1B+RT1B FIXS ABS FIXB+INTB+OVFB+OD1B+RT1B FIXD ABS FLTB+INTB+OVFB+OD1B+RT1B FLTS ABS FLTB+INTB+OVFB+OD1B+RT1B FLTD ABS A.DB+OVFB+OD2B+RT1B ADD ABS A.DB+OVFB+OD2B+RT1B SUB ABS A.DB+OVFB+OD2B+RT1B MPY ABS A.DB+OVFB+OD2B+RT1B DIV ABS ACCB+OVFB+OD3B+RT2B ACC DEF SS1F,I SIS1 DEF SS2F,I SIS2 DEF SS3F,I SIS3, DP TRANS. DE UF FF1F,I DBL INTS DEF FF2F,I FFP ARITH DEF FF3F,I FFP PARMS,ETC ABS ACCB+OVFB+OD3B+RT2B MAN. ENTRY * BASF ABS OVFB OVFL TEST ABS RTNB RETN TEST ABS 0 BUSY TEST ABS A.DB+OVFB+OD2B+RT1B ADD OPN ABS FIXB+INTB+OVFB+OD1B+RT1B FIXD OPN ABS SISB+OVFB+OD1B+RT1B TAN ABS SISB+OVFB+OD1B+RTNB SQRT * SS1F ABS SISB+OVFB+OD1B+RT1B+RTNB TAN ABS SISB+OVFB+OD1B+RT1B+RTNB ALOG ABS SISB+OVFB+OD1B+RT1B+RTNB ATAN ABS SISB+OVFB+OD1B+RT1B+RTNB COS ABS SISB+OVFB+OD1B+RT1B+RTNB SIN ABS SISB+OVFB+OD1B+RT1B+RTNB ALGT * SS2F ABS SISB+OVFB+OD1B+RT1B+RTNB SQRT ABS SISB+OVFB+OD1B+RT1B+RTNB EXP ABS SISB+OVFB+OD1B+RT1B+RTNB TANH * SS3F ABS SISB+OVFB+RT1B+RTNB+INDB /TRNL ABS SISB+OVFB+RT1B+RTNB+INDB /CMRT ABS SISB+OVFB+OD1B+RT1B+RTNB /ATLG ABS SISB+OVFB+OD2B+RT1B+RTNB+INDB .FPWR ABS SISB+OVFB+OD2B+RT1B+RTNB+INDB .TPWR * * FF3F ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DAD ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DSB ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DMP ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DDI ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DSBR ABS FFPB+INTB+OD2B+RT1B+OVFB+EXTB+RTNB+INDB DDIR ABS FFPB+INTB+OD1B+RT1B+OVFB+EXTB+RTNB DIN ABS FFPB+INTB+OD1B+RT1B+OVFB+EXTB+RTNB DDE ABS FFPB+INTB+OD1B+RT1B+OVFB+EXTB+RTNB+INDB DIS ABS FFPB+INTB+OD1B+RT1B+OVFB+EXTB+RTNB+INDB DDS ABS FFPB+INTB+OD1B+RT1B+OVFB+EXTB+RTNB DNG ABS FFPB+INTB+OD2B+EXTB+RTNB+INDB DCO * ABS FFPB+OD1B+RT1B+OVFB+RTNB+INDB .BLE ABS FFPB+OD1B+RT1B+OVFB+RTNB+INDB .NGL ABS FFPB+OD1B+RT1B+OVFB+RTNB ..FCM ABS FFPB+OD1B+RT1B+OVFB+RTNB+INDB ..TCM * * FF1F ABS FFPB+OD1B+RT1B+OVFB+RTNB DBLE ABS FFPB+OD1B+RT1B+OVFB+RTNB SNGL ABS FFPB+OD1B+RT1B+OVFB+RTNB ..DCM ABS FFPB+OD1B+RT1B+OVFB+RTNB .PWR2 ABS FFPB+OD1B+RT1B+OVFB+RTNB .FLUN ABS FFPB+OD1B+RT1B+OVFB+RTNB .PACK ABS FFPB+OD1B+RT1B+OVFB+RTNB .XPAK ABS FFPB+OD1B+RT1B+OVFB+RTNB .XCOM ABS FFPB+OD1B+RT1B+OVFB+RTNB DDINT * FF2F ABS FFPB+OD1B+RT1B+RTNB DFER ABS FFPB+OD1B+RT1B+RTNB XFER ABS FFPB+OD1B+RT1B+RTNB CFER ABS FFPB+OD3B+RT3B+RTNB .ENTR ABS FFPB+OD3B+RT3B+RTNB .ENTP ABS FFPB+OD3B+RT3B+RTNB .SETP ABS FFPB+OD3B+RTNB .GOTO ABS FFPB+OD3B+RT1B+RTNB ..MAP * * *ESTSTI * * SKP *S * ROUTINE TO INITAILIZE WRDS,ETC. FOR SUBTEST * USES WRDIX TABLE * WDINI NOP LDA WRDIX GET TABLE POINTER STA WIBFP SAVE LDA TSTN SET UP COUNT INA =COMPL OF TSTN -2, SINCE TSTBC IS=-1 WDIN1 CMA STA WICNT SAVE * WILP JSB WIPOP GET ENTRY IN TABLE INA,SZA,RSS TEST FOR NEG 1 JMP WICHK IF SO, USE LAST VALUES ADA NEG1 RESTORE A RAL,CLE,SLA,ERA IF IND, USE STSTN JMP WISCK IF TSTN MATCHES... STA WRDS VALID ENTRY, READ & SET PARMS CLA CLEAR NOPND,MRSLT STA NOPND STA NRSLT JSB WI:POP STA WDIN SZA,RSS IF=0, NEXT SECTION JMP WIRST ISZ NOPND INC OPND CNT JSB WIPOP STA WDIN2 SZA,RSS IF NOT 0, 1 MORE JMP WIRST ISZ NOPND JSB WIPOP INC POINTER * WIRST JSB WIPOP GET RSLT WRDS STA WDOUT SZA,RSS IF 0, NO MORE JMP WICHK ISZ NRSLT INC RSLT CNT JSB WIPOP STA WDOU2 2ND RSLT SZA,RSS IF NOT 0, 1 MORE JMP WICHK ISZ NRSLT JSB WIPOP * WICHK ISZ WICNT TEST COUNT FOR DONE JMP WILP NO JMP WDINI,I YES, DONE * WISCK ISZ WICNT TEST FOR TSTN MATCH JMP WILP NO.. CONTINUE STA WIBFP YES, NEW BUF POINTER LDA STSTN USE STSTN FOR COUNT JMP WDIN1 * * WIPOP NOP ROUTINE TO GET TABLE PARM, INC POINTER LDA WIBFP,I ISZ WIBFP JMP WIPOP,I THATS ALL * * * WICNT BSS 1 WIBFP BSS 1 * * * * TABLE FOR WRDS, WDIN,WDIN2,WDOUT,WDOU2 * *FORMAT- USE TSTN TO THREAD WRDIX: * 1ST WD= -1 MEANS USE PREVIOUS ENTRY * IF NEG, (NOT -1) TAKE AS DEF, THREAD BY STSTN * ELSE READ: WRDS,WDIN,,,WDOUT,, * WHERE <> MEANS PRESENT IF PRIOR WRD NOT=0 * * TABLE IS TRAVERSED UNTIL DESIRED ENTRY IS FOUND * (TSTN-STSTN MATCH). * * * WRDIX DEF *+1 INDEX FOR WORDS- WRDS,WDIN,..., WDOUT,... DEF BASWD,I BASIC TESTS DEC 2,2,0,1,0 FIXS DEC 2,2,0,2,0 FIXD DEC 2,1,0,2,0 FLTS DEC 2,2,0,2,0 FLTD DEC 2,2,2,0,2,0 ADD DEC -1 SUB DEC -1 MPY DEC -1 DIV d DEC 0,0,0 ACC DEC 2,2,0,2,0 SIS1 DEC -1 SIS2 DEF SS3WD,I SIS3 DEF FF1WD,I FFP1 DEF FF2WD,I FFP2 DEF FF3WD,I FFP3 DEC 0,0,0 MAN * BASWD DEC 0,0,0 OVFL * SS3WD DEC 4,23,0,4,0 /TRNL DEC 4,13,0,4,0 /CMRT DEC 4,4,0,4,0 /ATLG DEC 2,2,2,0,2,0 .FPWR DEC 4,4,4,0,4,0 .TPWR * FF3WD DEC 2,2,2,0,2,0 .DAD DEC -1 .DSB DEC -1 .DMP DEC -1 .DDI DEC -1 .DSBR DEC -1 .DDIR DEC 2,2,0,2,0 .DIN DEC -1 .DDE DEC -1 .DIS DEC -1 .DDS DEC -1 .DNG DEC 2,2,2,0,2,0 .DCO * DEC 4,2,0,4,0 .BLE DEC 4,4,0,2,0 .NGL DEC 2,2,0,2,0 ..FCM DEC 4,4,0,4,0 ..TCM * * FF1WD DEC 3,2,0,3,0 DBLE DEC 3,3,0,2,0 SNGL DEC 3,3,0,3,0 ..DCM DEC 2,2,1,0,2,0 .PWR2 DEC 2,1,0,2,0 .FLUN DEC 2,2,1,0,2,0 .PACK `DEC 3,1,3,0,3,0 .XPAK DEC 3,3,0,4,0 .XCOM DEC 3,3,0,3,0 DDINT * FF2WD DEC 3,3,0,2,3,0 .DFER DEC -1 .XFER DEC 4,4,0,2,4,0 .CFER DEC 0,0,0 .ENTR DEC -1 .ENTP DEC -1 .SETP DEC -1 .GOTO DEC -1 ..MAP * * * * * *S * ROUTINE TO INIT. ETYPE,ECODE,EBASE FOR ERROR REPORTINF * ERINI NOP LDA ETYPS SET ECODE ADA TSTN LDA A,I STA ETYPE * LDA EBASS SET EBASE ADA TSTN LDA A,I STA EBASE * LDA STSTN SET ECODE STA ECODE * JMP ERINI,I DONE * * * ETYPS DEF *+2 TYPE CODES FOR TEST ERRORS OCT 0 TSTBC OCT 1 FIXS OCT 1 FIXD OCT 1 FLTS OCT 1 FLTD OCT 2 ADD OCT 2 SUB OCT 2 MPY OCT 2 DIV OCT 3 ACC OCT 3 SIS 1 OCT 3 SIS 2 OCT 3 SIS 3 OCT 3 FFP 1 OCT 3 FFP 2 OCT 3 FFP 3 OCT 3 MAN ENTRY * * * EBASS DEF *+2 BASEERROR CODES FOR TEST ERRORS OCT 0 TSTBC, NOT USED OCT 0 FIXS OCT 14 FIXD OCT 30 FLTS OCT 44 FLTD OCT 0 ADD OCT 14 SUB OCT 30 MPY OCT 44 DIV OCT 0 ACC , SETS ITSELF OCT 10 SIS 1 OCT 16 SIS 2 OCT 21 SIS 3 OCT 30 FFP 1 OCT 0 FFP 2, SETS ITSELF OCT 50 FFP 3 OCT 0 MAN YENTRY SETS ITSELF * * * * * * SKP * ROUTINE TO INITIALIZE SUB TESTS-- CLEAR OPNDN * *S STINI NOP CLA STA OPNDN JSB RANFI INIT. RAND.# GEN. JMP STINI,I * * ROUTINE TO HANDLE LOGICAL PASS COUNT, CALLED FROM CNTL SECTION * PASSL IS DECREMENTED IF CW BIT 9 IS SET (ITS INC'D IN CNTL SECTION) * *S PASND NOP LDA IC CHECK CW BIT 9 AND BIT9 SZA,RSS IF NOT SET, JUST RETURN JMP PASND,I LDA PASSL IF SET, DEC IT, SINCE IT WAS INC'D ALREADY ADA NEG1 STA PASSL JMP PASND,I * BIT9 OCT 1000 * * * SKP * ROUTINE TO SET PASS FLAG FOR SHORT OR LONG PASSES, ALSO ONDUP * *SPASST PASST NOP * JSB SWRT,I GET SWREG (IN B) NOP DONT CARE LDA B * AND BIT8 IF BIT 8 SET, SHORT PASSES CPA PASSF IF SAME, DON'T CHANGE ANYTHING JMP PASST,I GO HOME STA PASSF ELSE SAVE NEW FLAG * JSB PRTCK CHECK FOR PORT MODE, TELL OP LDA PASSF GET FLAG SZA,RSS TEST FOR LONG PASSES JMP PSLNG LDA POS15 SHORT, SPACE BETWEEN OPNDS STA ONDUP LDA NEG64 STA ACLPS JSB MSGC,I TELL OPERATOR DEF MSGSP JMP PASST,I DONE * PSLNG LDA POS5 USE ALL OPNDS STA ONDUP LDA N1000 STA ACLPS JSB MSGC,I TELL OPERATOR DEF MSGLP "LONG" JMP PASST,I DONE NOW * *LPASST * NEG64 DEC -64 BIT8 OCT 400 MSGSP ASC 7,SHORT PASSES / MSGLP ASC 7,LONG PASSES / N1000 DEC -1000 *EPASST * SKP * * ROUTINE TO TEST FOR PORT TEST MODE, TELL OPERATOR * PRTCK NOP JSB SKNCW TEST CW BIT ABS PORTB JMP PRTC1 JMP PRTCK,I NO, JUST RETURN * PRTC1 JSB MSGC,I TELL OPERATOR DEF PRTMG JMP PRTCK,I DONE * PRTMG ASC 8,PORT TEST MODE / * * * * * SKP * ROUTINE TO SET PARAMETERS BASEBD ON CONFIGURATION WORD (CW) * * MODIFIES A,B,E * *SCWCHK CWCHK NOP * JSB SWRT,I GET SW INPUT NOP DON'T CARE JSB IFBRK TEST FOR BREAK OR SWREG BIT 7 DEF *+1 SZA,RSS IF NOT, RETURN JMP CWCHK,I JSB DNPUX IF SO, GET INPUTS DEF *+1 JSB CWCNF CONFIGURE JMP CWCHK,I DONE *LCWCHK * ICOLD BSS 1 *ECWCHK * *SCWCNF CWCNF NOP LDA IC GET CONF. WORD LDB POS1 SLA IF LSB SET, SET PRIV FLAG STB ICEN SLA,RSS IF BIT0=0, MASK OFF ALL BITS CLA RAR,RAR SET UP LOWRD STA TMPIC SAVE ROTATED WORD CMA BIT SET FOR EXECUTION AND POS15 ONLY WORD BITS STA WDFLG SAVE IN FLAG WORD CLB FIRST CLEAR LOWRD,HIWRD STB LOWRD STB HIWRD SLA,RAR IF BIT SET HIWRD=2 LDB POS2 SLA,RAR LDB POS3 SLA,RAR LDB POS4 SLA LDB POS5 STB HIWRD SLA,RAL NO BACK FOR LOWRD LDB POS4 SLA,RAL LDB POS3 SLA,RAL LDB POS2 SLA LDB POS1 STB LOWRD LDA TMPIC TEST FOR DIRECT OPNS RAR,RAR RAR,RAR STA TMPIC LDB RSS NORMALLY, PUT RSS IN LOCS SLA CLB IF BIT SET, USE NOPS STB A.D21 STB A.D31 STB FIX21 STB FIX31 STB FLT21 STB FLT31 STB CPAN1 * LDA TMPIC SIMILARLY FOR BIT7, INDIRECTS RAR STA TMPIC LDB RSS SLA CLB STB A.D22 STB A.D32 STB FIX22 STB FIX32 STB FLT22 STB FLT32 STB CPAN2 * LDA TMPIC AND FOR BIT 8, THE 3RD OPERATION RAR STA TMPIC LDB RSS SLA CLB STB A.D23 STB A.D33 STB FIX23 STB FIX33 STB FLT23 STB FLT33 < STB CPAN3 STB ACBT7 * * LDA TMPIC IF BIT 9 SET, OPNDS WON'T VARY FROM PASS TO PASS RAR STA TMPIC NOT DONE HERE, SEE PASND * * * * * LDA TMPIC BIT 10, TEST FOR SHORT ERROR MESSAGES RAR STA TMPIC LDB RSS SLA CLB STB WRAST * LDA TMPIC BIT11, IF SET DON'T COMPARE HW & SW ANSWERS RAR STA TMPIC LDB RSS NORMALLY RSS= COMPARE SLA CLB STB STDCP ASMDXT COMPARE STB ACCCP ACC. OPNS STB DIECP OTHER TESTS * * * LDA TMPIC TEST FOR BIT 12 CLEAR RAR STA TMPIC SLA IF SET, DON'T DO ANYTHING JMP CWCN1 LDB RSS IF CLEAR, STOP LOOPS STB STELP STB ACELP STB DIELP * CWCN1 LDA TMPIC TEST FOR DIPLAY ALL OPNS- BIT 13 RAR STA TMPIC RAL,RAL WANT OR OF BITS 11&13 IOR TMPIC LDB RSS NORM. RSS SLA IF EITHER BIT SET, NOP CLB STB STDCP STB ACCCP STB DIECP * LDA TMPIC BIT 14, PORT TEST MODE RAR STA TMPIC SLA,RSS IF NOT SET, RTN JMP CWCN2 LDA BT7.F ONLY EXECUTE TESTS 0-7 STA STDAM CLA CLEAR STDCP, IE SPECIAL STA STDCP * LDX PRTPM SET UP PORT PARM PRT SEND TO CARD * CWCN2 LDA TMPIC OTA IC OR IS DEP. ON BIT15 RAR STA TMPIC LDB IC SLA,RSS IF BIT15 SET SWR=IC LDB IS OTB SW * JMP CWCNF,I DONE * *LCWCNF * BT7.F OCT 177400 * RSS RSS * PRTPM DEC 128 PORT PARM TMPIC BSS 1 *ECWCNF * SKP *S * ROUTINE TO CHECK CONF WORD FOR BITS SET, AND SKIP IN NONE ARE * * ENTRY: JSB SKNCW * ABS BITS TO TEST * * SAVES A,B,E,0 * SKNCW NOP STA SKNCA SAVE A LDA IC IF LSB=0, CLEAR  SLA,RSS CLA AND SKNCW,I AND WITH MASK ISZ SKNCW =1ST RTN SZA,RSS IF NONE SET, INC RTN ISZ SKNCW LDA SKNCA GET A JMP SKNCW,I DONE * SKNCA BSS 1 * * * * * * * SKP * * ROUTINE TO INIT. RANF FOR PASSL (EXEC. PASSL TIMES) * *S RANFI NOP LDA SEED SET UP START PARM STA LAST LDA PASSL CMA,INA,SZA,RSS IF=0, DONE JMP RANFI,I STA RANCT JSB RANF DO IT ISZ RANCT CHECK IF DONE JMP *-2 NO JMP RANFI,I YES * RANCT BSS 1 * * * SKP *SRANF RANF NOP RANF1 CLA SET SHIFT COUNT STA RFCNT LDA LAST GENERATE A NEW 30-BIT RANDOM NUMBER MPY SEED RRR 3 STA LAST RRL 6 * * LEFT-JUSTIFY NUMBER IN (B,A) * ELB,CLE,ERB CLEAR SIGN SZB,RSS JMP RANF3 IF B=0, RESTART SEQUENCE RANF2 RRL 1 ISZ RFCNT SSB,RSS JMP RANF2 RRR 1 HIGH BIT IS IN B<14> * AND UPBYT CLEAR EXPONENT FIELD * STA TMPRF SAVE * * INSERT EXPONENT = - SHIFT COUNT * LDA RFCNT SHIFT COUNT + 1 CMA,INA EXP - 1 INA EXP * RAL FORMAT IT * AND LWBYT * IOR TMPRF INSERT INTO NUMBER * RRR 16 SWITCH A,B JMP RANF,I EXIT * * SEQUENCE HAS DEGENERATED, RESTART IT * RANF3 LDA SEED STA LAST ISZ RSCNT TALLY JMP RANF1 JMP RANF1 * *LRANF * SEED OCT 62207 RANF SEED=PI/4 LAST BSS 1 RFCNT BSS 1 RANF COUNT RSCNT BSS 1 RANF RESET COUNT *ERANF * SKP * *S * ROUTINE TO TEST FLAG1 FOR BITS SET, AND SKIP IF NONE ARE * * ENTRY: JSB SKNF1 * ABS BITS TO TEST * * PRESERVES A,B,E,O! * SKNF1 NOP STA SKNFA SAVE A LDA SKNF1,I GET MASK ISZ SKNF1 =RTN d AND FLAG1 ONLY MASK BITS SZA,RSS IF NONE SET, INC RTN ISZ SKNF1 LDA SKNFA GET A JMP SKNF1,I DONE * SKNFA BSS 1 * * *S * ROUTINE TO TEST FLAG1 FOR BITS SET, AND SKIP IF ANY ARE * * ENTRY: JSB SKF1 * ABS BITS TO TEST * * PRESERVES A,B,E,O * SKF1 NOP STA SKFA SAVE A LDA SKF1,I GET MASK ISZ SKF1 =1ST RTN AND FLAG1 SZA IF ANY SET, INC RTN ISZ SKF1 LDA SKFA JMP SKF1,I DONE * SKFA BSS 1 * * * SKP *SGETPM * ROUTINE TO GET PARMS FOR SUBROUTINES * * ENTRY: JSB GETPM * DEF POINTER TO INPUT PARMS-- IE SUBR NOP * # OF PARMS TO GET * ADDR OF 1ST PARM * ... * ADDR OF NTH PARM * * ON EXIT, THE ADDRS GIVEN ARE STUFFED WITH THE VALUES * OF THE PARMS POINTED TO BY THE POINTER. * ALSO, THE POINTER IS INCREMENTED BY N. * NO CHECK IS DONE ON THE #PARMS, ETC. * GETPM NOP LDA GETPM,I GET POINTER STA GTPPT SAVE ISZ GETPM LDA GETPM,I GET #PARMS CMA,INA COMPL. STA GTPCT SAVE ISZ GETPM POINT TO NEXT PARAMETER GTPLP LDA GTPPT,I GET THE PARM LDA A,I LDB GETPM,I GET THE DEST ADDR STA B,I STUFF IT ISZ GTPPT,I INC POINTER ISZ GETPM POINT TO NEXT PARAMETER ISZ GTPCT INC CNT, CHECK FOR DONE JMP GTPLP NO, CONTINUE JMP GETPM,I YES, DONE * GTPCT BSS 1 GTPPT BSS 1 * * * SKP * ROUTINE TO PRINT DIAG. INFO MSGES IF CW BIT 1 NOT SET * CALL WITH JSB MSGI, DEF MSG. * *SMSGI MSGI NOP LDA MSGI,I GET ADDR OF MESSAGE STA DFMSI STORE FOLLOWING JSB MSGC ISZ MSGI POINT TO RETURN ADDR LDA IC CHECK FOR SEND RAR,SLA IF BIT1 OF CW SET, NO SEND JMP MSGI,I RETURN JSB MSGC,I SEND MESSAGE DFMSI BSS 1 JMP MSGI,I DONE *  * * * ROUTINE TO PRINT DIAG. MSGS IF CW BIT 1 NOT SET, BUT PRIV. MODE * CALL WITH JSB MSGD, DEF MSG. * *S MSGD NOP LDA MSGD,I GET MSG ADDR STA DFMSD STORE ADDR AFTER JSB ISZ MSGD POINT TO RETN ADDR LDA IC TEST FOR PRINT SLA IF NOT PRIV, OR CW BIT1 SET, NO GO RAR,SLA JMP MSGD,I JSB MSGC,I SEND IT DFMSD BSS 1 JMP MSGD,I * * END  % 12740-18006 1913 S C0122 &SISDG FPP-SIS             H0101 (ASMB,L,C *&SISDG * * THIS MODULE CONTAINS THE SIS TESTS TST09-TST11. * REFERENCES ARE MADE TO ROUTINES IN HFAUX AND FPPD3, WHICH * CONTAINS THE OPCODE DRIVERS. * *CREATED 781129 2035 * EDITED 790525 1400 * EDITED 781218 1215 TO MAKE DEFS +0.. R.R... * * LAST CODE CHANGE 790525 1400 CC * NAM SISDG 790525 1400 REV 1913 CC * ENT TST09,TST10,TST11 EXT TSTDI,STSTE,MSGI,TINIT EXT R.R,R.RM1,M.RM1,M.M0D,STDEF * EXT RST13,RST1O EXT OND13 EXT INSTR * SUP * INSTRUCTIONS * MIC TAN,105320B,0 MIC SQT,105321B,0 MIC ALG,105322B,0 MIC ATN,105323B,0 MIC COS,105324B,0 MIC SIN,105325B,0 MIC EXP,105326B,0 MIC ALT,105327B,0 MIC TNH,105330B,0 * MIC TNL,105331B,0 MIC CRT,105332B,0 MIC ATG,105333B,0 MIC FPW,105334B,0 MIC TPW,105335B,0 * * SKP * SIS TESTS * TESTS SIS TAN,SQRT,ALOG,ATAN,COS,SIN,EXP,ALOGT, AND TANH ROUTINES * * TSTS1 TESTS TAN,ALOG,ATAN,COS,SIN,ALOGT * *STSTS1 TST09 EQU * TSTS1 NOP JSB TINIT SET PARMS, CALL CWCNF JSB MSGI "SIS1" DEF MSGS1 * SS1LP JSB STSTE EXECUTE SUBTESTS OCT -1 SHORT PASS ALL SUBTESTS DEF STTAN,I TAN DEF STALG,I ALOG DEF STATN,I ATAN DEF STCOS,I COS DEF STSIN,I SIN DEF STALT ALOGT * JMP TSTS1,I DONE NOW * MSGS1 ASC 6,SIS1 TEST / *ETSTS1 * * * 2ND MODULE SIS TESTS, FOR SQRT,EXP,TANH * *STSTS2 TST10 EQU * TSTS2 NOP JSB TINIT SET PARMS, ETC * JSB MSGI "SIS2" DEF MSGS2 * SS2LP JSB STSTE EXECUTE SUBTESTS OCT -1 SHORT PASS ALL SUBTESTS DEF STSQT,I SQRT DEF STEXP,I EXP DEF STTNH TANH * JMP TSTS2,I * * MSGS2 ASC 6,SIS2 TEST / *ETSTS2 * SKP *S * SIS3 TEST-- ENHANCED SIS INSTRUCTIONS * TST11 EQU * TSTS3 hNOP JSB TINIT INIT. TEST JSB MSGI "SIS3" DEF MSGS3 JSB STSTE EXECUTE SUBTESTS OCT -1 ALL SUBTESTS FOR SHORT PASS DEF STTRN,I TRNL DEF STCMR,I CMRT DEF STATL,I ATLG DEF STFPW,I .FPWR DEF STTPW .TPWR JMP TSTS3,I DONE * * MSGS3 ASC 6,SIS3 TEST / *ETSTS3 * * * * * SKP *S * TAN TEST * STTAN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSTAN MESSAGE TAN OPCODE DEF TANBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STTAN,I * MSTAN ASC 4, TAN / TANBF OCT 2 EOTYP DEC -5 #OPNS * OCT 40000,0,42755,36400 OPND,ANSWER BYT 1,0 RTN,E-O OCT 40000,2,61654,110402 BYT 1,0 OCT 100001,2,42756,135404 BYT 1,0 OCT 100001,0,116125,22402 BYT 1,0 OCT 40000,40 OPERAND ASC 2,09OR BYT 0,1 * * SKP *S * SQRT TEST * STSQT NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSSQT MESSAGE SQT OPCODE DEF SQTBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STSQT,I * MSSQT ASC 4, SQRT / SQTBF OCT 2 EOTYP DEC -4 #OPNS * * * OCT 0,0,0,0 BYT 1,0 RTN,E-O OCT 40000,377,40000,0 BYT 1,0 OCT 44000,4,60000,2 BYT 1,0 OCT 100001,0 OPERAND ASC 2,03UN BYT 0,1 * * SKP *S * ALOG TEST * STALG NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSALG MESSAGE ALG OPCODE DEF ALGBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STALG,I * MSALG ASC 4, ALOG / ALGBF OCT 2 EOTYP DEC -4 #OPNS * OCT 40000,0,123506,172000 BYT 1,0 RTN,E-O OCT 6000'0,0,133132,74377 BYT 1,0 OCT 0,0 OPERAND ASC 2,02UN ANSWER BYT 0,1 OCT 100001,0 ASC 2,02UN BYT 0,1 * * * SKP *S * ATAN TEST * STATN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSATN MESSAGE ATN OPCODE DEF ATNBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STATN,I * MSATN ASC 4, ATAN / ATNBF OCT 2 EOTYP DEC -4 #OPNS OCT 0,0,0,0 BYT 0,0 RTN,E-O OCT 40000,0,73261,116377 BYT 0,0 OCT 40000,377,76555,154775 BYT 0,0 OCT 100001,4,125445,166002 BYT 0,0 * SKP *S * COS TEST * STCOS NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSCOS MESSAGE COS OPCODE DEF COSBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STCOS,I * MSCOS ASC 4, COS / COSBF OCT 2 EOTYP DEC -1 #OPNS OCT 40000,0,70124,120000 BYT 1,0 RTN,E-O DEC -1 * * SKP *S * SIN TEST * STSIN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSSIN MESSAGE SIN OPCODE DEF SINBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STSIN,I * MSSIN ASC 4, SIN / SINBF OCT 2 EOTYP DEC -4 #OPNS OCT 40000,0,75273,120777 BYT 1,0 RTN,E-O OCT 40000,2,65665,50400 BYT 1,0 OCT 100001,0,112113,34000 BYT 1,0 OCT 40000,40 ASC 2,05OR BYT 0,1 * SKP *S * EXP TEST * STEXP NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSEXP MESSAGE EXP OPCODE DEF EXPBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STEXP,I * MSEXP ASC 4, EXP / EXPBF OCT 2 EOTYP DEC Y-6 #OPNS OCT 40000,0,64604,123402 BYT 1,0 RTN,E-O OCT 40000,2,53374,26004 BYT 1,0 OCT 123100,16,0,0 BYT 1,0 OCT 100000,16,0,0 BYT 1,0 OCT 40000,20 ASC 2,07OF BYT 0,1 OCT 40000,40 ASC 2,07OF BYT 0,1 * SKP *S * ALOGT TEST * STALT NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSALT MESSAGE ALT OPCODE DEF ALTBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STALT,I * MSALT ASC 4, ALOGT/ ALTBF OCT 2 EOTYP DEC -1 #OPNS OCT 40000,0,131357,131777 BYT 1,0 RTN,E-O * * SKP *S * TANH TEST * STTNH NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSTNH MESSAGE TNH OPCODE DEF TNHBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STTNH,I * MSTNH ASC 4, TANH / TNHBF OCT 2 EOTYP DEC -4 #OPNS OCT 40000,377,76545,176775 BYT 0,0 RTN,E-O OCT 40000,2,60573,166000 BYT 0,0 OCT 40000,10,40000,2 BYT 0,0 OCT 100001,10,100000,0 BYT 0,0 * * * * * *S SKP * /TRNL TEST * STTRN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSTRN MESSAGE TNL OPCODE DEF TRNBF OPN BUFFER DEF TRNL ADDR OF SUBR TO EXECUTE MACRO JMP STTRN,I * MSTRN ASC 4, DPOLY / TRNBF OCT 2 EOTYP DEC -2 #OPNS * OCT 100000 FLAG DEC 2,1 M,N DEY -2.0 ARG DEY 2.0,3.0,4.0,4.0 COEFS OCT 120000,0,0,10 RESULT BYT 0,0 * OCT 0 FLAG DEC 2,1 M,N DEY -2.0 ARG DEY 2.0,3.0,4.0,4.0 COEFS OCT 60000,0,0,4 RESULT BYT 0,0 * *ESTTRN * * SKP * * * * 4/CMRT TEST * *S STCMR NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSCMR MESSAGE CRT OPCODE DEF CMRBF OPN BUFFER DEF CMRT ADDR OF SUBR TO EXECUTE MACRO JMP STCMR,I * MSCMR ASC 4, CMRT / CMRBF OCT 2 EOTYP DEC -3 #OPNS * DEC 4 FLAG DEY 3.1 ARG OCT 50574,140667,23442,5402 CONST OCT 71162,20251,47741,35713 OCT 111613,10222,56460,153371 RESULT BYT 1,0 * DEC 4 FLAG DEY 51471.6577 ARG OCT 50574,140667,23442,5402 CONST OCT 71162,20251,47741,35713 OCT 100002,30304,15740,37375 RSLT BYT 1,0 * DEC -2 FLAG DEY 8.1 ARG OCT 50574,140667,23442,5402 CONST OCT 71162,20251,47741,35713 OCT 50060,102141,55116,174777 RSLT BYT 1,0 * *ESTCMR * * SKP * * * * .ATLG TEST * *S STATL NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSATL MESSAGE ATG OPCODE DEF ATLBF OPN BUFFER DEF M.M0D+0 ADDR OF SUBR TO EXECUTE MACRO JMP STATL,I * MSATL ASC 4, ATLG / ATLBF OCT 3 EOTYP , NO CHANGE IN E,O DEC -1 #OPNS * DEY 3.0 ARG DEY -0.5 RESULT BYT 0,0 * * *ESTATL * * SKP * * * * .FPWR TEST * *S STFPW NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSFPW MESSAGE FPW OPCODE DEF FPWBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STFPW,I * MSFPW ASC 4, .FPWR / FPWBF OCT 2 EOTYP DEC -1 #OPNS * DEC 7,0 POWER DEC 3.0 OPND DEC 2187.0 RESULT BYT 0,0 * * *ESTFPW * * SKP * * * * .TPWR TEST * *S STTPW NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSTPW MESSAGE S$" TPW OPCODE DEF TPWBF OPN BUFFER DEF M.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STTPW,I * MSTPW ASC 4, .TPWR / TPWBF OCT 2 EOTYP DEC -1 #OPNS * DEC 7,0,0,0 POWER DEY 3.0 OPND DEY 2187.0 RESULT BYT 0,0 * * *ESTTPW * * SKP *S * * * ROUTINE TO EXECUTE /TRNL * TRNL NOP JSB STDEF SET UP DEFS(INDS) DEF RST13+0 DEF TRNIN+2 DEF OND13+3 DEF TRNIN+3 DEF OND13+7 DEF TRNIN+4 DEF OND13+1 DEF TRNIN+5 DEF OND13+2 DEF TRNIN+6 OCT 0 5 DEFS LDA INSTR STA TRNIN LDA OND13 FLAG WORD STA TRNIN+1 TRNIN NOP MACRO BSS 1 FLAGS DEF RST13+0 RESULT DEF OND13+3 ARG DEF OND13+7 COEFS DEF OND13+1 M DEF OND13+2 N ISZ RST1O ISZ RST1O JMP TRNL,I DONE * * * *S SKP * ROUTINE TO EXECUTE /CMRT * CMRT NOP JSB STDEF SET UP DEFS (INDS) DEF RST13+0 DEF CMRIN+1 DEF OND13+5 DEF CMRIN+2 DEF OND13+1 DEF CMRIN+3 OCT 0 3 DEFS LDA INSTR STA CMRIN LDA OND13 FLAG WORD CMRIN NOP MACRO DEF RST13+0 RESULT DEF OND13+5 CONST DEF OND13+1 ARG ISZ RST1O ISZ RST1O JMP CMRT,I DONE * * END y$   12740-18007 1913 S C0122 &FPPSW FPP-SIS             H0101 ?ASMB,L,C *&FPPSW * * S/W ARITHMETIC ROUTINES * * THESE ROUTINES DO ALL THE SOFTWARE CALCULATIONS FOR TST00-TST09,TST15. * *CREATED 780705 * EDITED 781218 1705 TO MAKE ER4,... FASTER-- ADB POS1=>INB * TO MAKE MPYOP FASTER... * TO USE NEW MPYOP, AR16,MPYAD * EDITED 781219 1015 TO SHORTEN MPYOP..MPYAD,.. * TO CLEAN MPYOP * EDITED 781220 1455 TO ADD AR4N,ER4N,AR4M,ER4M * TO CHANGE EQLZ5 FOR NEW SHIFTS * TO CLE IN ADDOP B4 SUMOP * TO FIX AR16-- NEG # * EDITED 781221 1020 TO ADD LL4M * TO MOD DIVSH... * EDITED 790102 2050 TO REMOVE LL4,ERM4, SPEED UP AR4M,AR4N * 2110 TO SPEED UP RND5,FIXOP, * 2140 TO FIX RND5 BUG(WDCLR) SLB OVER SAX * EDITED 790502 1000 TO ADD &NAME * * LAST CODE CHANGE 790102 2140 CC * NAM FPPSW 790121 2355 REV 1913 CC * ENT MPYOP,COM5,AR4,ER4,EL4,NORM5,SUMOP,ADDOP,EQLZ5 ENT MOVFW,DIVOP,SUBOP,RND5,PAK5,UNPK5,EXPCK,FIXOP,FLTOP,TRNC5 ENT AR4M,AR4N ENT LL4M * * A EQU 0 B EQU 1 * * * SUP * SKP * IFZ IF ABS, PUT ON BP ORB XIF * * GLOBAL CONSTANTS * POS0 DEC 0 POS1 DEC 1 POS2 DEC 2 POS3 DEC 3 POS4 DEC 4 POS5 DEC 5 POS64 DEC 64 PS127 DEC 127 POSMX DEC 32767 * NEG1 DEC -1 NEG3 DEC -3 NEG4 DEC -4 NEG5 DEC -5 NEG15 DEC -15 NEG16 DEC -16 * UPBYT OCT 177400 LWBYT OCT 377 * SKP * * GLOBAL VARIABLES * RSLT BSS 1 RSLTL BSS 1 SIGN BSS 1 CNT BSS 1 TMP BSS 1 STICK BSS 1 WRDS BSS 1 * ACC DEF *+1 ACC3 BSS 1 ACC2 BSS 1 ACC1 BSS 1 ACC0 BSS 1 ACCE BSS 1 * AC2 DEF *+1 AC23 BSS 1 AC22 BSS 1 AC21 BSS 1 AC20 BSS 1 AC2E BSS 1 * IFZ RETURN TO CUR PAGE ORR XIF * * * * SKP * * SUBR TO MPY TWO 5 WORD̩ OPNDS B=XR+YR * B,XR YR ARE DEFS TO BUFS * A IS LOST * *SMPYOP MPYOP NOP STB RSLT RESULT =ADDR OF RSLT BUFFR STX MPX SAVE X ADDR STY MPY CLA,CLE CLEAR SIGN COUNTER STA SIGN LDB MPX,I A=X3 SSB,RSS IF X3<0, X3=-X3,B=1 JMP TSTY1 TEST Y LDB MPX A=X ADDR JSB COM5 * ISZ SIGN TSTY1 LBY 0 B=Y3 CLE,SSB,RSS IF Y3<0 Y3=-Y3,A=A+1 JMP CLRA ELSE CONTINUE CYB B=ADDR OF Y JSB COM5 * ISZ SIGN * CLRA CLA,CLE CLEAR ACCS STA ACC3 STA ACC2 STA ACC1 STA ACC0 STA AC23 STA AC22 STA AC21 STA AC20 * LDX ACC X=ADDR OF ACC LDY AC2 Y=ACC2 * JSB MPYAD MPY & ADD IN SUM BYT 3,3 LOW OPNDS JSB AR16 SHIFT RIGHT 16 BITS (B=ACC) * JSB MPYAD MPY & ADD IN SUM BYT 202,3 SIGN BIT FOR MORE BYT 3,2 JSB AR16 SHIFT RIGHT 16 BITS * JSB MPYAD MPY & ADD IN SUM BYT 203,1 BYT 201,3 BYT 2,2 JSB AR16 SHIFT RIGHT 16 BITS * JSB MPYAD BYT 203,0 BYT 200,3 BYT 202,1 BYT 1,2 JSB AR16 SHIFT RIGHT 16 BITS * JSB MPYAD BYT 202,0 BYT 200,2 BYT 1,1 JSB AR16 SHIFT RIGHT 16 BITS * JSB MPYAD BYT 201,0 BYT 0,1 * LDA MPX,I LAST ONE MPY MPY,I ITS POS. STB AC23 GOES IN UPPER WORDS STA AC22 CLA,CLE CLEAR 2ND ACC. WORD, CIN STA AC21 LDB ACC JSB SUMOP ADD LAST TERM * * LDA MPX GET X TO EXP ADA POS4 LDA A,I LDB MPY B=BEXP ADB POS4 ADA B,I A=AEXP+YEXP ADA POS1 CORRECTION LDB RSLT ADB POS4 B=REXP STA B,I REXP=XEXP+YEXP+1 t LDA ACC LDB RSLT MVW POS4 LDB RSLT NORM RESULT LDA SIGN IF SIGN ODD, RSLT=-RSLT CLE,SLA JSB COM5 * JSB NORM5 * JMP MPYOP,I DRIVE HER HOME, BOYS * * * MPYAD NOP ROUTINE TO MPY 2 16BIT#S, ADD IN RUN. SUM MPYAL LDA MPYAD,I GET 2ND OPND OFFSET AND POS3 LOW BYTE ADA MPY GET 2ND# LDB A,I SZB,RSS IF=0, NO OP JMP MPYCK LDA MPYAD,I GET 1ST OPND OFFSET ALF,ALF UPPER BYTE AND POS3 ADA MPX GET 1ST# LDA A,I SZA,RSS IF=0, NO OP JMP MPYCK STA MPTA SAVE A STB MPTB AND B MPY MPTB 16 BIT SIGNED MPY STA MPTR SAVE LOW LDA MPTA GET ORIG... ADJ FOR SIGNED OPN SSA ADB MPTB LDA MPTB SSA ADB MPTA B OK NOW LDA MPTR A OK NOW STB AC22 PUT IN MID 2 WORDS OF ACC STA AC21 LDB ACC ADD IN CLE NO CARRY IN JSB SUMOP MPYCK LDA MPYAD,I TEST FOR MORE MPYS ISZ MPYAD INC POINTER SSA IF SIGN BIT CLEAR, DONE JMP MPYAL LOOP FOR MORE LDB ACC SET B FOR CALLER JMP MPYAD,I DONE * * *LMPYOP * NEG63 DEC -63 MPCNT BSS 1 MPTMP BSS 1 MPX BSS 1 MPY BSS 1 MPTA BSS 1 MPTB BSS 1 MPTR BSS 1 *EMPYOP * * SKP * * THIS HERE IS A SUBROUTINE TO COMPLEMENT (NOT COMPLIMENT) A * 5 WORD OPERAND, WHOSE ADDRESS IS IN B * YOU WILL LOSE A! * POSSIBLE PROBLEM-- RETURNS 1.1000.... FOR COMPL. OF 0.1000.... * *SCOM5 COM5 NOP STB TMP SAVE RSLT ADDR ADB POS3 X0=-X0 LDA B,I CMA,CLE,INA STA B,I LDB TMP X1=X1'+COUT(X0) ADB POS2 LDA B,I CMA,SEZ,CLE INA STA B,I LDB TMP X2=X2'+COUT(X0) ADB POS1 LDA B,I CMA,SEZ,CLE INJA STA B,I LDB TMP LDA B,I X3=X3'+COUT(X2) CMA,SEZ,CLE,RSS IF NO CIN, DONE JMP STX3 SSA,INA ELSE INC, & CHECK FOR OVFLW JMP TNRM IF XIN WAS +, CHECK FOR NORM. OUTPUT CCE,SSA,RSS CHECK FOR SIGN CHANGE, SET E CLE,RSS IF SO, OK-- CLEAR E & STORE X3 RAR X3 WAS -1, SHIFT RIGHT & BUMP EXP STX3 STA TMP,I ADB POS4 B=EXP ADDR SEZ,CLE BUMP EXP IF OVFLW ISZ B,I JMP *+1 IN CASE THE TUKEY TRIES TO SKIP LDB TMP RESTORE TMP ADDR JMP COM5,I I'LL TAKE A COLD BEER AFTER ALL THAT WORK TNRM STA TMP,I SAVE X0 CLE,ELA CHECK FOR BIT 14=1 SSA,RSS IF NOT, THATS ALL FOR NOW JMP COM5,I RETURN STA TMP,I ELSE NORMALIZE NUMBER ADB POS4 DECREMENT EXPONENT LDA B,I ADA NEG1 STA B,I LDB TMP RESTORE B REG. JMP COM5,I * *LCOM5 * *ECOM5 * SKP * * SUBR TO SHIFT A 4 WRD OPND RIGHT 1 BIT, MSB=E,E=LSB * OPND ADDR IN B, A LOST * *E * * *S AR4 NOP STB TMP LDA AR4 SET UP RETURN POINT FROM ER4 STA ER4 LDA B,I DO FIRST WORD, THEN JOIN ER4 ERA,RAL ARS JMP EAR4 USE THE OTHER CODE * * * *S ER4 NOP STB TMP LDA B,I A=X3,I ERA X3=E,X3/2 EAR4 STA B,I INB LDA B,I X2=X2/2 ERA STA B,I INB LDA B,I X1=X1/2 ERA STA B,I INB LDA B,I X0=X0,2 E=LSB ERA STA B,I LDB TMP JMP ER4,I * * SKP * * SUBR TO A 4 WORD OPND LEFT 1 BIT, LSB=E, E=MSB * MODIFIES A * * *E * * *S EL4 NOP STB TMP ADB POS3 LOW MANT LDA B,I ELA STA B,I LDB TMP GET 2ND MANT ADDR ADB POS2 LDA B,I ELA STA B,I LDB +TMP INB LDA B,I ELA STA B,I LDB TMP LDA B,I ELA STA B,I JMP EL4,I * * * * * * * SKP *S * ROUTINE TO SHIFT 4 WORD OPND RIGHT 16 BITS (1 WORD) * B=ADDR OF OPND, ...A DESTROYED * AR16 NOP STB TMP SAVE ADDR CLB LDA TMP,I 1ST WORD SSA IF NEG, MAKE TOP WORD=-1 CCB STB TMP,I STORE HI WORD ISZ TMP NEXT WORD LDB TMP,I STA TMP,I ISZ TMP NEXT LDA TMP,I STB TMP,I ISZ TMP LAST LDB TMP,I SAVE LAST WORD FOR RTN STA TMP,I LDA B IN A LDB TMP RESTORE B REG ADB NEG3 JMP AR16,I DONE * * * * * SKP *S * ROUTINE TO SHIFT A 4 WD OPND RIGHT ARITH N BITS * * ENTRY: A=#BITS, B=ADDR * RETN: E=SET IF LOST BIT * AR4N NOP CPA POS1 IF 1 BIT SHIFT, SPECIAL JMP AR4N4 * STA AR4NC SAVE CNT CLA CLEAR STICK BIT STA AR4NS AR4N1 LDA AR4NC CLE,SZA,RSS IF CNT=0, DONE (CLEAR E FOR EXIT) JMP AR4N3 ADA NEG16 TEST FOR >16 SHIFT SSA JMP AR4N2 <16, SLOW TYPE STA AR4NC SAVE CNT JSB AR16 FAST SHIFT SZA TEST FOR LOST BITS ISZ AR4NS IF SO, INC STICKY BIT JMP AR4N1 * AR4N2 ADA POS16 REFORM CNT JSB AR4M SHIFT OPND SLOW CLE,SZA TEST FOR LOST BITS ISZ AR4NS AR4N3 LDA AR4NS IF LOST BITS, SET E SZA CCE JMP AR4N,I DONE * AR4N4 JSB AR4 1 BIT SHIFT JMP AR4N,I DONE * * AR4NC BSS 1 AR4NS BSS 1 * * * * * SKP *S * ROUTINE TO SHIFT 4WD# M BITS (<=16) RIGHT, ARITH * ENTRY: B=OPND ADDR, A= #BITS * JSB AR4M * * ON RTN, A=SHIFTED OUT BITS * * AR4M NOP STB AR4MB SAVE ADDR INB ALSO SET NEXT WD PTR  STB AR4MA AND POS15 ONLY 4 BIT SHIFT FIELD ADA ASR FORM OPCODE STA ASR2 STA ASR3 STA ASR4 STA ASR5 * LDB AR4MB,I GET ORIG HI WORD LDA AR4MA,I NXT WORD ASR2 NOP 2 WORD SHIFT STB AR4MB,I SAVE HI WORD LDB AR4MA,I GET ORIG NEXT WORD STA AR4MA,I REPLACE WITH SHIFTED VERSION ISZ AR4MA POINTER TO NEXT WORD * LDA AR4MA,I NXT WORD ASR3 NOP 2 WORD SHIFT LDB AR4MA,I GET ORIG NXT WORD STA AR4MA,I REPLACE W/ SHIFTED VERSION ISZ AR4MA POINT TO NXT WORD * LDA AR4MA,I NXT WORD ASR4 NOP 2 WORD SHIFT LDB AR4MA,I GET ORIG NEXT WORD STA AR4MA,I REPLACE WITH SHIFTED VERSION * CLA WILL GET SHIFTED OUT BITS ASR5 NOP 2 WORD SHIFT * LDB AR4MB RESTORE OPND ADDR JMP AR4M,I DONE * * * ASR ASR 16 INSTR. BASE AR4MA BSS 1 AR4MB BSS 1 * * * * * SKP *S * ROUTINE TO SHIFT 4WD# M BITS (<=16) LEFT, LOGICAL * ENTRY: B=OPND ADDR, A= #BITS * E= BIT TO SHIFT IN LEFT 0 OR 1 * JSB LL4M * * * LL4M NOP CPA POS1 IF SHIFT=1, SPECIAL JMP LL4M1 STB LL4MB SAVE ADDR INB SET UP OTHER ADDRS STB LL4A1 INB STB LL4A2 INB STB LL4A3 AND POS15 ONLY 4 BIT SHIFT FIELD ADA LSL FORM OPCODE STA LSL1 STA LSL2 STA LSL3 STA LSL4 CLA,SEZ IF E SET, A=-1 CCA * LDB LL4A3,I GET ORIG LO WORD LSL1 NOP 2 WORD SHIFT LDA LL4A3,I GET ORIG LO WORD STB LL4A3,I REPLACE WITH SHIFTED VERSION * LDB LL4A2,I NXT WORD LSL2 NOP 2 WORD SHIFT LDA LL4A2,I GET ORIG NEXT WORD STB LL4A2,I REPLACE WITH SHIFTED VERSION * LDB LL4A1,I NXT WORD LSL3 NOP 2 WORD SHIFT LDA LL4A1,I GET ORIG NXT WORD STB LL4A1,I REPLACE W/ SHIFTED VERSION * LDB LL4MB,I NXT WORD LSL4 NOP 2 WORD SHIFT STB LL4MB,I GET ORIG NEXT WORD * LDB LL4MB RESTORE OPND ADDR JMP LL4M,I DONE * LL4M1 JSB EL4 1 BIT SHIFT JMP LL4M,I DONE * * * LSL LSL 16 INSTR. BASE LL4MX BSS 1 LL4MB BSS 1 LL4A1 BSS 1 LL4A2 BSS 1 LL4A3 BSS 1 * * * * * * * * * * * * * * SKP * SUBR TO NORMALIZE A 5 WRD OPERAND * ADDR OF OPND IN B, A LOST * *SNORM5 NORM5 NOP LDA NEG64 INITIALIZE COUNTER STA NMCNT * NMLP LDA B,I ELA CHECK MOST SIG. BITS FOR NORMALIZATION CMA,SEZ,SSA,RSS JMP NMZD IF BITS=01, NORMALIZED SEZ,CLE,SSA JMP NMZD OR IF BITS=10 JSB EL4 IF NOT NORM. SHIFT LEFT & TEST AGAIN ISZ NMCNT CHECK FOR MANT=0 JMP NMLP IF NOT CONTINUE STO IF SO, SET OVFLW,E EXP=0 CLA ADB POS4 STA B,I ADB NEG4 CCE JMP NORM5,I NMZD ADB POS4 RSLT EXP= OPND EXP-#SHIFTS LDA NMCNT ADA POS64 A=#SHIFTS CMA,INA ADA B,I STA B,I ADB NEG4 JMP NORM5,I * *LNORM5 * NEG64 DEC -64 NMCNT BSS 1 *ENORM5 * SKP * * SUBR TO ADD TWO 4 WORD OPNDS B=XR+YR+E * RETURNS COUT,OVFLW, A LOST * * *SSUMOP SUMOP NOP STB TMP SAVE X,Y,TMP STX SMX STY SMY * LDA SMX LOW MANT ADA POS3 LDA A,I LDB SMY ADB POS3 SEZ,CLE IF CIN, INC WORD INA ADA B,I ADD IN 2ND OPND LDB TMP PUT IN RSLT ADB POS3 STA B,I * LDA SMX ADA POS2 LDA A,I LDB SMY ADB POS2 SEZ,CLE INA ADA B,I LDB TMP ADB POS2 STA B,I LDA SMX 3RD MANT ADA POS1 LDA A,I  LDB SMY ADB POS1 SEZ,CLE INA ADA B,I LDB TMP ADB POS1 STA B,I * CLO LDA SMX,I A=X3 LDB SMY,I B=Y3 SEZ,CLE IF CIN INC RSLT(3) INA SOC IF OVFLW, MUST DO SPECIAL ADD JMP SPAD ADA B A=X3+Y3+COUT(2) STA TMP,I RSLT(3)=A LDB TMP B=ADDR OF TMP JMP SUMOP,I THATS ALL FOLKS * SPAD ADA B A=X3+Y3+COUT(2) STA TMP,I RSLT(3)=A SSA,RSS IF A>0, THEN Y3<0-- CLEAR OVFLW CLO LDB TMP RESTORE TMP ADDR JMP SUMOP,I GO HOME * *LSUMOP * SMX BSS 1 SMY BSS 1 *ESUMOP * SKP * * SUBR TO ADD 2 5 WORD OPNDS BR=XR+YR * MODIFIES A,E,OVFLW * * *S ADDOP NOP STB RSLT SAVE RESULT ADDR CXA GET MOST SIG. WORD OF 1ST OPND LDA A,I CLE,SZA,RSS IF NOT=0, CHECK 2ND OPND JMP AZERO IF=0, RSLT EXP=YEXP CYA A=MOST SIG. WORD OF 2ND OPND LDA A,I SZA,RSS IF NOT=0, EQUALIZE OPNDS JMP *+2 ELSE RSLT EXP=XEXP JSB EQLZ5 EQUALIZE OPNDS LAX 4 RSLT EXP = XEXP LDB RSLT STEXP ADB POS4 STA B,I LDB RSLT CLE NO CIN JSB SUMOP ADD OPNDS SOC IF OVFLW, ADJUST RSLT JSB MOVFW JSB NORM5 JMP ADDOP,I AZERO LAY 4 A=YEXP JMP STEXP * SKP * * SUBR TO EQUALIZE 2 5 WORD OPERANDS, XR&YR, WHICH ARE DEFS TO BUFS * MODIFIES A,B,E * * *SEQLZ5 EQLZ5 NOP LBX 4 A=XEXP LAY 4 B=-YEXP CMA,INA ADA B A=XEXP-YEXP SSA,RSS IF +, COMPL & TEST JMP XGTY ADA POS64 A=XEXP-YEXP+64 LBY 4 XEXP=YEXP SBX 4 CXB B=XR SSA IF<0,SWAMP-- X=0 JMP SET0 JMP SHIFT ELSE SHIFT Y RIGHT * XGTY CMA,IN.A A=YEXP-XEXP+64 ADA POS64 LBX 4 YEXP=XEXP SBY 4 CYB B=YR SSA IF <0, SWAMP-- Y=0 JMP SET0 SHIFT ADA NEG65 B= =#SHIFTS-1 * * * CMA COMPL CNT JSB AR4N SHIFT IT SEZ,RSS CHECK FOR STICKY BIT * JMP EQLZ5,I ADB POS3 OPND(0)=IOR(OPND(0),1) LDA B,I IOR POS1 STA B,I JMP EQLZ5,I * SET0 CLA CLEAR OPND STA B,I INB STA B,I INB STA B,I CLE,INB E=0 FOR SUMOP CALL FROM ADDOP STA B,I JMP EQLZ5,I * *LEQLZ5 * NEG65 DEC -65 *EEQLZ5 * * * SKP * * SUBR TO ADJUST OPND AFTER MANT OVERFLOW, OPND ADDR IN B * MODIFIES A,E * *E *S MOVFW NOP STB RSLT SAVE OPND ADDR JSB ER4 SHIFT OPND BACK ONE BIT LDA B,I A=OPND(3) ADB POS3 B=OPND(0) ADDR SEZ,CLE,RSS IF LSB=1, CHECK FOR SIGN OF OPND JMP EXPUP SSA,RSS IF A<0, SET LSB OF OPND=1 JMP EXPUP LDA B,I IOR POS1 STA B,I EXPUP INB B=EXP ADDR ISZ B,I EXP =EXP + 1 JMP *+1 IT COULD SKIP LDB RSLT RESTORE OPND ADDR (BE KIND TO YOUR PARENTS) JMP MOVFW,I NOW GET OUT OF THIS HOLE * SKP * * SUBR TO DIVIDE TWO 5 WORD OPERANDS, BR=XR/YR * * *SDIVOP DIVOP NOP STB RSLT SAVE REGS STX DVX STY DVY CLA,CLE STA SIGN CLEAR SIGN COUNTER STA ACC0 CLEAR Q STA ACC0-1 STA ACC0-2 STA ACC0-3 STA ACC0+1 LDB P4096 B=EXP OVERFLOW, IE TOO LARGE -- 4096 LDA DVY,I A=MOST SIG. WORD OF 2ND OPND SZA,RSS IF NOT=0, CHECK 2ND OPND JMP EXIT0 IF 2ND OPND=0, RSLT EXP=TOO LARGE --OVFLW LDA DVX,I A=MOST SIG. WORD OF 1ST OPND SZA,RSS IF=0, RETURN ZERO JMP RTN0 IF=0, CLEAR RESU^LT LDA DVY YCOM=YR LDB YCOM MVW POS5 LDA DVX,I SSA,RSS IF XR<0, XR=-XR, INC SIGN COUNT JMP TSTY ELSE TEST YR LDB DVX JSB COM5 * ISZ SIGN TSTY LDA DVY,I A=Y3 LDB DVY SSA IF Y<0, INC SIGN ISZ SIGN CLE,SSA,RSS IF Y3<0, YR=-YR LDB YCOM ELSE YCOM=-YR JSB COM5 * LAX 4 A=XEXP LBY 4 B=-YEXP CMB,INB ADA B RSLT EXP=XEXP-YEXP+1 INA LDX RSLT SAX 4 LDA YCOME A=YCOM EXP-YEXP ADA B CLE,SZA,RSS IF=, OK-- GO TO DIVIDE JMP DIVST LDA DVX IF NOT=, Y=-1, RSLT=-X LDB RSLT MVW POS4 JMP TSTR TEST FOR SIGN OF X * DIVST LDA NEG62 SET LOOP COUNT STA DVCNT LDX DVX DIVLP LDA DVX,I A='SIGN' OF X LDB DVY CLE,SSA,RSS IF X>0, Q0=1, X=X-Y LDB YCOM IF X<0, X=X+Y,Q0=0 CBY PUT Y OR Y' IN YR LDB DVX JSB SUMOP X=X+-Y CLE NO SHIFT IN JSB EL4 X=X*2 CME Q0=-SIGN OF X LDB ACC JSB EL4 Q=Q*2 DIVSH LDA DVX,I IF 2 HIGH BITS =00 OR 11, CONTINUE SHIFT * * * LDB NEG15 SET UP TMP CNT CLE,SSA IF NEG, MAKE POS CMA,CCE ALSO SET E DIVS1 RAL TEST NEXT BIT SSA TEST FOR BIT SET JMP DIVS2 IF SET SHIFT ISZ DVCNT TEST COUNT JMP *+2 IF NOT=0, CONTINUE JMP DIVS3 IF DONE, FORCE SHIFT ISZ B TEST FOR SHORT COUNT<15 JMP DIVS1 LOOP JMP DIVS2 DIVS3 ISZ B NOP * DIVS2 LDA B ADJ COUNT AND POS15 DONT SET E,O ADA POS15 AND POS15 STA DVCN2 SAVE CNT SZA,RSS IF=0, DONE JMP DVASB LDB ACC ACC ADDR JSB LL4M SHIFT N PLACES CLE 9 NO LOW BITS LDA DVCN2 GET COUNT AGAIN LDB DVX SHIFT OPND JSB LL4M LDA DVCNT IF COUNT=0, DONE SZA JMP DIVSH ELSE DO AGAIN * * TRSLT LDA ACC RSLT=ACC LDB RSLT MVW POS4 TSTR LDB RSLT JSB NORM5 NORMALIZE RESULT ADB POS3 INDUCE ROUND FOR ANY LOW BITS IF NEG LDA B,I IE,SET LSB OF LAST WORD IOR POS1 STA B,I LDB RSLT LDA SIGN IF SIGN ODD, RSLT=-RSLT CLE,SLA JSB COM5 LDX DVX SET EM UP JOE LDY DVY JMP DIVOP,I IS IT SOUP YET? * DVASB ISZ DVCNT X WAS NORMALIZED, CHECK IF DONE JMP DIVLP NO -- PLAY IT AGAIN SAM LDB ACC YES -- BUT Q NEEDS ONE MORE SHIFT JSB EL4 DONT CARE ABOUT LSB-- WE HAVE ENOUGH EXTRA JMP TRSLT EXIT0 LDA RSLT STORE ILLEGAL EXP IN RESULT EXP ADA POS4 A=EXP ADDR STB A,I LDB RSLT JMP DIVOP,I THAT SHOULD DO IT FOR NOW! * RTN0 LDA ACC ZERO OUT RESULT LDB RSLT MVW POS5 LDB RSLT JMP DIVOP,I * *LDIVOP * P4096 DEC 4096 NEG62 DEC -62 DVCNT BSS 1 DVCN2 BSS 1 DVX BSS 1 DVY BSS 1 YCOM DEF *+1 BSS 4 YCOME BSS 1 *EDIVOP * * SKP * * SUBR TO SUBTRACT TWO 5 WORD OPERANDS BR=XR-YR * * *E *S SUBOP NOP STB RSLT SAVE RESULT ADDR CYB JSB COM5 X-Y=X+(-Y), Y=-Y LDB RSLT JSB ADDOP * JMP SUBOP,I * SKP * *ROUTINE TO ROUND 2,3, AND 4 WORD FLOATING POINT NUMBERS * *SRND5 RND5 NOP STB RSLT STX RNX STY RNY CPA POS5 IF WRDS=5, SET TO 4 LDA POS4 STA WRDAJ * * CMA GET INDEX TO RNDING WORD ADA RNDBF CAY PUT IN Y * LDA RSLT,I A='SIGN' OF OPND ELA E=CIN=1 IF OPND >=0 IE ADD 200B CME LDB RSLT LDX RSLT  JSB SUMOP RSLT=RSLT+ROUND WORD SOC JSB MOVFW * CLA,CLE LDB WRDAJ RBR,SLB,RBL IF 4 WORDOP, NO WORDS TO CLEAR JMP WDCLR WDMSK ADB NEG1 MASK OFF LOWER 8 BITS OF LOW WORD ADB RSLT LDA B,I AND UPBYT STA B,I LDA RSLT,I CHECK FOR UNNORMALIZED NUMBER LDB RSLT ELA SEZ,SSA ONLY PROBLEM IF NEG, IE 1011111...+1 JSB NORM5 * LDX RNX LDY RNY JMP RND5,I * WDCLR SLB IF 2WD CLEAR 2 WORDS JMP WDCL2 SAX 2 CLEAR OPND1 IF 2WDS WDCL2 SAX 3 CLEAR OPND0 IF NOT 4 WDS JMP WDMSK * *LRND5 * NEG2 DEC -2 WRDAJ BSS 1 RNX BSS 1 RNY BSS 1 * RNDBF DEF RNDBE OCT 0 OCT 0 OCT 0 OCT 177 OCT 177777 RNDBE OCT 177777 POINTS TO LAST WORD OF BUFFER *ERND5 * * * SKP * SUBR TO PACK 5 WORD FP#S INTO 2,3, AND 4 WORD #S * OPERAND ADDR IN B, #WORDS IN A * * *E *S PAK5 NOP STB RSLTL STA WRDS ADB POS4 A=OPND EXP LDA B,I RAL PUT SIGN IN LSB STA B,I PUT ROTATED EXPONENT BACK AND LWBYT ONLY WANT LOW 8 BITS OF EXP STA TMP SAVE THE EXP HALF ADB NEG5 GET THE LOWER MANTISSA WORD ADB WRDS LDA B,I AND UPBYT THROW AWAY LOWER HALF IOR TMP OR IN THE EXP STA B,I REPLACE LOW WORD LDB RSLTL JMP PAK5,I THATS ALL THERE IS TO IT! * * * SKP * SUBR TO UNPAK 2,3, AND 4 WORD OPERANDS INTO 5 WORDS * B=ADDR OF OPERAND, A=# WORDS * *SUNPK5 UNPK5 NOP STB TMP STA WRDS STX UPX ADB NEG1 B=LOW MANT ADDR ADB WRDS CPA POS5 IF 5 WORDS, SPECIAL JMP UP5WD STB RSLTL LDA B,I A=LOW OPND WORD AND LWBYT FORM EXPONENT HALF SLA,RAR MOVE SIGN TO BIT 15, EXTEND IF NECESSARY t IOR NEGXP LDB TMP STORE EXP IN 5TH WORD ADB POS4 STA B,I ADB NEG5 TRUNCATE LOW MANT TO UPPER BYTE ADB WRDS TRMNT LDA B,I AND UPBYT STA B,I CLB LDX TMP CLEAR OUT EXTRA WORDS LDA WRDS ERA,SLA,RAR IF 2 OR 3WDS, CLEAR OPND3 SBX 3 SEZ,SLA,RSS IF 2WDS, CLEAR OPND2 SBX 2 LDX UPX LDB TMP JMP UNPK5,I SET THE CHUTE AND LET IT FLY UP5WD LDA B,I ADJUST EXPONENT-- ROTATE RIGHT 1 BIT RAR STA B,I ADB NEG1 NOW TRUNCATE MANTISSA JUST IN CASE JMP TRMNT * *LUNPK5 * NEGXP OCT 177600 UPX BSS 1 *EUNPK5 * * SKP * SUBR TO CHECK FOR OVERFLOW & UNDERFLOW & SET O IF SO * BR=ADDR OF OPND, E=0 FOR NORMAL, 1 FOR EXPANDED EXPONENT * *E * *SEXPCK EXPCK NOP LDA PS128 A=STANDARD MAX. EXPONENT (127) SEZ IF NORMAL, STORE IT, ELSE USE EXPANDED EXPONENT LDA PS512 EXPANDED EXPONENT MAX. (512 ) STA EXPMX STB TMP STX XPX ADB POS4 LDA B,I A=OPND EXP CLE SSA,RSS IF EXP>0,A=-EXP CMA ADA EXPMX CLO SSA,RSS IF EXP IN RANGE GO HOME JMP RSTRB STO OVERFLOW FLAG LDA B,I CHECK SIGN OF EXP SSA IF <0, UNDERFLOW JMP UNFLW LDA PS127 ELSE SET TO MAX + STA B,I LDB TMP SET 1ST WORD TO 32767 LDA POSMX STA B,I INB CCA,CLE SET NEXT 2 WORDS TO -1 STA B,I INB STA B,I INB LDA UPBYT 4TH WORD= UPPER 8 BITS ONLY STA B,I LDX XPX RSTRB LDB TMP JMP EXPCK,I * UNFLW CLA LDB TMP XBX X=RSLT ADDR SAX 0 CLEAR OPND SAX 1 SAX 2 SAX 3 SAX 4 XBX RESTORE X,B JMP EXPCK,I SET SAILS FOR THE INDIES * *LEXPCK * EXpTPMX BSS 1 XPX BSS 1 PS128 DEC 128 PS512 DEC 512 *EEXPCK * * SKP * * ROUTINE TO CONVERT 5 WORD FP#S INTO 1 AND 2 WORD INTEGERS * ON ENTRY B=OPERAND ADDR, A=0 FOR SINGLE, 1 FOR DOUBLE INTEGER * * *E *S FIXOP NOP STA INTWD SAVE SINGLE-DOUBLE FLAG STB RSLT SAVE OPERAND ADDR SZA IF DOUBLE, A=16-- #SHIFTS=15+16*INTWD-EXP LDA NEG16 A<=-#SHIFTS ADA NEG15 ADB POS4 ADD EXP ADA B,I STA CNT CNT=-#SHIFTS CLO CLEAR OVERFLOW FOR RETURN (SET LATER) CLA CLEAR OUT STICKY BIT & EXPONENT STA STICK STA B,I LDB RSLT LDA CNT TEST IF CNT NEG SZA,RSS IF CNT=0,CHECK FOR ROUND JMP FXTRD SSA,RSS IF CNT>0, OVERFLOW JMP FIXOV GO TEST * CMA,INA NEGATE COUNT JSB AR4N SHIFT CNT TIMES ELA LSB OF A=STICK BIT STA STICK * FXTRD ADB INTWD B POINTS TO LSW OF INTEGER, CHECK FOR ROUND LDA RSLT,I IF #>=0, CLEAR & RETURN SSA,RSS ELSE CHECK FOR ROUND JMP FXCLR INB B=ADDR OF 1ST ROUND WORD CLA CLEAR A FOR COMPARES CPA B,I IF WORD NOT=0, ROUND JMP *+2 JMP FIXRD INB AND AGAIN CPA B,I JMP *+2 JMP FIXRD INB ONE MORE TIME (COULD BE EXP, BUT=0) CPA B,I JMP *+2 JMP FIXRD LDB RSLT CPA STICK NOW TEST FOR LOST BITS JMP FIXOP,I IF=0, RETURN * FIXRD LDB RSLT ADB INTWD GET LSW OF RESULT ISZ B,I IF NOT=0, DONE-- CLEAR REST & RETURN JMP FXCLR CPB RSLT IF SINGLE INTEGER, CLEAR & RETURN JMP FXCLR ISZ RSLT,I ELSE ROUND UPPER WORD JMP *+1 IT COULD SKIP! FXCLR INB NOW CLEAR LOWER WORDS CLA CLEAR A STA B,I INB STA B,I INZXTB STA B,I COULD BE EXP-- OK LDB RSLT JMP FIXOP,I * * * FIXOV LDA POSMX A=32767=OVERFLOW # LDB INTWD B=0 FOR SINGLE, -1 FOR DOUBLE INTEGER CMB,INB B= -INTWD DST RSLT,I PUT IN RESULT STO OVERFLOW RETURN LDB RSLT SET UP FPR FXCLR FXCLS ADB INTWD B=ADDR OF LOWER RESULT WORD JMP FXCLR * * INTWD BSS 1 * * SKP * * ROUTINE TO CONVERT SINGLE & DOUBLE INTEGERS TO 5 WORD FP #S * A=0 FOR SINGLE, 1 FOR DOUBLE, B=OPND ADDR * A,E LOST * * NOTE: CALLER MUST TRUNCATE RESULT IF DOUBLE FLOAT TO 32 BITS! * *E * *S FLTOP NOP STB RSLT SAVE RSLT ADDR ADB POS4 EXP=15+INTWD*16 SZA LDA POS16 ADA POS15 STA B,I LDB RSLT NORMALIZE EXP, GET FP # JSB NORM5 * JMP FLTOP,I * POS15 DEC 15 POS16 DEC 16 * * SKP * * ROUTINE TO TRUNCATE A 5 WORD OPERAND TO 2,3,4, OR 5 WORDS (FP) * ON ENTRY A=#OUTPUT WORDS, B=OPERAND ADDRESS * A,E LOST * *E *S TRNC5 NOP STB TMP SAVE OPND ADDR STA WRDS SAVE #WORDS ADA NEG4 IF 4 OR 5 WORDS, SPECIAL SSA,RSS JMP TRC45 ADA POS3 MASK OFF LOWER 8 BITS OF LSW OF MANT ADB A LDA B,I AND UPBYT STA B,I INB CLEAR NEXT WORD CLA STA B,I LDB TMP JMP *+2 NOW CLEAR 4TH WORD TRC45 LDA UPBYT MASK LOW 8 BITS OF MANT WORD 4 ADB POS3 AND B,I STA B,I LDB TMP JMP TRNC5,I * FWAA EQU * FIRST WORD OF AVAIL. MEM END 8Z   12740-18008 1913 S C0122 &FFPD1 FPP-SIS             H0101 'ASMB,L,C *&FFPD1 * * THIS MODULE TESTS FFP ROUTINES DBLE,SNGL,..DCM,PWR2,.FLUN, * .PACK, .XPAK,.XCOM, AND DDINT. * THE ONLY ENTRY POINT IS TST12, AND EXTS ARE TO FFPD3,HFAUX. * *CREATED 781127 * EDITED 781218 TO MAKE DEFS+0, REMOVE R.R ENT * * LAST CODE CHANGE 781218 1235 CC * * NAM FFPD1 790121 2420 REV 1913 CC * ENT TST12 EXT MSGI,STSTE,TSTDI EXT TINIT EXT B.R,R.RM1,R.RN1,RM.M0 EXT M.M0,M.RM0 EXT R%M1 EXT M%M1 SUP * * * * * INSTRUCTIONS * MIC DBE,105201B,0 MIC SGL,105202B,0 MIC XPK,105206B,0 MIC XCM,105215B,0 MIC DCM,105216B,0 MIC DDN,105217B,0 MIC PWR,105225B,0 MIC FLN,105226B,0 MIC PCK,105230B,0 * * SKP * * * * THIS TEST TESTS FFP MICROCODE, PART 2 * *S TST12 EQU * TSTF1 NOP JSB MSGI "FFP2 TEST" DEF MSGF1 JSB TINIT * JSB STSTE EXECUTE SUBTESTS OCT -1 ALL SUBTESTS ON SHORT PASS DEF STDBL,I DBLE DEF STSGL,I SNGL DEF STDCM,I ..DCM DEF STPW2,I PWR2 DEF STFLN,I .FLUN DEF STPCK,I .PACK DEF STXPK,I .XPAK DEF STXCM,I .XCOM DEF STDDI DDINT JMP TSTF1,I DONE * * MSGF1 ASC 6,FFP1 TEST // * * * SKP * DBLE TEST * *S STDBL NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDBL MESSAGE DBE OPCODE DEF DBLBF OPN BUFFER DEF M%M1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDBL,I * MSDBL ASC 4, DBLE / DBLBF OCT 2 EOTYP * TABLES FOR DBLE TESTS ******************************************************************** * DEC -9 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 5 WORDS. * WORD 1 - 1ST WORD OF INPUT * WORD 2 - 2ND WORD OF INPUT * WORD 3 - 1ST WORD OF EXPECTED OUTPUT * WORD 4 - 2ND WORD OF EXPECTED OUTPUT * WORD 5 - 3RD WORD OF EXPECTED OUTPUT * * OCT 077777 0.1701412E+39 OCT 177776 UPPER BOUNDARY-OUTER RANGE * OCT 077777 0.170141163178E+39 OCT 177400 OCT 000376 BYT 0,0 RTN,E-0 * * OCT 100000 -0.1701412E+39 OCT 000376 LOWER BOUNDARY-OUTER RANGE * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 BYT 0,0 * * OCT 040000 0.1469368E-38 OCT 1 UPPER BOUNDARY-INNER RANGE * OCT 040000 0.146936793853E-38 OCT 0 OCT 1 BYT 0,0 * * OCT 137777 -0.1469369E-38 OCT 176401 LOWER BOUNDARY-INNER RANGE * OCT 137777 -0.146936898950E-38 OCT 176400 OCT 1 BYT 0,0 * * OCT 076612 0.9046138E+19 OCT 053576 * OCT 076612 0.904613845903E+19 OCT 053400 OCT 000176 BYT 0,0 * * OCT 057302 0.7403148E+00 OCT 121400 * OCT 057302 0.740314841270E+00 OCT 121400 OCT 0 BYT 0,0 * * OCT 040762 0.1117218E-18 OCT 166205 * OCT 040762 0.111721805266E-18 OCT 166000 OCT 000205 BYT 0,0 * * OCT 115330 -0.2091832E-22 OCT 060153 * OCT 115330 -0.209183192871E-22 OCT 060000 OCT 000153 BYT 0,0 * * OCT 131524 -0.2209911E+20 OCT 006202 * OCT 131524 -0.220991105949E+20 OCT 006000 OCT 000202 BYT 0,0 * * * SKP * SNGL TEST * *S STSGL NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSSGL MESSAGE SGL OPCODE DEF SGLBF OPN BUFFER DEF R%M1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STSGL,I * MSSGL ASC 4, SNGL / SGLBF OCT 2 EOTYP DEC -22 #OPNS * SPECIAL TEST TABLE FOR SNGL TESTS * * OVERFLOW SHOULD BE SET ******|T************************************************************** OCT 137777 -0.146936793854E-38 OCT 177600 LOWER BOUNDARY-INNER RANGE OCT 000401 * OCT 0 0.0000000E+00 OCT 0 BYT 0,1 RTN,E-0 * * OCT 077777 +0.170141163178E+39 OCT 177600 UPPER BOUNDARY-OUTER RANGE OCT 000376 * OCT 077777 +0.1701412E+39 OCT 177776 BYT 0,1 * * ******************************************************************** * SPECIAL TEST TABLE FOR SNGL TEST * * OVERFLOW SHOULD NOT BE SET ******************************************************************** * OCT 137777 LOWER BOUNDARY-INNER RANGE OCT 177600 OCT 000001 * OCT 137777 OCT 177401 BYT 0,0 * * OCT 077777 UPPER BOUNDARY-OUTER RANGE OCT 177577 OCT 177776 * OCT 077777 OCT 177776 BYT 0,0 * * * TABLE FOR SNGL TESTS ******************************************************************** * * FIRST 3 WORDS - INPUT * SECOND 2 WORDS - OUTPUT * OCT 054173 +0.287135603715E+35 OCT 000526 OCT 106346 * OCT 054173 +0.2871356E+35 OCT 000746 BYT 0,0 * * OCT 056172 +0.447201649260E+27 OCT 124176 OCT 170262 * OCT 056172 +0.4472016E+27 OCT 124262 BYT 0,0 * * OCT 060557 +0.214263410162E+15 OCT 105471 OCT 136540 * OCT 060557 +0.2142634E+15 OCT 105540 BYT 0,0 * * OCT 046047 +0.998174653012E+07 OCT 114503 OCT 155460 * OCT 046047 +0.9981746E+07 OCT 114460 BYT 0,0 * * OCT 041443 +0.209814274109E+01 OCT 176076 OCT 165004 * OCT 041443 +0.2008143E+01 OCT 176004 BYT 0,0 * * OCT 061147 +0.187692645130E-03 OCT 127056 OCT 023351 * OCT 061147 +0.18769526E-03 OCT 127351 BYT 0,0 * * OCT 053416 +0.791765024518E-10 OCT 032105 OCT 060677 * OCT 053416 +0.7917650E-10 OCT 032277 BYT 0,0 * * OCT 073326 +0.100659253781E-18 OCT 062211 OCT 043603 * OCT 073326 +0.1006593E-18 OCT 062603 BYT 0,0 * * OCT 047131 +0.791117549280E-26 OCT 033165 OCT 011525 * OCT 047131 +0.7911175E-26 OCT 033125 BYT 0,0 * * OCT 076101 +0.912876403313E-37 OCT 014640 OCT 110413 * OCT 076101 +0.9128764E-37 OCT 015013 BYT 0,0 * * OCT 123006 -0.222764026459E+30 OCT 136521 OCT 001304 * OCT 123006 -0.2227640E+30 OCT 136704 BYT 0,0 * * OCT 135273 -0.623901549812E+18 OCT 123304 OCT 122570 * OCT 135273 -0.6239015E+18 OCT 123570 BYT 0,0 * * OCT 116745 -0.200918547392E+06 OCT 027173 OCT 142044 * OCT 116745 -0.2009186E+06 OCT 027044 BYT 0,0 * * OCT 103050 -0.111893657122E-37 OCT 114715 OCT 057405 * OCT 103050 -0.1118937E-37 OCT 115005 BYT 0,0 * * OCT 125123 -0.211198476202E-29 OCT 162564 OCT 107075 * OCT 125123 -0.2111985E-29 OCT 162475 BYT 0,0 * * OCT 137263 -0.432109685454E-21 OCT 110363 OCT 136565 * OCT 137263 -0.4321097E-21 OCT 110565 BYT 0,0 * * OCT 123016 -0.998563210089E-14 OCT 131465 OCT 001245 * OCT 123016 -0.9985632E-14 OCT 131645 BYT 0,0 * * OCT 115506 -0.600354780987E-05 OCT 172540 OCT 004737 * OCT 115506 -0.6003548E-05 OCT 172737 BYT 0,0 * * * SKP * * * ..DCM TEST * *S STDCM NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDCM MESSAGE DCM OPCODE DEF DCMBF OPN BUFFER DEF M.M0+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDCM,I * MSDCM ASC 4, ..DCM/ DCMBF OCT 2 EOTYP * TEST TABLE FOR ..DCM TESTS. * ***** ***** DEC -3 NUMBER OF TEST VALUSS IN THE TABLE OCT 000000 *TEST VALUE #1 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000377 - LO MANTISSA+EXPONENT(NEGATIVE) OCT 000000 RESULT #1 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000000 - LO MANTISSA + EXP BYT 0,0 RTN E-O * OCT 177777 *TEST VALUE #2 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177777 - LO MANTISSA+EXOONENT OCT 040000 RESULT #2 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000263 - LO MANTISSA + EXP BYT 0,0 * OCT 000000 *TEST VALUE #3 - HI MANTISSA(NEGATIVE) OCT 000000 - MID MANTISSA OCT 000376 - LO MANTISSA+EXPONENT(POSITIVE) OCT 000000 RESULT #3 - HI MANTISSA OCT 000000 - MID MANTISSA O.K. OCT 000000 - EXPONENT OVERFLOWED BYT 0,0 * * * * * * SKP * .PWR2 TEST * *S STPW2 NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSPW2 MESSAGE PWR OPCODE DEF PW2BF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STPW2,I * MSPW2 ASC 4, .PWR2/ PW2BF OCT 3 EOTYP * * TEST TABLE FOR PWR2 TESTS. * DEC -3 NUMBER OF TEST VALUES IN THE TABLE OCT 0,177776 *TEST VALUE #1 - HI,LO MANTISSA+EXPONENT DEC 1 POWER OF 2=N OCT 0,177400 RESULT #1 - EXPONENT OVERFLOWED BYT 0,0 RTN E-O * OCT 0,177403 *TEST VALUE #2 - HI,LO MANTISSA+EXPONENT DEC -1 POWER OCT 0,177401 RESULT # 2 - EXPONENT UNDERFLOWED BYT 0,0 * OCT 0,177476 *TEST VALUE # 3 - LO MANTISSA+EXPONENT DEC 5 POWER OCT 0,177510 RESULT #3 - NORMAL BYT 0,0 * * * SKP SKP * .FLUN TEST * *S STFLN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSFLN MESSAGE FLN OPCODE DEF FLNBF OPN BUFFER DEF B.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STFLN,I * MSFLN ASC 4, .FLUN/ FLNBF OCT 3 EOTYP * * TEST TABLE FOR FLUN TESTS. * DEC -2 NUMBER OF TEST VALUES IN THE TABLE OCT 177777 *TEST VALUE #1 - LO MANTISSA+EXPONENT OCT 177777 UNPACKED EXPONENT(NEGATIVE) OCT 177400 UNPACKED LO MANTISSA BYT 0,0 RTN E,0 * OCT 177776 *TEST VALUE #2 - LO MANTISSA+EXPONENT OCT 000177 UNPACKED EXPONENT(POSITIVE) OCT 177400 UNPACKED MANTISSA BYT 0,0 SKP * .PACK TEST * *S STPCK NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSPCK MESSAGE PCK OPCODE DEF PCKBF OPN BUFFER DEF R.RN1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STPCK,I * MSPCK ASC 4, .PACK/ PCKBF OCT 2 EOTYP * * TEST TABLE FOR .PACK TESTS. * DEC -2 NUMBER OF TEST VALUES IN TABLE OCT 077777 *TEST VALUE #1 - HI MANTISSA OCT 177777 - LO MANTISSA OCT 177777 - EXPONENT (NEG) OCT 040000 RESULT #1 - HI MANTISSA OCT 0 - LO MANTISSA+EXP BYT 0,0 RTN E-O * OCT 077777 *TEST VALUE #2 - HI MANTISSA OCT 177252 - LO MANTISSA OCT 000125 - EXPONENT(POS) OCT 077777 RESULT #2 - HI MANTISSA OCT 177652 LO MANTISSA+EXP BYT 0,0 * ; OCT 077777 *TEST VALUE #3 - HI MANTISSA OCT 177400 - LO MANTISSA OCT 033333 - EXPONENT OCT 077777 RESULT #3 - HI MANTISSA OCT 177733 - LO MANTISSA+RES. EXP BYT 0,0 * SKP * .XPAK TEST * *S STXPK NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSXPK MESSAGE XPK OPCODE DEF XPKBF OPN BUFFER DEF M.RM0+0 ADDR OF SUBR TO EXECUTE MACRO JMP STXPK,I * MSXPK ASC 4, .XPAK/ XPKBF OCT 2 EOTYP * * TEST TABLE FOR .XPAK TESTS. * DEC -4 NUMBER OF TEST VALUES IN THE TABLE OCT 000376 *TEST VALUE #1 - EXPONENT(POS) OCT 070707 - HI MANTISSA OCT 107070 - MID MANTISSA OCT 070400 - LO MANTISSA OCT 077777 RESULT #1 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177776 - LOW MANTISSA + EXP BYT 0,1 RTN,E-O * OCT 177653 *TEST VALUE #2 - EXPONENT(NEG) OCT 070707 - HI MANTISSA OCT 107070 - MID MANTISSA OCT 070400 - LO MANTISSA+EXP OCT 070707 RESULT #2 - HI MANTISSA OCT 107070 MID MANTISSA OCT 070527 - LO MANTISSA+EXP BYT 0,0 * OCT 000146 *TEST VALUE #3 - EXPONENT OCT 070707 - HI MANTISSA OCT 107070 - MID MANTISSA OCT 070400 - LO MANTISSA OCT 070707 RESULT #3 - HI MANTISSA OCT 107070 MID MANTISSA OCT 070714 - LO MANTISSA+EXP BYT 0,0 * OCT 000777 *TEST VALUE #4 - EXPONENT OCT 070707 - HI MANTISSA OCT 107070 - MID MANTISSA OCT 070400 - LO MANTISSA OCT 077777 RESULT #4 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177776 LOW MANTISSA + EXP BYT 0,1 * SKP * .XCOM TEST * *S STXCM NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSXCM MESSAGE XCM OPCODE DEF XCMBF OPN BUFFER DEF RM.M0+0 ADDR OF SUBR TO EXECUTE MACRO JMP STXCM,I * MSXCM ASC 4, .XCOM/ XCMBF OCT 3 EOTYP * * TEST TABLE FOR .XCOM TESTS. * DEC -3 NUMBER OF TEST VALUES IN THE TABLE OCT 052525 *TEST VALUE #1 - HI MANTISSA OCT 052525 - MID MANTISSA OCT 052400 - LO MANTISSA(NO EXPONENT) OCT 000000 RESULT #1 - ADJUSTMENT TO EXPONENT OCT 125252 - HI MANTISSA OCT 125252 - MID MANTISSA OCT 125400 - LO MANTISSA BYT 0,0 RTN,E-O * OCT 177777 *TEST VALUE #2 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177400 - LO MANTISSA(NO EXOPNENT) OCT 000000 RESULT #2 - ADJUSTMENT TO EXPONENT OCT 000000 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000400 LO MANTISSS BYT 0,0 * OCT 000000 *TEST VALUE #3 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000000 - LO MANTISSA OCT 000000 RESULT #3 - ADJUSTMENT TO EXP OCT 000000 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000000 - LO MANTISSA BYT 0,0 * SKP * DDINT TEST * *S STDDI NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDDI MESSAGE DDN OPCODE DEF DDIBF OPN BUFFER DEF M%M1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDDI,I * MSDDI ASC 4, DDINT/ DDIBF OCT 2 EOTYP * * TEST TABLE FOR DDINT TESTS. * DEC -2 NUMBER OF TEST VALUES IN TABLE 3640 OCT 177777 TEST VALUE #1 - HI MANTISSA OCT 177777 MID MANTISSA OCT 177436 - LO MANTISSA+EXPO OCT 000000 RESULT #1 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000000 - LO MANTISSA + EXP BYT 0,0 RTN,E-O * OCT 077700 TEST VALUE #2 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000430 OCT 077700 RESULT #2 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000030 - LO MANTISSA + EXP BYT 0,0 * * * END 66   12740-18009 1913 S C0122 &FFPD2 FPP-SIS             H0101 (ASMB,L,C *&FFPD2 * * THIS MODULE TESTS THE "FUNNY" FFP ROUTINES .DFER,.XFER,.CFER, * .ENTR,.ENTP,.SETP,.GOTO, AND ..MAP. * THESE ARE THE ONLY TESTS IN FFP AND SIS NOT USING TSTDI-- * IE TABLE DRIVEN. * WATCH OUT FOR .GOTO AND SOME OTHERS, AS THEY USE FORCED * BASE PAGE VALUES AND MOVE CODE AROUND.... * INTERRUPTS AND MP ARE ALSO USED IN SOME TESTS..... * EXTERNALS ARE TO TCPR, HFAUX,HFBAS. * *CREATED 781128 1615 * TO MOVE ADJ,XBUF TO BEGIN, TTB18 * TO FIX RAM .GOTO * TO MOVE PTTB'S TO .GOTO * TO MOVE TB18,TTB1... TO B4 ENTRY * EDITED 781003 1735 TO PUT PMMTN ON BASE PAGE (ITRAP TOO) * EDITED 781022 1830 TO PUT JRGOT,JNGOT ON BASE PAGE... * EDITED 781026 1550 TO USE SEPARATE CALLING SEQ. FOR GOTO IND TEST * TO MOVE M15 * TO REMOVE CVRT ,DISPL * TO REMOVE FILL,ERMES,PROVN,PROVS,DATCK,RMSSN,CFERT * EDITED 781211 1055 TO CHANGE ERROR #S * EDITED 790321 2300 TO ADD NAMES TO ERROR MSGS... * CHGES IN ANRES,BNRES,PNRES,PRNMP,PRNIN,MTNOF * EDITED 790322 1511 TO ADD END TO RMS14 MSG * * LAST CODE CHANGE 790322 1511 CC * NAM FFPD2 790322 1511 REV 1913 CC * A EQU 0 B EQU 1 CH EQU 0 INTP EQU 0 * ENT TST13 ENT STCSC,STFSC,CLCSC,INTSC * EXT CPTO,ERMS EXT MSGD,MSGI,STSTE EXT TINIT * * SUP SKP * THIS TEST TESTS FFP MICROCODE, PART 2 * *S TST13 EQU * TSTF2 NOP JSB MSGI "FFP3 TEST" DEF MSGF2 JSB TINIT INIT, CHECK CW... * JSB STSTE EXECUTE SUBTESTS OCT -1 ALL SUBTESTS ON SHORT PASS DEF TSTDF,I .DFER DEF TSTXF,I .XFER DEF TSTCF,I .CFER DEF TSTER,I .ENTR DEF TSTEP,I .ENTP DEF TSTSP,I .SETP DEF TSTGT,I .GOTO DEF TST.M ..MAP JMP TSTF2,I DONE MSGF 2 ASC 6,FFP2 TEST // * * SKP HED MAPPING CODES FOR MACRO **************************************************** * MAPPING CODES FOR MACRO * **************************************************** .DFER EQU 205B .XFER EQU 220B ..MAP EQU 222B .GOTO EQU 221B .ENTR EQU 223B .ENTP EQU 224B .SETP EQU 227B * HED CONSTANTS AND STORAGE * POS2 DEC 2 POS4 DEC 4 POS5 DEC 5 NEG1 DEC -1 NEG3 DEC -3 NEG4 DEC -4 * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 BSS 1 * * MPPAR EQU 5 * DEC -1 TEMP BSS 9 INTID BSS 1 INTSC NOP * ORB THESE MUST BE ON BASE PAGE.... ITRAP JSB *+1,I INSERT IN TRAP CELL FOR DEF INTSB INTERRUPT TEST * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. ORR * AREG BSS 1 BREG BSS 1 INTAD BSS 1 INTN1 BSS 1 INDIC BSS 1 * TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 PPB1 DEF PTTB1 PPPT1 DEF PTTB1 PRNTY DEF RNTY1 MPCKX BSS 1 * * * * * * * * * M15 DEC -15 M16 DEC -16 INNTR RAM .ENTR INSERTS DEF TTB1 FOR RSS .ENTR TEST * INNTP NOP INSERTS NOP FOR RAM .ENTP .ENTP DEF TTB1 TEST * PNTRP BSS 1 * * * * TABLES FOR ..MAP TESTS ******************************************************************** * USED FOR 2 DIMENSIONAL ARRAY TESTS. ******************************************************************** * MPHD2 EQU * DEC 4 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 6 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - LENGTH OF 1ST DIMENSION * WORD 5 - NR. OF WORDS/VARIABLE * WORD 6 - EXPECTED OUTPUT * MPBS2 EQU * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 2 OCT 4000 * OCT 6000 DEC 1 DEC 10 DEC 10 DEC 2 OCT 6264 * OCT 7777 DEC 10 DEC 1 DEC 10 DEC 3 OCT 10032 * OCT 6500 DEC 10 DEC 10 DEC 10 DEC 1 OCT 6643 * * * * * ******************************************************************** * USED FOR 3 DIMENSIONAL ARRAY TEST. ******************************************************************** * MPHD3 EQU * DEC 8 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 8 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - 3RD SUBSCRIPT * WORD 5 - LENGTH OF 1ST DIMENSION * WORD 6 - LENGTH OF 2ND DIMENSION * WORD 7 - NR. OF WORDS/VARIABLE * WORD 8 - EXPECTED OUTPUT * MPBS3 EQU * OCT 4000 DEC 1 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4000 * OCT 4000 DEC 10 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4033 * OCT 4000 DEC 1 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4416 * OCT 4000 DEC 10 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4451 * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11214 * OCT 4000 DEC 1 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11632 * OCT 4000 DEC 10 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11247 * OCT 4000 DEC 10 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11665 HED TEST # - ..MAP TESTS. * ..MAP * ********* *S TS T.M NOP * JSB MSGD OUTPUT MESSAGE. DEF MMS05 * * * TEST 2 DIMENSIONAL ARRAY * * * INITIATE * LDA MPHD2 SET CMA,INA STA INDIC COUNTER. LDA PMPB2 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP1 EQU * STA TEMP+1 SET LDA PMP2D POINTERS STA TEMP+2 LDB NEG4 TO XMAP2 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP2 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CLA (A)=0 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 2 DIM. MAP2D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP3 YES. STA POUTP,I NO. ERROR! JSB MPERR GO TO ERROR ROUTINE. XMAP3 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP4 2 DIM. TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA POS6 TO NEXT ENTRY. STA TEMP JMP XMAP1 * * * TEST 3 DIMENSIONAL ARRAY * * * INITIATE * XMAP4 EQU * LDA PMPH3,I SET CMA,INA STA INDIC COUNTER. LDA PMPB3 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP5 EQU * STA TEMP+1 SET LDA PMP3D POINTERS STA TEMP+2 LDB NEG6 TO XMAP6 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP6 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. a ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CCA (A)=-1 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 3 DIM. MAP3D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 3RD SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION BSS 1 POINTER TO 2ND DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP7 YES. STA POUTP,I NO. ERROR! JSB MPERR GO TO ERROR ROUTINE. XMAP7 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP8 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER TO ADA POS8 NEXT ENTRY. STA TEMP JMP XMAP5 * XMAP8 EQU * JMP TST.M,I * * POS6 DEC 6 POS8 DEC 8 NEG6 DEC -6 MMS05 ASC 6, ..MAP TEST/ PMPB2 DEF MPBS2 PMP2D DEF MAP2D PMPH3 DEF MPHD3 PMPB3 DEF MPBS3 PMP3D DEF MAP3D *ETST.M HED TEST # 15 - .DFER TESTS. * ********* * .DFER * ********* *S TSTDF NOP JSB MSGD OUTPUT MESSAGE. DEF MMS12 * JSB XDSET SET UP TEST. * * NOW EXECUTE .DFER TEST. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * JSB XDCHK CHECK RESULTS. JMP XDFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS15 * * * CHECK MEMORY PROTECT * XDFR3 EQU * JSB MEMPR CHECK IF MEM. PROT.PRESENT JMP TSTDF,I NO. EXIT. * LDA PXDF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB MEMTN MEM. PROTECT LOGIC. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * * RETURN FROM MICRO. * XDFR5 EQU * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XDFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFFF MEM. PROTECT. LDA PR021 PRINT ERROR MESSAGE. JSB PRNMP XDFR4 EQU * JMP TSTDF,I EXIT TEST. PXDF5 DEF XDFR5 * * MMS12 ASC 6, .DFER TEST/ RMS15 ASC 9,E020 .DFER FAILED/ PR021 DEF E021 E021 ASC 5,E021 .DFER *ETSTDF HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * *S XDSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB4 STA TTB5 STA TTB6 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB7 JMP XDSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * *S XDCHK NOP LDA NEG3 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XDCK1 EQU * LDA B,I GET CONTENTS. CPA NEG1 =-1? RSS JMP XDCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XDCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XDCHK,I YES. EXIT TO (P+1). XDCK2 EQU * ISZ XDCHK NO. ERROR. EXIT TO (P+2). JMP XDCHK,I * * HED TEST # 16 - .XFER TESTS. * ********* * .XFER * ********* *S TSTXF NOP JSB MSGD OUTPUT MESSAGE. DEF MMS13 * JSB XDSET SET UP TEST. * * EXECUTE * LDA PTTB4 (A)=SOURCE ADDRESS. LDB PTTB1 (B)=DESTINATION ADDRESS. RAM .XFER * JSB XDCHK CHECK RESULTS. JMP TSTXF,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP TSTXF,I EXIT TEST. * * * MMS13 ASC 6, .XFER TEST/ RMS16 ASC 9,E022 .XFER FAILED/ *ETSTXF HED TEST # 15 - .CFER TESTS. * ********* * .CFER * ********* * .CFER EQU 231B * *S TSTCF NOP JSB MSGD OUTPUT MESSAGE. DEF MMS21 * JSB XCSET SET UP TEST. * * NOW EXECUTE .CFER TEST. * RAM .CFER  DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * JSB XCCHK CHECK RESULTS. JMP XCFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS29 * * * CHECK MEMORY PROTECT * XCFR3 EQU * JSB QMMPR,I CHECK IF MEM. PROT.PRESENT JMP TSTCF,I NO. EXIT. * LDA PXCF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB MEMTN MEM. PROTECT LOGIC. * RAM .CFER DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * * RETURN FROM MICRO. * XCFR5 EQU * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XCFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDA PR023 PRINT ERROR MESSAGE. JSB PRNMP XCFR4 EQU * JMP TSTCF,I EXIT TEST. * PXCF5 DEF XCFR5 QMMPR DEF MEMPR PR023 DEF E023 E023 ASC 5,E023 .CFER MMS21 ASC 6, .CFER TEST/ RMS29 ASC 11,E024 .CFER DATA ERROR/ *ETSTCF * * HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * *S XCSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB5 STA TTB6 STA TTB7 STA TTB8 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB4 STA TTB9 JMP XCSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * *S XCCHK NOP LDA NEG4 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XCCK1 EQU * LDA B,I GET CONTENTS. CPA NEG1 =-1? RSS JMP XCCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XCCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XCCHK,I YES. EXIT TO (P+1). XCCK2 EQU * ISZ XCCHK NO. ERROR. EXIT TO (P+2). JMP XCCHK,I * * * * * * * * * * * SKP * .GOT-O * ********* *S TSTGT NOP JSB MSGD OUTPUT MESSAGE. DEF MMS01 CLA RESET INDICATOR. STA INDIC * * CHECK 16 INDIRECTS (CHECKS SUBR. "GETQ1") * LDA M15 FILL LOCATIONS 1-15 OF STA TEMP LDB PTTB1 TEST TABLE WITH LDA PTTB2 STA TEMP+1 "DEF NEXT LOCATION,I". XGOT3 EQU * LDA TEMP+1 IOR BIT15 STA B,I INB ISZ TEMP+1 ISZ TEMP JMP XGOT3 LDA TEMP+1 LOC 16= DEF LOC 17 STA B,I LDA JNGOT STORE "JMP RETURN" IN LOC. 17 STA TTB17 CLA,INA SET SELECTION NR. STA J * JMP XGOT1 GO TO MICRO-CODE. * RAM .GOTO EXECUTE MACRO DEF *+3 RETN DEF J NR DEF TTB1,I DEF TO RTN POINT,IND JMP RGOT JUST IN CASE THE CODE MESSES UP * * * ******************************************************************** XGOT1 EQU * RAM .GOTO CALLING SEQUENCE FOR DEF *+18 ".GOTO" FIRMWARE. DEF J PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB3 DEF TTB3 PTTB4 DEF TTB4 PTTB5 DEF TTB5 PTTB6 DEF TTB6 PTTB7 DEF TTB7 PTTB8 DEF TTB8 PTTB9 DEF TTB9 PTB10 DEF TTB10 PTB11 DEF TTB11 PTB12 DEF TTB12 PTB13 DEF TTB13 PTB14 DEF TTB14 PTB15 DEF TTB15 PTB16 DEF TTB16 PTB17 DEF TTB17 PTB18 DEF TTB18 ******************************************************************** ******************************************************************** TTB18 EQU * * * AFTER COMPLETION OF A SUBTEST, CONTROL WILL COME HERE TO * DETERMINE WHICH SUBTEST HRS TO BE EXECUTED NEXT. * NGOT EQU * LDA INDIC ADA DNGOT LDA A,I JMP A,I * DNGOT DEF *+1 DEF NGOT1 DEF NGOT2 DEF NGOT3 DEF NGOT4 DEF NGOT5 * * NGOT1 EQU * TEST FOR 16 INDIRECTS IS OK. CLA,INA SET INDIC=1. STA INDIC * * NOW CHECK FOR J=0 * LDA JRGOT FILL LDB M16 STB TEMP LOCATIONS OF LDB PTTB1 NGT11 EQU * TEST TABLE WITH STA B,I INB "JMP TO ERROR". ISZ TEMP JMP NGT11 * LDA JNGOT STORE "JMP TO RETURN" STA TTB1 IN LOC. 1. CLA SET SEL. NR AND STA J GO TO MIRCO-CODE. JMP XGOT1 * NGOT2 EQU * TEST FOR J=0 IS O.K. LDA POS2 SET INDIC=2. STA INDIC * * NOW CHECK FOR J<0 * CCA SET SEL. NR. AND STA J GO TO MICRO-CODE. JMP XGOT1 * NGOT3 EQU * TEST FOR J<0 IS O.K. LDA POS3 SET INDIC=3. STA INDIC * * NOW CHECK FOR J>16 * LDA JRGOT STORE "JMP ERROR" IN LOC. 1. STA TTB1 LDA JNGOT STORE "JMP RETURN" IN LOC. 16. STA TTB16 LDA P40 SET LOC. OF SEL. NR. AND STA J GO TO MIRCO-PROGRAM. JMP XGOT1 * NGOT4 EQU * TEST FOR J>16 IS OK. LDA POS4 SET INDIC=4. STA INDIC * * NOW CHECK FOR J=8 * LDA JRGOT STORE "JMP ERROR" IN LOC. 16. STA TTB16 LDA JNGOT STORE "JMP RETURN" IN LOC. 8 STA TTB8 LDA P8 GET SEL. NR. AND STA J GO TO MICRO. JMP XGOT1 * * NGOT5 EQU * JMP TSTGT,I RETURN. * * * * UPON DETECTING AN ERROR(IF FIRMWARE RETURNS TO * A TEST TABLE LOCATION!!!), CONTROL WILL COME HERE * TO DETERMINE WHICH ERROR MESSAGE HAS TO BE PRINTED. * RGOT EQU * LDA INDIC ADA DRGOT LDA A,I JMP A,I * DRGOT DEF *+1 DEF RGOT1 DEF RGOT2 DEF RGOT3 DEF RGOT4 DEF RGOT5 * RGOT1 EQU * * * TEST FAILED FOR 16 INDIRECTS * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS01 JMP NGOT1 GO DO NEXT SUBTEST. * RGOT2 EQU * * * TEST FAILED FOR J=0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS02 JMIuP NGOT2 DO NEXT SUBTEST. * RGOT3 EQU * * * TEST FAILED FOR J<0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS03 JMP NGOT3 DO NEXT SUBTEST. * RGOT4 EQU * * * TEST FAILED FOR J>16 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS04 JMP NGOT4 DO NEXT SUBTEST. * RGOT5 EQU * * * TEST FAILED FOR J=8 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS05 JMP TSTGT,I TEST.DONE. EXIT. * * ORB JRGOT JMP RGOT USED TO JUMP TO "ERROR ROUTINE" JNGOT JMP NGOT USED TO JUMP AFTER NON-ERROR EXIT ORR * * * MMS01 ASC 6, .GOTO TEST/ J BSS 1 P40 DEC 40 P8 DEC 8 POS3 DEC 3 BIT15 OCT 100000 RMS01 ASC 21,E030 .GOTO FAILED FOR INDIRECT ADDRESSING/ RMS02 ASC 13,E031 .GOTO FAILED FOR J=0/ RMS03 ASC 14,E032 .GOTO FAILED FOR J=NEG/ RMS04 ASC 14,E033 .GOTO FAILED FOR J>16/ RMS05 ASC 13,E034 .GOTO FAILED FOR J=8/ *ETSTGT * * * HED TEST TABLE * * * * ****************** *** TEST TABLE *** ****************** * * * TB18 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 * TTB1 BSS 1 TTB2 BSS 1 TTB3 BSS 1 TTB4 BSS 1 TTB5 BSS 1 TTB6 BSS 1 TTB7 BSS 1 TTB8 BSS 1 TTB9 BSS 1 TTB10 BSS 1 TTB11 BSS 1 TTB12 BSS 1 TTB13 BSS 1 TTB14 BSS 1 TTB15 BSS 1 TTB16 BSS 1 TTB17 BSS 1 ********* * ******************************************************************** ****************** ****************** *S ENTRY NOP THE TEST TABLE + THE FOLLOWING * 4 LOCATIONS FORM THE CALLING * SEQUENCE FOR .ENTR AND .ENTP RNTY1 BSS 1 "RAM .ENTR" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTR * NOP'S FOR .ENTP BSS 1 "RSS" FOR .ENTR *  "RAM .ENTP" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTP * ******************************************************************** ******************************************************************** ******************************************************************** STA TEMP+2 SAVE (A). STB TEMP+3 SAVE (B). LDA MPTES MEM. PROTECT TEST? SZA JMP NNTR4 YES. LDA ENTRY GET CONTENTS OF "ENTRY". CPA PNTRP CORRECT RETURN ADDRESS? JMP ENTRY,I YES. GO ON. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS17 JMP PNTRP,I EXIT TO CORRECT RETURN ADDRESS * * RMS17 ASC 20,E044 .ENTR RETURN ADDRESS NOT STORED IN ASC 9,CORRECT LOCATION/ *EENTRY * * HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS * * THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS * *S ENTRP NOP LDA RENTR SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RENTR DEF *+17 PPTB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 JMP ENTRP,I * * *S ENTF1 NOP LDA RNTF1 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF1 DEF *+18 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 JMP ENTF1,I * * *S ENTF2 NOP LDA RNTF2 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF2 DEF *+19 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF BPTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 DEF PTB18 JMP ENTF2,I * * HED FFP DIAGNOSTIC - TEST 2 * ********* * .ENTR * ********* *S TSTER NOP JSB MSGD OUTPUT MESSAGE. DEF MMS02 * CLA RESET INDICATORS. STA MPTES STA INDIC * LDA NEG3 SET UP CALLING SEQUENCE. LDB PINTR JSB SETUP * * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * TEST ALSO IF RETURN ADDRESS IS PROPERLY STORED * IN CORRECT LOCATION. MICRO PROGRAM SHOULD PROPERLY * PROCESS B-REG. ON ENTRY. * CLB RESET ENTRY LOCATION. STB TTB17 RESET LPST LOCATION OF TEST TABL STB ENTRY GO TO MICRO CODE WITH (B)=0. JSB ENTRP EXECUTE TEST. LDB PTB17 CHECK REGISTERS. JSB NTRCK LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTR1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP NNTR1 NO. RNTR1 EQU * JSB ERMS,I YES. ERROR. DEF RMS06 * * TEST FOR ACTUAL NR. OF PARAMETERS = ALLOWED NR. * OF PARAMETERS. * NNTR1 EQU * JSB ENTF1 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPB1 JSB ERPCK CHECK RESULTS. RSS JMP NNTR2 NO ERROR. JSB ERMS,I ERROR. DEF RMS07 * * TEST FOR ACTUAL NR. OF PARAMETERS > ALLOWED NR. * OF PARAMETERS. * NNTR2 EQU * JSB ENTF2 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPPT1 JSB ERPCK CHECK RESULT. RSS JMP NNTR3 NO ERROR. JSB ERMS,I ERROR. DEF RMS08 * * TEST WITH MEMORY PROTECT VIOLATION. * SET FENCE ADDRESS ABOVE "ENTRY". NNTR3 ڍEQU * JSB MEMPR IF NO MEM. PROT. PRESENT, JMP TSTER,I EXIT. ELSE LDB PRNTY SET UP FOR MEMORY PROTECT TEST, LDA PNTR4 JSB MEMTN CLA,INA SAY THAT WE ARE DOING MEM. PROT. STA INDIC TEST #1. JSB ENTRP EXECUTE TEST. * * * RETURN CODE FROM MEMORY PROTECT TESTS. * NNTR4 EQU * LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP NNTR5 YES. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDA PR043 PRINT ERROR MESSAGE. JSB PRNMP JMP TSTER,I EXIT. * * NNTR5 EQU * LDA INDIC SLA,RSS WHICH TEST? JMP TSTER,I TEST #2. EXIT. * * TEST #1 JUST DONE. NOW DO TEST #2. * SET FENCE ADDRESS ABOVE TTB1. * LDB PTTB2 SET UP MEM. PROTECT. JSB MEMTN LDA POS2 SAY THAT WE'RE DOING TEST #2. STA INDIC JSB ENTRP EXECUTE TEST. * * JMP TSTER,I EXIT. * * MMS02 ASC 6, .ENTR TEST/ PINTR DEF INNTR RMS06 ASC 21,E040 .ENTR FAILED FOR ACTUAL NR OF PARAM. ASC 7, ALLOWED NR/ PNTR4 DEF NNTR4 PR043 DEF E043 E043 ASC 5,E043 .ENTR *ETSTER * * * * * SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS * ON EXIT FROM MICRO. * ENTER WITH (B)=EXPECTED CONTENTS. * *S NTRCK NOP STB TEMP+4 SAVE EXPECTED CONTENTS OF B. LDA TEMP+2 GET ORIGINAL CONTENTS OF A. CPA PNTRP =RETURN ADDRESS? JMP NTCK1 YES. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS20 NTCK1 EQU * LDB TEMP+3 GET ORIGINAL CONTENTS OF B. CPB TEMP+4 CORRECT? JMP NTRCK,I YES. EXIT. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS21 JMP NTRCK,I EXIT. * RMS20 ASC 19,E045 .ENTR RETURNS ADDR. NOT IN A-REG/ RMS21 ASC 18,E046 .ENTR INCORRECT ADDR. IN B-REG/ *ENTRCK * * * * * SUBROUTINE TO CHECK RESULTS OF EXECUTION * OF .ENTR & .ENTP TESTS. * ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED. * (B)=ADDRESS OF PTTB1 * *S ERPCK NOP STA TEMP SET COUNTER. LDA PTTB1 (A) POINTS TO TTB1. ERPK1 EQU * CPB A,I EQUAL? RSS JMP ERPCK,I NO. ERROR. INB YES. BUMP ADDRESS. INA BUMP POINTER. ISZ TEMP DONE? JMP ERPK1 NO. ISZ ERPCK YES. BUMP RETURN ADDRESS AND JMP ERPCK,I EXIT. * * * * * SUBROUTINE TO SET UP CALLING SEQUENCE FOR * .ENTR & .ENTP TEST * * ENTER WITH (A)=-NR. OF WORDS TO BE INSERTED * AND (B)=STARTING ADDRESS OF INSERTIONS. * *S SETUP NOP STA TEMP SET COUNTER. LDA PRNTY SET DESTINATION POINTER. STA TEMP+1 STUP1 EQU * LDA B,I STORE FROM SOURCE INTO STA TEMP+1,I DESTINATION. INB BUMP POINTERS. ISZ TEMP+1 ISZ TEMP DONE? JMP STUP1 NO. JMP SETUP,I YES. * * * HED FFP DIAGNOSTIC - TEST 3 * ********* * .ENTP * ********* *S TSTEP NOP JSB MSGD OUTPUT MESSAGE. DEF MMS03 CLA CLEAR INDICATOR STA MPTES * * * * .ENTP SUBROUTINE IS THE SAME SUBROUTINE AS .ENTR * BUT WITH A DIFFERENT ENTRY POINT. * SO DO JUST ONE TEST. * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * LDA NEG4 SET UP CALLING SEQUENCE. LDB PINTP JSB SETUP CLB RESET RETURN ADDRESS LOCATION. STB TTB17 RESET LAST TEST TABLE LOCATION. STB ENTRY GO TO MICRO WITH (B)=0 JSB ENTRP EXECUTE TEST. * LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTP1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP RNTP2 NO. O.K. GO TO EXIT. RNTP1 EQU * JSB ERMS,I YES. OUTPUT ERROR MESSAGE. DEF RMS10 RNTP2 EQU * JMP TSTEP,I EXIT. * * MMS03 ASC 6, .ENTP TEST/ PINTP DEF INNTP RMS10 ASC 21,E047 .ENTP FAILED FOR ACTUAL NR OF PARAM. ASC 7,< ALLOWED NR/ *ETSTEP * * HED FFP DIAGNOSTIC - TEST 4 * * ********* * .SETP * ********* *S TSTSP NOP JSB MSGD OUTPUT MESSAGE. DEF MMS04 * * DO REGULAR TEST * JSB STPPR PREPARE TEST TABLE. JSB STPGO GO TO MICRO. JSB STPCK CHECK RESULTS. * JSB MEMPR IF NO MEM. PROT. PRESENT, JMP XSTP3 SKIP. ELSE * * DO MEMORY PROTECT TEST. * LDB PTTB2 SET FENCE ADDRESS ABOVE "TTB1". LDA PXS15 JSB MEMTN JSB STPGO GO TO MICRO. * * RETURN FROM MICRO. * XST15 LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP XSTP3 YES. EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDA PR054 PRINT ERROR MESSAGE. JSB PRNMP * XSTP3 EQU * JSB INTCK IF NOT CONF. FOR INTERR. JMP TSTSP,I EXIT. * * * * DO INTERRUPT TEST FOR COUNT > 30 * LDA PXST4 (A)=EXIT ADDRESS JSB INTON TURN ON INTERR. INTERF. CLA,INA (A)=INITIAL VALUE=1 LDB PT18 (B)=INITIAL ADDR STF INTP ENABLE INTERRUPTS * XSTP6 RAM .SETP CALL MICRO DEF CNT * CLF INTP DISABLE INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XSTP4 EQU * JSB CHECK CHECK INTERRUPT RSS JMP XSTP5 INTERRUPTED LDA PR055 NOT INTERRUPTED. PRINT JSB PRNIN ERROR MESSAGE JMP XSTP9 DO NEXT INTERR. TEST * XSTP5 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXST6 JMP XSTP7 YES. LDA PR056 NO. PRINT ERROR MESSAGE JSB PNRES XSTP7 EQU * LDA AREG WAS A-REG RESTORED? CPA POS1 JMP XSTP8 YES. LDA PR057 NO. PRINT ERROR MESSAGE JSB ANRES XSTP8 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP XSTP9 YES. DO NEXT INTERR. TEST LDA PR060 NO. PRINT ERROR MESSAGE JSB BNRES * * * TEST FOR INTERRUPTIBILITY DURING PARAM. FETCHING * XSTP9 EQU * LDA PXS11 (A)=EXIT ADDRESS JSB INTON TURN ON INTERR. INTERF. CLA,INA (A)=INITIAL VALUE LDB PT18 (B)=INITIAL ADDR. STF INTP TURN ON INTERRUPTS * XST10 EQU * RAM .SETP CALL MICRO DEF CNT1,I * CLF INTP TURN OFF INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XST11 EQU * JSB CHECK CHECK INTERRUPT RSS JMP XST12 INTERRUPTED JSB ERMS,I NOT INTERRUPTED. PRINT DEF RM061 ERROR MESSAGE. JMP TSTSP,I EXIT * XST12 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXS10 JMP XST13 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM062 * XST13 EQU * LDA AREG WAS A-REG RESTORED? CPA POS1 JMP XST14 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM063 * XST14 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP TSTSP,I YES. EXIT JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM064 JMP TSTSP,I EXIT. * * POS1 DEC 1 CNT1 DEF CNT2,I CNT2 DEF CNT3,I CNT3 DEF CNT CNT DEC 31 MMS04 ASC 6, .SETP TEST/ PXS15 DEF XST15 PR054 DEF E054 E054 ASC 5,E054 .SETP PXST4 DEF XSTP4 PT18 DEF TB18 PR055 DEF E055 E055 ASC 5,E055 .SETP PXST6 DEF XSTP6 PR056 DEF E056 E056 ASC 5,E056 .SETP PR057 DEF E057 E057 ASC 5,E057 .SETP PR060 DEF E060 E060 ASC 5,E060 .SETP PXS11 DEF XST11 PXS10 DEF XST10 RM061 ASC 21,E061 .SETP NOT INTERRUPTIBLE DURING PARAM. ASC 3,FETCH/ RM062 ASC 21,E062 .SETP P-REG NOT RESTORED ON INTERR. D gASC 10,URING PARAM. FETCH/ RM063 ASC 21,E063 .SETP A-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ RM064 ASC 21,E064 .SETP B-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ * *ETSTSP * * * * * * SUBROUTINE TO SET UP THE PARAMETERS, EXECUTE THE * CALLING SEQUENCE FOR SETP MICRO. * *S STPGO NOP LDB P15 SET COUNT. STB K LDB PTTB1 SET POINTER. CLA SET (A)=0. * RAM .SETP CALLING SEQUENCE. DEF K * JMP STPGO,I EXIT. * K BSS 1 P15 DEC 15 *ESTPGO * * * SUBROUTINE TO PREPARE TEST TABLE LOCATIONS * A "0" WILL BE STORED IN EACH LOCATION * *S STPPR NOP LDB M16 SET COUNTER. STB TEMP CLA (A)=0. LDB PTTB1 SET POINTER. STPP1 EQU * STA B,I STORE. INB BUMP POINTER. ISZ TEMP DONE? JMP STPP1 NO. JMP STPPR,I YES. EXIT. * * * * SUBROUTINE TO CHECK RESULTS * *S STPCK NOP STB TEMP SAVE (B). SZA,RSS (A)=0? JMP STPC1 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS11 STPC1 EQU * LDB TEMP RESTORE (B). CPB PTB16 (B)=LAST ADDRESS+1? JMP STPC2 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS12 * * CHECK RESULTS * STPC2 EQU * CLA SET FOR INITIAL VALUE. STA TEMP LDA M15 SET COUNTER. STA TEMP+1 LDB PTTB1 SET POINTER. STPC3 EQU * LDA B,I GET CELL CONTENTS. CPA TEMP OK? JMP STPC4 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS13 JMP STPCK,I EXIT. STPC4 EQU * ISZ TEMP BUMP VALUE. INB BUMP POINTER. ISZ TEMP+1 DONE? JMP STPC3 NO. LDA TTB16 YES. CHECK FOR "OVERRUN". SZA,RSS JMP STPCK,I OK! EXIT. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS14 JMP STPCK,I EXIT. * RMS11 ASC 18,E050 .SETP A-REG. NOT=0 UPON RETURN/ RMS12 ASC 20,E051 .SETP B-REG. DOES NOT CONTAIN LAST ASC 11,ADDRESS+1 UPON RETURN/ RMS13 ASC 17,E052 .SETP INCORRECT VALUE STORED/ RMS14 ASC 19,E053 .SETP MORE LOCATIONS FILLED THAN ASC 5,REQUESTED/ *ESTPCK * * * SKP * * * * * * HED SUBROUTINES * * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (B)=FENCE ADDRESS. * *S MEMTN NOP STA MPCKX STORE EXIT ADDRESS LDA PMMTN SET INTERRUPT ADDRESS. STA MPPAR CLA STA MPIND RESET INDICATOR. INA ANNOUNCE THAT WE ARE DOING STA MPTES A MEM. PROTECT TEST. OTB MPPAR LOAD FENCE REGISTER. STF INTP STC MPPAR TURN ON MEM. PROTECT LOGIC. JMP MEMTN,I * * * * * MEMORY PROTECT VIOLATION ROUTINE. * * *S MPCHK NOP CLF INTP LIA MPPAR GET VIOLATION REGISTER. SSA JMP MPCK1 PARITY ERROR! CLF MPPAR TURN OFF PARITY LOGIC LDA TRHLT MEMORY PROTECT VIOLATION! STA MPPAR RESTORE TRAP CELL HALT. CLA,INA SET INDICATOR. STA MPIND STF MPPAR TURN ON PARITY LOGIC. JMP MPCKX,I RETURN * MPCK1 EQU * OCT 106077 HALT ON PARITY ERROR. JMP *-1 * * ********************************************************************** * SUBROUTINE TO CHECK IF DIAGNOSTIC IS CONFIGURED FOR INTERRUPT * TEST. IF NOT THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * *S INTCK NOP LDA INTSC IF NOT CONFIGURED FOR INTERRUPTS SZA THEN EXIT TO (P+1) ISZ INTCK JMP INTCK,I ELSE EXIT TO (P+2) * * * *********************************************************************** * SUBROUTINE TO CHECK IF INTERRUPT OCCURRED IN MICROCODE. IF NOT * THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * *S CHECK NOP LDA INTID }CHECK INDICATOR SZA IF = 0 THEN EXIT TO (P+1) ISZ CHECK ELSE EXIT TO (P+2) JMP CHECK,I * * * * SUBROUTINE TO PRINT " NOT INTERRUPTIBLE" MESSAGE. * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S PRNIN NOP LDB PMS25 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE PMS25 DEF RMS25 JMP PRNIN,I EXIT RMS25 ASC 15,XXXX XXXXX NOT INTERRUPTIBLE/ * * * * SUBROUTINE TO PRINT "A-REG NOT RESTORED ON INTERP". * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S ANRES NOP LDB PMS26 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE. PMS26 DEF RMS26 JMP ANRES,I EXIT RMS26 ASC 19,XXXX XXXXX A-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "B-REG NOT RESTORED ON INTERRUPT". * * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S BNRES NOP LDB PMS27 MOVE ERROR MESSAGE MVW POS5 JSB ERMS,I PRINT ERROR MESSAGE PMS27 DEF RMS27 JMP BNRES,I EXIT RMS27 ASC 19,XXXX XXXXX B-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "P-REG NOT RESTORED ON INTERP". * ENTER WITH (A) = POINTER TO ERROR NUMBER STRING. * * *S PNRES NOP LDB PMS28 MOVE ERROR MESSAGE MVW POS5 NUMBER JSB ERMS,I PRINT ERROR MESSAGE. PMS28 DEF RMS28 JMP PNRES,I EXIT RMS28 ASC 19,XXXX XXXXX P-REG NOT REST. ON INTERR/ * HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * *S MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDB TRHLT RESTORE TRAP CELL HALT. STB MPPAR CLB RESET MEM. PROTECT TEST STB MPTES INDICATOR. CLF INTP TURN OFF INTERRUPT SYSTEM. JMP MTNOF,I EXIT. * * * * SUBROUTINE TO PRINT "NO CHECK ON MEM PROT VIOLATION". * ALSO TO TURN OFF MEM PROTECT LOGIC. * ENTER WITH (A)= POINTER TO ERROR NUMBER STRING * *S PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDB PMS09 MOVE ERROR MESSAGE MVW POS5 NUMBER * JSB ERMS,I PRINT ERROR MESSAGE. PMS09 DEF RMS09 JMP PRNMP,I EXIT. * RMS09 ASC 21,XXXX XXXXX NO CHECK ON MEM PROT VIOLATION/ *EPRNMP * * SKP HED SUBROUTINE MPERR * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR ..MAP TESTS * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)= POINTER TO EXPECTED OUTPUT * (POUTP) = POINTER TO OBTAINED OUTPUT * *S MPERR NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. CCB (B)=-1 LDA P24AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. CCB (B)=-1 LDA P24EX (A)=POINTER TO DEST. BUFFER JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDA POUTP,I (A)=OBTAINED OUTPUT. LDB TEMP+1,I (B)=EXPECTED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS24 JMP MPERR,I EXIT. * * RMS24 ASC 11,E065 ..MAP DATA ERROR OCT 6412 CR-LF ASC 2,ACT R24AC ASC 3,XXXXXX OCT 6412 CR-LF ASC 2,EXP R24EX ASC 4,XXXXXX/ P24AC DEF R24AC P24EX DEF R24EX *EMPERR * HED SUBROUTINE CBNOC * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS (STORED IN A * BUFFER) INTO OCTAL & INSERT THEM IN ASCII FORM INTO A * MESSAGE BUFFER. * ENTER WITH (A) = POINTER TO DESTINATION STRING * (B) = -NR OF DATA ITEMS TO BE PROCESSED * PRIOR TO ENTERING THE SUBROUTINE, LOCATION (TEMP+5) * MUST CONTAIN THE POINTER TO THE SOURCE STRING(ACTUAL OR * EXPECTED OUTPUT). * THE NUMBER TO BE PRINTED ARE ASSUMED TO BE SEPARATED BY 2 * N BLANKS. * *S CBNOC NOP STA TEMP+7 SAVE POINTER STB TEMP+6 SET COUNTER CBNC1 EQU * LDB TEMP+5,I (B) = BINARY NUMBER STA TEMP+3 SET POINTER LDA NEG3 SET COUNTER STA TEMP+4 CLA (A) = 0 RBL,SLB IF BIT #15 IS SET, INA ADD 1. ADA B60 MAKE ASCII ALF,ALF ROTATE INTO UPPER WORD & STORE STA TEMP+3,I CLE (E) = 0 CBNC2 EQU * CLA (A) = 0, ROTATE RBL,SLB IF BIT IS SET, ADA POS4 ADD 4 RBL,SLB ROTATE IF BIT IS SET ADA POS2 ELSE ADD 2 RBL,SLB ROTATE IF BIT IS SET, INA ELSE ADD 1 ADA B60 MAKE ASCII ALF,ALF ROTATE 8 BITS IF LOWER CHAR. SEZ JMP CBNC3 ALF,ALF AND, IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I CME SEZ,RSS JMP CBNC2 ISZ TEMP+3 ISZ TEMP+4 JMP CBNC2 ISZ TEMP+6 RSS JMP CBNOC,I ISZ TEMP+5 LDA TEMP+7 ADA POS4 STA TEMP+7 JMP CBNC1 * B60 OCT 60 SKP * HED SUBROUTINE INTON * * * ******************************************************************** * * SUBROUTINE TO TURN ON THE INTERRUPT INTERFACE. * ENTER WITH (A) = EXIT ADDRESS * *S INTON NOP STA INTN1 SAVE EXIT ADDRESS LDA ITRAP SET TRAP CELL STA INTSC,I CLA CLEAR INDICATOR STA INTID CLC INTP STCSC STC CH EXECUTE "STC SC" INSTRUCTION STFSC STF CH EXECUTE "STF SC" INSTRUCTION JMP INTON,I * * * SUBROUTINE TO TURN OFF THE INTERRUPT INTERFACE. * *S INTOF NOP CLCSC CLC CH EXECUTE "CLC SC" INSTRUCTION LDA TRHLT SET HALT IN STA INTSC,I TRAP CELL JMP INTOF,I EXIT * * * SUBROUTINE TO CHECK IF MEMORY PROTECT HARDWARE * IS PRESENT. IF PRESENT EXIT TO (P+2) Ep~LSE EXIT TO * (P+1). * *S MEMPR NOP LDA BIT5 AND CPTO SZA MEMORY PROTECT PRESENT, THEN ISZ MEMPR EXIT TO (P+1) JMP MEMPR,I ELSE EXIT TO (P+2) * BIT5 OCT 40 * * * * INTERRUPT SUBROUTINE * *S INTSB NOP CLF INTP STOP INTERRUPT STA AREG SAVE (A) STB BREG SAVE (B) JSB INTOF TURN OFF INTERRUPT INTERFACE ISZ INTID SET INDICATOR TO 1 LDA INTSB SAVE (P) STA INTAD JMP INTN1,I EXIT * * * END m  & 12740-18010 1913 S C0122 &FFPD3 FPP-SIS             H0101 ASMB,L,C *&FFPD3 * * THIS MODULE TESTS FFP DOUBLE INTEGER FCTNS (12) AND * ALSO .BLE,.NGL,..FCM,..TCM. * THIS MODULE CONTAINS TSTDI, WHICH IS USED BY FFP AND SIS TESTS. * TSTDI PERFORMS THE TESTS FOR THE TABLE DRIVEN SUBTESTS.... * ALSO INCLUDED HERE ARE THE DRIVERS FOR MOST OF THE OPCODES. * ENTS ARE TO THESE AND TST14, EXTS ARE TO HFAUX,HFBAS. * * *CREATED 780820 * EDITED 781218 TO MAKE DEFS+0 * * LAST CODE CHANGE 781218 1225 CC * NAM FFPD3 790121 2329 REV 1913 CC A EQU 0 B EQU 1 * * * * SKP * ENT TST14 ENT TSTDI,R.R,R.RM1,M.M0,M.M0D,R%M1,M%M1 ENT M.RM1 ENT B.R,M.RM0 ENT RM.M0,R.RN1 ENT STDEF * ENT DIELP,DIECP * EXT STSTE,TINIT,MSGI,MSGD,WRANS EXT CLANS,CLRST,CWCHK EXT SKF1,GETPM EXT SKNCW * EXT RST13,RST1O,ANS1O EXT OND13,OND23,ANSW1,RSLT1,OPND1,OPND2 EXT INSTR,OPNDN,WDIN,WDOUT EXT OEILP,NOPND,NRSLT EXT ODAD1,ODAD2 EXT INDCT EXT WDIN2 EXT DISPB EXT OVFB,EXTB,RTNB * * * INSTRUCTIONS * MIC DAD,105014B,0 MIC DSB,105034B,0 MIC DMP,105054B,0 MIC DDI,105074B,0 MIC DSR,105114B,0 MIC DDR,105134B,0 * MIC DNG,105203B,0 MIC DCO,105204B,0 MIC BLE,105207B,0 MIC DIN,105210B,0 MIC DDE,105211B,0 MIC DIS,105212B,0 MIC DDS,105213B,0 MIC NGL,105214B,0 * MIC FCM,105232B,0 MIC TCM,105233B,0 * * * * SUP SKP * * DOUBLE INTEGER INSTRUCTION TEST * TST14 EQU * *S TSTF3 NOP JSB TINIT INIT. TEST JSB MSGI "FFP1" DEF MSGF3 JSB STSTE EXECUTE SUBTESTS OCT -1 ALL SUBTESTS VALID SHORT PASS DEF STDAD,I DEF STDSB,I DEF STDMP,I DEF STDDI,I DEF STDSR,I DEF STDDR,I DEF STDIN,I DEF STDDE,I DEF STDIS,I DEF STDDS,I DEF STDNG,I DEF STDCO,I * DEF STBLE,I DEF STNGL,I DEF STFCM,I DEF STTCM JMP TSTF3,I DONE * * MSGF3 ASC 6,FFP3 TEST / *ETSTF3 * * * .DAD TEST * *S STDAD NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDAD MESSAGE DAD OPCODE DEF DADBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDAD,I * MSDAD ASC 4, .DAD / DADBF OCT 2 EOTYP DEC -8 #OPNS OCT 1,77777,77776,1,77777,100000 BYT 0,0 OCT 1,177700,77777,77,100000,177777 BYT 0,1 OCT 177777,1,1,177776,0,177777 BYT 0,2 OCT 100000,0,100000,0,0,0 BYT 0,3 OCT 100000,177777,77776,1,177777,0 BYT 0,0 OCT 177777,177777,0,177777,0,177776 BYT 0,2 OCT 100000,100000,0,100000,100001,0 BYT 0,0 OCT 177777,177777,177777,177777,177777,177776 BYT 0,2 * *ESTDAD * * SKP * * * .DSB TEST * *S STDSB NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDSB MESSAGE DSB OPCODE DEF DSBBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDSB,I * MSDSB ASC 4, .DSB / DSBBF OCT 2 EOTYP DEC -2 #OPNS OCT 0,177777,177777,177777,1,0 BYT 0,2 OCT 177776,177777,77777,0,77777,177777 BYT 0,1 * *ESTDSB * * SKP * * * .DMP TEST * *S STDMP NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDMP MESSAGE DMP OPCODE DEF DMPBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDMP,I * MSDMP ASC 4, .DMP / DMPBF OCT 2 EOTYP DEC -2 #OPNS OCT 0,77777,0,77777,37777,1 BYT 0,0 OCT 100000,0,177777,177777,77777,177777 BYT 0,1 * *ESTDMP * * SKP * * W@ * .DDI TEST * *S STDDI NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDDI MESSAGE DDI OPCODE DEF DDIBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDDI,I * MSDDI ASC 4, .DDI / DDIBF OCT 2 EOTYP DEC -4 #OPNS OCT 77777,177777,1,177777,0,40000 BYT 0,0 OCT 0,0,0,1,0,0 BYT 0,0 OCT 0,1,0,0,77777,177777 BYT 0,1 OCT 100000,0,177777,177777,77777,177777 BYT 0,1 * *ESTDDI * * SKP * * .DSBR TEST * *S STDSR NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDSR MESSAGE DSR OPCODE DEF DSRBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDSR,I * MSDSR ASC 4, .DSBR/ DSRBF OCT 2 EOTYP DEC -2 #OPNS OCT 177777,177777,0,177777,1,0 BYT 0,2 OCT 77777,0,177776,177777,77777,177777 BYT 0,1 * *ESTDSR * * SKP * * * .DDIR TEST * *S STDDR NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDDR MESSAGE DDR OPCODE DEF DDRBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDDR,I * MSDDR ASC 4, .DDIR/ DDRBF OCT 2 EOTYP DEC -4 #OPNS OCT 1,177777,77777,177777,0,40000 BYT 0,0 OCT 0,1,0,0,0,0 BYT 0,0 OCT 0,0,0,1,77777,177777 BYT 0,1 OCT 177777,177777,100000,0,77777,177777 BYT 0,1 * *ESTDDR * * SKP * .DIN TEST * *S STDIN NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDIN MESSAGE DIN OPCODE DEF DINBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDIN,I * MSDIN ASC 4, .DIN / DINBF OCT 2 EOTYP DEC -4 #OPNS OCT 177777,77777,177777,100000 BY=T 0,0 OCT 100000,177777,100001,0 BYT 0,0 OCT 77777,177777,100000,0 BYT 0,1 OCT 177777,177777,0,0 BYT 0,2 * *ESTDIN * * SKP * .DDE TEST * *S STDDE NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDDE MESSAGE DDE OPCODE DEF DDEBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDDE,I * MSDDE ASC 4, .DDE / DDEBF OCT 2 EOTYP DEC -4 #OPNS OCT 0,1,0,0 BYT 0,0 OCT 1,0,0,177777 BYT 0,0 OCT 100000,0,77777,177777 BYT 0,1 OCT 0,0,177777,177777 BYT 0,2 * *ESTDDE * * SKP * * .DNG TEST * *S STDNG NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDNG MESSAGE DNG OPCODE DEF DNGBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDNG,I * MSDNG ASC 4, .DNG / DNGBF OCT 2 EOTYP DEC -4 #OPNS OCT 000000,100000,177777,100000 BYT 0,0 OCT 077777,000000,100001,0 BYT 0,0 OCT 100000,000000,100000,0 BYT 0,1 OCT 000000,000000,0,0 BYT 0,2 * *ESTDNG * * SKP * * .DIS TEST * *S STDIS NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDIS MESSAGE DIS OPCODE DEF DISBF OPN BUFFER DEF M.M0+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDIS,I * MSDIS ASC 4, .DIS / DISBF OCT 3 EOTYP- NOT AFFECTED DEC -3 #OPNS OCT 177777,177776,177777,177777 BYT 0,0 OCT 177776,177777,177777,0 BYT 0,0 OCT 177777,177777,0,0 BYT 1,0 * *ESTDIS * * SKP * * .DDS TEST * *S STDDS NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDDS MESSAGE DDS OPCODE DEF DDSBF OPN BUFFER DEF M.M0+0 zQ ADDR OF SUBR TO EXECUTE MACRO JMP STDDS,I * MSDDS ASC 4, .DDS / DDSBF OCT 3 EOTYP DEC -4 #OPNS OCT 0,0,177777,177777 BYT 0,0 OCT 100000,100000,100000,77777 BYT 0,0 OCT 177777,1,177777,0 BYT 0,0 OCT 0,1,0,0 BYT 1,0 * *ESTDDS * * SKP * * .DCO TEST * *S STDCO NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSDCO MESSAGE DCO OPCODE DEF DCOBF OPN BUFFER DEF R.RM1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STDCO,I * MSDCO ASC 4, .DCO / DCOBF OCT 3 EOTYP DEC -9 #OPNS OCT 1,0,0,0,1,0 BYT 2,0 OCT 0,0,1,0,0,0 BYT 1,0 OCT 1,0,0,0,1,0 BYT 2,0 OCT 0,0,1,0,0,0 BYT 1,0 OCT 0,1,0,100000,0,1 BYT 1,0 OCT 0,100000,0,1,0,100000 BYT 2,0 OCT 0,1,0,0,0,1 BYT 2,0 OCT 0,0,0,1,0,0 BYT 1,0 OCT 0,0,0,0,0,0 BYT 0,0 * *ESTDCO * SKP * * .BLE TEST * *S STBLE NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSBLE MESSAGE BLE OPCODE DEF BLEBF OPN BUFFER DEF M%M1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STBLE,I * MSBLE ASC 4, .BLE / BLEBF OCT 2 EOTYP DEC -1 #OPNS OCT 77777,177776,77777,177400,0,376 BYT 0,0 * *ESTBLE * * SKP * * .NGL TEST * *S STNGL NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSNGL MESSAGE NGL OPCODE DEF NGLBF OPN BUFFER DEF R%M1+0 ADDR OF SUBR TO EXECUTE MACRO JMP STNGL,I * MSNGL ASC 4, .NGL / NGLBF OCT 2 EOTYP DEC -5 #OPNS OCT 40000,177600,0,0,40001,0 BYT 0,0 OCT 77777,177600,0,0,40000,2 BYT 0,0 OCT 100000,177600,0,0,100000,177400 BYT 0,0 g OCT 137777,177600,0,100000,100000,377 BYT 0,0 OCT 77777,177600,0,376,77777,177776 BYT 0,1 * *ESTNGL * * SKP * ..FCM TEST * *S STFCM NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSFCM MESSAGE FCM OPCODE DEF FCMBF OPN BUFFER DEF R.R+0 ADDR OF SUBR TO EXECUTE MACRO JMP STFCM,I * MSFCM ASC 4, ..FCM/ FCMBF OCT 2 EOTYP DEC -3 #OPNS OCT 40000,2,100000,0 BYT 0,0 OCT 100000,376,77777,177776 BYT 0,1 OCT 40000,1,0,0 BYT 0,1 * *ESTFCM SKP * ..TCM TEST * *S STTCM NOP JSB TSTDI CALL GEN. ROUTINE WITH PARMS DEF MSTCM MESSAGE TCM OPCODE DEF TCMBF OPN BUFFER DEF M.M0+0 ADDR OF SUBR TO EXECUTE MACRO JMP STTCM,I * MSTCM ASC 4, ..TCM/ TCMBF OCT 2 EOTYP DEC -3 #OPNS OCT 40000,0,0,2,100000,0,0,0 BYT 0,0 OCT 100000,0,0,376,77777,177777,177777,177776 BYT 0,1 OCT 40000,0,0,1,0,0,0,0 BYT 0,1 * *ESTTCM * * * SKP * * ROUTINE TO TEST DBLE INT INSTRS, COMMON SECTION * ON ENTRY 4 PARMS ARE ADDR OF MSG,OPCODE,OPN BUF, AND MACRO SUBR * *S TSTDI NOP JSB GETPM GET PARMS DEF TSTDI DEC 4 DEF DIMGD DEF INSTR+0 DEF DIBFK DEF OPCAD * JSB MSGD SUBTEST MSG DIMGD BSS 1 * LDA NEG16 SET OEILP- 16 TIMES STA OEILP TDILP LDA DIBFK SET DIBFP EACH TIME THRU STA DIBFP * JSB GETPM GET EOTYP,DIOCT DEF DIBFP DEC 2 DEF EOTYP TYPE OF E,O FOR OPN, 1=HONOR INIT. VALUES DEF DIOCT DIODL ISZ OPNDN INC OPND IDENT LDA DIBFP SET UP SAVE STA DIBFS DIOPL JSB CLANS CLEAR ANSW,RSLT JSB CLRST * LDA DIBFP GET 1ST OPND LDB OPND1 MVW WDIN LDB NOPND IF 1 OPND, GO ON CPB POS1 JMP DIERT LDB OPND2 MVW WDIN2 DIERT LDB NRSLT CHECK FOR #RSLTS SZB,RSS JMP DIEEO LDB ANSW1 MVW WDOUT DIEEO STA DIBFP SAVE UPDATED POINTER LDA OEILP SET EXPECTED E,O RTN AND EOTYP GET QUALIFIED INIT. VALUES JSB SKF1 IF NO E CHECK, CLEAR BIT DEF EXTB+0 AND BIT0 JSB SKF1 LIKEWISE FOR OVFL DEF OVFB+0 AND BIT1 IOR DIBFP,I OR IN EXPECTED STA ANS1O ISZ DIBFP NEW POINTER * DISEO LDA OEILP SET E,O BASED ON OEILP CLO SLA STO ERA,ERA AND POS3 #INDS=0,1,2, OR 3 STA INDCT ALSO INDCT JSB OPCAD,I GO EXECUTE INSTR * JSB SKF1 IF NO E CHECK, CLE DEF EXTB+0 CLE CLA,SEZ IF E, SET BIT 1 OF A ELA,ELA JSB SKF1 IF NO OVFLW CHECK, CLO DEF OVFB+0 CLO SOC IF OVFL, BIT 0 INA LDB RST1O UPPER HALF OF B =RTN PARM CMB ADB POS3 BLF,BLF JSB SKF1 IF NO RTN CHECK, CLEAR RTN DEF RTNB+0 CLB ADA B STA RST1O PUT BACK * DIECP RSS NORMALLY COMPARE ANSWS JMP DIESP UNLESS CHANGED BY CONF.... LDA ANSW1 COMPARE RSLTS LDB RSLT1 CMW POS6 JMP DIELP OK NOP ERROR DIEER LDA OPND1 STA ODAD1 LDA OPND2 STA ODAD2 CLA JSB WRANS REPORT ERROR, 1ST TRY * * DIELP RSS NORMALLY LOOP AGAIN JMP DIETT UNLESS NOT RSS ISZ DIOCT OR IF COUNT UP JMP DIODL ISZ OEILP INC,TEST LOOP COUNTER JMP TDILP IF NOT=0, GO AGAIN JMP TSTDI,I DONE!! DIETT JSB CWCHK TEST CW, SET PARMS LDA DIBFS REPEAT LAST OPN STA DIBFP JMP DIOPL GO AGAIN * DIESP JSB SKNCW CHECK FOR DISPLAY ALL OPNS DEF DISPB+0 JMP DIEER IF SO, PRETEND ERROR JMP DIELP ELSE CONTINUE * * POS1 DEC 1 POS3 DEC 3 POS6 DEC 6 NEG16 DEC -16 BIT0 OCT 1 BIT1 OCT 2 DIBFK BSS 1 DIBFP BSS 1 DIBFS BSS 1 EOTYP BSS 1 DIOCT BSS 1 OPCAD BSS 1 *ETSTDI * SKP * * ROUTINE TO EXECUTE INSTRS OF FMT: * * * OPCODE * DEF OPND2 * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * *S R.RM1 NOP JSB STDEF SET UP OPND DEFS (INDS) DEF OND23+0 2ND OPND DEF RRM1I+1 OCT 0 ONLY 1 * LDA INSTR PUT OPCODE IN LINE STA RRM1I DLD OND13 GET 1ST OPND RRM1I NOP MACRO DEF OND23+0 ISZ RST1O RTN PTR ISZ RST1O DST RST13 STORE RESULT JMP R.RM1,I DONE * * * SKP * ROUTINE TO EXECUTE INSTRS OF FMT: * * * OPCODE * OPND2 (NOT DEF) * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * *S R.RN1 NOP * LDA INSTR PUT OPCODE IN LINE STA RRN1I LDA OND23 SET UP 2ND OPND STA RRN1I+1 DLD OND13 GET 1ST OPND RRN1I NOP MACRO BSS 1 ISZ RST1O RTN PTR ISZ RST1O DST RST13 STORE RESULT JMP R.RN1,I DONE * * * * * * * SKP * *S * ROUTINE TO EXECUTE INSTRS OF FMT: * * OPCODE * DEF OPND-RSLT * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * RM.M0 NOP JSB STDEF SET UP DEFS (INDS) DEF RST13+1 DEF RMM0I+1 OCT 0 ONLY 1 * LDA INSTR PUT OPCODE IN LINE STA RMM0I LDA OPND1 LDB RSLT1 INB SKIP ONE LOC. MVW WDIN RMM0I NOP MACRO DEF RST13+1 ISZ RST1O RTN PTR ISZ RST1O STA RST13 STUFF A REG  JMP RM.M0,I DONE * * * * * ROUTINE TO EXECUTE INSTRS WITH FMT: * * * OPCODE * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * *S R.R NOP LDA INSTR PUT OPCODE IN LINE STA R.RI DLD OND13 GET 1ST OPND R.RI NOP MACRO ISZ RST1O RTN PTR ISZ RST1O DST RST13 STORE RESULT JMP R.R,I DONE * * * SKP *S * ROUTINE TO EXECUTE INSTRS WITH FMT: * * * OPCODE * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * B.R NOP LDA INSTR PUT OPCODE IN LINE STA B.RI LDB OND13 GET 1ST OPND B.RI NOP MACRO ISZ RST1O RTN PTR ISZ RST1O DST RST13 STORE RESULT JMP B.R,I DONE * * * * * * * SKP * *S * ROUTINE TO EXECUTE INSTRS OF FMT: * * OPCODE * DEF OPND-RSLT * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * M.M0 NOP JSB STDEF SET UP DEFS (INDS) DEF RST13+0 DEF M.M0I+1 OCT 0 ONLY 1 * LDA INSTR PUT OPCODE IN LINE STA M.M0I LDA OPND1 LDB RSLT1 MVW WDIN M.M0I NOP MACRO DEF RST13+0 ISZ RST1O RTN PTR ISZ RST1O JMP M.M0,I DONE * * * *S * ROUTINE TO EXECUTE INSTRS OF FMT: * * OPCODE * DEF OPND-RSLT (DIRECT ONLY) * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * M.M0D NOP LDA INSTR PUT OPCODE IN LINE STA M.M0J LDA OPND1 LDB RSLT1 MVW WDIN M.M0J NOP MACRO DEF RST13+0 ISZ RST1O RTN PTR ISZ RST1O JMP M.M0D,I DONE * * * * SKP *S * ROUTINE TO EXECUTE INSTRS OF FMT: * * * OPCODE * DEF OPND2-RSLT * * * USES INSTR FOR OPCODE, O.QPND1,OPND2,RSLT1 * M.RM0 NOP JSB STDEF SET UP DEFS (IND) DEF RST13+0 DEF MRM0I+1 OCT 0 1 DEF * LDA OPND2 MOVE OPND2 TO RSLT LDB RSLT1 MVW WDIN2 LDA INSTR PUT OPCODE IN LINE STA MRM0I DLD OND13 MRM0I NOP MACRO DEF RST13+0 ISZ RST1O RTN PTR ISZ RST1O JMP M.RM0,I DONE * * * * * SKP *S * ROUTINE TO EXECUTE INSTRS OF FMT: * * * OPCODE * DEF RSLT * DEF OPND2 * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * M.RM1 NOP JSB STDEF SET UP DEFS (IND) DEF RST13+0 DEF MRM1I+1 DEF OND23+0 DEF MRM1I+2 OCT 0 2 DEFS * LDA INSTR PUT OPCODE IN LINE STA MRM1I DLD OND13 MRM1I NOP MACRO DEF RST13+0 DEF OND23+0 ISZ RST1O RTN PTR ISZ RST1O JMP M.RM1,I DONE * * SKP *S * ROUTINE TO EXECUTE INSTRS OF FORMAT: * * OPCODE * DEF *+2 * DEF OPND * * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * R%M1 NOP JSB STDEF SET UP DEF DEF OND13+0 DEF R%M1I+2 OCT 0 * LDA INSTR PUT OPCODE IN LINE STA R%M1I R%M1I NOP MACRO DEF *+2 DEF OND13+0 ISZ RST1O RTN PTR ISZ RST1O DST RST13 STORE RESULT JMP R%M1,I DONE * * SKP *S * ROUTINE TO EXECUTE INSTRS OF FORMAT: * * OPCODE * DEF *+3 * DEF RSLT * DEF OPND * * * * USES INSTR FOR OPCODE, OPND1,OPND2,RSLT1 * M%M1 NOP JSB STDEF SET UP DEFS DEF RST13+0 DEF M%M1I+2 DEF OND13+0 DEF M%M1I+3 OCT 0 2 DEFS LDA INSTR PUT OPCODE IN LINE STA M%M1I M%M1I NOP MACRO DEF *+3 B@>>>>>>>>>>>>>>>> MULTIPLEXER PRE-DRIVER <<<<<<<<<<<<<<<<<<<<< * * SOURCE: 12792-18001 &PVM00 * RELOC : 12792-16001 %PVM00 * PRGMR : GDD * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSALATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ***************************************************************** * NAM PVM00,0 12792-16001 REV.2032 800605 V.03 EXT $CIC,$YCIC ENT PM00 * * THIS PRE-DRIVER IS TO BE USED TO INTERFACE THE 8 CHANNEL ASYNC * MULTIPLEXER CARD TO RTE'S INTERRUPT SYSTEM. SINCE RTE EXPECTS * EACH I/O CARD TO HAVE A UNIQUE EQT ASSOCIATED WITH IT, A MULTIPLE * EQT CARD SUCH AS THE MUX WILL NOT WORK. (CIC HAS NO WAY OF KNOWING * WHICH EQT TO SET UP BEFORE CALLING THE DRIVER.) THIS MODULE SOLVES * BY PATCHING THE INTERRUPT TABLE FOR THE CORRECT EQT BEFORE RTE * LOOKS AT IT. THE MODULE OPERATES AS FOLLOWS: * * 1. EVERY CARD INTERRUPT IS DIRECTED TO THIS MODULE INSTEAD OF $CIC. * ON FIRST ENTRY, THE DRIVER SETS UP A LINK FROM THE TRAP CELL TO * THIS MODULE, AND SAVES THE ADDRESS OF THE PROGRAM ID SEGMENT TO * SCHEDULE (FROM THE INTERRUPT TABLE), IF PRESENT, IN THE EQT. * THE REST OF THE EQT IS INITIALIZED, ALONG WITH ALL OTHER EQT'S * USING THIS CARD. * * 2. ON ENTRY THE PRE-DRIVER TURNS OFF INTERRUPTS AND SAVES THE STATE * OF THE MACHINE. IF THE SYSTEM BEING RUN UNDER IS PRIVILEGED, THE * DMA CHANNELS ARE DISABLED, THE PI CARD IS SET, AND THE INTERRUPT * SYSTEM IS RESTORED. * * 3. THE SELECT CODE OF THE CARD INTERRUPTING IS READ (LIA 4) AND * SAVED, THE CARD'S ENTRY IN THE INTERRUPT TABLE IS FETCHED. * * 4. THE VALUE OF THE INTERRUPT TABLE ENTRY IS USED TO INDICATE THE * EQT POSSIBLY USING THE CARD. m=BIT 15 OF EQT WORD 11 IS SET IF IT * IS, RESET IF NOT. IF THE BIT IS SET, THE VALUE IN THE INTERRUPT * TABLE ALREADY POINTS TO THE CORRECT EQT TO BE SET UP. * THIS IS THE NORMAL WAY CIC WORKS, AND NO ACTION IS NEEDED. * A ZERO VALUE MEANS THAT THE INTERRUPT IS UNSOLICITED, AND BITS * 0-7 OF THE WORD PLACED IN THE BACKPLANE LATCH HAVE BEEN SET TO * THE EQT# OF THE CHANNEL GENERATING THE INTERRUPT. THE EQT# WAS * PASSED TO THE CARD WHEN THE CHANNEL WAS INITIALIZED, AND IS USED * TO PATCH THE INTERRUPT TABLE WITH THE CORRECT EQT ADDRESS BEFORE * ENTERING CIC. * * 5. THE SUSPEND POINT OF THE PROGRAM RUNNING WHEN THE INTERRUPT OCCURRED * IS MOVED TO $CIC. THE A REGISTER IS SET TO THE SELECT CODE OF THE * CARD AND THE SYSTEM ENTERED AT $YCIC. * * SYSTEM EQUATES * A EQU 0 B EQU 1 EQTA EQU 1650B INTBA EQU 1654B MPTFL EQU 1770B XA EQU 1731B XB EQU 1732B XEO EQU 1733B DUMMY EQU 1737B SC OF PRIV CARD IF PRIV SYSTEM * PM00 NOP CLF 0 TURN INTS OFF! STA XA,I SAVE REGISTERS STB XB,I ERA,ALS SAVE E/O SOC INA STA XEO,I LIA 4 GET CARD'S SELECT CODE STA SCODE ..SAVE ISZ MPTFL INDICATE MP IS OFF PATCH JMP SETUP IF FIRST CALL GO CHECK FOR PRIV SYS. NOP'D AFTER CALL SWTCH JMP NOTP STC DUMMY IF PRIV SYS CLC 6 KILL DMA INTS CLC 7 STF 0 TURN ON INTS NOTP LDA SCODE CREATE CLF INST IOR #CLF STA *+1 NOP CLF SC LDB SCODE ADB INTBA FIND INTERRUPT TABLE ENTRY ADB DM6 LDA B,I FETCH.. ADA #PSW BUMP TO PORT STATUS WORD IN EQT LDA A,I FETCH.. SSA IF BUSY BIT NOT SET, SKIP TO UNSOLICITED PROCESSING JMP EXIT BIT SET, INT WAS SOLICITED, EXIT * LDA SCODE UNSOLICITED INTERRUPT: FETCH CARD DATA IOR #LIA MAKE LIA SC G* STA *+1 NOP AND B377 MASK TO GET PORT KEY (EQT#-1) STA TMP ALF PORT KEY * 16 CMA,INA ADA TMP CMA,INA PORT KEY * 15 ADA EQTA ADD ON EQT TABLE BASE = ADDR OF THIS GUY'S EQT STA TMP SAVE FOR LATER * ADA B3 BUMP POINTER TO EQT WORD 4.. LDA A,I ..TO VERIFY VALID MUX EQT AND B77 GET SELECT CODE CPA SCODE OK? JMP SCOK YES JMP EXIT NO, LEAVE INTERRUPT TABLE AS IS..DRIVER SHOULD HANDLE IT * SCOK LDA TMP NEW EQT ADDRESS... STA B,I PATCH INT TBL FOR CIC * EXIT LDA PM00 MOVE PGM SUSPEND POINT.. STA $CIC ..WHERE RTE CAN FIND IT CLA CLF 0 LIGHTS OUT! STA MPTFL CLEAR SO THAT CIC WON'T SET TO 2 LDA SCODE SET CARD SC FOR RTE JMP *+1,I ENTER SYSTEM DEF $YCIC+0 * SETUP LDA DUMMY FIRST CALL: CHECK FOR PRIVILEGED SYSTEM SZA,RSS JMP SWTC1 NOT PRIV IOR #STC PRIV: MAKE STC DUMMY STA SWTCH TO SET P.I. CARD BEFORE RE-ENABLING INTS SWTC1 CLA NOP JUMP TO THIS ROUTINE STA PATCH ..SINCE WE DON'T NEED TO DO IT AGAIN JMP SWTCH RETURN TO MAIN LINE CODE * * PRE-DRIVER TEMPORARIES * TMP NOP SCODE NOP * * CONSTANTS * #LIA LIA 0 #CLF CLF 0 #STC STC 0 #PSW DEC 10 OFSET TO PSW IN EQT FROM EQT1 B377 OCT 377 DM6 DEC -6 B3 OCT 3 B77 OCT 77 * END END$ w  12792-18002 2032 S C0122 &DVM00 12792A INTERFACE DRIVER             H0101 ASMB,Q,C ************************************************************** * * * D V M 0 0 12792A MULTIPLEXER INTERFACE DRIVER * * * * VERSION 0.49 800819 GDD * * * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSALATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ***************************************************************** * * THE FOLLOWING CONTROL REQUESTS ARE SUPPORTED: * * REQ# (OCTAL) DESCRIPTION * ---------------------------------------------------- * 6 DYNAMIC STATUS * 20 ENABLE PROGRAM SCHEDULE * 21 DISABLE PROGRAM SCHEDULE * 22 SET LOGICAL TIMEOUT * 23 BUFFER FLUSH * 24 BUFFER UN-FLUSH * 26 FLUSH CARD BUFFER(S) * 27 SET PROGRAM ADDRESS TO SCHEDULE * 30 SET PORT ID * 31 OPEN MODEM LINE * 32 CLOSE MODEM LINE * 33 CONFIGURE DRIVER RESPONSES * 34 SET CARD PARAMETERS * 35 >> NOT USED << * 36 SET TEMPORARY CARD PARAMETERS * 37 SET READ CONFIGURATION * * THE FOLLOWING I/O REQUESTS ARE SUPPORTED: * * READ: * * BIT 10 9 8 7 6 * +-----+-----+-----+-----+-----+ * |XPRNT|NOCLR| ECHO| |BINRY| * +-----+-----+-----+-----+-----+ * * BIT 10: TRANSPARENT; NO EDITING OF USER DATA (BACKSPACE,DEL) IS * PERFORMED. END OF RECORD CHAR IS * 9: ANY DATA IN CURRENT CARD RECORD PAST END OF USER BUFFER * IS SAVED ON CARD UNTIL NEXT READ(S), ELSE IT IS CANCELLED *  THIS BIT IS INDEPENDENT OF 10,8,6 * 8: ENABLE ECHO OF INCOMMING CHARACTERS, IF APPLICABLE * 7: NOT USED * 6: BINARY TRANSFER; CHARACTERS ARE RECEIVED UNTIL USER BUFFER * IS FULL. CARD IS NOT RECONFIGURED FOR CHARACTER LENGTH!!! * WRITE: * * BIT 10 9 8 7 6 * +-----+-----+-----+-----+-----+ * |XPRNT| | | |BINRY| * +-----+-----+-----+-----+-----+ * * BIT 10: TRANSPARENT; NO CR/LF IS APPENDED TO BUFFER * 9-7: NOT USED * 6: BINARY; SAME AS TRANSPARENT. * * * DRIVER STATUS (EQT5 BITS 7-0) IS DEFINED AS FOLLOWS: * * BIT 7 6 5 4 3 2 1 0 * +-----+-----+-----+-----+-----+-----+-----+-----+ * |TIMOT|BREAK| EOT |MODEM|PF/OV|DATA |SCHED| | * +-----+-----+-----+-----+-----+-----+-----+-----+ * * BIT 7: TIMEOUT OCCURRED ON LAST REQUEST * 6: BREAK KEY HIT, BUT NOT DURING READ * 5: END-OF-TAPE (CONTROL-D HIT) * 4: MODEM LINE DOWN OR FATAL MULTIPOINT ERROR * 3: PARITY ERROR OR OVERFLOW ON LAST READ * 2: TYPE-AHEAD DATA AVAILABLE (LEN IN B REGISTER) * 1: PROGRAM SCHEDULING ENABLED * 0: NOT USED, ALWAYS ZERO * * * WHEN THE SUCH HARDWARE EXISTS, THIS DRIVER WILL SUPPORT * FULL DUPLEX MODEMS, EITHER DOWNING THE LU ON LINE FAILURE * OR SIMULATING AN EOT (AT USER'S OPTION). * * FULL DATA BUFFERING (TYPE-AHEAD) IS PROVIDED. IF DATA IS RECEIVED * BEFORE A READ REQUEST IS POSTED TO THE EQT, IT WILL BE SAVED ON THE CARD * UNTIL SUCH A REQUEST APPEARS OR A FLUSH COMMAND (26B) IS GIVEN. * MULTIPLE CLASS READ REQUESTS ARE THEREFORE NOT REQUIRED TO PREVENT DATA * LOSS, AND YOU DON'T GET THOSE STUPID PROMPTS WHEN EDITING! * * * LABEL NAMING CONVENTIONS USED IN THIS DRIVER: * * FIRST CHAR = . "DEF" TO SOME ROUTINE OR TABLE * @ I/O CARD COMMAND * ? MASK FOR LOOKING AT OR SETTING A BIT * ! MASK FOR REMOVING A BIT *  # GENERAL MISC CONSTANT * BITXX BIT XX TURNED ON * BXX OCT XX * DXX DEC XX * DMXX DEC -XX * * COMMENTS OF THE FORM "A(XXXX)" MEAN "ADDRESS OF XXXX" * NAM DVM00,0 12792-16002 REV.2032 800819 V.49 EXT $LIST,$UPIO,PM00,$OPSY,$DVTB ENT IM00,CM00 * A EQU 0 B EQU 1 SC EQU 0 * EQT1 EQU 1660B EQT2 EQU 1661B EQT3 EQU 1662B EQT4 EQU 1663B EQT5 EQU 1664B EQT6 EQU 1665B EQT7 EQU 1666B EQT8 EQU 1667B EQT9 EQU 1670B EQT10 EQU 1671B EQT11 EQU 1672B EQT12 EQU 1771B EQT13 EQU 1772B EQT14 EQU 1773B EQT15 EQU 1774B * EQTA EQU 1650B A(FIRST EQT) EQT# EQU 1651B NO. OF EQTS IN SYSTEM INTBA EQU 1654B A(INTERRUPT TABLE) CHAN EQU 1673B CURRENT DMA CHANNEL ASSIGNMENT SYSTY EQU 1675B SYSTEM CONSOLE EQT ADDR OPATN EQU 1734B SYSTEM ATTENTION FLAG * * EQT EXTENSION * EXST EQU * * EQT16 NOP EQT17 NOP EQT18 NOP EQT19 NOP EQT20 NOP EQT21 NOP EQT22 NOP EQT23 NOP EQT24 NOP EQT25 NOP EQT26 NOP EQT27 NOP EQT28 NOP EQT29 NOP EQT30 NOP EQT31 NOP EQT32 NOP * EXND EQU * * * EQT LABELS: * EQTM4 EQU EQT9 EQT TEMP (BUFFER ADDRESS) EQTM2 EQU EQT10 EQT TEMP (LEN OF THIS XFER) PSW EQU EQT11 PORT STATE WORD: BIT 15 = CARD BUSY ON THIS EQT * 14 = DEFERRED ABORT IN PROGRESS * 13 = WAITING FOR/USING DMA * 12 = BUFFER FLUSH STATE * 11 = USING DMA CHANNEL 1 * 10 = I/O XFER IN PROGRESS * 9 = UNSOL. INT BEING PROCESSED * 8 = DON'T ABORT - UNSOL INT RUNNING * 7-0= LAST READ CONFIG NXTEQ EQU EQT12 BIT 15: THIS EQT SUSPENDED ON ITSELF * * BIT 14-0: A(NEXT EQT SUSPENDED ON THIS CARD) PGMAD EQU EQT16 A(PROGRAM ID SEG TO SCHEDULE) LEVL1 EQU EQT17 LEVEL 1 INTERRUPT RETURN POINT (WAIT,DMA WAIT) LEVL2 EQU EQT18 LEVEL 2 RETURN POINT (CMD1W,CMD2W,RQDMA,DOXFR) LEVL3 EQU EQT19 LEVEL 3 RETURN POINT (QUEUE, STXFR, CANIT) PID EQU EQT20 PORT ID WORD (FROM CTRL 30) CNFG1 EQU EQT21 DRIVER CONFIGURATION WORD (CTRL 33) CNFG2 EQU EQT22 CARD CONFIG WORD (CTRL 34) TAHLN EQU EQT23 LENGTH OF TYPE'D AHEAD MESSAGE IN CHARS EQTM3 EQU EQT24 EQT TEMP (THIS XFER COUNT REMAINING) EQTM1 EQU EQT25 EQT TEMP (2ND WORD SENT/RECEIVED) EQTM5 EQU EQT26 EQT TEMP (REMAINING USER BUFFER LEN) PSW2 EQU EQT27 PORT STATUS, 2ND WORD: * BIT 15: PARTIAL READ * 14,13: 00=CTRL-D RECEIVED * 01= * 10= * 11= * 12-9: NOT USED * 8: PORT HAS KEY * 7-0: PORT STATUS AS DEFINED ABOVE DVCMD EQU EQT28 DEVICE DRIVER COMMAND TO INTF DVR DVTMO EQU EQT29 DEVICE DRIVER TIMEOUT EXCOD EQU EQT30 INTERFACE DRIVER EXEC REQUEST BUFRA EQU EQT31 INTERFACE DRIVER I/O BUFFER ADDRESS OR OPT PARAM BUFLN EQU EQT32 INTERFACE DRIVER I/O BUFFER LENGTH * * VARIOUS CONSTANTS: * BIT0 OCT 1 BIT1 OCT 2 BIT2 OCT 4 BIT3 OCT 10 BIT4 OCT 20 BIT5 OCT 40 BIT6 OCT 100 BIT7 OCT 200 BIT8 OCT 400 BIT9 OCT 1000 BIT10 OCT 2000 BIT11 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 * * INITIATION ENTRY POINT * IM00 NOP INIT ENTRY POINT JSB SETUP CONFIGURE I/O AND EQT EXTENT POINTERS CLA,INA SET ENTERED AT I. FLAG STA I.FLG LDA EQT5,I POWER FAIL ENTRY?? SSA ...CHECK IF BEEN HERE BEFORE STA PFFLG YES! SET FLAG FOR READ LDA IM00 MOVE RETURN POINT TO$ C. STA CM00 LDA PGMAD,I FIRST TIME FOR THIS CARD? SZA JMP I.1 NO * LDA SCODE INDEX INTO INTERRUPT TABLE ADA DM6 ADA INTBA LDB A,I FETCH ENTRY SSB,RSS A(PGM)? CLB,INB NO CMB,INB NEGATE: PGM->TRUE ADDR; NO PGM-> -1 STB PGMAD,I SAVE IN EQT LDB EQT1 SET INTERRUPT TABLE ENTRY TO THIS EQT LDA SCODE ADA DM6 ADA INTBA STB A,I PLOP LDA JSB CREATE PRIVILEGED INTERRUPT LINK TO PRE-DRIVER JSB USRMP USER MAP ENABLED??? XSA SCODE,I YES, CROSS STORE TO SYS BASE PAGE RSS STA SCODE,I NO, DIRECT STORE LDA EQTA STA TMP1 A(FIRST EQT) LDA EQT# CMA,INA STA TMP # OF EQT'S * I.2 LDB TMP1 A(EQT) ADB B3 ..A(EQT4) LDA B,I ..FETCH AND #SCOD ISOLATE SELECT CODE CPA SCODE OUR CARD? JMP I.3 YES, GOT ONE (MAYBE) * I.4 LDB TMP1 GET NEXT EQT ADB D15 STB TMP1 ISZ TMP DONE? JMP I.2 NO, CHECK THIS GUY OUT LDA PSW2,I YES, SET 'PORT HAS KEY' FLAG INCASE OF CONSOLE IOR ?KEY STA PSW2,I JMP I.1 DONE WITH SETUP * I.3 ADB DM1 LOOK AT C. ENTRY POINT LDA B,I ..INCASE OF WIERD GEN OR BOOT CPA EQT3,I RSS JMP I.4 NOOOOOP, TRY AGAIN INB BUMP TO EQT4 LDA B,I ..TO SET ENTER-ON-TIMEOUT BIT IOR #ENTO STA B,I LDB TMP1 BEGINNING OF THIS EQT ADB D12 BUMP TO A(EXTENT) LDB B,I LDA PGMAD,I A(PROGRAM TO SCHED) STA B,I ..SET IN NEW EQT JMP I.4 END OF THIS EQT SETUP * I.1 LDA PSW2,I FETCH OLD STATUS AND #CLFC ..CLEAR OUT P-FAIL, TO, EOT, PARITY BITS STA PSW2,I ..UPDATE LDA EQT6,I FETCH REQUEST CPA #SYCL SYSTEM CLEAR REQUEST? JMP IOCLR ..YES, THINK ABOUT IT LDA EQT3,I DMA ALLOCATION? SSA,RSS JMP I.5 NO LDA LEVL1,I YES, RETURN TO REQUESTOR JMP A,I ..(PROBABLY RQDMA) * IOCLR JSB CKIO CHECK IF WE HAVE CARD. IF SO, ABORT.. JMP COMPL ELSE EXIT, AND CALL DEVICE DRIVER * * * CALL DEVICE DRIVER FOR THIS NEW USER REQUEST * I.5 JSB DVDVR CALL DEVICE DRIVER CPA #NWRQ START REQUEST? JMP *+3 YES SZA ALSO CHECK A=0 FOR NEW REQUEST JMP CM00,I NO, WE IS DONE! A&B REGS ALREADY SET, EXIT * I.6 CLA SET DEFAULT EXIT PARAMS STA EXCMD STA XLOG LDA EXCOD,I FETCH DEVICE DRIVER REQUEST RAR SSA,SLA READ OR WRITE JMP CTRL NO, CONTROL -> PROCESS SLA,RSS JMP READ PROCESS READ REQUEST JMP WRITE ........WRITE...... ********************************************************** * * CONTINUATION ENTRY * CM00 NOP JSB SETUP SET I/O AND EQT PTRS LDA EQT4,I CHECK FOR TIMEOUT AND BIT11 LDB LEVL1,I PREPARE EXIT ADDRESS.. SZA,RSS TIMEOUT? JMP B,I NO, MUST BE INTERRUPT, GO PROCESS! * XOR EQT4,I TIMEOUT! CLEAR FOR NEXT ENTRY STA EQT4,I LDA PSW,I WAITING FOR DMA? AND ?DMA SZA JMP B,I YES, COULDN'T GET IT, HANDLE WITH LOOP * LDA PSW2,I SET TIMEOUT BIT IN STATUS IOR ?TO STA PSW2,I * JSB CKIO PLAIN OLD TIMEOUT... CHECK IF I/O IN PROGRESS IOCL2 LDA CNFG1,I IN TYPE-AHEAD MODE? AND #TACN SZA JMP COMPL YES, LEAVE ANY DATA ALONE * JSB QUEUE NO, MUST SEND CANCEL TO CLEAR OLD DATA JSB CANIT LDA #BRD RESET CARD READ CONFIG STA EQTM2,I SET CONFIG.. CLA,INA ..AND LEN (1 CHAR DEFAULT) STA EQTM3,I JSB STREC GO SET! JMP COMPL DONE! CALL DEVICE DRIVER * ?TO EQU BIT7 TIMEOUT BIT IN PSW2 ********************************************************** * * CHECK IF USER MAP IS ENABLED. * * RETURNS: P+1 USER MAP * P+4 SYSTEM MAP OR NOT MAPPED * * SO... CALLING SEQUENCE = JSB USRMP * XLA/XSA ... * RSS * LDA/STA ... * USRMP NOP CHECK IF USER MAP IS ENABLED LDB $OPSY GET SYSTEM TYPE RBR,SLB (CHECK BIT 1 OF $OPSY) JMP USRM2 ..YES! CHECK WHICH MAP JMP USRM3 NOT MAPPED (SAME AS SYS MAP) P+4 RETURN USRM2 RSB DMS SYSTEM: IS USER MAP ENABLED? BLF,SLB JMP USRMP,I YES, P+1 RETURN USRM3 LDB USRMP SYSTEM MAP: P+4 RETURN ADB B3 JMP B,I * * CLEAR BUFFER FLUSH STATE FLAG IN PSW * CLBFL NOP CLEAR BUFFER FLUSH CONDITION LDA PSW,I FETCH PORT STATUS AND !BFL ..KILL BIT STA PSW,I ..RESTORE JMP CLBFL,I ..RETURN * DM6 DEC -6 D15 DEC 15 DM1 DEC -1 D12 DEC 12 B77 OCT 77 B7 OCT 7 #SCOD EQU B77 SELECT CODE MASK #XCMD EQU B7 EXIT COMMAND MASK IN DEV DVR CMD TO INTF DVR #EXSZ ABS EXST-EXND SIZE OF EXTENT #AV OCT 140000 AV FIELD IN EQT5 #CLFC OCT 177426 CLEAR TO/PF/EOT/ABT/PE BITS IN STATUS #ENTO OCT 30000 ENTER DRIVER ON TIMEOUT AND POWER FAIL (EQT4) #SYCL OCT 100003 EQT WORD 6 ON SYSTEM CLEAR (XSIO CTRL 0) ?DMA EQU BIT13 DMA WAIT BIT IN PSW !DMA OCT 157777 REMOVE DMA WAITING BIT IN PSW ?BFL EQU BIT12 BUFFER FLUSH BIT IN PSW !BFL OCT 167777 REMOVE BUFFER FLUSH BIT IN PSW * *************************************** * READ REQUEST PROCESSOR * *************************************** READ JSB CLBFL KILL BUFFER FLUSH JSB IOINT INITIALIZE POINTERS FOR I/O XFER LDA DVCMD,I FETCH FUNCTION FROM DEVICE DRIVER ALF,ALF 6 ROTATE.. AND #DVF1 ..AND MASK CODE STA B SAVE SZA ANY SET? JMP RDT15 YES, USE IT * LDA CNFG1,I DON'T SEND READ CONFIG BIT SET?? AND ?SREC SZA JMP RDT1 YES, SO DON'T SEND IT! * LDA EXCOD,I NO, MAKE READ CONFIG WORD FROM EXEC FUNCTION AND #RMSK ISOLATE XPARENT, ECHO, BINARY BITS RRR 6 POSITION BITS 10,8,6 IN 4,2,0 INA MOVE BIT 0 TO BIT 1 RAR 10,8,6 IN 3,1,0 STA B AND BIT3 ISOLATE XPARENT BIT RAR POSITION IOR B MERGE: BITS 10,8,6 IN 2,1,0 AND B7 CLEAN OFF GARBAGE ADA .RCMD VECTOR TO FIND CORRECT CONFIG WORD LDB A,I * LDA B IS THIS BINARY? AND ?ENCT ..CHECK END-ON-COUNT BIT IN CARD READ CONFIG IOR PFFLG ALSO CHECK POWER-FAIL ENTRY SZA JMP RDT11 YES, MUST SETUP READ LDA PSW,I SAME READ AS LAST TIME? AND #RCMD CPA B HUMMMM? JMP RDT1 YES, DON'T BOTHER CARD WITH WHAT IT ALREADY KNOWS * RDT11 STB EQTM2,I SAVE NEW TYPE HERE FOR LATER JSB QUEUE GO BOTHER CARD.. JSB STREC SET READ TYPE LDA PSW2,I TYPE-AHEAD DATA AVAIL? AND ?TAH SZA JMP RDT13 YES, GO FETCH JMP UNSOL NO, WAIT * RDT15 AND ?ENCT END ON COUNT?? IOR PFFLG ..OR POWER FAIL ENTRY? SZA JMP RDT11 YES! MUST SET CONFIG * RDT1 LDA PSW2,I DATA AVAIL? AND ?TAH SZA,RSS JMP UNSOL NO, HANG AROUND A WHILE * JSB QUEUE KNAB CARD RDT13 LDA TAHLN,I FETCH DATA LENGTH STA EQTM3,I SAVE FOR LATER * * >>>> ENTRY FROM 'MESSAGE RECEIVED' INTERRUPT <<<< * RDT3 LDA PSW,I CHECK FOR EOT: END-ON-CHAR ENABLED? AND ?ENCH SZA,RSS JMP RDT14 NO, CAN'T CHECK CHAR LDA PSW2,I YES, CHECK LAST CHAR REC  AND #RCS2 SZA,RSS JMP RCEOT EOT! NO XFER, DO CANCEL AND SET STATUS * RDT14 JSB STXFR SET UP TRANSFER LDB EQTM2,I FETCH XFER LEN SZB,RSS ..ZERO LEN? JMP RDT8 ..YES, CARD WANTS CANCEL, NOT READ LDA @READ TELL CARD WE WANT ITS DATA JSB CMD2D ......HEY CARD!!! JSB DOXFR ......GIMME IT LDA EQTM3,I ANY DATA LEFT TO TRANSFER? SZA JMP RDT4 YES RDT9 LDA PSW2,I NO, END OF MESSAGE? AND ?EOMP SZA JMP RDT7 NO, WAIT FOR MORE * RDT5 LDA EQTM3,I NEW COUNT OF WHAT'S LEFT STA TAHLN,I * RDT6 LDA CNFG1,I TYPE-AHEAD ENABLED OR 'DONT SEND' BIT SET? AND #TACN SZA JMP RDT10 YES LDA EXCOD,I BIT 9 SET IN USER REQUEST (KEEP DATA)? AND BIT9 SZA JMP RDT16 YES, DON'T CLEAR! LDA TAHLN,I ANYTHING ON CARD TO REMOVE? SZA JSB CANIT YES, REMOVE FIRST, THEN.. RDT16 LDA #BRD SETUP 1 CHAR BINARY READ LDB EQTM2,I SAVE LEN FOR SXLOG! STB EQTM5,I STA EQTM2,I CLA,INA 1 CHAR.. STA EQTM3,I JSB STREC GO SET LDB EQTM5,I RESET LEN STB EQTM2,I * RDT10 LDB TAHLN,I LEN OF DATA ON CARD JSB CLTAH REMOVE TYPE-AHEAD STATUS BIT SZB ..SET IN STATUS IF IOR ?TAH ....SOME DATA LEFT STA PSW2,I JSB SXLOG SET TRANSMISSION LOG JMP COMPL THIS READ COMPLETE!! EXIT, STAGE LEFT * RDT8 JSB CANIT ZERO LEN READ: CARD WANTS CANCEL, JMP RDT9 * RDT4 LDA EQTM5,I DATA LEFT: SPACE TO PUT IT? SZA JMP RDT14 YES, TRANSFER MORE! LDA EXCOD,I NO SPACE, SAVE REST? AND BIT9 ..LOOK AT BIT9 IN USER REQ SZA JMP RDT5 CLEAN UP AND COMPLETE STA EQTM3,I CLEAR XFER LEN SINCE.... JSB CANIT ...USER DOESN'T WANT DATA JMP RDT9 AND FINISH * RDT7 XOR PSW2,I CLEAR NOT-EOM-BIT STA PSW2,I JSB CKABT CHECK FOR ABORT IN PROGRESS JMP UNSOL WAIT FOR RAIN * RCEOT LDA PSW2,I SET EOT BIT IN STATUS IOR ?EOT STA PSW2,I RCPE2 JSB CANIT REMOVE DATA CLA SET LEN OF XFER TO ZERO FOR SXLOG STA EQTM2,I JMP RDT6 CLEAN UP * * ROUTINE TO SETUP CARD RECEIVE TYPE * * INPUT: EQTM2 = READ CONFIG WORD * EQTM3 = RECORD LEN IF BINARY * EQTM5 = RECORD LEN IF BINARY AND EQTM3 IS ZERO (DEFAULT) * * SETS CARD TYPE AND UPDATES PSW FOR NEXT TIME * THIS ROUTINE IS SO DON'T CALL IT FROM UNSOLICITED PROCESS * STREC NOP SET READ TYPE LDA STREC SAVE RETURN ADDR STA LEVL3,I LDA EQTM2,I AND #RCNF REMOVE GARBAGE SZA,RSS ANYTHING TO SET JMP STREC,I NO AND ?ENCT BINARY READ? SZA,RSS JMP STRC2 NO LDB EQTM3,I FETCH PHYSICAL XFER LEN FROM DEVICE DRIVER SZB,RSS ANY SET? LDB EQTM5,I NO, USE USER'S BUFFER LEN LDA @SBFL JSB CMD2W TELL CARD STRC2 LDB EQTM2,I FETCH NEW READ TYPE.. LDA @RCTP SEND NEW RECEIVE TYPE JSB CMD2W LDA PSW,I SAVE NEW RECEIVE TYPE IN PSW AND !RCMD STA B SAVE... LDA EQTM2,I FETCH NEW TYPE AND #MRCN SAVE ONLY MUX READ CONFIG IOR B MERGE WITH REST OF PSW STA PSW,I LDA LEVL3,I RETURN JMP A,I * B377 OCT 377 #MRCN EQU B377 MUX READ CONFIG IN PSW * * INITIALIZE POINTERS FOR READ/WRITE PROCESSORS * * EQTM4 = STARTING BUFFER WORD ADDRESS * EQTM5 = CHARACTER LEN OF BUFFER * IOINT NOP SET UP POINTERS FOR READ/WRITE ROUTINES LDA BUFRA,I SET UP BUFFR ADDR FOR LATER XFER STA EQTM4,I LDA BUFLN,I ..BUFR LEN JSB TOCHR ...CONVERT TO CHARS STA EQTM5,I = MAX XFER LEN JMP IOINT,I RETURN * * SET TRANSMISSION LOG FOR READ/WRITE PROCESSORS * XLOG IS CALCULATED FROM WHATS LEFT AFTER A TRANSFER BY * DOXFR: EQTM4 = BUFFER END ADDRESS+1, EQTM2 = LENGTH * OF LAST PIECE TO DETERMINE ODD/EVEN FOR CHAR LEN * IF BUFLN IS POSITIVE. SINCE ALL PIECES OF XFER ARE EVEN * UP TO THE LAST, EQTM2 CAN BE USED AS AN OVERALL ODD/EVEN * INDICATOR. BUFFER START ADDER IS IN BUFRA FROM DEVICE DVR * SXLOG NOP SET XMIT LOG LDA BUFRA,I CALCULATE XFER LEN CMA,INA ..FROM OLD AND NEW ADA EQTM4,I ..BUFFER ADDRESSES RAL ..IN CHARS LDB EQTM2,I ODD OR EVEN? SLB INA ODD, CHAR COUNT ONE MORE LDB BUFLN,I WANT IN BYTES? SSB JMP *+3 YES, LEAVE IT INA NO, ROUND TO WORDS CLE,ERA CONVERT STA XLOG JMP SXLOG,I AND RETURN * * CLEAR TYPE-AHEAD DATA AVAILABLE STATUS IN PSW2 * CLTAH NOP CLEAR TYPE-AHEAD STATUS LDA PSW2,I GET DRIVER STATUS AND !TAH REMOVE.. STA PSW2,I ...BIT JMP CLTAH,I AND RETURN * * CANCEL CARD BUFFER(S) * >>>>> DO NOT CALL THIS ROUTINE FROM ANY UNSOLICITED INTERRUPT <<<< * >>>>> PROCESSOR!! LEVL3 WILL BE WIPED BY QUEUE IF THIS EQT <<<< * >>>>> GETS SUSPENDED ON ITSELF!!!!! <<<< * CANIT NOP CLEAR CARD OF GARBAGE DATA LDB CANIT FETCH RETURN ADDR LDA @CAN GET CARD COMMAND TO CANCEL ONE BUFFER JMP CAN2 * CANAL NOP ENTRY POINT TO CANCEL >ALL< CARD BUFFERS ON THIS PORT LDB CANAL ..RETURN ADDR LDA @CANA ..PORT CLEAR COMMAND * CAN2 STB LEVL3,I SAVE RETURN ADDR JSB CMD1W SEND COMMAND TO CARD CLA NOW NOTHING ON CARD.. STA TAHLN,I ..SO CLEAR COUNTER STA EQTM3,I ..INCLUDING DATA REMAINING JSB CLTAH ....AND STATUS LDA LEVL3,I FETCH RETURN ADDR JMP A,I ..EXIT, STAGE RIGHT * * THIS TABLE DEFINES WHICH TERMINATORS TO USE FOR READ REQUESTS * TO THE MUX CARD. BITS 6,8,10 IN EXCOD FORM A 3 BIT INDEX * INTO THIS TABLE. THESE ARE DEFAULT VALUES WHICH ARE USED IF * THE DEVICE DRIVER DOES NOT SPECIFY ANY OVERRIDES * .RCMD DEF *+1 READ TYPES: VECTOR ON BITS 10/8/6 OCT 246 ASCII, ECHO OFF #BRD OCT 010 BINARY, ECHO OFF OCT 247 ASCII, ECHO ON OCT 011 BINARY, ECHO ON OCT 204 TRANSPARENT, ECHO OFF OCT 010 BI & TR - TAKE BI, ECHO OFF OCT 205 TRANSPARENT, ECHO ON OCT 011 BI & TR - TAKE BI; ECHO ON * BM5 OCT 177773 B17 EQU D15 DM255 OCT 177400 #RMSK OCT 2500 BITS 10,8,6 IN READ FCN B160K OCT 160000 #RCS2 EQU B160K TERMINATING CHARACTER AND NOT-EOM IN PSW2 #RCMD EQU B377 LAST READ CONF IN PSW #DVF1 OCT 174377 DEVICE DRIVER FCN CODE IN DEV DVR CMD TO INTF DVR #TACN OCT 20200 TYPE-AHEAD & DON'T SEND ENABLE RECEIVE IN CONFG1 !RCMD EQU DM255 REMOVE READ CONFIG IN PSW ?TAH EQU BIT2 TYPE-AHEAD DATA AVAIL BIT IN STATUS !TAH EQU BM5 REMOVE TYPE-AHEAD DATA AVAIL BIT IN STATUS ?EOMP EQU BIT15 NOT-END-OF-MESSAGE-YET BIT IN PSW2 ?ENCH EQU BIT2 END-ON-CHARACTER BIT IN ENABLE REC CMD TO CARD ?ENCT EQU BIT3 END-ON-COUNT BIT IN ENABLE REC CMD TO CARD ?SREC EQU BIT7 DON'T SEND READ CONFIG IN CNFG1 * *************************************** * WRITE REQUEST PROCESSOR * *************************************** WRITE JSB QUEUE KNAB CARD LDA PSW,I CHECK BUFFER FLUSH AND ?BFL SZA,RSS JMP WRT5 NO, WRITE OK LDA EQT1,I FETCH A(NEXT REQUEST ON Q) JSB USRMP USER MAP ENABLED?? XLA A,I YES, CROSS LOAD ITS LINK PTR RSS LDA A,I NO, FETCH DIRECTLY SZA ANYBODY ELSE WAITING? JMP COMPL YES, IGNORE THIS REQUEST JSB CLBFL NO! CLEAR BUFFER FLUSH * WRT5 JSB IOINT SET UP BUFFER PTRS LDA DVCMD,I FETCH DEVICE DRIVER CMD.. ALF,ALF POSITION TO GET.. AND #MRCN ..MUX READ CONFIG.. STA EQTM2,I ..TO SEND TO... JSB STREC CARD FOR WRITE-READ REQUEST * WRT3 LDA @SEL REQUEST XMIT JSB CMD2W ..SEND TO CARD * * >>>> ENTRY FROM 'TRANSMIT BUFFER AVAILABLE' INTERRUPT <<<< * WRT1 SZA,RSS BUFFER AVAIL? JMP UNSOL NO,WAIT FOR ONE STA EQTM3,I YES, SAVE LEN JSB STXFR SET UP DATA TRANSFER LDA DVCMD,I GET DEVICE DRIVER CMD AND #OVRD OVERRIDE EXEC FUNCTION CODE? ALF,ALF SZA JMP WRT4 YES LDA EXCOD,I NO, FETCH FUNCTION CODE AND #BITR ISOLATE BINARY AND XPARENT BITS (6&10) SZA,RSS EITHER SET? LDA ?CRLF NO, SEND CR/LF WRT4 AND #OVR2 MASK TO JUST "WRITE DATA CMD" BITS LDB EQTM5,I CHECK IF WANTED XFER LEN.. CPB EQTM2,I ..IS THE SAME AS REAL XFER LEN RSS IOR ?PRT NO!! PARTIAL XFER; THE REST WILL COME LATER IOR EQTM2,I MERGE FUNCTION FLAGS WITH XFER LEN STA B .. TO 2ND WORD LDA @WRT JSB CMD2D SEND 2-WORD-BEFORE-DMA COMMAND TO WRITE JSB DOXFR DO TRANSFER LDA EQTM5,I ANY DATA LEFT TO TRANSFER? SZA JMP WRT3 YES, TRY AGAIN * JSB SXLOG SET XMIT LOG JMP COMPL UNSOLICITED WAIT WITH COMPLETE * #BITR OCT 2100 BINARY&TRANSPARENT BITS IN FCN #OVRD OCT 370 WRITE OVERRIDE FIELD IN DEVICE DRIVER CMD #OVR2 OCT 170000 WRITE DATA PART OF WRITE OVERRIDE FROM DEV DVR ?PRT EQU BIT11 PARTIAL XFER BIT IN WRITE CMD TO CARD ?CRLF EQU BIT12 ADD CR/LF IN WRITE CMD TO CARD B6 OCT 6 * ************************************** * S T X F R SET UP DATA TRANSFER* * * * SETS EQTM2 TO TRANSFER LEN * * INPUT: EQTM3 = REQ. BUFR LEN * * EQTM5 = REMAINING SPACE IN * * USER BUFFER * ************************************** STXFR NOP SET UP DATA XFER LDA STXFR SAVE RETURN ADDR STA LEVL3,I ..IN EQT LDA EQTM5,I BUFFER SPACE AVAIL. LDB EQTM3,I LEN OF DATA TO XFER JSB MIN ..TAKE LESSER STA EQTM2,I ..AS LEN OF THIS XFER * * REQUEST USE OF A DMA CHANNEL. A-REG = LENGTH OF PROPOSED XFER. * IF NOT LONG ENOUGH, DMA IS A WASTE OF TIME, SO NO CHANNEL WILL * BE ASKED FOR. REQUEST IS MADE WITH A TIMEOUT RUNNING TO PREVENT * EXCESSIVE WAIT (2 MAG TAPE REWINDS, ETC) * NOTE!!!! BECAUSE OF THE USE OF GET-DMA-ON-THE-FLY IN THIS DRIVER * THIS DRIVER WILL ONLY WORK IN RTE-M OR RTE-IVB (NOT A). TO MAKE * IT WORK IN OTHER SYSTEMS FORCE USE OF LIA/OTA CODE, ALTHOUGH * DOING SO WILL DOUBLE OVERHEAD ON LONG RECORDS (ABOUT 6%/CHANNEL) * ADA #DLEN REALLY NEED DMA? SSA JMP NODM2 NO, FASTER TO DO LIA/OTA LOOP LDA PSW,I SET WAITING FOR DMA FLAG IOR ?DMA STA PSW,I LDA #DMTO SET DMA REQUEST TIMEOUT (SAFETY VALVE) STA EQT15,I LDA .RDMA SET RETURN ADDR FROM REQUEST STA LEVL1,I LDA B5 EXIT AT P+3 REQUESTING DMA ISZ CM00 ISZ CM00 JMP CM00,I * .RDMA DEF *+1 LDA I.FLG >>> RETURN POINT <<< GOT DMA? SZA,RSS (CHECK IF ENTERED AT I. ) JMP NODMA NO DMA, MUST DO LIA/OTA LOOP LDA PSW,I SET CHANNEL ALLOCATED IN PSW FOR "BLAST" AND !CH1 LDB CHAN CPB B6 CHANNEL 1? IOR ?CH1 YES, SET FLAG STA PSW,I SET IN STATUS JMP GTDMA GOT IT! * NODMA LDA B6 SET DMA RETURN FLAG STA DMFLG ..SO NEXT EXIT WILL REMOVE EQT FROM DMA Q NODM2 LDA PSW,I CLEAR DMA FLAG AND !DMA STA PSW,I LDA #LXFR NOPE, MAX XFER LEN MAY BE SMALLER RSS GTDMA LDA #MXFR # MAX XFER LEN CARD CAN TAKE IN ONE SHOT LDB EQTM2,I DATA LEN JSB MIN ..TAKE MIN AGAIN STA EQTM2,I ..REAL XFER LEN (HONEST!) LDB LEVL3,I RETURN JMP B,I * #MXFR OCT 3777 XFER LEN FIELD IN READ/WRITE CMD TO CARD #LXFR EQU BIT6 MAX XFER BY LIA/OTA LOOP = 64 CHARS #DLEN DEC -15 THRESHOLD LEN OF NON-DMA XFER (BYTES) * ********************************** * DOXFR: CALLS EITHER BLAST * * OR OOZE TO DO DATA TRANSFER * * TO OR FROM I/O CARD * * EQTM4 = A(BUFFER) * * EQTM2 = LEN(BUFFER) IN BYTES * ********************************** * DOXFR NOP LDA DOXFR SAVE RETURN ADDR STA LEVL2,I LDA PSW,I GOT DMA? AND ?DMA SZA,RSS BLAST DATA AT CARD? JMP OOZE NO, USE OZMOSIS * * DO DMA TRANSFER TO/FROM CARD. EQTM3 = BUFFER ADDRESS * EQTM2 = BUFFER LENGTH * EXCOD (EXEC REQUEST) TELLS READ OR WRITE * PSW MUST CONTAIN VALID CHANNEL FLAG * BLAST LDB B6 SET UP DMA CHANNEL LDA PSW,I CHANNEL 1 OR 2? AND ?CH1 SZA,RSS INB CH 2 LDA B LDB .DMIN SET DCPC I/O INSTS JSB SETEM LDA SCODE CARD SELECT CODE OTA03 OTA 6 CW 1 CLC01 CLC 2 SET FOR CW 2 LDA EQTM4,I A(BUFFER START) LDB EXCOD,I READ OR WRITE? SLB IOR BIT15 READ: SET INPUT OTA04 OTA 2 CW 2 STC02 STC 2 SET FOR CW 3 LDA EQTM2,I MAKE XFER LEN JSB TOWRD CONVERT TO -WORDS OTA05 OTA 2 CW 3 STC03 STC 6,C START DMA CLC02 CLC 6 KILL FINISH INTERRUPT (GET ONE FROM CARD) JSB WAIT WAIT FOR CARD INT. BLSTX CCA SEND ONE LAST WORD JSB OUT2 ...TO FINISH XFER LDA PSW,I I/O NO LONGER IN PROGRESS AND #NXFR ..SO REMOVE DMA, CHANNEL & XFER BITS STA PSW,I ..IN STATUS LDA B6 SET TO RETURN DMA.. STA DMFLG ...TO SYSTEM JSB WAIT WAIT FOR FINAL INTERRUPT * * UPDATE POINTERS TO REFLECT WHAT HAS BEEN TRANSFERRED * EQTM4 WILL CONTAIN FIRST WORD OF 'NEXT' BUFFER * EQTM3,5 ARE DECREMENTED TO SHOW WHAT'S LEFT * LDB EQTM2,I LEN OF THIS XFER CMB,INB MAKE NEG LDA EQTM5,I BUFR LEN REMAINING.. ADA B ..NOW LESS STA EQTM5,I LDA EQTM3,I REMAINING STUFF TO XFER ADA B ..ALSO LESS STA EQTM3,I LDA EQTM4,I START ADDR OF BUFFER LDB EQTM2,I LEN IN BYTES.. CLE,ERB ..MAKE WORDS ADA B NEW START OF BUFFER STA EQTM4,I LDA LEVL2,I END OF XFER JMP A,I * .DMIN DEF *+1 DMA SETUP INSTRUCTIONS DEF OTA03 DEF OTA04 DEF OTA05 DEF CLC01 DEF CLC02 DEF STC02 DEF STC03 OCT 0 END OF DMA SETUP * * SIMULATE DMA XFER WITH LIA/OTA LOOP * INPUT PARAMS SAME AS "BLAST" * OOZE JSB WAIT WAIT TILL CARD IS READY LDA EQTM2,I GET LEN SZA,RSS ZERO LEN RECORD?? JMP BLSTX YES, DONE JSB TOWRD CONVERT TO -WORDS STA TMP LDB EXCOD,I READ OR WRITE? SLB JMP OOZ1 READ.. DLD OUT WRITE..SET FOR OUTPUT TO CARD JMP OOZ4 OOZ1 DLD IN READ..SET FOR INPUT FROM CARD OOZ4 DST OOZ2 LDB EQTM4,I A(BUFFER START) OOZ2 NOP LIA SC,C OR LDA B,I NOP STA B,I OR OTA SC,C INB INCR BUFFR PTR ISZ TMP DONE? JMP OOZ3 NO LDA EXCOD,I YES, READ OR WRITE? SLA JMP BLSTX READ: XFER DONE JSB SFCLP WRITE, WAIT FOR ONE LAST FLAG JSB WAIT NO FLAG, WAIT A WHILE JMP BLSTX ...THEN EXIT * OOZ3 JSB SFCLP WAIT FOR FLAG JSB WAIT NO FLAG, WAIT A WHILE (SHOULD NEVER HAPPEN) JMP OOZ2 ..NOW XFER NEXT WORD * {* IN EQU * LIA02 LIA SC,C STA B,I * OUT LDA B,I OTA06 OTA SC,C * #SFLC DEC -50 # TIMES FOR SFC LOOP TO WAIT FOR CARD FLAG ?CH1 EQU BIT11 USING DMA CHANNEL 1 BIT IN PSW !CH1 OCT 173777 REMOVE CHANNEL BIT IN PSW ?XFR EQU BIT10 DATA TRANSFER IN PROGRESS IN PSW B1 EQU BIT0 #NXFR OCT 151777 REMOVE DMA, CH1 & XFER BITS IN PSW * **************************************** * CONTROL REQUEST PROCESSOR * **************************************** CTRL JSB QUEUE FETCH CARD LDA EXCOD,I GET REQUEST AND #FCN ISOLATE FUNCTION ALF,ALF RAL,RAL POSITION CPA B6 DYNAMIC STATUS? JMP CN06 YES ADA BM20 OFSET FOR VECTORING SSA OK? JMP COMPL NO, IGNORE OTHER REQ'S BETWEEN 1&20B ADA .CTRL VECTOR.. JMP A,I * .CTRL DEF *+1,I DEF CN20 ENABLE PROGRAM SCHEDULING DEF CN21 DISABLE PROGRAM SCHEDULING DEF CN22 SET DEVICE TIMEOUT DEF CN23 ENTER BUFFER-FLUSH STATE DEF CN24 TERMINATE BUFFER-FLUSH STATE DEF COMPL >>>> NOT USED <<<< DEF CN26 CLEAR CARD BUFFER(S) DEF CN27 SET ID-SEGMENT ADDRESS FOR SCHEDULING DEF CN30 SET CARD CONFIG (KEY) DEF CN31 OPEN MODEM LINE DEF CN32 CLOSE MODEM LINE DEF CN33 CONFIGURE DRIVER DEF CN34 SET CARD PARAMETERS DEF COMPL >>>> NOT USED <<<< DEF CN36 SET TEMPORARY PARAMETERS DEF CN37 SET READ CONFIGURATION * CN06 LDA BUFRA,I DYNAMIC STATUS SZA IPRAM DEFINED? JMP CN6.1 YES, FETCH CARD STATUS CN6.2 LDB TAHLN,I SET XMIT LOG = LEN OF TYPE-AHEAD DATA STB XLOG ..AND RETURN NOW JMP COMPL * CN6.1 LDA @GMOD GET CARD STATUS JSB CMD1W LDB BUFRA,I FETCH A(USER PARAM) STA B,I ..AND SAVE CARD STATUS JMP CN6.2 SET XMIT LOG AND EXIT * CN20 LDA PSW2,I ENABLE PROGRAM SCHEDULING IOR ?ENAB CN20A STA PSW2,I JMP COMPL COMPLETE NOW * CN21 LDA PSW2,I DISABLE PROGRAM SCHEDULING AND !ENAB JMP CN20A * CN22 LDA BUFRA,I SET TIMEOUT SSA,RSS IF POS, MAKE NEG CMA,INA STA EQT14,I JMP COMPL * CN23 LDA PSW,I SET BUFFER FLUSH IOR ?BFL STA PSW,I JMP COMPL AND COMPLETE * CN24 JSB CLBFL CLEAR BUFFER FLUSH JMP COMPL ..AND EXIT * CN26 LDA BUFRA,I CANCEL CARD BUFFER(S)...FETCH PARAM SZA KILL ALL? JMP CN26A YES JSB CANIT NO, JUST THE CURRENT BUFFER JMP COMPL EXIT PEACEFULLY CN26A JSB CANAL HAYEEEEEEEEEE! KLUNK! JMP COMPL EXIT QUICKLY * CN27 LDA BUFRA,I SET PROG ADDR TO SCHEDULE SSA,RSS NEG?? SZA,RSS ZERO?? CCA NEGATIVE OR ZERO: DEFAULT TO NO PGM STA PGMAD,I JMP COMPL * CN30 LDA PSW2,I SET PORT KEY IOR ?KEY STA PSW2,I SET 'PORT KEY SET' FLAG LDA @SKEY SET PORT KEY LDB BUFRA,I STB PID,I SAVE IN EQT CN30A JSB CMD2W SEND TO CARD JMP COMPL AND EXIT * CN34 LDA @CNF2 CONFIGURE CARD LDB BUFRA,I STB CNFG2,I SAVE IN EQT JMP CN30A SEND TO CARD AND EXIT * CN33 LDA #NFLD CONFIGURE DRIVER FOR THIS PORT STA TMP SET # OF FIELDS COUNTER LDB #AV SET INITIAL MASK * CN33B LDA BUFRA,I FETCH USER REQUEST WORD AND B PICK OFF A FIELD SZA,RSS USER WANT IT SET? JMP CN33A NO * STA TMP1 YES LDA B GET MASK CMA ..COMPLEMENT TO GET CONFIG MASK AND CNFG1,I CLEAR OLD FIELD IOR TMP1 SLIDE IN NEW FIELD STA CNFG1,I .. AND RESTORE * CN33A RBR,RBR SET FOR NEXT FIELD TWO BITS THATAWAY ISZ TMP DONE WITH ALL FIELDS?  JMP CN33B NO * LDA BUFRA,I SET DEVICE DRIVER # AND #LDVN ISOLATE.. SZA,RSS DEFAULT? JMP COMPL YES, EXIT STA TMP NO, SAVE LDB $DVTB FETCH 1ST WORD OF DEVICE DRIVER JUMP TABLE CMA,INA ...WHICH IS LEN OF TABLE INB CORRECT FOR MISSING DEFAULT DEVICE DRIVER ADB A WANTED DVR# IN RANGE? SSB JMP CMPL2 NO, DON'T SET LDB .DVTB OK, CHECK FOR UNDEFINED "DEF" (BAD GEN) ADB TMP INDEX TO WANTED ENTRY ADB DM1 LDB B,I FETCH SZB,RSS OK????? JMP CMPL2 NO! CAN'T TALK TO THIN AIR, EXIT * LDA CNFG1,I OK, SET IN DRIVER CONFIG WORD AND #LDVM IOR TMP ..MERGE STA CNFG1,I LDA EQT5,I CLEAR DRIVER TYPE TO 00 AND !DVTP STA EQT5,I JMP CMPL2 AND EXIT NOW (DON'T CALL DEVICE DRIVER) * CN36 LDA @SMOD SET TEMPORARY PARAMETERS LDB BUFRA,I FETCH PARAM JMP CN30A DOIT! * CN31 LDA @OPL1 OPEN LINE (TYPE 1) LDB BUFRA,I WHICH TYPE?? SZB LDA @OPL2 OH, TYPE 2 CN31A JSB CMD1W JMP COMPL * CN32 LDA @CLOS CLOSE LINE JMP CN31A * CN37 LDA BUFRA,I SET READ CONFIGURATION ALF,ALF AND #RCNF CLEAR UNWANTED BITS IOR ?RCN2 SET WANTED BITS STA EQTM2,I SET NEW CONFIGURATION JSB STREC JMP COMPL DONE * BM20 OCT 177760 -20B #FCN OCT 3700 FUNCTION CODE FIELD (EXCOD) #NFLD EQU BM5 -# OF FIELDS IN CONTROL 33 IPRAM #LDVN EQU B17 DEVICE DRIVER NUMBER FIELD IN DRIVER CONFIG (CNFG1) #LDVM EQU BM20 REMOVE DEVICE DRIVER NUMBER FIELD IN CNFG1 #RCNF OCT 170377 READ CONFIGURATION FROM USER FOR CN37 ?RCN2 EQU BIT2 FORCE END-ON-CHAR BIT IN CN37 ?ENAB EQU BIT1 SCHEDULE ENABLE BIT IN STATUS ?KEY EQU BIT8 PORT KEY SET FLAG IN PSW2 ?NABT EQU BIT8 NO ABORT BIT IN PS*W !ENAB OCT 177775 REMOVE ENABLE BIT IN STATUS !DVTP OCT 140377 REMOVE DRIVER TYPE FIELD IN EQT5 * ***************************************** * UNSOLICITED INTERRUPT PROCESSOR * * * * READS REQUEST FROM CARD AND VECTORS * * TO APPROPRIATE ROUTINE FOR PROCESSING* ***************************************** UNSLP JSB LIA >> UNSOLICITED INTERRUPT PROCESSOR << STA EQTM1,I SAVE TEMPORARILY JSB SBUSY SET EQT OWNED HERE LDA PSW,I SET UNSOLICITED INTERRUPT BEING PROCESSED IOR ?NABT SET DON'T ABORT YET BIT LDB EQT1,I REQUEST PENDING?? SZB,RSS IOR ?UNSL NO, SET FLAG TO PROTECT QUEUEING STA PSW,I LDA @ACK SEND ACKNOWLEGE JSB CMD1X LDB EQTM1,I FETCH FIRST WORD STA EQTM1,I SAVE SECOND WORD, IF ANY LDA B COMMAND WORD... AND #CMD STRIP COMMAND ALF,ALF ADA .CMTB YES, INDEX INTO COMMAND TABLE STA B LDA EQTM1,I GET 2ND WORD INCASE SOMEBODY WANTS IT JMP B,I GO PROCESS! * .CMTB DEF *+1,I DEF UNSOL 0 ILLEGAL INT (SHOULD NEVER GET HERE) DEF BUFAV 1 XMIT BUFFER AVAIL DEF LINUP 2 MODEM LINE IS UP DEF LINDN 3 MODEM LINE IS DOWN DEF RCBRK 4 BREAK KEY HIT DEF MSGRC 5 MESSAGE RECEIVED DEF UNSOL 6 ILLEGAL DEF UNSOL 7 ILLEGAL * * LINE IS NOW UP * LINUP LDA PSW2,I MODEM LINK HAS COME UP AND !LNDN REMOVE LINE DOWN BIT IN STATUS STA PSW2,I AND #AV EQT DOWN? CPA #DOWN JMP UNSOL NO, DONE LDA .$UP YES, SET FOR RETURN TO $UPIO STA CM00 JMP CMPL2 EXIT * * LINE IS NOW DOWN * LINDN LDA PSW2,I MODEM LINK HAS DIED IOR ?LNDN SET LINE DOWN BIT IN STATUS STA PSW2,I LDA CNFG1,I DOWN DEVICE? AND ?DNDV SZA,RSS JMP LIND1 YES q LDA EQT1,I NO, REQUEST PENDING? SZA,RSS JMP UNSOL NO, EXIT QUIETLY LDA PSW,I SET BUFFER FLUSH STATE IOR ?BFL STA PSW,I JSB RPEND READ PENDING? RSS JMP UNSOL NO, EXIT LDA PSW2,I READ: SET EOT BIT IOR ?EOT STA PSW2,I IN STATUS JMP COMPL ..AND EXIT LIND1 LDA B1 DOWN DEVICE STA EXCMD JMP COMPL EXIT * * USER HIT THE BREAK KEY * RCBRK JSB RPEND RECEIVED A BREAK JMP UNSOL READ PENDING: IGNORE LDA PSW2,I SET BREAK RECEIVED BIT IN STATUS IOR ?BRK STA PSW2,I LDA CNFG1,I CANCEL ON BREAK? AND #BRKM CPA #BRKC JMP RCBK3 YES RCBK2 JSB SCHED NO, SCHEDULE PROGRAM JMP UNSOL ..AND EXIT RCBK3 LDA @CANA CANCEL ALL BUFFERS! JSB CMD1W CLA CLEAR ANY KNOWLEGE OF TAH DATA STA TAHLN,I JSB CLTAH ..INCLUDING THE STATUS JMP RCBK2 SCHEDULE AND EXIT * * ROUTINE TO TEST IF A READ REQUEST IS CURRENTLY PENDING * AND ACTIVE (NOT STUCK IN QUEUE). RETURNS P+1 YES, P+2 NO * RPEND NOP CHECK IF CURRENT REQUEST IS A READ LDA EQT1,I ANYBODY HOME? SZA,RSS JMP RPND1 NO LDA NXTEQ,I IS IT REALLY THERE? SSA ..CHECK SUSPEND-ON-SELF BIT JMP RPND1 NO, PRETEND WE DIDN'T SEE THAT LDA EXCOD,I IS IT A READ? AND B3 CPA B1 JMP RPEND,I YES, P+1 RETURN RPND1 ISZ RPEND NO, P+2 RETURN JMP RPEND,I * * MESSAGE FROM USER RECEIVED * MSGRC AND ?PERR PARITY ERROR OR OVERFLOW? SZA JMP RCERR YES LDA EQTM1,I FETCH RECEIVE STATUS WORD AGAIN RAL,RAL POSITION.. AND #RCST ..TO GET PARTIAL&TERM CHAR BITS STA B SAVE LDA PSW2,I FETCH PORT STATUS AND #RMST REMOVE OLD STATUS IOR B INSERT NEW STATUS STA PSW2,I SRETURN TO BED * JSB RPEND READ PENDING? JMP MSG3 YES LDA CNFG1,I NO, IN TYPE-AHEAD MODE? AND ?TAHM SZA JMP MSG2 YES LDA @CAN NO, CLEAR CARD OF THE DATA JSB CMD1W JSB SCHED SCHEDULE PROGRAM JMP UNSOL EXIT MSG2 LDA CNFG1,I TYPE-AHEAD SCHEDULE ENABLED? AND ?TAHS SZA JSB SCHED YES, DO SO LDA PSW2,I NOW SET BIT IN STATUS TO INFORM IOR ?TAH ..USER OF THE DATA STA PSW2,I LDA EQTM1,I SAVE MESG LEN.. AND #MXFR STA TAHLN,I ..FOR LATER READ JMP UNSOL AND WAIT FOR RAIN * MSG3 LDA EQTM1,I FETCH MESG LEN AND #MXFR ..SAVE LEN ONLY STA EQTM3,I .. IN EQT STA TAHLN,I JMP RDT3 ENTER READ ROUTINE TO UNLOAD * * RECEIVED DATA ERROR (PARITY OR OVERFLOW) * RCERR LDA @CAN CLEAR BAD BUFFER JSB CMD1W LDA PSW2,I RECEIVED DATA ERROR IOR ?PEOV ..SET PARITY ERROR OR OVERFLOW BIT STA PSW2,I JSB RPEND READ PENDING JMP RCPE2 YES, RETURN ZERO LEN RECORD & BAD STATUS JMP UNSOL NO, CAN'T DO ANYTHING, EXIT * * TRANSMIT BUFFER AVAILABLE * BUFAV LDB EQT1,I CHECK IF WRITE STILL PENDING (COULD HAVE BEEN OFF'D) SZB,RSS JMP UNSOL NO REQUEST, IGNORE JSB CKABT CHECK FOR ABORT LDB EXCOD,I REQUEST A WRITE? SLB JMP UNSOL NO, ALSO IGNORE LDA EQTM1,I RESTORE LEN JMP WRT1 YES! GO SEND SOME DATA! * B3 OCT 3 #CMD OCT 3400 CARD->HOST COMMAND FIELD #DOWN EQU BIT14 EQT DOWN (BIT15=0, 14=1) #BRKM OCT 1400 CANCEL BUFFERS ON BREAK MODE FIELD IN CNFG1 #BRKC EQU BIT9 CANCEL ON BREAK MODE IN CNFG1 #RCST EQU B160K RECEIVE STATUS IN PSW2 #RMST OCT 17777 REMOVE RECEIVE STATUS IN PSW2 ?LNDN EQU BIT4 LINE DOWN BIT IN STATUS !LNDN OCT 177757 REMOVE LINE DOWN BIT IN STATUS ?DNDV EQU BIT15 X DOWN DEVICE ON LINE FAILURE IN CONFIG WORD ?EOT EQU BIT5 EOT BIT IN STATUS ?PEOV EQU BIT3 PARITY ERROR / OVERFLOW BIT IN STATUS ?PERR EQU BIT14 PARITY ERROR OR OVERFLOW BIT IN RECEIVED MESG INT ?TAHM EQU BIT13 TYPE-AHEAD MODE ENABLED IN CONFIG1 ?TAHS EQU BIT11 SCHEDULE ON TYPE-AHEAD DATA AVAIL ?BRK EQU BIT6 BREAK RECEIVED BIT IN STATUS ?UNSL EQU BIT9 UNSOLICITED INTERRUPT BEING PROCESSED FLAG IN PSW .$UP DEF $UPIO+0 * * * LOW LEVEL UTILITY FUNCTIONS * * * PROGRAM SCHEDULER * SCHED NOP >> PROGRAM SCHEDULER << LDA EQT1 SYSTEM TTY? CPA SYSTY ISZ OPATN YES, TAP ON SHOULDER CPA SYSTY JMP SCHED,I AND RETURN * LDA PSW2,I SCHED ENABLED? AND ?ENAB SZA,RSS JMP SCHED,I NO, IGNORE LDB PGMAD,I REGULAR PROG, GET ID SEG ADDR SSB ANY SET? JMP SCHED,I NO, IGNORE STB IDADR LDA EQT4 SET A(EQT WORD 4) STA BVAL JSB $LIST TELL SYSTEM ABOUT IT OCT 601 IDADR NOP BVAL NOP JMP SCHED,I RETURN * * WAIT FOR SOLICITED INTERRUPT * WAIT NOP WAIT FOR SOLICITED INTERRUPT LDA WAIT SAVE RETURN ADDR... STA LEVL1,I ..IN EQT AS DESTINATION OF NEXT INT LDA #CTMR SET TIMEOUT FOR CARD COMMAND STA EQT15,I WAIT1 LDA I.FLG ENTERED AT I.???? SZA JMP RTN YES P+1 RETURN LDA DMFLG RETURN DMA REQUESTED? SZA,RSS JMP WAIT3 NO STA EXCMD YES, SET A=6 ISZ CM00 ..AT P+3 WAIT3 ISZ CM00 * RTN LDA EXCMD GET EXIT COMMAND LDB XLOG AND XMIT LOG JMP CM00,I ...POOF...! * #CTMR DEC -300 TIMEOUT FOR CARD COMMANDS (3 SEC) * ************************************************************************ * WAIT FOR UNSOLICITED INTERRUPT: IF ANY OTHER EQT NEEDS * CARD ACCESS GIVE CARD A NOP TO CAUSE INTERRUPT. PRE-DRIVER * WILL ENTER DRIVER ON THAT EQT TO CONTINUE REQUEST ************************************************************************ * UNSOL LDA EQT1,I ANY REQUEST PENDING? SZA IF NOT, NO TIMER LDA DVTMO,I SET UP DEVICE DRIVER TIMEOUT STA EQT15,I LDA I.FLG INITIATE ENTRY?? SZA ..POSSIBLY FROM READ JMP RTN YES! DON'T TOUCH ANYTHING - LEAVE LDA PSW,I DO WE HAVE THE CARD? SSA,RSS JMP WAIT1 NO, EXIT LDA NXTEQ,I YES, GOING TO RESTART SAME EQT? SSA,RSS ISZ CM00 NO, SET FOR CONTINUATION EXIT LDA DMFLG RETURN DMA? SZA,RSS JMP UNSL3 NO STA EXCMD YES, SET A=6 ISZ CM00 ..AT P+3 * UNSL3 LDA .UNSL SET INTERRUPT DESTINATION STA LEVL1,I ..IN EQT JSB NBUSY CLEAR BUSY BIT LDB NXTEQ,I CHECK EQT QUEUE: SSB EQT QUEUED'D ON ITSELF? JMP UNSL4 YES SZB,RSS NO, ANYBODY ELSE WAITING? JMP UNSL1 NO CLA YES, CLEAR EQT Q STA NXTEQ,I JSB STINT SET EQT OWNED THERE LDA @NOP KICK CARD TO WAKE UP UNSL2 JSB OUT1 SEND TO CARD JMP RTN AND EXIT; INT WILL CAUSE SWITCH TO NEW EQT UNSL1 LDA @ENAB NOBODY WAITING, ALLOW CARD TO INTERRUPT JMP UNSL2 ..ON ANY CHANNEL * UNSL4 RBL,CLE,ERB REMOVE WAITING BIT STB NXTEQ,I JMP Q5 ..AND RE-START SUSPENDED TASK * .UNSL DEF UNSLP A(UNSOLICITED INTERRUPT PROCESSOR) * * SET B REGISTER INTO INTERRUPT TABLE FOR THIS CARD. THIS * ROUTINE IS USED TO SET UP FOR NEXT CARD INTERRUPT IN RESPONSE * TO A HOST->CARD COMMAND. B REG SHOULD CONTAIN THE EQT FOR WHICH * THE INTERRUPT IS TO BE DIRECTED. * STINT NOP SET B-REG INTO INTBL ENTRY FOR THIS CARD LDA SCODE ADA DM6 FIND ENTRY ADA INTBA STB A,I ADB #PSW SET CARD BUSY FLAG IN THIS EQT LDA B,I FETCH PSW : IOR ?BUSY STA B,I CARD NOW OWNED BY THIS GUY JMP STINT,I * * ROUTINE TO CHECK FOR DEFERRED ABORT (I/O CLEAR IN PROGRESS) * * MUST BE CALLED BY ANY UNSOLICITED INTERRUPT PROCESS WHICH * DOES NOT EXIT THROUGH 'UNSOL'. DO NOT CALL IF NO REQUEST IS * CURRENTLY PENDING AND DON'T CALL MORE THAN ONCE! * CKABT NOP CHECK FOR ABORTS LDA PSW,I XOR ?NABT REMOVE NO-ABORT FLAG STA PSW,I ..SINCE THE COAST IS CLEAR NOW AND ?DABT DEFERRED ABORT? SZA,RSS JMP CKABT,I NO, EXIT XOR PSW,I CLEAR DEFERRED ABORT STATUS STA PSW,I ..INCASE DEV DVR WANTS ANOTHER REQUEST JMP COMPL COMPLETE REQUEST * ?DABT EQU BIT14 DEFERRED ABORT BIT IN PSW * ************************************************************************* * DEVICE DRIVER COMMAND COMPLETE: CALL DEVICE DRIVER WITH RESULTING * STATUS AND XMIT LOG TO REQUEST FURTHER INSTRUCTIONS. >>>ALL<<< CMDS * MUST EXIT THROUGH THIS ROUTINE WHEN COMPLETE. ************************************************************************* * COMPL JSB DVDVR CALL DEVICE DRIVER CPA #NWRQ NEW REQUEST TO DO? JMP I.6 YES, GO EXECUTE STA EXCMD NO, SAVE EXIT COMMAND STB XLOG ..AND XMIT LOG CMPL2 LDA EXCMD FETCH EXIT COMMAND LDB DMFLG RETURNING DMA?? SZB IOR BIT15 YES, SET BIT TO TELL RTE TO RELEASE IT STA EXCMD LDA PSW,I GOT CARD? SSA JMP UNSL3 YES, SEE IF ANYONE ELSE WANTS CARD JMP RTN NO, JUST EXIT * B5 OCT 5 #NWRQ EQU B5 NEW REQUEST CMD FROM DEVICE DRIVER * * SEND A ONE WORD COMMAND TO CARD, A-REG = RETURN STATUS * ON EXIT * CMD1W NOP SEND A ONE WORD COMMAND TO CARD IOR KEY COMBINE WITH KEY LDB CMD1W FETCH RETURN ADDR JMP *+3 CMD1X NOP SEND ONE WORD CMD TO CARD, NO KEY LDB CMD1X GET RETURN AnDDR STB LEVL2,I SAVE IN EQT JSB OUT1 SEND CMD TO CARD CMD1C JSB WAIT WAIT FOR INTERRUPT JSB LIA FETCH RESPONSE, IF ANY LDB LEVL2,I GET RETURN ADDR JMP B,I ..AND GO * * SEND 2 WORD COMMAND TO CARD (A/B). A-REG = RETURN STATUS * ON EXIT * CMD2W NOP SEND 2 WORD COMMAND TO CARD IOR KEY STB EQTM1,I SAVE 2ND WORD IN EQT LDB CMD2W STB LEVL2,I SAVE RETURN ADDR IN EQT JSB OUT1 SEND 1ST WORD JSB SFCLP TRY TO WAIT FOR FLAG JSB WAIT NOT IN TIME, EXIT TILL IT COMES LDA EQTM1,I SEND 2ND WORD JSB OUT2 JMP CMD1C WAIT, FETCH RESPONSE, AND EXIT * * SEND 2 WORD COMMAND TO CARD BUT DON'T CLEAR FLAG AFTER SECOND WORD * THIS ROUTINE IS USED TO SEND READ OR WRITE COMMANDS BEFORE DMA XFERS * CMD2D NOP SEND 2 WORD CMD W/O CLEARING LAST FLAG IOR KEY COMBINE CMD WITH KEY STB EQTM1,I SAVE 2ND WORD FOR LATER LDB CMD2D SAVE RETURN ADDR STB LEVL2,I JSB OUT1 SEND FIRST WORD JSB SFCLP TRY SFC LOOP JSB WAIT NOT IN TIME, LONG WAIT LDA EQTM1,I 2ND WORD.. JSB OUT2 ..SEND TO CARD BUT DONT WAIT FOR FLAG!!!!!! LDA PSW,I SET XFER IN PROGRESS BIT IOR ?XFR ..IN PSW STA PSW,I FOR ABORT PROCESSING LDB LEVL2,I AND RETURN WITH FLAG STILL SET JMP B,I ..FOR NEXT DMA TRANSFER * * ROUTINE TO WAIT FOR THE CARD FLAG FOR A SHORT TIME. THIS ROUTINE * IS CALLED BETWEEN EACH WORD OF AN LIA/OTA DATA TRANSFER AND BETWEEN * THE FIRST AND SECOND WORDS OF A TWO WORD HOST->CARD CMD. * RETURNS: P+1 TIMEOUT, P+2 GOT FLAG * SFCLP NOP SKIP-FLAG LOOP WITH TIMEOUT LDA #SFLC DO WAIT LOOP SFC01 SFC SC CARD READY FOR 2ND WORD YET? JMP CLF02 YES, FINALLY! ISZ A TIRED OF WAITING? JMP SFC01 NO JMP SFCLP,I TIMEOUT, P+1 RETURN CLF0b2 CLF SC CLEAR CARD FLAG ISZ SFCLP SET P+2 RETURN JMP SFCLP,I AND RETURN * * THIS PROCESS REQUESTS ACCESS TO CARD. IF CARD IS BUSY * PROCESS MUST BE SUSPENDED UNTIL FREE. UNSOL/COMPL WILL * AWAKEN PROCESS IF SUSPENDED HERE. THIS ROUTINE ALSO * TURNS OFF CARD UNSOLICITED INTERRUPTS BEFORE EXIT. * QUEUE NOP REQUEST ACCESS TO CARD LDA QUEUE SAVE RETURN ADDR STA LEVL3,I ..IN EQT LDA SCODE ADA DM6 CARD BUSY? ADA INTBA LDB A,I ADB #PSW CHECK BUSY BIT IN HIS PSW LDA B,I SSA WELL? JMP Q6 CARD IS BUSY, MAY HAVE TO WAIT LDB EQT1 NOT BUSY, MARK IT .. JSB STINT ..OWNED HERE CLA CLEAR WAITING CHAIN STA NXTEQ,I LDA @SHUP ..AND TELL CARD TO SHUDDUP JSB CMD1X SZA CARD STILL TALKING?? JSB WAIT YES, BE PATIENT * Q5 JSB SBUSY SET EQT BUSY ON CARD LDA EQT1,I REQUEST STILL PENDING?? RAL,CLE,ERA ..REMOVE SYSTEM CLEAR BIT SZA,RSS JMP CMPL2 NO, COMPLETE NOW! LDA LEVL3,I RETURN JMP A,I * Q6 CPB PSW OUR EQT? JMP Q7 YES, CHECK FURTHER * * PUT THIS EQT ON QUEUE WAITING FOR CARD ACCESS * INB POINT TO NEXT EQT LIST Q3 LDA B,I GET POINTER AND !SPND REMOVE SUSPENDED-ON-SELF BIT SZA,RSS END OF LIST? JMP Q4 YES, LINK IN CPA EQT1 ALREADY ON LIST? JMP Q8 YES, DON'T GET ALL TANGLED UP! STA B ADB #NEQ NO, GET ITS LINK JMP Q3 LOOP TO END OF LIST Q4 STA NXTEQ,I LINK THIS EQT IN LIST LDA EQT1 IOR B,I OR IN SUSPEND BIT, IF ANY STA B,I LDA .QRTN SET RETURN POINT.. STA LEVL1,I ..FOR SUSPEND Q8 CLA STA EXCMD JMP WAIT1 EXIT FOR A WHILE * Q7 AND ?UNSL UNSOLICITED INTEԢRRUPT BEING PROCESSED? SZA,RSS JMP QUEUE,I NO, WE'VE ALREADY GOT THE CARD, GO USE IT! LDA NXTEQ,I YES, MUST WAIT FOR UNSOLICITED PROCESS TO FINISH IOR ?SPND ..SO SET SUSPEND-ON-SELF BIT.. STA NXTEQ,I ..FOR UNSOL/COMPL TO WAKE US UP. JMP Q8 HANG IN LIMBO........ * .QRTN DEF Q5 RETURN POINT AFTER SUSPEND B5.7S OCT 77777 5 SEVENS ?SPND EQU BIT15 SUSPEND TASK ON OWN EQT BIT IN NXTEQ !SPND EQU B5.7S REMOVE SELF-SUSPEND BIT IN NXTEQ #CBSY OCT 36377 REMOVE BUSY,NO-ABORT,D-ABORT & UNSOL INT BITS IN PSW * * SET BUSY BIT IN PSW * SBUSY NOP SET BUSY BIT IN PSW LDA PSW,I IOR ?BUSY STA PSW,I JMP SBUSY,I * * CLEAR BUSY, NO-ABORT, DMA ABORT, AND UNSOLICITED INT BITS IN PSW * NBUSY NOP CLEAR BUSY AND UNSOLICITED BITS IN PSW LDA PSW,I AND #CBSY STA PSW,I JMP NBUSY,I * * CKIO: THIS CHANNEL HAS RECEIVED AN ABORT REQUEST OR TIMEOUT FROM SYSTEM: * * IF CHANNEL IS USING CARD, ABORT MUST BE DEFERRED UNTIL INTERRUPT * IS RECEIVED. ABORTS DURING DATA TRANSFERS ALSO REQUIRE SPECIAL * PROCESSING TO MAINTAIN HOST-CARD SYNCHRONIZATION. IF NO ABORT * PROCESSING IS NEEDED, P+1 RETURN WILL BE TAKEN. IF SOME ACTION * NEEDS TO BE TAKEN, IT WILL BE HANDLED HERE AND THE REQUEST * COMPLETED. * CKIO NOP CHECK I/O USAGE LDA PSW,I GOT CARD? SSA,RSS JMP CKIO,I NO, P+1 RETURN AND ?XFR DATA XFER IN PROGRESS? SZA,RSS JMP CKIO3 NO XOR PSW,I YES, CLEAR BIT STA PSW,I ..SINCE XFER IS ABOUT TO DIE LDA @DABT SEND ABORT CMD TO BACKPLANE JSB OUT2 ..TO SET BPRDY JSB SFCLP WAIT FOR CARD DMA TO EAT IT JSB WAIT NOT HUNGRY? WAIT FOR TIMEOUT STC04 STC SC,C SET CONTROL TO WAKE UP CARD CMD PROCESSOR CKIO4 JSB WAIT WAIT FOR ABORT ACKNOWLEGE JMP COMPL REQUEST NOW DEAD * CKIO3 I LDA PSW2,I TIMEOUT?? AND ?TO SZA JMP RESET YES, CARD IS DEAD, RESET LDA PSW,I NO-ABORT BIT SET? AND ?NABT SZA,RSS JMP CKIO5 NO, GO CHECK DMA WAIT * LDA PSW,I YES, SET DEFERRED ABORT IOR ?DABT STA PSW,I JMP WAIT1 AND EXIT. ABORT WILL BE FINISHED LATER * RESET LDA @RST THE CARD IS DEAD!!!! JSB CMD1X ...LONG LIVE THE CARD! JMP CMPL2 EXIT WITHOUT CALLING DEVICE DRIVER * CKIO5 LDA EQT3,I WERE WE WAITING FOR DMA?? SSA ..(CHECK ALLOCATION BIT) JMP IOCL2 YES! PRETEND WE DIDNT HAVE CARD JMP CKIO4 NO, WAIT FOR UP COMMING INTERRUPT * **************************************************** * D V D V R DEVICE DRIVER INTERFACE MODULE * * * * CALLS DEVICE DRIVER SET IN PORT CONFIGURATION * * WORD (CNFG1). DEV DVR SETS UP A SERIES OF EXEC * * REQUESTS IN EQT EXT FOR THE INTERFACE DRIVER * * (THIS THING) TO EXECUTE. A DEFAULT DEVICE DVR * * IS PROVIDED FOR SIMPLE REQUESTS. * **************************************************** * DVDVR NOP ROUTINE TO CALL DEVICE DRIVER LDA CNFG1,I FETCH DEVICE DRIVER # AND #LDVN SZA,RSS DEFAULT? INA YES, SET TO 1 (=DEFAULT DEVICE DRIVER#) ADA DM1 SUBTRACT 1 LDB .DEFD FETCH A(DEFAULT DEVICE DRIVER) SZA,RSS DEFAULT? JMP DVDV2 YES ADA .DVTB NO, VECTOR INTO DEVICE DRIVER ADDRESS TABLE LDB A,I * DVDV2 STB TMP SAVE A(WANTED DEVICE DVR) DLD EQT6,I COPY EXEC PARAMS TO EXTENT FOR DEVICE DRIVER DST EXCOD,I LDA EQT8,I STA BUFLN,I CLA SET DEFAULT PHYSICAL XFER LEN STA DVTMO,I LDA PSW2,I COPY STATUS TO EQT5 FOR DEV DVR AND #STAT STA B LDA EQT5,I AND #RSTA IOR B ..MERGE x STA EQT5,I LDA PSW2,I REMOVE TO,PE,EOT BITS FOR NEXT TIME AND #CLFC STA PSW2,I LDA I.FLG ENTERED AT I. FLAG RAR IOR DVTMO MERGE I. FLAG WITH DEVICE DRIVER EQT EXTENT LDB XLOG FETCH PREVIOUS XMIT LOG, IF ANY JSB TMP,I CALL DEVICE DRIVER!!!!! * STA DVCMD,I SAVE DEVICE DRIVER CMD LDA DVTMO,I MOVE PHYSICAL RECORD LEN.. STA EQTM3,I ..TO A SAFE PLACE IN CASE OF READ STB DVTMO,I SAVE DEVICE DRIVER TIMEOUT LDA DVCMD,I RESTORE CMD FOR EXIT AND #XCMD STRIP TO EXIT COMMAND JMP DVDVR,I ..AND RETURN * .DVTB DEF $DVTB+0 A(DEVICE DRIVER ADDRESS TABLE) .DEFD DEF DEFDD A(DEFAULT DEVICE DRIVER) * #STAT EQU B377 USER STATUS FIELD IN PSW2 #RSTA EQU DM255 REMOVE STATUS FIELD IN EQT5 * * DEFAULT DEVICE DRIVER: PASSES ALL USER REQUESTS DIRECTLY TO * INTERFACE DRIVER FOR EXECUTION (OR WHATEVER) * DEFDD NOP DEFAULT DEVICE DRIVER SSA NEW REQUEST?? LDB EQT14,I YES, SET TIMER CLA START/COMPLETE REQUEST JMP DEFDD,I ..RETURN TO INTERFACE DRIVER * ?BUSY EQU BIT15 CARD BUSY ON THIS EQT BIT IN PSW #PSW DEC 10 PSW OFSET FROM EQT1 #NEQ DEC 11 NXTEQ OFSET FROM EQT1 #DMTO DEC -20 -# 10'S MS TO WAIT FOR DMA * * -CHARS/+WORDS TO +CHAR CONVERSION * * INPUT : A = LEN FROM BUFLN * OUTPUT: A = LEN IN CHARACTERS * TOCHR NOP -CHAR/+WORD -> +CHAR CONVERSION SSA ALREADY CHARS? JMP TOCH1 YES CLE,ALS NO,CONVERT JMP TOCHR,I RETURN TOCH1 CMA,INA MAKE POS JMP TOCHR,I ..THEN RETURN * * +CHAR TO -WORD CONVERSION, USED TO INIT DCPC * * INPUT : A = + CHARS * OUTPUT: A = -WORDS * TOWRD NOP +CHAR -> -WORD CONVERSION INA ROUND CLE,ERA CONVERT CMA,INA MAKE NEG JMP TOWRD,I * * SET A TO MINIMU!M OF (A,B) * MIN NOP SET A TO MIN(A,B) A,B > 0 STA TMP1 CMA,INA ..DO A "#$%$ SUBTRACT ADA B SSA,RSS WHO WON? LDB TMP1 A WAS SMALLER STB A JMP MIN,I RETURN * ******************************** * CARD I/O ROUTINES ******************************** OUT1 NOP OUTPUT 1ST WORD OF CMD TO CARD OTA01 OTA SC SEND.. STC01 STC SC,C ..WAKE UP JMP OUT1,I ..AND RETURN * OUT2 NOP OUTPUT WORD TO CARD OTA02 OTA SC,C JMP OUT2,I * LIA NOP READ WORD FROM CARD CLF03 CLF SC FIRST CLEAR FLAG LIA01 LIA SC ..THEN READ DATA (NEED THIS ORDER FOR @SHUP CMD) SSA POWER FAILURE? JMP PFAIL YES, PANIC! JMP LIA,I NO, RETURN * * POWER FAIL RECOVERY * * AT THIS POINT THE SYSTEM HAS RE-STARTED A REQUEST TO THE CARD * AND IN THE PROCESS OF TALKING TO THE CARD THE CARD HAS RECEIVED * A COMMAND FOR WHICH THERE IS NO KEY, I.E. THAT PORT HAS NOT BEEN * RECOVERED. THE SIGN BIT OF THE RESPONSE TO A COMMAND WAS SET * AND WE ENDED UP HERE. THIS ROUTINE RECOVERS THAT CHANNEL TO THE * STATE IT WAS BEFORE POWER FAILED, EXCEPT THAT SINCE THE CARD'S * INPUT BUFFER HAS BEEN WIPED ANY BINARY TRANSFER WILL BE TRUNCATED * AT THE NEXT CHAR (BINARY RECORD LEN SET TO 1). OTHERWISE THE REQUEST * MAY NEVER COMPLETE. THE REQUEST WHICH THE CARD REPORTED FAILURE * ON IS THEN RESTARTED FROM THE BEGINNING AS IF THE USER HAD JUST * ISSUED IT. NOTE THAT ONLY THIS ONE PORT IS RECOVERED. WHEN AUTOR * GETS AROUND TO IT THE OTHER PORTS WILL BE RECOVERED. * PFAIL LDA PSW2,I PORT BEEN INITIALIZED?? AND ?KEY SZA,RSS JMP CMPL2 NO!!! IGNORE WHOLE REQUEST LDB PID,I GET THIS GUY'S ID LDA @SKEY ..AND SEND TO CARD JSB CMD2W LDB CNFG2,I ..CONFIG WORD 2 LDA @CNF2 JSB CMD2W LDA PSW,I RESTORE READ CONFIGURATION AND #MRCN ...FOR THE MUX CARD STA EQTM2,I CLA,INA SET 1 CHAR LEN.. STA EQTM3,I ...INCASE OF BINARY JSB STREC LDA PSW2,I SET POWER-FAILED BIT IN STATUS IOR ?PF STA PSW2,I JMP I.6 RE-START REQUEST * ?PF EQU BIT7 POWER FAILED BIT IN STATUS * * SETUP I/O INSTRUCTIONS, EQT POINTERS AND PORT KEY * SETUP NOP SET I/O INSTRUCTIONS & EQT POINTERS STA SCODE SAVE SELECT CODE CLA SET DEFAULT EXIT COMMAND STA EXCMD STA XLOG STA DMFLG CLEAR RETURN-DMA-NEXT-EXIT FLAG STA I.FLG STA PFFLG * LDA EQT1 MAKE PORT KEY LDB EQTA CMB,INB MAKE NEG ADA B -> RELATIVE ADDR CLB DIV D15 -> EQT NO. (EQT1=0, EQT2=1, ETC) STA KEY * LDA SCODE LDB .IOIN MAKE ALL THOSE I/O INSTRUCTIONS JSB SETEM * LDA EQT13,I EQT PTRS SETUP? CPA EQT16 JMP SETUP,I YES, RETURN LDB #EXSZ ..LEN OF EXTENT STB TMP LDB .EQ16 A(1ST EXTENT PTR) SET2 STA B,I SET.. INA INB BUMPITY BUMP ISZ TMP DONE? JMP SET2 NO JMP SETUP,I YES, RETURN * * ROUTINE TO CONFIGURE I/O INSTRUCTIONS. THE FIRST ENTRY IN * THE TABLE IS COMPARED TO WHAT IT SHOULD BE. IF ANY DIFFERENCES * ARE NOTED, THEY ARE EXCLUSIVE-OR'D INTO EACH INSTRUCTION. * * INPUT: A = WANTED SELECT CODE * B = ADDRESS OF TABLE OF DEF'S TO I/O INSTS, TERMINATED * BY A ZERO ENTRY * SETEM NOP SET I/O INSTRUCTIONS STA TMP1 SAVE WANTED SELECT CODE STB TMP SAVE A(INST ADDRESS TABLE) LDA B,I FETCH FIRST LDA A,I ..INSTRUCTION AND #SCOD GET JUST SELECT CODE XOR TMP1 FIND DIFFERENCES SZA,RSS ANY? JMP SETEM,I NO, EXIT STA TMP1 SAVE * SETM2 3LDB TMP,I GET A(INSTRUCTION) SZB,RSS DONE? JMP SETEM,I YES LDA B,I FETCH INSTRUCTION XOR TMP1 UPDATE STA B,I RETURN ISZ TMP NEXT! JMP SETM2 LOOP FOR A WHILE * .IOIN DEF *+1 CARD I/O INSTRUCTIONS DEF OTA01 DEF OTA02 DEF OTA06 DEF LIA01 DEF LIA02 DEF STC01 DEF STC04 DEF SFC01 DEF CLF02 DEF CLF03 OCT 0 END OF CARD I/O * * * MORE OF THOSE $%!"#% CONSTANTS: * TMP NOP TMP1 NOP XLOG NOP EXCMD NOP SCODE NOP I.FLG NOP ENTERED AT I.=1; C.=0 KEY NOP DMFLG NOP RETURN-DMA-NEXT-EXIT FLAG (0=NO, 6=YES) PFFLG NOP ENTERED AFTER POWER-FAIL (0=NO, NOT=YES) * * ONE WORD CARD COMMANDS * @NOP OCT 40000 0 NOP @ACK OCT 42000 4 ACKNOWLEGE @ENAB OCT 41000 2 ENABLE UNSOLICITED INTERRUPT @SHUP OCT 41401 3 DISABLE UNSOLICITED INTERRUPT (SHUDDUP) @DABT OCT 41402 3 ABORT DMA TRANSFER @CAN OCT 42400 5 CANCEL RECEIVE BUFFER @CANA OCT 43000 6 CANCEL ALL RECEIVED BUFFERS @OPL1 OCT 44000 8 ??????? OPEN LINE TYPE 1 @OPL2 OCT 44400 9 ??????? OPEN LINE TYPE 2 @CLOS OCT 45000 10 ??????? CLOSE LINE @GMOD OCT 45400 11 ??????? FETCH MODEM LINES @RST OCT 40400 1 RESET CARD * * TWO WORD CARD COMMANDS * @SEL OCT 140400 1 REQUEST TRANSMIT @SKEY OCT 141400 3 SET PORT ID TO KEY @CNF2 OCT 143000 6 ?????? SET CONFIG WORD @RCTP OCT 142000 4 SET RECEIVE TYPE @SBFL OCT 142400 5 SET RECEIVE CHAR COUNT LIMIT @READ OCT 143400 7 FETCH RECEIVE DATA @WRT OCT 141000 2 WRITE BUFFER TO CARD @SMOD OCT 146000 12 ?????? SET MODEM LINES * .EQ16 DEF EQT16 ORB JP00 DEF PM00+0 DIRECT LINK TO PRE-DRIVER JSB JSB JP00,I CREATE LINK TO PRE-DRIVER END w6 %5 12792-18003 2032 S C0122 &DDV05 26XX SCREEN DEVICE DRIVER             H0101 .0ASMB,Q,C * * MULTIPLEXER DEVICE DRIVER FOR 26XX TERMINALS (DISPLAY/KEYBOARD ONLY) * * SOURCE: 12792-18003 &DDV05 * RELOC : 12792-16003 %DDV05 * PRGMR : GDD * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSALATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ***************************************************************** * * THIS DRIVER EMULATES DVR05 SUBCHANNEL 0 OPERATION, INCLUDING CHARACTER * AND LINE/PAGE BLOCK MODE, EXCEPT AS FOLLOWS: * * 1. NO CHARACTER STRIPPING IS PERFORMED BY THE MUX FIRMWARE, SO ESC'S * LF'S, AND US'S ARE NEVER REMOVED FROM INPUT DATA. BE SURE THE * AUTO LINEFEED KEY IS UP, AND THAT PROGRAMS DOING FORMAT MODE DATA * ENTRY DON'T DEPEND ON US'S BEING STRIPPED. * * 2. CHARACTER MODE READS ONLY END ON CR, NOT CR OR RS * * 3. PROGRAM ENABLED BLOCK READS DO NOT REQUIRE THE 3000B FUNCTION CODE * * 4. THE DRIVER IS LESS FORGIVING OF TERMINALS IN THE WRONG MODE (BLOCK * VS CHAR, LINE VS PAGE) SO DON'T FORGET THOSE CN,LU,25B CMDS! * * 5. NOT ALL DVR05 QUIRKS ARE EMULATED (CTRL-D IN COLUMN 1 ON 2000B READS * DON'T RETURN EOT, ETC, ETC....) * * NAM DDV05,8 12792-16003 REV.2032 800602 V.02 ENT DDV05 * A EQU 0 B EQU 1 EQT5 EQU 1664B EQT6 EQU 1665B EQT14 EQU 1773B * EXST EQU * * PHBLN NOP EXCOD NOP BUFRA NOP BUFLN NOP RTN NOP STATS NOP TEMP1 NOP * EXND EQU * #EXSZ ABS EXST-EXND LEN OF EXTENT .EXST DEF EXST TMP NOP XLOG NOP * DDV05 NOP DRIVER ENTRY POINT JSB SETUP SET EXTENT POINTERS JMP NEWRQ ..NEW REQUEST LDA RTN,I ..PREVIOUS PIECE COMPLETE JMP A,I * NEWRQ LDA EQT5,I SET TO DRIVER TYPE 05 IOR #DVTP STA EQT5,I * LDA EXCOD,I GET REQUEST CODE RAR,SLA JMP CRT20 JMP CRTRD CRT READ REQUEST * CRT20 SSA,RSS JMP CRTWC CRT WRITE REQUEST * * . . . CHECK, IF CONTROL REQUEST 25 THEN PROCESS * IN THIS LOGICAL DRIVER; OTHERWISE LET THE * INTERFACE DRIVER PROCESS THE REQUEST * * CHECK, IF CONTROL REQUEST 11, THEN PROCESS IN THIS * LOGICAL DRIVER * * LDA EXCOD,I CHECK FUNCTION CODE AND B3700 CPA B2500 CONTROL REQUEST 25? JMP CN250 YES CPA B1100 CONTROL REQUEST 11? JMP CN110 YES * CRTWC EQU * * * . . . PROCESS WRITE & CONTROL REQUEST AS IS * JSB DOIT * DONE CLA JMP DDV05,I * * . . . CRT CONTROL REQUEST 11, SPACE N LINES IF THE OPTIONAL * PARAMETER IS POSITIVE; OTHERWISE, SPACE 1 LINE * CN110 EQU * LDA BUFRA,I IF THE OPTIONAL PARAMETER IS POSITIVE SSA THEN USE AS LINE SPACING CLA,INA ELSE SPACE ONLY 1 LINES AND B77 LIMIT MAX LINE SPACING CMA,INA CONVERT TO LOOP COUNTER SZA,RSS MAKE SURE COUNT IS NOT ZERO CCA STA TEMP1,I SAVE LOOP COUNTER * CN112 LDA B2 SEND A CR-LF BY SENDING A ZERO STA EXCOD,I RECORD LENGTH WRITE CLA STA BUFLN,I JSB DOIT * ISZ TEMP1,I LOOP DONE? JMP CN112 NO JMP DONE YES * * ********************* * READ REQUEST * ********************* * * . . . CHECK TO SEE IF HAVE READ STRAPPING YET * IF NOT, GET IT NOW * CRTRD LDA EQT6,I REMOVE KEEP BIT IN USER EXEC AND !BIT9 ..FUNCTION SINCE IT'S NOT USED STA EQT6,I ..IN DVR05 * LDA STATS,I RAL SSA READ STRAPPING ALREADY? JMP CRTRE YES * CN250 LDA .PTST SET ESC SEQ TO GET PRIMARY STATUS LDB DM3 JSB SETW LDA #CRRS END ON CR OR RS JSB DOIT2 SEND ESC ^ DC1 * JSB SETK2 READ ESC \ TO TEMP1 AND SAVE REST ON CARD JSB DOIT2 * JSB SETK2 READ STATUS BYTES 0 & 1 TO TEMP JSB DOIT2 * LDB TEMP1,I GET LINE/PAGE MODE BIT & RRR 3 SAVE IT IN STATUS WORD LDA STATS,I RAL RRR 1 STA STATS,I * JSB SETK2 READ BYTES 2&3 JSB DOIT2 * LDA #CNCL CANCEL REST STA EXCOD,I CLA ..ONLY CANCEL CURRENT STUFF STA BUFRA,I JSB DOIT * LDB TEMP1,I GET CHARACTER/BLOCK MODE BIT RBR LDA STATS,I ALF,RAR RRR 1 RAR,RAR STA STATS,I * LSL 2 SLB CONTROL FUNCTION 25? JMP DONE YES * INB NO LSR 2 SET FLAG FOR CN 25 SO THAT ANY STA STATS,I SUBSEQUENT ENTRY IS DUE TO CN 25 * CRTRE JSB SETD1 SET UP TO SEND DC1 * LDA EQT6,I GET REAL USER EXEC CODE AND BIT6 BINARY TRANSFER?? SZA ..IF YES... JMP RDCHR ..MUST DO KEYBOARD READ * LDA STATS,I DETERMINE IF CHARACTER OR BLOCK MODE RAL,RAL SSA JMP RDBLK BLOCK MODE READ * **************************** * CHARACTER MODE READ * **************************** * RDCHR JSB DOIT SEND DC1 * * . . . DO A READ USING USER BUFFER ADDRESS & BUFFER LENGTH * JSB DOIT * * . . . IF ECHO IS OFF, SEND A LINEFEED BEFORE * RETURNING TO THE USER. * ECHLF LDA EXCOD,I IF ECHO IS ON AND #ECBR ...OR BINARY REQUEST SZA JMP DONE NO, WE ARE DONE * STB TEMP1,I SAVE TRANSMISSION LOG * LDA B2 WRITE ZERO LENGTH RECORD STA EXCOD,I FOR ONE REQUIRED CARRIAGE RETURN LINEFEED CLA STA BUFLN,I JSB DOIT * LDB TEMP1,I RETRIEVE TRANSMISSION LOG FOR USER  JMP DONE * #ECBR OCT 500 ECHO AND BINARY BITS IN EXCOD #CRRS OCT 142005 READ END ON CR OR RS DM3 DEC -3 B15 OCT 15 B2 OCT 2 DM2 DEC -2 B3700 OCT 3700 B2500 OCT 2500 B1100 OCT 1100 #RDKP OCT 3001 TRANSPARENT READ WITH KEEP #DC2 OCT 11000 DC2 #DVTP OCT 2400 DRIVER TYPE IN EQT5 B77 OCT 77 #UPPR OCT 177400 UPPER BYTE B5 OCT 5 !BIT9 OCT 176777 NOT BIT 9 #CNCL OCT 2603 CANCEL EXEC FUNCTION CODE BIT6 OCT 100 #WRTB OCT 102 BINARY WRITE EXEC CODE * ******************** * BLOCK MODE * ******************** * * . . . IF LINE MODE READ A DC2 & CRLF * IF PAGE MODE READ ONLY A DC2 * RDBLK LDA STATS,I SSA JMP PAGE * * . . . LINE MODE * LDA BKCDA STA TEMP1,I JSB DOIT2 SEND DC1 * LDA B15 JSB DOIT2 READ DC2 CR OR USER LINE * LDA BUFRA,I CHECK IF FIRST CHAR IS DC2 LDA A,I AND #UPPR CPA #DC2 RSS YUP, MORE PROCESSING NEEDED JMP DONE USER MUST HAVE NOT REALLY BEEN IN BLOCK MODE, EXIT * PAGEA JSB SETD1 SEND DC1 TO TRIGGER REAL DATA LDA TEMP1,I JSB DOIT2 * CLA,INA SET PLAIN READ (ECHO,KEEP,BI OFF) STA EXCOD,I LDA B15 JSB DOIT2 DO IT LDA TEMP1,I IF LINE MODE, SEND A CRLF CPA BKCDA JMP ECHLF JMP DONE * PAGE LDA BKCDB SET END ON RS FOR LATER STA TEMP1,I LDA BKCDC SET READ FOR DC2 OR RS JSB DOIT2 SEND DC1 * LDA B15 JSB DOIT2 READ DC2 OR DATA SZB ZERO XMIT LOG?? JMP DONE NO, MUST BE REAL DATA JMP PAGEA YES, SEND DC1 AND FINISH * * . . . READ FUNCTION CODE AND EXIT COMMAND WORD * BKCDA OCT 102005 READ, END ON CR BKCDB OCT 42005 READ, END ON RS BKCDC OCT 52005 READ, END ON DC2 OR RS * .DC1 DEF *+1 OCT 10400 DC1 * .PTST DEF *+1  BYT 33,136,21 ESC ^ DC1 GET PRIMARY TERMINAL STATUS * * . . . SET TO SEND A DC1 * SETD1 NOP LDA .DC1 CCB JSB SETW JMP SETD1,I * * . . . SET TO READ 2 BYTES, BUT DO NOT CANCEL BUFFER * SETK2 NOP LDA #RDKP STA EXCOD,I LDA TEMP1 STA BUFRA,I LDA DM2 STA BUFLN,I LDA B15 JMP SETK2,I * * . . . SETUP EXCOD, BUFRA, & BUFLN FOR BINARY WRITE * * A-REG CONTAINS BUFFER LOCATION * B-REG IS LEN * SETW NOP SET UP FOR ONE WORD BINARY WRITE STA BUFRA,I LDA #WRTB STA EXCOD,I STB BUFLN,I JMP SETW,I * DOIT2 NOP LDB DOIT2 JMP DOITA * DOIT NOP DO REQUEST SET IN EXTENT LDB DOIT SAVE RETURN ADDR LDA B5 * DOITA STB RTN,I LDB EQT14,I SET TIMER JMP DDV05,I * SETUP NOP SET EQT EXTENT POINTERS STB XLOG SAVE XMIT LOG SSA,RSS NEW REQUEST?? ISZ SETUP YES, P+2 RETURN RAL,CLE,ERA STRIP LDB #EXSZ LEN OF EXTENT (NEG) STB TMP LDB .EXST ADDR OF EXTENT POINTERS * SET2 STA B,I SET ONE INA INB BUMP'M ISZ TMP DONE? JMP SET2 NO LDB XLOG RECOVER XMIT LOG JMP SETUP,I YES * END K   12792-18004 2032 S C0122 &DDV12 LINE PRINTER DEVICE DVR.             H0101 >ASMB,Q,C * * MULTIPLEXER DEVICE DRIVER FOR 2631 AND 7310 LINEPRINTERS * * SOURCE: 12792-18004 &DDV12 * RELOC : 12792-16004 %DDV12 * PRGMR : GDD * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. ALL RIGHTS * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * REPRODUCED OR TRANSALATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY. * ***************************************************************** * * THIS DRIVER PROVIDES COLUMN 1 SUPPORT FOR SERIAL PRINTERS SUCH AS * THE 7310 AND 2631/35. NOT ALL LINEPRINTER FUNCTIONS IN DVA12 ARE * EMULATED. * * NORMAL WRITE REQUESTS: (BIT 7 = 0) * * COL 1 = "1" SEND CTRL-L THEN PRINT COL 2-N * * COL 1 = "0" SEND LINEFEED, THEN REST OF LINE * * COL 1 = "-" SEND TWO LINEFEEDS, THEN REST * * TRANSPARENT WRITE (BIT 7 = 1): PRINT WHOLE LINE AS IS * * CONTROL 11B,PARAM: LINE SPACING * * PARAM > 0 SEND PARAM .MOD. 64 CR/LF'S * * PARAM = 0 SEND ONE CR/LF * * PARAM < 0 SEND ONE FORMFEED (CTRL-L) * * ALL READ REQUESTS RESULT IN AN IO07 RETURN TO PROGRAM * * NOTE THAT THE VFU CHANNELS ARE NOT ACCESSED ON THE 263X PRINTERS, SO * LONG LISTINGS WILL PRINT OVER THE FOLD. THE 7310 PERFORMS AUTOMATIC * PAGEING. ALSO NOTE THAT PRINTERS USING X-ON/X-OFF OR HARDWIRED (CTS) * HANDSHAKE WITH THE COMPUTER WILL NOT WORK (ENQ/ACK PRINTERS ONLY)! * NAM DDV12,8 12792-16004 REV.2032 800602 V.08 ENT DDV12 * A EQU 0 B EQU 1 EQT5 EQU 1664B EQT14 EQU 1773B * EXST EQU * * PHBLN NOP EXCOD NOP BUFRA NOP BUFLN NOP RTN NOP COUNT NOP * EXND EQU * #EXSZ ABS EXST-EXND LEN OF EXTENT .EXST DEF EXST TMP NOP * DDV12 NOP DRIVER ENTRY POINT JSB SETUP SET EXTENT POINTERS JMP NEWRQ ..NEW REQUEST LDA RTN,I ..PREVIOUS PIECE COMPLETE 6 JMP A,I * NEWRQ LDA EQT5,I SET DRIVER TYPE TO 12 IOR #DVTP STA EQT5,I * LDA EXCOD,I FETCH USER REQUEST SLA,RSS JMP WRT WRITE REQUEST RAR,SLA JMP CTRL CONTROL REQUEST * LDA B1 READ ILLEGAL!! JMP DDV12,I * CTRL LDA EXCOD,I ISOLATE SUBFUNCTION AND #FCN CPA #CN11 JMP CN11 LINE SPACE JMP WRT3 NO, DO WHATEVER IT IS * IMCOM LDA B4 IGNORE OTHERS JMP DDV12,I * CN11 LDA BUFRA,I FETCH IPRAM SSA NEGATIVE?? JMP FORMF YES, DO FORMFEED * AND #MAXL LIMIT NUMBER TO REASONABLE SZA,RSS ZERO? INA YES, DO AT LEAST ONE CMA,INA MAKE NEG STA COUNT,I AND STORE IN EQT * CN11A LDA .CRLF WRITE CR/LF JSB SETW JSB DOIT ISZ COUNT,I DONE? JMP CN11A NO * CLB YES DONE CLA JMP DDV12,I * FORMF LDA .FF SEND FORMFEED (CTRL-L) JSB SETW JMP WRT3 WRITE IT AND EXIT * WRT LDA EXCOD,I FETCH FUNCTION CODE AND ?ONST HONESTY MODE (BIT 7 SET)? SZA,RSS JMP WRT2 NO, DO COLUMN 1 STUFF * LDA B2 STA EXCOD,I CLEAR OTHER BITS WRT3 JSB DOIT DO REQUEST AS-IS JMP DONE * WRT2 LDA BUFLN,I ZERO LEN WRITE?? SZA,RSS JMP IMCOM YES, COMPLETE NOW LDB BUFRA,I GET ADDR OF BUFFER LDA B,I GET FIRST 2 CHARS AND #LOWR SAVE LOWER BYTE STA TMP LDA BUFLN,I IS LEN 1 CHAR ONLY? INA,SZA,RSS STA TMP YES, SET 2ND CHAR TO NULL LDA B,I FETCH UPPER AND #UPER CPA "ONE "1" JMP WRT1 CPA "ZERO "0" JMP WRT0 CPA "MNUS "-" JMP WRTM WRT9 CLA,RSS * WRT0 LDA "LF SEND LINE-FEED TO START WRT4 IOR TMP MERGE IN FIRST PRINTING CHAR WRT5 STA COUNT,I SAVE IN "BUFFE<R" LDA COUNT WRITE BUFFER TO PRINTER JSB SETW JSB DOIT * LDA #WRTC SEND REST OF USER BUFFER WITH CRLF STA EXCOD,I ISZ BUFRA,I START OF BUFFER ONE HIGHER LDA BUFLN,I AND LEN OF BUFFER TWO CHARS LESS SSA CMA,INA,RSS ..CONVERT TO CHARS RAL ADA DM2 ..LESS TWO CMA,INA ..IN CHARS STA BUFLN,I CMA,INA SSA,RSS ALL DONE? JSB DOIT NO, SEND USER BUFFER JMP DONE * WRT1 LDA "FF 1ST CHAR = "1", SEND FORMFEED JMP WRT4 * WRTM LDA .LFLF 1ST CHAR = "-", SEND SOME LF'S FIRST JSB SETW JSB DOIT LDA BUFRA,I FETCH 1ST PRINTING CHAR LDA A,I AND #LOWR JMP WRT5 GO PRINT * SETW NOP SET UP FOR ONE WORD BINARY WRITE STA BUFRA,I LDA #WRTB STA EXCOD,I CLA,INA STA BUFLN,I JMP SETW,I * DOIT NOP DO REQUEST SET IN EXTENT LDA DOIT SAVE RETURN ADDR STA RTN,I LDA B5 LDB EQT14,I SET TIMER JMP DDV12,I * SETUP NOP SET EQT EXTENT POINTERS SSA,RSS NEW REQUEST?? ISZ SETUP YES, P+2 RETURN RAL,CLE,ERA STRIP LDB #EXSZ LEN OF EXTENT (NEG) STB TMP LDB .EXST ADDR OF EXTENT POINTERS * SET2 STA B,I SET ONE INA INB BUMP'M ISZ TMP DONE? JMP SET2 NO JMP SETUP,I YES * ?ONST OCT 200 HONESTY BIT IN EXEC FUNCTION #LOWR OCT 177 LOWER BYTE #UPER OCT 077400 UPPER BYTE "ONE OCT 30400 "ZERO OCT 30000 "MNUS OCT 26400 "LF OCT 05000 LINEFEED #WRTB OCT 102 BINARY WRITE FUNCTION CODE "FF OCT 6000 FORMFEED #DVTP OCT 5000 DRIVER TYPE 12 IN EQT5 B1 OCT 1 #FCN OCT 3700 FUNCTION CODE IN EXCOD #WRTC OCT 2 .LFLF DEF "LFLF "LFLF OCT 5012 TWO LF'S #CN11 OCT 1100 CTRL-11 IN EXCOD B4 OCT 4 #MAXL OCT 77 MAX 63 LINE SPACES PER REQUEST .CRLF DEF "CRLF "CRLF OCT 6412 CR/LF B5 OCT 5 DM2 DEC -2 B2 OCT 2 .FF DEF "FF * END   12792-18005 2032 S C0122 &$DVTB DEVICE DRIVER ADDRESS TA.             H0101 rASMB,Q,C * * DEVICE DRIVER ADDRESS TABLE FOR MUX INTERFACE DRIVER * * SOURCE: 12792-18005 &$DVTB * RELOC : 12792-16005 %$DVTB * PRGMR : GDD * NAM $DVTB,8 12792-16005 REV.2032 800602 V.05 ENT $DVTB EXT DDV05,DDV12 * $DVTB DEC 2 # OF ENTRYS IN TABLE * DEF DDV12+0 7310 PRINTER DRIVER, DEVICE DVR 2 DEF DDV05+0 26XX DEVICE DRIVER , DEVICE DVR 3 * END 5(  12792-18006 2029 S C0122 &MUXST 12792A DIAGNOSTIC SOURCE             H0101 (EASMB,R,L,C NAM DIAG,3 12792-16006 REV.2029 800724 ****************************************************************** * * RELOC. 12792-16006 * SOURCE 12792-18006 * ABSOLUTE 12792-16007 * (RTE-M) * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1980. * ALL RIGHTS RESERVED. NO PART OF THIS PROGRAM * MAY BE PHOTOCOPIED, REPRODUCED OR TRANSLATED * TO ANOTHER PROGRAM LANGUAGE WITHOUT THE PRIOR * WRITTEN CONSENT OF THE HEWLETT-PACKARD COMPANY. * **-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-* * * THIS PROGRAM DOWNLOADS SELF TEST IN TO THE MUX RAM . * IT FIRST SEND A DOWNLOAD COMMAND TO THE MUX. SIZE OF THE * CODE TO BE DOWNLOADED IS SPECIFIED IN BYTES IN THE SECOND * WORD OF THE COMMAND. * MUX LOADS THE CODE IN TO THE RAM AND JUMPS TO THE STARTING * LOCATION OF THE DOWNLOADED CODE. * * EXT $LIBR,$LIBX,EXEC,NAMR SC EQU 00B DUMMY SELECT CODE A EQU 0B A REG B EQU 1B B REG DIAG NOP * START JSB EXEC WRITE MESSAGE TO THE DEF *+5 CONSOLE ASKING OPERATOR DEF WRCOD TO ENTER MUX SELECT CODE DEF WRTRM DEF MESS5 DEF MESS5-1 * * READ MUX SELECT CODE FROM THE USER JSB EXEC DEF *+5 DEF RDCOD DEF RDTRM DEF MUXSC DEF THREE * * CONVERT MUX SELECT CODE FROM ASCII * TO DECIMAL USING NAMR. * * INITIALIZE POINTER FOR THE STRING * TO BE PARSED TO 1 EVERYTIME . LDA ONE STA ISTRC * JSB NAMR DEF *+5 DEF IPR DEF MUXSC DEF THREE DEF ISTRC * * CHECK IF THE USER INPUT A NUMBER AND NOT LETTER. * LDA IPR+3 CPA ONE JMP PUTSC JMP START IF NOT PRINT MESSAGE AGAIN. * PUTSC LDA IPR PUT SELECT CODE IN ALL I/O INSTRUCTIONS LDB IPR CHECK TO SEE IF SELECT CODE ADB M100B IS .LE. 77B SSB JMP PUTS1 YES. WE .ARE OK. JMP START NO. TRY AGAIN. PUTS1 LDB .IOIN JSB SETEM * JSB $LIBR WE WANT TO DO ONLINE I-O. NOP LDA DOWNL SEND DOWN LOAD COMMAND. OTA01 OTA SC,C STC01 STC SC JSB WAIT WAIT FOR THE FLAG OR TIMOUT CLC01 CLC SC CLEAR CONTROL SO DRIVER IS NOT CALLED LDA SIZE SECOND WRD OF CMND-SIZE IN BYTES. OTA02 OTA SC,C JSB WAIT WAIT FOR THE FLAG OR TIMOUT INA FIGURE OUT SIZE IN WORDS ARS SO WE CAN USE IT AS A COUNTER. CMA INA LDX ZERO INITIALIZE POINTER OF CODE. LOOP LBX MESS+1 POINT TO THE CODE TABLE ENTRY OTB01 OTB SC,C ISX INCREMENT POINTER JSB WAIT WAIT FOR THE FLAG OR TIMEOUT INA ARE WE DONE? SZA JMP LOOP CLF01 CLF SC JSB $LIBX TURN INTERRUPT SYS ON AGAIN. DEF *+1 DEF *+1 * FOLLOWING CODE IS COMMENTED OUT BECAUSE IT * DOES NOT WORK WITHOUT TBG. SO INSTEAD OF * SCHEDULING MYSELF IN 5 SECS, I WILL * WAIT IN A LOOP FOR 5 SECS. * JSB EXEC SCHEDULE OURSELF TO BE * DEF L0 AWAKENED AFTER 5 SECONDS. * DEF TIMLS * DEF INAME * DEF IRESL * DEF MTPLE * DEF IOFF * * WAIT FOR ABOUT 5 SECS. LDB FACTR COUNT * FACTOR DECIDES TIME1 LDA COUNT WAIT TIME OF THIS LOOP. TIME2 INA INNER WAIT LOOP SZA JMP TIME2 INB SZB OUTER WAIT LOOP JMP TIME1 * * NOW CHECK THE RESULTS OF THE SELF TEST L0 JSB $LIBR WANT TO DO I/O AGAIN. NOP LIA01 LIA SC READ THE BACKPLANE LATCH. * IT SHOULD BE A # BETWEEN 1 & 13. SSA IS A POSITIVE? JMP FAIL2 NO. PRINT TEST 14 FAILED OR LOOPED. LDB 0 B <- A ADB M14 IS B > 13? SSB IF SO PRINT 14 IN MESSAGE. JMP SFS01 LATCH IS BETWEEN 1 & 13. FAIL2 LDA M1 THIS WILL PRINT 14 IN MESSAGE. SFS01 SFS SC IS MUX FLAG SET? JMP FAILb1 NO. MUX STUCK IN A LOOP. CLF02 CLF SC FLAG SET. CLEAR IT. JSB $LIBX TURN ON THE INTERRUPT SYSTEM DEF *+1 DEF *+1 CPA D13 DID MUX PASS THE LAST TEST(SIO)? JMP PASS YES INA FIND TEST NUMBER FAILED ADA ERADR CONVERT TO PRINTABLE ASCII LDA A,I STA MESS3+8 STORE IN THE MESSAGE JSB EXEC WRITE THE MESSAGE TO DEF *+5 TO THE OPERATOR DEF WRCOD DEF WRTRM DEF MESS3 DEF MESS3-1 DONE JSB EXEC DEF TAG DEF ICODE DEF INAME DEF INUMB DEF IPARM DEF IPARM DEF IPARM DEF IPARM DEF IPARM TAG NOP * * WAIT NOP SUBROUTINE TO WAIT FOR THE FLAG LDB TLEN INITIALIZE WAIT LOOP COUNTER WAITL INB INCREMENT COUNTER SZB COUNTER TURNED OVER? JMP SFS02 NO. JMP ERR1 YES. MUX TIMED OUT SFS02 SFS SC FLAG SET? JMP WAITL NO. JMP WAIT,I YES. RETURN * * ERR1 JSB $LIBX TURN INTERRUPTS BACK ON DEF *+1 DEF *+1 JSB EXEC WRITE ERROR MESSAGE TO THE DEF *+5 OPERATOR. DEF WRCOD DEF WRTRM DEF MESS1 DEF MESS1-1 JMP DONE TERMINATE. PASS JSB EXEC SEND PASS MESSAGE TO THE DEF *+5 OPERATOR. DEF WRCOD DEF WRTRM DEF MESS4 DEF MESS4-1 JMP DONE TERMINATE. * * FAIL1 JSB $LIBX TURN INTERRUPTS BACK ON. DEF *+1 DEF *+1 INA FIND THE TEST NUMBER IN WHICH * MUX IS STUCK. ADA ERADR CONVERT THE NUMBER TO ASCII LDA A,I FOR PRINTING. STA MESS2+14 STORE IN THE MESSAGE. JSB EXEC INFORM THE OPERATOR OF THE DEF *+5 ERROR CONDITION DEF WRCOD DEF WRTRM DEF MESS2 DEF MESS2-1 JMP DONE TERMINATE. * * SETEM NOP SET I/O INSTRUCTIONS STA TMP1 SAVE WANTED SELECT CODE STB TMP SAVE A(INST ADSDRESS TABLE) LDA B,I FETCH FIRST LDA A,I ..INSTRUCTION AND #SCOD GET JUST SELECT CODE XOR TMP1 FIND DIFFERENCES SZA,RSS ANY? JMP SETEM,I NO, EXIT STA TMP1 SAVE * SETM2 LDB TMP,I GET A(INSTRUCTION) SZB,RSS DONE? JMP SETEM,I YES LDA B,I FETCH INSTRUCTION XOR TMP1 UPDATE STA B,I RETURN ISZ TMP NEXT! JMP SETM2 LOOP FOR A WHILE * .IOIN DEF *+1 CARD I/O INSTRUCTIONS DEF OTA01 DEF OTA02 DEF OTB01 DEF LIA01 DEF STC01 DEF CLC01 DEF SFS01 DEF SFS02 DEF CLF01 DEF CLF02 OCT 0 END OF CARD I/O * * #SCOD OCT 77 MUXSC BSS 4 ISTRC DEC 1 IPR BSS 10 STRING RETURNED BY NAMR TMP BSS 1 TEMPORARY TMP1 BSS 1 TEMPORARY ICODE DEC 6 INAME DEC 0 DEC 0 DEC 0 INUMB DEC 0 IPARM DEF 0 TIMLS DEC 12 SCHEDULE PROGRAM ITSELF IRESL DEC 2 TIME INTERVAL IN SECS. MTPLE DEC 0 SCHEDULE PROGRAM ONLY ONCE. IOFF DEC -2 2 SECONDS SCHEDULE. * RDCOD OCT 1 READ RDTRM OCT 401 READ FROM TERMINAL. WRCOD DEC 2 WRITE COMMAND WRTRM OCT 1 ASCII WRITE TO LU 1 ERADR DEF ERTBL ADDRESS OF ASCII ERRORS. ERTBL ASC 1,14 OCT 20061 OCT 20062 OCT 20063 OCT 20064 OCT 20065 OCT 20066 OCT 20067 OCT 20070 OCT 20071 OCT 30460 OCT 30461 OCT 30462 OCT 30463 ASC 1,?? TEST # ?? IN CASE LAST FLAG GOT LOST. * DEC 10 MESS1 ASC 10,NO RESPONSE FROM MUX * DEC 15 MESS2 ASC 15,MUX LOOPING IN TEST NUMBER * DEC 13 MESS3 ASC 13,MUX TEST NUMBER FAILED * DEC 8 MESS4 ASC 8,MUX TEST PASSED * DEC 25 MESS5 ASC 25, ENTER MULTIPLEXER SELECT CODE IN OCTAL (E.G.21B)_ * TLEN DEC -800 WAIT TIME LOOP COUNTER * DECIDED BY MAKING SOME MEASUREMENTS ERROR OCT 377 D13 DEC 13 ZERO OCT 0 ONE OCT 1 M1 DEC -1 THREE OCT 3 M14 DEC -14 M100B OCT -100 COUNT DEC -10000 FACTR DEC -100 DOWNL OCT 144000 MESS NOP OCT 141474 OCT 050400 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 000000 OCT 015122 OCT 042522 OCT 026122 OCT 042522 OCT 015122 OCT 042522 OCT 026122 OCT 042522 OCT 000175 OCT 000163 OCT 000001 OCT 012020 OCT 126777 OCT 072202 OCT 147663 OCT 103407 OCT 003002 OCT 010004 OCT 042003 OCT 140405 OCT 165021 OCT 013400 OCT 030777 OCT 077715 OCT 052122 OCT 007024 OCT 037005 OCT 166571 OCT 037200 OCT 166571 OCT 127441 OCT 000001 OCT 021000 OCT 030026 OCT 000441 OCT 000020 OCT 007020 OCT 042453 OCT 103020 OCT 176015 OCT 020371 OCT 133702 OCT 042522 OCT 012441 OCT 000040 OCT 007000 OCT 020354 OCT 020400 OCT 001042 OCT 000060 OCT 012441 OCT 176577 OCT 076275 OCT 070040 OCT 000562 OCT 025574 OCT 177122 OCT 020364 OCT 020775 OCT 077574 OCT 136570 OCT 020001 OCT 075276 OCT 141105 OCT 051053 OCT 076376 OCT 051040 OCT 170257 OCT 134102 OCT 053450 OCT 154041 OCT 000003 OCT 021000 OCT 030016 OCT 004006 OCT 007041 OCT 0@20521 OCT 166663 OCT 010777 OCT 071041 OCT 177164 OCT 011443 OCT 015276 OCT 141105 OCT 051160 OCT 010366 OCT 020400 OCT 002042 OCT 000060 OCT 013112 OCT 075326 OCT 010127 OCT 045006 OCT 001041 OCT 027521 OCT 166663 OCT 020400 OCT 002755 OCT 074376 OCT 002702 OCT 042522 OCT 074776 OCT 005040 OCT 162442 OCT 000060 OCT 037125 OCT 151412 OCT 151432 OCT 037014 OCT 151412 OCT 151432 OCT 007020 OCT 037005 OCT 166571 OCT 037200 OCT 166571 OCT 007027 OCT 013007 OCT 037121 OCT 166507 OCT 003013 OCT 020461 OCT 050755 OCT 131755 OCT 057141 OCT 003101 OCT 064112 OCT 166501 OCT 046175 OCT 177133 OCT 024042 OCT 175566 OCT 014367 OCT 074376 OCT 055040 OCT 003076 OCT 024355 OCT 074430 OCT 002404 OCT 045355 OCT 040514 OCT 166515 OCT 045355 OCT 074114 OCT 163177 OCT 136440 OCT 010054 OCT 166515 OCT 037015 OCT 111062 OCT 000460 OCT 075015 OCT 012776 OCT 000040 OCT 135715 OCT 052122 OCT 035001 OCT 020333 OCT 177713 OCT 043440 OCT 175303 OCT 000000 OCT 003030 OCT 037020 OCT 047755 OCT 040474 OCT 177030 OCT 141130 OCT 051076 OCT *($ 141723 OCT 004311 SIZE DEC 358 END DIAG END$ *   12821-18001 1928 S 0122 12821A DIAGNOSTIC              H0101  ASMB,A,B,C,L HED * 12821A DIAGNOSTIC ORG 0 SUP * * * *** 12821A DIAGNOSTIC *** * * INSTRUCTIONS FOR CONVERSATIONAL MODE: * (FOR NON-CONSOLE OPERATION SKIP TO #11) * * 1. LOAD CONFIGURATOR WITH IBL. * * 2. SET P TO 100B, S TO CONSOLE SELECT CODE (BITS 0-5), AND * PRESS PRESET, RUN. * * 3. CONFIGURATOR WILL DISPLAY: * * "LINE PRINTER (NO,SC)" * * ENTER "NONE" (SINCE THIS DIAGNOSTIC DOESN'T TALK TO * LINE PRINTERS). * * 4. NEXT,CONFIGURATOR WILL DISPLAY: * * "DIAG INPUT DEVICE (NO,SC)" * * ENTER "AAAA,BB" WHERE AAAA IS THE FOUR DIGIT MODEL * NUMBER OF THE INPUT DEVICE AND BB IS IT'S SELECT CODE * (EXAMPLE..2748,15 OR 7970,23 ETC.) * * 5. NEXT, CONFIGURATOR WILL DISPLAY: * * "DSN (SEQ.DIAG,EXECUT)" * * MAKE THE INPUT DEVICE READY AND ENTER "103024" * * 6. THE CPU WILL LOAD THE DIAGNOSTIC AND COME TO A HLT 77B. PRESS * PRESET, RUN AND ANSWER THE QUESTIONS ISSUED BY THE DIAGNOSTIC. * * 7. SR BIT 15 - TO BREAK OUT OF A LOOPING TEST (TOGGLE ON,OFF) * TO LOOP ON ENTIRE DIAGNOSTIC (SET TO 1) * * 8. SR BIT 14 - (A) SUPPRESS OPERATOR INTERVENTION (TEST 10) * * 9. SR BIT 13 - SUPPRESS ALL MESSAGE PRINTING * (EXCEPT CONFIGURATION MESSAGES) * * 10. SR BIT 12 - CAUSE A 1 SEC. DELAY BETWEEN THE EXCECUTION * OF EACH TEST. SKP * * *****NON-CONVERSATIONAL MODE***** * * 11. LOAD DIAGNOSTIC CONFIGURATOR USING IBL. (HLT 77B) * * 12. USING AUTOMATIC OR MANUAL MODE, * * AUTOMATIC..P=100, S=012300 (7970B IN S.C. 23) * * S=001600 (2748B IN S.C. 16) * * LOAD DIAGNOSTIC - READY INPUT DEVICE, * PRESS PRESET,RUN. DIAG. LOADS (HLT 77B). * * 13. PRESS PRESET,RUNW%. * * * *******HALTS******* * * (ALL INPUTS SHOULD BE MADE IN SWITCH REGISTER BITS 0-5) * * HLT 1B - INPUT DI #1'S SELECT CODE,PRESS RUN. * * HLT 2B - INPUT DI #1'S BUSS ADDRESS,PRESS RUN. * * HLT 3B - INPUT DI #2'S SELECT CODE OR "0" IF NONE. * PRESS RUN. * * HLT 4B - INPUT DI #2'S BUS ADDRESS,PRESS RUN. * * HLT 5B - LOAD SW. REG. WITH DESIRED OPTIONS. PRESS RUN. * * HLT 7B - ERROR! SR BITS 6-11 = TEST # IN OCTAL * 0-5 = SUBTEST # * * HLT 77B - DIAGNOSTIC PASSED. PRESS RUN TO REPEAT. * * * * * NOTE: IN ORDER TO PROVIDE AN UNUSUAL DEGREE OF FLEXIBILITY * AND FRIENDLYNESS THIS DIAGNOSTIC USES CUSTOMISED * SWITCH REGISTER OPTIONS. PLEASE NOTE ANY DIFFERENCES * BEFORE STARTING. * * U13 S8 (SYSTEM CONTROLLER) SWITCH MUST BE IN THE * OPEN POSITION ON ALL DI'S UNDER TEST FOR PROPER * DIAGNOSTIC OPERATION. * * THIS DIAGNOSTIC REQUIRES A MINIMUM OF 8KW MEMORY. SKP * * * *** BASE PAGE STORAGE *** * A EQU 0 B EQU 1 SR EQU 1 CD1 EQU 51B CD2 EQU 52B * ORG 2B * JMP ? CONVENIENT RESTART * ORG 100B * JMP .STRT,I START FOR CONFIGURATOR BSS 1 FAST INPUT (PHOTO READER) BSS 1 DEF CONSOLE OUTPUT DRIVER BSS 1 DEF LINE PRINTER DRIVER SLOIN BSS 1 SLOW INPUT (KEYBOARD) DEF FWAA FIRST WORD OF AVBL. MEMORY BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) BSS 1 1 MILL SEC TIME OUT COUNT BSS 1 SELECT CODES FOR I/O CONSC BSS 1 CONSOLE SELECT CODE. BSS 2 CPTO BSS 1 COMPUTER TYPE/OPTIONS BSS 1 USER CARD TYPE AND SELECT CODE BSS 1 MEMORY SIZE AND TYPE BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 DEF L MS TIMER ROUTINE SWRC BSS 1  DEF SR CHECK ROUTINE D2AS BSS 1 DEF DEC TO ASCII ROUTINE O2AS BSS 1 DEF OCTAL TO ASCII ROUTINE ASCON BSS 1 DEF ASCII TO NUMBER ROUTINE DSN OCT 103024 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 DEF FORMATTER .STRT DEF START POINTER TO ADDRESS OF START .CDE DEF DO START OF CODE .ECDE DEF ECDE END OF CODE SC1 OCT 77 S.C. OF DI #1 SC2 OCT 77 S.C. OF DI #2 SC NOP ACTIVE SELECT CODE TL1 NOP DI #1 BUS ADDRESS TL2 NOP DI #2 BUS ADDRESS CTR NOP EFLG NOP 1 IF MX-E, OTHERWISE 0 P1 NOP B3 OCT 3 B10 OCT 10 B30 OCT 30 B40 OCT 40 B51 OCT 51 B52 OCT 52 B60 OCT 60 B77 OCT 77 M1 DEC -1 M3 DEC -3 .T14 DEF T14 POINTER TO T14 M5 DEC -5 M8 DEC -8 M16 DEC -16 M17 DEC -17 M0 DEC 0 M20 DEC -20 D1 DEC 1 D2 DEC 2 D3 DEC 3 D4 DEC 4 D5 DEC 5 D6 DEC 6 D7 DEC 7 D8 DEC 8 D9 DEC 9 D10 DEC 10 D11 DEC 11 D15 DEC 15 D17 DEC 17 D1K DEC 1000 B377 OCT 377 TMP11 NOP B30K OCT 30000 MB60 OCT -60 MB72 OCT -72 BIT3 OCT 10 U1 OCT 100 T1 NOTIFICATION AT SWITCH REGISTER U2 OCT 200 T2 " U3 OCT 300 T3 " U4 OCT 400 T4 " U5 OCT 500 T5 " U6 OCT 600 T6 " U7 OCT 700 T7 " U8 OCT 1000 T8 " U9 OCT 1100 T9 " U10 OCT 1200 T10 " U11 OCT 1300 T11 " U12 OCT 1400 T12 " U13 OCT 1500 T13 " U14 OCT 1600 T14 " U15 OCT 1700 T15 " BIT15 OCT 100000 JMPT3 JMP 3,I TO BE PUT IN TRAP CELL OF INTERRUPTING DI NB77 OCT 177700 NEGITIVE BINARY 77 BKARO OCT 137 ASCII BACKARROW IOMSK OCT 172000 MASK FOR I/O INSTRUCTIONS BSAV NOP .BBUF DEF BBUF POINTER TO ADDRESS OF BBUF BBUF NOP TEMPORARY B REGISTER STORAGE BBUX OCT 137 DO NOT SEPERATE BBUX AND BBUF! (TABLE) IOINS OCT 102000 I/O [INSTRUCTION LFLAG NOP *LOOP LFLAG CTRL NOP HOLDA NOP TEMPORARY A REGISTER STORAGE HOLDB NOP TEMPORARY B REGISTER STORAGE SAVAH NOP ADATA NOP ACTUAL DATA EDATA NOP EXPECTED DATA CHARB OCT 102 B CHARACTER IN ASCII B70 OCT 70 CHARL OCT 114 L CHAR? OCT 77 ? CHAR$ OCT 44 $ SPACE OCT 40 SPACE CHARF OCT 106 F CW1 OCT 12 CW2 OCT 10014 CHKRB OCT 125252 CW3 OCT 207 TEST, TALK , LISTEN , CIC MP NOP MESSAGE POINTER .T7.8 DEF T7.8 JMP4I JMP 4,I TRAPI CLC 3B TRAP INSTRUCTION MP94 DEF MS94 POINTER TO ADDRESS OF MS94 .SP DEF SPACE POINTER TO ADDRESS OF SPACE CHARE OCT 105 E ASCII CHARACTER CHARR OCT 122 R CHARN OCT 116 N DN15 OCT 77777 D300 DEC 300 MX.E OCT 110000 EMSK OCT 010000 CHARG OCT 107 G BIT14 OCT 40000 BIT13 OCT 20000 BIT12 OCT 10000 D5K DEC 5000 SMSK OCT 170000 D10K DEC 10000 LADD NOP LISTENERS HP-IB BUS ADDRESS D36 DEC 36 P3 NOP .PM DEF PMON P2 NOP CM6 OCT 4 CM5 OCT 3 PPE OCT 40 PARALLEL POLL ENABLE PLAD NOP PARALLEL POLL ADDRESS CM1 OCT 60001 STAC NOP STORE ACTUAL CM8 OCT 60034 MD36 DEC -36 TMP1 NOP TEMPORARY STORAGE LOCATION #1 TMP2 NOP " " " #2 TMP3 NOP " " " #3 TMP4 NOP " " " #4 TMP5 NOP " " " #5 TSC NOP TALKER S.C. LSC NOP LISTENER S.C. CM2 OCT 100001 CM3 OCT 100000 CM4 OCT 10047 TMP6 NOP .? DEF ? TMP7 NOP TMP8 NOP TMP9 NOP TMP10 NOP .HT HLT 77B DO NOT SEPERATE JMP ? THESE TWO LINES CM7 OCT 15 P,L,CIC CM9 OCT 13 P,T,CIC MO10 OCT -10 B67 OCT 67 COMPT OCT 4012 STAT NOP TMP13 NOP TMP12 NOP SKP * * CONTROL/STATUS TABLE * (Xr,Y) WHERE X=CONTROL WORD SENT * Y=STATUS WORD EXPECTED BACK * .CST DEF * OCT 0,00030 COMBINATION FCDS USES TO LOCATE DI'S OCT 1,31 OCT 2,32 OCT 4,34 OCT 10,30 OCT 20,30 OCT 40,30 OCT 100,30 OCT 200,30 OCT 400,30 OCT 1000,30 OCT 2000,30 OCT 4000,30 OCT 10000,30 OCT 20000,20030 OCT 40000,40230 OCT 100000,100030 OCT 1,31 OCT 3,33 OCT 5,35 OCT 11,31 OCT 21,31 OCT 41,31 OCT 101,31 OCT 201,31 OCT 401,31 OCT 1001,31 OCT 2001,31 OCT 4001,31 OCT 10001,31 OCT 20001,20031 OCT 40001,40231 OCT 100001,31 OCT 411,31 OCT 413,433 OCT 47,1437 OCT -1 SKP * * TEST TABLE * TP NOP TEST POINTER .TT DEF *+1,I DEF T0 STARTING ADDRESS OF TEST 0 DEF T1 1 DEF T2 2 DEF T3 3 DEF T4 4 DEF T5 5 DEF T6 6 DEF T7 7 DEF T8 8 DEF T9 9 DEF T10 10 DEF T11 11 DEF T12 12 DEF T13 13 DEF T14 14 DEF PMON PASS MONITOR DEF T15 15 DEF ? SKP * * BUFFER STORAGE * .ABFF DEF ABUF+10 .ABUF DEF ABUF ABUF BSS 10 * .BUF1 DEF B1E1 B1E1 OCT 125252 B1E2 OCT 146314 B1E3 OCT 170360 B1E4 OCT 177400 OCT 2 OCT 3 OCT 4 BSS 8 * .BUF2 DEF B2E1 DEF B2E1+20 B2VE1 NOP B2E2 NOP NOP NOP NOP NOP BSS 14 * .BUF3 DEF B3E1 B3E1 OCT 252 B3E2 OCT 314 B3E3 OCT 360 BSS 10 * SKP .B41 DEF B4E2 .B4 DEF B4E1 B4E1 BSS 35 B4E2 BSS 1 * .B5 DEF B5E1 **ASCII** B5E1 OCT 60 0 OCT 61 1 OCT 62 2 OCT 63 3 OCT 64 4 OCT 65 5 OCT 66 6 OCT 67 7 OCT 70 8 OCT 71 9 OCT 101 A OCT 102 B OCT 103 C OCT 104 D OCT 105 E OCT 106 F OCT 107 G OCT 110 H OCT 111 I OCT 112 J OCT 113 K OCT 114 L OCT 115 M OCT 116 N OCT 117 O OCT 120 P OCT 121 Q OCT 122 R OCT 123 S OCT 124 T OCT 125 U OCT 126 V OCT 127 W OCT 130 X OCT 131 Y OCT 132 Z SKP * * *** BASE PAGE ROUTINES *** * * DO - CONSOLE DISPLAY OF OCTAL NUMBER IN "A" REGISTER * DO NOP STA HOLDA SAVE A LDA BKARO ASCII BACKARROW LDB .ABUF GET ADDRESS OF 10 WORD BUFFER DO10 STA B,I FILL BUFFER WITH BACKARROWS INB BUMP B CPB .ABFF IS THE BUFFER FILLED? RSS YES, GO ON JMP DO10 NO, GO BACK CLE *** PROCEDURE TO USE LDA HOLDA *** OCTAL TO ASCII ROUTINE LDB .ABUF *** IN CONFIGURATOR JSB O2AS,I *** NOP *** LDB .ABUF JSB RJ RIGHT JUSTIFY CLA *** USE FMTR IN CONFIGURATOR JSB FMTR,I *** TO OUTPUT NUMBER TO CONSOLE JSB MSG PRINT... DEF MS70 "B" JMP DO,I RETURN * * DD - CONSOLEnc DISPLAY OF DECIMAL VALUE IN "A" REGISTER * DD NOP STA HOLDA SAVE NUMBER LDA BKARO ASCII BACKARROW LDB .ABUF GET ADDRESS OF BUFFER DD10 STA B,I FILL BUFFER WITH BACKARROWS INB BUMP B CPB .ABFF DONE YET? RSS YES, GO ON JMP DD10 NO, GO BACK CLE *** TELL CONFIGURATOR LDA HOLDA *** TO DO CONVERSION LDB .ABUF *** JSB D2AS,I *** NOP *** LDB .ABUF JSB RJ RIGHT JUSTIFY CLA *** USE CONFIGURATOR TO JSB FMTR,I *** OUTPUT TO CONSOLE JMP DD,I RETURN SKP * * RJ - RIGHT JUSTIFY (DELETE LEADING 0'S,SPACES) * RJ NOP NOP LDA B,I GET FIRST WORD ALF,ALF EXCHANGE UPPER,LOWER BYTE AND B377 SAVE LOWER BYTE CPA B60 DIGIT 5 (ASCII 0?) JMP RJ10 YES, JUMP CPA B40 NO. ASCII SPACE? JMP RJ10 YES, JUMP JMP RJ,I NO. EXIT RJ10 LDA B,I GET FIRST WORD AGAIN AND B377 SAVE LOWER BYTE CPA B60 DIGIT 4 (ASCII 0?) JMP RJ15 YES, JUMP STA B,I PUT IT BACK JMP RJ,I EXIT RJ15 CLA STA B,I INB LDA B,I ALF,ALF AND B377 CPA B60 DIGIT 3 RSS JMP RJ,I LDA B,I AND B377 CPA B60 DIGIT 2 JMP RJ20 STA B,I JMP RJ,I RJ20 CLA STA B,I INB LDA B,I ALF,ALF AND B377 CPA B60 RSS JMP RJ,I LDA B,I AND B377 STA B,I JMP RJ,I SKP * * MSG- DISPLAY MESSAGE ON CRT. * * CALLING SEQUENCE: * * JSB MSG * DEF MSXX * * CONTROL CHARACTERS ALLOWED: * * _ - (BACKARROW OR UNDERSCORE, I.E., OCT 137) SKIP SPACES * UNTIL NEXT CHARACTER. * * $ - END OF MESSAGE. * MSG NOP LDB MSG,I GET ADDRESS OF MESSAGE TO BE OUTPUT ISZ MSG WHEN DONE, RETURN P+2 STB MP SAVE MESSAGE POINTER MSG7 LDA MP,I GET 1ST TWO BYTES NOP ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE CPA BKARO BACKARROW? JMP MSG15 YES, JUMP CPA CHAR$ NO. "$" ? JMP MSG20 YES, EXIT STA BBUF NO. PUT CHARACTER IN BUFFER CLA,CLE *** USE FMTR IN CONFIGURATOR LDB .BBUF *** TO OUTPUT CHARACTER JSB FMTR,I *** ON CONSOLE LDA MP,I GET 2 BYTES AND B377 MASK FOR LOWER BYTE CPA BKARO BACKARROW? JMP MSG15 YES, JUMP CPA CHAR$ "$" ? JMP MSG20 YES, EXIT STA BBUF SAVE CHARACTER IN BUFFER CLA,CLE *** USE CONFIGURATOR TO LDB .BBUF *** OUTPUT CHARACTER ON JSB FMTR,I *** CONSOLE ISZ MP BUMP MESSAGE POINTER JMP MSG7 GO BACK MSG15 ISZ MP BACKARROW FOUND, BUMP POINTER LDA MP,I GET 2 MORE BYTES ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE CPA SPACE SPACE? JMP MSG15 YES, STAY IN LOOP AND DON'T OUTPUT THIS CHARACTER JMP MSG7 NO. GO BACK MSG20 NOP NOP JMP MSG,I EXIT * * * SRO - OUTPUT THE A REGISTER TO THE SWITCH REGISTER * WITHOUT DISTURBING BITS 12 TO 15 * * SRO NOP STA HOLDA SAVE A REGISTER RSS SKIP SAMPLE INSTRUCTION SR1 OTA CD1 LDA SR1 GET SAMPLE INSTRUCTION AND B77 SAVE ONLY S.C. STA SC UPDATE SC POINTER CPA SC1 IS PROGRAM SET UP TO TEST DI #1 ? JMP SR2 YES, JUMP CCE NO, SET E-REGISTER (SIGNAL OPERATOR DI#2 BEING TESTED) RSS SR2 CLE SIGNAL DI#1 BEING TESTED LIA SR READ SWITCH REGISTER AND SMSK SAVE ONLY BITS 12 TO 15 IOR HOLDA ADD NEW PART OTA SR SEND IT TO SWITCH REGISTER JMP SRO,I EXIT * * * BB - BARE BONES TEST OR CONVERSATIONAL? * * IF CONSOLE RETURN AT P+3 * OTHERWISE RETURN AT P+1 * * BB NOP STA HOLDA SAVE A LDA CONSC GET CONSOLE S.C. SZA ANY CONSOLE? JMP BB1 CONSOLE! LDA HOLDA NO CONSOLE. JMP BB,I RETURN BB1 LDA HOLDA RESTORE A ISZ BB RETURN AT P+3 ISZ BB JMP BB,I * * CRSC - OUTPUTS THE CURRENTLY ACTIVE SELECT CODE TO * THE CONSOLE * CRSC NOP STA TMP12 SAVE A JSB MSG PRINT... DEF MS129 "THE CURRENTLY ACTIVE S.C. IS.." LDA SC GET SELECT CODE JSB DO OUTPUT IT JSB CRLF DO A CRLF LDA TMP12 RESTORE A JMP CRSC,I EXIT SKP * * BELL - RING BELL * BELL NOP JSB MSG PRINT... DEF MS69 "BEEP" JMP BELL,I * * PMON * PMON JSB BB SWITCH REGISTER MODE? NOP YES JMP PM1 LDB BIT13 SR BIT 13 SET? JSB SWRC,I JMP PM1 YES, SUPPRESS PRINTING JSB BELL NO, RING BELL JSB MSG PRINT... DEF MS132 "TESTING COMPLETED ON SC..." LDA SC GET SC JSB DO OUTPUT IT JSB CRLF DO CRLF PM1 LDA SC GET S.C. CPA SC1 DONE WITH FIRST OR SECOND CARD? RSS SKIP JMP PM20 DONE WITH SECOND CARD LDA SC2 GET S.C. OF DI#2 CPA B77 IS THERE A SECOND CARD? JMP PM3 NO STA SC MAKE CURRENTLY ACTIVE S.C. JSB INTIO YES, MAKE CURRENT SC LDA .TT GO TO TESTING STA TP JMP TP,I PM20 ISZ TP SECOND CARD HAS PASSED JMP TP,I GO DO TEST 15 PM3 LDB BIT15 SR BIT 1f15 SET? JSB SWRC,I JMP PM5 YES, START OVER JSB BB CONSOLE? NOP NO JMP .HLT HALT 77 JMP ? PM5 LDA .TT STA TP JMP TP,I SKP * * CLR15 CLEARS SWITCH REGISTER BIT 15 * CLR15 NOP STA HOLDA SAVE A LIA SR GET SR AND DN15 DROP BIT 15 OTA SR PUT IT BACK LDA HOLDA RESTORE A JMP CLR15,I EXIT * * .HLT DOES A HALT 77B AFTER MAKING SURE THAT SR BIT * 15 IS NOT BEING RESET BY THE OPERATOR * .HLT NOP LIA SR GET SR STA HOLDA SAVE IT .H1 LDB BIT15 SEND BIT 15 TO SR OTB SR JSB SWRC,I IS BIT 15 SET? RSS YES,NO FINGER ON BUTTON JMP .H2 NO,WAIT FOR SWITCH RELEASE LDA HOLDA RESTORE SR OTA SR JMP .HT GO DO HALT 77B .H2 LDA D300 JSB TMRR,I JMP .H1 SKP * * INTIO - INITIALIZE THE I/O INSTRUCTIONS. * * CHANGES SELECT CODES IN I/O INSTRUCTIONS BETWEEN * THE LOCATIONS POINTED TO IN * .CDE,I AND .ECDE,I AS FOLLOWS: * * 51 TO SC1 (SELECT CODE OF FIRST CARD) * 52 TO SC2 (SELECT CODE OF SECOND CARD) * SC1 TO SC2 * SC2 TO SC1 * * IF TARGET SELECT CODE IS 77 (NOT DETERMINED YET) NO * CHANGE IS MADE ON THIS PASS. * INTIO NOP CLA A=0 LDB .B4 INITIALIZE T15 TEST BUFFER IN10 CPB .B41 JMP IN15 DONE, GO ON STA B,I INB JMP IN10 IN15 STA B,I LDB .CDE GET ADDRESS OF BEGINING OF CODE STB P1 SAVE IT IN20 LDA P1,I GET 1ST INSTRUCTIONN AND IOMSK B172000 MASK FOR I/O GROUP CPA IOINS B102000 I/O INSTRUCTION? RSS YES, SKIP JMP IN50 NO. JUMP LDA P1,I GET INSTRUCTION AGAIN AND B77 MASK FOR SELECT CODE LDB A DEFAULT IS ORIGINAL SC CPA B51 CD1? LDXB SC1 USE S.C. INPUT BY OPERATOR CPA B52 CD2? LDB SC2 USE S.C. INPUT BY OPERATOR CPA SC1 HAS DI #1 ALREADY PASSED? LDB SC2 YES, SWAP CPA SC2 HAS DI #2 ALREADY PASSED? LDB SC1 YES, START OVER WITH DI #1'S S.C. CPB B77 JMP IN50 SC NOT DETERMINED YET NOP LDA P1,I GET INSTRUCTION AGAIN AND NB77 REMOVE OLD SELECT CODE IOR B ADD NEW SELECT CODE STA P1,I REPLACE OLD INSTRUCTION WITH NEW ONE NOP IN50 ISZ P1 BUMP LOCATION POINTER LDB P1 READ NEW P1 CPB .ECDE ARE WE AT THE END OF CODE ? JMP INTIO,I YES, EXIT JMP IN20 NO, GO BACK SKP * * * CRLF - EXECUTE CRLF ON CONSOLE * CRLF NOP STB BSAV SAVE B CLA,CLE *** USE CONFIGURATOR TO LDB MP94 *** OUTPUT CRLF JSB FMTR,I *** LDB BSAV RESTORE B JMP CRLF,I EXIT * * DCRLF - EXECUTE TWO CRLF'S ON CONSOLE * DCRLF NOP JSB CRLF JSB CRLF JMP DCRLF,I SKP * * CON - GET CONSOLE INPUT FROM OPERATOR * * RETURN: * * P+1 A=# * P+2 A=CHAR1 OF MESSAGE * P+3 ? ENTERED * CON NOP CLA A=0 LDB .ABUF GET ADDRESS OF BUFFER CON5 STA B,I FILL BUFFER WITH 0'S INB BUMP B CPB .ABFF FINISHED ? RSS YES, SKIP JMP CON5 NO, GO BACK LDA D8 *** USE CONFIGURATOR'S SLOIN LDB .ABUF *** TO GET INPUT JSB SLOIN,I *** FROM CONSOLE NOP *** LDA ABUF GET 1ST 2 BYTES NOP ALF,ALF TRADE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE STA HOLDA SAVE IT ADA MB60 SUBTRACT 60 SSA IS THE RESULT A POSITIVE NUMBER ? JMP CON10 <60 NO, JUMP LDA HOLDA YES _ ADA MB72 SUBTRACT 72 SSA,RSS IS THE RESULT A NEGATIVE NUMBER ? JMP CON10 >72 NO LDB .ABUF YES, IT'S AN ASCII 0-9 CLE JSB CV# CONVERT ASCII TO BINARY JMP CON,I EXIT AT P+1 CON10 LDA ABUF GET 2 BYTES AGAIN STA HOLDA SAVE THEM AND B377 MASK FOR LOWER BYTE IOR B30K ADD ASCII "0" IN UPPER BYTE STA ABUF WIPE OUT LETTER LDA HOLDA GET ORIGINAL BYTES ALF,ALF TRADE BYTES AND B377 MASK FOR LOWER BYTE CPA CHAR? IS IT A QUESTION MARK? JMP CON? YES, EXIT AT P+3 STA HOLDA NO, MUST BE A MESSAGE ISZ CON EXIT AT P+2 JMP CON,I CON? ISZ CON ISZ CON JMP CON,I SKP * * CV# - CONVERT ASCII NUMBER INPUT FROM CONSOLE TO BINARY * * * IF NUMBER INPUT ON CONSOLE WAS TERMINATED WITH A "B" * CONVERSION IS FROM ASCII OCTAL TO BINARY, OTHERWISE * FROM ASCII DECIMAL TO BINARY. * CV# NOP LDB .ABUF GET ADDRESS OF BUFFER CV3 LDA B,I GET FIRST WORD ALF,ALF EXCHANGE UPPER,LOWER BYTES AND B377 MASK FOR LOWER BYTE SZA,RSS IS IT ALL 0'S JMP CV7 YES, JUMP CPA CHARB NO. IS IT AN ASCII B? JMP CV8 (OCT) YES, JUMP LDA B,I NO, GET WORD AGAIN AND B377 MASK FOR LOWER BYTE SZA,RSS IS IT 0? JMP CV7 (DEC) YES, JUMP CPA CHARB NO, IS IT A B? JMP CV8 (OCT) YES, JUMP INB NO. BUMP B JMP CV3 GO BACK CV7 CLA ASCII DECIMAL INPUT RSS CV8 CCA ASCII BINARY INPUT LDB .ABUF *** USE ASCII,DECIMAL JSB ASCON,I *** ROUTINE IN CONFIGURATOR NOP *** JMP CV#,I EXIT * * * STUFJ - PLACE JMP 3,I IN THE CARD TRAP CELL AND PUT * THE ADDRESS IN JSB+1 INTO ADDRESS 3. * STUFJ NOP LDB JMPT3 GET JMP 3,I. STB SC,I PUT IT IN DI TEST SC. LDA STUFJ,I GET SUBROUTINE ADDRESS. STA 3 PUT IT IN ADDRESS 3. ISZ STUFJ UPDATE RETURN. JMP STUFJ,I RETURN. SKP * * LP? - DETERMINE IF LOOP FLAG IS SET * * RETURNS: * * P+1 . . . LOOP FLAG SET * P+2 . . . LOOP FLAG CLEAR * LP? NOP STA HOLDA STB HOLDB SAVE A,B LDA SC GET S.C. CPA SC1 DI #1 CURRENTLY ACTIVE? CLE YES CLEAR EXTEND REGISTER LDB BIT12 WAIT 1 SEC. BETWEEN TESTS? JSB SWRC,I RSS YES JMP L3? NO LDA D1K JSB TMRR,I L3? LDA LFLAG GET LOOP FLAG SZA,RSS IS LOOP FLAG=0? (CLEAR) JMP L10? LDB BIT15 NO. LOOK AT S.W. BIT 15 JSB SWRC,I IS IT SET? (CONFIGURATOR ROUTINE) JMP ? YES, BREAK LOOP L4? LDA HOLDA NO. CONTINUE LOOP (RESTORE A,B REGISTERS) LDB HOLDB JMP LP?,I RETURN TO SAME TEST L10? ISZ LP? JMP L4? * * GTMAD - DISPLAY "...BAD INPUT..." ON DISPLAY * GTMAD NOP JSB CRLF JSB MSG PRINT... DEF MS36 "BAD INPUT.." JSB CRLF DO A CRLF JMP GTMAD,I EXIT SKP * * FCDS - FIND THE CARDS * FCDS NOP LDA B77 STA SC1 PUT 77 INTO SC1 AND STA SC2 SC2 LDB B10 S.C. 10 FC0 LDA FC1 ** THESE INSTRUCTIONS PUT A SELECT CODE AND NB77 ** DESIGNATION INTO FC1,FC2 AND FC3. IOR B ** BEGINNING WITH 10 AND INCREASING STA FC1 ** UNTIL AN DI CARD IS FOUND THAT LDA FC2 ** RETURNS THE CORRECT STATUS AND NB77 ** IOR B ** STA FC2 ** LDA FC3 ** AND NB77 ** IOR B ** STA FC3 ** CLA ** FC1 CLC CD1,C GET STATUS WORD FROM FC2 OTA CD1 THAT S.C. FC3 LIA CD1 AND B77 MASK FOR LOWER 6 BITS CPA B30 DI CARD? JMP FC10 YES, JUMP INB NO. TRY NEXT SELECT CODE CPB B70 DONE YET? JMP FCDS,I YES. EXIT JMP FC0 NO. GO BACK FC10 LDA SC1 CPA B77 HAS DI #1 BEEN FOUND YET? RSS NO JMP FC15 YES, MAKE THIS SC2 STB SC1 NO, MAKE THIS SC1 INB BUMP B JMP FC0 GO TRY NEXT S.C. FC15 STB SC2 SC2 IS THE S.C. OF DI #2 JMP FCDS,I EXIT SKP * * ? - INTERPRET COMMANDS FROM CONSOLE * * ALLOWABLE COMMANDS: * * CR - (DEFAULT) RUN ALL TESTS FROM TEST 0 * N - EXCECUTE FROM TEST N * LN - LOOP ON TEST N * E - EXIT PROGRAM (PRESS RUN TO RESTART) * R - RECONFIGURE (GO BACK TO CONFIGURATION SECTION) * F - FORCE TEST SECOND BOARD * (WHEN T14 FAILS ON DI #1) * G - GO BACK AND TEST DI #1 AGAIN * * ? LDA .TT GET ADDRESS OF TEST 0 STA TP SAVE IT IN THE TEST POINTER CLF 0 KEEP INT SYS OFF LDA LFLAG STA TMP11 SAVE LOOP INDICATION CLA CLEAR A STA LFLAG RESET LOOP FLAG JSB BB CONSOLE? NOP YES JMP TP,I GO TO T0 LDB BIT15 NO. BIT 15 SET? JSB SWRC,I RSS YES JMP ?5 NO, DON'T LOOP LDA TMP11 WERE WE ALREADY SZA LOOPING? JMP ?5 NO JMP TP,I YES, GO TO T0 ?5 JSB CRLF YES LIA SR JSB SRO UPDATE E-REG. JSB MSG PRINT... DEF MS35 "?" JSB CON GET OPERATOR INPUT JMP ?10 # INPUT JMP ?20 LETTER INPUT (OR CRLF) JSB MSG ? INPUT, PRINT... DEF MS37 WHAT'S AVAILABLE JSB CRLF & JMP ? ?10 STA SAVAH SAVE A CPA D15 #15 INPUT? JMP ?12 YES LDA D15 NO. SUBTRACT 15 FROM NUMBER INPUT CMA,INA ADA SAVAH SSA IS THE RESULT A POSITIVE NUMBER? JMP ?10.1 # INPUT <15 JSB MSG PRINT... DEF MS131 "IMPROPER TEST SELECTION" JSB BELL JSB CRLF LDA D17 # INPUT >15 JMP ?11 ?10.1 LDA SAVAH JMP ?11 ?12 INA ?11 ADA .TT MOVE TEST POINTER TO NEW TEST STA TP SAVE IT NOP JMP TP,I GO DO TEST ?20 CPA CHARL L ENTERED? JMP ?30 YES CPA CHARF F ENTERED? JMP ?25 YES CPA CHARE E ENTERED? JMP ?50 YES CPA CHARG G ENTERED JMP ?28 YES CPA CHARR R ENTERED? JMP ?51 YES SZA,RSS NO. SKIP IF A ISN'T 0 JMP ?40 DEFAULT (CRLF) JSB GTMAD BAD INPUT JSB CLR15 CLEAR SR BIT 15 JMP ? START OVER ?25 JSB CLR15 LDA SC GET ACTIVE S.C. CPA SC1 DI #1 CURRENTLY UNDER TEST? JMP ?26 YES, SKIP JMP ? ?26 LDA SC2 IS THERE A CPA B77 SECOND CARD? RSS NO JMP ?27 YES JSB MSG PRINT... DEF MS130 "NO SECOND DI CONFIGURED" JSB CRLF JSB BELL JMP ? ?27 JSB INTIO RECONFIGURE SELECT CODES LDA SC2 STA SC JMP ? ?28 JSB CLR15 LDA SC GET CURRENTLY ACTIVE S.C. CPA SC2 DI #2 ? RSS YES, SKIP JMP ? NO. IGNORE "G" COMMAND JSB INTIO INITAILIZE PROGRAM FOR DI #1 LDA SC1 GET DI #1 S.C. STA SC UPDATE ACTIVE SELECT CODE POINTER JMP ? ?30 ISZ LFLAG SET LOOP FLAG JSB CV# CONVERT # NOP STA SAVAH CPA D15 #15 INPUT? JMP ?31 h YES LDA D15 NO. SUBTRACT 15 FROM # INPUT CMA,INA ADA SAVAH SSA IS THE RESULT A POSITIVE NUMBER? JMP ?30.1 # INPUT <15 JSB MSG PRINT... DEF MS131 "IMPROPER TEST SELECTION" JSB BELL JSB CRLF LDA D17 # INPUT >15 JMP ?40 ?30.1 LDA SAVAH RESTORE A JMP ?40 ?31 INA ?40 ADA .TT POINT TO TEST "N" NOP STA TP JMP TP,I GO DO IT ?50 JMP .HLT ?51 JMP .STRT,I SKP * * BCVT- BIT CONVERT * * CONVERTS A REGISTER TO TWO DECIMAL NUMBERS * CORRESPONDING TO THE FIRST TWO BITS SET. * ENTERING WITH A = 6100, E.G., RETURNS WITH * A = DEC 10, B = DEC 6. IF ONLY ONE BIT * IS SET IN A, RETURN IS WITH A = NUMBER OF * THAT BIT AND B = -1. IF NO BITS ARE SET * IN A RETURN IS WITH A = B = -1. * * RETURN SUMMARY: * * A=-1,B=-1 . . . NO BITS SET IN A * A=M ,B=-1. . . .BIT M SET IN A * A=M ,B=N . . . .BIT M AND BIT N SET IN A * BCVT NOP LDB M16 STB CTR CCB STB B2E1 STB B2E2 LDB .BUF2 STB P1 CLB BC5 SLA,RSS JMP BC10 STB P1,I ISZ P1 BC10 RAR INB ISZ CTR JMP BC5 LDA B2E1 LDB B2E2 JMP BCVT,I SKP * ORG 2000B * * *** TEST SECTION *** * * T0 - DOES CLC I,C CLEAR CARD FLAG? * T0 EQU * CLA A=0 JSB SRO SEND TO SWITCH REGISTER CLC 0 T0.1 CLC CD1,C MASTER RESET SFC CD1 IS FLAG CLEAR? JMP T0.3 NO, REPORT ERROR CLA YES JSB LP? LOOP ON THIS TEST? JMP T0.1 YES ISZ TP NO, GO TO NEXT TEST NOP JMP TP,I EXIT T0.3 LIA SR ERROR ROUTINE IOR D1 SEND BIT 0 TO SW TO SIGNAL ERROR OTA SR JSB LP? LOOP FLAG SET? JMP T0.1 YES ,IGNORE ERROR AND LOOP ON TEST JSB BB CONSOLE? HLT 7B NO. HALT JMP T1 IF RUN PRESSED GO TO NEXT TEXT JSB CLR15 JSB BELL NO, RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC" JSB DCRLF LDA T0.1 LOAD UNSUCESSFUL INSTRUCTION JSB DO NOTIFY OPERATOR JSB MSG PRINT... DEF MS7.5 "DOESN'T CLEAR FLAG" JSB DCRLF JSB MSG PRINT... DEF MS7.6 "SEE TEST 0" JSB CRSC JMP ? EXIT SKP * * T1 DOES STF SET CARD FLAG? * T1 EQU * LDA U1 SIGNAL TEST 1 JSB SRO TO SWITCH REGISTER T1.1 CLC CD1,C MASTER RESET CLC 0 T1.2 STF CD1 SET FLAG SFS CD1 FLAG SET? JMP T1.5 NO, ERROR JSB LP? YES. LOOP? JMP T1.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR ROUTINE** * T1.5 LIA SR SIGNAL OPERATOR OF ERROR IOR D1 BY SETTING BIT 0 OTA SR IN THE SWITCH REGISTER JSB LP? LOOP? JMP T1.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T2 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC." JSB DCRLF LDA T1.2 LOAD OFFENDING INSTRUCTION JSB DO SEND IT OUT TO THE CONSOLE JSB MSG PRINT... DEF MS8.5 "DOESN'T"SET FLAG JSB DCRLF JSB MSG PRINT... DEF MS8 "SEE TEST 1." JSB CRSC JMP ? SKP * * T2 - DOES CLF CLEAR CARD FLAG? * T2 EQU * LDA U2 SIGNAL TEST 2 JSB SRO AT THE SWITCH REGISTER T2.1 CLC CD1,C MASTER RESET CLC 0 STF CD1 SET FLAG T2.3 CLF CD1 CLEAR FLAG |SFC CD1 FLAG CLEAR? JMP T2.5 NO, JUMP ERROR JSB LP? LOOP? JMP T2.1 YES, GO BACK ISZ TP NO. GO TO JMP TP,I NEXT TEST * * **ERROR** * T2.5 LIA SR SET SR BIT 0 IOR D1 TO SIGNAL ERROR OTA SR JSB LP? LOOP? JMP T2.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T3 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS7 "FAULT IN FLAG LOGIC." JSB DCRLF LDA T2.3 LOAD OFFENDING INSTRUCTION JSB DO SEND IT TO CRT JSB MSG PRINT... DEF MS9.5 "DOESN'T CLEAR FLAG" JSB DCRLF JSB MSG PRINT... DEF MS9 "SEE TEST 2." JSB CRSC JMP ? SKP * * T3 - DOES FLAG CLEAR HOLD OFF INTERRUPTS? * T3 EQU * CLC 0 LDA U3 SIGNAL TEST 3 JSB SRO TO SWITCH REGISTER JSB STUFJ ARRANGE FOR INTERRUPT RETURN DEF T3.2 NOP T3.1 CLC CD1,C MASTER RESET CLF 0 TURN INTERRUPT SYSTEM OFF STC CD1 SET CONTROL STF 0 TURN INTERRUPT SYSTEM ON NOP ALLOW TIME NOP FOR INTERRUPT CLF 0 NO INTERRUPT. TURN INT. SYS. OFF JSB LP? LOOP? JMP T3.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR** * T3.2 LIA SR SIGNAL ERROR IOR D1 AT SR BY BIT 0 OTA SR JSB LP? LOOP? JMP T3.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO. HALT JMP T4 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS101 FLAG CLEAR DOESN'T HOLD OFF INTERRUPTS JSB CRSC JMP ? SKP * * T4 - DOES IEN LOKW HOLD OFF INTERRUPTS? * T4 EQU * CLC 0 LDA U4 SIGNAL TEST 4 JSB SRO AT SR JSB STUFJ SET UP INTERRUPT RETURN DEF T4.2 AT T4.2 NOP T4.1 CLC CD1,C MASTER RESET CLF 0 TURN INT. SYS. OFF STF CD1 SET FLAG STC CD1 SET CONTROL NOP ALLOW TIME FOR INTERRUPT JSB LP? LOOP? JMP T4.1 YES, GO BACK ISZ TP NO, GO TO NEXT TEST JMP TP,I * * **ERROR** * T4.2 LIA SR SIGNAL ERROR IOR D1 AT SR BY BIT 0 OTA SR JSB LP? LOOP? JMP T4.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO JMP T5 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS10 "IEN DOESN'T HOLD OFF INTERRUPTS" JSB DCRLF JSB MSG PRINT... DEF MS103 "SEE TEST 4." JSB CRSC JMP ? SKP * * T5 - DOES BOARD TALK TO STRANGE SELECT CODES? * T5 EQU * CLC 0 LDA U5 SIGNAL TEST 5 JSB SRO AT SR T5.05 LDB BIT3 START WITH 10 LDA T5.6 GET SAMPLE INSTRUCTION AND B77 SAVE ONLY S.C. STA TMP8 T5.1 NOP CPB TMP8 SAME? JMP T5.5 SKIP IF PRESENT SC LDA T5.3 GET INSTRUCTION AND NB77 MASK OFF S.C. BITS IOR B ADD NEW S.C. STA T5.3 PUT INSTRUCTION BACK CLC CD1,C MASTER RESET STF CD1 SET FLAG T5.3 CLC 0,C EXCECUTE INSTRUCTION SFS CD1 FLAG STILL SET? JMP T5.7 NO. ERROR CPB B67 AT LAST S.C. YET? JMP T5.8 YES , EXIT T5.5 INB NO. BUMP B JMP T5.1 GO BACK T5.6 OTA CD1 * * FLAG CLEARS IN RESPONSE TO C~LF TO WRONG SC * T5.7 LIA SR SET SR BIT 0 IOR D1 TO SIGNAL ERROR OTA SR JSB LP? LOOP? JMP T5.05 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T6 IF RUN PRESSED POINT TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS105 "FAULT IN LSC/MSC DECODE LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS12 "FLAG CLEARS IN RESPONSE TO " LDA T5.3 LOAD OFFENDING INSTRUCTION JSB DO DISPLAY THE INSTRUCTION JSB DCRLF JSB MSG PRINT... DEF MS106 "SEE TEST 5" JSB CRSC JMP ? T5.8 JSB LP? LOOP? JMP T5.05 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I SKP * * T6 - DOES CONTROL FF LOW HOLD OFF INTERRUPTS? * T6 EQU * CLC 0 LDA U6 SIGNAL TEST 6 JSB SRO AT SR JSB STUFJ ARRANGE INTERRUPT RETURN DEF T6.4 AT T6.4 NOP T6.1 CLC CD1,C MASTER RESET STF CD1 SET FLAG STF 0 TURN INT. SYS. ON NOP ALLOW TIME FOR INTERRUPTS NOP CLF 0 PASSED. TURN INT. SYS. OFF JSB LP? LOOP? JMP T6.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST JMP TP,I * * CARD INTERRUPTS WITHOUT BEING ISSUED STC * T6.4 LIA SR SIGNAL ERROR AT SR IOR D1 BY BIT 0 OTA SR CLF 0 TURN INT. SYS. OFF JSB LP? LOOP? JMP T6.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T7 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS13 "CARD INTERUPTS WITHOUT BEING ISSUED STC." r JSB DCRLF JSB MSG PRINT... DEF MS107 "SEE TEST 6." JSB CRSC JMP ? SKP * * T7 - CAN CARD INTERRUPT? * T7 EQU * CLC 0 LDA U7 SIGNAL TEST 7 JSB SRO AT SR T7.1 CLC CD1,C MASTER RESET JSB STUFJ ARRANGE INTERRUPT RETURN DEF T7.6 AT T7.6 LDA .T7.8 GET ADDRESS OF T7.8 STA 4 SAVE IT IN ADDRESS 4 LDA JMP4I GET JMP 4,I CLF 6B TURN OFF DMA (DMA ON OPENS PR CHAIN) CLF 7B STF CD1 SET FLAG STC CD1 SET CONTROL STF 0 TURN INT. SYS. ON NOP SHOULD INTERRUPT HERE * * CARD CAN'T INTERRUPT * LIA SR SIGNAL ERROR IOR D1 AT SR WITH BIT 0 OTA SR JSB LP? LOOP? JMP T7.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T8 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF DO A DOUBLE CR,LF JSB MSG PRINT... DEF MS14 "CARD CAN'T INTERRUPT" JSB DCRLF JSB MSG PRINT... DEF MS108 "SEE TEST 7." JSB CRSC JMP ? EXIT T7.6 JSB LP? LOOP? JMP T7.1 YES, GO BACK ISZ TP NO. GO TO NEXT TEST CLF 0 TURN OFF INT. SYS. JMP TP,I * * CARD INTERRUPTS THROUGH SC 0 * T7.8 LIA SR GET SR IOR D2 ADD A 2 OTA SR OUTPUT TO SR CLF 0 TURN INT. SYS OFF JSB LP? LOOP? JMP T7.1 YES, GO BACK JSB BB CONSOLE? HLT 7B NO, HALT JMP T8 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS102 "FAULT IN INTERRUPT CONTROL LOGIC" JSB DCRLF  DO A DOUBLE CR,LF JSB MSG PRINT... DEF MS90 CARD INTERRUPTS THROUGH SELECT CODE 0" JSB DCRLF JSB MSG PRINT... DEF MS108 "SEE TEST 7." JSB CRSC JMP ? EXIT SKP * * T8 - IS FIFO THERE? * T8 EQU * CLC 0 LDA U8 SIGNAL TEST 8 JSB SRO AT SR T8.1 CLC CD1,C MASTER RESET LDA D8 (OCT 10) P OTA CD1 MAKE CARD A TALKER CLC CD1,C * * NOTE: * * DATA IS PASSED BELOW IN PACKED MODE TO AVOID PUTTING THE * BOARD INTO AN OSCILLATORY MODE. OSCILLATIONS OCCUR ON ATN * AND THE DATA LINES INTO THE FIFO IF THE BOARD IS * CONFIGURED TO BE A TALKER BUT NOT A CONTROLLER IN * CHARGE AND BIT 8 IS OUTPUT IN UNPACKED MODE ALONG * WITH THE LOWER DATA BYTE. IN UNPACKED MODE BIT 8 * DRIVES ATNOUT. THE BOARD SENSES THE ATN LINE AND SHUTS OFF * AS A TALKER THINKING SOMEONE (THE CONTROLLER IN CHARGE) * IS SENDING ATN. WHEN THE BOARD IS NO LONGER A TALKER * ATN IS NO LONGER ASSERTED AND THE BOARD BECOMES A TALKER * AGAIN. IN UNPACKED MODE THE ATN LINE IS * DRIVEN FROM THE CONTROL REGISTER. * STC CD1 SWITCH TO DATA MODE LDA CHKRB OTA CD1 SEND A WORD TO THE FIFO CLC CD1 SWITCH TO CONTROL MODE LDA CW2 (OCT 10014) IRL,P,L OTA CD1 MAKE A LISTENER STC CD1 SWITCH TO DATA MODE SFS CD1 IS FLAG SET? JMP T8.3 NO, ERROR LIA CD1 YES, CHECK DATA CPA CHKRB JMP T81 OK,DONE XOR CHKRB JSB BCVT HOW MANY BITS CHANGED? CPB M1 JMP T81 ONLY 1, LET TEST 9 FIND IT JMP T8.5 MORE THAN 1, FLAG THE ERROR T81 JSB LP? YES, TEST PASSED. LOOP? JMP T8.1 YES, RETURN TO BEGINNING ISZ TP NO, GO ON TO NEXT TEST NOP JMP TP,I * * CARD FLAG DIDN'T SET WHEN SWITCH̡ED TO LISTEN MODE * WITH DATA IN THE FIFO. * T8.3 NOP LIA SR IOR D1 OTA SR JSB LP? LOOP? JMP T8.1 YES, RETURN TO START JSB BB CONSOLE? HLT 7B NO. HALT JMP T9 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG NO, DISPLAY ERROR MESSAGE DEF MS80 "FAULT IN FIFO CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS39 "NO FLAG" JSB DCRLF JSB MSG PRINT... DEF MS81 "SEE TEST 8." JSB CRSC JMP ? * * DATA ERROR * T8.5 STA ADATA SAVE A LIA SR SIGNAL ERROR AT SR IOR D2 OTA SR JSB LP? LOOP? JMP T8.1 YES JSB BB CONSOLE? HLT 7B YES JMP T9 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS87 "BASIC FIFO ERROR" JSB DCRLF JSB MSG PRINT... DEF MS88 "125252 DROPPED INTO FIFO" LDA ADATA JSB DO JSB MSG PRINT... DEF MS89 "FOUND AT THE BOTTEM" JSB DCRLF JSB MSG PRINT... DEF MS81 "SEE TEST 8" JSB CRSC JMP ? SKP * * T9 - ARE ANY BITS STUCK IN THE CPU-FIFO-CPU DATA PATH? * * THE 10 WORDS BELOW ARE CHOSEN TO DETECT ANY STUCK BITS * IN A 16 BIT DATA PATH. THE ALGORITHM PERFORMED ON THE * RETURN DATA DETERMINES WHICH BITS ARE STUCK AND WHAT * THEY'RE STUCK TO (I.E., A 0 LEVEL, A 1 LEVEL, OR EACH * OTHER). * T9 EQU * CLC 0 LDA U9 SIGNAL T9 AT SR JSB SRO T9.1 CLC CD1,C MASTER RESET LDA D8 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE CLA OTA CD1 STORE 000000 CMA OTA CD1 STORE 111111 LDA B1E1 OTA CD1  STORE 125252 CMA OTA CD1 STORE -125252 LDA B1E2 OTA CD1 STORE 146314 CMA OTA CD1 STORE -146314 LDA B1E3 OTA CD1 STORE 170360 CMA OTA CD1 STORE -170360 LDA B1E4 OTA CD1 STORE 177400 CMA OTA CD1 STORE -177400 CLC CD1 SWITCH TO CONTROL MODE LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1 SWILTCH TO DATA MODE LIA CD1 READ WORD 1 SZA 0? JMP T941 NO, THERE'S A BIT STUCK HIGH LIA CD1 READ WORD 2 CMA SZA 111111? JMP T945 NO, THERE'S A BIT STUCK LOW LIA CD1 READ WORD 3 XOR B1E1 FIND ANY CHANGED BITS WITH XOR STA HOLDA SAVE LIA CD1 READ WORD 4 CMA XOR B1E1 FIND ANY CHANGED BITS WITH XOR IOR HOLDA MERGE WORD 3 AND WORD 4 CHANGES SZA ANY BITS CHANGED? JMP T950 YES, REPORT ERROR LIA CD1 XOR B1E2 STA HOLDA LIA CD1 -146314 CMA XOR B1E2 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER LIA CD1 170360 XOR B1E3 STA HOLDA LIA CD1 -170360 CMA XOR B1E3 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER LIA CD1 177400 XOR B1E4 STA HOLDA LIA CD1 -177400 CMA XOR B1E4 IOR HOLDA SZA ANY BITS CHANGED? JMP T950 YES, THEY'RE STUCK TOGETHER JSB LP? JMP T9.1 ISZ TP PATH IS CLEAN JSB BB CONSOLE? ISZ TP NO. HALT NOP JMP TP,I EXIT * * CPU-FIFO-CPU PATH HAS A BIT STUCK HIGH * T941 STA ADATA LIA SR IOR D1 OTA SR% JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBER STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP T11 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS58 "BIT " LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS59 "STUCK HIGH." JSB DCRLF JSB MSG PRINT... DEF MS60 "SEE TEST 9" JSB CRSC JMP ? * * CPU-FIFO-CPU PATH HAS A BIT STUCK LOW * T945 STA ADATA LIA SR IOR D2 OTA SR JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBER STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP T11 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS58 "BIT " LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS62 "STUCK LOW." JSB DCRLF JSB MSG PRINT... DEF MS60 "SEE TEST 9." JSB CRSC JMP ? * * CPU-FIFO-CPU PATH HAS TWO BITS STUCK TOGETHER * T950 STA ADATA LIA SR IOR D3 OTA SR JSB LP? JMP T9.1 LDA ADATA JSB BCVT FIND BIT NUMBERS DST HOLDA JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS61 "FAULT IN CPU-FIFO-CPU DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA JSB DD DISPLAY FIRST BIT NUMBER JSB MSG PRINT... DEF MS15 "AND " LDA HOLDB JSB DD DISPLAY SECOND BIT NUMBER JSB MSG PRINT... DEF MS16 " STUCK TOGETHER." JSB DCRLF JSB MSG PRINT... DEF MS17 "SEE TEST 9." JSB CRSC JMP ? SKP * * T10 - DOES FRONT PANEL "PRESET" CLEAR CONTROL * AND SET FLAG? * T10 EQU * LDA U10 SIGNAL TEST 10 JSB SRO AT SR T10.1 CLF 0 TURN INT. SYS. OFF CLC 0 CLC CD1,C MASTER RESET LDB BIT13 SR BIT 13 SET? JSB SWRC,I JMP T10.5 YES, SKIP TEST LDA CW1 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SET DATA MODE LDA CHARB OTA CD1 SEND OUT DATA STC CD1,C SET CONTROL, CLEAR FLAG LDB BIT14 JSB SWRC,I SKIP THIS TEST? JMP T10.5 YES! JSB BELL JSB MSG PRINT... DEF MS97 "PRESS HALT,PRESET,RUN WITHIN 10 SECONDS" LDA D10K PREPARE TIMER TO WAIT JSB TMRR,I SFS CD1 DID PRESET SET FLAG? JMP T10.2 NO, JUMP ERROR JSB STUFJ ARRANGE INTERRUPT RETURN DEF T10.3 STF 0 TURN INT. SYS. ON NOP ALLOW TIME FOR INTERRUPT NOP CLF 0 NO. TURN INT. SYS. OFF CLF CD1 ALREADY IN COMMAND MODE LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1 SET DATA MODE SFC CD1 CARD SHOULD SET FLAG CAUSE DATA JMP T10.4 IN FIFO AT CHANGE TO DATA MODE LIA CD1 SZA JMP T10.4 JMP T10.5 * * **ERROR** * * PRESET DID NOT CLEAR THE FIFO * T10.4 LIA SR NO. REPORT ERROR IOR D1 AT SR WITH BIT 0 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL JSB MSG NO. PRINT... DEF MS100 "PRESET DID NOT CLEAR FIFO" JSB CRSC JMP ? EXIT * * T10.5 JSB LP? LOOP? JMP T10.1 YES, GO BACK s ISZ TP NO. GO TO NEXT TEST JMP TP,I * * **ERROR*** * * FLAG NOT SET BY PRESET * T10.2 CLF 0 TURN INT. SYS. OFF LIA SR SIGNAL ERROR AT SR IOR D2 WITH BIT 2 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS98 "FLAG NOT SET BY PRESET" JSB CRSC JMP ? * * **ERROR** * * CONTROL NOT CLEARED BY PRESET * T10.3 CLF 0 TURN INT. SYS. OFF LIA SR SIGNAL ERROR AT SR IOR D3 WITH BITS 0,1 OTA SR JSB LP? LOOP? JMP T10.1 YES, GO BACK JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS99 "CONTROL NOT CLEARED BY PRESET" JSB CRSC JMP ? EXIT SKP * * T11 - IS STATUS CORRECT AFTER EACH OF THE CONTROL WORDS * IN THE CONTROL STATUS TABLE IS SENT? * T11 EQU * LDA SC GET ACTIVE S.C. CPA SC1 NOW TESTING DI #1? CLE YES, CLEAR EXTEND REGISTER LDA U11 SIGNAL TEST 11 AT SR JSB SRO NOP LDA CM5 * CLC CD1,C * OTA CD1 * CLEAR STC CD1 * FIFO CLA * OTA CD1 * LDA .CST GET POINTER TO CONTROL STATUS TABLE STA P1 MOVE TO P1 T11.1 ISZ P1 BUMP TO NEX T CONTROL WORD T11.3 LDA P1,I LOAD CONTROL WORD CPA M1 LAST ENTRY? JMP T11.6 YES, END OF TEST ISZ P1 BUMP TO STATUS STA CTRL SAVE NOP CLC CD1,C MR CLC 0 CRS TO CLEAR CONTROL REGISTER OTA CD1 SEND CONTROL WORD NOP LIA CD1 READ STATUS CPA P1,I AS EXPECTED? RSS YES, CONTINUE JMP T11.4 NO, ERROR. LDA D1 JSB TMRR,I * * NOTE: * * A 1 MS TIME DELAY IS INSERTED HERE BEFORE SENDING * THE NEXT CONTROL WORD TO GIVE THE IFC ONE-SHOT * TIME TO TERMINATE IF IT WAS SET BY THE PREVIOUS * CONTROL WORD (BIT 14 SET TURNS IT ON). * JMP T11.1 * * STATUS INCORRECT * T11.4 STA ADATA SAVE ACTUAL STATUS LIA SR SIGNAL ERROR IOR D1 AT SR OTA SR LDB P1,I GET EXPECTED STATUS STB EDATA SAVE IT NOP JSB LP? LOOP? RSS JMP T11.5 LDA .CST INA STA P1 JMP T11.3 T11.5 JSB BB CONSOLE? HLT 7B NO, HALT JMP T12 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB BELL RING BELL JSB MSG PRINT... DEF MS18 "FAULT IN CONTROL/STATUS LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS22 "STATUS INCORRECT AFTER " LDA CTRL JSB DO DISPLAY LAST CONTROL WORD SENT JSB MSG PRINT... DEF MS23 " SENT AS CONTROL WORD." JSB DCRLF LDA EDATA JSB DO DISPLAY EXPECTED STATUS JSB MSG PRINT... DEF MS19 " EXPECTED" JSB CRLF LDA ADATA JSB DO DISPLAY ACTUAL STATUS JSB MSG PRINT... DEF MS20 " RETURNED" JSB DCRLF JSB MSG PRINT... DEF MS68 "SEE TEST 11." JSB CRSC JMP ? T11.6 JSB LP? LOOP? JMP T11 YES ISZ TP JMP TP,I SKP * * T12 - WILL CARD TAKE A DMA OUT TRANSFER? * T12 EQU * LDA U12 SIGNAL TEST 12 AT SR JSB SRO STF 6B TURN OFF DMA CLC 0 T12.1 CLC CD1,C MASTER RESET CLC CD2,C LDA CW1 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE LDA SC CONFIGURE DMA TO TX TO CARD OTA 6 SEND DMA CW1 CLC 2 LDA .BUF1 OTA 2 SEND DMA CW2 ST^cC 2 LDA M20 SEND 20 WORDS OTA 2 SEND DMA CW3 STC 6,C TURN ON DMA * * DMA SHOULD TAKE THE NEXT 20 CYCLES * NOP LIA 2 READ WORD COUNT CPA M0 WORD COUNT 0? RSS YES, ALL 20 WORDS TRANSFERED JMP T123 NO, REPORT ERRORR STF 6B STOP DMA CLC CD1 SWITCH TO CONTROL MODE LIA CD1 GET STATUS BACK FROM CARD CPA COMPT IS IT CORRECT? JMP T122 YES, GO ON STA STAT NO-REPORT ERROR JSB MSG PRINT... DEF MS44 "STATUS WRONG AFTER TRANSFER" JSB DCRLF LDA COMPT OUTPUT EXPECTED STATUS JSB DO JSB CRLF LDA STAT OUTPUT RECIEVED STATUS JSB DO JMP T1234 T122 JSB LP? ALL DATA OK. LOOP? JMP T12 YES CLC 6B TURN OFF DMA ISZ TP JMP TP,I * * WRONG RESIDUE AFTER TRANSFER * T123 STF 6 TERMINATE DMA LIA SR SIGNAL ERROR AT SR IOR D1 OTA SR JSB LP? LOOP? JMP T12.1 YES LIA 2 GET WORD COUNT JSB BB CONSOLE? HLT 7B NO, HALT JMP T13 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 CPA M20 -20? JMP T1235 DMA HUNG UP JSB MSG DEF MS56 "FAULT IN DMA CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS43 "WRONG RESIDUE." LIA 2 CMA,INA JSB DD DISPLAY RESIDUE T1234 JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? T1235 JSB MSG PRINT... DEF MS56 "FAULT IN DMA CONTROL LOGIC." JSB DCRLF JSB MSG PRINT... DEF MS66 "DMA HUNG UP WAITING FOR BOARD." JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? * * DMA OUTPUT TRANSFER ERROR * T124 STF 6 STA ADATA LIA SR IOR D2 OTA SR STA ADATA JSB LP? JMP T12.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP T13 IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS45 "FAULT IN DMA OUTPUT TRANSFER." JSB DCRLF LDA P1,I JSB DO DISPLAY CORRECT DATA JSB MSG PRINT... DEF MS19 "EXPECTED" JSB DCRLF LDA ADATA JSB DO DISPLAY ACTUAL DATA JSB MSG PRINT... DEF MS42 "RETURNED" JSB DCRLF JSB MSG PRINT... DEF MS82 "SEE TEST 12." JSB CRSC JMP ? SKP * * TEST 13 - WILL CARD TRANSFER IN VIA DMA? * T13 EQU * CLC 0 LDA U13 JSB SRO T13.1 STF 6B TERMINATE DMA FROM LAST TEST CLC CD1,C CLC CD2,C LDA D8 OTA CD1 MAKE CARD A TALKER CLC CD1,C STC CD1 SWITCH TO DATA MODE LDA M8 STA CTR LDB .BUF1 T132 LDA B,I OTA CD1 LOAD FIFO INB ISZ CTR JMP T132 LDA SC CONFIGURE FOR DMA IN OTA 6 CLC 2 LDA .BUF2 IOR BIT15 OTA 2 STC 2 LDA M8 OTA 2 CLC CD1 LDA CW2 OTA CD1 MAKE CARD A LISTENER STC CD1,C SWITCH TO DATA MODE STC 6B,C START DMA * * NOTE: * * IF DMA IS STARTED BEFORE THE CARD IS PUT INTO DATA * MODE,STATUS IS READ INTO THE DMA BUFFER AS SOON AS * THE CARD IS MADE A LISTENER. * LIA 2 READ DMA WORD COUNT STA ADATA SZA 0? JMP T136 NO, BOARD HUNG UP LDB .BUF1 YES, CHECK DATA STB P1 LDB .BUF2 LDA M8 STA CTR T1320 LDA B,I CPA P1,I JMP T1321 STA ADATA JMP T137 T1321 INB ISZ P1 ISZ CTR JMP T1320 JSB LP? JMP T13 CLC 6B TURN OFF DMA ISZ TP JMP TP,I * * BOARD NOT GIVING DATA TO DMA * T136 LIA SR IOR D1 OTA SR JSB LP? JMP T13.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .T14,I IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS56 "FAULT IN DMA CONTROL LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS67 "DMA HUNG UP" LDA ADATA JSB DD DISPLAY WORD COUNT JSB DCRLF JSB MSG PRINT... DEF MS65 "SEE TEST 13." JSB CRSC JMP ? * * DMA TRANSFER ERROR * T137 LIA SR IOR D2 OTA SR STA ADATA JSB LP? JMP T13.1 JSB BB CONSOLE HLT 7B NO. HALT JMP .T14,I IF RUN PRESSED GO TO NEXT TEST JSB CLR15 JSB MSG PRINT... DEF MS49 "FAULT IN DMA IN TRANSFER." JSB DCRLF LDA P1,I JSB DO JSB MSG PRINT... DEF MS19 "EXPECTED" JSB CRLF LDA ADATA JSB DO JSB MSG PRINT... DEF MS42 "READ" JSB DCRLF JSB MSG PRINT... DEF MS65 "SEE TEST 13." JSB CRSC JMP ? SKP * * TEST 14 - WILL CARD TRANSFER DATA ONTO BUS AND BACK? * ORG 4000B T14 EQU * CLC 0 LDA U14 JSB SRO T14.1 CLC CD1,C LDA D8 TALKER OTA CD1 CLC CD1,C STC CD1 DATA MODE LDB .BUF3 GET ADDRESS OF BUFFER LDA M5 STA CTR SET COUNTER TO -5 CLA OTA CD1,C STORE 000 OTA CD1,C STORE 000 AGAIN CMA AND B377 OTA CD1,C STORE 377 LDA B3E1 OTA CD1,C STORE 252 CMA OTA CD1,C STORE -252 LDA B3E2 OTA CD1,C STORE 314 CMA OTA CD1,C STORE -314 LDA B3E3 OTA CD1,C STORE 360 CMA OTA CD1,C STORE -360 LDA B77 OTA CD1,C STORE 077 CLC CD1 LDA CW3 OTA CD1 SWITCH TO TEST MODE * * THE OTA HERE UNAVOIDABLY DROPS ONE WORD (THE FIRST 0) FROM THE FIFO. * STC CD1 SWITCH TO DATA MODE NOP OTA CD1,C SHIFT 000 AROUND OTA CD1,C SHIFT 377 AROUND OTA CD1,C SHIFT 252 AROUND OTA CD1,C SHIFT -252 AROUND OTA CD1,C SHIFT 314 AROUND OTA CD1,C SHIFT -314 AROUND OTA CD1,C SHIFT 360 AROUND OTA CD1,C SHIFT -360 AROUND * * THE BOTTEM WORD IN THE FIFO SHOULD NOW BE 77 * * NEED TO READ THE ENTIRE STACK HERE AND SAVE * * LIA CD1 THROW OUT THE 0 NOP LIA CD1 AND B377 CPA B77 RSS JMP T143 OTA'S DIDN'T DROP DATA OUT OF FIFO LIA CD1 AND B377 * * THIS WORD SHOULD BE THE FIRST WORD SHIFTED AROUND, I.E., 0. * CPA B77 JMP T145 ERROR, NOTHING ABOVE 77 SZA DID 0 MAKE THE TRIP? JMP T146 NO, THERE'S A BIT STUCK HIGH LIA CD1 CMA AND B377 SZA DID 377 MAKE THE TRIP? JMP T147 NO, THERE'S A BIT STUCK LOW LIA CD1 CHECK FOR STUCK BITS AND B377 XOR B3E1 STA HOLDA LIA CD1 CMA AND B377 XOR B3E1 IOR HOLDA SZA JMP T148 FOUND SOME LIA CD1 AND B377 XOR B3E2 STA HOLDA LIA CD1 CMA AND B377 XOR B3E2 IOR HOLDA SZA JMP T148 FOUND SOME LIA CD1 AND B377 XOR B3E3 STA HOLDA LIA CD1 CMA AND B377 XOR B3E3 IOR HOLDA SZA JMP T148 FOUND SOME JSB LP? JMP T14 ISZ TP y PATH IS CLEAN JMP TP,I EXIT * * OTA'S DIDN'T DROP DATA OUT OF FIFO * T143 STA ADATA LIA SR IOR D1 OTA SR JSB LP? JMP T14.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS26 "FAULT IN TX HANDSHAKE LOGIC" JSB DCRLF * * NEED TO DUMP ENTIRE STACK HERE * LDA ADATA JSB DO JSB MSG PRINT... DEF MS83 " WAS ON BOTTEM OF STACK..." NOP * * TRY U62-3 AFTER YOU CHANGE TO DUMP STACK * JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * NOTHING LOADED BACK ON TOP OF 77 * T145 LIA SR IOR D2 OTA SR JSB LP? JMP T14.1 JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS27 "FAULT IN RX HANDSHAKE LOGIC" JSB DCRLF JSB MSG PRINT... DEF MS85 "OTA'S DIDN'T RETURN DATA TO STACK." JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS A BIT STUCK HIGH * T146 STA ADATA LIA SR IOR D3 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBER INA LSB=1 (NOT 0 AS IN CPU) STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 CPB M1 RSS JMP T143 TOO MANY BITS FOR DATA ERROR JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS120 "OUTBUS,INBUS BIT" LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS59 "STUCK HIGH." JSB MSG DEF MS128 x JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS A BIT STUCK LOW * T147 STA ADATA LIA SR IOR D4 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBER INA LSB=1 (NOT 0 AS IN CPU) STA HOLDA JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX PATH" JSB DCRLF JSB MSG PRINT... DEF MS120 "OUTBUS,INBUS BIT" LDA HOLDA JSB DD DISPLAY BIT NUMBER JSB MSG PRINT... DEF MS62 "STUCK LOW." JSB MSG DEF MS127 JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? * * TX-BUS-RX PATH HAS TWO BITS STUCK TOGETHER * T148 STA ADATA LIA SR IOR D5 OTA SR JSB LP? JMP T14.1 LDA ADATA JSB BCVT FIND BIT NUMBERS INA INB LSB=1 (NOT 0 AS IN CPU) STA HOLDA STB HOLDB JSB BB CONSOLE? HLT 7B NO. HALT JMP .PM,I JSB CLR15 JSB BELL JSB MSG PRINT... DEF MS28 "FAULT IN TX-BUS-RX DATA PATH." JSB DCRLF JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA JSB DD DISPLAY FIRST BIT NUMBER JSB MSG PRINT... DEF MS15 " AND " LDA HOLDB JSB DD DISPLAY SECOND BIT NUMBER JSB MSG PRINT... DEF MS16 " STUCK TOGETHER." JSB DCRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? JSB MSG PRINT... DEF MS28 FAULT IN TX-BUS-RX DATA PATH JSB MSG PRINT... DEF MS11 "BITS " LDA HOLDA 0JSB DD JSB MSG PRINT... DEF MS15 "AND" LDA HOLDB JSB DD JSB MSG PRINT... DEF MS16 "STUCK TOGETHER" JSB CRLF JSB MSG PRINT... DEF MS84 "SEE TEST 14." JSB CRSC JMP ? SKP * * * T15 - HPIB SUB-SYSTEM TESTS * *(REQUIRES TWO DI CARDS, BOTH WITH THE SYSTEM CONTROLER * SWITCH SET AND CONNECTED BY AN HP-IB CABLE) * * * T15 EQU * CLC 0 LDA U15 JSB SRO SIGNAL TEST 15 CLA STA TMP6 RSS SKIP OVER SAMPLE INSTRUCTION T1502 OTA CD1 SAMPLE INSTRUCTION T1503 LDA T1502 GET SAMPLE INSTRUCTION AND B77 MASK FOR S.C. STA TSC SAVE AS TALKER S.C. CPA SC1 IS IT DI #1? JMP T151 YES, JUMP LDA SC1 NO. GET DI #1 S.C. STA LSC SAVE AS LISTENERS S.C. JMP T154 T151 LDA SC2 GET S.C. OF DI #2 STA LSC SAVE AS LISTENER S.C. T154 LDA TSC CPA SC1 JMP T1504 LDA TL1 MAKE DI #1 BUS ADDRESS THE LISTENERS ADDRESS STA LADD JMP T1506 T1504 LDA TL2 MAKE DI #2 BUS ADDRESS THE LISTENERS ADDRESS STA LADD T1506 LDA LADD AND D7 USE LSB OCTAL DIGIT FOR PP RESPONSE STA PLAD * * TEST IFC,REN LINES * CLC 0 CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA CM6 CONFIGURE LISTENER OTA CD2 STC CD2 SET DATA MODE LDA CM1 IFC,REN OTA CD1 CONFIGURE TALKER STC CD1 SET DATA MODE LDA D1 WAIT 1 MS JSB TMRR,I CLC CD2 SET STATUS MODE LIA CD2 GET STATUS FROM LISTENER STA STAC CPA CM8 OK? JMP T1510 YES, JUMP * * ERROR - BAD STATUS RETURNED * LIA SR SIGNAL ERROR AT SR IOR D1 OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP  JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I IF RUN PRESSED GO TO "?" JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS110 "BAD STATUS RETURNED" LDA CM8 JSB DO OUTPUT EXPECTED STATUS JSB MSG PRINT... DEF MS118 "EXPECTED" LDA STAC JSB DO OUTPUT ACTUAL STATUS JSB MSG PRINT... DEF MS111 "RECIEVED" T1511 JSB MSG PRINT... DEF MS112 "THE DI IN S.C." LDA TSC JSB DO OUTPUT S.C. JSB MSG PRINT... DEF MS113 "IS THE TALKER" JSB MSG PRINT... DEF MS112 "THE DI IN S.C." LDA LSC JSB DO OUTPUT S.C. JSB MSG PRINT... DEF MS114 "IS THE LISTENER" JMP ? EXIT * * CHECK SRQ * CLC 0 T1510 CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA CM2 SRQ,CIC OTA CD1 CONFIGURE TALKER STC CD1 SET DATA MODE LDA CM3 SRQ OTA CD2 CONFIGURE LISTENER STC CD2 SET DATA MODE LDA D1 WAIT 1 MS JSB TMRR,I NOP SFC CD1 DID LISTENERS SQR SET TALKERS FLAG ? JMP T1512 YES, JUMP * * ERROR - SRQ DIDN'T SET TALKERS FLAG * LIA SR SIGNAL ERROR AT SR IOR D2 OTA SR JSB LP? LOOP? JMP T1503 YES , JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS115 "SRQ DIDN'T SET TALKERS FLAG" JMP T1511 GO TELL S.C.'S * * CHECK PARALLEL POLL * CLC 0 T1512 CLF 0 TURN INT. SYS. OFF CLC CD1,C MASTER RESET CLC CD2,C MASTER RESET LDA PPE TELL LISTENER TO ENABLE PP OTA CD2 STC CD2 SET DATA MODE LDA CM4 TE.lLL TALKER TO DO PP OTA CD1 STC CD1 SET DATA MODE LDA D10 WAIT 10 MS. JSB TMRR,I SFC CD1 DID RESPONSE COME ? JMP T1513 YES, JUMP * * ERROR - TIMEOUT WITHOUT PARALLEL POLL RESPONSE * LIA SR IOR D3 SIGNAL ERROR AT SR OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE HLT 7B JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS1.5 "TIME OUT WAITING FOR PP RESPONSE" JMP T1511 TELL S.C.'S * * PARALLEL POLL RETURNED - CHECK ADDRESS * T1513 LIA CD1 GET PP RESPONSE STA TMP3 AND B377 MASK FOR LOWER BYTE JSB BCVT CONVERT TO ONE OCTAL DIGIT STA TMP4 CMA,INA SUBTRACT FROM A CONSTANT OF 7 ADA D7 STA TMP5 SAVE RESULT (WHY 7?..BECAUSE IT WORKS!) CPA PLAD CORRECT? JMP T15AA YES * * ERROR - BAD PARALLEL POLL RESPONSE * NOTE: A RECIEVED 10 MESSAGE ON THE CONSOLE MEANS THAT * AN ILLEGAL PP RESPONSE OFF ALL 0'S WAS RETURNED * LIA SR IOR D4 SIGNAL ERROR AT SR OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS116 "BAD PP RESPONSE" LDA PLAD GET EXPECTED RESPONSE JSB DO OUTPUT IT JSB MSG PRINT... DEF MS118 "EXPECTED" LDA TMP5 GET ACTUAL RESPONSE JSB DO OUTPUT IT JSB MSG PRINT... DEF MS111 "RECIEVED" JMP T1511 GO TELL S.C.'S * * DATA TESTS * * * BUS TRANSFER IN PACKED MODE * T15AA CLC 0 CLEAR ALL SC'S CLF 0 STF 6B STOP DMA STF 7B CLC CD1,C MR CLC CD2,C * * SET UP DM-A CHANNEL 1 TO OUTPUT A DOUBLE PACKED * BUFFER OF ASCII 0-9,A,Z PACKING EACH WORD WITH * THE SAME CHARACTER TWO TIMES * LDA TSC GET TALKERS SC OTA 6B CLC 2B LDA .B6 OTA 2B STC 2B LDA MD36 OTA 2B * * DMA CHANNEL 2 (INPUT) SET UP * LDA LSC OTA 7B CLC 3B LDA .B4 IOR BIT15 OTA 3B STC 3B LDA MD36 OTA 3B * * SET UP TALKER,LISTENER FOR TRANSFER * LDA CM7 OTA CD2 CLC CD2,C STC CD2 * LDA CM9 OTA CD1 CLC CD1,C STC CD1 * STC 7B,C STC 6B,C * LDA D10 JSB TMRR,I * LIA 2B SAVE WORD COUNT STA TMP7 LIA 3B STA TMP8 SZA JMP T15A JMP T15B * * ERROR-DMA STILL NOT COMPLETE AT END OF TIMER * T15A LIA SR IOR D7 OTA SR JSB LP? JMP T1503 JSB BB HLT 7B JMP .?,I JSB CLR15 JSB BELL JSB MSG DEF MS119 JSB MSG DEF MS121 LDA TMP8 JSB DD JSB CRLF JSB MSG DEF MS122 LDA TMP7 JSB DD JSB CRLF CLC CD1 CLC CD2 LIA CD1 STA TMP9 LIA CD2 STA TMP10 JSB MSG DEF MS124 JSB CRLF LDA TSC JSB DO JSB MSG DEF MS125 LDA TMP9 JSB DO JSB CRLF LDA LSC JSB DO JSB MSG DEF MS125 LDA TMP10 JSB DO JSB CRLF JSB MSG DEF MS133 JSB CRLF JMP T1511 * * TRANSFER DONE- COMPARE THE TWO BUFFERS * T15B LDA .B4 STA P1 LDA .B6 STA P2 LDA D1 STA P3 T15C LDA P1,I STA TMP1 LDA P2,I STA TMP2 CPA TMP1 JMP T15D * * ERROR- TWO BUFFERS DON'T COMPARE * LIA SR IOR D8 OTA SR JSB LP? JMP T1503 X JSB BB HLT 7B JMP .?,I JSB CLR15 JSB BELL JSB MSG DEF MS117 LDA P3 JSB DO JSB CRLF LDA TMP2 JSB DO JSB MSG DEF MS118 LDA TMP1 JSB DO JSB MSG DEF MS111 JSB MSG DEF MS133 JSB CRLF JMP T1511 * T15D ISZ P1 ISZ P2 ISZ P3 LDA P3 CPA D36 RSS JMP T15C T1514 CLC 0 CLEAR ALL S.C.'S CONTROL FF'S CLF 0 STF 6B STOP DMA STF 7B CLC CD1,C MASTER RESET CLC CD2,C * * SET UP DMA CHANNEL 1 TO OUTPUT BUFFER * OF ASCII 0-9,A-Z * LDA TSC GET TALKER S.C. OTA 6B OUTPUT DMA WORD 1 CLC 2B LDA .B5 GET BUFFER ADDRESS OTA 2B OUTPUT DMA WORD 2 STC 2B LDA MD36 GET WORD COUNT (DEC -36) OTA 2B OUTPUT DMA WORD 3 * * SET UP DMA CHANNEL 2 TO INPUT TEST BUFFER * INTO A TEMPORARY STORAGE SPACE * LDA LSC GET LISTENERS S.C. OTA 7B OUTPUT DMA WORD 1 CLC 3B LDA .B4 GET BUFFER ADDRESS IOR BIT15 ADD BIT 15 (DMA INPUT) OTA 3B OUTPUT DMA WORD 2 STC 3B LDA MD36 GET WORD COUNT (DEC -36) OTA 3B OUTPUT DMA WORD 3 * * SET TALKER,LISTENER FOR TRANSFER * LDA CM6 (OCT 4) LISTEN OTA CD2 CLC CD2,C MR STC CD2 SET DATA MODE LDA CM5 (OCT 3) T,CIC OTA CD1 CLC CD1,C MR STC CD1 SET DATA MODE STC 7B,C ACTIVATE DMA INPUT STC 6B,C " " OUTPUT LDA D10 WAIT 10 MS. JSB TMRR,I LIA 2B SAVE WORD COUNTS STA TMP7 LIA 3B STA TMP8 SZA 0? JMP T1515 NO, TOOK TO LONG JMP T15.7 YES * * ERROR - DMA STILL NOT COMPLETE AT END OF TIMER * T1515 LIA SR SIGNAL ERROR AT SR < IOR D5 OTA SR JSB LP? LOOP? JMP T1503 YES ,JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS119 "TIME OUT WAITING FOR DMA TO COMPLETE" JSB MSG PRINT... DEF MS121 "INPUT DMA WORD COUNT = " LDA TMP8 JSB DD PRINT WORD COUNT JSB CRLF JSB MSG PRINT... DEF MS122 "OUTPUT DMA CH1 WORD COUNT = " LDA TMP7 JSB DD PRINT WORD COUNT JSB CRLF CLC CD1 SET STATUS MODE CLC CD2 LIA CD1 READ STATUS STA TMP9 LIA CD2 READ STATUS STA TMP10 JSB MSG PRINT... DEF MS124 "SELECT CODE....STATUS = " JSB CRLF LDA TSC JSB DO PRINT TALKERS SC JSB MSG PRINT... DEF MS125 "...." LDA TMP9 JSB DO PRINT TALKERS STATUS JSB CRLF LDA LSC JSB DO PRINT LISTENERS SC JSB MSG PRINT... DEF MS125 LDA TMP10 JSB DO PRINT LISTENERS STATUS JSB CRLF JMP T1511 EXIT * * TRANSFER DONE- COMPARE TWO BUFFERS * T15.7 LDA .B4 ADDRESS OF RECIEVED BUFFER STA P1 LDA .B5 ADDRESS OF EXPECTED BUFFER STA P2 LDA D1 SET COMPARE # TO 1 STA P3 T1517 LDA P1,I GET 1ST BUFFER LOCATION AND B377 SAVE LOWER BYTE STA TMP1 STORE AWAY LDA P2,I GET 1ST BUFFER LOCATION AND B377 SAVE LOWER BYTE STA TMP2 STORE AWAY CPA TMP1 ARE THEY THE SAME? JMP T1518 YES, GO AROUND * * ERROR - BUFFERS DON'T COMPARE * LIA SR SIGNAL ERROR AT SR IOR D6 OTA SR JSB LP? LOOP? JMP T1503 YES, JUMP JSB BB CONSOLE? HLT 7B NO. HALT JMP .?,I JSB CLzR15 JSB BELL NO. RING BELL JSB MSG PRINT... DEF MS117 "BUFFERS DIDN'T COMPARE" LDA P3 SHOW BYTE # JSB DO ON CONSOLE JSB CRLF LDA TMP2 JSB DO OUTPUT NUMBER JSB MSG PRINT... DEF MS118 "EXPECTED" LDA TMP1 JSB DO OUTPUT NUMBER JSB MSG PRINT... DEF MS111 "RECIEVED" JMP T1511 GO TELL S.C.'S T1518 ISZ P1 COMPARE OK! LOOK AT NEXT BYTE ISZ P2 ISZ P3 LDA P3 CPA D36 DONE ? RSS YES, SKIP JMP T1517 NO. GO BACK LDA TMP6 INA STA TMP6 LDA TSC SEE TABLE BELOW CPA SC1 RSS YES, SKIP JMP T1524 NO. CLEAN UP AND PREPARE TO EXIT LDA TMP6 CPA D1 JMP T1520 JMP T1521 T1520 JSB INTIO CHANGE S.C.'S JMP T1503 GO DO TEST AGAIN (NEW TALKER,LISTENER) T1521 NOP JSB LP? LOOP? JMP T1503 YES, GO BACK LDB BIT15 SR BIT 15 SET? JSB SWRC,I RSS YES, LOOP JMP T1522 NO, GO ON JSB BB CONSOLE? NOP JMP T1525 NO JMP T1523 YES T1522 JSB BB CONSOLE? NOP JMP .HLT YES T1523 LDB BIT13 NO. SR BIT 13 SET? JSB SWRC,I JMP T1525 YES, SUPPRESS PRINT OUT JSB BELL RING BELL JSB BELL " JSB MSG PRINT... DEF MS126 "T15 PASSED !!" JSB CRLF DO A CRLF T1525 ISZ TP NO, GO TO NEXT TEST JMP TP,I T1524 LDA TMP6 CPA D1 JMP T1520 JMP T1521 * * * TSC = SC1 IF : * * 1). 1ST PASS ON DI #1 FORCE T15 * 2). 2ND PASS ON NORMAL TEST PROGRESSION * * TSC = SC2 IF : * * 1). 1ST PASS ON NORMAL TEST PROGRESSION * 2). 2ND PASS ON DI #1 FORCE T15 * * .B6 DEF B6E1 B6E1 ASC 18,00112233445566778899AABBCCDDEEFFGGHH ASC 18,IIJJKKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ B6E2 DEF * SKP ************************** ************************** ****OCTAL****ASCII********(CONVERSION CHART) * * 60 0 * 61 1 * 62 2 * 63 3 * 64 4 * 65 5 * 66 6 * 67 7 * 70 8 * 71 9 * * 101 A * 102 B * 103 C * 104 D * 105 E * 106 F * 107 G * 110 H * 111 I * 112 J * 113 K * 114 L * 115 M * 116 N * 117 O * 120 P * 121 Q * 122 R * 123 S * 124 T * 125 U * 126 V * 127 W * 130 X * 131 Y * 132 Z * * ************************** ************************** ************************** SKP * * START - STARTUP ROUTINE. ENTERED FROM CONFIGURATOR THROUGH 100,I. * START NOP CLA A=0 STA TL1 SET BUS ADDRESS #1 TO 0 STA TL2 SET BUS ADDRESS #2 TO 0 LDA TRAPI CLC 3B LDB B3 GET FIRST TRAP CELL LOCATION. ST0 STA B,I PUT A HALT IN THE TRAP CELL. CPB B77 STORED LAST TRAP CELL? JMP ST0.0 YES, GO TO TESTING. INB NO, UPDATE TRAP CELL POINTER. INA JMP ST0 GO STORE THE NEXT TRAP CELL ST0.0 LDA SC1 GET FIRST SC CPA B77 FIRST EXECUTION SINCE LOADING OF PROGRAM ? JMP ST10 YES, GO AROUND LDA SC1 NO. STA TMP1 LDA SC2 SAVE OLD SC1,SC2 STA TMP2 JMP ST0.3 SKIP SAMPLE INSTRUCTION * * ST0.1 THROUGH ST10 CHECKS TO SEE IF THE PROGRAM IS BEING * EXECUTED FOR THE FIRST TIME. IF YES, IT GOES AROUND. IF NO, * IT DETERMINES WHICH OF THE FOUR MODES THE CODE WAS * PRE-CONFIGURED FOR AND THEN RE-INITIALIZES THE CODE AS IT * WOULD BE IF THE CODE WAS NEWLY LOADED. IF SC1 AND SC2 WERE * FORCED TO THE SAME SELECT CODE ON A PRIOR EXECUTION, THE * PROGRAM MUST BE RELOADED. * ST0.1 OTA CD1 SAMPLE INSTRUCTION OTA CD2 " " ST0.3 LDA ST0.1 GET SAMPLE INSTRUCTION AND B77 SAVE SC CPA TMP1 IS CD1 SC1 ? JMP ST0.4 YES, JUMP LDA B52 NO STA TMP3 MAKE TMP3 = 52B LDA B51 STA TMP4 MAKE TMP4 = 51B JMP ST0.6 GO AROUND ST0.4 LDA B51 STA TMP3 MAKE TMP3 = 51B LDA B52 STA TMP4 MAKE TMP4 = 52B ST0.6 LDB .CDE GET ADDRESS OF BEGINNING OF CODE STB P1 SAVE IT ST0.5 LDA P1,I LOAD FIRST WORD OF CODE AND IOMSK MASK FOR I,O INSTRUCTIONS CPA IOINS I,O ? RSS YES, SKIP JMP ST14 NO, LEAVE THIS WORD ALONE LDA P1,I GET WORD AGAIN AND B77 SAVE ONLY SC LDB A PUT SC IN B (DEFAULT IS ORIGINAL SC) CPA B52 52 ? JMP ST14 YES, LEAVE THIS WORD ALONE CPA SC1 SC1 ? LDB TMP3 YES , MAKE TMP3 NEW SC CPA SC2 SC2 ? LDB TMP4 YES, MAKE TMP4 NEW SC LDA P1,I GET WORD AGAIN AND NB77 STRIP OFF OLD SC IOR B ADD NEW ONE STA P1,I PUT THE WORD BACK ST14 ISZ P1 BUMP LOCATION POINTER LDB P1 CPB .ECDE AT END OF CODE YET ? JMP ST10 YES, GO ON JMP ST0.5 NO, GO BACK ST10 NOP JSB BB CONSOLE? NOP NO JMP ST55 LDB BIT13 SR BIT 13 ON? JSB SWRC,I JMP ST149 YES, SUPPRESS OPENING MESSAGE JSB MSG PRINT.. DEF MS2 "12784 DIAGNOSTIC" ST149 JSB FCDS FIND THE DI CARDS AND THEIR SELECT CODES ST15 JSB MSG PRINT... DEF MS29 "IS THE FIRST CARD IN SELECT CODE " LDA SC1 LOAD THE S.C. WHERE IT$ WAS FOUND JSB DO PRINT THE NUMBER JSB MSG PRINT.. DEF MS35 "? " JSB MSG DEF MS291 JSB CON GET CONSOLE INPUT JMP ST20 # INPUT JMP ST21 LETTER INPUT ST18 JSB MSG ? INPUT DEF MS32 PRINT.. "ENTER S.C." JSB DCRLF JMP ST15 GO ASK AGAIN ST20 STA SC1 SCI IS THE S.C. OF DI #1 ST21 CPA CHARN DID OPERATOR ENTER A "NO"? JMP ST18 YES, JUMP JSB CRLF NO ST22 JSB MSG PRINT.. DEF MS30 "BUS ADDRESS" JSB CON GET CONSOLE INPUT JMP ST25 # ENTERED JSB GTMAD BAD INPUT JSB CRLF ? ENTERED JSB MSG PRINT... DEF MS33 "EXPLAIN BUS ADDRESS" JSB DCRLF JMP ST22 ST25 STA TMP13 ADA MO10 SSA JMP ST251 JSB GTMAD JSB DCRLF JMP ST22 ST251 LDA TMP13 STA TL1 JSB CRLF LDA SC2 WHERE FCDS FOUND DI #2 CPA B77 WAS VALID S.C. FOUND? JMP ST265 NO ST26 JSB MSG YES...PRINT.. DEF MS31 "IS SECOND CARD IN SELECT CODE " LDA SC2 GET # AGAIN JSB DO PRINT IT OUT JSB MSG PRINT... DEF MS35 "? " JSB MSG DEF MS311 JSB CON GET OPERATOR INPUT JMP ST30 # INPUT JMP ST262 LETTER INPUT ST261 JSB MSG PRINT... DEF MS34 "NEED TWO CARDS" JSB DCRLF JMP ST26 ST262 CPA CHARN N? JMP ST261 YES JMP ST45 ST265 JSB MSG PRINT... DEF MS55 "NO SECOND CARD?" JSB CON GET OPERATOR INPUT JMP ST30 # INPUT JMP ST51 LETTER INPUT JSB CRLF ? INPUT JSB MSG PRINT... DEF MS34 "NEED TWO CARDS" JSB DCRLF JMP ST265 ST30 STA SC2 SC2 IS S.C. OF DI #2 CPA B77 JMP ST51 CPA SC1 RSS  JMP ST31 JSB GTMAD PRINT "BAD INPUT" JMP ST149 ST31 JSB CRLF ST45 JSB CRLF JSB MSG PRINT... DEF MS30 "BUS ADDRESS" JSB CON GET OPERATOR INPUT JMP ST50 # INPUT JSB GTMAD BAD INPUT JSB CRLF ? INPUT JSB MSG PRINT... DEF MS33 "EXPLAIN BUS ADDRESS" JSB DCRLF JMP ST45 ST50 STA TMP13 ADA MO10 SSA JMP ST501 JSB GTMAD JMP ST45 ST501 LDA TMP13 STA TL2 SAVE BUS ADDRESS OF DI #2 ST51 JSB INTIO * * DETERMINE IF MACHINE IS MX OR E * LDB D1 B=1 LDA CPTO A=COMPUTER TYPE AND MX.E IS THIS A 21MX OR 21MX-E ? SSA,RSS SKIP IF ONE OF THE TWO JMP ST53 NEITHER ONE! ,JUMP AND EMSK SZA MX OR E? JMP ST52 E ! CLA MX ! STA EFLG *** EFLG = JMP ST54 *** 0 FOR MX ST52 LDA D1 *** 1 FOR MX-E STA EFLG *** -1 FOR 2114A TO 2100S JMP ST54 ST53 LDA M1 STA EFLG ST54 LDA SC1 STA SC JSB BB CONSOLE? NOP NO JMP ? JSB CRLF JSB CRLF LDB BIT13 JSB SWRC,I JMP ? JSB MSG DISPLAY PROGRAM HEADER DEF MS38 JSB DCRLF JSB MSG DEF MS37 DISPLAY OPTIONS JMP ? * * NON - CONSOLE MODE * ST55 NOP HLT 1B ENTER DI #1 SC, PRESS PRESET, RUN LIA SR AND B77 STA SC1 HLT 2B ENTER DI #1 BUS ADDRESS, PRESS PRESET, RUN LIA SR AND B77 STA TL1 ST551 HLT 3B ENTER DI #2 SC OR "0", PRESS PRESET,RUN LIA SR AND B77 CPA SC1 JMP ST551 SZA JMP ST56 LDA B77 STA SC2 STA TL2 HLT 5B ENTER PROGRAM OPTIONS, PRESS PRESET,RUN JMP ST51 ST56 STA SC2 HLT 4B I ENTER DI #2 BUS ADDRESS, PRESS PRESET,RUN LIA SR AND B77 STA TL2 HLT 5B ENTER PROGRAM OPTONS, PRESS PRESET,RUN JMP ST51 ECDE EQU * SKP * *** MESSAGES *** * MS2 OCT 6412 OCT 6412 OCT 6412 OCT 6412 ASC 25, *** HPIB 12821A DIAGNOSTIC *** OCT 6412 OCT 6412 OCT 6412 ASC 10,INSTRUCTIONS:_ OCT 6412 OCT 6412 ASC 25, 1. ENTER ? WHEN YOU NEED MORE INFORMATION._ OCT 6412 OCT 6412 ASC 27, 2. INDICATE OCTAL VALUES BY A FINAL B (E.G. 13B). OCT 6412 OCT 6412 ASC 27, 3. SET SR BIT 15 ON TO LOOP ON DIAGNOSTIC, OCT 6412 ASC 27, TOGGLE ON,OFF TO BREAK OUT OF A SINGLE TEST OCT 6412 ASC 27, LOOP (CONVERSATIONAL-MODE). OCT 6412 OCT 6412 ASC 27, 4. SET SR BIT 14 TO SUPPRESS PRESET TEST OCT 6412 OCT 6412 ASC 27, 5. SET SR BIT 13 T0 PRINT ONLY ERROR MESSAGES OCT 6412 ASC 27, (EXCEPT CONFIGURATION MESSAGES). OCT 6412 OCT 6412 ASC 27, 6. SET SR BIT 12 TO DELAY 1 SECOND BETWEEN TESTS OCT 6412 OCT 6412 ASC 1,$ MS7 ASC 12,FAULT IN FLAG LOGIC:$ MS7.5 ASC 12, DOESN'T CLEAR FLAG.$ MS8 ASC 09, SEE TEST 1.$ MS8.5 ASC 12, DOESN'T SET THE FLAG. $ MS7.6 ASC 09, SEE TEST 0.$ MS9 ASC 09, SEE TEST 2.$ MS9.5 ASC 12, DOESN'T CLEAR THE FLAG$ MS10 ASC 20, IEN DOESN'T HOLD OFF INTERRUPTS$ MS102 ASC 18,FAULT IN INTERRUPT CONTROL LOGIC:$ MS103 ASC 10, SEE TEST 4.$ MS105 ASC 17,FAULT IN LSC,MSC DECODE LOGIC:$ MS106 ASC 10, SEE TEST 5.$ MS107 ASC 10, SEE TEST 6.$ MS108 ASC 10, SEE TEST 7.$ MS11 ASC 08, BITS $ MS12 ASC 18, FLAG CLEARS IN RESPONSE TO $ MS13 ASC 25, CARD INTERRUPTS WITHOUT BEING ISSUED STC.$ MS14 ASC 14, CARD CAN'T INTERRUPT $ MS15 ASC 3, AND $ MS16 ASC 10, STUCK TOGETHER.$ MS17 ASC 9, SEE TEST 9.$ MS18 ASC 18,FAULT IN CONTROL,STATUS LOGIC:$ MS19 ASC 06, EXPECTED $ MS20 ASC 06, RETURNED $ MS22 ASC 19, CARD STATUS INCORRECT AFTER $ MS23 ASC 13, SENT AS CONTROL WORD. $ MS26 ASC 16,FAULT IN TX HANDSHAKE LOGIC: $ MS27 ASC 16,FAULT IN RX HANDSHAKE LOGIC:$ MS28 ASC 16,FAULT IN TX-BUS-RX DATA PATH:$ MS29 ASC 20,IS THE FIRST CARD IN SELECT CODE $ MS291 OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,OTHERWISE, INPUT THE CORRECT SELECT CODE.. $ MS30 ASC 28,INPUT THE LAST OCTAL DIGIT OF THE BUS OCT 6412 ASC 28,ADDRESS (0-7 DERIVED FROM S1-S3) ... $ MS31 ASC 19,IS THE SECOND CARD IN SELECT CODE $ MS311 OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,IF NO SECOND CARD, INPUT 77B OCT 6412 ASC 28,IF DIAGNOSTIC GUESSED INCORRECTLY AND THERE IS OCT 6412 ASC 28,A SECOND CARD, ENTER CORRECT SELECT CODE... $ MS32 OCT 6412 ASC 22,IF PROGRAM GUESSED CORRECTLY ENTER RETURN. OCT 6412 ASC 20,IF NOT, ENTER THE CORRECT SELECT CODE.$ MS33 OCT 6412 ASC 28,THE BUS ADDRESS IS DETERMINED BY SWITCHES S1-S5 OCT 6412 ASC 28,OF U13 (OPEN=1, S1=LSB)..HOWEVER, IN RESPONSE TO OCT 6412 ASC 28,THE QUESTION BELOW, INPUT ONLY THE LAST OCTAL OCT 6412 ASC 28,DIGIT CORRESPONDING TO S1-S3. (I.E. 0-7) $ MS34 ASC 22,YOU NEED TWO CARDS TO RUN THE HIGH SPEED _ OCT 6412 ASC 05,BUS TEST.$ MS35 ASC 2,? $ MS36 ASC 9,...BAD INPUT...$ MS37 OCT 6412 ASC 25, CR - CARRIAGE RETURN- (DEFAULT) EXECUTE DIAG. OCT 6412 ASC 25, FROM TEST 0. OCT 6412 OCT 6412 ASC 20, N - BEGIN EXECUTION FROM TEST N OCT 6412 OCT 6412 ASC 23, LN - LOOP ON TEST N OCT 6412 ASC 25, (TOGGLE SW BIT 15 TO REGAIN CONTROL) OCT 6412 OCT 6412 ASC 25, E - EXIT PROGRAM WITH HLT774 OCT 6412 ASC 25, (PRESS RUN TO RE-ENTER PROGRAM) OCT 6412 OCT 6412 ASC 25, F - FORCE TESTING TO SECOND BOARD OCT 6412 OCT 6412 ASC 25, G - GO BACK AND RETEST BOARD ONE OCT 6412 OCT 6412 ASC 25, R - GO BACK TO RECONFIGURATION SECTION OCT 6412 OCT 6412 ASC 1,$ MS38 ASC 10,PROGRAM OPTIONS: $ MS39 ASC 25,CARD FLAG DOESN'T SET AFTER CARD MADE A LISTENER/ ASC 12,WITH DATA IN THE FIFO.$ * MS42 ASC 5, RECEIVED$ * MS43 ASC 25, DMA WAS CONFIGURED TO SEND 20 WORDS/ OCT 6412 ASC 25, TO THE INTERFACE. AFTER INITIATING/ OCT 6412 ASC 25, THE TRANSFER THE DMA WORD COUNT WAS/ OCT 6412 ASC 25, READ AND FOUND TO BE $ MS44 OCT 6412 ASC 20, AT THE END OF THE DMA TRANSFER THE/ OCT 6412 ASC 25, STAUS RECIEVED FROM THE CARD WAS INCORRECT./ OCT 6412 ASC 25, EXPECTED - RECIEVED =$ OCT 6412 OCT 6412 MS45 ASC 18,FAULT IN DMA OUTPUT TRANSFER:$ * MS49 ASC 15,FAULT IN DMA INPUT TRANSFER:$ * ASC 09, THE BUS, WORD $ MS55 ASC 28,NO SECOND CARD WAS FOUND. IS THIS CORRECT? OCT 6412 ASC 28,IF YES, INPUT CARRIAGE RETURN OCT 6412 ASC 28,IF NO, INPUT SELECT CODE OF SECOND CARD... $ MS56 ASC 15,FAULT IN DMA CONTROL LOGIC:$ MS58 ASC 06, BIT $ MS59 ASC 07, STUCK HIGH.$ MS60 ASC 10, SEE TEST 9.$ MS61 ASC 17,FAULT IN CPU-FIFO-CPU DATA PATH:$ MS62 ASC 07, STUCK LOW.$ MS65 ASC 10, SEE TEST 13.$ MS67 ASC 25, DMA HUNG UP WAITING FOR BOARD TO SEND DATA./ ASC 10, WORD COUNT = $ MS66 ASC 25, DMA HUNG UP WAITING FOR BOARD TO ACCEPT DATA./ ASC 10, WORD COUNT = $ MS70 ASC 1,B$ MS68 ASC 10, SEE TEST 11.$ MS69 OCT 7 OCT 6412 OCT 6412 ASC 1,$$ MS80 ASC 15,FAULT IN FIFO CONTROL LOGIC.$ MS81 ASC 10, SEE TEST 8.$ MS82 ASC 10, SEE TEST 12.$ yMS83 ASC 25, WAS ON THE BOTTEM OF THE STACK AFTER 8 OTA'S IN _ OCT 6412 ASC 27, TEST MODE. THE STACK SHOULD HAVE DROPPED TO 77B,_ OCT 6412 ASC 11, AS SHOWN BELOW: OCT 6412 OCT 6412 ASC 25, BEFORE ROTATE AFTER ROTATE OCT 6412 OCT 6412 ASC 25, 077 017 OCT 6412 ASC 25, 017 360 OCT 6412 ASC 25, 360 063 OCT 6412 ASC 25, 063 314 OCT 6412 ASC 25, 314 125 OCT 6412 ASC 25, 125 252 OCT 6412 ASC 25, 252 377 OCT 6412 ASC 25, 377 000 OCT 6412 ASC 25, 000 077 OCT 6412 OCT 6412 ASC 1,$$ MS84 ASC 10, SEE TEST 14.$ MS85 ASC 25, NO DATA RETURNED TO STACK IN TEST MODE $ MS87 ASC 15,FAULT IN BASIC FIFO CIRCUIT:$ MS88 ASC 25, 125252 WAS DROPPED INTO THE FIFO. THE CARD OCT 6412 ASC 25, WAS THEN TURNED INTO A LISTENER AND $ MS89 ASC 05, FOUND AT_ OCT 6412 ASC 15, THE BOTTEM OF THE FIFO.$ MS90 ASC 25, CARD INTERRUPTS THROUGH SELECT CODE 0.$ MS94 OCT 57 MS97 OCT 6412 ASC 25, PRESS HALT,PRESET,RUN WITHIN 10 SECONDS ! OCT 6412 ASC 1,$ MS98 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T SET DI FLAG** OCT 6412 ASC 1,$ MS99 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T CLEAR DI CONTROL FF** OCT 6412 ASC 1,$ MS100 OCT 6412 ASC 25,(TEST 10) **PRESET DIDN'T CLEAR FIFO** OCT 6412 ASC 1,$ MS101 OCT 6412 ASC 27,(TEST 3) **FLAG CLEAR DOESN'T HOLD OFF INTERRUPTS** OCT 6412 ASC 1,$ MS110 OCT 6412  ASC 25,(TEST 15)..BAD STATUS RETURNED FROM LISTENER DI OCT 6412 ASC 25,(TWO DI'S SHOULD BE CONNECTED BY AN HP-IB CABLE) OCT 6412 ASC 1,$ MS118 ASC 25, EXPECTED OCT 6412 ASC 1,$ MS111 ASC 25, RECEIVED OCT 6412 ASC 1,$ MS112 OCT 6412 ASC 25,THE DI IN SELECT CODE $ MS113 OCT 6412 ASC 25,WAS THE TALKER OCT 6412 ASC 1,$ MS114 OCT 6412 ASC 25,WAS THE LISTENER OCT 6412 ASC 1,$ MS115 OCT 6412 ASC 25,(TEST 15)...SRQ DIDN'T SET THE TALKERS FLAG OCT 6412 ASC 1,$ MS1.5 OCT 6412 ASC 28,(TEST 15)..LISTENER FAILED TO RESPOND TO PARALLEL POLL OCT 6412 ASC 1,$ MS116 OCT 6412 ASC 28,(TEST 15)..LISTENER RETURNED DIFFERENT BUS ADDRESS OCT 6412 ASC 28, THEN EXPECTED DURING A PARALLEL POLL OCT 6412 ASC 1,$ MS117 OCT 6412 ASC 28,(TEST 15)..TEST BUFFER TRANSFER NOT SUCESSFUL.. OCT 6412 ASC 28, ASCII 0-9,A-Z SENT FROM TALKER TO OCT 6412 ASC 28, LISTENER OVER HP-IB. (36 CHARACTERS) OCT 6412 OCT 6412 ASC 28,THE SENT,RECIEVED CHARACTERS DID NOT COMPARE OCT 6412 ASC 28,ON COMPARE NUMBER..$ MS119 OCT 6412 ASC 25,(TEST 15)..TIME OUT WAITING FOR DMA TO COMPLETE OCT 6412 ASC 1,$ MS120 ASC 20, OUTBUS,INBUS BIT $ MS121 ASC 28,INPUT DMA CH2 WORD COUNT = $ MS122 ASC 28,OUTPUT DMA CH1 WORD COUNT = $ MS124 ASC 28,SELECT CODE....STATUS = $ MS125 ASC 10,.... $ MS126 ASC 28,(T15)..DI TO HP-IB TO DI TEST PASSES ! $ MS127 OCT 6412 ASC 28, IN A TEST PATTERN OF "377B"$ MS128 OCT 6412 ASC 28, IN A TEST PATTERN OF "000"$ MS129 OCT 6412 ASC 28, THE CURRENTLY ACTIVE SELECT CODE IS...$ MS130 OCT 6412 ASC 28, NO SECOND DI CONFIGURED! $ MS131 OCT 6412 ASC 28, IMPROPER TEST SELECTION $ MS132 OCT 6412 ASC 28, TESTING COMPLETED ON SELECT CODE $ MS133 ASx20,C 9, (PACKED-MODE) $ FWAA EQU * END Ճ2 7L 12824-18001 1926 S C4622 &VLIB V.I.S. S/W LIBRARY             H0146 ASMB,L HED EMA INTERFACE TO "VADD". NAM WADD,7 12824-16001 REV.1926 790403 ENT WADD EXT VADD,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WADD NOP JSB .WCOM DEF VADD+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "VSUB". NAM WSUB,7 12824-16001 REV.1926 790403 ENT WSUB EXT VSUB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSUB NOP JSB .WCOM DEF VSUB+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END |!ASMB,L HED EMA INTERFACE TO "VMPY". NAM WMPY,7 12824-16001 REV.1926 790403 ENT WMPY EXT VMPY,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMPY NOP JSB .WCOM DEF VMPY+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ^ASMB,L HED EMA INTERFACE TO "VDIV". NAM WDIV,7 12824-16001 REV.1926 790403 ENT WDIV EXT VDIV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WDIV NOP JSB .WCOM DEF VDIV+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END 4?ASMB,L HED EMA INTERFACE TO "VSAD". NAM WSAD,7 12824-16001 REV.1926 790403 ENT WSAD EXT VSAD,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSAD NOP JSB .WCOM DEF VSAD+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "VSSB". NAM WSSB,7 12824-16001 REV.1926 790403 ENT WSSB EXT VSSB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSSB NOP JSB .WCOM DEF VSSB+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END %ASMB,L HED EMA INTERFACE TO "VSMY". NAM WSMY,7 12824-16001 REV.1926 790403 ENT WSMY EXT VSMY,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSMY NOP JSB .WCOM DEF VSMY+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END 5ASMB,L HED EMA INTERFACE TO "VSDV". NAM WSDV,7 12824-16001 REV.1926 790403 ENT WSDV EXT VSDV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSDV NOP JSB .WCOM DEF VSDV+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END #ASMB,L HED EMA INTERFACE TO "VPIV". NAM WPIV,7 12824-16001 REV.1926 790403 ENT WPIV EXT VPIV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WPIV NOP JSB .WCOM DEF VPIV+0 NON-EMA ROUTINE. BYT 1,3 1 SCALAR, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "VABS". NAM WABS,7 12824-16001 REV.1926 790403 ENT WABS EXT VABS,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WABS NOP JSB .WCOM DEF VABS+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "VMOV". NAM WMOV,7 12824-16001 REV.1926 790403 ENT WMOV EXT VMOV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMOV NOP JSB .WCOM DEF VMOV+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END VuASMB,L HED EMA INTERFACE TO "VSWP". NAM WSWP,7 12824-16001 REV.1926 790403 ENT WSWP EXT VSWP,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSWP NOP JSB .WCOM DEF VSWP+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END uASMB,L HED EMA INTERFACE TO "VMAX". NAM WMAX,7 12824-16001 REV.1926 790403 ENT WMAX EXT VMAX,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMAX NOP JSB .WCOM DEF VMAX+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VMIN". NAM WMIN,7 12824-16001 REV.1926 790403 ENT WMIN EXT VMIN,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMIN NOP JSB .WCOM DEF VMIN+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VMAB". NAM WMAB,7 12824-16001 REV.1926 790403 ENT WMAB EXT VMAB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMAB NOP JSB .WCOM DEF VMAB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VMIB". NAM WMIB,7 12824-16001 REV.1926 790403 ENT WMIB EXT VMIB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMIB NOP JSB .WCOM DEF VMIB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VSUM". NAM WSUM,7 12824-16001 REV.1926 790403 ENT WSUM EXT VSUM,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSUM NOP JSB .WCOM DEF VSUM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VNRM". NAM WNRM,7 12824-16001 REV.1926 790403 ENT WNRM EXT VNRM,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WNRM NOP JSB .WCOM DEF VNRM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "VDOT". NAM WDOT,7 12824-16001 REV.1926 790403 ENT WDOT EXT VDOT,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * WDOT NOP JSB .WCOM DEF VDOT+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END ASMB,L HED "VWMOV" - SINGLE PRECISION VECTOR MOVE TO EMA. NAM VWMOV,7 12824-16001 REV.1926 790403 * ENT VWMOV EXT VMOV,.WCOM * A EQU 0 B EQU 1 * * FOR DETAILS, SEE ".WCOM" . * VWMOV NOP JSB .WCOM DEF VMOV+0 NON-EMA ROUTINE. BYT 2,1 2 SCALARS, 1 VECTOR. ABS 511+20000B 2 WORDS / ELEMENT, FLAG = BREAK. BREAK NOP LDB BREAK,I GET IX1 INB LDA B,I LDA A,I A = IX1 ADB =D3 GET ADDR N. LDB B,I MPY B,I A = IX1 * N ALS * 2 WORDS / ELEMENT. LDB BREAK,I GET ADDRESS V1. ADA B,I INCREMENT V1. STA B,I ISZ BREAK EXIT. ISZ BREAK JMP BREAK,I END W#ASMB,L HED "WVMOV" - SINGLE PRECISION VECTOR MOVE FROM EMA. NAM WVMOV,7 12824-16001 REV.1926 790403 * ENT WVMOV EXT VMOV,.WCOM,.ENTR * A EQU 0 B EQU 1 * * FOR DETAILS SEE ".WCOM" . SPC 3 * SWAP V1 & V2 BEFORE INTERFACE. * V1 DEF *-* IX1 DEF *-* V2 DEF *-* IX2 DEF *-* N DEF *-* WVMOV NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1 JSB MOVE1 CALL INTERFACE BUT SWAP V1 & V2. DEF *+5+1 DEF V2,I DEF IX2,I DEF V1,I DEF IX1,I DEF N,I JMP WVMOV,I EXIT. * * INTERFACE CALL. * MOVE1 NOP JSB .WCOM DEF MOVE2 (GO THRU SECOND SWAP) BYT 2,1 ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * * SWAP V1 & V2 BETWEEN INTERFACE & MICROCODE. * V1A DEF *-* IX1A DEF *-* V2A DEF *-* IX2A DEF *-* NA DEF *-* MOVE2 NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1A JSB VMOV CALL MICROCODE WITH SWAPPED V1 & V2. DEF *+5+1 DEF V2A,I DEF IX2A,I DEF V1A,I DEF IX1A,I DEF NA,I * * UPDATE NON-EMA ADDRESS. * LDA IX1A,I COMPUTE OFFSET. MPY NA,I ALS ADA V1A ADD BASE. LDB MOVE2 FIND ADDRESS IN CALLING SEQ. ADB =D-5 STA B,I STORE NEW ADDR. JMP MOVE2,I EXIT. END [ASMB,L HED EMA INTERFACE TO "DVADD". NAM DWADD,7 12824-16001 REV.1926 790403 ENT DWADD EXT DVADD,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWADD NOP JSB .WCOM DEF DVADD+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END BtASMB,L HED EMA INTERFACE TO "DVSUB". NAM DWSUB,7 12824-16001 REV.1926 790403 ENT DWSUB EXT DVSUB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSUB NOP JSB .WCOM DEF DVSUB+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVMPY". NAM DWMPY,7 12824-16001 REV.1926 790403 ENT DWMPY EXT DVMPY,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMPY NOP JSB .WCOM DEF DVMPY+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVDIV". NAM DWDIV,7 12824-16001 REV.1926 790403 ENT DWDIV EXT DVDIV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWDIV NOP JSB .WCOM DEF DVDIV+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVSAD". NAM DWSAD,7 12824-16001 REV.1926 790403 ENT DWSAD EXT DVSAD,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSAD NOP JSB .WCOM DEF DVSAD+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END cASMB,L HED EMA INTERFACE TO "DVSSB". NAM DWSSB,7 12824-16001 REV.1926 790403 ENT DWSSB EXT DVSSB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSSB NOP JSB .WCOM DEF DVSSB+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END XXASMB,L HED EMA INTERFACE TO "DVSMY". NAM DWSMY,7 12824-16001 REV.1926 790403 ENT DWSMY EXT DVSMY,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSMY NOP JSB .WCOM DEF DVSMY+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END 4ASMB,L HED EMA INTERFACE TO "DVSDV". NAM DWSDV,7 12824-16001 REV.1926 790403 ENT DWSDV EXT DVSDV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSDV NOP JSB .WCOM DEF DVSDV+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVPIV". NAM DWPIV,7 12824-16001 REV.1926 790403 ENT DWPIV EXT DVPIV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWPIV NOP JSB .WCOM DEF DVPIV+0 NON-EMA ROUTINE. BYT 1,3 1 SCALAR, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVABS". NAM DWABS,7 12824-16001 REV.1926 790403 ENT DWABS EXT DVABS,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWABS NOP JSB .WCOM DEF DVABS+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END hASMB,L HED EMA INTERFACE TO "DVMOV". NAM DWMOV,7 12824-16001 REV.1926 790403 ENT DWMOV EXT DVMOV,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMOV NOP JSB .WCOM DEF DVMOV+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVSWP". NAM DWSWP,7 12824-16001 REV.1926 790403 ENT DWSWP EXT DVSWP,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSWP NOP JSB .WCOM DEF DVSWP+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVMAX". NAM DWMAX,7 12824-16001 REV.1926 790403 ENT DWMAX EXT DVMAX,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMAX NOP JSB .WCOM DEF DVMAX+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVMIN". NAM DWMIN,7 12824-16001 REV.1926 790403 ENT DWMIN EXT DVMIN,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMIN NOP JSB .WCOM DEF DVMIN+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END QASMB,L HED EMA INTERFACE TO "DVMAB". NAM DWMAB,7 12824-16001 REV.1926 790403 ENT DWMAB EXT DVMAB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMAB NOP JSB .WCOM DEF DVMAB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVMIB". NAM DWMIB,7 12824-16001 REV.1926 790403 ENT DWMIB EXT DVMIB,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMIB NOP JSB .WCOM DEF DVMIB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END ASMB,L HED EMA INTERFACE TO "DVSUM". NAM DWSUM,7 12824-16001 REV.1926 790403 ENT DWSUM EXT DVSUM,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSUM NOP JSB .WCOM DEF DVSUM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END n^ASMB,L HED EMA INTERFACE TO "DVNRM". NAM DWNRM,7 12824-16001 REV.1926 790403 ENT DWNRM EXT DVNRM,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWNRM NOP JSB .WCOM DEF DVNRM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END PLASMB,L HED EMA INTERFACE TO "DVDOT". NAM DWDOT,7 12824-16001 REV.1926 790403 ENT DWDOT EXT DVDOT,.WCOM * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWDOT NOP JSB .WCOM DEF DVDOT+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END eHASMB,L HED "DVWMV" - DOUBLE PRECISION VECTOR MOVE TO EMA. NAM DVWMV,7 12824-16001 REV.1926 790403 * ENT DVWMV EXT DVMOV,.WCOM * A EQU 0 B EQU 1 * * FOR DETAILS, SEE ".WCOM" . * DVWMV NOP JSB .WCOM DEF DVMOV+0 NON-EMA ROUTINE. BYT 2,1 2 SCALARS, 1 VECTOR. ABS 255+20000B 4 WORDS / ELEMENT, FLAG = BREAK. BREAK NOP LDB BREAK,I GET IX1 INB LDA B,I LDA A,I A = IX1 ADB =D3 GET ADDR N. LDB B,I MPY B,I A = IX1 * N ALS,ALS * 4 WORDS / ELEMENT. LDB BREAK,I GET ADDRESS V1. ADA B,I INCREMENT V1. STA B,I ISZ BREAK EXIT. ISZ BREAK JMP BREAK,I END ASMB,L HED "DWVMV" - SINGLE PRECISION VECTOR MOVE FROM EMA. NAM DWVMV,7 12824-16001 REV.1926 790403 * ENT DWVMV EXT DVMOV,.WCOM,.ENTR * A EQU 0 B EQU 1 * * FOR DETAILS SEE ".WCOM" . SPC 3 * SWAP V1 & V2 BEFORE INTERFACE. * V1 DEF *-* IX1 DEF *-* V2 DEF *-* IX2 DEF *-* N DEF *-* DWVMV NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1 JSB MOVE1 CALL INTERFACE BUT SWAP V1 & V2. DEF *+5+1 DEF V2,I DEF IX2,I DEF V1,I DEF IX1,I DEF N,I JMP DWVMV,I EXIT. * * INTERFACE CALL. * MOVE1 NOP JSB .WCOM DEF MOVE2 (GO THRU SECOND SWAP) BYT 2,1 ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * * SWAP V1 & V2 BETWEEN INTERFACE & MICROCODE. * V1A DEF *-* IX1A DEF *-* V2A DEF *-* IX2A DEF *-* NA DEF *-* MOVE2 NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1A JSB DVMOV CALL MICROCODE WITH SWAPPED V1 & V2. DEF *+5+1 DEF V2A,I DEF IX2A,I DEF V1A,I DEF IX1A,I DEF NA,I * * UPDATE NON-EMA ADDRESS. * LDA IX1A,I COMPUTE OFFSET. MPY NA,I ALS,ALS ADA V1A ADD BASE. LDB MOVE2 FIND ADDRESS IN CALLING SEQ. ADB =D-5 STA B,I STORE NEW ADDR. JMP MOVE2,I EXIT. END #ASMB,L,C HED ".WCOM" - VECTOR EMA INTERFACE. NAM .WCOM,7 12824-16001 REV.1926 790403 * ENT .WCOM EXT .VSET,.ESEG,ERR0 A EQU 0 B EQU 1 SUP * * ".WCOM" interfaces FORTRAN programs to the Vector Instruction * Set using vectors which reside in EMA. For each VIS routine * which is to be duplicated for EMA vectors, a unique interface * routine is called. The call to that interface has the form: * * JSB * DEF RTN Must be correct. * DEF "i" misc. params. * ... * DEF * DEF "j" vectors in EMA. * DEF (with indices) * ... * DEF * DEF * DEF <# of operations> * * This call is identical to the call to the non-EMA version, * except the vectors are in EMA. The standard FORTRAN calling * sequence is used, so the EMA addresses are actually pointers * to the true EMA addresses, which are two words long. * The interface part unique to each routine has the form: * * NOP * JSB .WCOM * DEF +0 * BYT <# scalars = i>,<# vectors = j> * ABS <1024 / (# words per element)> - 1 + flags * * where the flags have the meaning: * * bit 14: set up calls after remaps as if the microcode * were reentering after an interrupt. * bit 13: after each microcode call, JSB to the next * word after the call with the following * parameters: the address of the parameter * list and the last-time flag. * bit 12: the first parameter in the microcode cal;l * is an output-only parameter which is an * index into some vector. Since the call is * broken into parts, this value will be set * (at interface exit) to the correct value * using the total length of previous calls. SKP * Some notes on the above: the "+0" in the first DEF is to guarantee * a direct address. The interface uses the sign bit of this word * to see if the non-EMA version is actually in microcode. The last * value is used to compute the maximum number of operations which can * before the maps must be adjusted. The interface needs to know the * number of words per element and computes it from this last value. * If the number of words per element exceeds 37, this computation may * fail, so the following restriction is put on the number of words * per element: * * Let NW be the number of words per element. The * following must be true: * 1024 / ( 1024 / NW) = NW * where "/" indicates integer division. * * The sequence of events in .WCOM is as follows: * * 1) Copy the parameters and true return address. * 2) Set up and call .VSET to copy the real parameters, set up * maps, compute the maximum number of operations before * remap, and decide if this is an "easy" or a "hard" case. * 3) If hard: adjust the maps for negative indices. Decide if * this is the only set of maps needed. * 4) Call .ESEG to load the map registers in the MSEG. * 5) Call the non-EMA routine. Do any special processing. * 6) If easy or last time of hard, exit. * 7) Adjust the maps & vector addresses for the next section and * decide if it is the last one. * 8) Go to step 4. SPC 2 * LOCALS & TEMPS. * TV1 DEF *-* POINTER TO WALK THRU VECTORS. TMAPS DEF *-* POINZTER TO WALK THRU MAPS. TNV ABS *-* COUNTER. TN ABS *-* - (# OF OPS LEFT TO DO) M ABS *-* MAX PER REMAP. MNW ABS *-* M * NW FLAGS ABS *-* SPECIAL ENTRY FLAG. OFSET ABS *-* # DONE BEFORE SEGMENT JUST COMPLETED. SAVEA BSS 1 TEMP FOR SAVING "A" BETWEEN CALLS. SAVEB BSS 1 TEMP FOR SAVING "B" BETWEEN CALLS. MAPS BSS 6 MAP TABLE. T1 BSS 1 TEMP. * NEXIT DEF *-* NORMAL EXIT ADDRESS. DFSUB DEF *-* ADDR SUBROUTINE FOR NON-EMA. JSBSB JSB DFDFS,I JSB TO IT. ORB DFDFS DEF DFSUB,I LINK TO SUBROUTINE. BEXIT DEF EXIT BASE PAGE LINK TO EXIT. ORR SKP * ENTRY. COPY PARAMETERS. * .WCOM NOP LDA .WCOM,I SET UP CALL / OPCODE. STA DFSUB (IN CASE SUB ADDR) SSA,RSS WHICH IS IT ? LDA JSBSB SUB ADDR. USE JSB THRU BASE PAGE. STA CALL ISZ .WCOM LDA .WCOM,I EXTRACT # SCALARS & # VECT. AND =B377 STA #VECT XOR .WCOM,I ISZ .WCOM ALF,ALF STA #MISC LDA .WCOM,I COPY FLAGS: ALF,RAR CHANGE BITS 14,13,12 TO BITS 1,0,15 STA FLAGS LDA .WCOM,I ISOLATE KNW. ISZ .WCOM AND =B1777 STA KNW SAVE 1024 / # WDS PER * * SET UP CALL TO MICROCODE. (& .VSET) * LDA .WCOM COPY RETURN ADDR OF UNIQUE INTERFACE. ADA =D-5 (HAS BEEN ISZ'D) LDA A,I LDB A,I THIS IS THE ONE. STB NEXIT (*+N+1) CMA (-*-1) ADB A N ADB VOUT FORM RETURN ADDRESS. STB RTN LDB JEXIT STORE JUMP THERE. STB RTN,I CMA,INA (*+1) STA VIN FOR .VSET CLA CLEAR LAST-TIME FLAG. STA LASTF STA OFSET AND SET TOTAL # SO FAR = 0. * * USE .VSET TO FINISH SETTING UP. * JSB .VSET SET IT UP ! DEF *+7 J VIN DEF *-* OLD PARAM LIST. VOUT DEF PARAM NEW PARAM LIST. DMAPS DEF MAPS MAP TABLE. #MISC ABS *-* # MISC PARAMS. #VECT ABS *-* # VECTORS. KNW ABS *-* (1024 / # WORDS PER ELEMENT) - 1 JMP ERROR ERROR EXIT. JMP HARD HARD WAY EXIT. SKP * LOAD MAPS. * ESEG JSB .ESEG A = 0, B = 2 * # VECT. DEF *+2 DEF MAPS JMP ERROR IF MAPPING ERROR. * * DO THE NON-EMA CALL. * LDA SAVEA RESTORE A,B. (X,Y WEREN'T CHANGED) LDB SAVEB CALL JSB *-* CALL TO NON-EMA ROUTINE. RTN DEF *-* PARAM BSS 8 ROOM FOR 8 PARAMS & JUMP AFTER THEM. JEXIT JMP BEXIT,I THE JUMP TO BE PUT THERE. EXIT STA SAVEA SAVE A,B STB SAVEB * * DO ANY SPECIAL PROCESSING AFTER EACH CALL. * LDA FLAGS SEE IF WE RETURN TO THE CALLER FOR SPECIALS. SLA,RSS IT'S BIT 0 NOW. JMP EXIT2 NO. JSB .WCOM,I YES. DO IT. DEF PARAM ADDRESS OF PARAM LIST. LASTF ABS *-* LAST-TIME FLAG. LDA FLAGS EXIT2 SSA,RSS IS SCALAR AN ORDINAL ? (BIT 15 NOW) JMP EXIT4 NO. LDA PARAM,I YES. A = THE ORDINAL. CMA,SSA,RSS NEW ONE ? JMP EXIT3 NO. ("A" IS CORRECT VALUE) CMA YES. RESTORE "A". ADA OFSET MAKE IT RELATIVE TO TRUE START. EXIT3 XOR LASTF IF NOT LAST TIME, COMPLEMENT IT. STA PARAM,I LDA OFSET UPDATE OFFSET. ADA M STA OFSET EXIT4 LDA SAVEA RESTORE A,B (X,Y UNCHANGED) LDB SAVEB ISZ LASTF LAST TIME ? JMP NEXIT,I YES, ALL DONE. * * HARDWAY CODE BETWEEN SECTIONS. * LDA VOUT SET UP POINTERS. ADA #MISC STA TV1 LDA DMAPS STA TMAPS LDA #VECT CMA,INA STA TNV SKP * LOOP THRU VECTORS UPDATING MAPS & MSEG POINTERS. * LOOP1 DLD bTV1,I B = INDEX ADDR. LDA B,I A = INDEX. MPY MNW MNW * INDEX. ASL 6 B = PAGE INCREMENT. ALF,ALF RAL,RAL A = DISPLACEMENT INCREMENT. STA T1 SAVE DISP INCR. LDA TV1,I BUMP VECTOR ADDRESS. AND =B176000 PAGE # STA LASTF (USE LASTF AS TEMP) XOR TV1,I DISP ADA T1 BUMP DISPLACEMENT. ADA =D-1024 CHECK IF PAGE OVERFLOW. SSA,RSS IF SO, A >= 0. INB YES. ADVANCE PAGE #. AND =B1777 REMOVE OVERFLOW IF THERE. IOR LASTF ADD PAGE # FOR FULL ADDRESS. STA TV1,I UPDATE IT. ISZ TV1 ISZ TV1 ADB TMAPS,I BUMP PAGE. STB TMAPS,I UPDATE MAPS. ISZ TMAPS INB STB TMAPS,I ISZ TMAPS ISZ TNV COUNT VECTORS. JMP LOOP1 IF MORE. * * COMPUTE AMOUNT LEFT. SET RETURN ADDRESS IF FLAGGED. * LDB TN B = - (AMOUNT LEFT) LDA B A = (AMOUNT LEFT) CMA,INA ADB M B = - (NEW AMOUNT LEFT) SSB,RSS LAST TIME ? STA M YES. CORRECT OPERATION COUNT. LDA FLAGS IF SPECIAL, SET RTN ADDR TO -M. RAR,ERA E=1 IF SPECIAL. LDA M M CMA,INA SEZ SPECIAL ? STA RTN YES. NEXT STB TN B = - (NEW AMOUNT LEFT) ASR 15 B = 0 IF LAST TIME, -1 IF NOT. STB LASTF CLA SET A = 0 LDB #VECT AND B = 2 * # VECTORS. BLS JMP ESEG GO DO ANOTHER. SKP * HARD WAY SETUP. COMPUTE M*NW. * HARD STA M MAX PER REMAP. ISZ KNW FORM 1024 / NW LDA =D1024 RECONSTRUCT NW. CLB DIV KNW STA T1 MPY M M*NW DEFM EQU *-1 STA MNW (FITS IN 15 BITS) * * LOOP TO ADJUST FOR NEGATIVE INDICES. * LDA VOUT SET UP P`p$"OINTERS ETC. ADA #MISC STA TV1 LDA DMAPS STA TMAPS LDA #VECT CMA,INA STA TNV LOOP2 DLD TV1,I B = ADDR INDEX. LDB B,I B = INDEX. SSB,RSS NEG INCREMENT ? (NEG INDEX) JMP LOOP3 NO. AND =B1777 YES. SEE IF FIRST ELEMENT CROSSES PAGE. ADA T1 ADA =D-1025 SSA,RSS WELL ? JMP LOOP3 YES. LEAVE ALL AS IT WAS. LDB TMAPS,I NO. BACK UP MAPS. CCA ADA B DST TMAPS,I LDA TV1,I AND ADVANCE MSEG ADDR TO SECOND PAGE. ADA =D1024 STA TV1,I LOOP3 ISZ TMAPS LOOP. ISZ TMAPS ISZ TV1 ISZ TV1 ISZ TNV COUNT # VECT. JMP LOOP2 IF MORE. LDB TV1,I GET N. LDB B,I N. LDA DEFM CHANGE DEF IN CALL TO POINT TO M. STA TV1,I LDA B A = N. CMB,INB B = -N. ADB M B - -(NEW AMOUNT LEFT) SSB,RSS LAST TIME ? STA M YES. CORRECT OPERATION COUNT. JMP NEXT GO DO FIRST OP. SKP * ERROR HANDLING. * ERROR JSB ERR0 COMPLAIN. JMP NEXIT,I & EXIT. SPC 3 UNS END $ASMB,L HED ".VSRP" - RPL'ING OF: VADD VSUB VMPY VDIV VSAD VSSB VSMY VSDV . NAM .VSRP,7 12824-16001 REV.1926 790403 * EXT .VECT ENT VADD,VSUB,VMPY,VDIV,VSAD,VSSB,VSMY,VSDV * A EQU 0 B EQU 1 * * .VCT REPLACES CALLS TO VADD...VSDV WITH THE APPROPRIATE * TWO-WORD OPCODE. IF THE MAIN OPCODE IS NOT RPL'D, IT * FAKES A JSB INSTEAD OF REPLACING THE ORIGINAL JSB. * VADD NOP JSB COM OCT 000000 * VSUB NOP JSB COM OCT 000020 * VMPY NOP JSB COM OCT 000040 * VDIV NOP JSB COM OCT 000060 * VSAD NOP JSB COM OCT 000400 * VSSB NOP JSB COM OCT 000420 * VSMY NOP JSB COM OCT 000440 * VSDV NOP JSB COM OCT 000460 * COM NOP LDA COM,I A = SUB-OPCODE. LDB COM GET ADDRESS + 1 OF ORIGINAL JSB. ADB =D-2 LDB B,I STA B,I OVERLAY ORIGNAL RTN PTR WITH SUB-OPCODE. LDA OPCOD A = MAIN OPCODE. SSA,RSS SOFTWARE ? JMP SOFT YES, SPECIAL CASE. ADB =D-1 NO. OVERLAY ORIGINAL JSB WITH MAIN OPCODE. STA B,I JMP B,I GO EXECUTE THE OPCODE. * SOFT STB A,I FAKE A JSB TO THE SOFTWARE. FIRST, RTN ADDR. INA THEN, JMP A,I THE ENTRY. * OPCOD DEF .VECT+0 END sASMB,L HED ".VDRP" - RPL'ING OF: DVADD DVSUB .... DVSMY DVSDV . NAM .VDRP,7 12824-16001 REV.1926 790403 * EXT .DVCT ENT DVADD,DVSUB,DVMPY,DVDIV,DVSAD,DVSSB,DVSMY,DVSDV * A EQU 0 B EQU 1 * * .DVECT REPLACES CALLS TO DVADD...DVSDV WITH THE APPROPRIATE * TWO-WORD OPCODE. IF THE MAIN OPCODE IS NOT RPL'D, IT FAKES * A JSB INSTEAD OF REPLACING THE ORIGINAL JSB. * DVADD NOP JSB COM OCT 004002 * DVSUB NOP JSB COM OCT 004022 * DVMPY NOP JSB COM OCT 004042 * DVDIV NOP JSB COM OCT 004062 * DVSAD NOP JSB COM OCT 004402 * DVSSB NOP JSB COM OCT 004422 * DVSMY NOP JSB COM OCT 004442 * DVSDV NOP JSB COM OCT 004462 * COM NOP LDA COM,I A = SUB-OPCODE. LDB COM GET ADDRESS + 1 OF ORIGINAL JSB. ADB =D-2 LDB B,I STA B,I OVERLAY ORIGINAL RTN PTR WITH SUB-OPCODE. LDA OPCOD A = MAIN OPCODE. SSA,RSS SOFTWARE ? JMP SOFT YES, SPECIAL CASE. ADB =D-1 NO. OVERLAY ORIGINAL JSB WITH MAIN OPCODE. STA B,I JMP B,I GO EXECUTE THE OPCODE. * SOFT STB A,I FAKE A JSB TO THE SOFTWARE. FIRST, RTN ADDR. INA THEN, JMP A,I THE ENTRY. * OPCOD DEF .DVCT+0 END @ASMB,L HED RPL'S FOR THE VECTOR INSTRUCTION SET. NAM .VRPL,7 12824-16001 REV.1926 790403 * ENT .VECT,.DVCT ENT VSUM,VNRM,VDOT ENT VMAX,VMAB,VMIN,VMIB ENT VMOV,VSWP ENT .ESEG,.VSET * ENT DVSUM,DVNRM,DVDOT ENT DVMAX,DVMAB,DVMIN,DVMIB ENT DVMOV,DVSWP * .VECT RPL 101460B VPIV RPL 101461B VABS RPL 101462B VSUM RPL 101463B VNRM RPL 101464B VDOT RPL 101465B VMAX RPL 101466B VMAB RPL 101467B VMIN RPL 101470B VMIB RPL 101471B VMOV RPL 101472B VSWP RPL 101473B .ESEG RPL 101475B .VSET RPL 101476B * .DVCT RPL 105460B DVPIV RPL 105461B DVABS RPL 105462B DVSUM RPL 105463B DVNRM RPL 105464B DVDOT RPL 105465B DVMAX RPL 105466B DVMAB RPL 105467B DVMIN RPL 105470B DVMIB RPL 105471B DVMOV RPL 105472B DVSWP RPL 105473B * END  Bd 12824-18002 1926 S C0522 &VISOD V.I.S. ONLINE DIAG.             H0105 ߞFTN4,L,Y C********************************************************************** C $EMA(AREA,1) PROGRAM VISOD (),12824-16002 REV.1926 790403 C C COMMON / AREA / EV1(500) COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DIMENSION V1(600),V2(600),V3(600),V4(600) DIMENSION IBUFF(5) C DOUBLE PRECISION DV1(300),DV2(300),DV3(300),DV4(300),DSUM EQUIVALENCE (V1,DV1),(V2,DV2),(V3,DV3),(V4,DV4) C CALL RMPAR(IBUFF) LU = IBUFF(1) IPASS = IBUFF(2) IPRIV = IBUFF(3) IF (LU.LE.0) LU = LOGLU(LU) IF (IPASS.LE.0) IPASS = 1 C C********************************************************************* C C PERFORM SELF-TEST TO CHECK FIRMWARE INSTALLATION C CALL SELFT(IERR) IF (IERR.EQ.0) GOTO 10 CALL EXEC(2,LU,21H**** SELFTEST FAILURE,-21) STOP 11 C C********************************************************************** C C MAJOR LOOP C 10 DO 99 IDUMMY = 1,IPASS C NMAX = 600 ITEST(1) = 2H ITEST(2) = 1 C C********************************************************************* C C TEST FOR CASES N=0, N<0 C CALL INITV(V1,V2,V3,V4) CALL VADD(V1,1,V2,1,V3,1,0) CALL VCOMP(V3,V4) C CALL VADD(V1,1,V2,1,V3,1,-1) CALL VCOMP(V3,V4) C C********************************************************************* C********************************************************************* C C TEST SINGLE PRECISION FIRMWARE WITH UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 1 INCR2 = 1 INCR3 = 1 N = NMAX CALL INITV(V1,V2,V3,V4) CALL VTEST(V1,V2,V3,V4) C C********************************************************************* C C TEST SINGLE PRECISION FIRMWARE WITH NON-UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 10 INCR2 = 20 INCR3 = 30 N = NMAX/30 CALL INITV(V1,V2,V3,V4) CALL VTEST(V1,V2,V3,V4) C C C********************************************************************* C C C TEST DOUBLE PRECISION FIRMWARE WITH UNITY INCREMENTS C ITEST(1) = 2H D ITEST(2) = 0 INCR1 = 1 INCR2 = 1 INCR3 = 1 NMAX = NMAX / 2 N = NMAX CALL INITD(DV1,DV2,DV3,DV4) CALL DVTST(DV1,DV2,DV3,DV4) C C C********************************************************************** C C C TEST DOUBLE PRECISION FIRMWARE WITH NON-UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 10 INCR2 = 20 INCR3 = 30 N = NMAX/30 CALL INITD(DV1,DV2,DV3,DV4) CALL DVTST(DV1,DV2,DV3,DV4) C C********************************************************************* C********************************************************************* C C C TEST .ERES IN ASMB C ITEST(1) = 2H . ITEST(2) = ITEST(2) + 1 CALL TERES(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C C IF IPRIV FLAG NOT SET, SKIP PRIVILEGED SECTION C IF (IPRIV.EQ.0) GOTO 40 C C C********************************************************************* C C C LOCK PROGRAM INTO MEMORY FOR NEXT TWO TESTS C CALL EXEC(22,1) C C C********************************************************************** C C C TEST .ESEG IN ASMB C ITEST(2) = ITEST(2) + 1 CALL TESEG(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C C TEST .VSET IN ASMB C ITEST(2) = ITEST(2) + 1 CALL TVSET(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C UNLOCK PROGRAM FROM MEMORY C CALL EXEC(22,0) C C C*************************************************************]********* C********************************************************************** C C PERFORM AN EMA VECTOR INSTRUCTION TO SEE THAT IT ALL PLAYS C ITEST(1) = 2H ITEST(2) = ITEST(2) + 1 C DO 20 I=1,500 EV1(I) = 100. * SIN(100. * SIN(FLOAT(I))) 20 CONTINUE C CALL WSUM(SUM1,EV1(1),1,500) C DSUM = 0.0D0 DO 30 I=1,500 DSUM = DSUM + DBLE((EV1(I))) 30 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C*********************************************************************** C C PRINT COMPLETION MESSAGE C 40 IF (NERR.NE.0) STOP 11 C IF (IPRIV.EQ.0) CALL EXEC(2,LU, + 49H WARNING - PRIVILEGED INSTRUCTIONS NOT TESTED,-49) C CALL EXEC(2,LU,44HVIS ON-LINE DIAGNOSTIC SUCCESSFUL COMPLETION, + -44) C C********************************************************************* C C TEST FOR OPERATOR BREAK C IF (IFBRK(I).NE.0) STOP 77 C C********************************************************************* C C END OF MAJOR LOOP C 99 CONTINUE C C********************************************************************* END C********************************************************************* C SUBROUTINE VTEST(V1,V2,V3,V4) C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DIMENSION V1(1),V2(1),V3(1),V4(1) DOUBLE PRECISION DSUM C S = 3.14 C C********************************************************************* C C CALL VADD(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 10 L=1,N V4(I4) = V1(I1) + V2(I2) CALL INCI 10 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSUB(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 20 L=1,N V4(I4) = V1(I1) - V2(I2) RK CALL INCI 20 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VMPY(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 30 L=1,N V4(I4) = V1(I1) * V2(I2) CALL INCI 30 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C********************************************************************* C CALL VDIV(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 40 L=1,N V4(I4) = V1(I1) / V2(I2) CALL INCI 40 CONTINUE C CALL VCOMP(V3,V4) C C********************************************************************* C C CALL VSAD(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 50 L=1,N V4(I4) = S + V1(I1) CALL INCI 50 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSSB(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 60 L=1,N V4(I4) = S - V1(I1) CALL INCI 60 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSMY(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 70 L=1,N V4(I4) = S * V1(I1) CALL INCI 70 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C********************************************************************* C C CALL VSDV(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 80 L=1,N V4(I4) = S / V1(I1) CALL INCI 80 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VPIV(S,V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 90 L=1,N V4(I4) = S * V1(I1) + V2(I2)  CALL INCI 90 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C CALL VABS(V1,INCR1,V3,INCR3,N) C CALL INITI DO 100 L=1,N V4(I4) = ABS(V1(I1)) CALL INCI 100 CONTINUE C CALL VCOMP(V3,V4) C C********************************************************************* C CALL VSUM(SUM1,V1,INCR1,N) C CALL INITI DSUM = 0.0D0 DO 110 L=1,N DSUM = DSUM + DBLE(V1(I1)) CALL INCI 110 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C********************************************************************* C********************************************************************* C C CALL VNRM(SUM1,V1,INCR1,N) C CALL INITI DSUM = 0.0D0 C DO 120 L=1,N DSUM = DSUM + DABS(DBLE(V1(I1))) CALL INCI 120 CONTINUE C CALL TRUNC(DSUM,SUM2) IF(SUM1.NE.SUM2) CALL ERROR C C C********************************************************************* C CALL VDOT(SUM1,V1,INCR1,V2,INCR2,N) C CALL INITI DSUM = 0.0D0 C DO 130 L=1,N DSUM = DSUM + DBLE(V1(I1)) * DBLE(V2(I2)) CALL INCI 130 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C********************************************************************* C CALL VMAX(IMAX1,V1,INCR1,N) C CALL INITI IMAX2 = 1 AMAX = V1(1) C DO 140 L=1,N IF (AMAX.GE.V1(I1)) GOTO 145 IMAX2 = L AMAX = V1(I1) 145 CALL INCI 140 CONTINUE C IF (IMAX1.NE.IMAX2) CALL ERROR C C********************************************************************* C CALL VMAX(IMAX1,V1,INCR1,1) IF (IMAX1.NE.1) CALL ERROR C C********************************************************************* C*****************************************=**************************** C C CALL VMAB(IMAB1,V1,INCR1,N) C CALL INITI IMAB2 = 1 AMAB = ABS(V1(1)) C DO 150 L=1,N IF (AMAB.GE.ABS(V1(I1))) GOTO 155 IMAB2 = L AMAB = ABS(V1(I1)) 155 CALL INCI 150 CONTINUE C IF (IMAB1.NE.IMAB2) CALL ERROR C C C********************************************************************* C C CALL VMIN(IMIN1,V1,INCR1,N) C CALL INITI IMIN2 = 1 AMIN = V1(1) C DO 160 L=1,N IF (AMIN.LE.V1(I1)) GOTO 165 IMIN2 = L AMIN = V1(I1) 165 CALL INCI 160 CONTINUE C IF (IMIN1.NE.IMIN2) CALL ERROR C C C********************************************************************* C CALL VMIB(IMIB1,V1,INCR1,N) C CALL INITI IMIB2 = 1 AMIB = ABS(V1(1)) DO 170 L=1,N IF (AMIB.LE.ABS(V1(I1))) GOTO 175 IMIB2 = L AMIB = ABS(V1(I1)) 175 CALL INCI 170 CONTINUE C IF (IMIB1.NE.IMIB2) CALL ERROR C C********************************************************************** C********************************************************************** C CALL VMOV(V1,INCR1,V3,INCR3,N) C CALL INITI DO 180 L=1,N V4(I4) = V1(I1) CALL INCI 180 CONTINUE C CALL VCOMP(V3,V4) C C********************************************************************** C CALL INITV(V1,V1,V3,V4) INCR2 = INCR1 C CALL VSWP(V1,INCR1,V3,INCR3,N) C CALL INITI DO 190 L=1,N T = V2(I2) V2(I2) = V4(I4) V4(I4) = T CALL INCI 190 CONTINUE C CALL VCOMP(V1,V2) CALL VCOMP(V3,V4) C C********************************************************************* RETURN END C********************************************************************* C SUBROUTINE DVTST(DV1,DV2,DV3,DV4) C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DOUBLE PRECISION DV1(1),DV2(1),DV3(1),DV4(1) DOUBLE PRECISION DS,DSUM1,DSUM2,DMAX,DMAB,DMIN,DMIB,DT C DS = 3.14D0 C C********************************************************************* C C CALL DVADD(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 10 L=1,N DV4(I4) = DV1(I1) + DV2(I2) CALL INCI 10 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVSUB(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 20 L=1,N DV4(I4) = DV1(I1) - DV2(I2) CALL INCI 20 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVMPY(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 30 L=1,N DV4(I4) = DV1(I1) * DV2(I2) CALL INCI 30 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C********************************************************************* C CALL DVDIV(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 40 L=1,N DV4(I4) = DV1(I1) / DV2(I2) CALL INCI 40 CONTINUE C CALL DVCMP(DV3,DV4) C C********************************************************************* C C CALL DVSAD(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 50 L=1,N DV4(I4) = DS + DV1(I1) CALL INCI 50 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVSSB(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 60 L=1,N DV4(I4) = DS - DV1(I1) CALL INCI 60 CONTINUE C CALL DVCMP(DV3,DV4) C C C*****************************************************x**************** C C CALL DVSMY(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 70 L=1,N DV4(I4) = DS * DV1(I1) CALL INCI 70 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C********************************************************************* C C CALL DVSDV(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 80 L=1,N DV4(I4) = DS / DV1(I1) CALL INCI 80 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVPIV(DS,DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 90 L=1,N DV4(I4) = DS * DV1(I1) + DV2(I2) CALL INCI 90 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C CALL DVABS(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 100 L=1,N DV4(I4) = DABS(DV1(I1)) CALL INCI 100 CONTINUE C CALL DVCMP(DV3,DV4) C C********************************************************************* C CALL DVSUM(DSUM1,DV1,INCR1,N) C CALL INITI DSUM2 = 0.0D0 DO 110 L=1,N DSUM2 = DSUM2 + DV1(I1) CALL INCI 110 CONTINUE C IF (DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C********************************************************************* C C C CALL DVNRM(DSUM1,DV1,INCR1,N) C CALL INITI DSUM2 = 0.0D0 C DO 120 L=1,N DSUM2 = DSUM2 + DABS(DV1(I1)) CALL INCI 120 CONTINUE C IF(DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C C CALL DVDOT(DSUM1,DV1,INCR1,DV2,INCR2,N) C CALL INITI DSUM2 = 0.0D0 C DO 130 L=1,N DSUM2 = DSUM2 + DV1~(I1) * DV2(I2) CALL INCI 130 CONTINUE C IF (DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C C C CALL DVMAX(IMAX1,DV1,INCR1,N) C CALL INITI IMAX2 = 1 DMAX = DV1(1) C DO 140 L=1,N IF (DMAX.GE.DV1(I1)) GOTO 145 IMAX2 = L DMAX = DV1(I1) 145 CALL INCI 140 CONTINUE C IF (IMAX1.NE.IMAX2) CALL ERROR C C C C********************************************************************* C********************************************************************* C C CALL DVMAB(IMAB1,DV1,INCR1,N) C CALL INITI IMAB2 = 1 DMAB = DABS(DV1(1)) C DO 150 L=1,N IF (DMAB.GE.DABS(DV1(I1))) GOTO 155 IMAB2 = L DMAB = DABS(DV1(I1)) 155 CALL INCI 150 CONTINUE C IF (IMAB1.NE.IMAB2) CALL ERROR C C C********************************************************************* C C CALL DVMIN(IMIN1,DV1,INCR1,N) C CALL INITI IMIN2 = 1 DMIN = DV1(1) C DO 160 L=1,N IF (DMIN.LE.DV1(I1)) GOTO 165 IMIN2 = L DMIN = DV1(I1) 165 CALL INCI 160 CONTINUE C IF (IMIN1.NE.IMIN2) CALL ERROR C C C********************************************************************* C CALL DVMIB(IMIB1,DV1,INCR1,N) C CALL INITI IMIB2 = 1 DMIB = DABS(DV1(1)) DO 170 L=1,N IF (DMIB.LE.DABS(DV1(I1))) GOTO 175 IMIB2 = L DMIB = DABS(DV1(I1)) 175 CALL INCI 170 CONTINUE C IF (IMIB1.NE.IMIB2) CALL ERROR C C********************************************************************** C********************************************************************** C CALL DVMOV(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 180 L=1,N DV4(I4) = DV1(I1) CALL INCI 180 CONTINUE C CALL DVCMP(DV3,DV4) C C********************************************************************** C CALL INITD(DV1,DV1,DV3,DV4) INCR2 = INCR1 C CALL DVSWP(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 190 L=1,N DT = DV2(I2) DV2(I2) = DV4(I4) DV4(I4) = DT CALL INCI 190 CONTINUE C CALL DVCMP(DV1,DV2) CALL DVCMP(DV3,DV4) C C********************************************************************* RETURN END C********************************************************************* C SUBROUTINE INITV(V1,V2,V3,V4) C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR DIMENSION V1(1),V2(1),V3(1),V4(1) C DO 10 I=1,NMAX V1(I) = 100. * SIN(100. * SIN(FLOAT(I))) V2(I) = 100. * COS(100. * COS(FLOAT(I))) V3(I) = 0.0 V4(I) = 0.0 10 CONTINUE C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE INITD(DV1,DV2,DV3,DV4) C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR DOUBLE PRECISION DV1(1),DV2(1),DV3(1),DV4(1) C DO 10 I=1,NMAX DV1(I) = 100D0 * DSIN(100D0 * DSIN(DBLE(FLOAT(I)))) DV2(I) = 100D0 * DCOS(100D0 * DCOS(DBLE(FLOAT(I)))) DV3(I) = 0D0 DV4(I) = 0D0 10 CONTINUE C RETURN C C*********************************************************************** END C********************************************************************* C SUBROUTINE INITI C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C I1 = 1 I2 = 1 I3 = 1 I4 = 1 C ITEST(2) = ITEST(2) + 1 C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE INCI C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 C I1 = I1 + INCR1 I2 = I2 + INCR2 I3 = I3 + INCR3 I4 = I4 + INCR3 C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE VCOMP(V3,V4) C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DIMENSION V1(1),V2(1),V3(1),V4(1) C DO 10 I=1,NMAX IF (V3(I).NE.V4(I)) GOTO 20 10 CONTINUE C RETURN C C 20 CALL ERROR RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE DVCMP(DV3,DV4) C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DOUBLE PRECISION DV3(1),DV4(1) C DO 10 I=1,NMAX IF (DV3(I).NE.DV4(I)) GOTO 20 10 CONTINUE C RETURN C C 20 CALL ERROR RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE ERROR C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR REAL NAMES(23),BUFFR(8) INTEGER IBUFF(2) EQUIVALENCE (IBUFF(1),BUFFR(7)) DATA NAMES / 4HVADD,4HVSUB,4HVMPY,4HVDIV,4HVSAD,4HVSSB, + 4HVSMY,4HVSDV,4HVPIV,4HVABS,4HVSUM,4HVNRM, + 4HVDOT,4HVMAX,4HVMAB,4HVMIN,4HVMIB,4HVMOV, + 4HVSWP,4HERES,4HESEG,4HVSET,4HWSUM / C DATA BUFFR / 4H****,4H ERR,4HOR I,4HN IN,4HSTRU,4HCTIO, + 4HN / C BUFFR(8) = NAMES(ITEST(2)) IBUFF(2) = ITEST(1) CALL EXEC(2,LU,BUFFR,-32) NERR = NERR + 1 RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE TRUNC(IDBLE,ISNGLHFB) C DIMENSION IDBLE(1),ISNGL(1) C ISNGL(1) = IDBLE(1) IDBLE(2) = IDBLE(2).AND.177400B IDBLE(4) = IDBLE(4).AND.377B ISNGL(2) = IDBLE(2).OR.IDBLE(4) C RETURN C C*********************************************************************** END C********************************************************************* C BLOCK DATA C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C C DATA NERR / 0 / C C********************************************************************** END HASMB,L NAM SELFT 12824-16002 REV.1926 790403 ENT SELFT EXT .ENTR * IERR BSS 1 SELFT NOP JSB .ENTR DEF IERR LIB 1 SAVE S IN B REGISTER CLA CLEAR S REGISTER OTA 1 OCT 105477 EXECUTE SELFTEST NOP SKIP ERROR RETURN LIA 1 READ RESULT OTB 1 RESTORE S REGISTER XOR =B102077 COMPARE TO HLT 77 STA IERR,I SAVE COMPARISON IN IERR JMP SELFT,I RETURN END ASMB,L NAM TERES 12824-16002 REV.1926 790403 ENT TERES EXT .ENTR,.ERES * IERR BSS 1 TERES NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ************************************************************************ * * CALL .ERES WITH #DIM < 0 * LDA TABL1 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************* * * CALL .ERES WITH L(1) > A(1) * LDA TABL2 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH #WORDS/ELEMENT < 0 * LDA TABL3 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH MSB OF DOUBLE INTEGER < 0 * LDA TABL4 SET A ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************* * * CALL .ERES WITH OVERFLOW IN DOUBLE INTEGER ADD * LDA TABL5 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH D(1) < 0 * LDA TABL6 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * ************************************************************************** SKP ************************************************************************** * * CALL .ERES WITH OVERFLOW IN UPPER 16-BIT MPY * LDA TABL7 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH OVERFLOW IN MULTIPLY * LDA TABL8 SET A = ADDRESS OF T(ABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH CARRY OUT IN MULTIPLY * LDA TABL9 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH OVERFLOW IN SHIFT * LDA TABLA SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH #DIM = 0 * JSB .ERES EMA ADDRESS RESOLVER DEF RTN1 NOP DUMMY ADDRESS DEF TABLB ARRAY DEFINTION TABLE RTN1 ISZ ERROR ERROR IF RETURNS HERE * CPA ELB TEST A REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP CPB EHB TEST B REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * ************************************************************************ * * NORMAL CALL, #WORDS ELEMENT = 1 * LDA TABLC SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* SKP ************************************************************************* * * NORMAL CALL, #WORDS/ELEMENT = 2 * LDA TABLD SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * NORMAL CALL, #WORDS/ELEMENT = 3 * LDA TABLE SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * NORMAL CALL, #WORDS/ELEMENT = 4 * LDA TABLF SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * t RETURN ERROR COUNT * LDA ERROR STA IERR,I JMP TERES,I RETURN * ************************************************************************** SKP ************************************************************************** * ERR1 NOP STA TAB1 STORE TABLE ADDRESS IN CALL STRING JSB .ERES EMA ADDRESS RESOLVER DEF ERTN1 NOP DUMMY ARRAY ADDRESS TAB1 BSS 1 ARRAY DEFINITION TABLE DEF I1 ERTN1 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE JMP ERR1,I RETURN * ********************************************************************** * ERR3 NOP STA TAB3 STORE TABLE ADDRESS IN CALL STRING JSB .ERES EMA ADDRESS RESOLVER DEF ERTN3 NOP DUMMY ARRAY ADDRESS TAB3 BSS 1 DEF K1 DEF J1 DEF I1 ERTN3 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE JMP ERR3,I RETURN * I1 DEC 8 J1 DEC 8 K1 DEC 8 * ********************************************************************** * ABCHK NOP CPA ASC20 TEST A REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN CPB ASCEM TEST B REGISTER RSS JMP ABCHK,I ERROR RETURN ISZ ABCHK INCREMENT TO NORMAL RETURN JMP ABCHK,I RETURN * ASC20 ASC 1,20 ASCEM ASC 1,EM ERROR BSS 1 * ********************************************************************** SKP ********************************************************************** * NORM2 NOP STA TAB2 STORE TABLE ADDRESS IN CALL STRING ADA =D7 STORE ANS ADDRESS STA ANS IN ANS * JSB .ERES EMA ADDRESS RESOLVER DEF NRTN NOP DUMMY ARRAY ADDRESS TAB2 BSS 1 ARRAY DEFINITION TABLE DEF J1 DEF I1 NRTN ISZ ERROR ERROR IF RETURNS HERE * CPA ANS,I TEST A REGISTERMR RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP ISZ ANS BUMP ANSWER ADDRESS CPB ANS,I TEST B REGISTER JMP NORM2,I OK, RETURN ISZ ERROR ERROR IF SKIP JMP NORM2,I RETURN * ANS BSS 1 * ********************************************************************** SKP TABL1 DEF *+1 DEC -1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL2 DEF *+1 DEC 1 #DIM DEC -9 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL3 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC -1 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL4 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW OCT 177777 EMA OFFSET HIGH * TABL5 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT OCT 177777 EMA OFFSET LOW OCT 077777 EMA OFFSET HIGH * TABL6 DEF *+1 DEC 3 #DIM DEC -1 L(3) DEC -1 D(2) DEC -1 L(2) DEC -1 D(1) DEC -1 L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH SKP TABL7 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 21846 D(1) DEC -1 L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL8 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 9363 D(1) DEC -1 -L(1) J DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL9 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 18725 D(1) DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABLA DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 12385 D(2) DEC -1 -L(2) DEC 12385 D(1) DEC -1 -L(1) DEC 4 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABLB DEC 0 #DIM ELB DEC 100 EMA OFFSET LOW EHB DEC 200 EMA OFFSET HIGH SKP TABLC DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 1 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 10570 OCT 3 * TABLD DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 21357 OCT 4 * TABLE DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 3 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 32146 OCT 5 * TABLF DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 4 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 42735 OCT 6 * END -$"$ASMB,L NAM TESEG 12824-16002 REV.1926 790404 ENT TESEG EXT .ESEG,.ENTR,$LIBR,$LIBX,$DVPT XIDEX EQU 1645B * IERR BSS 1 TESEG NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ******************************************************************** * * CALL .ESEG WITH #MAPS < 0 * CLA SET FIRST MAP = 0 CCB SET #MAPS = -1 JSB .ESEG DEF RTN1 DEF TABL1 RTN1 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * ******************************************************************** * * CALL .ESEG WITH #MAPS > MSEG SIZE * CLA SET FIRST MAP = 0 LDB =D3 SET #MAPS = 3 JSB .ESEG DEF RTN2 DEF TABL1 RTN2 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * ********************************************************************* * * CALL .ESEG BY A NON-EMA PROGRAM * LDA XIDEX SAVE IDEX ADDR STA IDEX IN IDEX JSB $LIBR GO PRIVILEGED NOP CLA CLEAR IDEX ADDR STA XIDEX * CLB,INB SET #MAPS = 1 JSB .ESEG DEF RTN3 DEF TABL1 RTN3 JSB ABCHK CHECK A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * LDA IDEX RESTORE IDEX ADDR STA XIDEX JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 * ******************************************************************** * * NORMAL CALL * LDA XMAP1 SAVE USER MAPS IOR =B100000 IN MAP1 USA * CLA SET FIRST MAP = 0 LDB =D2 SET #MAPS = 2 JSB .ESEG LOAD MSEG MAPS DEF RTN4 DEF TABL1 RTN4 ISZ ERROR ERROR IF RETURNS HERE * LDA XMAP2 SAVE NEW USER MAPS IOR =B100000 IN MAP2 USA * * CALCULATE WHAT Tz.HE NEW USER MAP SHOULD BE * ISZ IDEX POINT TO 2ND WORD OF IDEX XLA IDEX,I AND =B1777 SET A = PHYS START PAGE OF EMA STA SPEMA SAVE IN SPEMA XLA IDEX,I AND =B174000 SET A = LOG. START PAGE MSEG ALF,RAL ADA XMAP1 SET A = BUFFER ADDR STA 1 SET B = BUFFER ADDR LDA SPEMA SET A = 1ST PHYS PAGE STA 1,I STORE IN MAP1 BUFFER ADA TABL2 SET A = 2ND PHYS PAGE IOR =B140000 SET RD,WRT PROTECT BITS INB INC BUFFER ADDR STA 1,I STORE IN MAP1 BUFFER * JSB COMP COMPARE MAP BUFFERS SKP * * POINT 1ST DRIVER PARTITION MAP TO USER BASE PAGE * CLB,INB SET B = 1 CBX SET X = 1 (MAP) XLA $DVPT SET A = DRIVER PARTITION ADA =B40 POINT TO USER MAP LDB XMAP1 POINT B TO USER BASE PAGE MAP * JSB $LIBR GO PRIVILEGED NOP XMM LOAD THE MAP * * MOVE COPY OF MAPS ON BASE PAGE TO 2ND BUFFER * XLA $DVPT SET A = DRIVER PARTITION ALF,ALF MULTIPLY BY 2000B RAL,RAL ADA =B1740 SET A = MAPS ADDRESS LDB XMAP2 SET B = 2ND BUFFER MVW =D32 MOVE TO 2ND BUFFER * JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 * JSB COMP COMPARE MAP BUFFERS * ********************************************************************** * * RETURN ERROR COUNT * OK2 LDA ERROR STA IERR,I JMP TESEG,I RETURN * ******************************************************************** SKP ******************************************************************** * COMP NOP * * FIRST ZERO OUT DRIVER PARTITION MAPS IN BOTH BUFFERS * CLA SET A = 0 XLB $DVPT SET B = DRIVER PARTITION MAP ADB XMAP1 POINT TO 1ST BUFFER STA 1,I ZERO BUFFER MAP INB POINT TO 2ND MAP( STA 1,I ZERO BUFFER MAP * XLB $DVPT SET B = DRIVER PARTITION MAP ADB XMAP2 POINT TO 2ND BUFFER STA 1,I ZERO BUFFER MAP INB POINT TO 2ND MAP STA 1,I ZERO BUFFER MAP * * NOW COMPARE MAP BUFFERS * LDA XMAP1 POINT A TO 1ST BUFFER LDB XMAP2 POINT B TO 2ND BUFFER CMW =D32 COMPARE 32 MAPS JMP COMP,I OK,RETURN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE JMP COMP,I ERROR RETURN * ******************************************************************** * ABCHK NOP CPA ASC21 TEST A REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN CPB ASCEM TEST B REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN ISZ ABCHK SET OK RETURN JMP ABCHK,I RETURN * ASC21 ASC 1,21 ASCEM ASC 1,EM * ******************************************************************** SKP IDEX BSS 1 ERROR BSS 1 TABL1 OCT 0 TABL2 OCT 100 XMAP1 DEF MAP1 MAP1 BSS 32 XMAP2 DEF MAP2 MAP2 BSS 32 SPEMA BSS 1 * END wASMB,L NAM TVSET 12824-16002 REV.1926 790403 ENT TVSET EXT .VSET,.ENTR,$LIBR,$LIBX XIDEX EQU 1645B * IERR BSS 1 TVSET NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ********************************************************************** * * CALL .VSET BY A NON-EMA PROGRAM * LDA XIDEX SAVE IDEX ADDR STA IDEX IN IDEX JSB $LIBR GO PRIVILEGED NOP CLA CLEAR IDEX ADDR STA XIDEX * CLA,INA SET A = 1 STA I1 SET I1 = 1 STA I2 SET I2 = 1 * JSB .VSET VECTOR SET-UP DEF RTN1 DEF VIN INPUT ADDR STRING DEF VOUT OUTPUT ADDR STRING DEF MAPS OUTPUT MAP TABLE OCT 0 NO SCALARS OCT 2 TWO VECTORS DEC 512 NMAX RTN1 JMP OK1 SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * OK1 CPA ASC22 TEST A REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP CPB ASCVI TEST B REGISTER RSS OK(NO SKIP) ISZ ERROR ERROR IF SKIP * LDA IDEX RESTORE IDEX ADDR STA XIDEX JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 * ********************************************************************** SKP ********************************************************************** * * CALCULATE WHAT CORRECT OUTPUT WILL BE * ISZ IDEX POINT TO 2ND WORD OF IDEX XLA IDEX,I SET A = LOG START MSEG AND =B174000 RAR STA VANS1 1ST VECTOR LOG ADDR ADA =B5777 STA VANS2 2ND VECTOR LOG ADDR * ********************************************************************** * * EASY RETURN, IMAX = 1 * JSB EASY TEST SUBROUTINE * **********************************f=************************************ * * EASY RETURN, IMAX = 0 * CLA SET A = 0 STA I1 SET I1 = 0 STA I2 SET I2 = 0 JSB EASY TEST SUBROUTINE * ********************************************************************** * * HARD RETURN, I1 < 0 * CCA SET A = -1 STA I1 SET I1 = -1 LDA =D513 SET A = 513 JSB HARD TEST SUBROUTINE * ********************************************************************** * * HARD RETURN, I1 > I2 * LDA =D4 SET A = 4 STA I1 SET I1 = 4 LDA =D129 SET A = 129 JSB HARD TEST SUBROUTINE * ********************************************************************** SKP ********************************************************************** * * HARD RETURN, I2 > I1 * CLA SET A = 0 STA I1 SET I1 = 0 LDA =D4 SET A = 4 STA I2 SET I2 = 4 LDA =D129 SET A = 129 JSB HARD TEST SUBROUTINE * ********************************************************************** * LDA ERROR RETURN ERROR COUNT STA IERR,I JMP TVSET,I RETURN * ********************************************************************** SKP ********************************************************************** * EASY NOP JSB .VSET VECTOR SET-UP DEF ERTN DEF SIN INPUT ADDR STRING DEF SOUT OUTPUT ADDR STRING DEF MAPS OUTPUT MAP TABLE OCT 1 ONE SCALAR OCT 2 TWO VECTORS DEC 512 NMAX ERTN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * SZA A SHOULD = 0 ISZ ERROR ERROR IF A NE 0 CPB =D4 B SHOULD = 4 RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * LDA SIN COMPARE SCALAR ADDRESSES CPA SOUT .# RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * JSB TEST TEST OUTPUT ADDR STRING, MAPS JMP EASY,I RETURN * ********************************************************************** * HARD NOP STA M SAVE A IN M JSB .VSET VECTOR SET-UP DEF HRTN DEF VIN INPUT ADDR STRING DEF VOUT OUTPUT VECTOR STRING DEF MAPS OUTPUT MAP TABLE OCT 0 NO SCALARS OCT 2 TWO VECTORS DEC 512 NMAX HRTN ISZ ERROR ERROR IF RETURNS HERE JMP HOK SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE * HOK CPA M A SHOULD = M RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * JSB TEST TEST OUTPUT STRING, MAPS JMP HARD,I RETURN * ********************************************************************** SKP ********************************************************************** * TEST NOP LDA XVOUT OUTPUT ADDR STRING LDB XVANS ANSWER ADDR STRING CMW =D5 JMP TOK SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * TOK LDA XMAPS OUTPUT MAP TABLE LDB XMAP1 ANSWER MAP TABLE CMW =D4 JMP TEST,I OK RETURN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE JMP TEST,I RETURN * ********************************************************************** SKP XVIN DEF VIN SIN OCT 1234 VIN DEF V1 DEF I1 DEF V2 DEF I2 DEF N * XVOUT DEF VOUT SOUT BSS 1 VOUT BSS 5 * XVANS DEF VANS1 VANS1 BSS 1 DEF I1 VANS2 BSS 1 DEF I2 DEF N * XMAPS DEF MAPS MAPS BSS 4 * XMAP1 DEF MAP1 MAP1 OCT 0 MAP2 OCT 1 MAP3 OCT 77 MAP4 OCT 100 * M BSS 1 * V1 OCT 0 OCT 0 I1 BSS 1 V2 OCT 177777 OCT 0 I2,> BSS 1 N DEC 500 * ASC22 ASC 1,22 ASCVI ASC 1,VI * IDEX BSS 1 ERROR BSS 1 * END V G"j 12824-18003 2026 S C0122 &WADD              H0101 h\ASMB,L HED EMA INTERFACE TO "VADD". NAM WADD,7 12824-1X003 REV.2026 800506 ENT WADD EXT VADD,.WCOM ************************************************************** * * NAME: WADD * SOURCE: 12824-18003 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WADD NOP JSB .WCOM DEF VADD+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END " HN 12824-18004 2026 S C0122 &WSUB              H0101 ymASMB,L HED EMA INTERFACE TO "VSUB". NAM WSUB,7 12824-1X004 REV.2026 800506 ENT WSUB EXT VSUB,.WCOM ************************************************************** * * NAME: WSUB * SOURCE: 12824-18004 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSUB NOP JSB .WCOM DEF VSUB+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END : IO 12824-18005 2026 S C0122 &WMPY              H0101 hASMB,L HED EMA INTERFACE TO "VMPY". NAM WMPY,7 12824-1X005 REV.2026 800506 ENT WMPY EXT VMPY,.WCOM ************************************************************** * * NAME: WMPY * SOURCE: 12824-18005 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMPY NOP JSB .WCOM DEF VMPY+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END   JP 12824-18006 2026 S C0122 &WDIV              H0101 aASMB,L HED EMA INTERFACE TO "VDIV". NAM WDIV,7 12824-1X006 REV.2026 800506 ENT WDIV EXT VDIV,.WCOM ************************************************************** * * NAME: WDIV * SOURCE: 12824-18006 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WDIV NOP JSB .WCOM DEF VDIV+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END  KQ 12824-18007 2026 S C0122 &WSAD              H0101 ~YASMB,L HED EMA INTERFACE TO "VSAD". NAM WSAD,7 12824-1X007 REV.2026 800506 ENT WSAD EXT VSAD,.WCOM ************************************************************** * * NAME: WSAD * SOURCE: 12824-18007 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSAD NOP JSB .WCOM DEF VSAD+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END g. LR 12824-18008 2026 S C0122 &WSSB              H0101 }kASMB,L HED EMA INTERFACE TO "VSSB". NAM WSSB,7 12824-1X008 REV.2026 800506 ENT WSSB EXT VSSB,.WCOM ************************************************************** * * NAME: WSSB * SOURCE: 12824-18008 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSSB NOP JSB .WCOM DEF VSSB+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END ! MS 12824-18009 2026 S C0122 &WSMY              H0101 eASMB,L HED EMA INTERFACE TO "VSMY". NAM WSMY,7 12824-1X009 REV.2026 800506 ENT WSMY EXT VSMY,.WCOM ************************************************************** * * NAME: WSMY * SOURCE: 12824-18009 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSMY NOP JSB .WCOM DEF VSMY+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END  NT 12824-18010 2026 S C0122 &WSDV              H0101 ]ASMB,L HED EMA INTERFACE TO "VSDV". NAM WSDV,7 12824-1X010 REV.2026 800506 ENT WSDV EXT VSDV,.WCOM ************************************************************** * * NAME: WSDV * SOURCE: 12824-18010 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSDV NOP JSB .WCOM DEF VSDV+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END v OU 12824-18011 2026 S C0122 &WPIV              H0101 bASMB,L HED EMA INTERFACE TO "VPIV". NAM WPIV,7 12824-1X011 REV.2026 800506 ENT WPIV EXT VPIV,.WCOM ************************************************************** * * NAME: WPIV * SOURCE: 12824-18011 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WPIV NOP JSB .WCOM DEF VPIV+0 NON-EMA ROUTINE. BYT 1,3 1 SCALAR, 3 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END  PV 12824-18012 2026 S C0122 &WABS              H0101 v[ASMB,L HED EMA INTERFACE TO "VABS". NAM WABS,7 12824-1X012 REV.2026 800506 ENT WABS EXT VABS,.WCOM ************************************************************** * * NAME: WABS * SOURCE: 12824-18012 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WABS NOP JSB .WCOM DEF VABS+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END  QW 12824-18013 2026 S C0122 &WMOV              H0101 hASMB,L HED EMA INTERFACE TO "VMOV". NAM WMOV,7 12824-1X013 REV.2026 800506 ENT WMOV EXT VMOV,.WCOM ************************************************************** * * NAME: WMOV * SOURCE: 12824-18013 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMOV NOP JSB .WCOM DEF VMOV+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END  RX 12824-18014 2026 S C0122 &WSWP              H0101 pASMB,L HED EMA INTERFACE TO "VSWP". NAM WSWP,7 12824-1X014 REV.2026 800506 ENT WSWP EXT VSWP,.WCOM ************************************************************** * * NAME: WSWP * SOURCE: 12824-18014 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSWP NOP JSB .WCOM DEF VSWP+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * END G SY 12824-18015 2026 S C0122 &WMAX              H0101 ZASMB,L HED EMA INTERFACE TO "VMAX". NAM WMAX,7 12824-1X015 REV.2026 800506 ENT WMAX EXT VMAX,.WCOM ************************************************************** * * NAME: WMAX * SOURCE: 12824-18015 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMAX NOP JSB .WCOM DEF VMAX+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END ; TZ 12824-18016 2026 S C0122 &WMIN              H0101 bASMB,L HED EMA INTERFACE TO "VMIN". NAM WMIN,7 12824-1X016 REV.2026 800506 ENT WMIN EXT VMIN,.WCOM ************************************************************** * * NAME: WMIN * SOURCE: 12824-18016 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMIN NOP JSB .WCOM DEF VMIN+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END tD U[ 12824-18017 2026 S C0122 &WMAB              H0101 vZASMB,L HED EMA INTERFACE TO "VMAB". NAM WMAB,7 12824-1X017 REV.2026 800506 ENT WMAB EXT VMAB,.WCOM ************************************************************** * * NAME: WMAB * SOURCE: 12824-18017 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMAB NOP JSB .WCOM DEF VMAB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END < V\ 12824-18018 2026 S C0122 &WMIB              H0101 wbASMB,L HED EMA INTERFACE TO "VMIB". NAM WMIB,7 12824-1X018 REV.2026 800506 ENT WMIB EXT VMIB,.WCOM ************************************************************** * * NAME: WMIB * SOURCE: 12824-18018 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WMIB NOP JSB .WCOM DEF VMIB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+50000B 2 WORDS / ELEMENT & FLAGS. * END u W] 12824-18019 2026 S C0122 &WSUM              H0101 nASMB,L HED EMA INTERFACE TO "VSUM". NAM WSUM,7 12824-1X019 REV.2026 800506 ENT WSUM EXT VSUM,.WCOM ************************************************************** * * NAME: WSUM * SOURCE: 12824-18019 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WSUM NOP JSB .WCOM DEF VSUM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END j X^ 12824-18020 2026 S C0122 &WNRM              H0101 {lASMB,L HED EMA INTERFACE TO "VNRM". NAM WNRM,7 12824-1X020 REV.2026 800506 ENT WNRM EXT VNRM,.WCOM ************************************************************** * * NAME: WNRM * SOURCE: 12824-18020 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WNRM NOP JSB .WCOM DEF VNRM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END ? Y_ 12824-18021 2026 S C0122 &WDOT              H0101 yiASMB,L HED EMA INTERFACE TO "VDOT". NAM WDOT,7 12824-1X021 REV.2026 800506 ENT WDOT EXT VDOT,.WCOM ************************************************************** * * NAME: WDOT * SOURCE: 12824-18021 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * WDOT NOP JSB .WCOM DEF VDOT+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 511+40000B 2 WORDS / ELEMENT & FLAGS. * END 9 Z` 12824-18022 2026 S C0122 &VWMOV              H0101 ASMB,L HED "VWMOV" - SINGLE PRECISION VECTOR MOVE TO EMA. NAM VWMOV,7 12824-1X022 REV.2026 800506 * ENT VWMOV ************************************************************** * * NAME: VWMOV * SOURCE: 12824-18022 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** EXT VMOV,.WCOM * A EQU 0 B EQU 1 * * FOR DETAILS, SEE ".WCOM" . * VWMOV NOP JSB .WCOM DEF VMOV+0 NON-EMA ROUTINE. BYT 2,1 2 SCALARS, 1 VECTOR. ABS 511+20000B 2 WORDS / ELEMENT, FLAG = BREAK. BREAK NOP LDB BREAK,I GET IX1 INB LDA B,I LDA A,I A = IX1 ADB =D3 GET ADDR N. LDB B,I MPY B,I A = IX1 * N ALS * 2 WORDS / ELEMENT. LDB BREAK,I GET ADDRESS V1. ADA B,I INCREMENT V1. STA B,I ISZ BREAK EXIT. ISZ BREAK JMP BREAK,I END C [a 12824-18023 2026 S C0122 &WVMOV              H0101 ASMB,L HED "WVMOV" - SINGLE PRECISION VECTOR MOVE FROM EMA. NAM WVMOV,7 12824-1X023 REV.2026 800506 * ENT WVMOV ************************************************************** * * NAME: WVMOV * SOURCE: 12824-18023 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** EXT VMOV,.WCOM,.ENTR * A EQU 0 B EQU 1 * * FOR DETAILS SEE ".WCOM" . SPC 3 * SWAP V1 & V2 BEFORE INTERFACE. * V1 DEF *-* IX1 DEF *-* V2 DEF *-* IX2 DEF *-* N DEF *-* WVMOV NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1 JSB MOVE1 CALL INTERFACE BUT SWAP V1 & V2. DEF *+5+1 DEF V2,I DEF IX2,I DEF V1,I DEF IX1,I DEF N,I JMP WVMOV,I EXIT. * * INTERFACE CALL. * MOVE1 NOP JSB .WCOM DEF MOVE2 (GO THRU SECOND SWAP) BYT 2,1 ABS 511+0 2 WORDS / ELEMENT, NO FLAGS. * * SWAP V1 & V2 BETWEEN INTERFACE & MICROCODE. * V1A DEF *-* IX1A DEF *-* V2A DEF *-* IX2A DEF *-* NA DEF *-* MOVE2 NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1A JSB VMOV CALL MICROCODE WITH SWAPPED V1 & V2. DEF *+5+1 DEF V2A,I DEF IX2A,I DEF V1A,I DEF IX1A,I DEF NA,I * * UPDATE NON-EMA ADDRESS. * LDA IX1A,I COMPUTE OFFSET. MPY NA,I ALS ADA V1A ADD BASE. LDB MOVE2 FIND ADD  RESS IN CALLING SEQ. ADB =D-5 STA B,I STORE NEW ADDR. JMP MOVE2,I EXIT. END j  \c 12824-18024 2026 S C0122 &DWADD              H0101 lASMB,L HED EMA INTERFACE TO "DVADD". NAM DWADD,7 12824-1X024 REV.2026 800506 ENT DWADD EXT DVADD,.WCOM ************************************************************** * * NAME: DWADD * SOURCE: 12824-18024 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWADD NOP JSB .WCOM DEF DVADD+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END + ]c 12824-18025 2026 S C0122 &DWSUB              H0101 |ASMB,L HED EMA INTERFACE TO "DVSUB". NAM DWSUB,7 12824-1X025 REV.2026 800506 ENT DWSUB EXT DVSUB,.WCOM ************************************************************** * * NAME: DWSUB * SOURCE: 12824-18025 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSUB NOP JSB .WCOM DEF DVSUB+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END u ^d 12824-18026 2026 S C0122 &DWMPY              H0101 ASMB,L HED EMA INTERFACE TO "DVMPY". NAM DWMPY,7 12824-1X026 REV.2026 800506 ENT DWMPY EXT DVMPY,.WCOM ************************************************************** * * NAME: DWMPY * SOURCE: 12824-18026 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMPY NOP JSB .WCOM DEF DVMPY+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END  _e 12824-18027 2026 S C0122 &DWDIV              H0101 ASMB,L HED EMA INTERFACE TO "DVDIV". NAM DWDIV,7 12824-1X027 REV.2026 800506 ENT DWDIV EXT DVDIV,.WCOM ************************************************************** * * NAME: DWDIV * SOURCE: 12824-18027 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWDIV NOP JSB .WCOM DEF DVDIV+0 NON-EMA ROUTINE. BYT 0,3 NO SCALARS, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END N `f 12824-18028 2026 S C0122 &DWSAD              H0101 ~ASMB,L HED EMA INTERFACE TO "DVSAD". NAM DWSAD,7 12824-1X028 REV.2026 800506 ENT DWSAD EXT DVSAD,.WCOM ************************************************************** * * NAME: DWSAD * SOURCE: 12824-18028 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSAD NOP JSB .WCOM DEF DVSAD+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END > ag 12824-18029 2026 S C0122 &DWSSB              H0101 |ASMB,L HED EMA INTERFACE TO "DVSSB". NAM DWSSB,7 12824-1X029 REV.2026 800506 ENT DWSSB EXT DVSSB,.WCOM ************************************************************** * * NAME: DWSSB * SOURCE: 12824-18029 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSSB NOP JSB .WCOM DEF DVSSB+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END 3 bh 12824-18030 2026 S C0122 &DWSMY              H0101 ASMB,L HED EMA INTERFACE TO "DVSMY". NAM DWSMY,7 12824-1X030 REV.2026 800506 ENT DWSMY EXT DVSMY,.WCOM ************************************************************** * * NAME: DWSMY * SOURCE: 12824-18030 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSMY NOP JSB .WCOM DEF DVSMY+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END  ci 12824-18031 2026 S C0122 &DWSDY              H0101 |ASMB,L HED EMA INTERFACE TO "DVSDV". NAM DWSDV,7 12824-1X031 REV.2026 800506 ENT DWSDV EXT DVSDV,.WCOM ************************************************************** * * NAME: DWSDV * SOURCE: 12824-18031 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSDV NOP JSB .WCOM DEF DVSDV+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END  dj 12824-18032 2026 S C0122 &DWPIV              H0101 ASMB,L HED EMA INTERFACE TO "DVPIV". NAM DWPIV,7 12824-1X032 REV.2026 800506 ENT DWPIV EXT DVPIV,.WCOM ************************************************************** * * NAME: DWPIV * SOURCE: 12824-18032 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWPIV NOP JSB .WCOM DEF DVPIV+0 NON-EMA ROUTINE. BYT 1,3 1 SCALAR, 3 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END  ek 12824-18033 2026 S C0122 &DWABS              H0101 ||ASMB,L HED EMA INTERFACE TO "DVABS". NAM DWABS,7 12824-1X033 REV.2026 800506 ENT DWABS EXT DVABS,.WCOM ************************************************************** * * NAME: DWABS * SOURCE: 12824-18033 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWABS NOP JSB .WCOM DEF DVABS+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END h fl 12824-18034 2026 S C0122 &DWNOV              H0101 ASMB,L HED EMA INTERFACE TO "DVMOV". NAM DWMOV,7 12824-1X034 REV.2026 800506 ENT DWMOV EXT DVMOV,.WCOM ************************************************************** * * NAME: DWMOV * SOURCE: 12824-18034 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMOV NOP JSB .WCOM DEF DVMOV+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END z gm 12824-18035 2026 S C0122 &DWSWP              H0101 ASMB,L HED EMA INTERFACE TO "DVSWP". NAM DWSWP,7 12824-1X035 REV.2026 800506 ENT DWSWP EXT DVSWP,.WCOM ************************************************************** * * NAME: DWSWP * SOURCE: 12824-18035 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSWP NOP JSB .WCOM DEF DVSWP+0 NON-EMA ROUTINE. BYT 0,2 NO SCALARS, 2 VECTORS. ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * END ղ hn 12824-18036 2026 S C0122 &DWMAX              H0101 ~ASMB,L HED EMA INTERFACE TO "DVMAX". NAM DWMAX,7 12824-1X036 REV.2026 800506 ENT DWMAX EXT DVMAX,.WCOM ************************************************************** * * NAME: DWMAX * SOURCE: 12824-18036 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMAX NOP JSB .WCOM DEF DVMAX+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END q io 12824-18037 2026 S C0122 &DWMIN              H0101 ASMB,L HED EMA INTERFACE TO "DVMIN". NAM DWMIN,7 12824-1X037 REV.2026 800506 ENT DWMIN EXT DVMIN,.WCOM ************************************************************** * * NAME: DWMIN * SOURCE: 12824-18037 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMIN NOP JSB .WCOM DEF DVMIN+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END - jp 12824-18038 2026 S C0122 &DWMAB              H0101 wASMB,L HED EMA INTERFACE TO "DVMAB". NAM DWMAB,7 12824-1X038 REV.2026 800506 ENT DWMAB EXT DVMAB,.WCOM ************************************************************** * * NAME: DWMAB * SOURCE: 12824-18038 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMAB NOP JSB .WCOM DEF DVMAB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END ۜ kq 12824-18039 2026 S C0122 &DWMIB              H0101 wASMB,L HED EMA INTERFACE TO "DVMIB". NAM DWMIB,7 12824-1X039 REV.2026 800506 ENT DWMIB EXT DVMIB,.WCOM ************************************************************** * * NAME: DWMIB * SOURCE: 12824-18039 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWMIB NOP JSB .WCOM DEF DVMIB+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+50000B 4 WORDS / ELEMENT & FLAGS. * END  lr 12824-18040 2026 S C0122 &DWSUM              H0101 ASMB,L HED EMA INTERFACE TO "DVSUM". NAM DWSUM,7 12824-1X040 REV.2026 800506 ENT DWSUM EXT DVSUM,.WCOM ************************************************************** * * NAME: DWSUM * SOURCE: 12824-18040 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWSUM NOP JSB .WCOM DEF DVSUM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END B* ms 12824-18041 2026 S C0122 &DWNRM              H0101 ASMB,L HED EMA INTERFACE TO "DVNRM". NAM DWNRM,7 12824-1X041 REV.2026 800506 ENT DWNRM EXT DVNRM,.WCOM ************************************************************** * * NAME: DWNRM * SOURCE: 12824-18041 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWNRM NOP JSB .WCOM DEF DVNRM+0 NON-EMA ROUTINE. BYT 1,1 1 SCALAR, 1 VECTOR. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END ! nt 12824-18042 2026 S C0122 &DWDOT              H0101 ASMB,L HED EMA INTERFACE TO "DVDOT". NAM DWDOT,7 12824-1X042 REV.2026 800506 ENT DWDOT EXT DVDOT,.WCOM ************************************************************** * * NAME: DWDOT * SOURCE: 12824-18042 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * * SEE ".WCOM" FOR INTERFACE DETAILS. * DWDOT NOP JSB .WCOM DEF DVDOT+0 NON-EMA ROUTINE. BYT 1,2 1 SCALAR, 2 VECTORS. ABS 255+40000B 4 WORDS / ELEMENT & FLAGS. * END 5 ou 12824-18043 2026 S C0122 &DVWMV              H0101 ASMB,L HED "DVWMV" - DOUBLE PRECISION VECTOR MOVE TO EMA. NAM DVWMV,7 12824-1X043 REV.2026 800506 * ENT DVWMV ************************************************************** * * NAME: DVWMV * SOURCE: 12824-18043 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** EXT DVMOV,.WCOM * A EQU 0 B EQU 1 * * FOR DETAILS, SEE ".WCOM" . * DVWMV NOP JSB .WCOM DEF DVMOV+0 NON-EMA ROUTINE. BYT 2,1 2 SCALARS, 1 VECTOR. ABS 255+20000B 4 WORDS / ELEMENT, FLAG = BREAK. BREAK NOP LDB BREAK,I GET IX1 INB LDA B,I LDA A,I A = IX1 ADB =D3 GET ADDR N. LDB B,I MPY B,I A = IX1 * N ALS,ALS * 4 WORDS / ELEMENT. LDB BREAK,I GET ADDRESS V1. ADA B,I INCREMENT V1. STA B,I ISZ BREAK EXIT. ISZ BREAK JMP BREAK,I END E pv 12824-18044 2026 S C0122 &DWVMV              H0101 ASMB,L HED "DWVMV" - SINGLE PRECISION VECTOR MOVE FROM EMA. NAM DWVMV,7 12824-1X044 REV.2026 800506 * ENT DWVMV ************************************************************** * * NAME: DWVMV * SOURCE: 12824-18044 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** EXT DVMOV,.WCOM,.ENTR * A EQU 0 B EQU 1 * * FOR DETAILS SEE ".WCOM" . SPC 3 * SWAP V1 & V2 BEFORE INTERFACE. * V1 DEF *-* IX1 DEF *-* V2 DEF *-* IX2 DEF *-* N DEF *-* DWVMV NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1 JSB MOVE1 CALL INTERFACE BUT SWAP V1 & V2. DEF *+5+1 DEF V2,I DEF IX2,I DEF V1,I DEF IX1,I DEF N,I JMP DWVMV,I EXIT. * * INTERFACE CALL. * MOVE1 NOP JSB .WCOM DEF MOVE2 (GO THRU SECOND SWAP) BYT 2,1 ABS 255+0 4 WORDS / ELEMENT, NO FLAGS. * * SWAP V1 & V2 BETWEEN INTERFACE & MICROCODE. * V1A DEF *-* IX1A DEF *-* V2A DEF *-* IX2A DEF *-* NA DEF *-* MOVE2 NOP JSB .ENTR COPY PARAM ADDRESSES. DEF V1A JSB DVMOV CALL MICROCODE WITH SWAPPED V1 & V2. DEF *+5+1 DEF V2A,I DEF IX2A,I DEF V1A,I DEF IX1A,I DEF NA,I * * UPDATE NON-EMA ADDRESS. * LDA IX1A,I COMPUTE OFFSET. MPY NA,I ALS,ALS ADA V1A ADD BASE. LDB MOVE2 FI  ND ADDRESS IN CALLING SEQ. ADB =D-5 STA B,I STORE NEW ADDR. JMP MOVE2,I EXIT. END u  qx 12824-18045 2026 S C0122 &.WCOM              H0101 cASMB,L,C HED ".WCOM" - VECTOR EMA INTERFACE. NAM .WCOM,7 12824-1X045 REV.2026 800506 ENT .WCOM EXT .VSET,.ESEG,ERR0 ************************************************************** * * NAME: .WCOM * SOURCE: 12824-18045 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** A EQU 0 B EQU 1 SUP * * ".WCOM" interfaces FORTRAN programs to the Vector Instruction * Set using vectors which reside in EMA. For each VIS routine * which is to be duplicated for EMA vectors, a unique interface * routine is called. The call to that interface has the form: * * JSB * DEF RTN Must be correct. * DEF "i" misc. params. * ... * DEF * DEF "j" vectors in EMA. * DEF (with indices) * ... * DEF * DEF * DEF <# of operations> * * This call is identical to the call to the non-EMA version, * except the vectors are in EMA. The standard FORTRAN calling * sequence is used, so the EMA addresses are actually pointers * to the true EMA addresses, which are two words long. * The interface part unique to each routine has the form: * * NOP * JSB .WCOM * G DEF +0 * BYT <# scalars = i>,<# vectors = j> * ABS <1024 / (# words per element)> - 1 + flags * * where the flags have the meaning: * * bit 14: set up calls after remaps as if the microcode * were reentering after an interrupt. * bit 13: after each microcode call, JSB to the next * word after the call with the following * parameters: the address of the parameter * list and the last-time flag. * bit 12: the first parameter in the microcode call * is an output-only parameter which is an * index into some vector. Since the call is * broken into parts, this value will be set * (at interface exit) to the correct value * using the total length of previous calls. SKP * Some notes on the above: the "+0" in the first DEF is to guarantee * a direct address. The interface uses the sign bit of this word * to see if the non-EMA version is actually in microcode. The last * value is used to compute the maximum number of operations which can * before the maps must be adjusted. The interface needs to know the * number of words per element and computes it from this last value. * If the number of words per element exceeds 37, this computation may * fail, so the following restriction is put on the number of words * per element: * * Let NW be the number of words per element. The * following must be true: * 1024 / ( 1024 / NW) = NW * where "/" indicates integer division. * * The sequence of events in .WCOM is as follows: * * 1) Copy the parameters and true return address. * 2) Set up and call .VSET to copy the real parameters, set up * maps, compute the maximum number of operations before * W remap, and decide if this is an "easy" or a "hard" case. * 3) If hard: adjust the maps for negative indices. Decide if * this is the only set of maps needed. * 4) Call .ESEG to load the map registers in the MSEG. * 5) Call the non-EMA routine. Do any special processing. * 6) If easy or last time of hard, exit. * 7) Adjust the maps & vector addresses for the next section and * decide if it is the last one. * 8) Go to step 4. SPC 2 * LOCALS & TEMPS. * TV1 DEF *-* POINTER TO WALK THRU VECTORS. TMAPS DEF *-* POINTER TO WALK THRU MAPS. TNV ABS *-* COUNTER. TN ABS *-* - (# OF OPS LEFT TO DO) M ABS *-* MAX PER REMAP. MNW ABS *-* M * NW FLAGS ABS *-* SPECIAL ENTRY FLAG. OFSET ABS *-* # DONE BEFORE SEGMENT JUST COMPLETED. SAVEA BSS 1 TEMP FOR SAVING "A" BETWEEN CALLS. SAVEB BSS 1 TEMP FOR SAVING "B" BETWEEN CALLS. MAPS BSS 6 MAP TABLE. T1 BSS 1 TEMP. * NEXIT DEF *-* NORMAL EXIT ADDRESS. DFSUB DEF *-* ADDR SUBROUTINE FOR NON-EMA. JSBSB JSB DFDFS,I JSB TO IT. ORB DFDFS DEF DFSUB,I LINK TO SUBROUTINE. BEXIT DEF EXIT BASE PAGE LINK TO EXIT. ORR SKP * ENTRY. COPY PARAMETERS. * .WCOM NOP LDA .WCOM,I SET UP CALL / OPCODE. STA DFSUB (IN CASE SUB ADDR) SSA,RSS WHICH IS IT ? LDA JSBSB SUB ADDR. USE JSB THRU BASE PAGE. STA CALL ISZ .WCOM LDA .WCOM,I EXTRACT # SCALARS & # VECT. AND =B377 STA #VECT XOR .WCOM,I ISZ .WCOM ALF,ALF STA #MISC LDA .WCOM,I COPY FLAGS: ALF,RAR CHANGE BITS 14,13,12 TO BITS 1,0,15 STA FLAGS LDA .WCOM,I ISOLATE KNW. ISZ .WCOM AND =B1777 STA KNW SAVE 1024 / # WDS PER * * SET UP CALL TO MICROCODE. (& .VSET) * E LDA .WCOM COPY RETURN ADDR OF UNIQUE INTERFACE. ADA =D-5 (HAS BEEN ISZ'D) LDA A,I LDB A,I THIS IS THE ONE. STB NEXIT (*+N+1) CMA (-*-1) ADB A N ADB VOUT FORM RETURN ADDRESS. STB RTN LDB JEXIT STORE JUMP THERE. STB RTN,I CMA,INA (*+1) STA VIN FOR .VSET CLA CLEAR LAST-TIME FLAG. STA LASTF STA OFSET AND SET TOTAL # SO FAR = 0. * * USE .VSET TO FINISH SETTING UP. * JSB .VSET SET IT UP ! DEF *+7 VIN DEF *-* OLD PARAM LIST. VOUT DEF PARAM NEW PARAM LIST. DMAPS DEF MAPS MAP TABLE. #MISC ABS *-* # MISC PARAMS. #VECT ABS *-* # VECTORS. KNW ABS *-* (1024 / # WORDS PER ELEMENT) - 1 JMP ERROR ERROR EXIT. JMP HARD HARD WAY EXIT. SKP * LOAD MAPS. * ESEG JSB .ESEG A = 0, B = 2 * # VECT. DEF *+2 DEF MAPS JMP ERROR IF MAPPING ERROR. * * DO THE NON-EMA CALL. * LDA SAVEA RESTORE A,B. (X,Y WEREN'T CHANGED) LDB SAVEB CALL JSB *-* CALL TO NON-EMA ROUTINE. RTN DEF *-* PARAM BSS 16 ROOM FOR 16 PARAMS & JUMP AFTER THEM. JEXIT JMP BEXIT,I THE JUMP TO BE PUT THERE. EXIT STA SAVEA SAVE A,B STB SAVEB * * DO ANY SPECIAL PROCESSING AFTER EACH CALL. * LDA FLAGS SEE IF WE RETURN TO THE CALLER FOR SPECIALS. SLA,RSS IT'S BIT 0 NOW. JMP EXIT2 NO. JSB .WCOM,I YES. DO IT. DEF PARAM ADDRESS OF PARAM LIST. LASTF ABS *-* LAST-TIME FLAG. LDA FLAGS EXIT2 SSA,RSS IS SCALAR AN ORDINAL ? (BIT 15 NOW) JMP EXIT4 NO. LDA PARAM,I YES. A = THE ORDINAL. CMA,SSA,RSS NEW ONE ? JMP EXIT3 NO. ("A" IS CORRECT VALUE) CMA YES. RESTORE "A". ADA OFSET  MAKE IT RELATIVE TO TRUE START. EXIT3 XOR LASTF IF NOT LAST TIME, COMPLEMENT IT. STA PARAM,I LDA OFSET UPDATE OFFSET. ADA M STA OFSET EXIT4 LDA SAVEA RESTORE A,B (X,Y UNCHANGED) LDB SAVEB ISZ LASTF LAST TIME ? JMP NEXIT,I YES, ALL DONE. * * HARDWAY CODE BETWEEN SECTIONS. * LDA VOUT SET UP POINTERS. ADA #MISC STA TV1 LDA DMAPS STA TMAPS LDA #VECT CMA,INA STA TNV SKP * LOOP THRU VECTORS UPDATING MAPS & MSEG POINTERS. * LOOP1 DLD TV1,I B = INDEX ADDR. LDA B,I A = INDEX. MPY MNW MNW * INDEX. ASL 6 B = PAGE INCREMENT. ALF,ALF RAL,RAL A = DISPLACEMENT INCREMENT. STA T1 SAVE DISP INCR. LDA TV1,I BUMP VECTOR ADDRESS. AND =B176000 PAGE # STA LASTF (USE LASTF AS TEMP) XOR TV1,I DISP ADA T1 BUMP DISPLACEMENT. ADA =D-1024 CHECK IF PAGE OVERFLOW. SSA,RSS IF SO, A >= 0. INB YES. ADVANCE PAGE #. AND =B1777 REMOVE OVERFLOW IF THERE. IOR LASTF ADD PAGE # FOR FULL ADDRESS. STA TV1,I UPDATE IT. ISZ TV1 ISZ TV1 ADB TMAPS,I BUMP PAGE. STB TMAPS,I UPDATE MAPS. ISZ TMAPS INB STB TMAPS,I ISZ TMAPS ISZ TNV COUNT VECTORS. JMP LOOP1 IF MORE. * * COMPUTE AMOUNT LEFT. SET RETURN ADDRESS IF FLAGGED. * LDB TN B = - (AMOUNT LEFT) LDA B A = (AMOUNT LEFT) CMA,INA ADB M B = - (NEW AMOUNT LEFT) SSB,RSS LAST TIME ? STA M YES. CORRECT OPERATION COUNT. LDA FLAGS IF SPECIAL, SET RTN ADDR TO -M. RAR,ERA E=1 IF SPECIAL. LDA M M CMA,INA SEZ SPECIAL ? STA RTN YES. NEXT fSTB TN B = - (NEW AMOUNT LEFT) ASR 15 B = 0 IF LAST TIME, -1 IF NOT. STB LASTF CLA SET A = 0 LDB #VECT AND B = 2 * # VECTORS. BLS JMP ESEG GO DO ANOTHER. SKP * HARD WAY SETUP. COMPUTE M*NW. * HARD STA M MAX PER REMAP. ISZ KNW FORM 1024 / NW LDA =D1024 RECONSTRUCT NW. CLB DIV KNW STA T1 MPY M M*NW DEFM EQU *-1 STA MNW (FITS IN 15 BITS) * * LOOP TO ADJUST FOR NEGATIVE INDICES. * LDA VOUT SET UP POINTERS ETC. ADA #MISC STA TV1 LDA DMAPS STA TMAPS LDA #VECT CMA,INA STA TNV LOOP2 DLD TV1,I B = ADDR INDEX. LDB B,I B = INDEX. SSB,RSS NEG INCREMENT ? (NEG INDEX) JMP LOOP3 NO. AND =B1777 YES. SEE IF FIRST ELEMENT CROSSES PAGE. ADA T1 ADA =D-1025 SSA,RSS WELL ? JMP LOOP3 YES. LEAVE ALL AS IT WAS. LDB TMAPS,I NO. BACK UP MAPS. CCA ADA B DST TMAPS,I LDA TV1,I AND ADVANCE MSEG ADDR TO SECOND PAGE. ADA =D1024 STA TV1,I LOOP3 ISZ TMAPS LOOP. ISZ TMAPS ISZ TV1 ISZ TV1 ISZ TNV COUNT # VECT. JMP LOOP2 IF MORE. LDB TV1,I GET N. LDB B,I N. LDA DEFM CHANGE DEF IN CALL TO POINT TO M. STA TV1,I LDA B A = N. CMB,INB B = -N. ADB M B - -(NEW AMOUNT LEFT) SSB,RSS LAST TIME ? STA M YES. CORRECT OPERATION COUNT. JMP NEXT GO DO FIRST OP. SKP * ERROR HANDLING. * ERROR JSB ERR0 COMPLAIN. JMP NEXIT,I & EXIT. SPC 3 UNS END ^*($$* r ~ 12824-18046 2026 S C0122 &.VSRP              H0101 vASMB,L HED ".VSRP" - RPL'ING OF: VADD VSUB VMPY VDIV VSAD VSSB VSMY VSDV . NAM .VSRP,7 12824-1X046 REV.2026 800506 EXT .VECT ENT VADD,VSUB,VMPY,VDIV,VSAD,VSSB,VSMY,VSDV ************************************************************** * * NAME: .VSRP * SOURCE: 12824-18046 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * A EQU 0 B EQU 1 * * .VCT REPLACES CALLS TO VADD...VSDV WITH THE APPROPRIATE * TWO-WORD OPCODE. IF THE MAIN OPCODE IS NOT RPL'D, IT * FAKES A JSB INSTEAD OF REPLACING THE ORIGINAL JSB. * VADD NOP JSB COM OCT 000000 * VSUB NOP JSB COM OCT 000020 * VMPY NOP JSB COM OCT 000040 * VDIV NOP JSB COM OCT 000060 * VSAD NOP JSB COM OCT 000400 * VSSB NOP JSB COM OCT 000420 * VSMY NOP JSB COM OCT 000440 * VSDV NOP JSB COM OCT 000460 * COM NOP LDA COM,I A = SUB-OPCODE. LDB COM GET ADDRESS + 1 OF ORIGINAL JSB. ADB =D-2 LDB B,I STA B,I OVERLAY ORIGNAL RTN PTR WITH SUB-OPCODE. LDA OPCOD A = MAIN OPCODE. SSA,RSS SOFTWARE ? JMP SOFT YES, SPECIAL CASE. ADB =D-1 NO. OVERLAY ORIGINAL JSB WITH MAIN OPCODE. STA B,I JMP B,I GO EXECUTE THE OPCODE. * SOFT STB A,I FAKE A JSB TO THE SOFTWARE. FIRST, RTN ADDR. INA THEN, JMP A,I THE ENTRY. * OPCOD DEF .VECT+0 \   END   sz 12824-18047 2026 S C0122 &.VDRP              H0101 gASMB,L HED ".VDRP" - RPL'ING OF: DVADD DVSUB .... DVSMY DVSDV . NAM .VDRP,7 12824-1X047 REV.2026 800506 EXT .DVCT ENT DVADD,DVSUB,DVMPY,DVDIV,DVSAD,DVSSB,DVSMY,DVSDV ************************************************************** * * NAME: .VDRP * SOURCE: 12824-18047 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * A EQU 0 B EQU 1 * * .DVECT REPLACES CALLS TO DVADD...DVSDV WITH THE APPROPRIATE * TWO-WORD OPCODE. IF THE MAIN OPCODE IS NOT RPL'D, IT FAKES * A JSB INSTEAD OF REPLACING THE ORIGINAL JSB. * DVADD NOP JSB COM OCT 004002 * DVSUB NOP JSB COM OCT 004022 * DVMPY NOP JSB COM OCT 004042 * DVDIV NOP JSB COM OCT 004062 * DVSAD NOP JSB COM OCT 004402 * DVSSB NOP JSB COM OCT 004422 * DVSMY NOP JSB COM OCT 004442 * DVSDV NOP JSB COM OCT 004462 * COM NOP LDA COM,I A = SUB-OPCODE. LDB COM GET ADDRESS + 1 OF ORIGINAL JSB. ADB =D-2 LDB B,I STA B,I OVERLAY ORIGINAL RTN PTR WITH SUB-OPCODE. LDA OPCOD A = MAIN OPCODE. SSA,RSS SOFTWARE ? JMP SOFT YES, SPECIAL CASE. ADB =D-1 NO. OVERLAY ORIGINAL JSB WITH MAIN OPCODE. STA B,I JMP B,I GO EXECUTE THE OPCODE. * SOFT STB A,I FAKE A JSB TO THE SOFTWARE. FIRST, RTN ADDR. INA THEN, JMP A,I THE ENTRY. * OPCOD DEF   .DVCT+0 END  t{ 12824-18048 2026 S C0122 &.VRPL              H0101 qASMB,L HED RPL'S FOR THE VECTOR INSTRUCTION SET. NAM .VRPL,7 12824-1X048 REV.2026 800506 ENT .VECT,.DVCT ENT VSUM,VNRM,VDOT ************************************************************** * * NAME: .VRPL * SOURCE: 12824-18048 * RELOC: PART OF 12824-12001 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** ENT VMAX,VMAB,VMIN,VMIB ENT VMOV,VSWP ENT .ESEG,.VSET * ENT DVSUM,DVNRM,DVDOT ENT DVMAX,DVMAB,DVMIN,DVMIB ENT DVMOV,DVSWP * .VECT RPL 101460B VPIV RPL 101461B VABS RPL 101462B VSUM RPL 101463B VNRM RPL 101464B VDOT RPL 101465B VMAX RPL 101466B VMAB RPL 101467B VMIN RPL 101470B VMIB RPL 101471B VMOV RPL 101472B VSWP RPL 101473B .ESEG RPL 101475B .VSET RPL 101476B * .DVCT RPL 105460B DVPIV RPL 105461B DVABS RPL 105462B DVSUM RPL 105463B DVNRM RPL 105464B DVDOT RPL 105465B DVMAX RPL 105466B DVMAB RPL 105467B DVMIN RPL 105470B DVMIB RPL 105471B DVMOV RPL 105472B DVSWP RPL 105473B * END sl u{ 12824-18049 2026 S C0122 &EQUIV              H0101 FTN,Y,L C************************************************************* C C NAME: EQUIV C SOURCE: 12824-18049 C RELOC: PART OF 12824-12002 C PGMR: BG,CG C C *********************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * C * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * C *********************************************************** * C************************************************************* SUBROUTINE VADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) - V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) * V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) / V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S + V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S - V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S * V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S / V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = S * V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE VDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1),V2(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 J2 = 1 DO 10 I = 1,N DS = DS + DBLE(V1(J1)) * DBLE(V2(J2)) J1 = J1 + IX1 10 J2 = J2 + IX2 S = SNGM(DS) RETURN END SUBROUTINE VABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = ABS(V1(J1)) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 DO 10 I = 1,N DS = DS + V1(J1) 10 J1 = J1 + IX1 S = SNGM(DS) RETURN END SUBROUTINE VNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1(1) DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 J1 = 1 DO 10 I = 1,N DS = DS + ABS(V1(J1)) 10 J1 = J1 + IX1 S = SNGM(DS) RETURN END SUBROUTINE VMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMAX = V1(J1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = ABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMAX = ABS(V1(J1)) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMIN = V1(J1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = ABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMIN = ABS(V1(J1)) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE VMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE VSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2(1),TEMP IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N TEMP = V1(J1) V1(J1) = V2(J2) V2(J2) = TEMP J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE WADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 + V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 - V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 * V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 / V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S + V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S - V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S * V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S / V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = S * V1 + V2 CALL WFIX2(V1,IX1) CALL WFIX2(V2,IX2) 10 CALL WFIX2(V3,IX3) RETURN END SUBROUTINE WDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL S,V1,V2 EMA V1,V2 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + DBLE(V1) * DBLE(V2) CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) S = SNGM(DS) RETURN END SUBROUTINE WABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = ABS(V1) CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL S,V1 EMA V1 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + V1 10 CALL WFIX2(V1,IX1) S = SNGM(DS) RETURN END SUBROUTINE WNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 E REAL S,V1 EMA V1 DOUBLE PRECISION DS IF (N.LE.0) RETURN DS = 0.0D0 DO 10 I = 1,N DS = DS + ABS(V1) 10 CALL WFIX2(V1,IX1) S = SNGM(DS) RETURN END SUBROUTINE WMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1 DO 10 I = 2,N CALL WFIX2(V1,IX1) TMAX = V1 IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE WMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = ABS(V1) DO 10 I = 2,N CALL WFIX2(V1,IX1) TMAX = ABS(V1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE WMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1 DO 10 I = 2,N CALL WFIX2(V1,IX1) TMIN = V1 IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE WMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 REAL V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = ABS(V1) DO 10 I = 2,N CALL WFIX2(V1,IX1) TMIN = ABS(V1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE WMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = V1 CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WVMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 80K(0506 REAL V1,V2(1) EMA V1 IF (N.LE.0) RETURN J2 = 1 DO 10 I = 1,N V2(J2) = V1 CALL WFIX2(V1,IX1) 10 J2 = J2 + IX2 RETURN END SUBROUTINE VWMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1(1),V2 EMA V2 IF (N.LE.0) RETURN J1 = 1 DO 10 I = 1,N V2 = V1(J1) J1 = J1 + IX1 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE WSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 REAL V1,V2,TEMP EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N TEMP = V1 V1 = V2 V2 = TEMP CALL WFIX2(V1,IX1) 10 CALL WFIX2(V2,IX2) RETURN END SUBROUTINE DVADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) - V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) * V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = V1(J1) / V2(J2) J1 =d J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S + V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S - V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S * V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = S / V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1),V3(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 J3 = 1 DO 10 I = 1,N V3(J3) = S * V1(J1) + V2(J2) J1 = J1 + IX1 J2 = J2 + IX2 10 J3 = J3 + IX3 RETURN END SUBROUTINE DVDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1),V2(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 J2 = 1 DO 10 I = 1,N S = S + V1(J1) * V2(J2) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = DABS(V1(J1)) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 DO 10 I = 1,N S = S + V1(J1) 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1(1) IF (N.LE.0) RETURN S = 0.0D0 J1 = 1 DO 10 I = 1,N S = S + DABS(V1(J1)) 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMAX = V1(J1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MAX,TMAX IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = DABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMAX = DABS(V1(J1)) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1(1) J1 = 1 + IX1 DO 10 I = 2,N TMIN = V1(J1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),MIN,TMIN IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = DABS(V1(1)) J1 = 1 + IX1 DO 10 I = 2,N TMIN = DABS(V1(J1)) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 J1 = J1 + IX1 RETURN END SUBROUTINE DVMOV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1) IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N V2(J2) = V1(J1) J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2(1),TEMP IF (N.LE.0) RETURN J1 = 1 J2 = 1 DO 10 I = 1,N TEMP = V1(J1) V1(J1) = V2(J2) V2(J2) = TEMP J1 = J1 + IX1 10 J2 = J2 + IX2 RETURN END SUBROUTINE DWADD(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 + V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWSUB(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 - V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWMPY(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 * V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWDIV(V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = V1 / V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SU?BROUTINE DWSAD(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S + V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSSB(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S - V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSMY(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S * V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSDV(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = S / V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWPIV(S,V1,IX1,V2,IX2,V3,IX3,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2,V3 EMA V1,V2,V3 IF (N.LE.0) RETURN DO 10 I = 1,N V3 = S * V1 + V2 CALL WFIX4(V1,IX1) CALL WFIX4(V2,IX2) 10 CALL WFIX4(V3,IX3) RETURN END SUBROUTINE DWDOT(S,V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1,V2 EMA V1,V2 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + V1 * V2 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWABS(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = DABS(V1) CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSUM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1 EMA V1 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + V1 10 CALL WFIX4(V1,IX1) RETURN END SUBROUTINE DWNRM(S,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION S,V1 EMA V1 IF (N.LE.0) RETURN S = 0.0D0 DO 10 I = 1,N S = S + DABS(V1) 10 CALL WFIX4(V1,IX1) RETURN END SUBROUTINE DWMAX(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = V1 DO 10 I = 2,N CALL WFIX4(V1,IX1) TMAX = V1 IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE DWMAB(IMAX,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MAX,TMAX EMA V1 IF (N.LE.0) RETURN IMAX = 1 IF (N.EQ.1) RETURN MAX = DABS(V1) DO 10 I = 2,N CALL WFIX4(V1,IX1) TMAX = DABS(V1) IF (TMAX.LE.MAX) GO TO 10 IMAX=I MAX=TMAX 10 CONTINUE RETURN END SUBROUTINE DWMIN(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = V1 DO 10 I = 2,N CALL WFIX4(V1,IX1) TMIN = V1 IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE DWMIB(IMIN,V1,IX1,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,MIN,TMIN EMA V1 IF (N.LE.0) RETURN IMIN = 1 IF (N.EQ.1) RETURN MIN = DABS(V1) DO 10 I = 2,N CALL WFIX4(V1,IX1) TMIN = DABS(V1) IF (TMIN.GE.MIN) GO TO 10 IMIN=I MIN=TMIN 10 CONTINUE RETURN END SUBROUTINE DWMOV(V1,IX1,V2,IX2hNLH,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2 EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N V2 = V1 CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWVMV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2(1) EMA V1 IF (N.LE.0) RETURN J2 = 1 DO 10 I = 1,N V2(J2) = V1 CALL WFIX4(V1,IX1) 10 J2 = J2 + IX2 RETURN END SUBROUTINE DVWMV(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1(1),V2 EMA V2 IF (N.LE.0) RETURN J1 = 1 DO 10 I = 1,N V2 = V1(J1) J1 = J1 + IX1 10 CALL WFIX4(V2,IX2) RETURN END SUBROUTINE DWSWP(V1,IX1,V2,IX2,N) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION V1,V2,TEMP EMA V1,V2 IF (N.LE.0) RETURN DO 10 I = 1,N TEMP = V1 V1 = V2 V2 = TEMP CALL WFIX4(V1,IX1) 10 CALL WFIX4(V2,IX2) RETURN END FUNCTION SNGM(X) +,12824-1X049 REV.2026 800506 DOUBLE PRECISION X,Y INTEGER IS(2),IY(4) EQUIVALENCE (S,IS),(Y,IY) Y=X IS(1)=IY(1) IS(2)=(IY(2).AND.177400B).OR.(IY(4).AND.377B) SNGM=S RETURN END UUN v 12824-18050 2026 S C0122 &WFIX              H0101 ~fASMB,L NAM WFIX,7 12824-1X050 REV.2026 800506 ENT WFIX2,WFIX4 EXT .ENTR ************************************************************** * * NAME: WFIX * SOURCE: 12824-18050 * RELOC: PART OF 12824-12002 * PGMR: BG,CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * V1 NOP IX1 NOP WFIX2 NOP JSB .ENTR DEF V1 LDB IX1,I DOUBLE INDEX & MAKE DOUBLE INT. CLA ASR 15 CLE ADA V1,I ADD ADDRESS. STA V1,I ISZ V1 SEZ INB ADB V1,I STB V1,I JMP WFIX2,I SPC 3 W1 NOP JX1 NOP WFIX4 NOP JSB .ENTR DEF W1 LDB JX1,I QUADRUPLE INDEX & MAKE DOUBLE INT. CLA ASR 14 CLE ADA W1,I ADD ADDRESS. STA W1,I ISZ W1 SEZ INB ADB W1,I STB W1 JMP WFIX4,I * END / w} 12824-18051 2026 S C0122 &VISF              H0101 poFTN4,L,Y C************************************************************* C C NAME: VISF C SOURCE: 12824-18051 C RELOC: PART OF 12824-16002 C PGMR: CG C C *********************************************************** C * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * C * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * C * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * C * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * C *********************************************************** C C************************************************************* C $EMA(AREA,1) PROGRAM VISOD (),12824-1X051 REV.2026 800506 C C COMMON / AREA / EV1(500) COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DIMENSION V1(600),V2(600),V3(600),V4(600) DIMENSION IBUFF(5) C DOUBLE PRECISION DV1(300),DV2(300),DV3(300),DV4(300),DSUM EQUIVALENCE (V1,DV1),(V2,DV2),(V3,DV3),(V4,DV4) C CALL RMPAR(IBUFF) LU = IBUFF(1) IPASS = IBUFF(2) IPRIV = IBUFF(3) IF (LU.LE.0) LU = LOGLU(LU) IF (IPASS.LE.0) IPASS = 1 C C********************************************************************* C C PERFORM SELF-TEST TO CHECK FIRMWARE INSTALLATION C CALL SELFT(IERR) IF (IERR.EQ.0) GOTO 10 CALL EXEC(2,LU,21H**** SELFTEST FAILURE,-21) STOP 11 C C********************************************************************** C C MAJOR LOOP C 10 DO 99 IDUMMY = 1,IPASS C NMAX = 600 ITEST(1) = 2H ITEST(2) = 1 C C********************************************************************* C C TEST FOR CASES N=0, N<0 C CALL INITV(V1,V2,V3,V4) CALL VADD(V1,1,V2,1,V3,1,0) CALL VCOMP(V3,V4) C CALL VADD(V1,1,V2,1,V3,1,-1) CALL VCOMP(V3,V4) C C********************************************************************* C*_^******************************************************************** C C TEST SINGLE PRECISION FIRMWARE WITH UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 1 INCR2 = 1 INCR3 = 1 N = NMAX CALL INITV(V1,V2,V3,V4) CALL VTEST(V1,V2,V3,V4) C C********************************************************************* C C TEST SINGLE PRECISION FIRMWARE WITH NON-UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 10 INCR2 = 20 INCR3 = 30 N = NMAX/30 CALL INITV(V1,V2,V3,V4) CALL VTEST(V1,V2,V3,V4) C C C********************************************************************* C C C TEST DOUBLE PRECISION FIRMWARE WITH UNITY INCREMENTS C ITEST(1) = 2H D ITEST(2) = 0 INCR1 = 1 INCR2 = 1 INCR3 = 1 NMAX = NMAX / 2 N = NMAX CALL INITD(DV1,DV2,DV3,DV4) CALL DVTST(DV1,DV2,DV3,DV4) C C C********************************************************************** C C C TEST DOUBLE PRECISION FIRMWARE WITH NON-UNITY INCREMENTS C ITEST(2) = 0 INCR1 = 10 INCR2 = 20 INCR3 = 30 N = NMAX/30 CALL INITD(DV1,DV2,DV3,DV4) CALL DVTST(DV1,DV2,DV3,DV4) C C********************************************************************* C********************************************************************* C C C TEST .ERES IN ASMB C ITEST(1) = 2H . ITEST(2) = ITEST(2) + 1 CALL TERES(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C C IF IPRIV FLAG NOT SET, SKIP PRIVILEGED SECTION C IF (IPRIV.EQ.0) GOTO 40 C C C********************************************************************* C C C LOCK PROGRAM INTO MEMORY FOR NEXT TWO TESTS C CALL EXEC(22,1) C C C********************************************************************** vSC C C TEST .ESEG IN ASMB C ITEST(2) = ITEST(2) + 1 CALL TESEG(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C C TEST .VSET IN ASMB C ITEST(2) = ITEST(2) + 1 CALL TVSET(IERR) IF (IERR.NE.0) CALL ERROR C C C********************************************************************* C C UNLOCK PROGRAM FROM MEMORY C CALL EXEC(22,0) C C C********************************************************************** C********************************************************************** C C PERFORM AN EMA VECTOR INSTRUCTION TO SEE THAT IT ALL PLAYS C ITEST(1) = 2H ITEST(2) = ITEST(2) + 1 C DO 20 I=1,500 EV1(I) = 100. * SIN(100. * SIN(FLOAT(I))) 20 CONTINUE C CALL WSUM(SUM1,EV1(1),1,500) C DSUM = 0.0D0 DO 30 I=1,500 DSUM = DSUM + DBLE((EV1(I))) 30 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C*********************************************************************** C C PRINT COMPLETION MESSAGE C 40 IF (NERR.NE.0) STOP 11 C IF (IPRIV.EQ.0) CALL EXEC(2,LU, + 49H WARNING - PRIVILEGED INSTRUCTIONS NOT TESTED,-49) C CALL EXEC(2,LU,44HVIS ON-LINE DIAGNOSTIC SUCCESSFUL COMPLETION, + -44) C C********************************************************************* C C TEST FOR OPERATOR BREAK C IF (IFBRK(I).NE.0) STOP 77 C C********************************************************************* C C END OF MAJOR LOOP C 99 CONTINUE C C********************************************************************* END C********************************************************************* C SUBROUTINE VTEST(V1,V2,V3,V4),12824-1X051 REV.2026 800506 C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C  DIMENSION V1(1),V2(1),V3(1),V4(1) DOUBLE PRECISION DSUM C S = 3.14 C C********************************************************************* C C CALL VADD(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 10 L=1,N V4(I4) = V1(I1) + V2(I2) CALL INCI 10 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSUB(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 20 L=1,N V4(I4) = V1(I1) - V2(I2) CALL INCI 20 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VMPY(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 30 L=1,N V4(I4) = V1(I1) * V2(I2) CALL INCI 30 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C********************************************************************* C CALL VDIV(V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 40 L=1,N V4(I4) = V1(I1) / V2(I2) CALL INCI 40 CONTINUE C CALL VCOMP(V3,V4) C C********************************************************************* C C CALL VSAD(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 50 L=1,N V4(I4) = S + V1(I1) CALL INCI 50 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSSB(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 60 L=1,N V4(I4) = S - V1(I1) CALL INCI 60 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VSMY(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 70 L=1,N V4(I4) = S * V1(I1) CALL INCI 70 CONTINUE C  CALL VCOMP(V3,V4) C C C********************************************************************* C********************************************************************* C C CALL VSDV(S,V1,INCR1,V3,INCR3,N) C CALL INITI DO 80 L=1,N V4(I4) = S / V1(I1) CALL INCI 80 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C C CALL VPIV(S,V1,INCR1,V2,INCR2,V3,INCR3,N) C CALL INITI DO 90 L=1,N V4(I4) = S * V1(I1) + V2(I2) CALL INCI 90 CONTINUE C CALL VCOMP(V3,V4) C C C********************************************************************* C CALL VABS(V1,INCR1,V3,INCR3,N) C CALL INITI DO 100 L=1,N V4(I4) = ABS(V1(I1)) CALL INCI 100 CONTINUE C CALL VCOMP(V3,V4) C C********************************************************************* C CALL VSUM(SUM1,V1,INCR1,N) C CALL INITI DSUM = 0.0D0 DO 110 L=1,N DSUM = DSUM + DBLE(V1(I1)) CALL INCI 110 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C********************************************************************* C********************************************************************* C C CALL VNRM(SUM1,V1,INCR1,N) C CALL INITI DSUM = 0.0D0 C DO 120 L=1,N DSUM = DSUM + DABS(DBLE(V1(I1))) CALL INCI 120 CONTINUE C CALL TRUNC(DSUM,SUM2) IF(SUM1.NE.SUM2) CALL ERROR C C C********************************************************************* C CALL VDOT(SUM1,V1,INCR1,V2,INCR2,N) C CALL INITI DSUM = 0.0D0 C DO 130 L=1,N DSUM = DSUM + DBLE(V1(I1)) * DBLE(V2(I2)) CALL INCI 130 CONTINUE C CALL TRUNC(DSUM,SUM2) IF (SUM1.NE.SUM2) CALL ERROR C C*************************************************2******************** C CALL VMAX(IMAX1,V1,INCR1,N) C CALL INITI IMAX2 = 1 AMAX = V1(1) C DO 140 L=1,N IF (AMAX.GE.V1(I1)) GOTO 145 IMAX2 = L AMAX = V1(I1) 145 CALL INCI 140 CONTINUE C IF (IMAX1.NE.IMAX2) CALL ERROR C C********************************************************************* C CALL VMAX(IMAX1,V1,INCR1,1) IF (IMAX1.NE.1) CALL ERROR C C********************************************************************* C********************************************************************* C C CALL VMAB(IMAB1,V1,INCR1,N) C CALL INITI IMAB2 = 1 AMAB = ABS(V1(1)) C DO 150 L=1,N IF (AMAB.GE.ABS(V1(I1))) GOTO 155 IMAB2 = L AMAB = ABS(V1(I1)) 155 CALL INCI 150 CONTINUE C IF (IMAB1.NE.IMAB2) CALL ERROR C C C********************************************************************* C C CALL VMIN(IMIN1,V1,INCR1,N) C CALL INITI IMIN2 = 1 AMIN = V1(1) C DO 160 L=1,N IF (AMIN.LE.V1(I1)) GOTO 165 IMIN2 = L AMIN = V1(I1) 165 CALL INCI 160 CONTINUE C IF (IMIN1.NE.IMIN2) CALL ERROR C C C********************************************************************* C CALL VMIB(IMIB1,V1,INCR1,N) C CALL INITI IMIB2 = 1 AMIB = ABS(V1(1)) DO 170 L=1,N IF (AMIB.LE.ABS(V1(I1))) GOTO 175 IMIB2 = L AMIB = ABS(V1(I1)) 175 CALL INCI 170 CONTINUE C IF (IMIB1.NE.IMIB2) CALL ERROR C C********************************************************************** C********************************************************************** C CALL VMOV(V1,INCR1,V3,INCR3,N) C CALL INITI DO 180 L=1,N V4(I4) = V1(I1) CALL INCI 180 CONTINUE C CALL VCOMP(V3,V4) C C*****************************************V***************************** C CALL INITV(V1,V1,V3,V4) INCR2 = INCR1 C CALL VSWP(V1,INCR1,V3,INCR3,N) C CALL INITI DO 190 L=1,N T = V2(I2) V2(I2) = V4(I4) V4(I4) = T CALL INCI 190 CONTINUE C CALL VCOMP(V1,V2) CALL VCOMP(V3,V4) C C********************************************************************* RETURN END C********************************************************************* C SUBROUTINE DVTST(DV1,DV2,DV3,DV4),12824-1X051 REV.2026 800506 C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DOUBLE PRECISION DV1(1),DV2(1),DV3(1),DV4(1) DOUBLE PRECISION DS,DSUM1,DSUM2,DMAX,DMAB,DMIN,DMIB,DT C DS = 3.14D0 C C********************************************************************* C C CALL DVADD(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 10 L=1,N DV4(I4) = DV1(I1) + DV2(I2) CALL INCI 10 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVSUB(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 20 L=1,N DV4(I4) = DV1(I1) - DV2(I2) CALL INCI 20 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVMPY(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 30 L=1,N DV4(I4) = DV1(I1) * DV2(I2) CALL INCI 30 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C********************************************************************* C CALL DVDIV(DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 40 L=1,N DV4(I4) = DV1(I1) / DV2(I2) CALL INCI 40 CONTINUE C CALL DVCMP(DV3,DV4) C ߔ C********************************************************************* C C CALL DVSAD(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 50 L=1,N DV4(I4) = DS + DV1(I1) CALL INCI 50 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVSSB(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 60 L=1,N DV4(I4) = DS - DV1(I1) CALL INCI 60 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVSMY(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 70 L=1,N DV4(I4) = DS * DV1(I1) CALL INCI 70 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C********************************************************************* C C CALL DVSDV(DS,DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 80 L=1,N DV4(I4) = DS / DV1(I1) CALL INCI 80 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C C CALL DVPIV(DS,DV1,INCR1,DV2,INCR2,DV3,INCR3,N) C CALL INITI DO 90 L=1,N DV4(I4) = DS * DV1(I1) + DV2(I2) CALL INCI 90 CONTINUE C CALL DVCMP(DV3,DV4) C C C********************************************************************* C CALL DVABS(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 100 L=1,N DV4(I4) = DABS(DV1(I1)) CALL INCI 100 CONTINUE C CALL DVCMP(DV3,DV4) C C********************************************************************* C CALL DVSUM(DSUM1,DV1,INCR1,N) C CALL INITI DSUM2 = 0.0D0 DO 110 L=1,N DSUM2 = DSUM2 + DV1(I1) CALL INCI 110 CONTINUE C IF (DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C********************************************************************* C C C CALL DVNRM(DSUM1,DV1,INCR1,N) C CALL INITI DSUM2 = 0.0D0 C DO 120 L=1,N DSUM2 = DSUM2 + DABS(DV1(I1)) CALL INCI 120 CONTINUE C IF(DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C C CALL DVDOT(DSUM1,DV1,INCR1,DV2,INCR2,N) C CALL INITI DSUM2 = 0.0D0 C DO 130 L=1,N DSUM2 = DSUM2 + DV1(I1) * DV2(I2) CALL INCI 130 CONTINUE C IF (DSUM1.NE.DSUM2) CALL ERROR C C C********************************************************************* C C C CALL DVMAX(IMAX1,DV1,INCR1,N) C CALL INITI IMAX2 = 1 DMAX = DV1(1) C DO 140 L=1,N IF (DMAX.GE.DV1(I1)) GOTO 145 IMAX2 = L DMAX = DV1(I1) 145 CALL INCI 140 CONTINUE C IF (IMAX1.NE.IMAX2) CALL ERROR C C C C********************************************************************* C********************************************************************* C C CALL DVMAB(IMAB1,DV1,INCR1,N) C CALL INITI IMAB2 = 1 DMAB = DABS(DV1(1)) C DO 150 L=1,N IF (DMAB.GE.DABS(DV1(I1))) GOTO 155 IMAB2 = L DMAB = DABS(DV1(I1)) 155 CALL INCI 150 CONTINUE C IF (IMAB1.NE.IMAB2) CALL ERROR C C C********************************************************************* C C CALL DVMIN(IMIN1,DV1,INCR1,N) C CALL INITI IMIN2 = 1 DMIN = DV1(1) C DO 160 L=1,N IF (DMIN.LE.DV1(I1)) GOTO 165 IMIN2 = L DMIN = DV1(I1) 165 CALL INCI 160 CONTINUE C IF (IMIN1.NE.IMIN2) CALL ERROR C C C********************************************************************* C CALL DVMIB(IMIB1,DV1,INCR1,N) C CALL INITI IMIB2 = 1 DMIB = DABS(DV1(1)) DO 170 L=1,N IF (DMIB.LE.DABS(DV1(I1))) GOTO 175 IMIB2 = L DMIB = DABS(DV1(I1)) 175 CALL INCI 170 CONTINUE C IF (IMIB1.NE.IMIB2) CALL ERROR C C********************************************************************** C********************************************************************** C CALL DVMOV(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 180 L=1,N DV4(I4) = DV1(I1) CALL INCI 180 CONTINUE C CALL DVCMP(DV3,DV4) C C********************************************************************** C CALL INITD(DV1,DV1,DV3,DV4) INCR2 = INCR1 C CALL DVSWP(DV1,INCR1,DV3,INCR3,N) C CALL INITI DO 190 L=1,N DT = DV2(I2) DV2(I2) = DV4(I4) DV4(I4) = DT CALL INCI 190 CONTINUE C CALL DVCMP(DV1,DV2) CALL DVCMP(DV3,DV4) C C********************************************************************* RETURN END C********************************************************************* C SUBROUTINE INITV(V1,V2,V3,V4),12824-1X051 REV.2026 800506 C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR DIMENSION V1(1),V2(1),V3(1),V4(1) C DO 10 I=1,NMAX V1(I) = 100. * SIN(100. * SIN(FLOAT(I))) V2(I) = 100. * COS(100. * COS(FLOAT(I))) V3(I) = 0.0 V4(I) = 0.0 10 CONTINUE C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE INITD(DV1,DV2,DV3,DV4),12824-1X051 REV.2026 800506 C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR DOUBLE PRECISION DV1(1),DV2(1),DV3(1),DV4(1) C DO 10 I=1,NMAX DV1(I) = 100D0 * DSIN(100D0 * DSIN(DBLE(FLOAT(I)))) DV2(I) = 100D0 * DCOS(100D0 * DCOS(DBLE(FLOAT(I)))) N DV3(I) = 0D0 DV4(I) = 0D0 10 CONTINUE C RETURN C C*********************************************************************** END C********************************************************************* C SUBROUTINE INITI,12824-1X051 REV.2026 800506 C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C I1 = 1 I2 = 1 I3 = 1 I4 = 1 C ITEST(2) = ITEST(2) + 1 C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE INCI,12824-1X051 REV.2026 800506 C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 C I1 = I1 + INCR1 I2 = I2 + INCR2 I3 = I3 + INCR3 I4 = I4 + INCR3 C RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE VCOMP(V3,V4),12824-1X051 REV.2026 800506 C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DIMENSION V1(1),V2(1),V3(1),V4(1) C DO 10 I=1,NMAX IF (V3(I).NE.V4(I)) GOTO 20 10 CONTINUE C RETURN C C 20 CALL ERROR RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE DVCMP(DV3,DV4),12824-1X051 REV.2026 800506 C COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C DOUBLE PRECISION DV3(1),DV4(1) C DO 10 I=1,NMAX IF (DV3(I).NE.DV4(I)) GOTO 20 10 CONTINUE C RETURN C C 20 CALL ERROR RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE ERROR,12824-1X051 REV.2026 800506 C COMMON/PARAMLHFB/LU,N,NMAX,ITEST(2),NERR REAL NAMES(23),BUFFR(8) INTEGER IBUFF(2) EQUIVALENCE (IBUFF(1),BUFFR(7)) DATA NAMES / 4HVADD,4HVSUB,4HVMPY,4HVDIV,4HVSAD,4HVSSB, + 4HVSMY,4HVSDV,4HVPIV,4HVABS,4HVSUM,4HVNRM, + 4HVDOT,4HVMAX,4HVMAB,4HVMIN,4HVMIB,4HVMOV, + 4HVSWP,4HERES,4HESEG,4HVSET,4HWSUM / C DATA BUFFR / 4H****,4H ERR,4HOR I,4HN IN,4HSTRU,4HCTIO, + 4HN / C BUFFR(8) = NAMES(ITEST(2)) IBUFF(2) = ITEST(1) CALL EXEC(2,LU,BUFFR,-32) NERR = NERR + 1 RETURN C C********************************************************************* END C********************************************************************* C SUBROUTINE TRUNC(IDBLE,ISNGL),12824-1X051 REV.2026 800506 C DIMENSION IDBLE(1),ISNGL(1) C ISNGL(1) = IDBLE(1) IDBLE(2) = IDBLE(2).AND.177400B IDBLE(4) = IDBLE(4).AND.377B ISNGL(2) = IDBLE(2).OR.IDBLE(4) C RETURN C C*********************************************************************** END C********************************************************************* C BLOCK DATA C COMMON/INDEX/I1,I2,I3,I4,INCR1,INCR2,INCR3 COMMON/PARAM/LU,N,NMAX,ITEST(2),NERR C C DATA NERR / 0 / C C********************************************************************** END qH x 12824-18052 2026 S C0122 &SELFT              H0101 mASMB,L NAM SELFT 12824-1X052 REV.2026 800506 ENT SELFT EXT .ENTR ************************************************************** * * NAME: SELFT * SOURCE: 12824-18052 * RELOC: PART OF 12824-16002 * PGMR: CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * IERR BSS 1 SELFT NOP JSB .ENTR DEF IERR LIB 1 SAVE S IN B REGISTER CLA CLEAR S REGISTER OTA 1 OCT 105477 EXECUTE SELFTEST NOP SKIP ERROR RETURN LIA 1 READ RESULT OTB 1 RESTORE S REGISTER XOR =B102077 COMPARE TO HLT 77 STA IERR,I SAVE COMPARISON IN IERR JMP SELFT,I RETURN END p< y 12824-18053 2026 S C0122 &TERES              H0101 mASMB,L NAM TERES 12824-1X053 REV.2026 800506 ENT TERES EXT .ENTR,.ERES ************************************************************** * * NAME: TERES * SOURCE: 12824-18053 * RELOC: PART OF 12824-16002 * PGMR: CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** * IERR BSS 1 TERES NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ************************************************************************ * * CALL .ERES WITH #DIM < 0 * LDA TABL1 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************* * * CALL .ERES WITH L(1) > A(1) * LDA TABL2 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH #WORDS/ELEMENT < 0 * LDA TABL3 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH MSB OF DOUBLE INTEGER < 0 * LDA TABL4 SET A ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************* * * CALL .ERES WITH OVERFLOW IN DOUBLE INTEGER ADD * LDA TABL5 SET A = ADDRESS OF TABLE JSB ERR1 TEST FOR ERROR RETURN * ************************************************************************** * * CALL .ERES WITH D(1) < 0 * LDA TABL6 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * ************************************************************************** SKP ************************************************************************** * * CALL .ERES WITH OVERFLOW IN UPPER 16-BIT MPY * LDA TABL7 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH OVERFLOW IN MULTIPLY * LDA TABL8 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH CARRY OUT IN MULTIPLY * LDA TABL9 SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH OVERFLOW IN SHIFT * LDA TABLA SET A = ADDRESS OF TABLE JSB ERR3 TEST FOR ERROR RETURN * *************************************************************************** * * CALL .ERES WITH #DIM = 0 * JSB .ERES EMA ADDRESS RESOLVER DEF RTN1 NOP DUMMY ADDRESS DEF TABLB ARRAY DEFINTION TABLE RTN1 ISZ ERROR ERROR IF RETURNS HERE * CPA ELB TEST A REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP CPB EHB TEST B REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * ************************************************************************ * * NORMAL CALL, #WORDS ELEMENT = 1 * LDA TABLC SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* SKP ************************************************************************* * * NORM0AL CALL, #WORDS/ELEMENT = 2 * LDA TABLD SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * NORMAL CALL, #WORDS/ELEMENT = 3 * LDA TABLE SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * NORMAL CALL, #WORDS/ELEMENT = 4 * LDA TABLF SET A = ADDRESS OF TABLE JSB NORM2 TEST CALCULATION * ************************************************************************* * * RETURN ERROR COUNT * LDA ERROR STA IERR,I JMP TERES,I RETURN * ************************************************************************** SKP ************************************************************************** * ERR1 NOP STA TAB1 STORE TABLE ADDRESS IN CALL STRING JSB .ERES EMA ADDRESS RESOLVER DEF ERTN1 NOP DUMMY ARRAY ADDRESS TAB1 BSS 1 ARRAY DEFINITION TABLE DEF I1 ERTN1 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE JMP ERR1,I RETURN * ********************************************************************** * ERR3 NOP STA TAB3 STORE TABLE ADDRESS IN CALL STRING JSB .ERES EMA ADDRESS RESOLVER DEF ERTN3 NOP DUMMY ARRAY ADDRESS TAB3 BSS 1 DEF K1 DEF J1 DEF I1 ERTN3 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE JMP ERR3,I RETURN * I1 DEC 8 J1 DEC 8 K1 DEC 8 * ********************************************************************** * ABCHK NOP CPA ASC20 TEST A REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN CPB ASCEM TEST B REGISTER RSS JMP ABCHK,I ERROR RETURN ISZ ABCHK INCREMENT TO NORMAL RETURN JMP ABNCHK,I RETURN * ASC20 ASC 1,20 ASCEM ASC 1,EM ERROR BSS 1 * ********************************************************************** SKP ********************************************************************** * NORM2 NOP STA TAB2 STORE TABLE ADDRESS IN CALL STRING ADA =D7 STORE ANS ADDRESS STA ANS IN ANS * JSB .ERES EMA ADDRESS RESOLVER DEF NRTN NOP DUMMY ARRAY ADDRESS TAB2 BSS 1 ARRAY DEFINITION TABLE DEF J1 DEF I1 NRTN ISZ ERROR ERROR IF RETURNS HERE * CPA ANS,I TEST A REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP ISZ ANS BUMP ANSWER ADDRESS CPB ANS,I TEST B REGISTER JMP NORM2,I OK, RETURN ISZ ERROR ERROR IF SKIP JMP NORM2,I RETURN * ANS BSS 1 * ********************************************************************** SKP TABL1 DEF *+1 DEC -1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL2 DEF *+1 DEC 1 #DIM DEC -9 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL3 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC -1 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL4 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW OCT 177777 EMA OFFSET HIGH * TABL5 DEF *+1 DEC 1 #DIM DEC -1 -L(1) DEC 2 #WORDS/ELEMENT OCT 177777 EMA OFFSET LOW OCT 077777 EMA OFFSET HIGH * TABL6 DEF *+1 DEC 3 #DIM DEC -1 L(3) DEC -1 D(2) DEC -1 L(2) DEC -1  D(1) DEC -1 L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH SKP TABL7 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 21846 D(1) DEC -1 L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL8 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 9363 D(1) DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABL9 DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 32767 D(2) DEC -1 -L(2) DEC 18725 D(1) DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABLA DEF *+1 DEC 3 #DIM DEC -1 -L(3) DEC 12385 D(2) DEC -1 -L(2) DEC 12385 D(1) DEC -1 -L(1) DEC 4 #WORDS/ELEMENT DEC 0 EMA OFFSET LOW DEC 0 EMA OFFSET HIGH * TABLB DEC 0 #DIM ELB DEC 100 EMA OFFSET LOW EHB DEC 200 EMA OFFSET HIGH SKP TABLC DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 1 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 10570 OCT 3 * TABLD DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 2 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 21357 OCT 4 * TABLE DEF *+1 DEC 2 #DIM DEC -1 -L(2) $" DEC 10000 D(1) DEC -1 -L(1) DEC 3 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 32146 OCT 5 * TABLF DEF *+1 DEC 2 #DIM DEC -1 -L(2) DEC 10000 D(1) DEC -1 -L(1) DEC 4 #WORDS/ELEMENT DEC 1 EMA OFFSET LOW DEC 2 EMA OFFSET HIGH OCT 42735 OCT 6 * END n6$ z  12824-18054 2026 S C0122 &TESEG              H0101 nASMB,L NAM TESEG 12824-1X054 REV.2026 800506 ENT TESEG EXT .ESEG,.ENTR,$LIBR,$LIBX,$DVPT ************************************************************** * * NAME: TESEG * SOURCE: 12824-18053 * RELOC: PART OF 12824-16002 * PGMR: CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** XIDEX EQU 1645B * IERR BSS 1 TESEG NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ******************************************************************** * * CALL .ESEG WITH #MAPS < 0 * CLA SET FIRST MAP = 0 CCB SET #MAPS = -1 JSB .ESEG DEF RTN1 DEF TABL1 RTN1 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * ******************************************************************** * * CALL .ESEG WITH #MAPS > MSEG SIZE * CLA SET FIRST MAP = 0 LDB =D3 SET #MAPS = 3 JSB .ESEG DEF RTN2 DEF TABL1 RTN2 JSB ABCHK TEST A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * ********************************************************************* * * CALL .ESEG BY A NON-EMA PROGRAM * LDA XIDEX SAVE IDEX ADDR STA IDEX IN IDEX JSB $LIBR GO PRIVILEGED NOP CLA CLEAR IDEX ADDR STA XIDEX * CLB,INB SET #MAPS = 1 JSB .ESEG DEF RTN3 DEF TABL1 RTN3 JSB ABCHK CHECK A & B REGISTERS ISZ ERROR ERROR IF RETURNS HERE * LDA IDEX RESTORE IDEX ADDR STA XIDEX JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 * ******************************************************************** * * NORMAL CALL * LDA XMAP1 SAVE USER MAPS IOR =B100000 IN MAP1 USA * CLA SET FIRST MAP = 0 LDB =D2 SET #MAPS = 2 JSB .ESEG LOAD MSEG MAPS DEF RTN4 DEF TABL1 RTN4 ISZ ERROR ERROR IF RETURNS HERE * LDA XMAP2 SAVE NEW USER MAPS IOR =B100000 IN MAP2 USA * * CALCULATE WHAT THE NEW USER MAP SHOULD BE * ISZ IDEX POINT TO 2ND WORD OF IDEX XLA IDEX,I AND =B1777 SET A = PHYS START PAGE OF EMA STA SPEMA SAVE IN SPEMA XLA IDEX,I AND =B174000 SET A = LOG. START PAGE MSEG ALF,RAL ADA XMAP1 SET A = BUFFER ADDR STA 1 SET B = BUFFER ADDR LDA SPEMA SET A = 1ST PHYS PAGE STA 1,I STORE IN MAP1 BUFFER ADA TABL2 SET A = 2ND PHYS PAGE IOR =B140000 SET RD,WRT PROTECT BITS INB INC BUFFER ADDR STA 1,I STORE IN MAP1 BUFFER * JSB COMP COMPARE MAP BUFFERS SKP * * POINT 1ST DRIVER PARTITION MAP TO USER BASE PAGE * CLB,INB SET B = 1 CBX SET X = 1 (MAP) XLA $DVPT SET A = DRIVER PARTITION ADA =B40 POINT TO USER MAP LDB XMAP1 POINT B TO USER BASE PAGE MAP * JSB $LIBR GO PRIVILEGED NOP XMM LOAD THE MAP * * MOVE COPY OF MAPS ON BASE PAGE TO 2ND BUFFER * XLA $DVPT SET A = DRIVER PARTITION ALF,ALF MULTIPLY BY 2000B RAL,RAL ADA =B1740 SET A = MAPS ADDRESS LDB XMAP2 SET B = 2ND BUFFER MVW =D32 MOVE TO 2ND BUFFER * JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 * JSB COMP COMPARE MAP BUFFERS * ********************************************************************** * * RETURN ERROR COUNT * OK2 LDA ERROR STA IERR,I JMP TESEG,I RETURN * ******************************************************************** SKP ******************************************************************** * COMP NOP * * FIRST ZERO OUT DRIVER PARTITION MAPS IN BOTH BUFFERS * CLA SET A = 0 XLB $DVPT SET B = DRIVER PARTITION MAP ADB XMAP1 POINT TO 1ST BUFFER STA 1,I ZERO BUFFER MAP INB POINT TO 2ND MAP STA 1,I ZERO BUFFER MAP * XLB $DVPT SET B = DRIVER PARTITION MAP ADB XMAP2 POINT TO 2ND BUFFER STA 1,I ZERO BUFFER MAP INB POINT TO 2ND MAP STA 1,I ZERO BUFFER MAP * * NOW COMPARE MAP BUFFERS * LDA XMAP1 POINT A TO 1ST BUFFER LDB XMAP2 POINT B TO 2ND BUFFER CMW =D32 COMPARE 32 MAPS JMP COMP,I OK,RETURN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE JMP COMP,I ERROR RETURN * ******************************************************************** * ABCHK NOP CPA ASC21 TEST A REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN CPB ASCEM TEST B REGISTER RSS OK (NO SKIP) JMP ABCHK,I ERROR RETURN ISZ ABCHK SET OK RETURN JMP ABCHK,I RETURN * ASC21 ASC 1,21 ASCEM ASC 1,EM * ******************************************************************** SKP IDEX BSS 1 ERROR BSS 1 TABL1 OCT 0 TABL2 OCT 100 XMAP1 DEF MAP1 MAP1 BSS 32 XMAP2 DEF MAP2 MAP2 BSS 32 SPEMA BSS 1 * END  { 12824-18055 2026 S C0122 &TVSET              H0101 ASMB,L NAM TVSET 12824-1X055 REV.2026 800506 ENT TVSET ************************************************************** * * NAME: TVSET * SOURCE: 12824-18055 * RELOC: PART OF 12824-16002 * PGMR: CG * * *********************************************************** * * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. ALL RIGHTS * * * RESERVED. NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, * * * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE * * * WITHOUT THE PRIOR CONSENT OF HEWLETT-PACKARD COMPANY. * * *********************************************************** * ************************************************************** EXT .VSET,.ENTR,$LIBR,$LIBX XIDEX EQU 1645B * IERR BSS 1 TVSET NOP JSB .ENTR GET ADDRESSES DEF IERR CLA INITIALIZE ERROR COUNT STA ERROR * ********************************************************************** * * CALL .VSET BY A NON-EMA PROGRAM * LDA XIDEX SAVE IDEX ADDR STA IDEX IN IDEX JSB $LIBR GO PRIVILEGED NOP CLA CLEAR IDEX ADDR STA XIDEX * CLA,INA SET A = 1 STA I1 SET I1 = 1 STA I2 SET I2 = 1 * JSB .VSET VECTOR SET-UP DEF RTN1 DEF VIN INPUT ADDR STRING DEF VOUT OUTPUT ADDR STRING DEF MAPS OUTPUT MAP TABLE OCT 0 NO SCALARS OCT 2 TWO VECTORS DEC 512 NMAX RTN1 JMP OK1 SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * OK1 CPA ASC22 TEST A REGISTER RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP CPB ASCVI TEST B REGISTER RSS OK(NO SKIP) ISZ ERROR ERROR IF SKIP * LDA IDEX RESTORE IDEX ADDR STA XIDEX JSB $LIBX GO UN-PRIVILEGED DEF *+1 DEF *+1 *  ********************************************************************** SKP ********************************************************************** * * CALCULATE WHAT CORRECT OUTPUT WILL BE * ISZ IDEX POINT TO 2ND WORD OF IDEX XLA IDEX,I SET A = LOG START MSEG AND =B174000 RAR STA VANS1 1ST VECTOR LOG ADDR ADA =B5777 STA VANS2 2ND VECTOR LOG ADDR * ********************************************************************** * * EASY RETURN, IMAX = 1 * JSB EASY TEST SUBROUTINE * ********************************************************************** * * EASY RETURN, IMAX = 0 * CLA SET A = 0 STA I1 SET I1 = 0 STA I2 SET I2 = 0 JSB EASY TEST SUBROUTINE * ********************************************************************** * * HARD RETURN, I1 < 0 * CCA SET A = -1 STA I1 SET I1 = -1 LDA =D513 SET A = 513 JSB HARD TEST SUBROUTINE * ********************************************************************** * * HARD RETURN, I1 > I2 * LDA =D4 SET A = 4 STA I1 SET I1 = 4 LDA =D129 SET A = 129 JSB HARD TEST SUBROUTINE * ********************************************************************** SKP ********************************************************************** * * HARD RETURN, I2 > I1 * CLA SET A = 0 STA I1 SET I1 = 0 LDA =D4 SET A = 4 STA I2 SET I2 = 4 LDA =D129 SET A = 129 JSB HARD TEST SUBROUTINE * ********************************************************************** * LDA ERROR RETURN ERROR COUNT STA IERR,I JMP TVSET,I RETURN * ********************************************************************** SKP ********************************************************_************** * EASY NOP JSB .VSET VECTOR SET-UP DEF ERTN DEF SIN INPUT ADDR STRING DEF SOUT OUTPUT ADDR STRING DEF MAPS OUTPUT MAP TABLE OCT 1 ONE SCALAR OCT 2 TWO VECTORS DEC 512 NMAX ERTN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * SZA A SHOULD = 0 ISZ ERROR ERROR IF A NE 0 CPB =D4 B SHOULD = 4 RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * LDA SIN COMPARE SCALAR ADDRESSES CPA SOUT RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * JSB TEST TEST OUTPUT ADDR STRING, MAPS JMP EASY,I RETURN * ********************************************************************** * HARD NOP STA M SAVE A IN M JSB .VSET VECTOR SET-UP DEF HRTN DEF VIN INPUT ADDR STRING DEF VOUT OUTPUT VECTOR STRING DEF MAPS OUTPUT MAP TABLE OCT 0 NO SCALARS OCT 2 TWO VECTORS DEC 512 NMAX HRTN ISZ ERROR ERROR IF RETURNS HERE JMP HOK SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE * HOK CPA M A SHOULD = M RSS OK (NO SKIP) ISZ ERROR ERROR IF SKIP * JSB TEST TEST OUTPUT STRING, MAPS JMP HARD,I RETURN * ********************************************************************** SKP ********************************************************************** * TEST NOP LDA XVOUT OUTPUT ADDR STRING LDB XVANS ANSWER ADDR STRING CMW =D5 JMP TOK SHOULD RETURN HERE ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE * TOK LDA XMAPS OUTPUT MAP TABLE LDB XMAP1 ANSWER MAP TABLE CMW =D4 JMP TEST,I OK RETURN ISZ ERROR ERROR IF RETURNS HERE ISZ ERROR ERROR IF RETURNS HERE JMP TEST,I RETURN * ********************************************************************** SKP XVIN DEF VIN SIN OCT 1234 VIN DEF V1 DEF I1 DEF V2 DEF I2 DEF N * XVOUT DEF VOUT SOUT BSS 1 VOUT BSS 5 * XVANS DEF VANS1 VANS1 BSS 1 DEF I1 VANS2 BSS 1 DEF I2 DEF N * XMAPS DEF MAPS MAPS BSS 4 * XMAP1 DEF MAP1 MAP1 OCT 0 MAP2 OCT 1 MAP3 OCT 77 MAP4 OCT 100 * M BSS 1 * V1 OCT 0 OCT 0 I1 BSS 1 V2 OCT 177777 OCT 0 I2 BSS 1 N DEC 500 * ASC22 ASC 1,22 ASCVI ASC 1,VI * IDEX BSS 1 ERROR BSS 1 * END G, | 12892-18001 1705 S 0122 MEMORY PROTECT DIAGNOSTIC              H0101 "ASMB,A,B,L,C HED 2100 OR 12892A/B MEMORY PROTECT-PARITY ERROR DIAGNOSTIC ORG 0 DSN 102305 20 JANUARY 77 REV 1705 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD THE DIAGNOSTIC CONFIGURATOR AND CONFIGURE IT. * B. LOAD THE DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD THE SWITCH REG. WITH SELECT CODE & OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET, BIT * 15 = HALT AT END OF EACH TEST SECTION * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST SECTION * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES * 10 = SUPPRESS NON-ERROR MESSAGES * 9 = GO TO USER TEST SELECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * 7-0 = RESERVED * * * * G. PRESS RUN. * H. TO RESTART - LOAD ADDRESS 2000B * I. TO RECONFIGURE - LOAD ADDRESS 100B * AND GO TO STEP D. * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 060 * 1060XX E OR H 100 TO 115 ** 1070XX E OR H 300 TO 314 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER TEST SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * 106070 - * 106076 CONFIGURATOR HALTS. SEE DIAG CONFIG. MANUAL. HED CONFIGURATOR LINKAGE AREA A EQU 0 A REGISTER REFERENCE INTP EQU 0 B EQU 1 B REGISTER REFERENCE SR EQU 1 SWITCH REGISTER REFERENCE DMAIN EQU 2 PFCNT EQU 4 VREG EQU 5 MPT EQU 5 PERR EQU 5 FENC EQU 5 MTRAP EQU 5 PTRAP EQU 5 DMACH EQU 6 CH EQU 10B SPC 2 ORG 100B JMP CFIG,I GO TO CONFIGURATION SECTION BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) BSS 1 FAST OUTPUT (DUMP OR PUNCH) BSS 1 SLOW INPUT (KEYBOARD) DEF FWAA FIRST WORD OF AVBL. MEMORY BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC NOP USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE BSS 1 INTERNAL SWITCH REGISTER BSS 1 1 MILL SEC TIMER BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 102305 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF SWRTX TSTN OCT 0 CURRENT TEST NUMBER IOIP DEF IODP TSTP DEF TSTD STDA OCT 033777 STANDARD TEST RUN STDB OCT 0 HED DIAGNOSTIC DATA TSTD DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 TS08D DEF TST08 DEF TST09 DEF TST10 DEF TST11 DEF TST12 DEF TST13 M1 DEC -1 SPC 3 RTNPJ JMP CHKIN+1 RTNJS JSB CHKIN JMP35 JMP ERR35 JMP37 JMP ERR37 JMP42 JMP E42 JMP43 JMP E43 JSB51 JSB ERR51 JMP52 JMP ERR52 JS102 JMP JX102,I JX102 DEF ER102 DEF ER103 Ӏ DEF ER104 DEF ER105 DEF ER106 JS107 JMP JX107,I JX107 DEF ER107 DEF ER110 JS112 JMP JX112,I JX112 DEF ER112 JS113 JMP JX113,I JX113 DEF ER113 JS301 JMP JX301,I JX301 DEF ER301 JS302 JMP JX302,I JX302 DEF ER302 JS305 JMP JX305,I JX305 DEF ER305 DEF ER306 JS307 JMP JX307,I JX307 DEF ER307 JS313 JMP JX313,I JX313 DEF ER313 JS314 JMP JX314,I JX314 DEF ER314 GOD12 JMP RTN12,I RTN12 DEF RET12 VIJSB DEF VAJSB VIJSX DEF VIJS2 INLN2 DEF LINE2 MPX30 DEF MSP30+4 MXPTR DEF MX2+8 SAVEA NOP SAVEB NOP SAVED BSS 2 ADMOD NOP LASTA OCT 77777 SPSP ASC 1, RTLF ASC 1,// HOLDI NOP MCNTR NOP EXPVR NOP TMODE NOP INPNT NOP BUFPT NOP FENCE NOP USRSC NOP PTRIN NOP MLIMT NOP PECHG NOP SAVSR NOP SAVS2 NOP B5000 OCT 5000 BIT0 OCT 1 BIT1 OCT 2 BIT2 OCT 4 BIT6 OCT 100 B1777 OCT 1777 B4000 OCT 4000 BIT12 OCT 10000 BIT13 OCT 20000 BIT14 OCT 40000 BIT15 OCT 100000 B1512 OCT 110000 B170K OCT 170000 M2 DEC -2 M10 DEC -10 M100 DEC -100 STCOV OCT 103000 SAVA BSS 2 CFMEM OCT 6000 MOMSK OCT 70000 ZS812 OCT 10400 FIVE OCT 5 JARTN JMP A,I SPTST NOP JBRTN JMP B,I IPNTR DEF VILST FENP1 NOP B1000 OCT 1000 MAXMT NOP RTNJP JMP PETST,I RTNJX JMP PFAR1,I RTNJY JMP PFAR2,I PFAR1 DEF RTNX PFAR2 DEF RTNY VIINS DEF VIOLT PETST DEF PECON MBX1 DEF MX1+5 MBX2 DEF MX2+5 MBX3 DEF MX3+12 MX53 DEF MS053+17 PX103 DEF MX103 MEMVL DEF VIOLM LECOD DEF LENCD TPNT1 DEF PETD1 TPNT2 DEF PETD2 TPNT6 DEF PETD6 EA001 DEF TH001 EA002 DEF TH002 EA003 DEF TH003 EXA01 DEF THT10 EXT20 JMP TSI20,I TSI20 DEF RET20 J4 JSB *+1,I DEF INT4 SPC 3 IODP DEF IO.01 DEF IO.02 DEF IO.03 DEC -1 * BUF DEF *+1 BUFFER FOR DMA BSS 20 TRANSFER IN TEST 12 SKP * * VIOLATING INSTRUCTION LIST * VILST ISZ 2 JSB 2 JMP 2 STA 2 STB 2 OCT 104400 DST , OCT 101740 SAX OCT 101750 SAY OCT 105740 SBX OCT 105750 SBY OCT 105743 STX OCT 105753 STY OCT 105772 JPY OCT 105762 JLY OCT 105774 CBS OCT 105773 SBS OCT 105777 MVW OCT 105765 MBT OCT 105764 SBT VIOLT CLC 2 CLF 2 LIA 2 LIB 2 MIA 2 MIB 2 OTA 2 OTB 2 SFC 2 SFS 2 STC 2 STF 2 MIN1 DEC -1 END OF LIST SPC 3 * PARITY TEST ADDRESSES INPTR DEF *+1 DEF PEAD1 DEF PEAD2 DEF CHKP1 DEF INHLT DEC -1 HED DIAGNOSTIC SUBROUTINES ******************************************************************** * *CHKIN* CHECKS MEMORY PROTECT AND PARITY ERROR * INTERRUPT INFORMATION TO DETERMINE IF THE * VIOLATION REGISTER CONTENTS IS CORRECT. * * PARAMETERS PASSED: * * A-REG = EXPECTED VIOLATION REGISTER * (BIT 15 ALWAYS CLEAR). * CHKIN NOP CLF 0 TURN OFF INTERRUPT SYSTEM. DST SAVA SAVE A AND B REG LDB TMODE TMODE=0 IF MPT TEST. LDA EXPVR GET EXPECTED VIOLATION REG. CLE,SZB IS THIS THE MPT TEST? IOR BIT15 NO! SET BIT 15 FOR PE VR CHECK. LIB VREG GET ACTUAL VIOLATION REGISTER. CPB A ACTUAL VR = EXPECTED VR? JMP CHKRN YES! GO SETUP RETURN ADDRESS. DST SAVEA NO! SAVE EXPECTED/ACTUAL VR. LDB SPSP GET ASCII DOUBLE SPACE. CLE,SSA MPT VIOLATION? LDB RTLF NO! FORM CR-LF. STB MXPTR,I PUT ASCII IN MESSAGE. SSA PARITY ERROR EXPECTED? JMP SETBF YES! GO PRINT VR DATA. LDB SAVEB NO! GET LDB B,I VIOLATING INSTRUCTION. CPB HLT31 WAS IT A HLT 31B ? JMP NOMPV YES! GO PRINT NO MPV. LDA FENCE NO! GET FENCE VALUE AND LDB MPX30 CONVERMT IT TO JSB O2AS,I ASCII. SETBF LDA SAVEA GET EXPECTED VR. LDB MBX1 BUFFER ADDRESS IN ERROR MESSAGE. JSB O2AS,I CONVERT EXPECTED VR TO BUFFER LDA SAVEB GET ACTUAL VR VALUE LDB MBX2 BUFFER ADDR IN ERROR MESSAGE. JSB O2AS,I CONVERT ACTUAL VR INTO BUFFER. DLD SAVEA RESTORE EXPECTED-ACTUAL VR. E030 JSB ERMS,I PRINT MESSAGE WITH DEF MS030 RESPECTIVE HALT CODE. SSA EXPECT MPT VIOLATION? JMP NOMPT NO! SKIP FENCE HALT. DOFEN LDA FENCE GET FENCE REG SETTING. LDB B4000 SUPPRESS ERROR JSB SWRT,I MESSAGES? RSS YES! CHECK SUPPRESS. JMP NOMPT NO! SKIP HALT LDB BIT14 SUPPRESS JSB SWRT,I ERROR HALTS? RSS YES! DON'T HALT. E060 HLT 60B NO! HALT(A=FENCE) NOMPT LDA SAVEA SETUP SSA PARITY ERROR TEST MODE? JMP NOINC YES! DON'T ALTER CHKIN RETURN. AND LASTA NO! SETUP RETURN INA ADDRESS. STA CHKIN SAVE IT. CHKRN LDB SPTST GET SPECIAL TEST INDICATOR. SZB IS THIS A SPECIAL TEST? JMP INCRT YES! GO UPDATE RETURN. SSA,RSS PARITY ERROR TEST? ISZ CHKIN NO! INC CHKIN PAST HLT 31. JMP NOINC YES! GO RETURN. INCRT LDA CHKIN GET RETURN NOP CONTENTS. ADA BIT2 ADD 4 TO GET PAST INST. CONSTANTS. STA CHKIN SAVE NEW NOP VALUE. NOINC DLD SAVA RESTORE A AND B REGISTERS. JMP CHKIN,I RETURN TO TESTING. NOMPV LDB MBX3 BUFFER POINTER IN MESSAGE. JSB O2AS,I CONVERT A-REG TO ASCII. LDA SAVEA GET EXPECTED VIOLATION ADDR. JSB ERMS,I PRINT ERROR MESSAGE FOR DEF MS032 NO MPT INTERRUPT. * A=EXPECTED VIOLATION ADDRESS JMP DOFEN RETURN TO TESTING **************************************************************** * *INTMP* INITIALIZES MEMORY PROTECT BY SETTING THE * FENCE REGISTER AND RETURN JUMP IN THE TRAP CELL. * * PARAMETERS PASSED: * * A-REG = DESIRED MEMORY PROTECT TRAP * CELL CONTENTS. * * B-REG = FENCE VALUE TO BE OUTPUT. * * INTMP NOP CLC 0,C CLEAR I-O. OTB FENC OUTPUT TO FENCE REGISTER. STA MTRAP SET UP MP TRAP CELL. STB FENCE SAVE ACTUAL FENCE VALUE. STF 0 TURN ON INTERRUPT SYSTEM. JMP INTMP,I RETURN TO TEST. * ******************************************************************** SKP **************************************************************** * * INITIALIZE MEMORY LOCATIONS USED IN * THE PARITY ERROR TEST. * CHPAR NOP CLA CLEAR PE STA PTRAP TRAP CELL. LDA PEBUF GET INITIAL ADDRESS. DSLOP LDB A,I GET A DATA WORD. STB A,I STORE CURRENT PARITY. CPA B1777 END OF TEST BLOCK? JMP DSBLK-1 YES! GO STORE INDIVIDUAL DATA INA NO! MOVE ADDRESS POINTER AND JMP DSLOP UPDATE MORE DATA. INA DSBLK ADA B1000 MOVE TO NEXT HALF PAGE. LDB A,I GET A DATA WORD. STB A,I STORE CURRENT PARITY. CPA MAXMT END OF CONSTANTS? RSS YES! GO CHANGE INDIVIDUAL WORDS. JMP DSBLK NO! CHANGE MORE ADDRESSES. LDA INPTR GET INDIVIDUAL LIST PNTR. STA PTRIN SAVE IT. INLOP LDA PTRIN,I GET A WORD FOR PARITY CHANGE. CPA MIN1 END OF LIST? JMP CHPAR,I YES! RETURN TO TESTING. LDB A,I GET WORD TO BE INITIALIZED. STB A,I STORE CURRENT PARITY. ISZ PTRIN MOVE POINTER. JMP INLOP GO CHANGE ANOTHER WORD. *************************************************************** CHKDO NOP LDA CPTO GET COMPUTER TYPE SSA,RSS SKIP IF 2100 JMP CHKDO,I EXIT CURRENT TEST LDA USSC IS THIS A SSA  12892B UNDER TEST? ISZ CHKDO INCR RTN ADDR JMP CHKDO,I RETURN TO TEST. SKP * TONIO CALLING FORMAT- * * A=I-O SELECT CODE * JSB TONIO * TONIO NOP STA USRSC,I SET UP I-O TRAP CELL. IO.01 STC CH TURN ON I-O IO.02 STF CH TO INTERRUPT. STF 0 TURN ON INTERRUPT SYSTEM. JMP TONIO,I RETURN. * IO.03 CLF CH * * EXIT CURRENT TEST IF SR 8 OR 12=1 * CHKSW NOP LDB ZS812 YES! CHECK IF OPERATOR NEEDED. JSB SWRT,I IS SW.REG. 8 OR 12 SET? JMP CHKSW,I YES! EXIT P+1 ISZ CHKSW NO! INCR RTN ADDR JMP CHKSW,I RTN P+2 ***************************************************************** PEBUF DEF *+1 PETD1 NOP PETD2 NOP PETD3 NOP PETD4 NOP PETD5 NOP PETD6 OCT 100644 INDIRECT POINTER. * END OF PARITY ERROR TESTS CONSTANTS. HED MEMORY PROTECT TESTS SKP * * TEST THAT A HALT IS NOT ALLOWED BY MPT. * TST00 EQU * NOP CLB FENCE WILL BE ZERO. LDA RTNJS PREPARE TRAP CELL INSTRUCTION. JSB INTMP INITIALIZE MPT. LDA EA001 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. STC5 STC MPT TURN ON MPT. NOP SHOULD NOT INTERRUPT HERE. LDB BIT14 SUPPRESS JSB SWRT,I ERROR HALTS? RSS YES! DON'T HALT. TH001 HLT 26B MPT SHOULD NOT ALLOW HALT HERE. CLC 0,C TRY INT HERE IF NO MPV ON HALT. JMP TST00,I SKP * * TRY TO STORE AT AND BELOW FENCE. * TST01 EQU * NOP LDA 3 SAVE CONTENTS OF ADDR 3 STA SAVED FOR TEST COMPARISON. LDA RTNJS PREPARE TRAP CELL JSB. LDB BIT2 FENCE WILL BE SET TO 4 JSB INTMP INITIALIZE MPT. LDA EA002 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. LDB 4 TEST PATTERN IN B-REG. STC MPT TURN ON MPT. STB 4 NO VIOLATION SHOULD OCCUR HERE. TH002 STB 3 VIOLATION OCCURS HERE. HLT31 HLT 31B SHOULD NEVER HALT HERE. LDB 3 GET ADDR 3 DATA. CPB SAVED WAS ADDRESS STORED? JMP TST01,I NO! GO DO NEXT TEST LDA EA002 YES! GET STB LOCATION. JSB ERMS,I REPORT FAILURE. DEF MS033 MEMORY ALTERED BY ILLEGAL STB. * A=VIOLATION ADDRESS. JMP TST01,I SKP * * INSURE AN I/O INSTRUCTION (NOT A HALT) IS NOT ALLOWED. * TST02 EQU * NOP LDA RTNJS GET JSB TO CHKIN. JSB INTMP GO INITIALIZE MPT. LDA EA003 GET EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. CCB PREPARE FOR TEST. STF 0 TURN ON INT SYSTEM. STC MPT TURN ON MPT. TH003 LIB 0 SHOULD CAUSE INTERRUPT. HLT 31B SHOULD NEVER HALT HERE. SZB,RSS WAS B-REG ALTERED? JMP TST02,I YES! CONTINUE TESTING. LDA EA003 NO! GET LIB ADDRESS. JSB ERMS,I REPORT ERROR. DEF MS034 B-REG ALTERED BY ILLEGAL LIB. * A=LIB ADDRESS. JMP TST02,I SKP SKP * * INSURE NO VIOLATION OCCURS WITHOUT A STC 5 AND * VERIFY SELECT CODE 5 IS DECODED PROPERLY. * TST03 EQU * NOP CLB FENCE WILL BE ZERO. LDA JMP35 ERROR RETURN JSB. JSB INTMP INITIALIZE MPT. LIA 0 NO INTERRUPT - MPT OFF. SZA DID LIA 0 EXECUTE. JMP ERR36 NO! REPORT ERROR. JMP CON03 YES! START SC 5 TEST. ERR35 JSB ERMS,I REPORT ERROR. DEF MS035 INTERRUPT WITH MPT OFF. JMP CON03 CONTINUE TEST. ERR36 JSB ERMS,I REPORT ERROR. DEF MS036 LIA NOT ALLOWED WITH MPT OFF. CON03 CLC 0,C CLEAR I-O. CLA CLEAR OTA 6 DMA OTA 7 SELECT CODES STF 0 INTERRUPT SYSTEM ON. LDA JMP37 SET UP MPT  STA MTRAP TRAP CELL. DLD IOSTC GET STC AND CLC INSTRUCTIONS. DST INLIN PUT THEM IN LINE. LDB STCOV SET UP COMPLETION INDICATOR. SCLOP LDA INLIN GET STC INSTRUCTION. CPA STC5 IS IT A STC 5? JMP INCIO YES! SKIP TO NEXT SELECT CODE. INLIN STC 1 NO! EXECUTE TO VERIFY NO SC5. INLI2 CLC 1 INTERRUPT IF ILLEGAL SC 5. INCIO ISZ INLIN MOVE TO NEXT SELECT CODE ISZ INLI2 FOR STC AND CLC. CPB INLIN WAS THAT THE LAST SELECT CODE? JMP TST03,I YES! GO TO NEXT TEST. JMP SCLOP NO! CONTINUE SC TEST. ERR37 LDA INLIN GET INSTRUCTION THAT TURNED ON JSB ERMS,I MPT LIKE A STC 5. DEF MS037 ILLEGAL DECODE OF SELECT CODE 5. * A=STC INSTRUCTION THAT ENABLED MPT. JMP TST03,I SKP * * TEST ABILITY OF AN I/O INSTRUCTION IN A TRAP * CELL NOT TO SHUT OFF MPC * TST04 EQU * NOP CLC 0,C TURN OFF I-O LDA J4 SET UP JSB STA MTRAP IN MPT TRAP CELL LDA TSTD SET OTA FENC UP STA FENCE FENCE LDA IO.03 CLF CH JSB TONIO TURN ON I-O DEVICE STC MTRAP TURN ON MPT NOP NOP CLF0 CLF 0 MPT SHOULD OCCUR HERE JMP E054 CLF 0 DID'NT CAUSE MPT VIOLATION SPC 3 INT4 NOP MPT ROUTINE CLF 0 TURN OFF INTP SYST CLC 0,C TURN OFF I-O LIA MTRAP READ VIOLATION REG LDA A,I GET VIOLATING INSTR CPA CLF0 COMPARE WITH EXPECTED VIOLATING INSTR JMP TST04,I OK - EXIT TEST E054 JSB ERMS,I REPORT ERR DEF MS054 JMP TST04,I EXIT TEST SKP * * * THIS SECTION VERIFIES A MULTI-LEVEL INDIRECT * INSTRUCTION WILL BE INTERRUPTED DURING THE * THIRD LEVEL. * TST05 EQU * NOP LDA JMP43 I-O TRAP CELL VALUE JSB TONIO TURN ON I-O. JMP *+1,I STAR<:6T MULTI-LEVEL DEF *+1 INDIRECT. NO INTERRUPT. CLC 0,C CLEAR INT SYSTEM. LDA JMP42 I-O TRAP CELL VALUE. JSB TONIO TURN ON I-O. JMP *+1,I MULTI-LEVEL INDIRECT DEF *+1,I (TWO LEVELS-NO INTERRUPT). DEF *+1 CLC 0,C CLEAR INT. SYSTEM. LDA EXIT6 I-O TRAP CELL VALUE. JSB TONIO TURN ON I-O. JMP *+1,I THREE DEF *+1,I LEVEL DEF *+1,I INDIRECT. DEF *+1 INTERRUPT HERE. CLC 0,C NO INTERRUPT OCCURRED. JSB ERMS,I PRINT ERROR MESSAGE. DEF MS044 NO I/O INT ON INDIRECT CHAIN. JMP TST05,I GO DO NEXT TEST. E42 JSB ERMS,I REPORT ERROR. DEF MS042 INT AFTER 2ND LEVEL INDIRECT. JMP TST05,I E43 JSB ERMS,I REPORT ERROR. DEF MS043 INT AFTER 1ST LEVEL INDIRECT. EXIT6 JMP TST05,I zX< } 12892-18002 1705 S 0122 MEMORY PROTECT DIAGNOSTIC              H0101 " SKP * * THIS SECTION CHECKS THE MEMORY EXPANSION LOGIC ASSOCIATED * WITH MPT * TST06 EQU * NOP LDA CPTO GET COMPUTER TYPE. SSA,RSS IS THIS A 2100? JMP TST06,I YES! DON'T EXECUTE TEST. LDA USSC GET OPTIONS AND BIT14 TEST FOR DMS SZA,RSS IS DMS AVAIB. JMP AUXME NO! GO DO AUXILIARY TEST. LDA JMP52 SET UP RETURN STA MTRAP IN TRAP CELL. CLA CLEAR FOR MAPPING. STF 0 INTERRUPT SYSTEM ON. STC MPT TURN ON MPT. VIOLM XMA MEM VIOLATION. HLT 27B SHOULD FORCE INTERRUPT ERR52 LIA VREG GET VIOLATION ADDRESS. CPA MEMVL VIOLATION IN RIGHT PLACE? JMP MORME YES! PROCESS FURTHER. JSB ERMS,I NO! REPORT ERROR DEF MS052 NO MEM VIOLATION. MORME SFS MPT SHOULD SKIP ON MEM VIOLATION. JMP ERR46 NO SKIP? REPORT ERROR. SFC MPT SHOULD NOT SKIP. JMP NOSKP NO SKIP? CONTINUE TEST. JSB ERMS,I SKIP? REPORT ERROR. DEF MS047 SKF ON SFC 5 AFTER MEM VIOL. NOSKP CLA CLEAR STA MTRAP MPT TRAP CELL. STF 0 INTERRUPT SYSTEM ON. STC MPT CLEAR MEM/MPT VIOLATION FF. HLT 27B FORCE INTERRUPT. MEM LOGIC CLEAR JMP AUXME CONTINUE TESTING. ERR46 JSB ERMS,I REPORT ERROR. DEF MS046 NO SKF ON SFS 5 AFTER MEM VIOL. AUXME SFS MPT SHOULD NOT SKIP. JMP SKPOK DIDN'T SKIP. CHECK NEXT SKIP. JSB ERMS,I REPORT ERROR. DEF MS050 ILLEGAL SKF ON SFS 5 - NO MEM SKPOK SFC MPT SHOULD SKIP. RSS DIDN'T SKIP. REPORT FAILURE JMP TST06,I SKIP OK! GO CONTINUE TEST. JSB ERMS,I REPORT ERROR. DEF MS051 NO SKF ON SFC 5 WITH NO MEM VIOL JMP TST06,I SKP * * THIS SECTION TESTS THE VIOLATION AND FENCE REGISTERS * AND THE MEMORY VIOLATION LOGIC. * TST07 EQU * 8 NOP LDA MAXMT GET MEMORY MODULE SIZE. RAL IS MEMORY > 16K? SSA CHECK BIT 14 OF ADDR. LDA BIT15 SET MEMORY TO 20K LIMIT. RAR RESTORE MODULE VALUE. STA MLIMT SAVE IT. LDA RTNJS SET UP TRAP STA MTRAP CELL RETURN. LDA TS08D SET UP INITIAL FENCE STA FENCE REGISTER SETTING. TLOOP LDA FENCE GET PRESENT FENCE. ADA LECOD ADD LENGTH OF TEST MODULE. CPA MLIMT END OF MEMORY? JMP EXITT YES! REPLACE ORIGINAL DATA. LDB NLNCD NO! MOVE DATA OUT OF AREA STB MCNTR SAVE MOVE COUNT IN WORDS. LDB BUFAD GET ADDRESS OF SAVE BUFFER STB BUFPT SAVE IT. ADA NLNCD RESET FENCE VALUE. JSB MOVE MOVE DATA BLOCK. LDA STCOD MOVE TEST MODULE IN AREA LDB FENCE JUST REMOVED. STB BUFPT SAVE MODULE ADDRESS. LDB NLNCD GET MOVE COUNT. STB MCNTR SAVE IT. JSB MOVE MOVE DATA BLOCK. JMP FENCE,I TRANSFER CONTROL TO TEST. RLOOP LDA BUFAD RESTORE DATA WHERE TEST MODULE LDB FENP1 IS RESIDING. STB BUFPT SAVE IT. LDB NLNCD GET MOVE COUNT. STB MCNTR SAVE IT. JSB MOVE MOVE DATA BLOCK. JMP TLOOP CONTINUE TEST. EXITT JMP TST06,I CONTINUE TO NEXT TEST SECTION. * * MOVE SUBROUTINE * MOVE NOP MLOOP LDB A,I GET A WORD. STB BUFPT,I STORE IT. INA MOVE ISZ BUFPT POINTERS. ISZ MCNTR DONE YET? JMP MLOOP NO! GO MOVE ANOTHER WORD. JMP MOVE,I YES! EXIT. SKP ***************************************************************** * * TEST MODULE * STCOD DEF *+1 BELOW LDA FENCE GET OLD FENCE VALUE. STA FENP1 SAVE IT. INA INCREMENT AND STA FENCE SAVE NEW VALUE. OTA FENC OUTPUT TO FENCE REGISTER. ADA OFSTM GET EXPECTED INTERRUPT ADDRESS. STA EXPVR SAVE IT. STF 0 INTERRUPT SYSTEM ON. STC MPT TURN ON MPT. STA FENCE,I STORE AT FENCE. NO INTERRUPT. MPTVL STA FENP1,I STORE BELOW FENCE. INTERRUPT. HLT 31B FORCE INT IN CASE OF BAD FENCE. JMP RLOOP TRANSFER CONTROL BACK TO TEST. ***************************************************************** ENCOD EQU * LENCD EQU ENCOD-BELOW NLNCD ABS BELOW-ENCOD OFSET EQU MPTVL-BELOW-1 OFSTM DEF OFSET BUFAD DEF *+1 BSS LENCD SUP * * MESSAGES WHICH CANNOT BE ALTERED * BY THE TEST MODULE. * MS030 ASC 16,E030 INVALID VIOLATION REGISTER OCT 6412 MX1 ASC 08,EXPECTED= XXXXXX OCT 6412 MX2 ASC 09,ACTUAL = XXXXXX/ MSP30 ASC 08,FENCE = XXXXXX/ MS032 ASC 16,E032 NO MEMORY PROTECT INTERRUPT ASC 07, ON VIOLATING OCT 6412 MX3 ASC 16,INSTRUCTION AT ADDRESS XXXXXX/ SKP * * TEST ALL NON-VIOLATING INSTRUCTIONS * * TST08 EQU * NOP LDB FIVE FENCE VALUE. LDA JSB51 TRAP CELL RETURN JSB. JSB INTMP INITIALIZE MPT. STC MPT TURN ON MPT. * * TEST MEMORY REFERENCE INSTRUCTIONS. * IOR B NO INTERRUPT SHOULD OCCUR ADA B UNTIL HLT31 AT THE END OF ADB A THIS LIST OF NON-VIOLATING AND B INSTRUCTIONS. CPA A CPB B CLA ISZ A CLB ISZ B LDB B LDB A STA B STB A XOR B * * TEST SHIFT-ROTATE FUNCTIONS * ALS,ALS NOP BLS,BLS ARS,ARS BRS,BRS RAL,RAL RBL,RBL RAR,RAR RBR,RBR ALR,ALR BLR,BLR ERA,ERA ERB,ERB ELA,ELA ELB,ELB ALF,ALF BLF,BLF * * TEST ALTER-SKIP FUNCTIONS * CMA B7000 CMB CME CLE CCE INA INB CCA CCB RSS NOP SEZ SLA SLB SSA SSB SZA SZB * * TEST I/O INSTRUCTIONS * CLO SOS STO SOC LIA 1 LIB 1 MIA 1 MIB 1 OTA 1 OTB 1 IOSTC STC 1 CLC 1 * * TEST EAU INSTRUCTIONS * DIV FIVE DLD SAVEA MPY FIVE ASL 5 ASR 5 LSL 5 LSR 5 RRL 5 RRR 5 * * TEST EXTENDED INSTRUCTION GROUP * LDA CPTO GET COMPUTER TYPE. SSA,RSS IS THIS A 2100? JMP TOFLT YES! SKIP EIG TEST. ADX FIVE ADY FIVE CAX CAY CBX CBY CXA CXB CYA CYB DSX DSY ISX ISY LAX FIVE LAY FIVE LBX FIVE LBY FIVE LDX FIVE LDY FIVE XAX XAY XBX XBY LBT SFB NOP OCT 105775 TBS DEF BIT2 DEF BIT2 CLA,INA CLB,INB CMW FIVE COMPARE WORDS NOP JMP FLTCK * * TEST FLOATING POINT INSTRUCTIONS * TOFLT LDA CPTO GET OPTIONS WORD. AND BIT6 STRIP TO FLT PT BIT. SZA,RSS FLOATING POINT AVAILABLE? JMP JSBCK NO! SKIP TEST FOR 2100. FLTCK OCT 105000 FAD DEF BIT0 OCT 105060 FDV DEF BIT0 OCT 105100 FIX OCT 105120 FLT OCT 105040 FMP DEF BIT0 OCT 105020 FSB DEF BIT0 * * NOW TEST JSB 0 AND JSB 1 * JSBCK CLA STA MTRAP NOP MPT TRAP CELL. HLT 31B FORCE INTERRUPT. MPC OFF. LDB JARTN SET UP RETURN IN CASE OF ERROR. LDA JSB51 REINITIALIZE STA MTRAP TRAP CELL. STC MPT MPC ON. JSB A SHOULD RETURN TO NEXT INST. CLA STA MTRAP CLEAR TRAP AND HLT 31B FORCE INTERRUPT. MPC OFF. LDA JBRTN SET UP STA 2 Ӝ RETURN. LDA JSB51 REINITIALIZE MPT STA MTRAP TRAP CELL. STC MPT MPC TURNED ON. JSB B SHOULD RETURN TO NEXT INST. CLA CLEAR MPT STA MTRAP TRAP CELL AND HLT 31B SHUT OFF MPC. JMP TST08,I CONTINUE WITH NEXT TEST. ERR51 NOP CLE FOR O2AS ROUTINE. LIA VREG GET VIOLATION ADDRESS. LDB MX53 GET DESTINATION BUFFER ADDRESS JSB O2AS,I CONVERT A-REG TO ASCII LIB VREG GET VIOLATION ADDRESS. LDA B,I GET INSTRUCTION. JSB ERMS,I REPORT ERROR. DEF MS053 LEGAL INSTRUCTION CAUSED MPV * A=VIOLATING LEGAL INSTRUCTION. * B=ADDRESS OF VIOLATING INSTRUCTION. LIA VREG GET VIOLATING ADDRESS INA NEXT INSTRUCTION STA ERR51 STC MPT TURN ON MPT JMP ERR51,I RETURN TO TEST SKP * TEST ALL VIOLATING INSTRUCTIONS * * * IN THE 2100/21MX WHEN A MPT VIOLATION OCCURES WITH * A "P-REG" MODIFING INSTRUCTION, THAT IS "JSB" "JMP" ETC. * THE P-REG IS CARRIED TO THE INTERRUPT ROUTINE, HOWEVER, * IN A 21MX-E THE P-REG IS LOST AND THE TARGET ADDRESS * OF THE VIOLATING INSTRUCTION IS STORED INTO THE * INTERRUPT ROUTINE. IN A 21MX-E THE ADDRESS OF THE * VIOLATING INSTRUCTION MUST BE OBTAIN FROM THE * VIOLATION REGISTER.. * TST09 EQU * NOP LDA RTNJS TRAP CELL RETURN TO ERR 32. STA SPTST SPECIAL TEST MARKER. LDB FIVE FENCE REGISTER WILL EQUAL FIVE JSB INTMP INITIALIZE MPT. LDA IPNTR GET INSTRUCTION LIST POINTER. STA INPNT SAVE IT. LDA CPTO GET COMPUTER TYPE. SSA,RSS 2100? JMP NOEIG YES! DON'T CLEAR INDEX REGISTERS. CLA CLEAR CAX INDEX CAY REGISTERS. NOEIG LDA HLT31 PUT STA 2 HALTS IN STA 3 VIOLATED MEMORY. VILOP STF 0 TURN ON INTERRUPT SYSTEM. LDA INPNT,I GET AN INSTRUCTION. CPA MIN1 END OF LIST? JMP EXT10 YES! GO TO END OF MPT TEST, STA THT10 NO! PUT INSTRUCTION IN LINE. LDA CPTO GET COMPUTER TYPE WORD. SSA 2100? JMP DOCHK NO! GO DO TEST. LDA INPNT,I GET INSTRUCTION AGAIN. AND B7000 MASK TO IR 9-11. CPA B5000 EIG INSTRUCTION? JMP MOVLT YES! SKIP IT. CPA B1000 EIG INSTRUCTION? JMP MOVLT YES! SKIP IT. DOCHK LDA EXA01 EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. LDA CPTO TEST FOR 21MX-E AND B170K SEE NOTE ABOVE: XOR B1512 SZA * JMP CHK1 * LDA EXPVR * INA * STA CHKIN * LDA RTNPJ * LDB FIVE * JSB INTMP * CHK1 LDA BIT1 GET VALUE = 2. STA THT10+1 STORE IT IN STA THT10+2 LINE. STC MPT TURN ON MPT. LDA BIT2 SET A TO BYTE ADDR 4. LDB BIT2 SET B TO BYTE ADDR 4. THT10 NOP VIOLATION SHOULD OCCUR HERE. OCT 2 CONSTANT IF NEEDED BY INST. OCT 2 CONSTANT IF NEEDED BY INST. NOP NOP IF NEEDED BY INST. HLT 31B FORCE INT. IF NONE OCCURRED. NOP SPACE FOR INSTRUCTIONS THAT NOP RETURN HERE. MOVLT ISZ INPNT MOVE INSTRUCTION POINTER. JMP VILOP TEST MORE INSTRUCTIONS. EXT10 CLA CLEAR SPECIAL STA SPTST TEST INDICATOR. JMP TST09,I SPC 4 * TEST PATTERNS FOR PE TEST * ORG 1770B NOP OCT 125252 OCT 52525 OCT 111111 OCT 21444 OCT 156333 OCT 66666 DEC -1 HED DIAGNOSTIC CONTROL ORG 2000B ZSTEX CLC INTP,C TURN INT SYSTEM OFF CLA CLEAR THE PE STA PTRAP TRAP CELL. STA MFLAG CLEAR MESSAGE FLAG STA XFLAG STA HLT74 INSURE H74 FOR ANY RECONFIGURATION JSB MSGC,I OUTPUT HEADER MESSAGE DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT LDB B1000 CHECK FOR USER JSB SWRT,I SELECTION REQUEST. JMP ZUSR YES? GO HALT. ZNUSR LDA STDA GET STANDARD TEST LDB STDB SELECTION. JMP ZEXC ZUSR LIA SR GET SW REG AND SRM MASK OFF BIT 9 OTA SR OUTPUT TO SW REG LDA ZSINA RETRIEVE PREVIOUS LDB ZSINB TEST SELECTION. HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA TEST STB ZSINB SELECTION. JSB CHPAR CHANGE PARITY STATE. CLA CLEAR TEST INDICATOR TO STA TMODE MPT TEST MODE. CCA SET TEST NUMBER STA TSTN =-1 STA ZCFTT CLA CLEAR STA ZTSTA TEST RUN FLAG ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN GET TEST NUMBER. ADA TSTP GET IT'S LDA A,I ADDRESS CPA M1 IS IT THE END OF TESTS? JMP ZEOL YES! EXIT. LDB ZUINB GET TEST INDICATOR. SSB,RSS SHOULD TEST BE RUN? JMP ZEXCL NO! CHECK NEXT TEST. STA ZTSTA YES! SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS CLC 0,C CLEAR I-O. CLA CLEAR MPT-PE STA PTRAP TRAP CELL. STF PERR ENABLE PARITY ERROR LOGIC. JSB ZTSTA,I GO DO TEST JSB ZITCH INITIALIZE TRAP CELLS. CLF 0 TURN OFF INT SYSTEM ۡLDA TSTN DISPLAY TEST NUMBER IF HALTED LDB BIT15 CHECK FOR HALT AT JSB SWRT,I THE END OF TEST. HLT 76B YES? WAIT FOR OPERATOR LDB B1000 CHECK FOR JSB SWRT,I USER SELECTION REQUEST. JMP ZUSR YES? GO HALT. LDB BIT13 CHECK FOR LOOP ON JSB SWRT,I TEST SECTION. JMP ZXCL1 YES? GO LOOP. JMP ZEXCL NO? CONTINUE. ZEOL CLA CLEAR STA PECHG TEST LDA ZTSTA CHECK IF ANY TESTS SZA,RSS WERE RUN. JMP ZNUSR NO? PICK UP STANDARD RUN LDA ZEOLC UPDATE INA PASS STA ZEOLC COUNT. CCE LDB ZPSCA GET PASS COUNT ADB BIT1 ADDRESS JSB O2AS,I CONVERT IT TO ASCII JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB BIT12 CHECK FOR LOOP JSB SWRT,I ON DIAGNOSTIC. JMP ZEOL1 YES? GO LOOP. JSB CHPAR NO? INITIALIZE PARITY. JSB JMG TELL OPERATOR TO CHANGE JUMPERS LDA ZEOLC GET PASS COUNT. HLT 77B HALT AND DISPLAY PASS COUNT ZEOL1 LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC GO DO ANOTHER PASS. * JMG NOP LDA MFLAG HAS TEST(S) 11,12,13 BEEN EXECUTED ? SZA,RSS JMP JMG,I NO! EXIT CLA YES! CLEAR STA MFLAG FLAG STA XFLAG LIA SR GET SW-REG STA SAVSR STORE SW-REG LDA RTNJY PUT RETURN JUMP STA PFCNT PFAR TRAP CELL JSB MSGC,I PRINT DEF MS062 MESSAGE HLT 62B HALT FOR OPERATOR RTNY LDA SAVSR RESTORE OTA 1 SW-REG STC PFCNT SET CNTL 4 FF JMP JMG,I EXIT * * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH REG 10 CHECK JMP ZMSGC,I RETURN TO CALLER  SKP * * ERROR MESSAGE WITH HALT * ZERMS NOP JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH REG 11 CHECK CLA LDB BIT14 CHECK SWR BIT 14 TO JSB SWRT,I SUPPRESS HALT. STA *+3 NO? PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR. JMP ZERMS,I RETURN TO CALLER ZMSG NOP STA ZSAVA SAVE A AND STB ZSAVB B-REG CLA SFS 0 CCA STA HOLDI CLF 0 TURN OFF INT SYSTEM LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES? DON'T PRINT. LDA ZMSG,I CHECK IF ERROR LDA A,I MESSAGE LDA A,I IS HEADED ALF,ALF BY AN AND Z.177 EXXX. CPA ZA.E IS IT? JSB ZCFTN YES! OUTPUT TEST NUMBER LDA ZMSG,I NO! RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I PRINT MESSAGE ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZEXTA SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA BIT6 LDB ZH6 CPA Z.200 LDB STCOV CPA Z.300 LDB ZH7 LDA ZEXTA GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA HOLDI SZA,RSS STF 0 LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I RETURN. ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES! SKIP OUTPUT STA ZCFTT NO! THEN UPDATE IT CLE LDB ZBUFI JSB I2AS,I Ə<:6 LDB ZBUF1 STB ZTSTN CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I PRINT TEST NUMBER. JMP ZCFTN,I RETURN _< ~ 12892-18003 1705 S 0122 MEMORY PROTECT DIAGNOSTIC              H0101 " SKP ZSAVA NOP ZSAVB NOP ZEOLC NOP ZEXTA NOP ZIOAD NOP ZIOSC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP Z.7 OCT 7 Z.77 OCT 77 Z.177 OCT 177 SRM OCT 176777 MFLAG OCT 0 XFLAG OCT 0 ZTSH OCT 106077 ZIOM OCT 177700 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 ZBUFI DEF ZBUF ZBUF OCT 0 OCT 0 ZBUF1 ASC 1,XX HED DIAGNOSTIC SUBROUTINES * * SWITCH REGISTER CHECK * SWRTX NOP STA SAVS2 SAVE A-REG. LIA SR GET SWITCH REG AND B MASK OUT TEST BIT(S). SZA,RSS ANY SWITCHES UP? ISZ SWRTX NO! UPDATE RETURN TO P+2. LDA SAVS2 YES! GET ORIGINAL A-REG. JMP SWRTX,I RETURN. SPC 2 ZITCH NOP LDA ZTSH GET HALT 106077. LDB BIT1 GET ADDRESS POINTER. ZTSHL STA B,I STORE HALT IN A TRAP CELL. CPB Z.77 LAST TRAP CELL STORED? JMP ZITCH,I YES! RETURN. INB NO! UPDATE ADDR POINTER. JMP ZTSHL DO NEXT TRAP CELL. HED CONFIGURATION SECTION * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN INT SYSTEM OFF CLB LDA USSC SZA,RSS IS SC SPECIFIED BY CONFIGURATOR ? STB HLT74 NO! THEN HALT 74 SZA,RSS YES! GET SC FROM USSC LIA SR GET SW. REG. CONTENTS. STB *-2 USE SR FOR ANY NEW CONFIGURATION OTB SR STA USSC SAVE IT AND Z.77 MASK AND STA USRSC SAVE SELECT CODE. LDB A CMB,INB IS ADB Z.7 SC SSB >7? JMP CONF1 YES! GO ON. EO73 HLT 73B NO! ERROR HALT. JMP ZCONF TRY AGAIN CONF1 LDA MEMO GET MEMORY MOD SIZE. AND MOMSK MASK TO MOD. IOR CFMEM MERGE IN OCTAL 6000 STA MAXMT SAVE IT. LDA USRSC GET SC BACK AGAIN. LDB IOIP INITIALIZE TEST I/O STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB M1 IS IT THE TERMINATOR JMP HLT74 YES! RETURN TO CALLER LDA B,I NO! GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT HLT74 RSS HLT 74B ALLOW OPERATOR TO ALTER SR. JMP ZSTEX GO TO EXEC CONTROL SECTION HED PARITY ERROR TESTS * PARITY ERROR SECTION * * SUBTEST 10.1 * TST10 EQU * NOP T10.1 JSB CHKSW CHECK SR 8 & 12. JMP TST10,I EXIT TEST CLF PERR TURN OFF PE. CCA SET STA XFLAG MESSAGE FLAG LDA RTNJP PUT RETURN JUMP STA PFCNT IN PFAR TRAP CELL. STA PECHG SET PARITY INDICATOR. LIA SR SAVE THE STA SAVSR SW.REG. DURING PF. JSB MSGC,I DEF MS100 INFORM OPERATOR TO SET UP INHLT OCT 106000 HARDWARE FOR TESTING. * * HLT 106000 INSTRUCTS THE OPERATOR TO SET THE PE * SWITCH TO THE HALT MODE,FORCE EVEN PARITY ON THE * MEMORY CONTROLLER,PFAR SWITCH TO AUTO RESTART,PRESS * RUN.. * CHKP1 OCT 5 PARITY HALT SHOULD OCCUR HERE * * IN A 2100 OR 21MX M-SERIES COMPUTER THE ABOVE DATA SHOULD * CAUSE THE COMPUTER TO HALT WITH A 5B DISPLAYED IN THE * T-REGISTER. IF COMPUTER IS 21MX E-SERIES THE T-REGISTER * VALUE WILL BE INVALID FOR THIS TEST. THE OPERATOR * MUST DETERMINE IF THE CPU HAS HALTED AT THE PROPER LOACTION * IN MEMORY. THE PARITY LAMP SHOULD BE ON. * SET THE PE SWITCH TO INT-IGNORE, PRESS PRESET, THE PARITY * LAMP (AND PARITY BIT IN 2100) SHOULD GO OUT. * PRESS RUN.. * (NOTE- NO HALT INDICATES EITHER PRESET DID NOT ENABLE PE * OR THE PE DETECTION LOGIC FAILED.) * JSB CHPAR  INITIALIZE MEMORY FOR TEST. OCT 106001 * * HALT 106001 INSTRUCTS THE OPERATOR TO REMOVE THE JUMPER * FROM THE MEMORY CONTROLLER,POWER DOWN THE COMPUTER,IF 12892B * IS UNDER TEST CHANGE THE STATE OF THE SEL1,INT AND JSB * JUMPERS,POWER UP THE COMPUTER AND THE TEST WILL CONTINUE * AUTOMATICALLY. * * INSURE NO PE INTERRUPT WITH CONTROL 4 CLEAR. * PECON LDA SAVSR RESTORE THE OTA 1 SW. REGISTER. STF PERR ENABLE PARITY ERROR CCA,CLE STA TMODE SET PE TEST MODE LDA JS102 INITIALIZE TRAP CELL STA PTRAP FOR PE INTERRUPT. LDA PETD1 PETD1 CONTAINS EVEN PARITY. JMP CON12 CONTINUE TEST. ER102 JSB ERMS,I REPORT ERROR. DEF MS102 PE INT WITH CNTL 4 CLEAR. STF PERR ENABLE PARITY ERROR. CON12 LDA CPTO GET COMPUTER TYPE. CLE,SSA IS THIS A 2100? JMP MXTST NO! DO 21MX TEST. SPC 3 * * TEST ABILITY OF PE TO INTERRUPT. * ISZ PTRAP ADJUST PE TRAP CELL. STC PFCNT SET CNTL 4 FF. NOP ALLOW TIME TO INTERRUPT. CLC 0,C NO INTERRUPT! REPORT ERROR. LDA TPNT1 PUT EXPECTED LDB PX103 ADDRESS IN ERROR JSB O2AS,I MESSAGE. JSB ERMS,I REPORT ERROR. DEF MS103 NO PE INTERRUPT. * A=EXPECTED PE ADDRESS. JMP TSTNP DO NEXT TEST. ER103 LDA TPNT1 GET EXPECTED PE ADDR. STA EXPVR SAVE EXPECTED VIOLATION REG. JSB CHKIN GO CHECK INTERRUPT AND VR. JMP TSTNP DO NEXT TEST. MXTST CLA,CLE CLEAR THE STA PTRAP PE TRAP CELL. STC PFCNT ENABLE PF CONTROL. LDA GOD12 INITIALIZE PE STA PTRAP TRAP CELL. LDA TPNT2 GET EXPECTED PE ADDR. STF PERR ENABLE PARITY ERRORS. LDB PETD2 PETD2 CONTAINS BAD PARITY. NOP ALLOW TIME FOR PE TO INTERRUPT. CLC 0,C NO INTERRUPT! REPORT ERROR.  LDB PX103 PUT EXPECTED PE ADDR JSB O2AS,I IN THE ERROR MESSAGE. JSB ERMS,I NO PE INTERRUPT. DEF MS103 A=EXPECTED PE ADDR. JMP NOPIN DO NEXT TEST. RET12 STA EXPVR SAVE EXPECTED VR. JSB CHKIN GO CHECK INTERRUPT. NOPIN LDA JS102 UPDATE THE INA PE STA PTRAP TRAP CELL. * * INSURE PE INTERRUPT TURNS OFF PE. * TSTNP ISZ PTRAP ADJUST PE TRAP CELL. LDA PETD3 GET BAD DATA. NO PE INTERRUPT JMP NXT12 BECAUSE LAST PE CLEARS PE INT. ER104 JSB ERMS,I REPORT ERROR IF PE INTERRUPTED. DEF MS104 PE NOT TURNED OFF BY PE INT. SKP * * INSURE STF 5 TURNS ON PE OR GOOD PARITY NOT RESTORED AFTER LDA-B * NXT12 STF PERR ENABLE PE. ISZ PTRAP ADJUST PE TRAP CELL. LDA PETD3 SHOULD GET PE FROM PETD3. JSB ERMS,I NO STF 5 OR GOOD PARITY DEF MS105 RESTORED ON LD*. ER105 STF PERR ENABLE PE. CLF PERR SHOULD TURN OFF PE. ISZ PTRAP ADJUST PE TRAP CELL. LDA PETD4 PE OFF.SHOULDN'T INTERRUPT. JMP T10.2 NO INTERRUPT. CONTINUE TESTING ER106 JSB ERMS,I REPORT ERROR. DEF MS106 CLF 5 FAILED. SKP * * SUBTEST 10.2 * * * INSURE PE DOES NOT OCCUR ON STA-B INSTRUCTION. * T10.2 LDA JS107 INITIALIZE PE STA PTRAP TRAP CELL. STF PERR ENABLE PE. STF 0 TURN ON INTP STA PETD5 NO PE ON ST* INSTRUCTION. JMP CON13 ER107 JSB ERMS,I REPORT ERROR. DEF MS107 PE ON STORE INSTRUCTION * * INSURE GOOD PARITY RESTORED AFTER * A STORE INSTRUCTION. * CON13 ISZ PTRAP ADJUST PE TRAP CELL. LDA PETD5 NO PE SHOULD OCCUR HERE. JMP T10.3 CONTINUE TESTING. ER110 JSB ERMS,I PARITY NOT RESTORED DEF MS110 AFTER STORE INSTRUCTION. SKP * * SUBTEST 10.3 * * * INSURE PE OVERRIDES MEMORY PROTECT * T10.3 CLA CLEAR  STA PTRAP TRAP CELL STF PERR ENABLE PARITY ERROR. STF 0 TURN ON INTERRUPT SYSTEM. STC MPT TURN ON MPT. PEAD1 LIA 0 PE SHOULD OCCUR HERE. LIA VREG SHOULD GET PARITY ADDRESS. SSA VR15=1? JMP T10.4 YES! CONTINUE TESTING. JSB ERMS,I NO! PE DID NOT OVERRIDE MPT. DEF MS111 SKP * * SUBTEST 10.4 * * INSURE PE HOLDS OFF I/O INTERRUPTS. * T10.4 LDA CPTO GET COMPUTER TYPE. SSA,RSS IS THIS A 2100? JMP T10.5 YES! EXIT TEST. LDA PEAD2+1 INITIALIZE MPT STA MPT TRAP CELL WITH CLC 0,C INSTRUCTION STF PERR ENABLE PE. LDA JS112 INITIALIZE I-O JSB TONIO AND TRAP CELL. PEAD2 NOP PE OCCURS HERE. CLC 0,C TURN OFF INTERRUPTS. JMP T10.5 CONTINUE TESTING. ER112 JSB ERMS,I PE DID NOT HOLD DEF MS112 OFF I/O PRIORITY CHAIN. SKP * * SUBTEST 10.5 * * * INSURE NO PE OCCURS IN NON-EXISTENT MEMORY * T10.5 STF PERR ENABLE PE. LDB JS113 INITIALIZE PE STB PTRAP TRAP CELL. LDB MAXMT GET MAX MEMORY SIZE. NXMEM ADB BIT12 ADD 4K TO MEMORY. SSB REACHED 32K YET? JMP T10.6 YES! DONE WITH PE SECTION. LDA B,I GET A WORD FROM NON-EXISTENT JMP NXMEM MEMORY. NO PE SHOULD OCCUR. ER113 LDA B GET ADDRESS OF FAILURE. JSB ERMS,I REPORT ERROR. DEF MS113 PE FROM NON-EXISTENT MEMORY * A=ADDR OF NON-EXISTENT MEMORY * CAUSING THE PARITY ERROR. SKP * * SUBTEST 6 * * T10.6 JSB CHKDO GO CHECK IF REV B. JMP T10.7 EXIT TEST LDA JS301 START REV B TEST. * * THIS SECTION TESTS THE ABILITY OF THE VIOLATION REGISTER * TO CONTAIN THE PROPER INDIRECT PE ADDRESS. * STA PTRAP INITIALIZE TRAP CELL. LDA TPNT6,I FORCE INDIRECT PE.  JSB ERMS,I REPORT ERROR. DEF MS301 NO INDIRECT PE. JMP T10.7 CONTINUE TEST. ER301 LDA TPNT6 EXPECTED VIOLATION ADDRESS. STA EXPVR SAVE IT. JSB CHKIN GO CHECK VIOLATION REGISTER SKP * * * SUBTEST 10.7 * * THIS SECTION VERIFIES PROPER OPERATION OF THE SEPERATE * PE VIOLATION REGISTER. * T10.7 LDA TSTD GET INITIAL ADDRESS OF TEST. STA TMODE ENABLE PE TEST MODE. STA ADMOD SET ADDRESS INCREMENT MODE. STA BUFPT SAVE IT IN POINTER. LDA JS302 INITIALIZE STA PTRAP PE TRAP CELL. PCKLP STF PERR ENABLE PARITY ERROR. LDA BUFPT,I FORCE PARITY ERROR INTERRUPT. NOP ALLOW PE TO OCCUR. CLF PERR SHUT OFF PARITY ERROR. CLE LDA BUFPT NO INTERRUPT. PUT ADDRESS LDB PX103 IN MESSAGE. JSB O2AS,I LDA BUFPT GET BAD PE ADDRESS. JSB ERMS,I REPORT ERROR. DEF MS103 NO PE INTERRUPT. * A=ADDR THAT DIDN'T CAUSE A PE. ER302 LDA BUFPT GET EXPECTED VR VALUE. STA EXPVR SAVE IT FOR CHECK. JSB CHKIN GO CHECK INTERRUPT AND VR. LDA BUFPT GET ADDRESS UNDER TEST. CPA MAXMT LAST ADDRESS? JMP CON20 YES! CONTINUE TESTING. CLB CLEAR INDICATOR. CPA B1777 ADDRESS 1777? JMP UPDAT YES! CLEAR INC INDICATOR. RETN1 LDB ADMOD NO! GET ADDR INC INDICATOR. SZB ADD OR INCREMENT ADDR? INA,RSS ADD ONE TO ADDRESS. ADA B1000 ADD 1000B TO ADDRESS. STA BUFPT SAVE UPDATED POINTER. JMP PCKLP GO TRY ANOTHER ADDRESS. CON20 JSB CHPAR RESTORE PARITY THROUGH MEMORY. JMP TST10,I EXIT TEST 10 * UPDAT STB ADMOD CLEAR ADDRESS. INA UPDATE ADDRESS. JMP RETN1 HED 12892B SPECIAL HARDWARE DIAGNOSTIC * TEST 11 * * SUBTEST 11.1 * * THIS SECTION VERIFIES THE ABILITY OF MPT TO * HOLD OFF JSB 0 AND JSB 1. * TST11 EQU * T11.1 NOP JSB CHKSW CHECK SR 8 & 12 JMP TST11,I EXIT TEST JSB CHKDO CHECK IF REV B. JMP TST11,I EXIT TEST LIA SR GET SW-REG STA SAVSR SAVE SW-REG LDA RTNJX PUT RETURN JUMP STA PFCNT IN PFAR TRAP CELL LDA XFLAG HAS THE JUMPERS BEEN SZA INSTALLED DURING TEST 10 ? JMP L1 YES! DON'T PRINT MESSAGE JSB MSGC,I NO! PRINT MESSAGE DEF MS061 HLT 61B HALT FOR OPERATOR RTNX LDA SAVSR RESTORE SW-REG OTA 1 OUTPUT TO SW-REG L1 STC PFCNT SET CNTL 4 FF CCA SET STA MFLAG MESSAGE FLAG LDB BIT2 INITIALIZE LDA JS305 MPT JSB INTMP TRAP CELL. LDB HLT31 SET UP HALT IN B. STC MPT TURN ON MPT. VAJSB JSB A VIOLATION HERE. ER305 LIA VREG GET VIOLATION REGISTER. CPA VIJSB VIOLATION AT RIGHT PLACE? JMP CON21 YES! CONTINUE NEXT TEST. JSB ERMS,I NO! REPORT ERROR. DEF MS305 ILLEGAL JSB 0 ALLOWED. CON21 LDA HLT31 INITIALIZE FOR STA 2 JSB 1 . STF 0 TURN INTERRUPT SYSTEM ON. ISZ MTRAP ADJUST MPT TRAP CELL. STC MPT TURN ON MPT. VIJS2 JSB B VIOLATION HERE ER306 LIA VREG GET VIOLATION REGISTER. CPA VIJSX WAS JSB 1 ALLOWED? JMP T11.2 NO! CONTINUE WITH NEXT TEST. JSB ERMS,I YES! REPORT ERROR. DEF MS306 ILLEGAL JSB 1 ALLOWED. SKP * SUBTEST 11.2 * * THIS SECTION INSURES ALL I/O INSTRUCTIONS * EXCEPT HALT ARE ALLOWED BY MPT. * T11.2 LDA JS307 INITIALIZE MPT CLB,CLE FENCE WILL BE 0. JSB INTMP INITIALIZE MPT. LDB VIINS GET I/O INSTRUCTION LIST POINTER STB MCNTR SAVE IT. STC MPT TURN ON MPT. IOCCK LDA MCNTR,I GET I/O INSTRUCTION CPA MIN1 ENOD OF LIST? JMP CON22 YES! DO NEXT TEST. STA INLN2,I NO! PUT INST. IN LINE. LINE2 NOP NO VIOLATION SHOULD OCCUR ISZ MCNTR MOVE INSTRUCTION LIST PNTR. JMP IOCCK DO ANOTHER INSTRUCTION. ER307 LDA INLN2 PUT VIOLATION LDB MX53 ADDRESS IN JSB O2AS,I MESSAGE. LDB INLN2 GET VIOLATING ADDRESS LDA B,I GET VIOLATING INSTRUCTION JSB ERMS,I REPORT ERROR. DEF MS053 LEGAL INSTRUCTION CREATED MPV * A=LEGAL I-O INSTRUCTION THAT CAUSED MPT. * B=ADDRESS OF VIOLATING INSTRUCTION JMP T11.3 CON22 CLA CLEAR MPT STA MTRAP TRAP CELL. HLT 31B SHOULD NOT HALT HERE. JMP T11.3 SKP * SUBTEST 11.3 * * THIS SECTION VERIFIES THAT WHEN THE "INT" * JUMPER IS REMOVED FROM THE 12892B BOARD, * AN I-O INTERRUPT WILL OCCUR IMMEDIATELY * AFTER A STC 5 INSTRUCTION. * T11.3 LDA EXT20 INITALIZE I-O JSB TONIO TRAP CELL STC MPT TURN ON MPT. JMP *+1,I INTERRUPT IMMEDIATELY. DEF *+1 CLC 0,C TURN OFF I/O. JSB ERMS,I REPORT ERROR. DEF MS302 MPT INDIRECT LOGIC HELD OFF I/O. RET20 JMP TST11,I EXIT TEST 11 * HED TEST THAT DMA TRANSFERS ARE ALLOWED INTO PROTECTED MEMORY */ * THIS SECTION INSURES THAT DMA TRANSFERS INTO PROTECTED * MEMORY ARE ALLOWED. * TST12 EQU * NOP LDA CPTO GET OPTIONS WORD. AND BIT2 MASK TO DMA BIT. SZA,RSS IS DMA AVAILABLE? JMP TST12,I NO! GO DO NEXT TEST. LDA USRSC GET SC. IOR BIT13 MERGE CONTROL BIT OTA DMACH CONTROL WORD TO DMA LDB A INITIALIZE LDA JS313 MEMORY JSB INTMP PROTECT. CLC DMAIN OUTPUT LDA BUF CW2 TO IOR BIT15 DMA OTA DMAIN CHANNEL. STC DMAIN OUTPUT LDA MIt-N1 CW3 TO OTA DMAIN DMA. LDA T19 STA DMACH CLEAR DMA TRAP CELL. JSB TONIO INITIALIZE I-O. STC DMACH,C TURN ON DMA T19 STC MPT TURN ON MPT. NOP NO MEMORY PROTECT SHOULD OCCUR. HLT 31B FORCE MPT INTERRUPT. ER313 LIA VREG GET VIOLATION REGISTER. LDB A,I GET INSTRUCTION. CPB HLT31 WAS THERE A MPV DURING DMA XFER? JMP TST12,I NO! GO DO NEXT TEST. JSB ERMS,I YES! REPORT ERROR. DEF MS313 MPV DURING DMA XFER. * A=ADDRESS OF ILLEGAL VIOLATION. * B=ILLEGAL VIOLATION INSTRUCTION. JMP TST12,I HED TEST PRESET TO CLEAR MPT * * THIS SECTION TESTS THE ABILITY OF PRESET TO * CLEAR MPT. * TST13 EQU * NOP JSB CHKSW CHECK SR 8 OR 12. JMP TST13,I EXIT TEST LDA JS314 STA 2 SET TEST DATA IN 2. LDB BIT2 FENCE WILL BE 4. JSB INTMP INITIALIZE MPT. JSB MSGC,I DEF MP314 PRESS HALT,PRESET,RUN STC MPT TURN ON MPT. LDB M100 SET COUNTER. STO SET OVERFLOW NOTEF ISZ A WAIT ABOUT JMP *-1 A SECOND. SOS HAS PRESET CLEARED OVER FLOW ? JMP TST13,I YES! EXIT TEST CME FLASH E-REG. ISZ B 10 SECONDS UP? JMP NOTEF NO! WAIT SOME MORE. LDA 2 GET TEST DATA FROM 2. SZA WAS ADDR 2 STORED? JMP TST13,I YES! EXIT TEST. ER314 CLA FLASH CMA THE OTA SR SWITCH INB,SZB FOREVER. JMP *-1 JMP ER314+1 HED MESSAGES ** MESSAGES ** * HDMS OCT 6412 ASC 20,MEMORY PROTECT-PARITY ERROR DIAGNOSTIC/ MS033 ASC 17,E033 MEMORY ALTERED BY ILLEGAL STB ASC 07, INSTRUCTION/ MS034 ASC 20,E034 B-REGISTER ALTERED BY ILLEGAL LIB/ MS035 ASC 19,E035 INTERRUPT ON LIA 0 WITH MPT OFF/y MS036 ASC 17,E036 LIA NOT ALLOWED WITH MPT OFF/ MS037 ASC 20,E037 ILLEGAL DECODE OF SELECT CODE FIVE/ MS042 ASC 16,E042 I-O INTERRUPT AFTER SECOND ASC 08,LEVEL INDIRECT/ MS043 ASC 15,E043 I-O INTERRUPT AFTER FIRST ASC 08, LEVEL INDIRECT/ MS044 ASC 18,E044 NO I-O INTERRUPT ON MULTI-LEVEL ASC 05, INDIRECT/ MS046 ASC 15,E046 NO SKF ON SFS 5 AFTER MEM ASC 06, VIOLATION/ MS047 ASC 18,E047 ILLEGAL SKF ON SFC 5 AFTER MEM ASC 05,VIOLATION/ MS050 ASC 17,E050 ILLEGAL SKF ON SFS 5 WITH NO ASC 07,MEM VIOLATION/ MS051 ASC 16,E051 NO SKF ON SFC 5 WITH NO MEM ASC 06, VIOLATION/ MS052 ASC 11,E052 NO MEM VIOLATION/ MS053 ASC 20,E053 LEGAL INSTRUCTION AT ADDRESS XXXXXX MS054 ASC 15,E054 I-O TRAP CELL INSTR ERR/ OCT 6412 ASC 12,CAUSED A MPT VIOLATION/ MS100 OCT 6412 ASC 18,H100 FORCE EVEN PARITY ON THE MEMORY ASC 06, CONTROLLER OCT 6412 ASC 13,SET PE SWITCH TO HALT MODE OCT 6412 ASC 14,PFAR SWITCH TO AUTO-RESTART OCT 6412 ASC 11,PRESS PRESET(INT), RUN OCT 6412 ASC 18,CPU HALTS WITH 5 OR 106000 IN T-REG OCT 6412 ASC 07,PARITY LAMP ON OCT 6412 ASC 15,SET PARITY HALT SWITCH TO INTP OCT 6412 ASC 15,PRESS PRESET,RUN - HALT 106001 ASC 07, SHOULD OCCUR. OCT 6412 ASC 15,FOLLOW INSTRUCTION IN MOD FOR ASC 07, HALT 106001/ MS061 OCT 6412 ASC 12,H061 POWER DOWN COMPUTER OCT 6412 ASC 19, INSTALL JUMPERS PER TABLE 3-5 IN MOD OCT 6412 ASC 10, POWER UP COMPUTER/ MS062 OCT 6412 ASC 12,H062 POWER DOWN COMPUTER OCT 6412 ASC 17, SET JUMPERS TO INITIAL SETTINGS OCT 6412 ASC 11, PER TABLE 3-1 IN MOD OCT 6412 ASC 10, POWER UP COMPUTER/ MS102 ASC 15,E102 PE INT WITH CNTL 4 CLEAR/ MS103 ASC 19,E103 NO PE INTP WHEN ACCESSING ADDRESS MX103 ASC 04,XXXXXX/ MS104 ASC 17,E104 PE NOT TURNED OFF BY PE INTP/ MS105 ASC 16,EB@<105 STF 5 DOESN'T ENABLE PE OR OCT 6412 ASC 19,LOAD INSTRUCTION RESTORED GOOD PARITY/ MS106 ASC 09,E106 CLF 5 FAILED/ MS107 ASC 15,E107 PE ON STORE INSTRUCTION/ MS110 ASC 17,E110 PARITY NOT RESTORED BY STORE ASC 06,INSTRUCTION/ MS111 ASC 15,E111 PE DID NOT OVERRIDE MPT/ MS112 ASC 19,E112 PE DID NOT BREAK PRIORITY CHAIN/ MS113 ASC 17,E113 PE FROM NON-EXISTENT MEMORY/ MS301 ASC 14,E301 NO PE INTP ON INDIRECT/ MS302 ASC 16,E302 MPT INDIRECT LOGIC HELD OFF ASC 05, I-O INTP/ MS305 ASC 10,E305 JSB 0 ALLOWED/ MS306 ASC 10,E306 JSB 1 ALLOWED/ MS313 ASC 20,E313 MPT VIOLATION DURING DCPC TRANSFER/ MP314 OCT 6412 OCT 6412 OCT 003407 BELL OCT 003407 OCT 003407 ASC 19,H314 PRESS HALT,PRESET AND RUN WITHIN ASC 05,30 SECONDS OCT 003407 OCT 003407 ASC 1,// FWAA EQU * END * B  12907-18003 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 EASMB,A,B,L,C HED 2100A/S FFP DIAGNOSTIC ORG 0 DSN 101110 10 AUGUST 1976 REV 1632 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIAZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE CH EQU 10B I-O CHANNEL SELECT CODE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 101110 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USE!RS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOsR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT |" SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS STA TBGSC LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED TEST DATA TABLES ******************************************************************** * SPECIAL TEST TABLE FOR SNGL TESTS * * OVERFLOW SHOULD BE SET ******************************************************************** SGHD1 DEC 2 SGBS1 EQU * OCT 137777 -0.146936793854E-38 OCT 177600 LOWER BOUNDARY-INNER RANGE OCT 000401 * OCT 0 0.0000000E+00 OCT 0 * * OCT 077777 +0.170141163178E+39 OCT 177600 UPPER BOUNDARY-OUTER RANGE OCT 000376 * OCT 077777 +0.1701412E+39 OCT 177776 * * ******************************************************************** * * ******************************************************************** * SPECIAL TEST TABLE FOR SNGL TEST * * OVERFLOW SHOULD NOT BE SET ******************************************************************** * SGHD2 DEC 2 SGBS2 EQU * OCT 137777 LOWER BOUNDARY-INNER RANGE OCT 177600 OCT 000001 * OCT 137777 OCT 177401 * * OCT 077777 UPPER BOUNDARY-OUTER RANGE OCT 177577 OCT 177776 * OCT 077777 OCT 177776 * * ******************************************************************** * * ******************************************************************** * SPECIAL TEST TABLE XADD TEST * * OVERFLOW SHOULD BE SET ******************************************************************** * ADHD1 EQU * DEC 4 * ADBS1 EQU * OCT 045526 +0.100141183461E+39 OCT 076612 UPPER BOUNDARY-OUTER RANGE OCT 024776 * * DO NOT CHANGE THE FOLLOWING 3 WORDS TO 0!!!! * THE INTERRUPT TEST FOR "XADD" USES THIS ENTRY; A "0" IN * THESE WORDS WILL EXIT THE MICRO WITHOUT TESTING FOR * INTERRUPT. THEREFOR THE INTERRUPT TEST WILL FAIL. * OCT 064523 +0.699999999999E+38 OCT 002353 OCT 126774 * SA OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 132251 -0.100141183461E+39 OCT 101165 LOWER BOUNDARY-OUTER RANGE OCT 153776 * OCT 113254 -0.699999999999E+38 OCT 175424 OCT 050374 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 077777 +0.293873587705E-38 OCT 177777 UPPER BOUNDARY-INNER RANGE OCT 177401 * OCT 137777 -0.146936793854E-38 OCT 177777 OCT 177401 * OCT 0 0.00E00 OCT 0 OCT 0 * * OCT 137777 -0.293873587707E-38 OCT 177777 LOWER BOUNDARY-INNER RANGE OCT 177403 * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 0 0.00E00 OCT 0 OCT 0 * * ******************************************************************** * * ******************************************************************** * SPECIAL TEST TABLE FOR XADD TEST * * OVERFLOW SHOULD NOT BE SET ******************************************************************** * ADHD2 EQU * DEC 4 ADBS2 EQU * OCT 045526 UPPER BOUNDARY-OUTER RANGE OCT 076612 OCT 024776 * OCT 064523 OCT 002353 OCT 125774 * OCT 077777 OCT 177777 OCT 177776 * * OCT 132251 LOWER BOUNDARY-OUTER RANGE OCT 101165 OCT 153776 * OCT 113254 OCT 175424 OCT 050774 * OCT 100000 OCT 0 OCT 000376 * * OCT 040000 UPPER BOUNDARY-INNER RANGE OCT 0 OCT 000001 * OCT 0 OCT 0 OCT 0 * OCT 040000 OCT 0 OCT 000001 * * OCT 137777 LOWER BOUNDARY-INNER RANGE OCT 177777 OCT 177403 * OCT 040000 OCT 0 OCT 000401 * OCT 137777 OCT 177777 OCT 177401 * * ******************>!<:6************************************************** * * * <  12907-18004 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 F* ******************************************************************** * SPECIAL TEST TABLE XMPY TEST ******************************************************************** * MLHD1 EQU * DEC 4 * MLBS1 EQU * OCT 073017 +0.170141183461E+20 OCT 022476 UPPER BOUNDARY-OUTER RANGE OCT 156600 * OCT 042543 +0.999999999999E+19 OCT 110602 OCT 042600 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183461E+20 OCT 155301 LOWER BOUNDARY-OUTER RANGE OCT 021600 * OCT 042543 +0.999999999999E+19 OCT 110602 OCT 042600 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 067405 +0.146936793852E-20 OCT 132635 UPPER BOUNDARY-INNER RANGE OCT 034167 * OCT 044711 +0.100000000000E-17 OCT 073507 OCT 044613 * OCT 0 0.00E00 OCT 0 OCT 0 * * OCT 067405 +0.146936793853E-20 OCT 132635 LOWER BOUNDARY-INNER RANGE OCT 035567 * OCT 133066 -0.100000000000E-17 OCT 104270 OCT 133613 * OCT 0 0.00E00 OCT 0 OCT 0 * * ******************************************************************** * * * * * ******************************************************************** * SPECIAL TEST TABLE XDIV TEST ******************************************************************** * * DVHD1 EQU * DEC 6 * DVBS1 EQU * OCT 073017 +0.170141183461E+20 OCT 022476 UPPER BOUNDARY-OUTER RANGE OCT 156600 * OCT 045616 +0.999999999999E-21 OCT 150050 OCT 035167 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183461E+20 OCT 155301 LOWER BOUNDARY-OUTER RANGE OCT 021600 * OCT 045616, +0.999999999999E-21 OCT 150050 OCT 035167 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 067405 +0.146936793852E-20 OCT 132635 UPPER BOUNDARY-INNER RANGE OCT 034167 * OCT 067405 +0.999999999999E+18 OCT 132635 OCT 035570 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 110372 -0.146936793852E-20 OCT 045142 LOWER BOUNDARY-INNER RANGE OCT 144167 * OCT 067405 +0.999999999999E+18 OCT 132635 OCT 035570 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 073017 +0.170141183466E+20 OCT 022476 DIVIDE BY 0 OCT 166200 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183466E+20 OCT 155301 DIVIDE BY 0 OCT 012200 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * ******************************************************************** * * * ******************************************************************** * TABLES FOR DBLE TESTS ******************************************************************** * DBHED DEC 9 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 5 WORDS. * WORD 1 - 1ST WORD OF INPUT * WORD 2 - 2ND WORD OF INPUT * WORD 3 - 1ST WORD OF EXPECTED OUTPUT * WORD 4 - 2ND WORD OF EXPECTED OUTPUT * WORD 5 - 3RD WORD OF EXPECTED OUTPUT * * DBBAS EQU * OCT 077777 0.1701412E+39 OCT 177776 UPPER BOUNDARY-OUTER RANGE * OCT 077777 0.170141163178E+39 OCT 177400 OCT 000376 * * OCT 100000 -0.1701412E+39 OCT 000376 LOWER BOUNDARY-OUTER RANGE * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 040000 0.1469368E-38 OCT 1 UPPER BOUNDARY-INNER RANGE * OCT 040000 0.146936793853E-38 OCT 0 OCT 1 * * OCT 137777 -0.1469369E-38 OCT 176401 LOWER BOUNDARY-INNER RANGE * OCT 137777 -0.146936898950E-38 OCT 176400 OCT 1 * * OCT 076612 0.9046138E+19 OCT 053576 * OCT 076612 0.904613845903E+19 OCT 053400 OCT 000176 * * OCT 057302 0.7403148E+00 OCT 121400 * OCT 057302 0.740314841270E+00 OCT 121400 OCT 0 * * OCT 040762 0.1117218E-18 OCT 166205 * OCT 040762 0.111721805266E-18 OCT 166000 OCT 000205 * * OCT 115330 -0.2091832E-22 OCT 060153 * OCT 115330 -0.209183192871E-22 OCT 060000 OCT 000153 * * OCT 131524 -0.2209911E+20 OCT 006202 * OCT 131524 -0.220991105949E+20 OCT 006000 OCT 000202 * * * ******************************************************************** * * * ******************************************************************** * TABLE FOR SNGL TESTS ******************************************************************** * * SGHED DEC 18 NR. OF ENTRIES. * EACH ENTRY CONSISTS OF 5 WORDS. * * FIRST 3 WORDS - INPUT * SECOND 2 WORDS - OUTPUT * SGBAS EQU * OCT 054173 +0.287135603715E+35 OCT 000526 OCT 106346 * OCT 054173 +0.2871356E+35 OCT 000746 * * OCT 056172 +0.447201649260E+27 OCT 124176 OCT 170262 * OCT 056172 +0.4472016E+27 OCT 124262 * * OCT 060557 +0.214263410162E+15 OCT 105471 OCT 136540 * OCT 060557 +0.2142634E+15 OCT 105540 * * OCT 046047 +0.998174653012E+07 OCT 114503 {Y OCT 155460 * OCT 046047 +0.9981746E+07 OCT 114460 * * OCT 041443 +0.209814274109E+01 OCT 176076 OCT 165004 * OCT 041443 +0.2008143E+01 OCT 176004 * * OCT 061147 +0.187692645130E-03 OCT 127056 OCT 023351 * OCT 061147 +0.1876926E-03 OCT 127351 * * OCT 053416 +0.791765024518E-10 OCT 032105 OCT 060677 * OCT 053416 +0.7917650E-10 OCT 032277 * * OCT 073326 +0.100659253781E-18 OCT 062211 OCT 043603 * OCT 073326 +0.1006593E-18 OCT 062603 * * OCT 047131 +0.791117549280E-26 OCT 033165 OCT 011525 * OCT 047131 +0.7911175E-26 OCT 033125 * * OCT 076101 +0.912876403313E-37 OCT 014640 OCT 110413 * OCT 076101 +0.9128764E-37 OCT 015013 * * OCT 123006 -0.222764026459E+30 OCT 136521 OCT 001304 * OCT 123006 -0.2227640E+30 OCT 136704 * * OCT 135273 -0.623901549812E+18 OCT 123304 OCT 122570 * OCT 135273 -0.6239015E+18 OCT 123570 * * OCT 116745 -0.200918547392E+06 OCT 027173 OCT 142044 * OCT 116745 -0.2009186E+06 OCT 027044 * * OCT 103050 -0.111893657122E-37 OCT 114715 OCT 057405 * OCT 103050 -0.1118937E-37 OCT 115005 * * OCT 125123 -0.211198476202E-29 OCT 162564 OCT 107075 * OCT 125123 -0.2111985E-29 OCT 162475 * * OCT 137263 -0.432109685454E-21 OCT 110363 OCT 136565 * OCT 137263 -0.4321097E-21 OCT 110565 * * OCT 123016 -0.998563210089E-14 OCT 131465 OCT 001245 * OCT 123016 -0.9985632E-14 OCT 131645 * * OCT 115506 -0.600354780987E-05 OCT 172540 OCT 004737 * OCQ'T 115506 -0.6003548E-05 OCT 172737 * * * ******************************************************************** * * * ******************************************************************** * TABLE FOR XADD TEST ******************************************************************** * ADHED DEC 18 NR. OF ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS. * * 1ST WORD - 1ST WORD OF 1ST OPERAND * 2ND WORD - 2ND WORD OF 1ST OPERAND * 3RD WORD - 3RD WORD OF 1ST OPERAND * * 4TH WORD - 1ST WORD OF 2ND OPERAND * 5TH WORD - 2ND WORD OF 2ND OPERAND * 6TH WORD - 3RD WORD OF 2ND OPERAND * * 7TH WORD - 1ST WORD OF RESULT * 8TH WORD - 2ND WORD OF RESULT * 9TH WORD - 3RD WORD OF RESULT * ADBAS EQU * OCT 072423 0.389056288128E+38 OCT 147144 OCT 010772 * OCT 0 0.00E+00 OCT 0 OCT 0 * OCT 072423 0.380056288128E+38 OCT 147144 OCT 010772 * * OCT 045526 0.100141183460E+39 OCT 076612 OCT 022776 * OCT 132251 -0.100141183460E+39 OCT 101165 OCT 155776 * OCT 0 0.00E+00 OCT 0 OCT 0 * * OCT 074151 0.298123765034E+30 OCT 043132 OCT 137704 * OCT 046764 0.772036481090E+30 OCT 126337 OCT 167710 * OCT 066016 0.107016024612E+31 OCT 177166 OCT 117710 * * OCT 066352 0.200912867305E+22 OCT 041353 OCT 051216 * OCT 066217 0.100128749347E+22 OCT 047614 OCT 103214 * OCT 050630 0.301041616652E+22 OCT 172530 OCT 145620 * * OCT 046602 0.213054823012E+14 OCT 043321 OCT 036132 * OCT 043116 0.773023549017E+14 OCT 055547 OCT 075536 * OCT 054656 0.986078372029E+14 OCT 166433 OCT 145136 * * OCT 065712 0.220756933711E+06 OCT 116740 OCT 17G93044 * OCT 057141 0.386579030127E+06 OCT 030173 OCT 063446 * OCT 045043 0.607335963838E+06 OCT 037665 OCT 170450 * * OCT 044776 0.289045238812E+00 OCT 157147 OCT 141777 * OCT 052642 0.669023651899E+00 OCT 110450 OCT 112000 * OCT 075242 0.958068890712E+00 OCT 000134 OCT 073000 * * OCT 113621 -0.330954612881E+32 OCT 131403 OCT 143322 * OCT 135020 -0.443266128566E+32 OCT 117647 OCT 031324 * OCT 102731 -0.774220741446E+32 OCT 074451 OCT 012724 * * OCT 104621 -0.559274621027E+24 OCT 124573 OCT 125636 * OCT 134546 -0.333392230092E+24 OCT 142537 OCT 137636 * OCT 120574 -0.892666851119E+24 OCT 033555 OCT 132640 * * OCT 130355 -0.556432098326E+16 OCT 017101 OCT 100552 * OCT 125166 -0.300954281811E+16 OCT 130653 OCT 017550 * OCT 103050 -0.857386380138E+16 OCT 073427 OCT 010152 * * OCT 132014 -0.398201765439E+08 OCT 106756 OCT 114064 * OCT 125400 -0.222815023671E+08 OCT 134150 OCT 101062 * OCT 104614 -0.621016789110E+08 OCT 165042 OCT 154464 * * OCT 040030 +0.530193762998E-22 OCT 131703 OCT 005557 * OCT 051064 +0.339991276308E-22 OCT 070321 OCT 106555 * OCT 064462 +0.870185039307E-22 OCT 166053 OCT 151157 * * OCT 043026 +0.778120659375E-14 OCT 036646 OCT 157245 * OCT 050071 +0.111332091996E-14 OCT 022545 OCT 124237 * OCT 050035 +0.889452751371E-14 OCT 061123 OCT 111645 * * OCT 075774 +0.923761080010E-06 OCT 030143 OCT 155731 * OCT 042047 +0.991776928998E-09 l OCT 103065 OCT 033707 * OCT 076036 +0.924752856939E-06 OCT 042046 OCT 173331 * * OCT 131214 -0.391022576801E-26 OCT 146301 OCT 152523 * OCT 123204 -0.225889001134E-26 OCT 021076 OCT 142121 * OCT 102716 -0.616911577934E-26 OCT 156741 OCT 033523 * * OCT 123541 -0.600519744432E-18 OCT 000547 OCT 174611 * OCT 113413 -0.711198003215E-18 OCT 131367 OCT 166211 * OCT 117466 -0.131171774765E-17 OCT 055057 OCT 171213 * * OCT 111035 -0.499701254438E-10 OCT 050771 OCT 033675 * OCT 134377 -0.322876411235E-10 OCT 126206 OCT 163675 * OCT 122616 -0.822577665673E-10 OCT 077500 OCT 007677 * * OCT 100734 -0.769881020151E-02 OCT 154575 OCT 155363 * OCT 133440 -0.111198022357E-02 OCT 010516 OCT 052357 * OCT 133722 -0.881079042509E-02 OCT 067350 OCT 133765 * * ******************************************************************** * * * ******************************************************************** * TEST TABLE FOR XSUB TEST ******************************************************************** * SBHED DEC 7 NR. OF ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS * SBBAS EQU * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 051245 +0.999127650234E+26 OCT 054730 OCT 045256 * 0.* OCT 044756 +0.111723012883E+26 OCT 116524 OCT 152650 * OCT 044547 +0.887404637351E+26 OCT 103055 OCT 127656 * * OCT 054207 +0.398701183404E+18 OCT 104722 OCT 102566 * OCT 107115 -0.512054382698E+18 OCT 012007 OCT 154566 * OCT 062435 +0.910755566102E+18 OCT 035345 OCT 053170 * * OCT 043026 +0.778120659375E-14 OCT 036646 OCT 157245 * OCT 050071 +0.111332091996E-14 OCT 022545 OCT 124237 * OCT 074036 +0.666788567379E-14 OCT 030764 OCT 051243 * * 0   12907-18005 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 G OCT 042047 +0.991776928998E-09 OCT 103065 OCT 033707 * OCT 100412 -0.923761080009E-09 OCT 005743 OCT 075305 * OCT 040721 +0.191553800901E-08 OCT 040041 OCT 136711 * * OCT 107005 -0.351227790163E-30 OCT 021403 OCT 141067 * OCT 132331 -0.231579889015E-30 OCT 014163 OCT 140467 * OCT 131130 -0.119647901148E-30 OCT 012440 OCT 001065 * * ******************************************************************** * * * * * ******************************************************************** * TABLE FOR XMPY TESTS ******************************************************************** MLHED DEC 18 NR. OF ENTRIES. EACH ENTRY * * CONSISTS OF 9 WORDS. * * FIRST 3 WORDS - 1ST OPEAND * SECOND 3 WORDS - 2ND OPEAND * LAST 3 WORDS - EXPECTED OUTPUT * MLBAS EQU * OCT 070130 +0.259048713216E+21 OCT 027501 OCT 057210 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 104305 -0.671190053874E+17 OCT 147543 OCT 015160 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 123061 -0.444697001151E+30 OCT 132061 OCT 165706 * OCT 132376 -0.300015997644E+03 OCT 174745 OCT 002422 * OCT 064477 +0.133416214449E+33 OCT 030237 OCT 161726 * * OCT 051200 +0.510669117427E+29 OCT 143630 OCT 053700 * OCT 047776 +0.199987005543E+02 OCT 125533 OCT 126412 * OCT 063437 +0.102127187617E+31 OCT 041136 OCT 071710 * * OCT 054441 +0.980022398709E+14 OCT 166261 OCT 154136 * OCT 055553 +0.599117266542E+07 ̶ OCT 002252 OCT 054456 * OCT 077521 +0.587148340664E+21 OCT 043703 OCT 172612 * * OCT 041726 +0.444590012834E+07 OCT 146040 OCT 155456 * OCT 043316 +0.290016541196E+06 OCT 004250 OCT 136446 * OCT 045415 +0.128938457772E+13 OCT 051722 OCT 127522 * * OCT 077600 +0.510008296672E+03 OCT 103756 OCT 142022 * OCT 075775 +0.154988760012E+02 OCT 131263 OCT 067410 * OCT 075602 +0.790455534971E+04 OCT 034255 OCT 114032 * * OCT 060463 +0.221008901154E-10 OCT 061737 OCT 005273 * OCT 053346 +0.434501999876E+02 OCT 100234 OCT 157414 * OCT 040775 +0.960288095417E-09 OCT 110433 OCT 151707 * * OCT 061000 +0.340011987202E-15 OCT 072331 OCT 035233 * OCT 050777 +0.200192506734E-01 OCT 132256 OCT 166367 * OCT 076620 +0.680678520374E-17 OCT 021141 OCT 121217 * * OCT 064022 +0.550960071891E-20 OCT 145524 OCT 113173 * OCT 072360 +0.697011278004E-05 OCT 064014 OCT 067737 * OCT 057424 +0.384025383838E-25 OCT 100033 OCT 044131 * * OCT 052700 +0.113490887012E-20 OCT 052206 OCT 064567 * OCT 046617 +0.551103480763E-12 OCT 114157 OCT 011661 * OCT 063753 +0.625452228671E-33 OCT 145654 OCT 027045 * * OCT 122556 -0.522100769010E+20 OCT 010565 OCT 136604 * OCT 064733 +0.433599800126E+06 OCT 176315 OCT 050446 * OCT 132430 -0.226382789088E+26 OCT 120703 OCT 160252 * * OCT 063353 +0.622105439987E+26 OCT 030262 OCT 006254 * OCT 106603 -0.166601987643E-08 OCT 010601 OCT 056707 * ֕ OCT 121762 -0.103644002825E+18 OCT 012407 OCT 020162 * * OCT 136736 -0.346709115603E+08 OCT 154016 OCT 011064 * OCT 065256 +0.266700199801E+02 OCT 014667 OCT 134412 * OCT 110705 -0.924673904043E+09 OCT 030437 OCT 165074 * * OCT 103464 -0.900006521306E-06 OCT 001353 OCT 001331 * OCT 057561 +0.111111600077E-07 OCT 131402 OCT 040315 * OCT 122755 -0.100001164662E-13 OCT 046445 OCT 115645 * * OCT 135233 -0.300947600112E-16 OCT 030162 OCT 146225 * OCT 042374 +0.411197650034E-05 OCT 146771 OCT 125737 * OCT 132462 -0.123748945949E-21 OCT 143463 OCT 017161 * * OCT 103660 -0.199034120660E-21 OCT 173053 OCT 153561 * OCT 075724 +0.900994750110E-09 OCT 167475 OCT 160705 * OCT 105633 -0.179328697807E-30 OCT 164310 OCT 016065 * * OCT 047711 +0.600237011542E-34 OCT 000721 OCT 050037 * OCT 105475 -0.222697990123E-03 OCT 175523 OCT 002751 * OCT 133470 -0.133671576068E-37 OCT 163311 OCT 072007 * * * ******************************************************************** * HED SUBROUTINES * * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (B)=FENCE ADDRESS. * MEMTN NOP LDA PMMTN SET INTERRUPT ADDRESS. STA MPPAR CLA STA MPIND RESET INDICATOR. INA ANNOUNCE THAT WE ARE DOING STA MPTES A MEM. PROTECT TEST. OTB MPPAR LOAD FENCE REGISTER. STF INTP STC MPPAR TURN ON MEM. PROTECT LOGIC. JMP MEMTN,I * * * * MEMORY PROTECT VIOLATION ROUTINE. * * MPCHK NOP CLF INTP CLF MPPAR TURN OFF PARITY LOGIC. LIA MPPAR GET VIOLATION REGISTER. SSA JMP MPCK1 PARITY ERROR! LDA TRHLT MEMORY PROTECT VIOLATION! STA MPPAR RESTORE TRAP CELL HALT. CLA,INA SET INDICATOR. STA MPIND STF MPPAR TURN ON PARITY LOGIC. JMP MPCHK,I RETURN. * MPCK1 EQU * OCT 106077 HALT ON PARITY ERROR. JMP *-1 * * HED CONSTANTS AND STORAGE * * ORG 140B IOIP DEF IOID TSTP DEF TSTD POINTER TO TEST TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 17777 STDB OCT 0 * * * * ORG 150B ******************************************************************** * * MAPPING CODES FOR MACRO * .XFER EQU 220B .GOTO EQU 221B ..MAP EQU 222B .ENTR EQU 223B .ENTP EQU 224B .SETP EQU 227B DBLE EQU 201B SNGL EQU 202B .XMPY EQU 203B .XDIV EQU 204B .DFER EQU 205B .XADD EQU 213B .XSUB EQU 214B ******************************************************************** * MTRY BSS 1 TO CHECK IF FENCE IS RESTORED PMTRY DEF * * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 OUTP1 BSS 1 BSS 1 POUT1 DEF OUTP1 * * MPPAR EQU 5 ZPSTX DEF ZSTEX CONTROL SECTION POINTER HDMS ASC 15,START 2100A-S FFP DIAGNOSTIC/ * IOID EQU * DEF OTATB DEF STCTB DEF CLCTB DEC -1 TEMP BSS 9 DEC -6,-5,-4,-3,-2,-1 . DEC 0,1,2,3,4,5,6,7,8,9 BIT14 OCT 40000 BIT15 OCT 100000 INDIC BSS 1 PADHD DEF ADHED PADBS DEF ADBAS PADB1 DEF ADBS1 PADH1 DEF ADHD1 PADH2 DEF ADHD2 PADB2 DEF ADBS2 TBGSC NOP TBGTR JSB *+1,I DEF TBGIN B77 OCT 77 P40 DEC 40 P8 DEC 8 P15 DEC 15 J BSS 1 M16 DEC -16 M17 DEC -17 M15 DEC -15 PINTR DEF INNTR PINTP DEF INNTP PPROV DEF PROVN PRNTY DEF RNTY1 INNTR RAM .ENTR INSERTS DEF TTB1 FOR RSS .ENTR TEST * INNTP NOP INSERTS NOP FOR RAM .ENTP .ENTP DEF TTB1  TEST * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 TBIND BSS 1 TBGAD BSS 1 TBTIM BSS 1 TBGLP DEC -18 TBGN1 BSS 1 PSBHD DEF SBHED PSBBS DEF SBBAS PSGHD DEF SGHED PSGBS DEF SGBAS PSGH1 DEF SGHD1 PSGB1 DEF SGBS1 PSGH2 DEF SGHD2 PSGB2 DEF SGBS2 PMPH2 DEF MPHD2 PMPB2 DEF MPBS2 PDBHD DEF DBHED PDBBS DEF DBBAS PDVH1 DEF DVHD1 PDVB1 DEF DVBS1 PMPH3 DEF MPHD3 PMPB3 DEF MPBS3 PMP2D DEF MAP2D PMP3D DEF MAP3D PMLHD DEF MLHED PMLBS DEF MLBAS PDVHD DEF DVHED PDVBS DEF DVBAS PMLH1 DEF MLHD1 PMLB1 DEF MLBS1 PNTRP BSS 1 PNTRY DEF ENTRY PERMS DEF ERMES PRMSN DEF RMSSN PMPER DEF MPERR PDATC DEF DATCK PCLCT DEF CLCTB PTBCK DEF TBCHK PTBST DEF TBGST PXAD2 DEF XADD2 PXMP4 DEF XMPY4 PMEMT DEF MEMTN PR142 DEF E142 PR162 DEF E162 PPRNN DEF PRNIN B60 OCT 60 * * ERROR AND NON-ERROR MESSAGES * MMS01 ASC 8,H030 .GOTO TEST/ MMS02 ASC 8,H050 .ENTR TEST/ MMS03 ASC 8,H060 .ENTP TEST/ MMS04 ASC 8,H100 .SETP TEST/ MMS05 ASC 8,H110 ..MAP TEST/ MMS06 ASC 8,H120 SNGL TEST/ MMS07 ASC 8,H130 DBLE TEST/ MMS08 ASC 8,H140 .XADD TEST/ MMS09 ASC 8,H150 .XSUB TEST/ MMS10 ASC 8,H160 .XMPY TEST/ MMS11 ASC 8,H200 .XDIV TEST/ MMS12 ASC 8,H210 .DFER TEST/ MMS13 ASC 8,H220 .XFER TEST/ * * * BUFFER FOR DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * RMS00 ASC 8,XXXX DATA ERROR OCT 6412 CR-LF ASC 2,ACT RMAC1 ASC 11,XXXXXX XXXXXX XXXXXX OCT 6412 ASC 2,EXP RMEX1 ASC 12,XXXXXX XXXXXX XXXXXX/ PRAC1 DEF RMAC1 PREX1 DEF RMEX1 PERN1 DEF ERNR1 PERN2 DEF ERNR2 PERN3 DEF ERNR3 PERN4 DEF ERNR4 PERN5 DEF ERNR5 ERNR1 ASC 2,E130 ERNR2 ASC 2,E140 ERNR3 ASC 2,E150 ERNR4 ASC 2,E160 ERNR5 ASC 2,E200 RM S01 ASC 18,E030 FAILED FOR INDIRECT ADDRESSING/ RMS02 ASC 10,E031 FAILED FOR J=0/ RMS03 ASC 11,E032 FAILED FOR J=NEG/ RMS04 ASC 11,E033 FAILED FOR J>16/ RMS05 ASC 10,E034 FAILED FOR J=8/ RMS06 ASC 18,E050 FAILED FOR ACTUAL NR OF PARAM. ASC 7, ALLOWED NR/ * * BUFFER TO OUTPUT ERROR MESSAGE "NO CHECK ON MEM PROT VIOLATION" * * RMS09 ASC 18,XXXX NO CHECK ON MEM PROT VIOLATION/ E053 ASC 2,E053 E211 ASC 2,E211 E131 ASC 2,E131 E104 ASC 2,E104 PR053 DEF E053 PR211 DEF E211 PR131 DEF E131 PR104 DEF E104 * RMS10 ASC 18,E060 FAILED FOR ACTUAL NR OF PARAM. ASC 7,< ALLOWED NR/ RMS11 ASC 15,E100 A-REG. NOT=0 UPON RETURN/ RMS12 ASC 17,E101 B-REG. DOES NOT CONTAIN LAST ASC 11,ADDRESS+1 UPON RETURN/ RMS13 ASC 14,E102 INCORRECT VALUE STORED/ RMS14 ASC 16,E103 MORE LOCATIONS FILLED THAN ASC 5,REQUESTED/ RMS15 ASC 6,E210 FAILED/ RMS16 ASC 6,E220 FAILED/ RMS17 ASC 17,E054 RETURN ADDRESS NOT STORED IN ASC 9,CORRECT LOCATION/ * * BUFFER TO OUTPUT "OVERFLOW NOT SET". * RMS18 ASC 11,XXXX OVERFLOW NOT SET/ E121 ASC 2,E121 E141 ASC 2,E141 E161 ASC 2,E161 E201 ASC 2,E201 PR121 DEF E121 PR141 DEF E141 PR161 DEF E161 PR201 DEF E201 * * * BUFFER FOR DATA ERROR MESSAGES FOR SNGL * RMS19 ASC 8,E120 DATA ERROR OCT 6412 CR-LF ASC 2,ACT R19AC ASC 7,XXXXXX XXXXXX OCT 6412 ASC 2,EXP R19EX ASC 8,XXXXXX XXXXXX/ P19AC DEF R19AC P19EX DEF R19EX * RMS20 ASC 16,E055 RETURN ADDR. NOT IN A-REG/ RMS21 ASC 15,E056 INCORRECT ADDR. IN B-REG/ * * BUFFER TO OUTPUT "OVERFLOW SET" * RMS22 ASC 9,XXXX OVERFLOW SET/ E123 ASC 2,E123 E143 ASC 2,E143 PR123 DEF E123 PR143 DEF E143 * ****************RMS23 MESSAGE ON OTHER PAGE * * BUFFER FOR ERROR MESSAGES FOR ..MAP TESTS * RMS24 ASC 8,E110 DATA ERROR OCT 6412 CR-LF  ASC 2,ACT R24AC ASC 3,XXXXXX OCT 6412 CR-LF ASC 2,EXP R24EX ASC 4,XXXXXX/ P24AC DEF R24AC P24EX DEF R24EX ****************RMS25 MESSAGE ON OTHER PAGE RMS27 ASC 13,E122 FENCE ADDR NOT SAVED/ * HED SUBROUTINES * * SUBROUTINE TO PRINT "OVERFLOW SET" * ENTER WITH (B)=POINTER TO ERROR NUMBER STRING * PROVS NOP LDA B,I MOVE STA RMS22 ERROR INB NUMBER LDA B,I INTO STA RMS22+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS22 JMP PROVS,I EXIT. * * * * SUBROUTINE TO START UP THE TBG(IF PRESENT) IN * TIME INTERVALS OF 0.1 MS. * TBGTN NOP STA TEMP+8 SAVE (A). LDA TBGTR SET TRAP CELL STA TBGSC,I INSTRUCTION. LDA TBGLP SET TIMING LOOP. STA TBTIM CLA RESET INDICATOR. STA TBIND OTATB OTA CH START UP TBG. STCTB STC CH,C LDA TEMP+8 RESTORE (A). STF INTP TURN ON INTERRUPTS. ISZ TBTIM LOOP. JMP *-1 JMP TBGTN,I EXIT. * * HED TEST DATA TABLES * * ******************************************************************** * TABLE FOR XDIV TESTS ******************************************************************** * DVHED EQU * DEC 17 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS. * * * FIRST 3 WORDS - 1ST OPERAND * SECOND 3 WORDS - 2ND OPERAND * LAST 3 WORDS - EXPECTED OUTPUT * DVBAS EQU * OCT 062646 +0.412336000120E+34 OCT 007535 OCT 145340 * OCT 042272 +0.900813201144E+07 OCT 001001 OCT 073460 * OCT 057250 +0.457737519385E+27 OCT 066051 OCT 066662 * * OCT 072235 +0.881109231566E+25 OCT 022130 OCT 030646 * OCT 071116 +0.234100876999E+06 OCT 116020 OCT 060044 * OCT 040512*0.* +0.376380149815E+20 OCT 121346 OCT 140204 * * OCT 056370 +0.511110388901E+14 OCT 067242 OCT 060534 * OCT 076377 +0.399994678903E+04 OCT 111406 OCT 020030 * OCT 057463 +0.127779297041E+11 OCT 173575 OCT 001104 * * OCT 070262 +0.721269304566E+04 OCT 142655 OCT 141432 * OCT 057544 +0.119238671105E+02 OCT 012160 OCT 105410 * OCT 045634 +0.604895457055E+03 OCT 123625 OCT 107024 * * OCT 045015 +0.666998765432E+18 OCT 037276 OCT 175170 * OCT 047362 +0.222213812456E+17 OCT 035177 OCT 110156 * OCT 074020 +0.300160803715E+02 OCT 073537 OCT 073012 * * OCT 052443 +0.991134896977E-08 OCT 044560 OCT 156715 * OCT 076717 +0.239967811234E-03 OCT 167465 OCT 171751 * OCT 053236 +0.413028269033E-04 OCT 044516 OCT 013345 * * OCT 054147 +0.221007761103E+02 OCT 030732 OCT 044012 * OCT 064254 +0.113489002136E-16 OCT 152477 OCT 004221 * OCT 066032 +0.194739364118E+19 OCT 020313 OCT 130572 * * #0   12907-18006 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 H OCT 074025 +0.388012009141E-24 OCT 075200 OCT 021537 * OCT 042534 +0.211678009126E-02 OCT 153241 OCT 162361 * OCT 067314 +0.183302937676E-21 OCT 140567 OCT 137561 * * OCT 064401 +0.336015800197E+04 OCT 041626 OCT 104430 * OCT 070140 +0.911697334097E+04 OCT 014152 OCT 032742 * OCT 073632 +0.368560691832E-30 OCT 151411 OCT 020467 * * OCT 045430 +0.216450126987E+20 OCT 121027 OCT 121202 * OCT 131634 -0.111161366901E-08 OCT 044430 OCT 027707 * OCT 101052 -0.194717043359E+29 OCT 142161 OCT 132274 * * OCT 104244 -0.880691123011E+22 OCT 161600 OCT 047222 * OCT 041315 +0.334011980776E+02 OCT 064725 OCT 116414 * OCT 106646 -0.263670518933E+21 OCT 130440 OCT 020610 * * OCT 065170 +0.665431209112E+01 OCT 007764 OCT 106006 * OCT 102772 -0.346801235431E-11 OCT 165764 OCT 175665 * OCT 110120 -0.191876827741E+13 OCT 017746 OCT 013522 * * OCT 040240 +0.200012067011E+29 OCT 116103 OCT 161676 * OCT 136726 -0.999803245095E+25 OCT 126231 OCT 031650 * OCT 101367 -0.200051428111E+04 OCT 142601 OCT 025426 * * OCT 120520 -0.666301256707E+16 OCT 014773 OCT 034552 * OCT 055365 +0.200019760222E+15 OCT 056540 OCT 144140 * OCT 136540 -0.333117715953E+02 OCT 057571 OCT 032414 * * OCT 060543 +0.345990123677E-12 OCT 033503 OCT 072657 * OCT 121570 -0.110302660799E-04 OCT 127430 OCT 003341 * OCT 136243 -0.313673415647E-07 OCT 117441 OCT 137321 * * OCT 131643 -0.555610345980E-09  OCT 031347 OCT 160305 * OCT 045777 +0.996110388604E+07 OCT 043761 OCT 065060 * OCT 137661 -0.557779893008E-16 OCT 037111 OCT 013627 * * OCT 116412 -0.900016501999E-10 OCT 144640 OCT 106677 * OCT 074541 +0.333650123667E+14 OCT 113327 OCT 013132 * OCT 113645 -0.269748589362E-23 OCT 062306 OCT 111545 * * * ******************************************************************** * * HED FFP DIAGNOSTIC - TEST TABLE ORG 4000B * TSTD EQU * DEF TST00 .GOTO TEST DEF TST01 .ENTR TEST DEF TST02 .ENTP TEST DEF TST03 .SETP TEST DEF TST04 ..MAP DEF TST05 SNGLE TEST DEF TST06 DBLE TEST DEF TST07 .XADD TEST DEF TST08 .XSUB TEST DEF TST09 .XMPY TEST DEF TST10 .XDIV TEST DEF TST11 .DFER TEST DEF TST12 .XFER TEST DEC -1 * HED FFP DIAGNOSTIC - TEST 1 * ********* * .GOTO * ********* TST00 EQU * XGOTO NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS01 CLA RESET INDICATOR. STA INDIC * * CHECK 16 INDIRECTS (CHECKS SUBR. "GETQ1") * LDA M16 FILL LOCATIONS 1-16 OF STA TEMP LDB PTTB1 TEST TABLE WITH LDA PTTB2 STA TEMP+1 "DEF NEXT LOCATION,I". XGOT3 EQU * LDA TEMP+1 IOR BIT15 STA B,I INB ISZ TEMP+1 ISZ TEMP JMP XGOT3 LDA JNGOT STORE "JMP RETURN" IN LOC. 17 STA TTB17 CLA,INA SET SELECTION NR. STA J JMP XGOT1 GO TO MICRO-CODE. * * ******************************************************************** XGOT1 EQU * RAM .GOTO CALLING SEQUENCE FOR DEF *+18 ".GOTO" FIRMWARE. DEF J PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB3 DEF TTB3 PTTB4 DEF TTB4 PTTB5 DEF TTB5 LPTTB6 DEF TTB6 PTTB7 DEF TTB7 PTTB8 DEF TTB8 PTTB9 DEF TTB9 PTB10 DEF TTB10 PTB11 DEF TTB11 PTB12 DEF TTB12 PTB13 DEF TTB13 PTB14 DEF TTB14 PTB15 DEF TTB15 PTB16 DEF TTB16 ******************************************************************** ******************************************************************** PTB17 DEF TTB17 PTB18 DEF TTB18 TTB18 EQU * * * AFTER COMPLETION OF A SUBTEST, CONTROL WILL COME HERE TO * DETERMINE WHICH SUBTEST HRS TO BE EXECUTED NEXT. * NGOT EQU * LDA INDIC ADA DNGOT LDA A,I JMP A,I * DNGOT DEF *+1 DEF NGOT1 DEF NGOT2 DEF NGOT3 DEF NGOT4 DEF NGOT5 * * NGOT1 EQU * TEST FOR 16 INDIRECTS IS OK. CLA,INA SET INDIC=1. STA INDIC * * NOW CHECK FOR J=0 * LDA JRGOT FILL LDB M16 STB TEMP LOCATIONS OF LDB PTTB1 NGT11 EQU * TEST TABLE WITH STA B,I INB "JMP TO ERROR". ISZ TEMP JMP NGT11 * LDA JNGOT STORE "JMP TO RETURN" STA TTB1 IN LOC. 1. CLA SET SEL. NR AND STA J GO TO MIRCO-CODE. JMP XGOT1 * NGOT2 EQU * TEST FOR J=0 IS O.K. LDA .+2 SET INDIC=2. STA INDIC * * NOW CHECK FOR J<0 * CCA SET SEL. NR. AND STA J GO TO MICRO-CODE. JMP XGOT1 * NGOT3 EQU * TEST FOR J<0 IS O.K. LDA .+3 SET INDIC=3. STA INDIC * * NOW CHECK FOR J>16 * LDA JRGOT STORE "JMP ERROR" IN LOC. 1. STA TTB1 LDA JNGOT STORE "JMP RETURN" IN LOC. 16. STA TTB16 LDA P40 SET LOC. OF SEL. NR. AND STA J GO TO MIRCO-PROGRAM. JMP XGOT1 * NGOT4 EQU * TEST FOR J>16 IS OK. LDA .+4 SET INDIC=4. STA INDIC * * NOW CHECK FOR J=8 * LDA JRGOT STORE "JMP ERROR" IN LOC. 16. STA TTB16 LDA JNGOT STORE "JMP RETURN" IN LOC. 8 STA TTB8 LDA P8 GET SEL. NR. AND STA J GO TO MICRO. JMP XGOT1 * * NGOT5 EQU * JMP XGOTO,I RETURN. * * * * UPON DETECTING AN ERROR(IF FIRMWARE RETURNS TO * A TEST TABLE LOCATION!!!), CONTROL WILL COME HERE * TO DETERMINE WHICH ERROR MESSAGE HAS TO BE PRINTED. * RGOT EQU * LDA INDIC ADA DRGOT LDA A,I JMP A,I * DRGOT DEF *+1 DEF RGOT1 DEF RGOT2 DEF RGOT3 DEF RGOT4 DEF RGOT5 * RGOT1 EQU * * * TEST FAILED FOR 16 INDIRECTS * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS01 JMP NGOT1 GO DO NEXT SUBTEST. * RGOT2 EQU * * * TEST FAILED FOR J=0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS02 JMP NGOT2 DO NEXT SUBTEST. * RGOT3 EQU * * * TEST FAILED FOR J<0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS03 JMP NGOT3 DO NEXT SUBTEST. * RGOT4 EQU * * * TEST FAILED FOR J>16 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS04 JMP NGOT4 DO NEXT SUBTEST. * RGOT5 EQU * * * TEST FAILED FOR J=8 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS05 JMP XGOTO,I TEST.DONE. EXIT. * JRGOT JMP RGOT USED TO JUMP TO "ERROR ROUTINE" JNGOT JMP NGOT USED TO JUMP AFTER NON-ERROR EXIT * * * ****************** *** TEST TABLE *** ****************** * TTB1 BSS 1 TTB2 BSS 1 TTB3 BSS 1 TTB4 BSS 1 TTB5 BSS 1 TTB6 BSS 1 TTB7 BSS 1 TTB8 BSS 1 TTB9 BSS 1 TTB10 BSS 1 TTB11 BSS 1 TTB12 BSS 1 TTB13 BSS 1 TTB14 BSS 1 TTB15 BSS 1 TTB16 BSS 1 TTB17 BSS 1 * ******************************************************************** ****************** ****************** ENTRY NOP THE TEST TABLE + THE FOLLOWING * 4 LOCATIONS FORM THE CALLING * SEQUENCE FOR .ENTR AND .ENTP RNTY1 BSS 1 "RAM .ENTR" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTR * NOP'S FOR .ENTP BSS 1 "RSS" FOR .ENTR * "RAM .ENTP" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTP * ******************************************************************** ******************************************************************** ******************************************************************** STA TEMP+2 SAVE (A). STB TEMP+3 SAVE (B). LDA MPTES MEM. PROTECT TEST? SZA JMP NNTR4 YES. LDA ENTRY GET CONTENTS OF "ENTRY". CPA PNTRP CORRECT RETURN ADDRESS? JMP ENTRY,I YES. GO ON. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS17 JMP PNTRP,I EXIT TO CORRECT RETURN ADDRESS * * HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS * * THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS * ENTRP NOP LDA RENTR SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RENTR DEF *+17 PPTB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 JMP ENTRP,I * * ENTF1 NOP LDA RNTF1 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF1 DEF *+18 PPB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 JMP ENTF1,I * * ENTF2 NOP LDA RNTF2 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF2 DEF *+19 PPPT1 DEF PTTB1 DEF @PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 DEF PTB18 JMP ENTF2,I * * HED FFP DIAGNOSTIC - TEST 2 * ********* * .ENTR * ********* TST01 EQU * XENTR NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS02 * CLA RESET INDICATORS. STA MPTES STA INDIC * LDA .-3 SET UP CALLING SEQUENCE. LDB PINTR JSB SETUP * * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * TEST ALSO IF RETURN ADDRESS IS PROPERLY STORED * IN CORRECT LOCATION. MICRO PROGRAM SHOULD PROPERLY * PROCESS B-REG. ON ENTRY. * CLB RESET ENTRY LOCATION. STB TTB17 RESET LPST LOCATION OF TEST TABL STB ENTRY GO TO MICRO CODE WITH (B)=0. JSB ENTRP EXECUTE TEST. LDB PTB17 CHECK REGISTERS. JSB NTRCK LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTR1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP NNTR1 NO. RNTR1 EQU * JSB ERMS,I YES. ERROR. DEF RMS06 * * TEST FOR ACTUAL NR. OF PARAMETERS = ALLOWED NR. * OF PARAMETERS. * NNTR1 EQU * JSB ENTF1 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPB1 JSB ERPCK CHECK RESULTS. RSS JMP NNTR2 NO ERROR. JSB ERMS,I ERROR. DEF RMS07 * * TEST FOR ACTUAL NR. OF PARAMETERS > ALLOWED NR. * OF PARAMETERS. * NNTR2 EQU * JSB ENTF2 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPPT1 JSB ERPCK CHECK RESULT. RSS JMP NNTR3 NO ERROR. JSB ERMS,IE~ ERROR. DEF RMS08 * * TEST WITH MEMORY PROTECT VIOLATION. * SET FENCE ADDRESS ABOVE "ENTRY". NNTR3 EQU * LDB PRNTY SET UP FOR MEMORY PROTECT TEST, JSB PMEMT,I CLA,INA SAY THAT WE ARE DOING MEM. PROT. STA INDIC TEST #1. JSB ENTRP EXECUTE TEST. * * * RETURN CODE FROM MEMORY PROTECT TESTS. * NNTR4 EQU * LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP NNTR5 YES. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR053 PRINT ERROR MESSAGE. JSB PRNMP JMP NNTR6 EXIT TEST. * * NNTR5 EQU * LDA INDIC SLA,RSS WHICH TEST? JMP NNTR6 TEST #2. EXIT TEST. * * TEST #1 JUST DONE. NOW DO TEST #2. * SET FENCE ADDRESS ABOVE TTB1. * LDB PTTB2 SET UP MEM. PROTECT. JSB PMEMT,I LDA .+2 SAY THAT WE'RE DOING TEST #2. STA INDIC JSB ENTRP EXECUTE TEST. * * NNTR6 EQU * JMP XENTR,I EXIT. * * * * * SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS * ON EXIT FROM MICRO. * ENTER WITH (B)=EXPECTED CONTENTS. * NTRCK NOP STB TEMP+4 SAVE EXPECTED CONTENTS OF B. LDA TEMP+2 GET ORIGINAL CONTENTS OF A. CPA PNTRP =RETURN ADDRESS? JMP NTCK1 YES. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS20 NTCK1 EQU * LDB TEMP+3 GET ORIGINAL CONTENTS OF B. CPB TEMP+4 CORRECT? JMP NTRCK,I YES. EXIT. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS21 JMP NTRCK,I EXIT. * * * * * SUBROUTINE TO CHECK RESULTS OF EXECUTION * OF .ENTR & .ENTP TESTS. * ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED. * (B)=ADDRESS OF PTTB1 * ERPCK NOP STA TEMP SET COUNTER. LDA PTTB1 (A) POINTS TO TTB1. ERPK1 EQU * CPB A,I EQUAL? RSS JMP ERPCK,I NO. ERROR. INB YES. BUMP ADDRESS. z INA BUMP POINTER. ISZ TEMP DONE? JMP ERPK1 NO. ISZ ERPCK YES. BUMP RETURN ADDRESS AND JMP ERPCK,I EXIT. * * * * * SUBROUTINE TO SET UP CALLING SEQUENCE FOR * .ENTR & .ENTP TEST * * ENTER WITH (A)=-NR. OF WORDS TO BE INSERTED * AND (B)=STARTING ADDRESS OF INSERTIONS. * SETUP NOP STA TEMP SET COUNTER. LDA PRNTY SET DESTINATION POINTER. STA TEMP+1 STUP1 EQU * LDA B,I STORE FROM SOURCE INTO STA TEMP+1,I DESTINATION. INB BUMP POINTERS. ISZ TEMP+1 ISZ TEMP DONE? JMP STUP1 NO. JMP SETUP,I YES. * * * HED FFP DIAGNOSTIC - TEST 3 * ********* * .ENTP * ********* TST02 EQU * XENTP NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS03 CLA CLEAR INDICATOR STA MPTES * * * * .ENTP SUBROUTINE IS THE SAME SUBROUTINE AS .ENTR * BUT WITH A DIFFERENT ENTRY POINT. * SO DO JUST ONE TEST. * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * LDA .-4 SET UP CALLING SEQUENCE. LDB PINTP JSB SETUP CLB RESET RETURN ADDRESS LOCATION. STB TTB17 RESET LAST TEST TABLE LOCATION. STB ENTRY GO TO MICRO WITH (B)=0 JSB ENTRP EXECUTE TEST. * LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTP1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP RNTP2 NO. O.K. GO TO EXIT. RNTP1 EQU * JSB ERMS,I YES. OUTPUT ERROR MESSAGE. DEF RMS10 RNTP2 EQU * JMP XENTP,I EXIT. * * HED FFP DIAGNOSTIC - TEST 4 * * TST03 EQU * ********* * .SETP * ********* XSETP NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS04 * * DO REGULAR TEST * JSB STPPR PREPARE TEST TABLE. JSB STPGO GO TO MICRO. JSB STPCK CHECK RE640SULTS. * * DO MEMORY PROTECT TEST. * LDB PTTB2 SET FENCE ADDRESS ABOVE "TTB1". JSB PMEMT,I JSB STPGO GO TO MICRO. * * RETURN FROM MICRO. * LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP XSTP3 YES. EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR104 PRINT ERROR MESSAGE. JSB PRNMP * XSTP3 EQU * JMP XSETP,I EXIT. * * R6   12907-18007 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 I* * * * SUBROUTINE TO SET UP THE PARAMETERS, EXECUTE THE * CALLING SEQUENCE FOR SETP MICRO. * STPGO NOP LDB P15 SET COUNT. STB K LDB PTTB1 SET POINTER. CLA SET (A)=0. * RAM .SETP CALLING SEQUENCE. DEF K * JMP STPGO,I EXIT. * K BSS 1 * * * SUBROUTINE TO PREPARE TEST TABLE LOCATIONS * A "0" WILL BE STORED IN EACH LOCATION * STPPR NOP LDB M16 SET COUNTER. STB TEMP CLA (A)=0. LDB PTTB1 SET POINTER. STPP1 EQU * STA B,I STORE. INB BUMP POINTER. ISZ TEMP DONE? JMP STPP1 NO. JMP STPPR,I YES. EXIT. * * * * SUBROUTINE TO CHECK RESULTS * STPCK NOP STB TEMP SAVE (B). SZA,RSS (A)=0? JMP STPC1 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS11 STPC1 EQU * LDB TEMP RESTORE (B). CPB PTB16 (B)=LAST ADDRESS+1? JMP STPC2 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS12 * * CHECK RESULTS * STPC2 EQU * CLA SET FOR INITIAL VALUE. STA TEMP LDA M15 SET COUNTER. STA TEMP+1 LDB PTTB1 SET POINTER. STPC3 EQU * LDA B,I GET CELL CONTENTS. CPA TEMP OK? JMP STPC4 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS13 JMP STPCK,I EXIT. STPC4 EQU * ISZ TEMP BUMP VALUE. INB BUMP POINTER. ISZ TEMP+1 DONE? JMP STPC3 NO. LDA TTB16 YES. CHECK FOR "OVERRUN". SZA,RSS JMP STPCK,I OK! EXIT. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS14 JMP STPCK,I EXIT. * * * HED FFP DIAGNOSTIC - TEST 5 * ********* * ..MAP * ********* TST04 EQU * XMAP NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS05 * * * TEST 2 DIMENSIONAL ARRAY * * -* INITIATE * LDA PMPH2,I SET CMA,INA STA INDIC COUNTER. LDA PMPB2 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP1 EQU * STA TEMP+1 SET LDA PMP2D POINTERS STA TEMP+2 LDB .-4 TO XMAP2 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP2 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CLA (A)=0 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 2 DIM. MAP2D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP3 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP3 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP4 2 DIM. TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+6 TO NEXT ENTRY. STA TEMP JMP XMAP1 * * * TEST 3 DIMENSIONAL ARRAY * * * INITIATE * XMAP4 EQU * LDA PMPH3,I SET CMA,INA STA INDIC COUNTER. LDA PMPB3 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP5 EQU * STA TEMP+1 SET LDA PMP3D POINTERS STA TEMP+2 LDB .-6 TO XMAP6 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP6 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CCA (A)=-1 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 3 DIM. MAP3D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 3RD SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION BSS 1 POINTER TO 2ND DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP7 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP7 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP8 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER TO ADA .+8 NEXT ENTRY. STA TEMP JMP XMAP5 * XMAP8 EQU * JMP XMAP,I HED FFP DIAGNOSTIC - TEST 6 * ********* * SNGL * ********* TST05 EQU * XSNGL NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS06 * * * DO STANDARD TEST TABLE * LDA PSGHD,I CMA,INA SET STA INDIC COUNTER. LDA PSGBS SET STA TEMP POINTER. * XSNG1 EQU * JSB SNSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 JSB SNPRC JMP XSNG1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PSGH1,I CMA,INA SET STA INDIC COUNTER. LDA PSGB1 SET STA TEMP POINTER. * XSNG5 EQU * CLO CLEAR OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOC CHECK OVERFLOW. JMP XSNG6 IF SET, CONTINUE. LDB PR121 IF NOT SET, OUTPUT JSB PPROV,I ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG6 EQU * JSB SNPRC JMP XSNG5 DO NEXT SUBTEST. * * DO SECOND SPECIAL TEST TABLE * LDA PSGH2,I SET CMA,INA STA INDIC COUNTERYy. LDA PSGB2 SET STA TEMP POINTER. * XSNG7 EQU * STO SET OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOS CHECK OVERFLOW. JMP XSNG8 IF CLEAR, CONTINUE. LDB PR123 IF SET, OUTPUT JSB PROVS ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG8 EQU * JSB SNPRC JMP XSNG7 DO NEXT SUBTEST. * * TEST IF FENCE REGISTER IS SAVED AND RESTORED * LDB PMTRY SET FENCE ABOVE LOC. "MTRY". JSB PMEMT,I TURN ON MEM. PROT. * * NOW DO A SUBTEST * LDA PDBBS SET POINTER TO INPUT. JSB DBSUB DO SUBTEST. * * DO NOT BOTHER TO CHECK RESULT * TRY TO STORE SOMETHING IN LOC. "MTRY" * CCA STA MTRY * LDA MPIND CHECK IF MEM. PROT. INTERRUPT SZA OCCURRED. JMP XSN10 YES. CONTINUE. JSB MTNOF NO. TURN OFF MEM. PROTECT LOGIC. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS27 * XSN10 EQU * JMP XSNGL,I EXIT. * * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * SNSUB NOP * SET UP FOR SUBTEST * STA SGINP INTO MICRO CALL. ADA .+3 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. STA TEMP+2 * * CALL MICRO * RAM SNGL CALLING SEQUENCE. DEF *+2 SGINP BSS 1 POINTER TO INPUT LOCATION. * JMP SNSUB,I EXIT. * * * SUBROUTINE TO CHECK RESULTS * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * SNPRC NOP CPA TEMP+2,I 1ST WORDS COMPARE? RSS JMP SNPR2 NO. ERROR. ISZ TEMP+2 YES. 2ND WORDS COMPARE? CPB TEMP+2,I RSS JMP SNPR2 NO. ERROR. SNPR1 EQU * ISZ INDIC YES. BUMP COUNTER. JMP *+3 ISZ SNPRC DONE. EXIT TO (P+2). X< JMP SNPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP SNPRC,I EXIT TO (P+1). * SNPR2 EQU * JSB PRMSN,I OUTPUT ERROR MESSAGE. JMP SNPR1 * * HED FFP DIAGNOSTIC - TEST 7 * ********* * DBLE * ********* TST06 EQU * XDBL NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS07 * * INITIATE * LDA PDBHD,I CMA,INA SET STA INDIC COUNTER. LDA PDBBS SET STA TEMP POINTER. XDBL1 EQU * JSB DBSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * LDA TEMP+1 SET POINTER TO EXPECTED OUTPUT. JSB PDATC,I CHECK RESULTS. JMP XDBL3 ERROR. XDBL2 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XDBL4 ALL REGULAR TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP XDBL1 DO NEXT SUBTEST. * XDBL3 EQU * LDB PERN1 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP XDBL2 DO NEXT SUBTEST. * * * NOW DO A MEM. PROTECT TEST. * XDBL4 EQU * LDB POUT1 TURN ON MEM. PROTECT WITH FENCE JSB PMEMT,I ADDRESS ABOVE 1ST OUTPUT LOC. LDA PDBBS DO SUBTEST. JSB DBSUB LDA MPIND RETURN FROM MICRO. SZA DID MEM. PROT. VIOL. OCCUR? JMP XDBL5 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR131 PRINT ERROR MESSAGE. JSB PRNMP * * * END OF TESTS. EXIT. * XDBL5 EQU * JMP XDBL,I EXIT. * * * SUBROUTINE TO SET UP A SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT DATA. * DBSUB NOP * * SET UP FOR SUBTEST * STA DBINP INTO MICRO CALL. ADA .+2 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM DBLE CALLING SEQUENCE. DEF *+3 DEF OUTPT POINTER TO OUTPUT LOCATION DBINP BSS 1 POINTER TO INPUT LOCATION JMP DBSUB,I HED FFP DIAGNOSTIC - TEST 8 * ********* * .XADD * ********* TST07 EQU * * * XXADD NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS08 * * DO STANDARD TEST TABLE * LDA PADHD,I SET CMA,INA STA INDIC COUNTER. LDA PADBS SET STA TEMP POINTER. * XADD1 EQU * JSB ADSUB DO SUBTEST. * JSB ADPRC JMP XADD1 DO NEXT SUBTEST. * * NOW DO SPECIAL TEST TABLE. * LDA PADH1,I SET CMA,INA STA INDIC COUNTER. LDA PADB1 SET STA TEMP POINTER. * XADD5 EQU * CLO CLEAR OVERFLOW. JSB ADSUB DO SUBTEST. SOC CHECK OVERFLOW. JMP XADD6 SET! CONTINUE. LDB PR141 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XADD6 EQU * JSB ADPRC JMP XADD5 DO NEXT SUBTEST. * * DO SECOND SPECIAL TEST TABLE * LDA PADH2,I SET CMA,INA STA INDIC COUNTER. LDA PADB2 SET STA TEMP POINTER. * XADD7 EQU * STO SET OVERFLOW. JSB ADSUB DO SUBTEST. SOS CHECK OVERFLOW. JMP XADD8 IF CLEAR, CONTINUE. LDB PR143 IF SET, OUTPUT JSB PROVS ERROR MESSAGE. XADD8 EQU * JSB ADPRC JMP XADD7 DO NEXT SUBTEST. * * DO INTERRUPT TEST. * LDA TBGSC IF NOT CONFIG. SZA,RSS FOR TBG, EXIT. JMP XADD3 LDA PADB1 SET STA XADP3 POINTERS ADA .+3 IN STA XADP4 MICRO CALL. LDA PXAD2 SET ENTRY ADDRESS STA TBGAD INTO MICRO. ADA .+4 STA TBGN1 SET EXIT ADDRESS. JSB TBGTN TURN ON TBG. XADD2 EQU * RAM .XADD CALL MICRO. DEF OUTPT XADP3 BSS 1 XADP4 BSS 1 * CLF INTP JSB PTBCK,I ZCHECK ON INTERRUPT. RSS JMP XADD3 INTERRUPTED. EXIT. JSB PTBST,I NOT INTERRUPTED. STOP TBG. LDB PR142 JSB PPRNN,I OUTPUT ERROR MESSAGE. * * END OF TESTS. EXIT. * XADD3 EQU * JMP XXADD,I EXIT. * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT. * ADSUB NOP STA XADP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XADP2 IN MICRO CALL. ADA .+3 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * * CALL MICRO * RAM .XADD CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XADP1 BSS 1 POINTER TO 1ST OPERAND XADP2 BSS 1 POINTER TO 2ND OPERAND * JMP ADSUB,I EXIT * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * ADPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP ADPR2 ERROR. ADPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ ADPRC DONE. EXIT TO (P+2). JMP ADPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP ADPRC,I EXIT TO (P+1). * ADPR2 EQU * LDB PERN2 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP ADPR1 * * HED FFP DIAGNOSTIC - TEST 9 * ********* * .XSUB * ********* * TST08 EQU * XXSUB NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS09 * * INITIATE * LDA PSBHD,I SET CMA,INA STA INDIC COUNTER. LDA PSBBS SET STA TEMP POINTER. * * * SET UP FOR SUBTEST * XSUB1 EQU * STA XSBP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XSBP2 IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * * * CALL MICRO * RAM .XSUB CALLING cSEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XSBP1 BSS 1 POINTER TO 1ST OPERAND XSBP2 BSS 1 POINTER TO 2ND OPERAND * * * EXIT TO MICRO. CHECK RESULTS. * LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP XSUB3 ERROR. XSUB2 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XSUB4 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP XSUB1 DO NEXT SUBTEST. * XSUB3 EQU * LDB PERN3 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP XSUB2 * * END OF TESTS. EXIT. * XSUB4 EQU * JMP XXSUB,I EXIT. HED FFP DIAGNOSTIC - TEST 10 * ********* * .XMPY * ********* TST09 EQU * XXMPY NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS10 * * DO STANDARD TEST TABLE * LDA PMLHD,I SET CMA,INA STA INDIC COUNTER. LDA PMLBS SET STA TEMP POINTER. * XMPY1 EQU * JSB MPSUB DO SUBTEST. * JSB MPPRC JMP XMPY1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PMLH1,I SET CMA,INA STA INDIC COUNTER. LDA PMLB1 SET STA TEMP POINTER. * XMPY5 EQU * CLO CLEAR OVERFLOW. JSB MPSUB DO SUBTEST. * SOC CHECK OVERFLOW. JMP XMPY2 SET! CONTINUE. LDB PR161 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XMPY2 EQU * JSB MPPRC JMP XMPY5 DO NEXT SUBTEST. * * DO INTERRUPT TEST * LDA TBGSC IF NOT CONFIGURED FOR SZA,RSS TBG, EXIT. JMP XMPY3 LDA PMLB1 SET STA XMLP3 POINTERS ADA .+3 IN STA XMLP4 MICRO CALL. LDA PXMP4 SET ENTRY ADDRESS STA TBGAD INTO MICRO. ADA .+4 STA TBGN1 SET EXIT ADDRESS. JSB TBGTN TURN ON TBG. XMPY4 EQU * )z640 RAM .XMPY CALL MICRO. DEF OUTPT XMLP3 BSS 1 XMLP4 BSS 1 * CLF INTP JSB PTBCK,I CHECK ON INTERRUPT. RSS JMP XMPY3 INTERRUPTED. EXIT. JSB PTBST,I NOT INTERRUPTED. STOP TBG. LDB PR162 JSB PPRNN,I OUTPUT ERROR MESSAGE. * * END OF TEST. EXIT. * XMPY3 EQU * JMP XXMPY,I EXIT. * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * MPSUB NOP STA XMLP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XMLP2 IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XMPY CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XMLP1 BSS 1 POINTER TO 1ST OPERAND XMLP2 BSS 1 POINTER TO 2ND OPERAND * JMP MPSUB,I EXIT. * * 6   12907-18008 1632 S 0122 FFP DIAGNOSTIC 2100              H0101 J* * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * MPPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP MPPR2 ERROR. MPPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ MPPRC DONE. EXIT TO (P+2). JMP MPPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP MPPRC,I EXIT TO (P+1). * MPPR2 EQU * LDB PERN4 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP MPPR1 * * * HED FFP DIAGNOSTIC - TEST 11 * ********* * .XDIV * ********* TST10 EQU * XXDIV NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS11 * * DO STANDARD TEST TABLE * LDA PDVHD,I SET CMA,INA STA INDIC COUNTER. LDA PDVBS SET STA TEMP POINTER. * XDIV1 EQU * JSB DVSUB DO SUBTEST. * JSB DVPRC JMP XDIV1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PDVH1,I SET CMA,INA STA INDIC COUNTER. LDA PDVB1 SET STA TEMP POINTER. * XDIV5 EQU * CLO CLEAR OVERFLOW. JSB DVSUB DO SUBTEST. SOC CHECK OVERFLOW. JMP XDIV2 SET! CONTINUE. LDB PR201 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XDIV2 EQU * JSB DVPRC JMP XDIV5 DO NEXT SUBTEST. * * END OF TEST. EXIT. * JMP XXDIV,I EXIT. * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO * ENTER WITH (A)=POINTER TO INPUT * DVSUB NOP STA XDVP1 SET POINTER TO 1ST OPERAND IN ADA .+3 MICRO CALL. SET POINTER TO STA XDVP2 2ND OPERAND IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XDIV CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XDVP1 BSS 1 POINTER TO 1ST OPERAND XDVP2 BSS 1 POINTER TO 2ND OPERAND * JMP DVSUB,I EXIT. * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2) * DVPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP DVPR2 ERROR. DVPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ DVPRC DONE. EXIT TO (P+2). JMP DVPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP DVPRC,I EXIT TO (P+1). * DVPR2 EQU * LDB PERN5 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP DVPR1 * * * HED FFP DIAGNOSTIC - TEST 12 * ********* * .DFER * ********* TST11 EQU * XDFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS12 * JSB XDSET SET UP TEST. * * NOW EXECUTE .DFER TEST. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * JSB XDCHK CHECK RESULTS. JMP XDFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS15 * * * CHECK MEMORY PROTECT * XDFR3 EQU * LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB PMEMT,I MEM. PROTECT LOGIC. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * * RETURN FROM MICRO. * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XDFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR211 PRINT ERROR MESSAGE. JSB PRNMP XDFR4 EQU * JMP XDFER,I EXIT TEST. * * * * SUBROUTINE TO PREPARE TEST * XDSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB4 STA TTB5 STA TTB6 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB7 JMP XDSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS U* IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * XDCHK NOP LDA .-3 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XDCK1 EQU * LDA B,I GET CONTENTS. CPA .-1 =-1? RSS JMP XDCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XDCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XDCHK,I YES. EXIT TO (P+1). XDCK2 EQU * ISZ XDCHK NO. ERROR. EXIT TO (P+2). JMP XDCHK,I * * HED FFP DIAGNOSTIC - TEST 13 * ********* * .XFER * ********* TST12 EQU * XXFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS13 * JSB XDSET SET UP TEST. * * EXECUTE * LDA PTTB4 (A)=SOURCE ADDRESS. LDB PTTB1 (B)=DESTINATION ADDRESS. RAM .XFER * JSB XFCHK WRONG RETURN. ERROR! JSB XDCHK CHECK RESULTS. JMP XXFER,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP XXFER,I EXIT TEST. * * * * SUBROUTINE TO PRINT "RETURN AT INCORR LOC" * XFCHK NOP JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS23 JMP XFCHK,I EXIT. * RMS23 ASC 13,E221 RETURN AT INCORR LOC/ * * HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDA TRHLT RESTORE TRAP CELL HALT. STA MPPAR CLA RESET MEM. PROTECT TEST STA MPTES INDICATOR. CLF INTP TURN OFF INTERRUPT SYSTEM. JMP MTNOF,I EXIT. * * * * SUBROUTINE TO PRINT "NO CHECK ON MEM PROT VIOLATION". * ALSO TO TURN OFF MEM PROTECT LOGIC. * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDA B,I MOVE STA RMS09 ERROR INB NUMBER LDA B,I INTO STA RMS09+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS09 JMP PRNMP,I EXIT. * * SKP * ORG 6000B * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP: * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)= POINTER TO OBTAINED OUTPUT * ERMES NOP LDA B,I MOVE STA RMS00 ERROR NUMBER INB LDA B,I I INTO STA RMS00+1 MESSAGE BUFFER. * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SET POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-3 LDA PRAC1 JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SET POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-3 LDA PREX1 JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP INB STB TEMP+6 LDA POUTP,I (A)=1ST WORD OF OBTAINED OUTPUT. LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I GO TO ERROR PRINTING ROUTINE. DEF RMS00 LDB BIT14 IF BIT#14 IS NOT SET, JSB SWRT,I JMP ERMES,I EXIT. ISZ TEMP+6 OTHERWISE SET (A)=3RD WORD LDB TEMP+6,I OF OBTAINED OUTPUT, CLB SET (B)=0 AND OCT 107000 HALT. * LDA TEMP+1,I SET (A)=1ST WORD OF EXPECTED ISZ TEMP+1 OUTPUT. LDB TEMP+1,I SET (B)=2ND WORD OF EXPECTED OCT 107001 OUTPUT AND HALT. * ISZ TEMP+1 SET (A)=3RD WORD OF EXPECTED LDA TEMP+1,I OUTPUT. CLB SET (B)=0 OCT 107002 AND HALT. JMP ERMES,I EXIT. * * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS * (STORED IN A BUFFER) INTO OCTAL AND INSERT THEM * IN ASCII FORMAT INTO A MESSAGE BUFFER. * * ENTER WITH (A)= POINTER TO DESTINATION STRING * ENT (B)= -NR OF DATA ITEMS TO BE PROCESSED * * PRIOR TO ENTERING THE SUBROUTINE,LOCATION * (TEMP+5)MUST CONTAIN THE POINTER TO THE SOURCE STRING * (OBTAINED OR EXPECTED OUTPUT). * THE NUMBERS TO BE PRINTED ARE ASSUMED TO BE * SEPERATED BY TWO BLANKS. * CBNOC NOP STA TEMP+7 SAVE POINTER. STB TEMP+6 SET COUNTER. CBNC1 EQU * LDB TEMP+5,I (B)=BINARY NUMBER * * CONVERT AND INSERT. * STA TEMP+3 SET POINTER. LDA .-3 SET COUNTER. STA TEMP+4 * * FIRST PROCESS BIT#15. * CLA (A)=0. RBL,SLB IF BIT#15 IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE INTO UPPER AND STORE. STA TEMP+3,I * * NOW PROCESS THE OTHER BITS. * CLE (E)=0. CBNC2 EQU * CLA (A)=0. ROTATE. RBL,SLB IF BIT IS SET, ADA .+4 ADD 4. RBL,SLB ROTATE. IF BIT IS SET, ADA .+2 ADD 2. RBL,SLB ROTATE. IF BIT IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE 8 BITS. SEZ IF LOWER CHAR., JMP CBNC3 ROTATE 8 BITS ALF,ALF AND IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I * CME COMPLEMENT (E). SEZ,RSS IF UPPER CHAR. JUST DONE, JMP CBNC2 GO BACK. ISZ TEMP+3 IF LOWER CHAR. JUST DONE, ISZ TEMP+4 BUMP POINTER AND GO BACK. JMP CBNC2 NOT ALL BITS PROCESSED YET. * * ISZ TEMP+6 ALL DATA ITEMS PROCESSED? RSS JMP CBNOC,I YES. EXIT. ISZ TEMP+5 NO. BUMP LDA TEMP+7 POINTERS ADA .+4 AND STA TEMP+7 GO JMP CBNC1 BACK. * * * SUBROUTINE TO PRINT "0OVERFLOW NOT SET". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PROVN NOP LDA B,I MOVE STA RMS18 ERROR INB NUMBER LDA B,I INTO STA RMS18+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS18 JMP PROVN,I EXIT. * * * SUBROUTINE TO STOP TBG AND RESTORE * TRAP CELL HALT * TBGST NOP CLF INTP STOP INTERRUPTS. CLCTB CLC CH STOP TBG. LDA TRHLT RESTORE TRAP STA TBGSC,I CELL HALT. JMP TBGST,I EXIT. * * * SUBROUTINE TO DETERMINE IF TBG INTERRUPTED * IN MICRO CODE. IF SO, EXIT TO (P+2). * OTHERWISE EXIT TO (P+1). * TBCHK NOP LDA TBIND CHECK FOR THE(ALMOST IMPOSSIBLE) SZA CASE,THAT TBG DID NOT INTERRUPT. JMP TBCK1 INTERRUPTED. JSB TBGST DID NOT INTERRUPT YET. STOP TBG. JMP TBCHK,I EXIT TO (P+1). TBCK1 EQU * SLA,RSS INTERRUPTED IN MICRO? JMP TBCHK,I NO. EXIT TO (P+1). * ISZ TBCHK YES. EXIT TO (P+2). LDA TEMP+8 RESTORE (A). JMP TBCHK,I * * * * SUBROUTINE TO CHECK RESULTS OBTAINED BY * DBLE XADD XSUB * * XMPY XDIV * * MICRO CODE. * * ENTER WITH (A)=POINTER TO EXPECTED OUTPUT. * IF NO COMPARISON, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2). DATCK NOP STA TEMP+2 SAVE POINTER EXPECTED OUTPUT. LDA POUTP STA TEMP+3 SET POINTER TO OBTAINED OUTPUT. LDB .-3 (B)=COUNTER DTCK1 EQU * LDA TEMP+2,I CPA TEMP+3,I COMPARE? RSS JMP DATCK,I NO. ERROR. EXIT TO (P+1). ISZ TEMP+2 YES. BUMP POINTERS. ISZ TEMP+3 INB,SZB DONE? JMP DTCK1 NO. ISZ DATCK YES. EXIT TO (P+2). JMP DATCK,I * * * TBG INTERRUPT SUBROUTINE * TBGIN NOP ISZ TBIND SET INDICATOR=1. STA TEMP+8 SAVE (A). JSB TBGST &{ STOP TBG. RESTORE TRAP CELL HALT LDA TBGIN INTERRUPTED IN MICRO CODE? CPA TBGAD RSS YES. EXIT WITH INDICATOR=1. ISZ TBIND NO. SET INDICATOR=2. EXIT. JMP TBGN1,I EXIT. * * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR SNGL TESTS. * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)=POINTER TO OBTAINED OUTPUT * RMSSN NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-2 (B)=-2 LDA P19AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-2 (B)=-2 LDA P19EX (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP LDA B,I (A)=1ST WORD OF OBTAINED OUTPUT. INB LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS19 LDB BIT14 IF BUT#14 IS NOT SET, JSB SWRT,I JMP RMSSN,I EXIT. LDB TEMP+1 OTHERWISE SET (A)=1ST WORD LDA B,I OF EXPECT OUTPUT. INB SET (B)=2ND WORD OF EXPECTED LDB B,I OUTPUT AND OCT 107000 HALT. JMP RMSSN,I EXIT. * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR ..MAP TESTS * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)= POINTER TO EXPECTED OUTPUT * (POUTP) = POINTER TO OBTAINED OUTPUT * MPERR NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. CCB (B)=-1 LDA P24AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP%+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. CCB (B)=-1 LDB P24EX (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDA POUTP,I (A)=OBTAINED OUTPUT. LDB TEMP+1,I (B)=EXPECTED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS24 JMP MPERR,I EXIT. * * * * SUBROUTINE TO PRINT "NOT INTERRUPTABLE". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRNIN NOP LDA B,I MOVE STA RMS25 ERROR INB NUMBER LDA B,I INTO STA RMS25+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS25 JMP PRNIN,I EXIT. * * * BUFFER TO OUTPUT "NOT INTERRUPTIBLE" * RMS25 ASC 12,XXXX NOT INTERRUPTIBLE/ E142 ASC 2,E142 E162 ASC 2,E162 * HED TEST DATA TABLES * * ******************************************************************** * TABLES FOR ..MAP TESTS ******************************************************************** * USED FOR 2 DIMENSIONAL ARRAY TESTS. ******************************************************************** * MPHD2 EQU * DEC 4 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 6 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - LENGTH OF 1ST DIMENSION * WORD 5 - NR. OF WORDS/VARIABLE * WORD 6 - EXPECTED OUTPUT * MPBS2 EQU * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 2 OCT 4000 * OCT 6000 DEC 1 DEC 10 DEC 10 DEC 2 OCT 6264 * OCT 7777 DEC 10 DEC 1 DEC 10 DEC 3 OCT 10032 * OCT 6500 DEC 10 DEC 10 DEC 10 DEC 1 OCT 6643 * * * * * ******************************************************************** * USED FOR 3 DIMENSIONAL ARRAY TEST. 640******************************************************************** * MPHD3 EQU * DEC 8 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 8 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - 3RD SUBSCRIPT * WORD 5 - LENGTH OF 1ST DIMENSION * WORD 6 - LENGTH OF 2ND DIMENSION * WORD 7 - NR. OF WORDS/VARIABLE * WORD 8 - EXPECTED OUTPUT * MPBS3 EQU * OCT 4000 DEC 1 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4000 * OCT 4000 DEC 10 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4033 * OCT 4000 DEC 1 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4416 * OCT 4000 DEC 10 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4451 * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11214 * OCT 4000 DEC 1 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11632 * OCT 4000 DEC 10 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11247 * OCT 4000 DEC 10 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11665 * * * ******************************************************************** * * * FWAA EQU * END 6   12908-18001 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 KASMB,A,B,L,C HED 12908 WRITEABLE CONTROL STORE DIAGNOSTIC ORG 0 * * * OPERATING INSTRUCTIONS * * * 1.LOAD AND CONFIGURE THE DIAGNOSTIC CONFIGURATOR. * * 2.LOAD DIAGNOSTIC : * A.SET P=100. * B.SET THE SWITCH REGISTER TO : * * BITS 0 THRU 5 = SELECT CODE OF WCS PCA * BITS 6 THRU 11 = RESERVED * BITS 12THRU 15 = CONTROL STORE MODULE BEING REPLACED * * NOTE-IF MACHINE IS A 2100 AND HAS FLOATING POINT OPTION * INSTALLED,CONFIGURE WCS MODULE FOR MODULE 2 OR 3. DO * NOT CONFIGURE FOR MODULE 1. IF MACHINE IS A 21MX,THEN DO * NOT CONFIGURE FOR MODULES 0,1,2,16 OR 17(OCTAL). * * C.PRESS PRESET,RUN. * D.SUCCESSFUL CONFIGURATION IS A HALT 102074. * * 3.SELECT PROGRAM OPTIONS * A.SET SWITCH REGISTER TO : * * BIT 0 = SET TO ENTER TSTMM AND TEST ALL WCS MODULES * BIT 1 = SET TO ENTER TSTSS AND PERFORM SPECIAL TESTING * BIT 2 = SET TO HALT(102050) AFTER EACH STEP,A = STEP # * BIT 3 = SET TO LOOP ON LAST STEP * BIT 4 = SET TO SHORTEN ERROR REPORTING * BIT 5 = SET TO SHORTEN ERROR REPORTING BY SKIPPING * TO THE NEXT STEP (FASTER THAN BIT 4) * BIT 6 = SET TO ENTER TSTLL AND LOOP ON MICROCODE * BIT 7 = RESERVED * BIT 8 = NOT APPLICABLE * BIT 9 = SET TO HALT(102075) AND SPECIFY TESTS IN A&B * BIT 10 = SET TO SUPPRESS NON-ERROR MESSAGE PRINTOUT * BIT 11 = SET TO SUPPRESS ERROR MESSAGE PRINTOUT * BIT 12 = SET TO LOOP ON DIAGNOSTIC. CLEAR TO HALT(102077) * AFTER EACH PASS,A = PASS # * BIT 13 = SET TO LOOP ON LAST TEST * BIT 14 = SET TO SUPPRESS ERROR HALTS * BIT 15 = SET TO HALT(102076) AFTER EACH TEST,A = TEST # * * B.PRESS PRESET,RUN. * * NOTE-RESTART FROM ADDRESS 100 TO RECONFIGURE AND RESTA@RT. * RESTART FROM ADDRESS 2000 TO RESTART USING EXISTING * CONFIGURATION. * * SEE ROUTINES LISTINGS FOR ADDITIONAL INFORMATION. * SKP * * * SPECIAL ROUTINE INSTRUCTIONS * * * 1. TSTMM-MULTIPLE WCS TESTING * * A.SET PROGRAM OPTION BIT 0. * B.PROGRAM HALTS 102060 AFTER CURRENT PASS. * C.SET A AND B REGISTERS TO : * * A REG : * * BITS 0 THRU 5 = SELECT CODE OF NEXT HIGHER ORDER WCS PCA * BITS 6 THRU 11 = RESERVED * BITS 12THRU 15 = CONTROL STORE MODULE BEING REPLACED * * B REG : * * BITS 0 THRU 5 = SELECT CODE OF HIGHEST ORDER WCS PCA * BITS 6 THRU 11 = RESERVED * BITS 12 THRU 15 = CONTROL STORE MODULE BEING REPLACED * * OR CLEAR FOR NONEXISTENT WCS * * D.PRESS RUN. * E.PROGRAM HALTS 102074 FOR SUCCESSFUL CONFIGURATION. * F.SELECT PROGRAM OPTIONS FROM STEP 3. IN THE * OPERATING INSTRUCTIONS. * G.PRESS PRESET,RUN. * * 2.TSTSS-LOOP ON WCS I/O ROUTINE **** * * * * A.SET PROGRAM OPTION BIT 1. * * * B.PROGRAM HALTS 102063. * **** * C.SET A AND B REGISTERS TO : **** * * * * * A REG : * * * **** * BITS 0 THRU 7 = 8 MOST SIGNIFICANT BITS OF DATA WORD * BITS 8 THRU 15 = 8 BIT WCS MODULE ADDRESS * * B REG : * * BITS 0 THRU 15 = 16 LEAST SIGNIFICANT BITS OF DATA WORD * * D.PRESS PRESET,RUN. * * 3.TSTLL-LOOP ON WCS MICROCODE ROUTIN * * A.SET PROGRAM OPTION BIT 6. * * NOTE-IF MACHINE IS A 2100 AND THE WCS BOARD UNDER TEST * IS A 12908A,BE SURE BACKPLANE JUMPER ASSEMBLY,PART * NO. 12908-60005 IS CONNECTED ON THE BACKPLANE * SKP * * PROGRAM STARTING LOCATION AND DIAGNOSTIC CONFIGURATOR LINKS * ORG 100B JMP CNFIG,I C.101 EQU 101B FAST INPUT LINK C.102 EQU 102B SLOW OUTPUT LINK C.103 EQU 103B FAST OUTPUT LINK C.104 EQU 104B SLOW INPUT LINK C.105 ORG 105B FWAM = PROGRAM ENDING DEF PEND+1 ADDRESS + 1 C.106 EQU 106B LWAM C.107 EQU 107B RESERVED C.110 EQU 110B TIMER COUNTER C.111 EQU 111B FAST INPUT SELECT CODE C.112 EQU 112B SLOW OUTPUT SELECT CODE C.113 EQU 113B FAST OUTPUT SELECT CODE C.114 EQU 114B SLOW INPUT SELECT CODE C.115 EQU 115B COMPUTER TYPE AND OPTIONS C.116 EQU 116B DEVICE SELECT CODE C.117 EQU 117B MEMORY SIZE C.120 EQU 120B NOT USED C.121 EQU 121B TIMER LINK C.123 EQU 123B INTEGER TO ASCII LINK C.124 EQU 124B OCTAL TO ASCII LINK C.125 EQU 125B ASCII TO OCTAL,INTEGER LINK C.126 ORG 126B OCT 103105 DIAGNOSTIC SERIAL NUMBER C.127 EQU 127B FORMATTER LINK ORG 130B BEGIN JMP BEGIN,I DIAGNOSTIC SKP * * BASE PAGE LINKS * A EQU 0 A REGISTER B EQU 1 B REGISTER DMA EQU 6B DMA INTERRUPT ADDRESS WCS EQU 0 WCS PCA SELECT CODE IN LISTING CNFIG DEF INIT LINK TO CONFIGURATION ROUTINE BEGIN DEF START PROGRAM STARTING ADDRESS LINK PPASS DEF PM8 POINT TO PASS # IN PASS MSG JMP.1 JMP INTO,I DMA INTERRUPT INTO DEF T.104 INSTRUCTION FOR TEST1 ERADD DEF ERR3+1 CALLING ADDRESS FROM ERROR ROUT. PTAB DEF TABLE MESSAGE TABLE ADDRESS ETAB DEF ERTAB ERROR TABLE ADDRESS PP4AA DEF PM4AA LINK TO STEP # AREA OF E004 PP4 DEF MSG4 TABLE LINK TO MSG4 PP4A DEF PM4A LINK TO ADDRESS AREA OF E004 PP4B DEF PM4B LINK TO DATA READ AREA OF E004 PP4C DEF PM4C LINK TO DATA WRITT6.EN AREA OF E04 EP4C DEF PM4CE END OF DATA WRITTEN AREA OF E004 POCT1 DEF OCTA1 LINK TO 1ST HALF OF WORK AREA POCT2 DEF OCTA2 LINK TO 2ND HALF OF WORK AREA POCT3 DEF OCTA3 LINK TO PORTION OF WORK AREA POCT4 DEF OCTA2+1 LINK TO LAST 2 DIGITS OF # PP6A DEF PM6A LINK TO MODULE # AREA OF H030 PP6B DEF PM6B LINK TO ROUTINE AREA OF H030 PP6C DEF PM6C LINK TO STEP # AREA OF H030 BACK DEF RSTRT REPEAT PASS LINK PMSG4 DEF MS4 LINK TO MESSAGE E004 PTSTS DEF TSTSS LINK TO ROUTINE TSTSS PCNF1 DEF CONF1 LINK TO CONFIGURATION PTSTM DEF TSTMM LINK TO ROUTINE TSTMM PMRTN DEF MRTRN TSTMM RETURN POINT PP9A DEF PM9A LINK TO MACRO AREA OF H031 PP9B DEF PM9B LINK TO A AFTER AREA OF H031 PP9C DEF PM9C LINK TO EXPECTED A AREA OF H031 PP9D DEF PM9D LINK TO B AFTER AREA OF H031 PP9E DEF PM9E LINK TO EXPECTED B AREA OF H031 PP5 DEF PM5 LINK TO STEP # AREA OF E005 PP8 DEF PM8A LINK TO END OF PASS MESSAGE PP7 DEF PM7 LINK TO STEP # AREA OF E007 SRTRN DEF CONT LINK TO SKIP STEP RETURN PT. PTJMP DEF T.JMP LINK TO SKIP FOR STEP 21 MOD.2 DEF MA006 LINK TO 2100 MOD ADR 006 MOD.5 DEF MA017+2 LINK TO 2100 MOD ADR 020 PMOD2 DEF MI00B LINK TO 2100 MODIFICATION+1 MOD.3 DEF MA000+1 LINK TO 2100 MOD ADR 0(LAST 16) MODE1 DEF MA005+1 LINK TO MOD ADR 005+1 MODE3 DEF MA012+1 LINK TO 2100 MOD ADR 012 MODE4 DEF MA013 LINK TO 2100 MOD ADR 013 MODE2 DEF MA117+2 LINK TO 2100 MOD.ADR 120 PMOD1 DEF MI00A LINK TO 2100 MODIFICATION TABLE MOD.1 DEF MA000 LINK TO 2100 MOD ADR 000 MOD.6 DEF MA377 END OF 2100 MICROCODE PTSTL DEF TSTLL LINK TO ROUTINE TSTLL PMODX DEF MX00A LINK TO 21XX MICROCODE TABLE EMODX DEF X375A LINK TO 21XX END OF MODIFICATION PREMX DEF REMX LINK TO ROUTINE REMX SKP * * * DATA BUFFER POINTERS * * DBUF1 DEF *+1 ABUF1 DEF X2100 LINK TO 2100 MICROPROGRAM BUFFER DEF X2100+511 LAST WORD IN 2100 BUFFER DEF X2100+256 MIDDLE OF 2100 BUFFER DEF X2100+510 2ND TO LAST WORD IN 2100 BUFFER DBUF2 DEF *+1 BBUF1 DEF X21XX LINK TO 21XX MICROPROGRAM BUFFER DEF X21XX+511 LAST WORD IN 21XX BUFFER DEF X21XX+256 MIDDLE OF 21XX BUFFER DEF X21XX+510 2ND TO LAST WORD IN 21XX BUFFER DBUF3 DEF *+1 PBUF1 BSS 1 LINK TO DATA BUFFER PBUF2 BSS 1 LAST WORD IN DATA BUFFER PBUF3 BSS 1 MIDDLE OF DATA BUFFER PBUF4 BSS 1 2ND TO LAST WORD IN DATA BUFFER * * * STEP ADDRESS TABLE * * STAB DEF *+1 DEF STP01+1 DEF STP02+1 LAST0 DEF STP03+1 DEF STP04+1 DEF STP05+1 LAST1 DEF STP06+1 DEF STP07+1 DEF STP10+1 DEF STP11+1 DEF STP12+1 DEF STP13+1 DEF STP14+1 DEF STP15+1 LAST2 DEF STP16+1 DEF STP17+1 DEF STP20+1 DEF STP21+1 LAST3 DEF STP22+1 SKP * * * TEST SECTION TABLE * * SECTN DEF *+1 DEF TST00 DEF TST01 DEF TST02 DEF TST03 * * * I/O INSTRUCTIONS TABLE * * IOTAB DEF *+1 DEF STF1 DEF STF2 DEF STF3 DEF STF4 DEF STF5 DEF STF6 DEF OTA1 DEF OTA2 DEF OTB1 DEF STC1 DEF LIA1 DEF LIB1 DEF CLF1 DEF CLF2 DEF CLF3 IOEND DEF * * * * TEST ROUTINE TABLE * * ROUT DEF *+1 ASC 01,00 TST00 ASC 01,01 TST01 ASC 01,02 TST02 ASC 01,03 TST03 SKP * * CONSTANTS AND STORAGE * ZERO OCT 0 B1 OCT 1 B2 OCT 2 B3 OCT 3 B4 OCT 4 B5 OCT 5 .5 EQU B5 B6 OCT 6 B7 OCT 7 .8 DEC 8 .9 DEC 9 B20 OCT 20 B24 OCT 24 B25 OCT 25 B36 OCT 36 B40 OCT 40 B100 OCT 100 B140 OCT 140 B153 OCT 153 B164 OCT 164 B532 OCT 532 B533 OCT 533 B535 OCT 535 B732 OCT 732 B733 OCT 733 B2000 OCT 20000 B7771 OCT 77771 M1 OCST -1 M2 OCT -2 M3 OCT -3 M4 OCT -4 .M5 DEC -5 M10 OCT -10 M16 OCT -16 M17 OCT -17 .M16 DEC -16 M26 OCT -26 .M96 DEC -96 .M128 DEC -128 .M256 DEC -256 M400 EQU .M256 .M512 DEC -512 BIT0 EQU B1 BIT1 EQU B2 BIT2 EQU B4 BIT3 EQU .8 BIT4 EQU B20 BIT5 EQU B40 BIT6 EQU B100 BIT9 OCT 1000 BIT10 OCT 2000 BIT11 OCT 4000 BIT12 OCT 10000 BIT13 EQU B2000 BIT14 OCT 40000 BIT15 OCT 100000 MASK0 OCT 77 MASK1 OCT 204 MASK2 OCT 377 MASK3 EQU .M256 MASK4 OCT 177700 MASK5 OCT 17 MASK6 OCT 170000 MASK7 EQU M2 MASK9 OCT 3777 LTEST EQU B3 MAKES LAST TEST SECTION = 3 IADDR OCT 400 INCREMENT LEFT 8 BITS PATTA OCT 252 A & B REGISTER FOR DATA PATTB OCT 125252 101010101010101010101010 AT 0 EMOD2 EQU ZERO ONES1 OCT 777 A REGISTER FOR ALL 1'S IN LOC 1 ONES0 EQU MASK2 A REGISTER FOR ALL 1'S IN LOC 0 ONES EQU M1 = ALL 1'S ZERO1 EQU IADDR A REGISTER FOR ALL 0'S IN LOC 1 DECPT OCT 56 ASCII DECIMAL PT. SPACE EQU BIT13 ASCII SINGLE SPACE ASTRX OCT 25000 ASCII ASTERIX LHJ SP2 OCT 20040 ASCII TWO SPACES ETRAP EQU MASK0 LAST TRAP CELL ADDRESS MOD NOP CURRENT CONTROL STORE MODULE # STEP BSS 1 CURRENT STEP # SAVES BSS 1 STEP RETURN POINT SPASS BSS 1 TSTMM RETURN POINT DMAFG NOP DMA FLAG(SET IF NO DMA PRESENT) SC EQU C.116 SELECT CODE OF WCS PCA POINT BSS 1 POINTER TO PARAMETERS IN E004 CFLAG NOP E004 REPORTING FLAG TBUFF BSS 1 TEMPORARY STORAGE OF BUFFER LOC. METAB BSS 1 = -ETAB + 1 PASS BSS 1 PASS # TEST BSS 1 TEST SECTION # EFLAG NOP MESSAGE H030 FLAG MMFLG NOP CONFIGURATION FLAG FOR TSTMM MFLAG NOP SET WHEN MODULE 1 HAS BASE SET MACH1 NOP SET WHEN COMPUTER IS 2100 MACH2 NOP SET WHEN COMPUTER IS 21XX TFLAG NOP TTY FLAG(SET IF NO TTY PRESENT) ERCNT NOP ERROR COUNTER CW1 9( OCT 120000 STC,CLC TO WCS SELECT CODE CW2 DEF TEMPA OUTPUT DATA,ALL 0'S CW3 EQU M2 2 WORD BLOCK CW1DW EQU CW1 DMA CONTROL CW2DW EQU PBUF1 WORDS TO WRITE CW3DW EQU .M512 DATA BUFFER ON WCS JBACI JMP BACK,I PASS INSTRUCTION JBACM JMP PTSTM,I TSTMM PASS INSTRUCTION LDA1A LDA M4 LDA INSTR. FOR 2100 LDA1B LDA PP4B LOAD INSTRUCTIONS LDA1C LDA PP4C FOR ROUTINE COMP LDA1D LDA M1 LDA INSTR. FOR 21XX TRSS RSS SKIP INSTRUCTION MSJMP OCT 37500 JMP TO SECONDARY JMP TABLE JMP16 OCT 37420 JMP *+16 IN MOD2 & 3 MAC0 OCT 105000 STARTING MACRO MAC1 OCT 105021 MOD1 MACRO TO CALL TSTM1 MAC2 OCT 105141 MOD2 MACRO TO CALL TSTM1 MAC3 OCT 105261 MOD3 MACRO TO CALL TSTM1 TMAC3 BSS 1 STORAGE FOR MAC03 BMAC BSS 1 MACRO USED WHEN E008 OCCURRED THLT OCT 106077 TRAP CELL HALT SHALT OCT 106000 2ND ERROR HALT TESTS OCT 17 STANDARD TEST RUN(TST00-TST03) SECT OCT 17 STARTING & CURRENT TESTS PTEST DEF *+1 TEST OCT 3 SECTION OCT 6 STEP OCT 16 NUMBERS TEMPA NOP TEMPORARY STORAGE TEMPB NOP FOR A & B REGISTERS TEMP0 BSS 1 TEMPORARY TEMP1 BSS 1 STORAGE TEMP2 BSS 1 TEMP3 BSS 1 TEMP4 BSS 1 TEMP5 BSS 1 TEMP6 BSS 1 TEMP7 BSS 1 TEMP8 BSS 1 TEMP9 BSS 1 SAVE0 BSS 1 SAVE1 BSS 1 SAVE2 BSS 1 SAVE3 BSS 1 SAVE4 BSS 1 SAVE5 BSS 1 SAVE6 BSS 1 SAVE7 BSS 1 SAVE8 BSS 1 SAVE9 BSS 1 AREG1 BSS 1 STORAGE FOR A&B AREG2 BSS 1 REGISTERS FOR BREG1 BSS 1 USE WITH HALT BREG2 BSS 1 DISPLAYS HED SWRG * * * SWITCH REGISTER ROUTINE * * * * CALLING SEQUENCE : * * LDB MASK * JSB SWRG * * RETURNS TO P IF MASK BIT(S) SET * RETURNS TO P+1 IF MASK BIT(S) CLEAR * SWRG NOP LIA 1 GET SW REG AND B MASK BIT(S) o SZA,RSS SET IN SWITCH REGISTER? ISZ SWRG NO. RETURN+1 JMP SWRG,I YES. RETURN HED WRITE,READ * * * WRITE INTO WCS VIA I/O ROUTINE * * * * WRITES ONE MICROINSTRUCTION OR DATA INTO WCS ADDRESS * SPECIFIED. * * CALLING SEQUENCE : * * LDA 1ST WORD (8 BIT ADDRESS)(8 MSB OF MICROWORD) * LDB 2ND WORD (16 LSB OF MICROWORD) * JSB WRITE * WRITE NOP STF1 STF WCS INITIALIZE DIRECTION FF OTA1 OTA WCS LOAD 1ST WORD IN WCS BUFFER OTB1 OTB WCS LOAD 2ND WORD IN WCS BUFFER STC1 STC WCS LOAD BUFFERS INTO RAM JMP WRITE,I * * * READ WCS VIA I/O ROUTINE * * * * READS WCS LOCATION INTO A & B REGISTERS * * CALLING SEQUENCE : * * LDA ADDRESS (8 BIT ADDRESS LHJ) * JSB READ * * RETURNS WITH A = 8 MSB,B = 16 LSB OF CONTENTS * READ NOP STF2 STF WCS INITIALIZE DIRECTION FF OTA2 OTA WCS LOAD ADDRESS IN WCS STF3 STF WCS RE-INITIALIZE DIRECTION FF LIA1 LIA WCS LOAD A W/8 MSB LIB1 LIB WCS LOAD B W/16 LSB JMP READ,I HED PRINT * * * MESSAGE REPORTING ROUTINE * * * * PRINTS MESSAGE ON SYSTEM SLOW OUTPUT DEVICE. * EXITS ROUTINE IF NO DEVICE PRESENT. * * CALLING SEQUENCE : * * LDA MESSAGE #(OCTAL) * JSB PRINT * PRINT NOP STA TEMP0 SAVE A LDA TFLAG CHECK FOR SZA PRESENCE OF JMP PRINT,I CONSOLE DEVICE LDA ERADD IS THIS AN CPA PRINT ERROR MESSAGE? RSS YES JMP PRIN1 NO LDB BIT11 EXIT IF JSB SWRG BIT11 JMP PRINT,I IS SET JMP PRIN2 PRIN1 EQU * LDB BIT10 EXIT IF JSB SWRG BIT 10 JMP PRINT,I IS SET PRIN2 EQU * CLA,CLE CALL LDB TEMP0 FORMATTER ADB PTAB,I TO PRINT LDB B,I MESSAGE JSB C.127,I JMP PRINT,I HED ERROR * * * ERROR ROUTINE * * * * DETERMINES ERROR BASED ON CALLING ADDRESS AND * REPORTS ERROR MESSAGE AND/OR HALTS DEPENDING * ON PROGRAM OPTIONS. * * CALLING SEQUENCE : * * EXXX JSB ERROR XXX = PROGRAM ERROR MESSAGE # * LOCATED IN ERROR TABLE.(NOT * NECESSARILY = STEP #) * ERROR NOP LDA STEP ERROR FROM CPA SAVE0 SAME STEP? JMP ERR0 YES STA SAVE0 NO JMP ERR5 CONTINUE ERR0 EQU * LDB BIT5 SHORTEN ERROR REPORTING JSB SWRG BY SKIPPING TO NEXT STEP? JSB NOERR YES LDB BIT4 NO,SHORTEN ERROR JSB SWRG REPORTING? RSS JMP ERR5 NO,CONTINUE LDA ERCNT YES,SHORTEN ERROR ADA M3 REPORTING FOR SSA THIS STEP? RSS JMP ERR6 YES ISZ ERCNT NO,INCREMENT ERROR COUNTER JMP ERR5 ERR6 EQU * JMP ERROR,I EXIT UNTIL NEXT STEP ERR5 EQU * LDA EFLAG REPORT SZA MESSAGE H030? JMP ERR4 NO LDA B6 REPORT MESSAGE H030 JSB PRINT "MODXX,TSTYY,STEP ZZ" ERR4 EQU * LDA ERROR LOOK UP LDB ETAB,I ERROR ERR1 EQU * NUMBER CPA B,I BASED ON JMP ERR2 CALLING INB ADDRESS JMP ERR1 ERR2 EQU * ADB METAB FORM MESSAGE SWP NUMBER ERR3 JSB PRINT REPORT IT LDA STEP ARE WE IN ADA M17 STEP 17-22? SSA JMP ERR7 NO LDA .9 YES,REPORT H031 JSB PRINT H031 ERR7 EQU * LDB BIT14 SUPPRESS JSB SWRG ERROR HALT? JMP ERROR,I YEX2<:6S,EXIT LDA HLTXX NO,FORM AND MASK4 HALT # IOR STEP FROM STA HLTXX STEP # LDA AREG1 LDB BREG1 HLTXX HLT 0 HLT XXB. XX = STEP # LDA TFLAG IS THERE A CONSOLE SZA,RSS DEVICE TO REPORT ERRORS? JMP HLTYY+1 YES,DON'T NEED 1060XX HALT LDA HLTXX NO,PREPARE AND MASK0 FOR ADDITIONAL HALT IOR SHALT STA HLTYY LDA AREG2 LOAD ADDITIONAL AND MASK2 INFORMATION LDB MOD IN A BLF,BLF AND B BLF REGISTERS IOR B LDB BREG2 HLTYY OCT 106000 HLT 1060XX. XX = STEP # CLA CLEAR STA AREG1 REPORTING STA BREG1 REGISTERS STA AREG2 STA BREG2 JMP ERROR,I HED STORE :<  12908-18002 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 !K* * * STORE INTO DATA BUFFER ROUTINE * * * * STORES A & B REGISTERS INTO DATA BUFFER STARTING * WITH BUFFER WORD 0. STORES A AND THEN B INTO NEXT * SUCCESSIVE LOCATION AND INCREMENTS POINTER. THE * NEXT CALL PUTS A & B INTO NEXT BUFFER WORD AND * WORD + 1 RESPECTIVELY. POINTER MUST BE SET TO * BUFFER WORD 0 UPON ENTRY INTO THIS ROUTINE. * * CALLING SEQUENCE : * * LDA PBUF1 SET BUFFER * STA TBUFF POINTER TO WORD 0 OF BUFFER * LDA 1ST WORD (8 BIT ADDRESS)(8 MSB OF MICROWORD) * LDB 2ND WORD (16 LSB OF MICROWORD) * JSB STORE * LDA NEXT WORD * LDB NEXT WORD+1 * FINISHED FILLING BUFFER? * JMP *-4 NO,LOOP UNTIL FINISHED * CONTINUE * STORE NOP STA TBUFF,I STORE A IN DATA ISZ TBUFF BUFFER WORD N STB TBUFF,I AND B IN DATA ISZ TBUFF BUFFER WORD N+1 JMP STORE,I HED WBUFF * * * WRITE DATA BUFFER ONTO WCS ROUTINE * * * * WRITES THE CONTENTS OF THE DATA BUFFER ONTO WCS * RAMS ACCORDING TO ADDRESSES CONTAINED IN THE * DATA. USES SUBROUTINE WRITE. * * CALLING SEQUENCE : * * JSB WBUFF * WBUFF NOP LDA .M256 SET ADDRESS STA TEMP3 COUNTER LDA PBUF1 AND DATA STA TBUFF BUFFER POINTER WLOOP EQU * LDA TBUFF,I LOAD A & B ISZ TBUFF REGISTERS WITH LDB TBUFF,I BUFFER CONTENTS ISZ TBUFF JSB WRITE WRITE ONTO WCS ISZ TEMP3 DONE? JMP WLOOP NO,CONTINUE JMP WBUFF,I YES HED COMP * * * COMPARISON ROUTINE * * * * READ WCS MODULE WORD BY WORD AND COMPARES CONTENTS * TO CORRESPONDING VALUE IN THE DATA BUFFER. REPORTS *  MIS-COMPARISONS AS ERROR MESSAGE E004. USES * SUBROUTINES READ AND FORM. * * CALLING SEQUENCE : * * JSB COMP * COMP NOP LDA .M256 SET ADDRESS STA TEMP3 COUNTER LDA PBUF1 AND DATA STA TBUFF BUFFER POINTER CLOOP EQU * LDA TBUFF,I GET ADDRESS AND MASK3 LHJ IN A STA TEMP2 REGISTER & JSB READ READ CONTENTS AND MASK2 GET RID OF DON'T CARES IOR TEMP2 IN ADDRESS FIELD STA AREG1 SAVE STB BREG1 READINGS CPA TBUFF,I COMPARE RSS DATA IN JMP CERR1 A & B ISZ TBUFF REGISTERS CPB TBUFF,I TO DATA RSS THAT WAS JMP CERR2 CONTD ISZ TBUFF ISZ TEMP3 DONE? JMP CLOOP NO,CONTINUE CLA YES,CLEAR E004 STA CFLAG REPORTING FLAG STA EFLAG AND H030,H031 FLAG LDA PP4 RESTORE STA PMSG4,I FULL E004 MESSAGE JMP COMP,I CERR1 EQU * ISZ TBUFF ARRANGE FOR FORM CERR2 EQU * JSB FORM FORM PARAMETERS FOR MSG E004 ISZ CFLAG ALREADY PRINTED ENTIRE E004? JMP CCOMP NO,PRINT ENTIRE E004 LDA PP4A YES,ONLY PRINT E004 PARAMETERS STA PMSG4,I CCA SET HOLD OFF FLAG STA EFLAG FOR H030 AND H031 CCOMP EQU * LDA SP2 PUT SPACES LDB PP4A IN 1ST THREE STA B,I DIGITS OF INB ADDRESS PORTION LDA B,I OF ERROR AND MASK2 MESSAGE E004 IOR SPACE STA B,I E004 JSB ERROR "BAD COMPARISON + PARAMETERS" CCA RESET E004 STA CFLAG REPORTING FLAG JMP CONTD CONTINUE COMPARISONS HED FORM * * * FORM PARAMETERS ROUTINE * * * * CONVERTS AND PLACES ADDRESS AND DATA VALUES IN * APPROPRIATE PORTIONS OF MESSAGE E004. * * CALLING SEQUENCE : * * STA TEMP2 ADDRESS READ IN TEMP2 * LDA DATA READ * LDB DATA READ * JSB FORM * FORM NOP STA TEMPA SAVE STB TEMPB A & B CLE LDA LDA1B START WITH STA LDAIN DATA READ LDA TEMP2 GET ORIGINAL MODULE ADDRESS ALF,ALF CONVERT ADDRESS LDB PP4A TO ASCII AND JSB C.124,I PACK INTO MESSAGE E004 FLOOP EQU * CLE CONVERT 16 LSB TO LDA TEMPB ASCII AND PLACE LDB POCT3 INTO 2ND HALF JSB C.124,I OF WORK AREA CLE CONVERT LDA TEMPA 8 MSB TO AND MASK2 ASCII AND PLACE LDB POCT1 IN 1ST HALF OF JSB C.124,I WORK AREA LDA POCT2 POINT TO PORTION STA TEMP6 OF WORK AREA FOR E004 LDAIN NOP POINT INTO APPROPRIATE STA POINT AREA IN E004 LDA M3 SET STA TEMP5 COUNTER LDA TEMP6,I GET PARAMETER AND MASK2 VALUE ALF,ALF AND PACK ISZ TEMP6 INTO ERROR LDB TEMP6,I MESSAGE E004 SWP IN THE FORM: ALF,ALF AND MASK2 XXX.XXXXXX(OCTAL) IOR B STA POINT,I LDA TEMP6,I AND MASK2 ALF,ALF IOR DECPT ISZ POINT STA POINT,I FNEXT EQU * ISZ POINT ISZ TEMP6 LDA TEMP6,I STA POINT,I ISZ TEMP5 DONE? JMP FNEXT NO,CONTINUE ISZ POINT YES LDA POINT DONE CPA EP4C BOTH PARAMETERS? JMP FORM,I YES LDA LDA1C NO STA LDAIN LDB TBUFF GET DATA ADB M1 WRITTEN AND LDA B,I GO BACK AND LDB TBUFF,I PACK INTO STA TEMPA E004 STB TEMPB STA AREG2 STB BREG2 QkJMP FLOOP HED USELT * * * USER SELECTION ROUTINE * * * * ALLOWS USER TO SELECT TEST SECTIONS TO BE RUN. * PROGRAM HALTS 102075 AND USER ENTERS TESTS HE * DESIRES IN A REGISTER. SET BIT 0 MEANS RUN * TST00,BIT 1 MEANS RUN TST01,ETC. A REGISTER * CONTAINS CURRENT TESTS TO BE RUN WHEN HALTED * 102075. * * CALLING SEQUENCE : * * JSB USELT * USELT NOP GOOF LDA TESTS LOAD CURRENT TESTS CLB HLT75 HLT 75B HALT TO ENTER NEW TESTS AND MASK5 GET RID OF DON'T CARES STA TEMPA SZA,RSS IS ENTRY VALID? JMP GOOF NO,TRY AGAIN LDA TEMPA YES STA TESTS SAVE TEST STA SECT SELECTION LDB BIT9 CLEARED JSB SWRG BIT9? JMP GOOF NO,TRY AGAIN JMP BACK,I RESTART PASS WITH NEW TESTS HED TMSG * * * TEST MESSAGE ROUTINE * * * * PUTS CURRENT CONTROL STORE MODULE AND TEST ROUTINE * IN MESSAGE H030. * * CALLING SEQUENCE : * * LDA TEST ROUTINE # (0 THRU 5) * JSB TMSG * TMSG NOP LDB ROUT FIND CURRENT ADB A TEST ROUTINE LDA B,I AND PUT IT STA PP6B,I IN MESSAGE H030 CLE LDA MOD CONVERT CURRENT LDB POCT1 CONTROL STORE MODULE JSB C.124,I # TO ASCII IN WORK AREA LDB POCT4 PUT IT LDA B,I IN MESSAGE LDB PP6A H030 STA B,I JMP TMSG,I HED CSTEP * * * CURRENT STEP ROUTINE * * * * CHECKS FOR LOOP,HALT ON STEP AND/OR CAPTURES STEP * RETURN POINT,UPDATES STEP # AND PUTS STEP # IN H030 * DEPENDING ON ENTRY POINT. * * CALLING SEQUENCE : * * JSB CSTEP * * OR * * JSB SSTEP UPDATES STEP #  * CSTEP NOP LDA STEP CHECK TO INSURE CURRENT SZA,RSS STEP # NOT = 0 JMP CNEXT STEP # = 0. GO DO STEP 1 FIRST LDB BIT2 HALT ON JSB SWRG STEP? RSS JMP HLT50+1 NO LDA STEP YES,GET STEP # CLB IN A REGISTER HLT50 HLT 50B CLA CLEAR ERROR STA ERCNT COUNTER LDB BIT3 LOOP ON JSB SWRG STEP? JMP SAVES,I YES JMP CNEXT SSTEP NOP SECOND ENTRY LDA SSTEP POINT STA CSTEP CNEXT EQU * LDA CSTEP SAVE CURRENT STA SAVES STEP RETURN POINT LDA STEP INCREMENT INA STEP # STA STEP CLE PUT LDB POCT1 STEP # IN JSB C.124,I H030 LDB POCT4 LDA B,I LDB PP6C STA B,I LDB PP4AA NOW PUT IT STA B,I IN E004 LDB PP7 NOW PUT IT STA B,I IN E007 LDB PP5 NOW PUT IT STA B,I IN E005 CLA CLEAR ERROR STA ERCNT COUNTER STA AREG1 CLEAR STA BREG1 REPORTING STA AREG2 REGISTERS STA BREG2 JMP CSTEP,I HED ROLL * * * ROLL UP BUFFER ROUTINE * * * * ROLLS DATA BUFFER UP ONE MICROWORD. RETURNS UNTIL * THE END OF BUFFER IS REACHED AND THEN RETURNS + 1. * * CALLING SEQUENCE : * * LDA START OF BUFFER * STA SAVE2 * LOOP EQU * * JSB ROLL * JMP LOOP * ROLL NOP LDA SAVE2,I GET THE ISZ SAVE2 WORD OF LDB SAVE2,I INTEREST ISZ SAVE2 STA SAVE1 STB SAVE3 LDA SAVE2 POINT BACK TO ADA M2 BUFFER LOCATION STA TBUFF WE CAME FROM LDA SAVE1 COMPLEMENT XOR MASK2 DATA PATTERN CMB  AND STORE IN JSB STORE FIRST LOCATION LDA SAVE1 MOVE WORD ADA IADDR OF INTEREST LDB SAVE3 UP ONE IN JSB STORE BUFFER LDA SAVE2 CPA PBUF4 END OF BUFFER? RSS YES JMP ROLL,I NO,RETURN ISZ ROLL JMP ROLL,I RETURN + 1 WHEN DONE ALL BUFFER HED ROTE * * * ROTATE DATA PATTERN ROUTINE * * * * ROTATES 24 BIT DATA PATTERN IN A & B REGISTERS. * DOES NOT AFFECT ADDRESS BITS IN A. * * CALLING SEQUENCE : * * LDA 1ST WORD (8 BIT ADDRESS)(8 BITS OF DATA PATTERN) * LDB 2ND WORD (16 BITS OF DATA PATTERN) * JSB ROTE * * RETURNS WITH 24 BIT DATA PATTERN ROTATED ONE LEFT. * ADDRESS BITS REMAIN THE SAME. * ROTE NOP STA TEMPA STB TEMPB ALF,ALF GET BIT 23 AND BIT15 OF MICROWORD RAL INTO STA SAVE1 STORAGE LDA TEMPB GET BIT 15 AND BIT15 OF MICROWORD RAL INTO STA TEMP2 STORAGE LDA TEMPA AND MASK3 SWP LDA TEMPA RAL AND MASK7 IOR TEMP2 AND MASK2 IOR B FORM STA TEMPA A REGISTER LDA TEMPB RAL AND MASK7 IOR SAVE1 FORM LDB A B REGISTER LDA TEMPA JMP ROTE,I HED DRITE * * * WRITE INTO WCS VIA DMA ROUTINE * * * * WRITES DATA BUFFER INTO WCS USING DMA CHANNEL 1. * * CALLING SEQUENCE : * * JSB DRITE * DRITE NOP LDA CW1DW INITIALIZE OTA 6B DMA TO CLC 2B TRANSFER THE LDA CW2DW 512 WORD DATA OTA 2B BUFFER TO STC 2B WCS LDA CW3DW OTA 2B STC 6B,C STF6 STF WCS CLF3 CLF WCS SFS 6B DONE? RSS JMP DRITE,I YES,RETURN ISZ TEMP8 NOT YET,TIMED OUT? JMP CLF3+1 NO,KEEP TRYING E010 JSB ERROR YES,"DMA NOT COMP" JMP DRITE,I HED ALT * * * ALTERNATE DATA PATTERN ROUTINE * * * * COMPLEMENTS EACH PATTERN IN DATA BUFFER. ADDRESS * FIELD REMAINS UNCHANGED. * * CALLING SEQUENCE : * * JSB SET2 * JSB ALT * ALT NOP LDA .M256 SET STA TEMP1 COUNTER ALOOP EQU * LDA TBUFF,I GET BUFFER XOR MASK2 WORD AND COMPLEMENT STA TBUFF,I DATA PATTERN ISZ TBUFF LDB TBUFF,I DO NEXT CMB BUFFER WORD STB TBUFF,I ISZ TBUFF ISZ TEMP1 DONE ENTIRE BUFFER? JMP ALOOP NO,CONTINUE JMP ALT,I YES HED SET1,SET2,SET3 * * * SET COUNTERS ROUTINES * * * * SETS COUNTERS TO THE COUNT IN THE A REGISTER. * SETS TEMP1,4,7,8,9 OR POINTS TBUFF TO THE DATA * BUFFER DEPENDING ROUTINE USED. * * CALLING SEQUENCE : * * LDA COUNT * JSB SET1 INITALIZES TEMP1, TEPM4 & TBUFF * * OR * * JSB SET2 INITIALIZES TBUFF * * OR * * LDA COUNT * JSB SET3 INITIALIZES TEMP7, TEPM8 & TEMP9 * SET1 NOP STA TEMP1 INITIALIZE STA TEMP4 TEMP1 AND TEMP4 JMP SET1,I * SET2 NOP LDA PBUF1 SET TBUFF TO STA TBUFF POINT TO DATA BUFFER JMP SET2,I * SET3 NOP STA TEMP7 INITIALIZE STA TEMP8 TEMP7, STA TEMP9 TEMP8, JMP SET3,I AND TEMP9 HED IBUFF * * * INITIALIZE DATA BUFFER ROUTINE * * * * SETS POINTERS TO BUFFER TO BE USED FOR THE DATA * BUFFER BASED ON B REGISTER. * * CALLING SEQUENCE : * *  LDB (POINTER TO BUFFER TO BE USED) * JSB IBUFF * * IF MACHINE IS A 2100,THE 21XX MICROPROGRAM BUFFER * AREA WILL BE USED AS THE DATA BUFFER. IF THE MACHINE * IS A 21XX,THE 2100 MICROPROGRAM BUFFER AREA WILL BE * USED AS THE DATA BUFFER. * IBUFF NOP LDA M4 SET STA TEMP0 COUNTER ILOOP EQU * LDA B,I GET POINTER INB STA DBUF3,I STORE IN DATA POINTER LOCATION ISZ DBUF3 ISZ TEMP0 DONE? JMP ILOOP NO LDA DBUF3 YES,RESET DBUF3 FOR POSSIBLE ADA M4 RESTART WITH STA DBUF3 CONFIGURATION JMP IBUFF,I HED NOERR * * * TURN OFF ERRORS UNTIL NEXT STEP ROUTINE * * * * LOOKS UP NEXT STEP ADDRESS AND JUMPS THERE. * * CALLING SEQUENCE : * * JSB NOERR * NOERR NOP LDB BIT3 TRYING TO LOOP JSB SWRG ON STEP? JMP NOERR,I YES,CONTINUE LOOP LDA SAVES GET CURRENT STEP RETURN POINT LDB STAB GET STEP TABLE POINTER NLOOP EQU * CPA B,I FOUND CURRENT STEP? JMP NN.1 YES INB NO,BUMP TABLE JMP NLOOP POINTER & LOOK AGAIN NN.1 EQU * CPA LAST0 ON LAST STEP IN TEST? JMP NN.2 YES CPA LAST1 JMP NN.2 CPA LAST2 JMP NN.2 CPA LAST3 LAST STEP? JMP NN.4 YES INB NO,GET LDA B,I NEXT STEP ADA M1 ADDRESS AND STA NOERR SAVE FOR JUMP NN.3 EQU * CLC 0,C TURN OFF INTERRUPT,CLEAR I/O LDA 5B RESTORE TRAP STA 6B CELL HALT LDA TRSS RESTORE SKIP INSTRUCTION STA PTJMP,I FOR STEP 21 CLA CLEAR STA EFLAG ERROR & COMP STA CFLAG FLAGS LDA PP4 RESTORE E004 FOR STA PMSG4,I POSSIBLE FUTURE USE JMP NOERR,I JUMP TO NEXT STEP NN.2 EQU * LDA SRTRN SET TO STA NOERR RETURN IN START JMP NN.3 NN.4 EQU * LDA SRTRN SET TO RETURN STA NOERR IN START AND JSB REMOD RESTORE 2100 MICROCODE JSB PREMX,I RESTORE 21XX MICROCODE JMP NN.3 HED FPARM * * * FORM PARAMETERS ROUTINE * * * * FORMS ASCII VALUES FOR PARAMETERS IN MESSAGE H031. * * CALLING SEQUENCE : * * DEPENDS ON: * * TEMPA = A REG AFTER MACRO * TEMPB = B REG AFTER MACRO * TEMP7 = WHAT A REG SHOULD BE * TEMP8 = WHAT B REG SHOULD BE * BMAC = MACRO USED * * JSB FPARM * FPARM NOP LDA TEMPA FORM STA AREG1 A REG CLE AFTER MACRO LDB PP9B JSB C.124,I LDA TEMPB FORM STA BREG1 B REG CLE AFTER MACRO LDB PP9D JSB C.124,I CLE FORM LDA TEMP7 WHAT A LDB PP9C SHOULD BE JSB C.124,I CLE FORM LDA TEMP8 WHAT B LDB PP9E SHOULD BE JSB C.124,I LDA BMAC FORM STA BREG2 MACRO CLE LDB PP9A JSB C.124,I JMP FPARM,I HED ER005,ER007 * * * REPORT ERRORS E005 & E007 ROUTINES * * * * REPORTS E005 OR E007 DEPENDING ON WHICH IS * CALLED. * * CALLING SEQUENCE : * * STA TEMPA(A REG AFTER MACRO) * STB TEMPB(B REG AFTER MACRO) * LDA BAD MACRO(MACRO USED WHEN ERROR OCCURRED) * STA BMAC * JSB ER005 OR E007 * ER005 NOP JSB FPARM GO FORM PARAMETERS FOR H031 E005 JSB ERROR "NO MAC" JMP ER005,I * ER007 NOP JSB FPARM GO FORM PARAMETERS FOR H031 E007 JSB ERROR "BAD MAC" JMP a<:6ER007,I HED L2100,L21XX <  12908-18003 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 "K* * * LOAD 2100 MICROCODE ROUTINE * * * * LOADS 2100 MICROPROGRAM BUFFER INTO CURRENT WCS. * * CALLING SEQUENCE : * * JSB L2100 * L2100 NOP LDA ABUF1 PUT 2100 POINTER STA PBUF1 INTO PBUF1 JSB WBUFF WRITE ON WCS LDA BBUF1 RESTORE PBUF1 POINTER STA PBUF1 TO POINT TO 21XX BUFFER JMP L2100,I * * * LOAD 21XX MICROCODE ROUTINE * * * * LOADS 21XX MICROPROGRAM BUFFER INTO CURRENT WCS. * * CALLING SEQUENCE : * * JSB L21XX * L21XX NOP LDA BBUF1 PUT 21XX POINTER STA PBUF1 INTO PBUF1 JSB WBUFF WRITE ON WCS LDA ABUF1 RESTORE PBUF1 POINTER STA PBUF1 TO POINT TO 2100 BUFFER JMP L21XX,I HED REMOD * * * RESTORE 2100 MICROCODE FOR MODULE #1 ROUTINE * * * * RESTORES MICROCODE FOR 2100 FOR USE IN MODULE #1 * * CALLING SEQUENCE : * * JSB REMOD * REMOD NOP LDA PMOD1 SET STA TEMP7 POINTER LDB MOD.1 RM.1 LDA TEMP7,I DO FIRST STA B,I 16(DECIMAL) ISZ TEMP7 LOCATIONS INB CPB MOD.5 DONE? RSS JMP RM.1 NO ADB B140 YES,BUMP POINTER RM.2 LDA TEMP7,I DO SECONDARY STA B,I JMP TABLE ISZ TEMP7 INB CPB MODE2 DONE? RSS JMP RM.2 NO ADB B532 RM.3 LDA TEMP7,I DO ROUTINE STA B,I FORM ISZ TEMP7 INB CPB MOD.6 DONE? JMP REMOD,I YES,RETURN JMP RM.3 NO HED CMOD3 * * * CHANGE 2100 MICROCODE FOR MODULE #3 ROUTINE * * * * MODIFIES MICROCODE FOR 2100 FOR USE IN MODULE #3 * * CALLING SEQUENCE : * * JSB CMOD3 * CMOD3 NOP LDA PMOD2 SET STA TEMP7 POINTERS LDA MODE3 STA TEMP4  LDB MOD.3 CM3.1 LDA TEMP7,I GET MICRO FROM AND MASK2 TABLE & STORE STA TEMP9 LEFT 8 BITS LDA JMP16 PUT NEW MICRO-JUMP STA B,I IN MICROCODE LDA TEMP4,I FORM NEW JUMPS AND MASK3 IN MICROCODE IOR TEMP9 STA TEMP4,I ISZ TEMP4 ISZ TEMP7 INB CPB MOD.2 DONE? JMP CM3.2 YES ISZ TEMP4 NO,BUMP ISZ TEMP7 POINTERS INB JMP CM3.1 CM3.2 LDA B,I PLACE ADDITIONAL IOR B2 NEW JUMPS FOR MOD #3 STA B,I INB LDA JMP16 STA B,I INB CPB MODE4 DONE? RSS JMP CM3.2 NO LDA TEMP7 YES,BUMP ADA B25 POINTERS STA TEMP7 ADB B153 CM3.3 LDA TEMP7,I GET MICRO FROM ADA BIT12 TABLE AND CHANGE STA B,I REMAINING 16 BITS ISZ TEMP7 INB CPB MODE2 DONE? JMP CM3.4 YES ISZ TEMP7 NO,BUMP INB POINTERS JMP CM3.3 CM3.4 ADB B535 BUMP POINTER LDA MSJMP FORM NEW MICRO STA B,I JMP CMOD3,I HED CMOD2 * * * CHANGE 2100 MICROCODE FOR MODULE #2 ROUTINE * * * * MODIFIES MICROCODE FOR 2100 FOR USE IN MODULE #2 * * CALLING SEQUENCE : * * JSB CMOD2 * CMOD2 NOP LDA MODE1 SET STA TEMP4 POINTERS LDA PMOD1 STA TEMP7 LDB MOD.1 CM2.1 LDA TEMP7,I GET MICRO FROM ADA M2 TABLE & CHANGE STA B,I LEFT 8 BITS ISZ TEMP7 INB LDA TEMP7,I GET MICRO FROM AND MASK2 TABLE & STORE STA TEMP9 LAST 8 BITS LDA JMP16 GET NEW MICRO STA B,I AND PUT IT IN MICROPROGRAM LDA TEMP4,I GET NEXT FIVE JMPS AND MASK3 IN MICROCODE AND IOR TEMP9 FORM NEW JUMPS STA TEMP4,I ISZ TEMPr7 INCREMENT ISZ TEMP4 POINTERS ISZ TEMP4 INB CPB MOD.2 DONE? RSS JMP CM2.1 NO LDA TEMP7 YES,RESET ADA B24 POINTERS STA TEMP7 ADB B164 CM2.2 LDA TEMP7,I GET MICRO FROM ADA M2 TABLE & CHANGE STA B,I LEFT 8 ISZ TEMP7 INB LDA TEMP7,I GET MICRO FROM ADA BIT12 TABLE & CHANGE STA B,I REMAINING 16 BITS ISZ TEMP7 INB CPB MODE2 DONE? RSS JMP CM2.2 NO ISZ TEMP7 YES,BUMP ADB B533 POINTERS LDA TEMP7,I GET MICRO AND ADA M400 CHANGE LAST 16 STA B,I ISZ TEMP7 INB LDA TEMP7,I GET MICRO AND ADA M2 CHANGE LEFT 8 STA B,I ISZ TEMP7 INB LDA TEMP7,I GET MICRO AND ADA BIT12 CHANGE LAST 16 STA B,I JMP CMOD2,I HED START * * * PROGRAM ENTRY * * * * SETS UP TRAP CELLS,INITIALIZES VARIABLES * AND CONTROLS TEST EXECUTION * ORG 2000B START NOP CLF 0 TURN OFF INTERRUPT SYSTEM CLA JSB PRINT "12908 WCS DIAGNOSTIC" LDA THLT SET UP LDB B2 TRAP CELL RTRAP STA B,I HALTS IN CPB ETRAP ADDRESS JMP STVAR LOCATIONS INB 2 THRU 77 JMP RTRAP STVAR EQU * INITIALIZE VARIABLES CLA STA TEMPA STA TEMPB STA SPASS STA MMFLG CLA,INA START WITH STA PASS PASS 1 LDA SAVE4 CONFIGURE ALF,ALF PROGRAM FOR ALF LOW ORDER WCS IOR SAVE5 MODULE JSB PCNF1,I JSB REMOD RESTORE 2100 MICROCODE JSB REMX RESTORE 21XX MICROCODE LDA MASK5 RESTORE STANDARD STA TESTS TEST RUN(ALL TESTS) RSTRT EQU * CLA L START WITH STA TEST TEST SECTION 0 STA STEP START WITH STEP 1 LDA TESTS RESET TEST STA SECT SELECTION TLOOP EQU * LDB BIT6 PERFORM JSB SWRG TSTLL? JMP PTSTL,I YES LDB BIT1 PERFORM JSB SWRG TSTSS? JMP PTSTS,I YES LDB BIT9 USER SELECTION JSB SWRG OF TESTS? JSB USELT YES,GO GET TESTS DESIRED LDA SECT NO,USE CURRENT OR DEFAULT SET RAR PERFORM STA SECT THIS TEST SSA,RSS SECTION? JMP SKIP NO LDA TEST EXECUTE ADA SECTN CURRENT LDA A,I TEST JSB A,I SECTION CLA CLEAR ERROR STA ERCNT COUNTER LDB BIT2 HALT ON LAST STEP JSB SWRG IN TEST SECTION? RSS JMP HL50+1 NO LDA STEP YES,GET STEP # CLB IN A REGISTER HL50 HLT 50B LDA MACH1 IS THIS SZA A 2100? JMP *+3 YES LDA LDA1D NO. ONLY ONE STA T.LDA MACRO IN STEP 22 LDB BIT3 LOOP ON LAST JSB SWRG STEP IN TEST SECTION? JMP SAVES,I YES JMP CONT NO,CONTINUE SKIP EQU * LDA TEST GET ADA PTEST CURRENT LDB A,I STEP # STB STEP AND STORE IT CONT EQU * LDB BIT15 HALT AT JSB SWRG END OF TEST? RSS JMP NOHLT NO LDA TEST YES,GET TEST # CLB IN A REG AND CLEAR B REG HLT76 HLT 76B NOHLT EQU * LDB BIT13 LOOP JSB SWRG TEST? RSS JMP NOLP NO LDA SECT YES,POSITION RAL FOR TEST STA SECT SELECTION JMP TLOOP NOLP EQU * LDA TEST FINISHED CPA LTEST PASS? JMP CPASS YES INA NO,CONTINUE STA TEST Y8 TEST JMP TLOOP SEQUENCE CPASS EQU * LDB BIT0 PERFORM JSB SWRG TSTMM? JMP PTSTM,I YES CLA NO,CLEAR TSTMM STA MMFLG CONFIGURATION FLAG LDA PP8,I RESTORE AND MASK2 NORMAL IOR SPACE PASS STA PP8,I MESSAGE LDA SAVE4 FORM UP LOW ORDER ALF,ALF WCS MODULE SELECT ALF CODE AND CONTROL IOR SAVE5 STORE MODULE # JSB PCNF1,I GO CONFIGURE PROGRAM LDA JBACI SET PROGRAM STA JBAC1 OPTION BIT12 STA JBAC2 TO NORMAL TESTING MRTRN EQU * CLE FINISHED A LDA PASS PASS. SET UP LDB PPASS PARAMETERS FOR JSB C.124,I PASS COUNT LDA .8 JSB PRINT "PASS XXXXXX" ISZ PASS BUMP PASS COUNTER LDB BIT12 LOOP ON JSB SWRG DIAGNOSTIC? JBAC1 BSS 1 YES,DO ANOTHER PASS LDA PASS NO ADA M1 GET PASS # IN CLB A REG AND CLEAR B REG HLT77 HLT 77B JBAC2 BSS 1 DO ANOTHER PASS HED TEST SECTION 0 * * * TEST SECTION 0 * * * * CHECKS I/O BUS. * * TESTS DMA FLAG AND INTERRUPT CIRCUITRY,IF PRESENT, * (DMA CHANNEL 1 ONLY) BY ATTEMPTING 2 WORD TRANSFERS. * * TST00 EQU * TEST0 NOP LDA TEST ARM MESSAGE JSB TMSG H030 LDA CW1 INITIALIZE AND MASK4 VARIABLES IOR SC STA CW1 STP01 JSB SSTEP STEP 1 LIA 0 I/O BUS SZA CLEAR? E001 JSB ERROR NO,"IO BUS NOT CLEAR" LDA DMAFG DMA SZA,RSS PRESENT? JMP T.105 YES,DO NEXT STEPS JSB CSTEP NO,SKIP DMA CHECK JSB CSTEP AND UPDATE SKIP # JMP TEST0,I T.105 EQU * STP02 JSB CSTEP STEP 2 LDA .M5 SET STA TEMP1 COUNTER LDA CW1 8a INITIALIZE DMA OTA 6B FOR WCS CLC 2B SELECT CODE, LDA CW2 STC TO WCS EACH DMA CYCLE, OTA 2B CLC TO WCS AT END OF BLOCK. STC 2B 2 WORD TRANSFER LDA CW3 CONTAINING OTA 2B ALL 0'S STC 6B,C START DMA TRANSFER STF4 STF WCS WRITE ON CLF1 CLF WCS WCS T.103 SFS 6B DMA FLAG? JMP T.101 NO,DELAY & TRY AGAIN,THEN ERROR JMP T.102 T.101 CLA,INA DELAY A JSB C.121,I MILLISECOND ISZ TEMP1 TRIED 5 TIMES? JMP T.103 NO,TRY AGAIN E002 JSB ERROR YES,"NO DMA FLAG" T.102 EQU * STP03 JSB CSTEP STEP 3 CLF 6B DISABLE DMA INTERRUPT SIGNAL LDA JMP.1 SET UP JMP INSTRUCTION IN STA DMA TRAP CELL FOR INTERRUPT STF 0 TURN ON INTERRUPT SYSTEM LDA CW1 RE-INITIALIZE OTA 6B DMA FOR CLC 2B 2 WORD TRANSFER LDA CW2 TO WCS OTA 2B STC 2B LDA CW3 OTA 2B STC 6B,C START DMA TRANSFER STF5 STF WCS WRITE ON CLF2 CLF WCS WCS LDA .5 DELAY ABOUT JSB C.121,I 5 MILLISECONDS CLF 0 TURN OFF INTERRUPT FOR E003 E003 JSB ERROR "NO DMA INT" T.104 EQU * DMA INTERRUPT RETURN POINT CLC 0,C TURN EVERYTHING BACK OFF LDA 5B RESTORE TRAP STA 6B CELL HALT JMP TEST0,I HED TEST SECTION 1 * * * TEST SECTION 1 * * * * ADDRESS TEST - WRITES AND READS EACH ADDRESS IN WCS * MODULE WITH ITS OWN ADDRESS,THEN COMPARES THEM. * TST01 EQU * TEST1 NOP LDA TEST ARM MESSAGE JSB TMSG H030 STP04 JSB SSTEP STEP 4 LDA .M16 SET STA TEMP7 COUNTER JSB SET2 SET BUFFER POINTER CLA BUILD UP DATA CLB BUFFER TO CONTAIN T.200 ZEQU * ADDRESSES 0 THRU 377 JSB STORE IN THOSE ADDRESSES ADA IADDR EXAMPLE-ADDRESS 174 HAS 174 INB IN THE DATA FIELD CPA EMOD2 DONE BUILDING UP BUFFER? RSS YES JMP T.200 NO,CONTINUE T.203 EQU * JSB WBUFF WRITE BUFFER ONTO WCS JSB COMP READ WCS,COMPARE TO BUFFER VALUE ISZ TEMP7 DONE IT 16 TIMES? JMP T.203 NO,CONTINUE NOP TEMPORARY STP05 JSB CSTEP STEP 5 LDA .M16 SET STA TEMP8 COUNTER T.204 EQU * LDA .M256 SET ADDRESS STA TEMP1 COUNTER AND DATA LDA PBUF2 BUFFER POINTER TO STA TBUFF START AT END OF BUFFER T.201 EQU * LDB TBUFF,I WRITE BUFFER LDA TBUFF ONTO WCS ADA M1 IN DESCENDING STA TBUFF ORDER LDA TBUFF,I JSB WRITE LDB TBUFF ADB M1 STB TBUFF ISZ TEMP1 DONE? JMP T.201 NO,CONTINUE JSB COMP YES,COMPARE DATA ISZ TEMP8 DONE IT 16 TIMES? JMP T.204 NO,CONTINUE STP06 JSB CSTEP STEP 6 LDA .M16 SET STA TEMP9 COUNTER T.205 EQU * JSB SET2 SET BUFFER POINTERS TO THE LDA PBUF3 BEGINNING AND MIDDLE OF THE STA TEMP4 DATA BUFFER LDA .M128 SET ADDRESS STA TEMP1 COUNTER T.202 EQU * LDA TBUFF,I WRITE BUFFER ISZ TBUFF INTO WCS LDB TBUFF,I ALTERNATING ISZ TBUFF ADDRESSES JSB WRITE UP AND DOWN LDA TEMP4,I IN MODULE ISZ TEMP4 LDB TEMP4,I ISZ TEMP4 JSB WRITE ISZ TEMP1 DONE? JMP T.202 NO, CONTINUE JSB COMP YES,COMPARE DATA ISZ TEMP9 DONE IT 16 TIMES? JMP T.205 NO,CONTINUE JMP TEST1,I HED TEST SECTION 2 * * * TEST SECTION 2 * * * M * PATTERN TESTS - WRITES A SERIES OF PATTERNS INTO * WCS,THEN READS THEM BACK AND COMPARES THEM. LAST * PATTERN IS REPEATED USING DMA,IF PRESENT. * TST02 EQU * TEST2 NOP LDA TEST ARM MESSAGE JSB TMSG H030 STP07 JSB SSTEP STEP 7 LDA .M96 SET JSB SET3 COUNTERS JSB SET2 CLA BUILD CLB DATA T.300 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR ALL 0'S CPA EMOD2 RSS JMP T.300 T.301 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP7 DONE IT 96 TIMES? JMP T.301 NO STP10 JSB CSTEP STEP 10 LDA .M256 YES,SET JSB SET1 NEW COUNTERS LDA .M96 JSB SET3 JSB SET2 LDA MASK2 BUILD CCB DATA T.302 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR ALL 1'S ISZ TEMP1 JMP T.302 T.303 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP8 DONE IT 96 TIMES? JMP T.303 NO STP11 JSB CSTEP STEP 11 LDA .M96 YES,SET JSB SET3 NEW COUNTERS LDA .M256 JSB SET1 JSB SET2 LDA MASK2 LDB M2 T.314 EQU * STA SAVE1 BUILD STB SAVE2 DATA T.304 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR A 0 IN A ISZ TEMP1 FIELD OF 1'S JMP T.304 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA LDA .M256 RESET JSB SET1 COUNTERS JSB SET2 LDA SAVE1 ROTATE THE LDB SAVE2 0 ONE JSB ROTE TO THE LEFT ISZ TEMP8 DONE IT 96 TIMES? JMP T.314 NO STP12 JSB CSTEP STEP 12 LDA .M256 RESET JSB SET1 COUNTERS { LDA .M96 JSB SET3 JSB SET2 CLA LDB B1 T.315 EQU * STA SAVE1 BUILD STB SAVE2 DATA T.305 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR A 1 IN A ISZ TEMP1 FIELD OF 0'S JMP T.305 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA LDA .M256 RESET JSB SET1 COUNTER JSB SET2 LDA SAVE1 ROTATE THE LDB SAVE2 1 ONE JSB ROTE TO THE LEFT ISZ TEMP9 DONE IT 96 TIMES? JMP T.315 NO STP13 JSB CSTEP STEP 13 LDA .M256 YES,SET JSB SET1 NEW COUNTERS JSB SET2 CLA BUILD CLB DATA JSB STORE BUFFER TO ISZ TEMP1 CONTAIN LDA ONES1 ALL 0'S IN CCB FIRST WORD, T.306 EQU * ALL 1'S IN JSB STORE REMAINDER ADA IADDR ISZ TEMP1 JMP T.306 LDA PBUF1 SET BUFFER STA SAVE2 POINTER T.307 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA JSB ROLL ROLL BUFFER UP ONE MICROWORD JMP T.307 CONTINUE JSB WBUFF WRITE LAST BUFFER JSB COMP READ AND COMPARE DATA STP14 JSB CSTEP STEP 14 LDA .M256 RESET JSB SET1 COUNTERS JSB SET2 SET POINTER LDA ONES0 BUILD CCB DATA JSB STORE BUFFER TO ISZ TEMP4 CONTAIN LDA ZERO1 ALL 1'S IN CLB FIRST WORD T.308 EQU * AND ALL 0'S JSB STORE IN REMAINDER ADA IADDR ISZ TEMP4 JMP T.308 LDA PBUF1 SET BUFFER STA SAVE2 POINTER T.309 EQU * JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA JSB ROLL ROLL BUFFER UP ONE MICROWORD JMP T.30<:69 CONTINUE JSB WBUFF WRITE LAST BUFFER JSB COMP READ AND COMPARE DATA STP15 JSB CSTEP STEP 15 LDA .M256 SET NEW JSB SET3 COUNTERS JSB SET2 LDA PATTA BUILD LDB PATTB DATA T.310 EQU * BUFFER TO JSB STORE CONTAIN ADA IADDR 101010101010101010101010 XOR MASK2 010101010101010101010101 CMB 101010101010101010101010 ISZ TEMP7 ETC. JMP T.310 JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA T.311 EQU * JSB SET2 RESET POINTER JSB ALT COMPLEMENT PATTERNS JSB WBUFF WRITE BUFFER JSB COMP READ AND COMPARE DATA ISZ TEMP8 DONE IT 256 TIMES? JMP T.311 NO STP16 JSB CSTEP STEP 16 LDA .M256 JSB SET3 SET COUNTER CLA CLEAR FOR POSSIBLE STA TEMP8 USE IN DMA TIME OUT LDA DMAFG DMA SZA PRESENT? JMP T.313 NO T.312 EQU * JSB DRITE YES,WRITE DATA VIA DMA JSB COMP READ AND COMPARE DATA JSB SET2 RESET POINTER JSB ALT COMPLEMENT PATTERNS ISZ TEMP9 DONE IT 256 TIMES? JMP T.312 NO T.313 EQU * JMP TEST2,I YES,RETURN HED TEST SECTION 3 ]<  12908-18004 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 #K* * * TEST SECTION 3 * * * * LOADS MICROPROGRAMS AND EXECUTES THEM * TST03 EQU * TEST3 NOP LDA TEST ARM MESSAGE JSB TMSG H030 LDA TRSS ARM RSS STA T.JMP INSTRUCTION LDA MACH1 IS THIS SZA,RSS A 2100? JMP T.450 NO,JUMP TO 21XX TESTING LDA MOD YES,IS MODULE CPA B1 1 BEING USED? JMP T.400 YES,GET MODULE 1 MACROS CPA B2 NO,IS MODULE 2 BEING USED? JMP T.401 YES,GET MODULE 2 MACROS JSB CMOD3 NO,FORM MOD #3 MICROCODE LDA MAC3 GET MODULE 3 MACROS T.402 EQU * STA MAC01 FORM MACRO TO CALL TSTM1 MICRO ADA B20 STA MAC02 FORM MACRO TO CALL TSTM2 MICRO ADA B20 STA MAC03 FORM MACRO TO CALL TSTM3 MICRO STA TMAC3 SAVE IT JMP T.403 T.400 EQU * LDA MAC1 LOAD A WITH MOD1 MACRO JMP T.402 T.401 EQU * JSB CMOD2 FORM MOD #2 MICROCODE LDA MAC2 LOAD A WITH MOD2 MACRO JMP T.402 T.403 EQU * JSB L2100 LOAD MICROCODE FOR 2100 STP17 JSB SSTEP STEP 17 CCA SET A & B CCB TO ALL 1'S STA TEMP7 SAVE AS EXPECTED STA TEMP8 A & B REGISTERS MAC01 NOP CALL TSTM1 TO TEST MICROJUMP CPA ONES IS A OK? RSS YES JMP T.404 NO,GO REPORT E007 CPB ONES IS B OK? JMP T.405 YES GO TO NEXT STEP T.404 EQU * STA TEMPA NO,SAVE A & B STB TEMPB FOR E007 LDA MAC01 SAVE STA BMAC MACRO JSB ER007 GO REPORT E007 T.405 EQU * STP20 JSB CSTEP STEP 20 LDA ZERO FORM EXPECTED STA TEMP7 A & B REGISTERS LDB ONES STB TEMP8 CCA SET A & B CCB TO ALL 1'S MAC02 NOP CALL TSTM2 MICROPROGRAM JMP T.406 GO REPORT E005 CPA ZERO !IS A OK? RSS YES JMP T.407 NO,GO REPORT E007 CPB ONES IS B OK? JMP T.408 YES,GO TO NEXT STEP T.407 EQU * STA TEMPA NO,SAVE A & B STB TEMPB FOR E007 LDA MAC02 SAVE STA BMAC MACRO JSB ER007 GO REPORT E007 JMP T.408 T.406 EQU * STA TEMPA SAVE A & B STB TEMPB FOR E005 LDA MAC02 SAVE STA BMAC MACRO JSB ER005 GO REPORT E005 T.408 EQU * STP21 JSB CSTEP STEP 21 CLA CLEAR STA TEMP4 COUNTER T.409 EQU * LDA MAC03 GET BITS 0-9 OF MACRO AND MASK9 FOR FORMING EXPECTED B REG AND ONES FORM IT STA TEMP9 SAVE IT STA TEMP8 SAVE AS EXPECTED B REG CCA SET A & B CCB TO ALL 1'S STA TEMP7 SAVE AS EXPECTED A REG MAC03 NOP CALL TSTM3 MICROPROGRAM JMP T.410 GO REPORT E005 CPA ONES IS A OK? RSS YES JMP T.411 NO,GO REPORT E007 CPB TEMP9 IS B OK? JMP T.412 YES T.411 EQU * STA TEMPA NO,SAVE A & B STB TEMPB FOR E007 LDA MAC03 SAVE STA BMAC MACRO JSB ER007 GO REPORT E007 JMP T.412 T.410 EQU * STA TEMPA SAVE A & B STB TEMPB FOR E005 LDA MAC03 SAVE STA BMAC MACRO JSB ER005 GO REPORT E005 T.412 EQU * ISZ TEMP4 IF IN STEP 22,THEN DONE? T.JMP RSS SKIP IN STEP21,JMP T.414 STEP22 JMP T.413 YES STP22 JSB CSTEP STEP 22 T.LDA LDA M4 SET STA TEMP4 COUNTER LDA TJMP ARM STA T.JMP JMP INSTRUCTION LDA TMAC3 INSURE MAC03 STA MAC03 IS CORRECT T.414 EQU * LDA MAC03 INCREMENT ADA B7 THE MACRO STA MAC03 BY 7 JMP T.409 GO DO NEW MACRO T.413 EQU *  LDA LDA1A ARM LDA STA T.LDA INSTRUCTION LDA TRSS ARM STA T.JMP RSS INSTRUCTION JSB REMOD RESTORE 2100 MICROCODE JSB REMX RESTORE 2100 MICROCODE JMP TEST3,I T.450 EQU * LDA MOD FORM CMA,INA CORRECT LDB MAC0 MACRO ADB B40 FOR INA,SZA CURRENT JMP *-2 MODULE # ADB B1 STB MAC01 ADB B20 FORM STB MAC02 REMAINING ADB B7 MACROS STB MAC03 STB TMAC3 JSB CMODX FORM CURRENT MOD MICROCODE JSB L21XX LOAD MICROCODE FOR 21XX JMP STP17 TJMP JMP T.414 JMP TO T.414 INSTRUCTION HED TSTSS * * * SPECIAL TESTING ROUTINE * * * * ENTERED WHEN SWITCH REGISTER BIT 1 IS SET * DURING PROGRAM EXECUTION. ROUTINE HALTS AND * ACCEPTS INFORMATION IN THE A AND B REGISTERS. * WHEN HALTED,OPERATOR ENTERS : * * A REGISTER - (8 BIT WCS ADDRESS)(8 MSB OF MICROWORD) * * B REGISTER - (16 LSB OF MICROWORD) * * PRESS RUN. PROGRAM HANGS IN A LOOP,WRITING AND * READING THE PATTERN SPECIFIED AT THE LOCATION * SPECIFIED. LOOPING CONTINUES UNTIL SWITCH * REGISTER BIT 1 IS CLEARED. * TSTSS EQU * CLA CLEAR CLB REGISTERS HLT63 HLT 63B STA TEMP1 SAVE STB TEMP4 ENTRY SS.1 EQU * LDA TEMP1 WRITE THE LDB TEMP4 PATTERN JSB WRITE ON WCS AND MASK3 GET STA TEMP7 ADDRESS JSB READ READ WCS LOCATION LIA 1 CLEARED SW REG RAR,SLA BIT 1 YET? JMP SS.1 NO,LOOP JMP BACK,I YES,RETURN TO START HED TSTMM * * * MULTIPLE MODULE TESTING ROUTINE * * * * CONTROLS TESTING TO RUN DIAGNOSTIC ON ALL WCS * MUODULES PRESENT. ENTERED WHEN SWITCH REGISTER * BIT 0 IS SET AND DIAGNOSTIC HAS COMPLETED * CURRENT PASS ON LOWEST ORDER WCS MODULE PRESENT. * WHEN HALTED,OPERATOR ENTERS : * * HALT 102060- * * A REGISTER : * * BITS 0 THRU 5 - SELECT CODE OF NEXT HIGHER ORDER * WCS MODULE PRESENT. * * BITS 6 THRU 11 - CLEARED * * BITS 12 THRU 15 - CONTROL STORE MODULE BEING USED. * * * * B REGISTER : * * BITS 0 THRU 5 - SELECT CODE OF HIGHEST ORDER * WCS MODULE PRESENT. * * BITS 6 THRU 11 - CLEARED * * BITS 12 THRU 15 - CONTROL STORE MODULE BEING USED * * IF THERE IS NO 3RD WCS MODULE AND ONLY 2 WCS MODULES * WILL BE TESTED,CLEAR THE B REGISTER. * * PRESS RUN. PROGRAM WILL PERFORM DIAGNOSTIC ON EACH * WCS MODULE PRESENT. IT WILL DO THE LOWEST ORDER WCS * MODULE,THEN NEXT HIGHER,NEXT HIGHER(IF PRESENT) AND * THEN REPORT A PASS. MULTIPLE MODULE TESTING * CONTINUES UNTIL SWITCH REGISTER BIT 0 IS CLEARED. * * NOTE** IF ONE MODULE IS MAKING ERRORS,HIGHER ORDER * MODULES MAY BE EFFECTED. * TSTMM EQU * LDA PASS IN SAME CPA SPASS PASS? JMP MM.4 YES STA SPASS NO,FIRST TIME THRU THIS PASS LDA MMFLG HAS TSTMM SZA BEEN CONFIGURED? JMP MM.3 YES LDA JBACM SET PROGRAM OPTION STA JBAC1 BIT12 FOR USE STA JBAC2 WITH TSTMM CLA CLEAR REGISTERS CLB FOR TSTMM ENTRIES HLT60 HLT 60B HALT FOR ENTRIES STA TEMP7 SAVE A REGISTER STB TEMP3 SAVE B REG AND MASK6 GET MODULE ALF # OF NEXT STA TEMP8 HIGHER ORDER WCS CMA,INA MAKE INTO -# ADA MOD IS IT HIGHER SSA,RSS THAN LOW ORDER WCS? JMP MM.8 NO,INVALID LDA TEMP3 YES,NOW AND MASK6 CHECK NEXT ALF HIGHER ORDER WCS SZA,RSS IS IT PRESENT? JMP MM.9 NO,SKIP CMA,INA ADA TEMP8 SSA OK? JMP MM.9 YES MM.8 EQU * LDA TEMP7 NO,LOAD LDB TEMP3 ENTRIES HLT54 HLT 54B JMP HLT60+1 TRY AGAIN MM.9 EQU * LDA TEMP7 JSB CONF1 GO CONFIGURE LDA MOD SAVE NEXT ORDER LDB SC WCS SELECT CODE STA SAVE6 AND CONTROL STORE STB SAVE7 MODULE # LDA TEMP3 LOAD B REG ENTRY SZA DEFAULT CASE? JMP MM.1 NO CLA YES,ONLY TWO WCS STA SAVE8 MODULES ARE PRESENT STA SAVE9 JMP MM.2 MM.1 EQU * JSB CONF1 GO CONFIGURE LDA MOD SAVE HIGH ORDER LDB SC WCS SELECT CODE STA SAVE8 AND CONTROL STORE STB SAVE9 MODULE # MM.2 EQU * CCA SET TSTMM STA MMFLG CONFIGURATION FLAG HL74 HLT 74B GOOD CONFIGURATION MM.3 EQU * LDA SAVE4 FORM UP LOW ORDER ALF,ALF WCS MODULE SELECT ALF CODE AND CONTROL IOR SAVE5 STORE MODULE # JSB CONF1 GO CONFIGURE PROGRAM JMP MM.5 MM.4 EQU * LDA MOD ARE WE ON CPA SAVE4 2ND TIME THRU? RSS YES JMP MM.6 NO LDA SAVE6 FORM UP NEXT HIGHER ALF,ALF ORDER WCS MODULE ALF SELECT CODE AND IOR SAVE7 CONTROL STORE MODULE # JSB CONF1 GO CONFIGURE PROGRAM JMP MM.5 MM.6 EQU * LDA SAVE8 THIRD TIME THRU SZA,RSS IS WCS PRESENT? JMP MM.7 NO CPA MOD COMPLETED PASS? JMP MM.7 YES ALF,ALF NO,FORM UP HIGH b#ORDER ALF WCS MODULE SELECT IOR SAVE9 CODE AND CONTROL STORE MOD. # JSB CONF1 GO CONFIGURE MM.5 EQU * JMP BACK,I NO,GO DO IT MM.7 EQU * LDA PP8,I PUT ASTERIX AT AND MASK2 END OF PASS MSG IOR ASTRX TO INDICATE MULTIPLE STA PP8,I MODULE TESTING PASS JMP PMRTN,I REPORT PASS HED TSTLL * * * MICROCODE LOOP ROUTINE * * * * ENTERED WHEN SWITCH REGISTER BIT 6 IS SET DURING * PROGRAM EXECUTION. SELECTS MACROINSTRUCTION WHICH * CALLS LOOP IN MICROCODE OF CURRENT CONTROL STORE * MODULE. LOOPS UNTIL SWITCH REGISTER BIT 6 IS * CLEARED. * NOTE** IF A JMP MICROINSTRUCTION WON'T WORK(IE. * STEP 17 GIVES ERRORS),THEN THE PERFORMANCE OF * THIS ROUTINE IS UNPREDICTABLE. * TSTLL EQU * LDA MACH1 IS THIS SZA A 2100? JMP LL.0 YES LDA MOD NO,FORM CMA,INA MACRO LDB MAC0 TO ADB B40 CALL INA,SZA LOOP JMP *-2 IN 21XX ADB B36 STB MAC04 JMP LL.4 LL.0 EQU * LDA MOD GET CURRENT MODULE # ADA M2 SSA IS IT 1? JMP LL.1 YES ADA M1 NO SSA IS IT 2? JMP LL.2 YES LDA MAC3 NO,MUST BE 3 LL.3 EQU * ADA B100 FORM MACRO STA MAC04 TO CALL LOOP JMP LL.4 LL.1 EQU * LDA MAC1 USE MODULE 1 MACRO JMP LL.3 LL.2 EQU * LDA MAC2 USE MODULE 2 MACRO JMP LL.3 LL.4 EQU * MAC04 NOP CALL LOOP LIA 1 GET SW REG AND BIT6 IS BIT 6 SZA STILL SET? JMP LL.4 YES JMP BACK,I NO,RETURN TO START HED REMX * * * RESTORE 21XX MICROCODE ROUTINE * * * * RESTORES MICROC,5ODE FOR 21XX FOR USE IN MODULE #3 * * CALLING SEQUENCE : * * JSB REMX * REMX NOP LDA BBUF1 INITIALIZE STA TEMP8 POINTERS LDB PMODX RMX.1 EQU * LDA B,I RESTORE HIGH STA TEMP8,I 8 BITS INB ISZ TEMP8 LDA B,I RESTORE LOW STA TEMP8,I 16 BITS INB ISZ TEMP8 CPB EMODX DONE UNCD JMPS? RSS YES JMP RMX.1 NO LDA TEMP8 BUMP ADA B732 POINTER STA TEMP8 LDA B,I RESTORE STA TEMP8,I THE INB CNDX JMP ISZ TEMP8 LDA B,I STA TEMP8,I JMP REMX,I HED CMODX * * * CHANGE 21XX MICROCODE ROUTINE * * * * MODIFIES MICROCODE FOR 21XX FOR USE IN CURRENT * CONTROL STORE MODULE. * * CALLING SEQUENCE : * * JSB CMODX * CMODX NOP LDA PMODX INITIALIZE STA TEMP7 VARIABLES LDA B2000 CMA,INA STA TEMP9 CLA STA TEMP1 LDA BBUF1 STA TEMP8 LDA B3 CMX.5 CPA MOD GOT MODULE #? JMP CMODX,I YES,RETURN STA TEMP4 NO,STORE IT LDB TEMP1 FORM ADB B2000 CURRENT STB TEMP1 MODIFICATION LDB TEMP7 POINT TO LOW INB 16 BITS OF MICROWORD ISZ TEMP8 CMX.1 EQU * CLE CLEAR EXTEND BIT LDA B,I CHANGE ADA TEMP1 LOW 16 BITS STA TEMP8,I OF MICROWORD SEZ,RSS EXTEND BIT SET? JMP CMX.2 NO LDA TEMP8 YES ADA M1 POINT BACK STA TEMP8 TO HIGH 8 ADB M1 BITS OF MICROWORD LDA B,I CARRY OVER INA OVERFLOW STA TEMP8,I INB BUMP ISZ TEMP8 POINTERS CMX.2 EQU * INB ISZ TEMP8 CPB EMODX DONE ALL UNCD JMPS? JMP CMX.3 YES INB NO,BUMP ISZ TEMP8 POINTERS AGAIN JMP CMX.1 CMX.3 EQU * LDA B733 BUMP ADA TEMP8 POINTER STA TEMP8 TO MX375+1 INB BUMP POINTER LDA MOD NEED TO CHANGE SLA CNDX JMP? JMP CMX.0 NO LDA B,I CHANGE ADA TEMP9 MICROCODE STA TEMP8,I CMX.4 EQU * LDA BBUF1 STA TEMP8 LDA TEMP4 INA JMP CMX.5 CMX.0 EQU * LDA B7771 RESTORE CORRECT STA TEMP8,I CNDX JMP JMP CMX.4 HED INIT * * * INITIAL CONFIGURATION ROUTINE * * * * CONFIGURES WCS SELECT CODE INTO I/O INSTRUCTIONS. * INDICATES PRESENCE OF DMA AND CONSOLE DEVICE(SLOW * OUTPUT). SAVES CONTROL STORE MODULE # FOR PROGRAM * USE. * INIT NOP CLC 0,C INTERRUPT OFF,CLEAR I/O LDA ETAB FORM RELATIVE CMA ERROR TABLE STA METAB INDEX LDA C.112 IS THERE A CONSOLE SZA DEVICE IN SYSTEM? JMP *+3 YES CCA NO,SET STA TFLAG NO TTY FLAG LDA C.115 CHECK AND MASK1 FOR SZA DMA JMP INIT2 DMA IS THERE CCA STA DMAFG NO DMA INIT2 EQU * LDA C.115 GET COMPUTER AND MASK6 TYPE ALF ADA M10 IS IT SSA A 2100? JMP INIT5 YES CCA NO,MUST BE A 21XX STA MFLAG SET MODULE 1 FLAG STA MACH2 SET 21XX FLAG LDB DBUF1 GO USE 2100 MICROPROGRAM JSB IBUFF BUFFER FOR DATA BUFFER JMP INIT6 INIT5 EQU * CCA SET 2100 STA MACH1 FLAG LDB DBUF2 GO USE 21XX MICROPROGRAM JSB IBUFF BUFFER FOR DATA BUFFER INIT6 EQU * JSB CONF GO CONFIGURE PROGRAM LDA MOD SA3640VE LOW ORDER LDB SC WCS SELECT CODE AND STA SAVE4 MODULE # FOR STB SAVE5 PROGRAM USE HLT74 HLT 74B CONFIGURATION COMPLETE JMP 130B GO START MAIN PROGRAM HED CONF * * * CONFIGURATION ROUTINE * * * * CONFIGURES CURRENT WCS SELECT CODE INTO I/O * INSTRUCTIONS. SAVE CONTROL STORE MODULE # FOR * PROGRAM USE. * * CALLING SEQUENCE : * * JSB CONF (INCLUDES LIA 1) * * OR * * LDA (MOD# & SELECT CODE) * JSB CONF1 * CONF NOP LIA 1 GET SW REG AND JMP INIT8 CONF1 NOP LDB CONF1 SET RETURN STB CONF ADDRESS INIT8 EQU * STA TEMP0 SAVE IT AND MASK0 IS SELECT ADA M10 CODE ENTRY SSA,RSS LESS THAN 10(OCTAL)? JMP INIT0 NO,OK CLB LDA TEMP0 LOAD BAD ENTRY HLT73 HLT 73B YES,SELECT CODE ENTERED WAS <7B JMP CONF+1 TRY AGAIN INIT0 EQU * LDA TEMP0 IS SELECT AND MASK0 CODE ENTRY ADA M26 GREATER THAN SSA 25 OCTAL? JMP INIT1 NO CLB LDA TEMP0 LOAD BAD ENTRY HLT51 HLT 51B YES,SELECT CODE ENTERED WAS >25B JMP CONF+1 TRY AGAIN INIT1 EQU * LDA TEMP0 AND MASK0 GET CURRENT WCS STA SC SELECT CODE LDA TEMP0 GET CURRENT AND MASK6 CONTROL STORE ALF MODULE # STA TEMP7 AND SAVE IT LDA MFLAG IS MACHINE SZA A 2100? JMP CONF2 NO,MUST BE 21XX LDA TEMP7 ADA M1 YES,TRYING TO SSA USE MODULE 0? ~{6   12908-18005 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 $K JMP INIT4 YES,INVALID LDA TEMP7 NO,TRYING TO ADA M4 USE MODULE#>3? SSA JMP INIT7 NO,OK INIT4 EQU * CLB YES,INVALID LDA TEMP0 LOAD BAD ENTRY HLT53 HLT 53B JMP CONF+1 TRY AGAIN CONF2 EQU * LDA TEMP7 ADA M3 TRYING TO USE SSA MODULE #<3? JMP CONF3 YES,INVALID LDA TEMP7 NO ADA M16 TRYING TO USE SSA MODULE #>15(OCTAL)? JMP INIT7 NO,OK CONF3 EQU * CLB YES,INVALID LDA TEMP0 LOAD BAD ENTRY HLT52 HLT 52B JMP CONF+1 TRY AGAIN INIT7 EQU * LDA TEMP0 STORE CURRENT AND MASK6 CONTROL STORE ALF MODULE # STA MOD LDA IOTAB STA TEMP0 INIT3 EQU * LDA TEMP0 FORM LDB A,I SELECT LDA B,I CODE AND MASK4 INTO IOR SC APPLICABLE STA B,I I/O LDB TEMP0 INSTRUCTIONS INB STB TEMP0 CPB IOEND RSS JMP INIT3 JMP CONF,I HED ERROR AND MESSAGE TABLES,WORK BUFFER * * * ERROR TABLE * * ORG 4000B ERTAB DEF *+1 NOP HEADING DEF E001+1 E001 DEF E002+1 E002 DEF E003+1 E003 DEF E004+1 E0XX XX=STEP #(4 THRU 16) DEF E005+1 E0YY YY=STEP #(17 THRU 22) NOP H030 DEF E007+1 E0ZZ ZZ=STEP #(17 THRU 22) NOP PASS COUNT MESSAGE NOP H031 DEF E010+1 E016 * * * MESSAGE TABLE * * TABLE DEF *+1 DEF MSG0 DEF MSG1 DEF MSG2 DEF MSG3 MS4 DEF MSG4 DEF MSG5 DEF MSG6 DEF MSG7 DEF MSG8 DEF MSG9 DEF MSG10 * * * WORK AREA FOR MESSAGE PARAMETERS * * OCTA1 BSS 1 OCTA2 BSS 2 OCTA3 BSS 3 HED 2100 MICROCODE MODIFICATION TABLE * * * 2100 MICROCODE MODIFICATION TABLE * * MI00A OCT 377 JMP *+16 MI00B OCT 27420 OCT 777 JMP TSTM1 OCT 27430 OCT 1377 JMP TSTM2 OCT 27540 OCT 1777 JMP FORM OCT 27775 OCT 2377 JMP FORM OCT 27775 OCT 2777 JMP LOOP OCT 27700 OCT 3375 JMP *+256 OCT 37406 OCT 3775 JMP *+256 OCT 37407 OCT 4375 JMP *+256 OCT 37410 OCT 4775 JMP *+256 OCT 37411 OCT 5375 JMP *+256 OCT 37412 OCT 5777 JMP *+512 OCT 37413 OCT 6377 JMP *+512 OCT 37414 OCT 6777 JMP *+512 OCT 37415 OCT 7377 JMP *+512 OCT 37416 OCT 7777 JMP *+512 OCT 37417 OCT 40377 JMP GOOF OCT 27640 OCT 40777 JMP TSTM3 OCT 27600 OCT 41377 JMP GOOF OCT 27640 OCT 41777 JMP GOOF OCT 27640 OCT 42377 JMP GOOF OCT 27640 OCT 42777 JMP GOOF OCT 27640 OCT 43377 JMP TSTM3 OCT 27600 OCT 43777 JMP GOOF OCT 27640 OCT 44377 JMP TSTM3 OCT 27600 OCT 44777 JMP GOOF OCT 27640 OCT 45377 JMP GOOF OCT 27640 OCT 45777 JMP GOOF OCT 27640 OCT 46377 JMP GOOF OCT 27640 OCT 46777 JMP TSTM3 OCT 27600 OCT 47377 JMP GOOF OCT 27640 OCT 47777 JMP TSTM3 OCT 27600 OCT 176755 FORM ADR IOR S1 OCT 173777 OCT 177367 S1 JMP SJMP OCT 27500 HED 21XX MICROCODE MODIFICATION TABLE * * * 21XX MICROCODE MODIFICATION TABLE * * MX00A OCT 320 JMP UNCD TSTM1 OCT 62030 OCT 720 JMP UNCD TSTM2 OCT 64030 OCT 1320 JMP UNCD GOOF OCT 74030 OCT 1720   JMP UNCD GOOF OCT 74030 OCT 2320 JMP UNCD GOOF OCT 74030 OCT 2720 JMP UNCD GOOF OCT 74030 OCT 3320 JMP UNCD GOOF OCT 74030 OCT 3720 JMP UNCD GOOF OCT 74030 OCT 4320 JMP UNCD TSTM3 OCT 77230 OCT 4720 JMP UNCD GOOF OCT 74030 OCT 5320 JMP UNCD GOOF OCT 74030 OCT 5720 JMP UNCD GOOF OCT 74030 OCT 6320 JMP UNCD GOOF OCT 74030 OCT 6720 JMP UNCD GOOF OCT 74030 OCT 7320 JMP UNCD LOOP OCT 70030 OCT 7720 JMP UNCD TSTM3 OCT 77230 X375A OCT 176720 JMP CNDX TBZ OUT OCT 77771 HED MESSAGES * * * MESSAGES * * SUP MSG0 OCT 6412 ASC 11,12908 WCS DIAGNOSTIC / MSG1 ASC 11,E001 IO BUS NOT CLEAR/ MSG2 ASC 09,E002 NO DMA FLAG / MSG3 ASC 08,E003 NO DMA INT/ MSG4 ASC 01,E0 PM4AA BSS 1 ASC 08, BAD COMPARISON OCT 6412 ASC 12,MODULE DATA DATA OCT 6412 ASC 14,ADDRESS READ WRITTEN OCT 6412 OCT 6412 PM4A BSS 3 OCT 20040 PM4B BSS 5 OCT 20040 PM4C BSS 5 PM4CE ASC 01, / MSG5 ASC 01,E0 PM5 BSS 1 ASC 04, NO MAC/ MSG6 OCT 6412 ASC 04,H030 MOD PM6A BSS 1 ASC 02,,TST PM6B BSS 1 ASC 03,,STEP PM6C BSS 1 ASC 01, / MSG7 ASC 01,E0 PM7 BSS 1 ASC 05, BAD MAC / MSG8 ASC 03,PASS PM8 BSS 3 PM8A ASC 01, / MSG9 ASC 05,H031 MAC= PM9A BSS 3 OCT 6412 ASC 02, A= PM9B BSS 3 ASC 06, SHOULD BE= PM9C BSS 3 OCT 6412 ASC 02, B= PM9D BSS 3 ASC 06, SHOULD BE= PM9E BSS 3 ASC 01, / MSG10 ASC 09,E016 DMA NOT COMP/ HED 2100 DIAGNOSTIC MICROCODE AREA * * * 2100 MICROPROGRAM AREA * * X2100 EQU * MA000 OCT 377 JMP *+16 OCT 27420 MA001 OCT 777 JMP  TSTM1 OCT 27430 MA002 OCT 1377 JMP TSTM2 OCT 27540 MA003 OCT 1777 JMP FORM OCT 27775 MA004 OCT 2377 JMP FORM OCT 27775 MA005 OCT 2777 JMP LOOP OCT 27700 MA006 OCT 3375 JMP *+256 OCT 37406 MA007 OCT 3775 JMP *+256 OCT 37407 MA010 OCT 4375 JMP *+256 OCT 37410 MA011 OCT 4775 JMP *+256 OCT 37411 MA012 OCT 5375 JMP *+256 OCT 37412 MA013 OCT 5777 JMP *+512 OCT 37413 MA014 OCT 6377 JMP *+512 OCT 37414 MA015 OCT 6777 JMP *+512 OCT 37415 MA016 OCT 7377 JMP *+512 OCT 37416 MA017 OCT 7777 JMP *+512 OCT 37417 MA020 OCT 10377 CJMP OUT OCT 47730 MA021 OCT 10771 CR IOR A 0 OCT 177000 MA022 OCT 11373 CL IOR A 0 OCT 177000 MA023 OCT 11777 CJMP 0 OCT 47730 MA024 OCT 12371 CR IOR B 0 OCT 176400 MA025 OCT 12773 CL IOR B 0 OCT 176400 MA026 OCT 13377 IOR EOP OCT 177775 MA027 OCT 13777 IOR OCT 177777 MA030 OCT 14377 TSTM1 IOR EOP OCT 177775 MA031 OCT 14777 IOR OCT 177777 MA032 OCT 15377 IOR OCT 177777 OCT 15777 IOR OCT 177777 OCT 16377 IOR OCT 177777 OCT 16777 IOR OCT 177777 OCT 17377 IOR OCT 177777 OCT 17777 IOR OCT 177777 OCT 20377 IOR OCT 177777 OCT 20777 IOR OCT 177777 OCT 21377 IOR OCT 177777 OCT 21777 IOR OCT 177777 OCT 22377 IOR OCT 177777 OCT 22777 IOR OCT 177777 OCT 23377 IOR OCT 177777 OCT 23777 IOR OCT 177777 OCT 24377 IOR OCT 177777 OCT 24777 IOR OCT 177777 OCT 25377 IOR OCT 177777 OCT 25777 IOR OCT 177777 OCT 26377 - IOR OCT 177777 OCT 26777 IOR OCT 177777 OCT 27377 IOR OCT 177777 OCT 27777 IOR OCT 177777 OCT 30377 IOR OCT 177777 OCT 30777 IOR OCT 177777 OCT 31377 IOR OCT 177777 OCT 31777 IOR OCT 177777 OCT 32377 IOR OCT 177777 OCT 32777 IOR OCT 177777 OCT 33377 IOR OCT 177777 OCT 33777 IOR OCT 177777 MA070 OCT 34377 CJMP OUT OCT 47730 MA071 OCT 34771 CR IOR A 0 OCT 177000 MA072 OCT 35373 CL IOR A 0 OCT 177000 MA073 OCT 35777 CJMP OUT OCT 47730 MA074 OCT 36371 CR IOR B 0 OCT 176400 MA075 OCT 36773 CL IOR B 0 OCT 176400 MA076 OCT 37377 IOR EOP OCT 177775 MA077 OCT 37777 IOR OCT 177777 MA100 OCT 40377 JMP GOOF OCT 27640 MA101 OCT 40777 JMP TSTM3 OCT 27600 MA102 OCT 41377 JMP GOOF OCT 27640 MA103 OCT 41777 JMP GOOF OCT 27640 MA104 OCT 42377 JMP GOOF OCT 27640 MA105 OCT 42777 JMP GOOF OCT 27640 MA106 OCT 43377 JMP TSTM3 OCT 27600 MA107 OCT 43777 JMP GOOF OCT 27640 MA110 OCT 44377 JMP TSTM3 OCT 27600 MA111 OCT 44777 JMP GOOF OCT 27640 MA112 OCT 45377 JMP GOOF OCT 27640 MA113 OCT 45777 JMP GOOF OCT 27640 MA114 OCT 46377 JMP GOOF OCT 27640 MA115 OCT 46777 JMP TSTM3 OCT 27600 MA116 OCT 47377 JMP GOOF OCT 27640 MA117 OCT 47777 JMP TSTM3 OCT 27600 OCT 50377 IOR OCT 177777 OCT 50777 IOR OCT 177777 OCT 51377 IOR OCT 177777 OCT 51777 IOR OCT 177777 OCT 52377 IOR OCT 177777 OCT 52777 IOR OCT 177777 OCT 53377 IOR OCT 177777 OCT 53777 IOR OCT 177777 MA130 OCT 54377 CJMP OUT OCT 47730 MA131 OCT 54771 CR IOR A 0 OCT 177000 MA132 OCT 55373 CL IOR A 0 OCT 177000 MA133 OCT 55777 CJMP OUT OCT 47730 MA134 OCT 56371 CR IOR B 0 OCT 176400 MA135 OCT 56773 CL IOR B 0 OCT 176400 MA136 OCT 57377 IOR EOP OCT 177775 MA137 OCT 57777 IOR OCT 177777 MA140 OCT 60371 TSTM2 CR IOR A 0 OCT 177000 MA141 OCT 60774 P INC P EOP OCT 114375 MA142 OCT 61377 IOR OCT 177777 OCT 61777 IOR OCT 177777 OCT 62377 IOR OCT 177777 OCT 62777 IOR OCT 177777 OCT 63377 IOR OCT 177777 OCT 63777 IOR OCT 177777 OCT 64377 IOR OCT 177777 OCT 64777 IOR OCT 177777 OCT 65377 IOR OCT 177777 OCT 65777 IOR OCT 177777 OCT 66377 IOR OCT 177777 OCT 66777 IOR OCT 177777 OCT 67377 IOR OCT 177777 OCT 67777 IOR OCT 177777 OCT 70377 IOR OCT 177777 OCT 70777 IOR OCT 177777 OCT 71377 IOR OCT 177777 OCT 71777 IOR OCT 177777 OCT 72377 IOR OCT 177777 OCT 72777 IOR OCT 177777 OCT 73377 IOR OCT 177777 MA167 OCT 73777 IOR OCT 177777 MA170 OCT 74377 CJMP OUT OCT 47730 MA171 OCT 74771 CR IOR A 0 OCT 177000 MA172 OCT 75373 CL IOR A 0 OCT 177000 MA173 OCT 75777 CJMP OUT OCT 47730 MA174 OCT 76371 CR IOR B 0 OCT 176400 MA175 OCT 76773 CR IOR B 0 OCT 176400 MA176 OCT 77377 IOR EOP OCT 177775 MA177 OCT 77777 IOR OCT 177777 MA200 OCT 100010 TSTM3 A RRS AND S1 OCT 143777 MA201 OCT 100466 B S1 AND A OCT 147377 MA202 OCT 101054 B ADR AND B EOP 4*($ OCT 146775 MA203 OCT 101774 P INC P OCT 114377 OCT 102377 IOR OCT 177777 OCT 102777 IOR OCT 177777 OCT 103377 IOR OCT 177777 OCT 103777 IOR OCT 177777 OCT 104377 IOR OCT 177777 OCT 104777 IOR OCT 177777 OCT 105377 IOR OCT 177777 OCT 105777 IOR OCT 177777 OCT 106377 IOR OCT 177777 OCT 106777 IOR OCT 177777 OCT 107377 IOR OCT 177777 OCT 107777 IOR OCT 177777 OCT 110377 IOR OCT 177777 OCT 110777 IOR OCT 177777 OCT 111377 IOR OCT 177777 OCT 111777 IOR OCT 177777 OCT 112377 IOR OCT 177777 OCT 112777 IOR OCT 177777 OCT 113377 IOR OCT 177777 OCT 113777 IOR OCT 177777 MA230 OCT 114377 CJMP OUT OCT 47730 MA231 OCT 114771 CR IOR A 0 OCT 177000 MA232 OCT 115373 CL IOR A 0 OCT 177000 MA233 OCT 115777 CJMP OUT OCT 47730 MA234 OCT 116371 CR IOR B 0 OCT 176400 MA235 OCT 116773 CL IOR B 0 OCT 176400 MA236 OCT 117377 IOR EOP OCT 177775 MA237 OCT 117777 IOR OCT 177777 MA240 OCT 120371 GOOF CR IOR S1 252 OCT 173652 MA241 OCT 120773 CL IOR A 252 OCT 177252 MA242 OCT 121027 A S1 IOR A OCT 177377 MA243 OCT 121437 A IOR B EOP OCT 176775 MA244 OCT 122374 P INC P OCT 114377 OCT 122777 IOR OCT 177777 ɗ*   12908-18006 1502 S 0122 WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 %K OCT 123377 IOR OCT 177777 OCT 123777 IOR OCT 177777 OCT 124377 IOR OCT 177777 OCT 124777 IOR OCT 177777 OCT 125377 IOR OCT 177777 OCT 125777 IOR OCT 177777 OCT 126377 IOR OCT 177777 OCT 126777 IOR OCT 177777 OCT 127377 IOR OCT 177777 OCT 127777 IOR OCT 177777 OCT 130377 IOR OCT 177777 OCT 130777 IOR OCT 177777 OCT 131377 IOR OCT 177777 OCT 131777 IOR OCT 177777 OCT 132377 IOR OCT 177777 OCT 132777 IOR OCT 177777 OCT 133377 IOR OCT 177777 OCT 133777 IOR OCT 177777 MA270 OCT 134377 CJMP OUT OCT 47730 MA271 OCT 134771 CR IOR A 0 OCT 177000 MA272 OCT 135373 CL IOR A 0 OCT 177000 MA273 OCT 135777 CJMP OUT OCT 47730 MA274 OCT 136371 CR IOR B 0 OCT 176400 MA275 OCT 136773 CL IOR B 0 OCT 176400 MA276 OCT 137377 IOR EOP OCT 177775 MA277 OCT 137777 IOR OCT 177777 MA300 OCT 140000 LOOP A CIR RFI IOO RSS ICTR OCT 0 MA301 OCT 140777 IOR OCT 177777 MA302 OCT 141377 IOR EOP OCT 177775 MA303 OCT 141777 IOR OCT 177777 OCT 142377 IOR OCT 177777 OCT 142777 IOR OCT 177777 OCT 143377 IOR OCT 177777 OCT 143777 IOR OCT 177777 OCT 144377 IOR OCT 177777 OCT 144777 IOR OCT 177777 OCT 145377 IOR OCT 177777 OCT 145777 IOR OCT 177777 OCT 146377 IOR OCT 177777 OCT 146777 IOR OCT 177777 OCT 147377 IOR OCT 177777 OCT 147777 IOR OCT 177777 MA320 OCT 150377 CJMP OUT OCT 47730 MA321 OCT 150771 CR IOR A 0 OCT 1770w00 MA322 OCT 151373 CL IOR A 0 OCT 177000 MA323 OCT 151777 CJMP OUT OCT 47730 MA324 OCT 152371 CR IOR B 0 OCT 176400 MA325 OCT 152773 CL IOR B 0 OCT 176400 MA326 OCT 153377 IOR EOP OCT 177775 MA327 OCT 153777 IOR OCT 177777 MA330 OCT 154377 OUT IOR EOP OCT 177775 MA331 OCT 154777 IOR OCT 177777 OCT 155377 IOR OCT 177777 OCT 155777 IOR OCT 177777 OCT 156377 IOR OCT 177777 OCT 156777 IOR OCT 177777 OCT 157377 IOR OCT 177777 OCT 157777 IOR OCT 177777 OCT 160377 IOR OCT 177777 OCT 160777 IOR OCT 177777 OCT 161377 IOR OCT 177777 OCT 161777 IOR OCT 177777 OCT 162377 IOR OCT 177777 OCT 162777 IOR OCT 177777 OCT 163377 IOR OCT 177777 OCT 163777 IOR OCT 177777 OCT 164377 IOR OCT 177777 OCT 164777 IOR OCT 177777 OCT 165377 IOR OCT 177777 OCT 165777 IOR OCT 177777 OCT 166377 IOR OCT 177777 OCT 166777 IOR OCT 177777 OCT 167377 IOR OCT 177777 OCT 167777 IOR OCT 177777 OCT 170377 IOR OCT 177777 OCT 170777 IOR OCT 177777 OCT 171377 IOR OCT 177777 OCT 171777 IOR OCT 177777 OCT 172377 IOR OCT 177777 MA365 OCT 172777 CJMP OUT OCT 47730 MA366 OCT 173371 CR IOR A 0 OCT 177000 MA367 OCT 173773 CL IOR A 0 OCT 177000 MA370 OCT 174377 CJMP OUT OCT 47730 MA371 OCT 174771 CR IOR B 0 OCT 176400 MA372 OCT 175373 CL IOR B 0 OCT 176400 MA373 OCT 175777 IOR EOP OCT 177775 MA374 OCT 176377 IOR OCT 177777 MA375 OCT 176755 FORM ADR IOR S1 OCT 173777 MA376 OCT 177367 S1 JMP SJMP OCT 27500 MA377 OCT 177777 IOR OCT 177777 HED 21XX DIAGNOSTIC MICROCODE AREA * * * 21XX MICROPROGRAM AREA * * X21XX EQU * MX000 OCT 320 JMP UNCD TSTM1 OCT 62030 MX001 OCT 720 JMP UNCD TSTM2 OCT 64030 MX002 OCT 1320 JMP UNCD GOOF OCT 74030 MX003 OCT 1720 JMP UNCD GOOF OCT 74030 MX004 OCT 2320 JMP UNCD GOOF OCT 74030 MX005 OCT 2720 JMP UNCD GOOF OCT 74030 MX006 OCT 3320 JMP UNCD GOOF OCT 74030 MX007 OCT 3720 JMP UNCD GOOF OCT 74030 MX010 OCT 4320 JMP UNCD TSTM3 OCT 77230 MX011 OCT 4720 JMP UNCD GOOF OCT 74030 MX012 OCT 5320 JMP UNCD GOOF OCT 74030 MX013 OCT 5720 JMP UNCD GOOF OCT 74030 MX014 OCT 6320 JMP UNCD GOOF OCT 74030 MX015 OCT 6720 JMP UNCD GOOF OCT 74030 MX016 OCT 7320 JMP UNCD LOOP OCT 70030 MX017 OCT 7720 JMP UNCD TSTM3 OCT 77230 OCT 10017 NOP OCT 136757 OCT 10417 NOP OCT 136757 OCT 11017 NOP OCT 136757 OCT 11017 NOP OCT 136757 OCT 11417 NOP OCT 136757 OCT 12017 NOP OCT 136757 OCT 12417 NOP OCT 136757 OCT 13017 NOP OCT 136757 OCT 13417 NOP OCT 136757 OCT 14017 NOP OCT 136757 OCT 14417 NOP OCT 136757 OCT 15017 NOP OCT 136757 OCT 15417 NOP OCT 136757 OCT 16017 NOP OCT 136757 MX035 OCT 16757 IMM CMLO A 377 OCT 176557 MX036 OCT 17353 IMM CMHI B 377 OCT 176517 MX037 OCT 17417 RTN OCT 136776 MX040 OCT 20017 TSTM1 RTN OCT 136776 OCT 20417 NOP OCT 136757 OCT 21017 NOP OCT 136757 OC*T 21417 NOP OCT 136757 OCT 22017 NOP OCT 136757 OCT 22417 NOP OCT 136757 OCT 23017 NOP OCT 136757 OCT 23417 NOP OCT 136757 OCT 24017 NOP OCT 136757 OCT 24417 NOP OCT 136757 OCT 25017 NOP OCT 136757 OCT 25417 NOP OCT 136757 OCT 26017 NOP OCT 136757 OCT 26417 NOP OCT 136757 OCT 27017 NOP OCT 136757 OCT 27417 NOP OCT 136757 OCT 30017 NOP OCT 136757 OCT 30417 NOP OCT 136757 OCT 31017 NOP OCT 136757 OCT 31417 NOP OCT 136757 OCT 32017 NOP OCT 136757 OCT 32417 NOP OCT 136757 OCT 33017 NOP OCT 136757 OCT 33417 NOP OCT 136757 OCT 34017 NOP OCT 136757 OCT 34417 NOP OCT 136757 OCT 35017 NOP OCT 136757 OCT 35417 NOP OCT 136757 OCT 36017 NOP OCT 136757 MX075 OCT 36757 IMM CMLO A 377 OCT 176557 MX076 OCT 37353 IMM CMHI B 377 OCT 176517 MX077 OCT 37417 RTN OCT 136776 MX100 OCT 40357 TSTM2 IMM CMLO A 377 OCT 176557 MX101 OCT 40400 RTN INC P P OCT 75736 OCT 41017 NOP OCT 136757 OCT 42017 NOP OCT 136757 OCT 42417 NOP OCT 136757 OCT 43017 NOP OCT 136757 OCT 43417 NOP OCT 136757 OCT 44017 NOP OCT 136757 OCT 44417 NOP OCT 136757 OCT 45017 NOP OCT 136757 OCT 45417 NOP OCT 136757 OCT 46017 NOP OCT 136757 OCT 46417 NOP OCT 136757 OCT 47017 NOP OCT 136757 OCT 47417 NOP OCT 136757 OCT 50017 NOP B OCT 136757 OCT 50417 NOP OCT 136757 OCT 51017 NOP OCT 136757 OCT 51417 NOP OCT 136757 OCT 52017 NOP OCT 136757 OCT 52417 NOP OCT 136757 OCT 53017 NOP OCT 136757 OCT 53417 NOP OCT 136757 OCT 54017 NOP OCT 136757 OCT 54417 NOP OCT 136757 OCT 55017 NOP OCT 136757 OCT 55417 NOP OCT 136757 OCT 56017 NOP OCT 136757 OCT 56417 NOP OCT 136757 OCT 57017 NOP OCT 136757 OCT 57417 NOP OCT 136757 OCT 60017 NOP OCT 136757 OCT 60417 NOP OCT 136757 OCT 61017 NOP OCT 136757 OCT 61417 NOP OCT 136757 OCT 62017 NOP OCT 136757 OCT 62417 NOP OCT 136757 OCT 63017 NOP OCT 136757 OCT 63417 NOP OCT 136757 OCT 64017 NOP OCT 136757 OCT 64417 NOP OCT 136757 OCT 65017 NOP OCT 136757 OCT 65417 NOP OCT 136757 OCT 66017 NOP OCT 136757 OCT 66417 NOP OCT 136757 OCT 67017 NOP OCT 136757 OCT 67417 NOP OCT 136757 OCT 70017 NOP OCT 136757 OCT 70417 NOP OCT 136757 OCT 71017 NOP OCT 136757 OCT 71417 NOP OCT 136757 OCT 72017 NOP OCT 136757 OCT 72417 NOP OCT 136757 OCT 73017 NOP OCT 136757 OCT 73417 NOP OCT 136757 OCT 74017 NOP OCT 136757 OCT 74417 NOP OCT 136757 OCT 75017 NOP OCT 136757 OCT 75417 NOP OCT 136757 OCT 76017 NOP OCT 136757 MX175 OCT 76757 IMM CMLO A 377 OCT 176557 MX176 OCT 77353 IMMM CMHI B 377 OCT 176517 MX177 OCT 77417 RTN OCT 136776 MX200 OCT 100000 LOOP IOFF INC TAB TAB OCT 0 MX201 OCT 100777 ALL ONES OCT 177777 MX202 OCT 101017 RTN OCT 136776 OCT 101417 NOP OCT 136757 OCT 102017 NOP OCT 136757 OCT 102417 NOP OCT 136757 OCT 103017 NOP OCT 136757 OCT 103417 NOP OCT 136757 OCT 104017 NOP OCT 136757 OCT 104417 NOP OCT 136757 OCT 105017 NOP OCT 136757 OCT 105417 NOP OCT 136757 OCT 106017 NOP OCT 136757 OCT 106417 NOP OCT 136757 OCT 107017 NOP OCT 136757 OCT 107417 NOP OCT 136757 OCT 110017 NOP OCT 136757 OCT 110417 NOP OCT 136757 OCT 111017 NOP OCT 136757 OCT 111417 NOP OCT 136757 OCT 112017 NOP OCT 136757 OCT 112417 NOP OCT 136757 OCT 113017 NOP OCT 136757 OCT 113417 NOP OCT 136757 OCT 114017 NOP OCT 136757 OCT 114417 NOP OCT 136757 OCT 115017 NOP OCT 136757 OCT 115417 NOP OCT 136757 OCT 116017 NOP OCT 136757 OCT 116417 NOP OCT 136757 OCT 117017 NOP OCT 136757 OCT 117417 NOP OCT 136757 OCT 120017 NOP OCT 136757 OCT 120417 NOP OCT 136757 OCT 121017 NOP OCT 136757 OCT 121417 NOP OCT 136757 OCT 122017 NOP OCT 136757 OCT 122417 NOP OCT 136757 OCT 123017 NOP OCT 136757 OCT 123417 NOP OCT 136757 OCT 124017 NOP OCT 136757 OCT 124417 NOP OCT 136757 OCT 125017 NOP OCT 136757 OCT 125417 NOP OC\T 136757 OCT 126017 NOP OCT 136757 OCT 126417 NOP OCT 136757 OCT 127017 NOP OCT 136757 OCT 127417 NOP OCT 136757 OCT 130017 NOP OCT 136757 OCT 130417 NOP OCT 136757 OCT 131017 NOP OCT 136757 OCT 131417 NOP OCT 136757 OCT 132017 NOP OCT 136757 OCT 132417 NOP OCT 136757 OCT 133017 NOP OCT 136757 OCT 133417 NOP OCT 136757 OCT 134017 NOP OCT 136757 OCT 134417 NOP OCT 136757 OCT 135017 NOP OCT 136757 OCT 135417 NOP OCT 136757 OCT 136017 NOP OCT 136757 MX275 OCT 136757 IMM CMLO A 377 OCT 176557 MX276 OCT 137353 IMM CMHI B 377 OCT 176517 MX277 OCT 137417 RTN OCT 136776 MX300 OCT 140355 GOOF IMM CMLO A 125 OCT 52557 MX301 OCT 140752 IMM CMHI B 252 OCT 124517 MX302 OCT 141017 L A OCT 126157 MX303 OCT 141417 IOR A B OCT 24557 MX304 OCT 142017 IOR B B OCT 24517 MX305 OCT 142400 RTN INC P P OCT 75736 OCT 143017 NOP OCT 136757 OCT 143417 NOP OCT 136757 OCT 144017 NOP OCT 136757 OCT 144417 NOP OCT 136757 OCT 145017 NOP OCT 136757 OCT 145417 NOP OCT 136757 OCT 146017 NOP OCT 136757 OCT 146417 NOP OCT 136757 OCT 147017 NOP OCT 136757 OCT 147417 NOP OCT 136757 OCT 150017 NOP OCT 136757 OCT 150417 NOP OCT 136757 OCT 151017 NOP OCT 136757 OCT 151417 NOP OCT 136757 OCT 152017 NOP OCT 136757 OCT 152417 NOP OCT 136757 OCT 153017 NOP Lp OCT 136757 OCT 153417 NOP OCT 136757 OCT 154017 NOP OCT 136757 OCT 154417 NOP OCT 136757 OCT 155017 NOP OCT 136757 OCT 155417 NOP OCT 136757 OCT 156017 NOP OCT 136757 OCT 156417 NOP OCT 136757 OCT 157017 NOP OCT 136757 OCT 157417 NOP OCT 136757 OCT 160017 NOP OCT 136757 OCT 160417 NOP OCT 136757 OCT 161017 NOP OCT 136757 OCT 161417 NOP OCT 136757 OCT 162017 NOP OCT 136757 OCT 162417 NOP OCT 136757 OCT 163017 NOP OCT 136757 OCT 163417 NOP OCT 136757 OCT 164017 NOP OCT 136757 OCT 164417 NOP OCT 136757 OCT 165017 NOP OCT 136757 OCT 165417 NOP OCT 136757 OCT 166017 NOP OCT 136757 OCT 166417 NOP OCT 136757 OCT 167017 NOP OCT 136757 OCT 167417 NOP OCT 136757 OCT 170017 NOP OCT 136757 MX361 OCT 170757 IMM CMLO A 377 OCT 176557 MX362 OCT 171353 IMM CMHI B 377 OCT 176517 MX363 OCT 171017 RTN OCT 136776 MX364 OCT 172347 TSTM3 IMM LOW CNTR 0 OCT 176157 MX365 OCT 172415 AND A A OCT 126557 MX366 OCT 173017 S1 ADR OCT 121017 MX367 OCT 173417 L S1 OCT 140157 MX370 OCT 174015 AND B B OCT 124517 MX371 OCT 174744 IMM LOW CNTR 0 OCT 257 MX372 OCT 175344 IMM ICNT LO S1 1 OCT 3023 MX373 OCT 175417 L S1 OCT 140157 MX374 OCT 176003 SUB CNTR OCT 12757 MX375 OCT 176720 JMP CNDX TBZ OUT OCT 77771 MX376 OCT 177355 IMM CMLO A 125 {640 OCT 52557 MX377 OCT 177400 OUT RTN INC P P OCT 75736 PEND DEF * PROGRAM ENDING ADDRESS END E6   12908-18007 1437 S 0122 07WRITABLE CTRL STORE DIAG 12908 / 12978             H0101 9f ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 M035Ԡ65MMMϠA3 Ԡ655 M036Ԡ353MMMHɠB3 Ԡ65 M03ԠN Ԡ366 M00Ԡ00SMN Ԡ366 Ԡ0NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ300NP Ԡ365 Ԡ30NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ330NP Ԡ365 Ԡ33NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ350NP Ԡ365 Ԡ35NP Ԡ365 Ԡ360NP Ԡ365 M05Ԡ365MMMϠA3 Ԡ655 M06Ԡ3353MMMHɠB3 Ԡ65 M0Ԡ3N Ԡ366 Mر00Ԡ035SMMMMϠA3 Ԡ655 Mر0Ԡ000NNàPP Ԡ536 Ԡ0NP Ԡ365 Ԡ0NP Ԡ365 Ԡc NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ500NP Ԡ365 Ԡ50NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ530NP Ԡ365 Ԡ53NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ550NP Ԡ365 Ԡ55NP Ԡ365 Ԡ560NP Ԡ365 Ԡ56NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ600NP Ԡ365 Ԡ60NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ630NP Ԡ365 Ԡ63NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ650NP Ԡ365 Ԡ65NP Ԡ365 Ԡ660NP Ԡ365 Ԡ66NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ3G65 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 Mر5Ԡ65MMMϠA3 Ԡ655 Mر6Ԡ353MMMHɠB3 Ԡ65 MرԠN Ԡ366 Mز00Ԡ00000PƠNàABAB Ԡ0 Mز0Ԡ00A̠NS Ԡ Mز0Ԡ00N Ԡ366 Ԡ0NP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ030NP Ԡ365 Ԡ03NP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ050NP Ԡ365 Ԡ05NP Ԡ365 Ԡ060NP Ԡ365 Ԡ06NP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ00NP Ԡ365 Ԡ0NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ300NP Ԡ365 Ԡ30NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ330NP Ԡ365 Ԡ33NP Ԡ365 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ350NP Ԡ365 Ԡ35NP Ԡ365 Ԡ360NP Ԡ365 Mز5Ԡ365MMMϠA3 Ԡ655 Mز6Ԡ3353MMMHɠB3 Ԡ65 MزԠ3N Ԡ366 M300Ԡ0355GƠMMMϠA5 Ԡ555 M30Ԡ05MMMHɠB5 Ԡ5 M30Ԡ0̠A Ԡ65 M303ԠҠAB Ԡ55 M30Ԡ0ҠBB Ԡ5 M305Ԡ00NNàPP Ԡ536 Ԡ30NP Ԡ365 Ԡ3NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ50NP Ԡ365 Ԡ5KNP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ0NP Ԡ365 ԠNP Ԡ365 Ԡ500NP Ԡ365 Ԡ50NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ530NP Ԡ365 Ԡ53NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ550NP Ԡ365 Ԡ55NP Ԡ365 Ԡ560NP Ԡ365 Ԡ56NP Ԡ365 Ԡ50NP Ԡ365 Ԡ5NP Ԡ365 Ԡ600NP Ԡ365 Ԡ60NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ630NP Ԡ365 Ԡ63NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ650NP Ԡ365 Ԡ65NP Ԡ365 Ԡ660NP Ԡ365 Ԡ66NP Ԡ365 Ԡ60NP Ԡ365 Ԡ6NP Ԡ365 Ԡ00NP Ԡ365 M36Ԡ05MMMϠA3 Ԡ655 M36Ԡ353MMMHɠB3 Ԡ65 M363Ԡ0N Ԡ366 M36Ԡ3SM3MMנNҠ0 Ԡ65 M365Ԡ5ANDAA Ԡ655 M366Ԡ30SAD Ԡ0 M36$"Ԡ3̠S Ԡ05 M30Ԡ05ANDBB Ԡ5 M3ԠMMנNҠ0 Ԡ5 M3Ԡ53MMNԠϠS Ԡ303 M33Ԡ5̠S Ԡ05 M3Ԡ6003SUBN Ԡ5 M35Ԡ60MPNDؠBZU Ԡ M36Ԡ355MMMϠA5 Ԡ555 M3Ԡ00UԠNNàPP Ԡ536 PNDDƠPGAMNDNGADDSS ND KX$   12920-18001 1805 S 0122 MPX DATA DIAGNOSTIC             H0101 PASMB,A,B,L,C HED 12920 MULTIPLEXER DATA DIAGNOSTIC ORG 0 DSN 103110 26 OCTOBER 1977 REV. 1805 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SW REG BITS: 0-5 WITH SC. * 6-9,12-15 WITH PORT CHANNEL #. * 11 = 0 FOR 12920B, 1 FOR 12920A. * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER OPTIONS * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES * 10 = SUPPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = RESERVED * 0 * * * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * HED CONFIGURATOR LINKAGE TABLE A EQU 0  A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFGD GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 103110 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * IOIP DEF IOID SC INIT POINTER TSTP DEF TSTD POINT TO TESET TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 377 STANDARD TESTS STDB OCT 0 HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF CLE LDA DSN LDB HDMX JSB O2AS,I JSB MSGC,I OUTPUT IT DEF HDMS CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB ܬSWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LIA SW AND MBT9 OTA SW LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM CCA SET TEST NUMBER STA TSTN =-1 STA ZCFTT CLA STA ZTSTA CLEAR TEST RUN FLAG * ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * &d * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS CLA OTA SW CLEAR SW REG HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP B0.* CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 s0   12920-18002 1805 S 0122 MPX DATA DIAGNOSTIC             H0101 P CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ x ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TEtLL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 c DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * HED 12920 MULTIPLEXER DATA DIAGNOSTIC ORG 150B IOID EQU * DEF CH22 DEF CH23 DEF CH24 DEF CH25 DEF CH26 DEF CH27 DEF CH28 DEF CH29 DEF CH30 DEF CH31 DEF CH32 DEF CH33 DEF CH34 DEF CH35 DEF CH38 DEF CH39 DEF CH40 DEF CH41 DEF CH42 DEF CH43 DEF CH45 DEF CH46 DEF CH47 DEF CH48 DEF CH49 DEF CH50 DEF CH53 DEF CH54 DEF CH55 DEF CH56 DEF CH59 DEF CH70 DEF CH71 DEF CH73 DEF CH74 DEF CH76 DEF DCH DEC -1 SPC 1 FRST DEF *+1 DEF CH60 DEF CH61 DEF CH62 DEF CH63 DEF CH64 DEF CH65 DEF CH66 DEF CH67 DEF CH68 DEF CH69 DEF CH72 DEF CH75 LST DEF *-1 SPC 1 TSTD EQU * DEF TST.0 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEC -1 SKP ASCZZ ASC 1,00 POINT BSS 1 CWS BSS 1 CWR BSS 1 DS BSS 1 DR BSS 1 PORT BSS 1 PORT1 BSS 1 PORT2 BSS 1 CNT0 BSS 1 CNT1 BSS 1 CNT2 BSS 1 CVT1 BSS 1 CVT2 BSS 1 CVT3 BSS 1 SAVEA BSS 1 TEMP STORAGE OF A-REG SAVEB BSS 1 TEMP STORAGE OF B-REG SAVE BSS 1 SAVE1 BSS 1 TEMP5 BSS 1 SPC 1 MM1 DEC -1 MM2 DEC -2 MM5 DEC -5 MM8 DEC -8 MM10 DEC -10 MM100 DEC -100 M300 DEC -300 M1000 DEC -1000 D2 DEC 2 D7 DEC 7 D10 DEC 10 D16 DEC 16 D100 DEC 100 D1000 DEC 1000 BT4 OCT 20 SPC 1 OUT DEF OUTI MCLR DEF MCLRI SFS DEF SFSI RCH DEF RCHI STCH DEF STCHI CFGCH DEF CFGD d CONFIGURE DEVICE CHANNEL CRL OCT 2 CRI DEF *+1 OCT 6400 CARRIAGE RETURN ERRA DEF ERRAI E27 ERRB DEF ERRBI E31 ERRC DEF ERRCI E43 ERRD DEF ERRDI E26 ERRE DEF ERREI E30 ERRF DEF ERRFI E32 ERRG DEF ERRGI E42 ERRH DEF ERRHI E45 M30A DEF M30+8 M31A DEF M31+9 M32A DEF M32+13 M32B DEF M32+20 M33A DEF M33+14 M33B DEF M33+21 M34A DEF M34+26 M34AA DEF M34+25 M34B DEF M34+18 M34BB DEF M34+17 M34C DEF M34+14 M46A DEF M46+19 M47A DEF M47+21 M50A DEF M50+11 SPC 1 * CH+1 INITIAL VALUE OF UPPER SC IO BSS 1 LOWER SELECT CODE BSS 1 UPPER SELECT CODE SRP NOP MPXCH NOP DCH NOP SPC 1 TIMC DEC 500 500 MS DELAY HDMX DEF HDM1+3 MBT9 OCT 176777 A17 OCT 17 A0077 OCT 77 B377 OCT 377 BIT8 OCT 400 B3407 OCT 003407 BT11 OCT 4000 BT14 OCT 40000 PT1 OCT 43600 PT4 OCT 43400 DAT1 OCT 43725 NULL OCT 43000 NULL BKNON OCT 43777 BREAK BIT NON-ZERO TEST DAT2 OCT 47777 B7600 OCT 76000 BT15 OCT 100000 B1760 OCT 176000 P7700 OCT 177700 PTYDA BSS 1 TEST DATA PTYIN BSS 1 SAVE DATA MASKC OCT 177 MASK FOR 7 BITS BT7 OCT 200 BIT 7 PYCNT BSS 1 COUNTER PYTYP BSS 1 PARITY TYPE B0TB6 OCT 177 MD8 DEC -8 SPC 1 * CONTROL WORD TABLE CONTAINS THE LOWER 11 BITS * OF THE CONTROL WORD. THE CHARACTER SIZE, DATA * FOR SEND AND RECEIVE AND BAUD RATE. THE WORD * IN THE TABLE IS ADDED TO THE UPPER 5 BITS IN * THE ROUTINE S/R-T. IE.: CWSX, CWRX, DSX, DRX. SPC 1 CWTB DEF *+1 CONTROL WORD TABLE I OCT 1405 9 BIT CHARACTER,2 STOPS 2400 BAUD OCT 3525 S/R DATA 525 = 101010101 II OCT 1405 9 BIT CHARACTER,2 STOPS 2400 BAUD OCT 3252 S/R DATA 252 = 010101010 COMP P-2 III OCT 1277 8 BIT CHARACTER,2 STOPS 75 BAUD OCT 3525 S/R DATA 125 = 01010101 IV OCT 1277 J 8 BIT CHARACTER,2 STOPS 75 BAUD OCT 3652 S/R DATA 252 = 10101010 COMP P-2 V OCT 0602 8 BIT CHARACTER,1 STOP 110 BAUD OCT 3525 S/R DATA 125 = 01010101 VI OCT 0027 7 BIT CHARACTER,1 STOP 600 BAUD OCT 3652 S/R DATA 52 = 0101010 VII OCT 3457 6 BIT CHARACTER,1 STOP 300 BAUD OCT 3725 S/R DATA 25 = 010101 VIII OCT 2137 3 BIT CHARACTER,1 STOP 150 BAUD OCT 3772 S/R DATA 2 = O/O SPC 1 CWRX OCT 120000 CWSX OCT 160000 DRX OCT 174000 DSX OCT 040000 SPC 1 NOP CW ENA PTY ECH DIAG CHAR BAUD CW1 OCT 141277 SEND 0 0 - 0 8 75 CW2 OCT 121277 REC 1 - 0 0 8 75 CW3 OCT 111277 REC 0 - 1 0 8 75 CW4 OCT 145277 SEND 0 0 - 1 8 75 CW5 OCT 105277 REC 0 - 0 1 8 75 CW6 OCT 151277 SEND 0 1 - 0 8 75 CW7 OCT 121005 REC 1 - 0 0 8 2400 CW8 OCT 151005 SEND 0 1 - 0 8 2400 SPC 1 MSK0 OCT 3777 SPC 1 CFGD JSB CFGG CONFIGURE PORT NUMBERS CF.1 LIA 1 INPUT SW-REG INA ADD ONE TO SC AND A0077 MASK OFF SC STA IO+1 SET UP UPPER SELECT CODE LDB FRST STB SRP L.2 LDB SRP,I LDA B,I AND P7700 IOR IO+1 STA B,I CPB LST,I FINISHED UPPER SELECT CODE ? JMP CFIG,I CONTINUE THE CONFIGURATION ISZ SRP NO JMP L.2 LOOP SKP * THIS ROUTINE CONFIGURES THE DEVICE PORTS TO BE * TESTED. THE TWO PORT NUMBERS ARE ENTERRED INTO * BIT 12-15 AND 6-9. THE NUMBERS ENTERRED MUST BE IN * OCTAL AND THE TEST CABLE MUST BE CONNECTED TO THE * SAME PORTS SPECIFIED. THE OPERATOR MAY OBTAIN * SEVEN (7) ADDITIONAL TEST CONNECTORS AND CONNECT * THEM AS SHOWN IN FIGURE 4-2 IN THE MOD AND SET * SWITCH REGISTER BIT 11 DURING THE CONFIGURATION * OkF THE DEVICE CHANNEL. THE PROGRAM WILL TEST ALL * 16 PORTS IN SEQUENCE (CH0 - CH15). SPC 1 CFGG NOP RETURN ADDRESS CFSW LIA 1 READ SWITCH REG ALF,ALF RAL,RAL STA MPXCH STORE PORT NUMBERS JSB STCH,I SET CH NUM IN PORT 1&2 LDA PORT1 TEST PORT1 LDB PORT2 AND PORT2 CPA B SHOULD NOT BE EQUAL RSS JMP CFGG,I RETURN SZA,RSS CHECK FOR AUTO JMP CAUTO ALL 16 HLT 72B BOTH PORT NOS = SAME VALUE JMP CFSW TRY AGAIN CAUTO STA PORT1 INITIALIZE PORT NOS INA STA PORT2 LDA MPXCH SET AUTO BIT IOR BT4 STA MPXCH JMP CFGG,I RETURN SPC 1 SPC 1 CK21A NOP RETURN ADDRESS LDA USSC GET OPTIONS AND BT11 SZA JMP CK21A,I RETURN ISZ CK21A UPDATE RETURN JMP CK21A,I RETURN - 12921B SPC 1 HED BASIC I/O TESTS TST.0 NOP RETURN ADDRESS CLA CH60 OTA CH+1 INITIALIZE UPPER SLEECT CODE JSB TTST0,I DO BASIC I/O TEST JMP TST.0,I RETURN SPC 1 TTST0 DEF TST00 POINTER TO BASIC I/O TEST SKP HED INITIALIZATION PROGRAM - 12921 ASYNC MPX HED SEND/RECEIVE TEST * THE SEND/RECEIVE TEST SELECTS A CONTROL WORD FROM * THE CONTROL WORD TABLE (CWTB) AND SETS UP THE * S/R CHANNELS TO BE TESTED. THE CW IN THE TABLE * TESTS 5 DIFFERENT CHARACTER SIZES AND 6 * DIFFERENT BAUD RATES. THESE COMBITATIONS OF * TESTS CHECKS THE ABITILY TO SET AND RESET EACH * BIT WITHIN THE CHARACTER COUNTER AND BAUD RATE * COUNTER. SPC 1 ORG ZCEND TST01 EQU * SRTST NOP RETURN ADDRESS LDA MM8 STA CNT2 JSB STCH,I SET UP PORT NUMBERS SRT.4 LDA MM2 STA CNT1 SPC 1 SRT.2 JSB MCLR,I MASTER CLEAR MPX LDA CWTB GET ADDRESS OF CONTROL WORD TABLE STA POINT a STORE ADDRESS IN POINT LDA MM8 NUMBER OF CW TO BE TESTED STA CNT0 SR LDA POINT,I GET CHARTER SIZE AND BAUD RATE ADA CWSX ADD TO SEND CONTROL WORD STA CWS SEND CONTROL WORD XOR CWSX DELETE SEND CONTROL WORD AND ADA CWRX ADD RECEIVE CONTROL WORD STA CWR RECEIVE CONTROL WORD ISZ POINT INCREMENT POINT ADDRESS IN TABLE LDA POINT,I GET SEND DATA ADA DSX ADD SEND DATA CONTROL WORD STA DS OUTPUT SEND DATA XOR DSX ADA DRX STA DR ISZ POINT INCREMENT POINT ADDRESS IN TABLE SPC 1 LDA CWS LOAD SEND CONTROL WORD LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CWR LOAD RECEIVE CONTROL WORD LDB PORT2 RECEIVE PORT NUMBER CH22 CLF CH CLEAR MPX I/O FLAG JSB OUT,I CONFIGURE RECEIVE PORT LDA DS DATA WORD TO SEND LDB PORT1 PORT NUMBER TO SEND ON JSB OUT,I SEND DATA JSB SFS,I CHECK SEND PORT FOR INTERRUPT JSB ERRD,I E030 SEND PORT XX DIDN'T INT CH61 LIA CH+1 READ STATUS SLA IS S/R BIT SET JMP CH23 CONTINUE JSB ERMS,I S/R BIT =0 SHOULD BE=1 DEF M35 CH23 LIA CH READ STATUS AND B7600 MASK OFF PORT NUMBER ALF,ALF POSITION PORT NUMBER RAR,RAR IN BIT O-4 CPA PORT1 COMPARE SEND PORT NUMBER RSS OK JSB ERRE,I E032 SEND PORT NO. IS XX S/B YY CH24 CLF CH ACKNOWLEDGE INTERRUPT FOR SEND CH JSB SFS,I JSB ERRA,I E031 REC CH XX DIDN'T INTERRUPT CH25 LIA CH READ DATA IOR B1760 MAKE PARITY AND PORT NUM ALL ONES CPA DR COMPARE RECEIVED DATA RSS OK JSB ERRF,I E034 REC DATA IS INCORRECT CH62 LIA CH+1 READ STATUS SLA,RSS IS S/R BIT 0 JMP CH26 640 CONTINUE JSB ERMS,I S/R BIT=1 SHOULD B 0 DEF M36 CH26 LIA CH READ STATUS AND B7600 MASK OFF PORT NUMBER ALF,ALF POSITION PORT NUMBER RAR,RAR IN BITS O-4 CPA PORT2 COMPARE RECEIVE PORT NUMBER RSS OK JSB ERRB,I E033 REC PORT NO. IS XX S/B YY CH27 CLF CH ACKNOWLEDGE RECEIVE INTERRUPT SPC 1 ISZ CNT0 IS TEST FINISHED ? JMP SR NO - CONTINUE TESTING JSB RCH,I YES - REVERSE PORT1 AND PORT2 ISZ CNT1 WHEN=0 BOTH PORT # HAVE BEEN TEST JMP SRT.2 REPEAT TEST WITH PORT # REVERSED LDA MPXCH CHECK FOR ALL 16 OR 2 CH ONLY AND BT4 ISOLATE AUTO BIT SZA,RSS CHECK FOR AUTO JMP SRT.3 2 CHANNELS ONLY ISZ PORT1 ALL 16 PORTS ISZ PORT1 ADD TWO ISZ PORT2 TO EACH ISZ PORT2 PORT NUMBER ISZ CNT2 HAVE ALL 16 PORT BEEN TESTED ? JMP SRT.4 NO - CONTINUE TESTING CLA YES - ALL 16 CH HAVE BEEN TESTED STA PORT1 RESTORE INA PORT 1 AND PORT2 STA PORT2 TO THERE ORGINAL VALUE SRT.3 JMP SRTST,I RETURN HED BRK - BREAK TEST - 12921 ASYNC MPX * BREAK TEST (BRK) SPC 1 * THIS TEST SENDS AND RECEIVES A NON-ZERO TEST * CHARACTER ON A PORT. AND CHECKS THE BREAK * BIT (BIT 2) OF THE STATUS WORD AFTER EACH SEND * AND RECEIVE TO SEE THAT IT IS SET TO ZERO. * THEN THE TEST SENDS AND RECEIVES A BREAK ;6   12920-18003 1805 S 0122 MPX DATA DIAGNOSTIC             H0101 P* CHARACTER (ALL ZEROS) ON A PORT AND CHECKS * THE BREAK BIT OF THE STATUS WORD AFTER EACH * SEND AND RECEIVE TO SEE THAT IT IS SET TO ONE. SPC 1 TST02 EQU * BKTST NOP RETURN ADDRESS BRK JSB MCLR,I MASTER CLEAR MPX JSB STCH,I SET UP PORT NUMBERS CH28 CLF CH CLEAR I/O FLAG LDA CW1 SEND CONTROL WORD LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW2 RECEIVE CONTROL WORD LDB PORT2 RECEIVE PORT NUMBER JSB OUT,I CONFIGURE RECEIVE PORT JSB CK21A CHECK FOR 12921A JMP BKC03 CONTINUE LDA BKNON CHARACTER LDB PORT1 SEND PORT NO. JSB OUT,I SEND CHARACTER JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH71 CLF CH LDA NULL NULL CHARACTER LDB PORT1 SEND PORT NO. JSB OUT,I SEND CHARACTER LDA D2 WAIT 2 MS JSB TMRR,I CH72 LIA CH+1 READ STATUS RAR,RAR SLA,RSS CHECK BREAK BIT JMP BKC01 CONTINUE JSB ERMS,I BREAK BIT SET - REPORT ERROR DEF M37 BKC01 JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH73 CLF CH ACKNOWLEDGE RECEIVE INTERRUPT BKC03 LDA BKNON NON-ZERO CHAR FOR BREAK TEST LDB PORT1 SEND PORT NUMBER JSB OUT,I SEND NON-ZERO CHARATER JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH29 CLF CH ACKNOWLEDGE RECEIVE INTERRUPT CH63 LIA CH+1 READ STATUS RAR,RAR POSITION BREAK BIT SLA,RSS IS BREAK BIT = 0 JMP BKC02 CONTINUE JSB ERMS,I BREAK BIT IS SET - REPORT ERROR DEF M40 BKC02 LDA CW1 SEND CONTROL WORD LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW2 RECEIVE CONTROL WORD LDB PORT2 REVEIVE PORT NUMBER JSB OUT,I CONFIGURE RECEIVE PORT LDA BT14 ALL ZERO'S FOR BREAK  LDB PORT1 SEND PORT NUMBER JSB OUT,I SEND ALL ZERO'S JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH31 CLF CH ACKNOWLEDGE RECEIVE INTERRUPT CH64 LIA CH+1 READ STATUS RAR,RAR POSITION BREAK BIT SLA IS BREAK BIT = 1 JMP BKC04 CONTINUE JSB ERMS,I BREAD BIT SHOULD BE SET DEF M41 BKC04 JMP BKTST,I RETURN HED PYT - PARITY TEST - 12921 ASYNC MPX * PARITY TEST (PYT) SPC 1 * THE PARITY TEST SENDS AND RECEIVES ODD ASCII * PARITY. CHECKS BIT 15 OF THE RECEIVE WORD * FOR A ONE. THEN SENDS AND RECEIVES EVEN ASCII * PARITY. CHECKS BIT 15 OF THE RECEIVE WORD * FOR A ZERO. THIS TEST EXAMINS BIT 7 (RAW PARITY) OF * THE RECEIVED DATA. SPC 1 ORG 4000B TST03 EQU * PYTST NOP RETURN ADDRESS JSB MCLR,I MASTER CLEAR MPX JSB STCH,I SET UP PORT NO. CH30 CLF CH CLEAR I/O FLAG LDA CW8 CONTROL WORD PTY=1 LDB PORT1 SEND PORT NO. JSB OUT,I CONFIGURE SEND PORT LDA CW7 RECEIVE CONTROL WORD LDB PORT2 REC PORT NO. JSB OUT,I CONFIGURE REC PORT CLA PTYC1 STA PTYDA INITIALIZE DATA PATTERN LDA PT1 GENERATE OUTPUT DATA ADA PTYDA LDB PORT1 SEND PORT NO. JSB OUT,I TRANSMIT DATA JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH34 LIA CH READ RECEIVED DATA STA PTYIN SAVE DATA SSA CHECK PARITY FLAG JMP PYC01 CONTINUE JSB ERMS,I PARITY FLAG SHOULD BE SET DEF M42 PYC01 LDA PTYDA GET TEST DATA CLB JSB PTYGN GENERATE PARITY AND BT7 MASK OFF DATA STA B LDA PTYIN RESTORE INPUT DATA AND BT7 ISOLATE RAW PARITY CPA B CHECK BIT 7 RSS JMP CH33 CONTINUE JSB ERMS,I PARITY ERROR DEF M43 CH33 CLF CH v ACKNOWLEDGE REC IINTERRUPT LDA PTYDA UPDATE PATTERN INA AND MASKC SZA JMP PTYC1 CONTINUE PTYC2 STA PTYDA SAVE TEST DATA LDA PT4 EVEN PARITY ADA PTYDA LDB PORT1 SEND PORT NO. JSB OUT,I TRANSMIT DATA JSB SFS,I WAIT FOR RECEIVE INTERRUPT NOP CH48 LIA CH READ RECEIVE DATA STA PTYIN SAVE DATA SSA,RSS CHECK BIT 15 JMP PYC02 CONTINUE JSB ERMS,I PARITY BIT SET ERROR DEF M44 PYC02 LDA PTYDA GET TEST DATA CCB JSB PTYGN GENERATE PARITY AND BT7 STA B LDA PTYIN RESTORE DATA AND BT7 ISOLATE RAW PARITY CPA B CHECK BIT 7 RSS JMP CH49 CONTINUE JSB ERMS,I PARITY ERROR DEF M45 CH49 CLF CH LDA PTYDA UPDATE PATTERN INA AND MASKC SZA JMP PTYC2 CONTINUE JMP PYTST,I RETURN SPC 1 * PARITY GENERATOR ROUTINE * A REG = DATA * B REG = EVEN/ ODD PARITY * OUTPUT A REG = DATA + PARITY(BIT 7) PTYGN NOP RETURN ADDRESS STB PYTYP SAVE PARITY TYPE LDB MD8 STB PYCNT CCB AND B0TB6 MASK PYC03 SLA CMB RAR ISZ PYCNT JMP PYC03 ALF,ALF SZB IOR BT7 LDB PYTYP GIVE CORRECT SSB,RSS PARITY TO XOR BT7 JMP PTYGN,I RETURN HED DIAG - D IAGNOSE - 12921 ASYNC MPX * DIAGNOSE PORT (DIAG) SPC 1 * THIS ROUTINE TEST THE ABILITY TO ROUTE SEND * DATA TO THE AUXILIARY PORTS 16 - 20 WHEN * BIT 11 (DIAGNOSE BIT) OF SEND CONTROL WORD * IS SET TO A ONE. THEN TESTS THE ABILITY TO * ROUTE RECEIVED DATA TO THE AUXILIARY PORTS * 16 - 20 WHEN BIT 11 OF THE RECEIVE CONTROL WORD * IS SET TO A ONE. SPC 1 TST04 EQU * DITST NOP RETURN ADDRESS JSB MCLR,I MASTER\y CLEAR MPX JSB STCH,I SET UP PORT NUMBERS LDA MM5 NUMBER OF TIMES TO REPEAT STA CNT0 STORE NUMBER LDA PORT2 STORE THE VALUE STA SAVE1 OF PORT2 LDA D16 SET UP PORT2 FOR STA PORT2 AUX PORT 16 DIAX LDA CW4 SEND CONTROL WORD ENA=0 DIAG=1 LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW2 REC CONTROL WORD ENA=1 DIAG=0 LDB PORT2 AUX PORT XX REC NUMBER JSB OUT,I CONFIGURE AUX RECEIVE PORT LDA DAT1 DATA TO BE TRANSMITTED LDB PORT1 SEND PORT NUMBER CH38 CLF CH CLEAR FLAG FOR INTERRUPT JSB OUT,I TRANSMIT DATA JSB SFS,I WAIT FOR AUX PORT TO INTERRUPT JSB ERRA,I E031 NO INTERRUPT ON PORT XX CH39 LIA CH READ DATA AND B7600 MASK OFF PORT NUMBER ALF,ALF POSITION PORT NUMBER RAR,RAR IN BITS 4-0 CPA PORT2 CHECK AUX PORT NUMBER RSS OK JSB ERRB,I E033 REC PORT NO. IS XX S/B YY CH41 LIA CH READ DATA AND B377 MASK OFF DATA STA B STORE REC DATA IN B-REG LDA DAT1 DATA TRANSMITTED AND B377 MASK OFF DATA CPA B COMPARE DATA RSS OK JSB ERRG,I E046 SEND DATA NOT ON AUX CH XX. CH40 CLF CH ACKNOWLEDGE INTERRUPT LDA CW1 SEND CONTROL WORD ENA=0 DIAG=0 LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW5 REC CONTROL WORD ENA=0 DIAG=1 LDB SAVE1 ORGINAL REC PORT NUMBER JSB OUT,I CONFIGURE REC PORT LDA DAT1 DATA TO BE TRANSMITTED LDB PORT1 SEND PORT NUMBER JSB OUT,I TRANSMIT DATA JSB SFS,I WAIT FOR INTERRUPT JSB ERRA,I E27. REC CH XX DID NOT INTERRUPT CH42 LIA CH READ DATA AND B377 MASK OFF DATA STA B STORE REC DATA IN B-REG LDA DAGBT1 DATA TRANSMITTED AND B377 MASK OFF DATA CPA B COMPARE DATA RSS OK JSB ERRC,I E047 REC DATA NOT ON AUX CHXX. LDA BT15 LDB PORT2 JSB OUT,I ISZ PORT2 ADD 1 TO AUX CH NUMBER ISZ CNT0 JMP DIAX LDA SAVE1 RESTORE ORGINAL VALUE STA PORT2 OF PORT2 JMP DITST,I RETURN HED ECHO - E CHO TEST - 12921 ASYNC MPX * ECHO TEST * THIS ROUTINE SENDS A CHARACTER ON PORT XX * WITH ENABLE =0, PARITY =0, DIAGNOSE =0. THE * CHARACTER IS RECEIVED ON PORT YY WITH * ENA =0, ECHO =1, DIAG =0. THE CHARACTER IS * ECHO BACK TO RECEIVE PORT XX WITH THE * ENA =1, ECHO =0, DIAG =O. THE DATA RECEIVED * ON PORT XX IS COMPARED WITH THE DATA * TRANSMITTED. SPC 1 TST05 EQU * ECTST NOP RETURN ADDRESS JSB MCLR,I MASTER CLEAR MPX JSB STCH,I SET UP PORT NUMBERS CH32 CLF CH CLEAR MPX I/O FLAG LDA CW1 SEND CW ENA=0 DIAG=0 LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW3 REC CW ENA=0 ECHO=1 DIAG=0 LDB PORT2 RECEIVE PORT NUMBER JSB OUT,I CONFIGURE RECEIVE PORT LDA CW2 REC CW ENA=1 ECHO=0 DIAG=0 LDB PORT1 REC PORT NUMBER JSB OUT,I CONFIGURE REC PORT LDA DAT1 DATA TO TRANSMIT LDB PORT1 SEND PORT NUMBER JSB OUT,I SEND DATA JSB SFS,I WAIT FOR REC ECHO DATA TO INT. NOP CH43 LIA CH READ DATA AND B377 MASK OFF DATA RECEIVED STA B STORE DATA INTO B-REG LDA DAT1 GET DATA TRANSMITTED AND B377 MASK OFF DATA CPA B COMPARE DATA RSS OK JSB ERRH,I E050 NO ECHO ON PORT XX JMP ECTST,I RETURN HED SYNC - SYNC TEST - 12921 ASYNC MPX * SYNC TEST OUTPUTS A CHARACTER WITH ALL DATA * BITS SET TO A ONE AND BIT 11 (SYNC BIT) SET * TO A ONE. THE ENABLE BIT IS SET IN THE RECEIVE * PARAMETER, NO INTERRUPT SHOULD OCCUR. SPC 1 TST06 EQU * SYTST NOP RETURN ADDRESS JSB MCLR,I MASTER CLEAR MPX JSB STCH,I SET UP PORT NUMBERS CH35 CLF CH CLEAR MPX I/O FLAG LDA CW1 SEND CW ENA=0 LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW2 REC CW ENA=1 ECHO=0 DIAG=0 LDB PORT2 REC PORT NUMBER JSB OUT,I CONFIGURE REC PORT LDA DAT2 DATA= ALL ONES + SYNC=1 LDB PORT1 SEND PORT JSB OUT,I TRANSMIT DATA JSB SFS,I TEST FOR INTERRUPT JMP SYC01 CONTINUE JSB ERMS,I SYNC TEST FAILED DEF M51 SYC01 JSB MCLR,I MASTER CLEAR MPX JSB CK21A CHECK FOR 12921A JMP SYTST,I RETURN JSB STCH,I SET UP PORT NO. CH70 CLF CH CLEAR MPX I/O FLAG LDA CW6 SEND CW ENA=0 PTY=1 LDB PORT1 SEND PORT NO. JSB OUT,I CONFIGURE SEND PORT LDA CW2 REC CW ENA=1 ECHO=0 DIAG=0 LDB PORT2 REC PORT NO. JSB OUT,I CONFIGURE REC PORT LDA DAT2 DATA=ALL ONES + SYNC=1 LDB PORT1 SEND PORT JSB OUT,I TRANSMIT DATA JSB SFS,I TEST FOR INTERRUPT JMP SYC02 CONTINUE JSB ERMS,I SYNC TEST FAILED - SHOULD'NT INT DEF M52 SYC02 JMP SYTST,I RETURN HED LOST - LOST-CHARACTER - 12921 ASYNC MPX * LOST-CHARACTER TEST - THIS TEST SENDS TWO * CHARACTERS TO A RECEIVE PORT WITHOUT * ACKNOWLEDGING THE INTERRUPTS. THIS CONDITION * IS FLAGGED BY SETTING BIT 1 (LOST-CHAR) OF THE * STATUS WORD TO A ONE. SPC 1 TST07 EQU * LOTST NOP RETURN ADDRESS JSB MCLR,I MASTER CLEAR MPX JSB STCH,I SET UP PORT NUMBERS CH47 CLF CH CLEAR MPX I/O FLAG LDA CW1 SEND CW ENA=0 LDB PORT1 SEND PORT NUMBER JSB OUT,I CONFIGURE SEND PORT LDA CW2 REC CW ENA=1 LDB PORT2 REC PORT NUMBER JSB OUT,I CONFIGURE REC PORT LDA DAT1 SEND DATA LDB PORT1 SEND PORT NUMBER JSB OUT,I TRANSMIT DATA LDA TIMC DELAY JSB TMRR,I CALL TIMER CH68 LIA CH+1 READ STATUS RAR POSITION BIT 1 SLA OK IF ZERO JMP LOC01 ERROR LOST-CHAR SHOULD BE ZERO LDA DAT1 LOAD DATA LDB PORT1 SEND PORT NUMBER JSB OUT,I TRANSMIT DATA LDA TIMC DELAY 500 MS JSB TMRR,I CALL TIMER LDA DAT1 LDB PORT1 JSB OUT,I LDA TIMC DELAY 500 MS JSB TMRR,I CALL TIMER CH50 CLF CH LDA TIMC DELAY 500 MS JSB TMRR,I CALL TIMER CH69 LIA CH+1 READ STATUS RAR POSITION BIT 1 SLA LOST-CHAR SHOULD BE SET JMP CH54 CONTINUE LOC01 JSB ERMS,I CHARACTER LOST FAILED DEF M53 CH54 CLF CH ACKNOWLEDGE NOP RECEIVED CH55 CLF CH INTERRUPT JMP LOTST,I RETURN HED COMMON SUBRTNS - 12921 ASYNC MPX SPC 1 STCHI NOP SET UP PORT 1 & 2 LDA MPXCH GET PORT NUMBERS AND BT4 ISOLATE AUTO MODE BIT SZA TEST FOR 2 CH'S OR ALL 16? JMP ALL16 YES, ALL 16 LDA MPXCH GET PORT NUMBERS AND A17 NO, 2 ONLY STA PORT1 SAVE PORT 1 LDA MPXCH GET SECOND PORT NUMBER ALF,ALF POSITION RAL,RAL AND A17 MASK OFF BITS 3-0 STA PORT2 STORE SECOND CH NO JMP STCHI,I RETURN ALL16 CLA CONFIGURE PORT NUMBER FOR ALL 16 STA PORT1 FIRST PORT NUMBER INA STA PORT2 SECOND PORT NUMBER LDA MPXCH SET AUTO BIT IOR BT4 STA MPXCH SAVE JMP STCHI,I FRETURN SPC 1 SPC 1 ERRAI NOP E031 REC CH XX DID INTRUPT LDA PORT2 GET REC 8CH NUMBER JSB DECIN CONVER TO DECIMAL LDA CVT2 AND STORE NUMBER STA M31A,I IN ZZ OF MESSAGE LDA PORT2 GET RECV PORT NO JSB ERMS,I REPORT ERROR DEF M31 JMP ERRAI,I SPC 1 ERRBI NOP E033 REC PORT # WAS XX S/B YY CH53 LIA CH GET ACTUAL PORT NUMBER AND B7600 MASK OFF PORT NUMBER ALF,ALF POSITION PORT NUMBER RAR,RAR IN BITS 0-4 STA SAVEA STORE NUMBER ACTUAL JSB DECIN CONVERT PORT NUMBER LDA CVT2 TO DECIMAL AND STA M33A,I STORE IN MESSAGE XX LDA PORT2 EXPECTED PORT NO. JSB DECIN CONVER NUMBER TO LDA CVT2 DECIMAL AND STA M33B,I STORE IN MESSAGE YY LDA SAVEA ACTUAL LDB PORT2 EXPECTED JSB ERMS,I REPORT ERROR DEF M33 JMP ERRBI,I RETURN SPC 1 ERRCI NOP LDA PORT2 AUX REC PORT JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M47A,I IN XX OF MESSAGE LDA PORT2 AUX REC PORT JSB ERMS,I REPORT ERROR DEF M47 JMP ERRCI,I RETURN SPC 1 ERRDI NOP LDA PORT1 SEND PORT NUMBER JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M30A,I IN XX OF MESSAGE LDA PORT1 SEND PORT NO. JSB ERMS,I REPORT ERROR DEF M30 JMP ERRDI,I RETURN SPC 1 ERREI NOP E032 SEND PORT # IS XX S/B YY STA SAVEA STORE ACTUAL PORT NO. JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M32A,I IN XX OF MESSAGE LDA PORT1 EXPECTED PORT NO. JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M32B,I IN YY OF MESSAGE LDA SAVEA ACTUAL LDB PORT1 JSB ERMS,I REPORT ERROR DEF M32 JMP ERREI,I SPC 1 ERRFI NOP  STA SAVEA STORE RECEIVED DATA LDA MSK0 GET MASK AND DS MASK OFF SEND DATA STA SAVEB STORE DATA JSB CNVRT CONVERT LDA CVT3 AND STORE STA M34A,I IN XX AND LDA CVT2 YY OF STA M34AA,I MESSAGE LDA MSK0 GET MASK AND SAVEA MASK OFF REC DATA STA SAVEA STORE DATA JSB CNVRT CONVERT LDA CVT3 AND STORE STA M34B,I IN XX AND LDA CVT2 YY OF STA M34BB,I MESSAGE LDA PORT2 REC PORT NUMBER STA SAVE1 STORE NUMBER JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M34C,I IN XX OF MESSAGE LDA SAVEA LDB SAVEB JSB ERMS,I REPORT ERROR DEF M34 LDB BT14 CHECK FOR NO ERROR HALTS JSB SWRT,I JMP ERRFI,I RETURN - NO ERROR HALTS LDB 112B CHECK FOR TELEPRINTER PRESENT LDA PORT2 GET PORT NO SZB,RSS OCT 106034 SECOND HALT FOR DISPLAY OF PORT NO JMP ERRFI,I RETURN SPC 1 ERRGI NOP LDA PORT2 AUX REC PORT JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M46A,I IN XX OF MESSAGE LDA PORT2 AUX REC PORT JSB ERMS,I REPORT ERROR DEF M46 JMP ERRGI,I RETURN SPC 1 ERRHI NOP LDA PORT1 REC PORT NUMBER JSB DECIN CONVERT TO DECIMAL LDA CVT2 AND STORE NUMBER STA M50A,I IN XX OF MESSAGE LDA PORT1 RECV PORT NO. JSB ERMS,I REPORT ERROR DEF M50 JMP ERRHI,I RETURN SPC 1 SPC 1 * THIS SR REVERSE THE TWO PORT NUMBERS TO ALLOW * EACH OF THE TWO SEND AND RECEIVE PORTS * CONNECTED TO THE TEST CABLE TO BE TESTED IN * BOTH DIRECTION. SPC 1 RCHI NOP REVERSE PORT NUMBER LDA PORT1 INTER PORTGE LDB PORT2 PORT1 -V STA PORT2 WITH STB PORT1 PORT2 JMP RCHI,I FINISHED SPC 1 OUTI NOP OUTPUT PARAMETERS OR DATA STB PORT TO PORT 'PORT' CLB STB SAVEB TEMP STORAGE CH66 LIB CH+1 GET SEEK BIT SSB,RSS CHECK SEEK BIT JMP CH45 SEEK = 0 ISZ SAVEB SEEK = 1 JMP CH66 LOOP JSB ERMS,I SEEK BIT =1 SHOULD BE 0 DEF M54 CH45 OTA CH LDA PORT ALF,ALF POSITION PORT NUMBER RAL,RAL IN BITS 14 - 11 CH67 OTA CH+1 PORT TO UPPER SELECT CODE CH46 STC CH SEND JMP OUTI,I RETURN SPC 1 * DECIN * CONVERTS DECIMAL INTEGERS TO ASCII * A=VALUE ON INPUT * CNVT1 = FIRST TWO DIGITS ON EXIT * CNVT2 = SECOND TWO DIGITS ON EXIT SPC 1 DECIN NOP CCB B = -1 DLP1 ADA M1000 ASSUME INTEGER LESS THAN 10000 INB COUNT UP THOUSANDS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP1 ADA D1000 RESTORE BLF,BLF ADB MM1 DLP2 ADA MM100 INB COUNT UP HUNDREDS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP2 ADA D100 RESTORE ADB ASCZZ STB CVT1 CCB DLP3 ADA MM10 INB COUNT UP TENS PART SSA,RSS SKIP WHEN B REG IS CORRECT JMP DLP3 ADA D10 RESTORE BLF,BLF IOR B IOR ASCZZ STA CVT2 JMP DECIN,I SPC 1 * THE CNVRT ROUTINE CONVERTS THE SINGLE WORD IN THE A * REG. TO THREE ASCII WORDS (OCTAL) IN CVT1, CVT2, AND CVT3. CNVRT NOP STA TEMP5 SAVE WORD LDB A WORD TO B ALSO ALF AND D7 SSB IOR BIT8 ONE FOR LEFT OCTAL DIGIT IOR ASCZZ STA CVT1 LDA TEMP5 GET WORD BACK ALF,ALF RAL,RAL AND A0077 LEAVE TWO DIGITS LDB A SAVE FOR A WHILE ALF,RAL LEFTMOST TdO POSITION IOR B OR THE TWO TOGETHER AND B3407 IOR ASCZZ STA CVT2 LDA TEMP5 GET WORD BACK AND A0077 LEAVE LAST TWO DIGITS LDB A ALF,RAL IOR B AND B3407 IOR ASCZZ STA CVT3 SAVE RIGHTMOST DIGITS JMP CNVRT,I RETURN SPC 1 MCLRI NOP CLEAR 256 BIT MEMORY JSB CK21A CHEK FOR 12921A JMP MCLRA CONTINUE - 12921A CLC 0,C ZAP CLB CLEAR B-REG CH65 LIA CH+1 CHECK SEEK BIT SSA,RSS SEEK = 1 ? JMP MCL1 = 0 INB,SZB = 1 JMP CH65 LOOP JSB ERMS,I REPORT ERROR SEEK AFTER CLC 0 DEF M55 JMP MCLRI,I EXIT MCL1 SZB JMP CH59 CONTINUE JSB ERMS,I NO SEEK AFTER CLC 0 DEF M56 CH59 CLF CH CLEAR I/O FL JMP MCLRI,I FINISHED MCLRA CLA CH74 OTA CH CLEAR INTERFACE CH75 OTA CH+1 CLC 0,C DO 65K CLC 0'S CLC 0,C ZAP CLC 0,C ZAP CLC 0,C ZAP ISZ A LOOP 65K JMP CH75+1 TIMES CH76 CLF CH CLEAR I/O FL JMP MCLRI,I FINISHED - RETURN SPC 1 SFSI NOP TEST CHANNEL FLAG LDA M300 EXIT STA SAVE P+1 SFS.1 ISZ SAVE IF RSS FLAG JMP SFSI,I DID'NT SET CH56 SFS CH IS FLAG SET ? JMP *+3 NO ISZ SFSI FLAG IS SET JMP SFSI,I RETURN P+2, FLAG IS SET CLA,INA DELAY FOR JSB TMRR,I 1 MS OF TIME JMP SFS.1 LOOP HED MESSAGES *** MESSAGES *** SPC 1 SUP M30 ASC 8,E030 SEND PORT ASC 11,XX DID NOT INTERRUPT/ M31 ASC 9,E031 RECEIVE PORT ASC 11,XX DID NOT INTERRUPT/ M32 ASC 13,E032 SEND PORT NUMBER IS ASC 9,XX SHOULD BE YY/ M33 ASC 14,E033 RECEIVE PORT NUMBER IS ASC 9,XX SHOULD BE -HFBYY/ M34 ASC 15,E034 DATA RECEIVED ON PORT XX ASC 13, IS XXXX SHOULD BE YYYY/ M35 ASC 14,E035 S-R BIT SHOULD BE SET/ M36 ASC 15,E036 S-R BIT SHOULD BE RESET/ M37 ASC 17,E037 BREAK BIT SHOULD NOT BE SET/ M40 ASC 17,E040 BREAK BIT SHOULD NOT BE SET/ M41 ASC 15,E041 BREAK BIT SHOULD BE SET/ M42 ASC 15,E042 PARITY BIT SHOULD BE SET/ M43 ASC 14,E043 RAW PARITY BIT 7 ERROR/ M44 ASC 10,E044 PARITY BIT SET/ M45 ASC 14,E045 RAW PARITY BIT 7 ERROR/ M46 ASC 16,E046 SEND DATA NOT ON AUXILIARY ASC 5,PORT XX/ M47 ASC 18,E047 RECEIVED DATA NOT ON AUXILIARY ASC 5,PORT XX/ M50 ASC 13,E050 NO ECHO ON PORT XX/ M51 ASC 11,E051 SYNC TEST FAILED/ M52 ASC 15,E052 SYNC TEST FAILED (PTY=1)/ M53 ASC 14,E053 CHARACTER LOST FAILED/ M54 ASC 12,E054 SEEK BIT IS A ZERO ASC 8,SHOULD BE A ONE/ M55 ASC 17,E055 SEEK STAYED SET AFTER CLC 0/ M56 ASC 18,E056 SEEK FAILED TO SET AFTER CLC 0/ HDMS OCT 6412 ASC 11,ASYNC MULTIPLEXER DATA ASC 9, BOARD DIAGNOSTIC HDM1 ASC 7, DSN XXXXXX// FWAA EQU * FIRST WORD OF AVAILABLE MEMORY END *aH  12920-18004 1444 S 0122 01DIAGNOSTIC 12920A/B  ASYNC MUXR CNTRL BD             H0101  ASMBAB̬ HDASYNàMUPҠN̠BADDAGNS G0 SUP GNA̠PANGPDU A.ADDAGNSàNGUAҠANDSԠԠUP. B.ADDAGNSàMANPGAM .ADADDSS00B. D.ADSHG.HSԠDŠANDPNS .PSSUNANDAԠҠHAԠ00. .ADSHGS ƠSԠ: 5HAԠAԠNDƠAHS SUPSSҠHAS 3PNASԠS PNDAGNS (SUPPSSA̠PAҠNVNN SUPSSҠMSSAGS 0SUPSSNN-ҠMSSAGS 9GϠϠUSҠN̠SN AԠNDƠPSNԠS SUPPSSPAҠNVNNSS DAGNSàPNS 0 N:SANDADUNSHUDBŠHS.G.0 USҠN̠̠ASKҠA3BԠD. AHBԠ̠S G.PSSUN. H.SAԠ-ADADDSS000B .NGUŠƠSNGɯϠNAŠ-ADADDSS00B GNA̠MPUҠHAS 00ؠŠҠH000Ϡ06 060ؠŠҠH00Ϡ6 030ؠŠҠH00Ϡ6 00ؠŠҠH300Ϡ36 N̠PGAMHAԠMSSAGS 00NDƠDAG(APASSUNԩ 006NDƠSԠ(ASԠ 005USҠSNUS 00SԠDŠNPUԠMP 003USҠSԠDŠ 00USҠPԠNUMBҠ 00SVD 000SVD 060AP̠HA HDPGAMGANZANHA'" NGUAҠ00B NKAGŠABŠ UVŠ30B NKAGŠ NSANS50B AND SAGŠ 000B UVŠN̠ ƠUSD BASàɯϠSS(SԠ00 ZND ABŠƠSԠPNS ABŠƠɯϠNSҠPNS MANDAGNSS(-3 HDNGUAҠNKAGŠAB AU0/AGSҠN BUBGSҠN SנUSHGSҠN NPU0NUPԠHANN̠N G00B MPGɠGϠϠNGUANSN ANBSSASԠNPUԠ(PHϠADҩ SPBSSSנUPUԠ(Sԩ APBSSASԠUPUԠ(DUMPҠPUNH SNBSSSנNPUԠ(KYBAD AMDƠAASԠDƠAVB.MMY AMBSSASԠDƠAVB.MMY BSSNԠUSD(MAGAPũ MàBSSM̠SàMŠUԠUN BSSSԠDSҠɯ PϠBSSMPUҠYPůPNS USSàԠ0USҠADYPŠANDSԠD MMϠBSSMMYSZŠANDYP SҠBSSNNA̠SHGS MҠBSSM̠SàM SàBSSNGUAҠSHKP ɲASBSSNGҠϠASɠNVSN ϲASBSSA̠ϠASɠNVSN ASNBSSASɠNVSN DSN̠BSSDAGNSàSA̠NUMB MҠBSSMA N̠NKAGŠANDDAANS GDƠZNƠNGUANSN MSGàDƠZMSGàMSSAGŠHNϠHA MSGHDƠZMSGHMSSAGŠHHA MSDƠZMSҠMSSAG SԠDƠZSԠSHGSҠHKUN SNԠ0UNԠSԠNUMB ԠDƠZԠUNϠN̠PGAM NPSVD HDUVŠN G000B ZSؠàNPàUNɯϠSYSM SBMSGìɠDϠ DƠZ DAHDMPGԠNDUYMSSAG SA+ SBMSGìɠUԠPUԠ NP AAҠPASS SAZàUN DBZS9HKҠUSҠSN SBSԬ MPZUSҠ'SUSSH ZNUSҠDASDAGԠSANDADSԠUN DBSDB MPZ ZUSҠDAZSNAVŠPVUSUN DBZSNB HԠ5BAԠҠUSҠNPU NP NP NP ZàSAZUNASAV SBZUNBUS SAZSNANPU SBZSNBPGAM DBZS9HKƠS9SDN SBSԬ MPZUSҠNϠGϠANDA ASԠSԠNUMB SASN- A SAZSAAҠSԠUNAG SKP Z̠DAZUNASŠAG. DBZUNBSŠBG. AA̠A BS ASԠB SAZUNASAVŠPSNS SBZUNB SZSNMVŠSԠUPN NP ẔDASN ADASPGԠ'S DAAɠADDSS PAZ.MSԠNDƠS MPZ̠YS DBZUNB SSBSSSHUDԠBŠUN? MPZ̠N SAZSAYS-SAVŠSԠADDSS SBZHNAZŠAP̠HAS SBZSAɠGϠDϠS ZԠDASNDSPAYSԠNUMBҠƠHAD DBZSױ5HKҠHAԠAԠNDƠS SBSԬ HԠ6BYSAԠҠPA DBZS9HKҠAB SBSԬ MPZUSҠYS DBZSױ3HKҠPNUN SBSԬ MPẔYS-P MPZ̠NNU Z̠DAZSAHKƠANYSSŠUN SZASS? MPZNUSҠNϠSϠPKUPSANDADUN DAZàUPDAŠPASSUN NA SAZ DBZPSAGԠPASSUN ADBZ.ADDSS SBϲASɠNVԠ SBMSGìɠA̠PNԠUN ZPSADƠZPS DBZSױHKҠPNDAG. SBSԬ MP+3IYS DAZ HԠBNϠAԠANDDSPAYPASSUN DAZSNASŠGNA DBZSNBPGAM MPZàDϠԠA̠AGAN SKP MSSAGŠUPUԠHUԠHA ZMSGàNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK MPZMSGìɠUNϠA MSSAGŠUPUԠHHA ZMSGHNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK DAZHԠGԠHAԠD SA+PUԠԠNPA DAZSAVASŠAGS NPHAԠҠDSPAY MPZMSGHɠUNϠA ҠMSSAGŠHHA ZMSNPNY SBZMSGUPUԠMSSAG Ԡ000SHHK A DBZSױHKSҠBԠϠSUPPSS SBSԬɠHA SA+3PUԠHAԠNPA DAZSAVASŠAB DBZSAVB ZHԠNPAԠҠPA MPZMSɠUNϠA SKP UPUԠMSSAG ZMSGNP SAZSAVASAVŠAANDBGSS SBZSAVB DBZMSGɠGԠSHGSҠB DAZMSG ADAZ.MDMNԠUNADDSS SAZMSG SBSԬɠHKϠSUPPSSMSSAG MPZMSG0YS DAZMSGɠHKƠ DAA DAAɠƠS AƬA ANDZ. PAZA. SBZNHKϠUPUԠSԠNUMB DAZMSGɠNϠVŠMA DBAɠADDSS A SBMҬ ZMSG0DAZMSGɠNVԠHAԠD DBAɠMASɠSNG A SBASN SAZNAϠSAVŠSU ANDZ.300DD DBZHHAԠD PAZ.00 DBZH6 PAZ.00 LDBZH3 PAZ.300 DBZH DAZNAϠGԠHAԠNUMB ANDZ. ҠB SAZHԠSAVŠ SZZMSGɠADUSԠUNPNS SZZMSG SZZMSG SZZMSG DAZSAVASŠAANDBGSS DBZSAVB MPZMSG SKP ZNNP DASNGԠSԠNUMB PAZԠSԠHŠSAMŠN? MPZNɠYSSKPUPU SAZԠNϠ-HNUPDAŠ SBZNAϠNVԠ SAZSNPUԠԠNSNG ADϠA SBSP AŠNDAŠSAԠƠMA DBZS SBMҬ MPZNɠUN ZSAVANP ZSAVBNP ZàNP ZSANP ZSNANP ZSNBNP ZUNANP ZUNBNP ZBMPNP Z.Ԡ Z.Ԡ Z.0Ԡ0 Z.60Ԡ60 Z.Ԡ Z.Ԡ Z.MDà- Z.MDà- ZD00Dà-00 ZMԠ00 ZSױ5Ԡ00000 ZSױԠ0000 ZSױ3Ԡ0000 ZSױԠ0000 ZSԠ0000 ZS9Ԡ000 Z.00Ԡ00 Z.00Ԡ00 Z.300Ԡ300 ZHԠ0000 ZH6Ԡ06000 ZH3Ԡ03000 ZHԠ0000 ZԠDà- ZSƠDƠ+ ASà3S ZSNASàد ZƠASà ZPSàASà6PASSد ZA.ŠԠ05 HDGNA̠UNS ZNAϠNP SAZADSAVŠNUMB ANDZ.NVԠS ҠZ.60NUMB SABSAVŠ DAZADG AҬAҠSND AҠNUMB ANDZ.NV ҠZ.60 AƬAƠMVŠϠUPPҠHA ҠBADD MPZNAϬɠANDUN SHGSҠHK ZSԠNP SAZNAϠSAVŠAGS ASנGԠSHG. ANDBMASKUԠB SZASSSԠUP? SZZSԠN DAZNAϠSŠAGS BSנԠBSHGS MPZSԬɠUNϠA NAZŠAP̠HAS ZHNP DAZSHGԠSANGAP̠HA DBZ.GԠSԠAP̠AN ZSH̠SABɠPUԠԠNPA PBZ.AMɠNSHD MPZHɠYS NBNԠADDSS MPZSH ZSHԠ060 SKP PUԠSBNSUNNAP ZɠNP DBZSBɠGԠNSUN SBZSìɠPUԠԠNAP DAZɬɠGԠAN SA3BSAVŠԠҠSBNSUN SZZɠADUSԠUN MPZɬɠUNϠA ZSBɠSB3BɠSBNSUN NAZŠSԠDŠɯϠNSUNS ZSàNP SAZSàSAVŠSԠD SBZADSAVŠABŠADDSS Z̠DBZADɠGԠADDSSƠAN PBZ.MSԠHŠMNA MPZSìɠYSUNϠA DABɠNϠ-GԠNNS ANDZMMASKƠDSԠD ҠZSàADDNNנSԠD SABɠSŠ SZZADMVŠϠNԠADDSS MPZ̠DϠ ZSàNP ZADNP SKP NGUANSN ZNƠàNPàUNɯϠSYSM ASנGԠSԠDŠANDPNS SAUSSàSAVŠHM ANDZ.MNAŠPNS DBA MBNBHKHAԠSà ADBZ. SSB? MP+3KGϠN HԠ3BN MPZNƠYAGAN DBPNAZŠSԠɯ SBZSàNSUNS HԠBAנPAҠϠHANGŠS MPZSؠGϠϠàN̠SN  HDBASàɯϠSS HU0B S00U NP DAUSSàGԠ̠AN ANDZ. SBZBϠDϠBASàɯ MPS00 ZBϠNP àNPàUNƠA̠ɯ DBZBDNAZŠBASàɯ SBZSàNSUNS NUPԠAGHK ZBϱSƠNP ƠNP SàNP SS MP+3 000SBMSɠ000Ơ0-Sà0 DƠZB00 SSNP MP+3 00SBMSɠ00Ơ0-SS0 DƠZB0 SƠNP SàNP MP+ ƠNPUNƠNS 00SBMSɠ00SƠ0-Sà0 DƠZB0 SSNP MP+3 ƠNPUNƠNUPS MPZBϲ ƠNPUNƠNS 003SBMSɠ003SƠ0-SS0 DƠZB03 MPZBϲ ZB00ASà000Ơ0-Sà0ү ZB0ASà00Ơ0-SS0ү ZB0ASà00SƠ0-Sà0ү ZB03ASà003SƠ0-SS0ү SKP ADAGHK ZBϲU ZBSSƠH ZBSƠH ZBS3SàH SS MP+3 005SBMSɠ005ƠH-SàH DƠZB05 ZBSSSH MP+3 006SBMSɠ006ƠH-SSH DƠZB06 ZBS5SƠH ZBS6SàH MP+3 00SBMSɠ00SƠH-SàH DƠZB0 ZBSSSH SS MPZB3 00SBMSɠ00SƠH-SSH DƠZBű0 MPZB3 ZB05ASà3005ƠH-SàHү ZB06ASà3006ƠH-SSHү ZB0ASà300SƠH-SàHү ZBű0ASà300SƠH-SSHү SKP NUPԠN ZB3SBZɠSԠSBNSUN DƠZB3 ZBS3SƠHSԠHŠAG ZBS3SàHSԠHŠ640N SƠNPUNɯϠSYSMNHN ƠNPUNɯϠSYSM NPGVŠԠAHANŠɠNUP NP ZBS33ƠHSԠHAG MPZBϴ ZB0ASà600Ơ0DDNԠNHBԠNԯ ZB3ŠNP ƠNPUNƠNS 00SBMSɠ00 DƠZB0 SKP SԠDŠSNS ZBϴDBZ.0SAԠHSԠADDSS ZB0DAUSSàGԠSԠD ANDZ. 6   12920-18005 1444 S 0122 02DIAGNOSTIC 12920A/B  ASYNC MUXR CNTRL BD             H0101  PBASԠHŠH? MPZ.+YS-SKPS DAZ.SƠSԠUP ANDZM ҠBSƠNSUN SAZ.SƠPUԠԠNPA DAZ.ƠSԠUP ANDZM ҠBƠNSUN SAZ.ƠPUԠԠNN ZBSƠHAҠHANN̠AG Z.SƠSƠHUŠSƠHNSUN ZBSSàHSԠHANN̠AG MPZB Z.ƠƠHAҠSԠAG PBZ.SSԠNSHD? MPZB5YS NBN MPZB0DϠNԠHANN ZBűASà0SƠؠSԠADAG ZBSBZBMPSAVŠNUMB DABNVԠHҠMSSAG SBZNA SAZBű+5 DAZBMPVŠNUMB 0SBMSɠ0 DƠZBű SKP HKNUPԠHD ZB5SBZ DƠZB5 ASԠUP SAZB5AGS SAZB5ҠS SAZBMP ZBS5SàHUNN ZBS5SƠHAD SƠNPANDNUPS Sà SƠ à ƠNϠNUP MP+ɠSHUDU DƠ+H SB+ɠ DƠ+ ZB5NP SZZBMPN.SHUDBŠH SZZBMP ƠNPUNɯϠSYSM DAZB5DDԠNUP? SZA MP+ 0SBMSɠ0NϠN DƠZBű MPZB6ABԠSԠƠSN DAZBMPHKҠԠNUP PAZ.? MP+3 06SBMSɠ06NԠUN DƠZBŲ6 ZBS53ƠHUNƠHAG MPZB6GϠϠNԠSN ZBD5DƠZB5- ZBD5ADƠZB5+ ZBűASà60NԠDUNGHDƠNSү ZBű3ASà0|e3SNDNԠUD ZBűASà060NϠNԯ ZBű5ASà05NԠNADDҠү ZBŲ6ASà306NԠUNү SKP ZB5NP ƠNPUNɯϠSYSM DAZBD5HKϠSŠƠA PAZB5NSUNMPD MP+3YS 0SBMSɠ0NԠDUNGHD DƠZBű DAZBD5AHKUNADDSS DBPϠƠ0 SSBADDN NA PAZB5 MPZB5A 05SBMSɠ05NԠNADDҠ DƠZBű5 MPZB6 ZB5ASBZɠSԠSNDNԠAP DƠZB5 SƠNPUNɯϠSYSMN MPZB5ɠNNUŠS ZB5NP ƠNPUNɯϠSYSM 03SBMSɠ03SNDNԠUD DƠZBű3 SKP àHANDà0 ZB6SBZɠSԠSBNSUN DƠZB6 ZBS6SàHSԠHN ZBS6SƠHSԠHAG SƠNPUNNNUPS ZBS63àHAҠHN NPGVŠԠAHAN NP ƠNPUNNS ZB60SBZɠSԠSBNSUN DƠZB6 ZBS6ƠHAҠHAG ZBS65SàHSԠHN ZBS66SƠHSԠHAG SƠNPUNNNS àNPAҠɯϠSYSM NPGVŠԠAHAN NP ƠNPUNƠNS MPZBϷ ZB6NP ƠNPUNƠNS 06SBMSɠ06àH DƠZBű6 MPZB60 ZB6NP ƠNPUNƠNS 0SBMSɠ0à0 DƠZBű MPZBϷ ZBű6ASà906àHү ZBűASà90à0ү SKP NA̠NNA̠PSԠS ZBϷDBZSHKϠSUPPSS SBSԬɠ? MPH05YS-SKPPSԠS H0SBMSGìɠ̠PA DƠZBMPSSPS ZBSƠHAҠHAG SƠNPUNNNS SBZɠSԠAP̠SBNSUN DƠZBɷ0 HԠBAԠҠPA ANASԠUPAGSҠSS SSNPHKNPAG ANԠSԠSϠAҠAG A̠MVŠϠNԠAG ƠNPUNƠNPS ZBSSSHHKHANN̠AG NANԠSԠSϠAG A̠MVŠϠNԠAG B0HKɯϠBUSS SZBSHUDBŠZ NANԠSϠAG A̠MVŠϠNԠAG SƠNPHKN̠NAD NPGVŠԠAHAN NP ƠNPUNƠNPS SKP ZB0SASSHKҠS MP+3 0SBMSɠ0DDNԠAҠN DƠZBŲ A SASS MP+3 03SBMSɠ03ɯϠNSNԠA DƠZBŲ3 A SASS MP+3 00SBMSɠ00AGNԠS DƠZBŲ0 A SASS MP+3 0SBMSɠ0DDNԠDABŠNS DƠZBŲ H05SBMSGìɠ̠PA DƠZBM5BASàɯϠSMP MPZBϬɠUNϠA ZBɷ0NPN̠AD ƠNPUNƠNPS NA MPZB0 ZBŲ0ASà00PS(ԩDDNԠSԠAG ZBŲASà90PS(NԩDDNԠDSABŠNS ZBŲASà00PS(ԩDDNԠAҠN̯ ZBŲ3ASà03PS(ԩDDNԠAҠ-ϠNS ZBMASàH0PSSPSԠ(ԦNԩUN ZBM5ASà0H05B-ϠMP SKP ZBDDƠ+ DƠZBS DƠZBS Dŋ5ƠZBS3 DƠZBS DƠZBS5 DƠZBS6 DƠZBS DƠZBS3 DƠZBS3 DƠZBS33 DƠZBS DƠZBS DƠZBS5 DƠZBS5 DƠZBS53 DƠZBS6 DƠZBS6 DƠZBS63 DƠZBS6 DƠZBS65 DƠZBS66 DƠZBS DƠZBS Dà- ZNDU HDASYNàMUPҠN̠BADDAG NGUAҠNKAGŠAB G00B MPGDGϠGԠSԠAPŠANDPNS G6B DSNԠ030DAGNSàSA̠NUMB G0B PDƠD SPDƠSD HDMPDƠHDMSPNҠϠHADҠMSSAG SDAԠSANDADSS SDBԠ0 G50B SKP DU DƠH3 DƠH DƠH5 DƠH6 DƠH DƠH DƠH9 DƠH30 DƠH3 DƠH3 DƠH33 DƠH3 DƠH35 DƠH36 DƠH3 DƠH3 DƠH39 DƠH0 DƠH DƠH DƠH DƠH5 DƠH6 DƠH DƠH DƠH9 DƠH50 DƠH5 DƠH5 DƠH53 DƠH56 DƠDH Dà- SDU DƠS00 DƠS0 DƠS0 DƠS03 DƠS0 DƠS05 Dà- SPà ASZZASà00 N0BSS NԱBSS NԲBSS נBSS PԠBSS PBBSS PԱBSS PԲBSS VԱBSS VԲBSS V3BSS SAVABSSMPSAGŠƠA-G SAVBBSSMPSAGŠƠB-G MP5BSS SPà BԴԠ0 MMDà- MMDà- MMDà- MM0Dà-0 MM5Dà-=5 MMDà- MM00Dà-00 M000Dà-000 DDà D0Dà0 D00Dà00 D000Dà000 SPà SHɠDƠSH MADƠM+ M30ADƠM30+3 M30BDƠM30+0 M3ADƠM3+3 M3BDƠM3+0 M3ADƠM3+0 M3BDƠM3+5 M3àDƠM3+ M3DDƠM3+3 M3ŠDƠM3+ M3ƠDƠM3+3 M3GDƠM3+ M33ADƠM33+ M33BDƠM33+0 M0ADƠM0+ M0BDƠM0+30 SPà NPNP MPHNP DHNP SPà A0Ԡ0 AԠ A00Ԡ BԷԠ00 BԸԠ00 B9Ԡ000 BԱ0Ԡ000 B30Ԡ0030 BԱԠ000 UNԱ5Ԡ036000 BԱ5Ԡ00000 P00Ԡ00 ײԠ0000 3Ԡ00300 ״Ԡ0060 5Ԡ0060 6Ԡ00360 ׷Ԡ00305 ׸Ԡ003 9Ԡ003 ABPBSS ABDƠ+ Ԡ003 Ԡ00 Ԡ00300 Ԡ0000 Ԡ0035 Ԡ00 Ԡ0035 Ԡ0005 Ԡ003 Ԡ Ԡ003 Ԡ Ԡ0033 Ԡ00 Ԡ0030 Ԡ00 Ԡ00 Ԡ05 Ԡ00 Ԡ06 Ԡ0003 Ԡ0000 Ԡ0003 Ԡ0000 HDMPؠHANN̠NGUAN9MPؠN HSUNŠNGUSHŠDVŠHANNSϠB SD.HŠϠHANN̠NUMBSAŠNDN BS6-9AND-5.HŠNUMBSNDMUSԠBŠN A̠ANDHŠSԠABŠMUSԠBŠNNDϠH SAMŠHANNSSPD.HŠPAҠMAYBAN SVN(ADDNA̠SԠNNSANDS SHGSҠBԠDUNGHŠNGUAN ƠHŠDVŠHANN.HŠPGAM̠SԠA 6HANNSNSUNŠ(H0-H5. SPà GDNP SנA AƬA A̬A SAMPHSŠHANN̠NUMBS SBSHɬɠSԠUPPԠNUMBSP DAPԱSԠPԱ DBPԲANDPԲ PABSHUDNԠBŠUA SS MPG SZASS MPAU HHԠB MPSנNҠNנHANN̠NUMB SPà SPà AUϠSAPԱ ADABԱ0 SAPԲ DAMPHSԠAUϠ-A̠6 ҠBԴ SAMPH MPG SPà SPà 0GU GH05 SBS.0 NP G0G SPà S.0NPUNADDSS DBS׸ SBSԬ SS SBPSԠUŠPSԠS SBMSGì DƠZBM5 MPS.0 S׸Ԡ000 HDAԠ-ADDSSGSҠSԠ9ASYNàMPؠN̠DAG AԠ-ADDSSGSҠS SPà HŠADDSSGSҠSԠSNDSANADDSS ϠHŠNAŠBADHNADSBAK HŠADDSSҠVAN.HSHK SMADŠҠA̠6ADDSSS.ASϠH ADDSSGSҠSSԠϠZϠANDHN NMNDHUGHA̠6ADDSSSBY UNGANSUNS.AҠAH AHŠADDSSSVD. SPà S0U AԠNP A SASAVBP DA3GԠ AԱSAנSŠנHPԠNUM H35AHSNDנϠBAD H36AHADPԠADDSS ANDUNԱ5MASKƠPԠNUM SASAVASAVŠҠMSSAG PASAVBMPAŠPԠNUM SSHADDҠK SBB030PԠADDҠSؠSBY DAנGԠנHDPԠNUM ANDUNԱ5MASKƠPԠNUM PAUNԱ5ASԠPԠNUM? MPAԲYS ADABԱ0ADDϠPԠNUM ANDUNԱ5MASKƠAY SASAVBSŠPԠNUMҠPDP Ҡ3ADDנϠPԠNUM MPAԱPҠNԠP SPà AԲAS SASAVBP H3AHSNDPԠNUMϠBD H3AHADP8*($ԠADD ANDUNԱ5MASKƠPԠNUM SASAVASŠҠMSSAG PASAVBMPAŠPԠNUM SSK SBà03PԠADDҠSؠSBY DASAVBGԠDPԠNUM PAUNԱ5ASԠPԠNUM? MPA3N ADABԱ0ADDϠPԠNUM ANDUNԱ5MASKƠAY SASAVBSŠNנPԠNUM MPH3P A3MPAԬ HDSԠ-9ASYNàMPؠN̠DAG SԠ-MMANDSAUSS SPà HSPGAMSNDSMMANDDSϠHŠMMAND GS.HŠMMANDGSҠUPUSA NNDϠHŠűANŠDVS.HŠS ABŠUSHŠSGNASϠHŠAN VS.HŠNŠVҠNPUSAŠUD HUGHHŠMUPҠNϠHŠBɠBUS. HŠNPUԠSAUSSHKDAGANSԠH PDSAUS. SPà S0U SԠNP SBSHSԠUPPԠNUM SBAҠAҠMPؠN DAMMNUMBҠ SANԲPASҠA̱6 SԷDAABSԠANƠנABŠAND SAABPSŠNABŠPN DAMM SANԱN̠DNAB S3DAPԱGԠSԠPԠNUM SAPԠSŠPԠNUMҠMSSAG SPà DA3SԠMMANDSANDSAUS ҠPԱ H9AHZ DA3N ҠPԲBH H30AHP DAABPɠGԠN̠D ҠPԱSNDHŠN̠D H5AHϠH DAABPɠSD ҠPԲP H6AHNUMBS m*   12920-18006 1444 S 0122 03DIAGNOSTIC 12920A/B  ASYNC MUXR CNTRL BD             H0101  SZABPMVŠABŠϠPDDAA DAPԠSԠPԠADDSS HAHUPUԠADDSSϠBAD DAABPɠGԠPDDAAMAB ҠPԠADDPԠNUMϠPDDAA SASAVASAVŠҠMSSAG DBP00 NBSZBNŠANSM MP-NŠV HBHADP SBSAVBSAVŠҠMSSAG PBAMPAŠAUA̠HPD SSDAAK SBD3SAUSNPԠؠASؠSBY DAPԠNSHDH PAPԲSNDP? MPSԲNԠDNAB DAPԲSNDP SAPԠSAVŠNDPԠNUMϠBŠSD MPHHKSNDPԠNUM SԲSZNԱNҠABŠUN SS MPSԴנABŠMPD SZABPNԠSNDN̠D MPS3YŠSԠҠNԠN̠D SԴDAMPHA̱6PԠҠPԠNY? ANDBԴMASKҠAU SZASSƠHNA̠6 MPSԬɠUN SZNԲA̠6MPD? SS MPSԬɠUN SBA̱6SԠPԠNUMUPҠNԠPA MPSԷPNS HDMMANDGSҠADDSSNGSԠ9ASYNàMPؠN A-MMANDGSҠADDSSNGS SPà HSPGAMHKSҠPPҠADDSSNG ϠHŠMMANDGSSANDHKSҠAN ADDSSBNGMAPPDϠMŠHNNŠADDSS AԠAM. SPà S03U AԠNP ASBSHSԠPԠNUMBS SBAҠAҠMPؠN DAMM-NUMBҠ SAN0PASҠA̱6 A5DAPԲSԠUP SAPBVSNGPԠNUM DAPԱGԠSԠPԠNUM ASAPԠSŠPԠNUM ҠײADDPDDAAϠPԠNUM SASAVASŠPDDAA DAPԠG /ԠPԠNUM SASAVBNAZ Ҡ״ADDN̠D ASAנSŠN̠D DAMM5UPUԠ SANԱ5P DAנGԠN̠PԠNUM H3AHSND DAPԠSԠàP H3AHNUMNϠBAD H33BHADDAA PBSAVAMPAŠHPDDAA MPADAAK SBŠ033PNPԠؠHANGSPԠY DA3ƠPԠASAD ҠPԠS H3AHϠZ ADAנGԠDN̠D ANDUNԱ5MASKƠPԠNUM AADABԱ0ADDϠPԠNUM ANDUNԱ5MASKƠPԠ-NHBԠAY PAPBNҠƠBH MPAPԠNUMUA SASAVBSŠNנPԠNUM DAנGԠנHDPԠNUM AND6AԠDPԠNUM ҠSAVBADDNנPԠNUM SAנSŠ SZNԱDAABNUPUԠϠA̠5P MPH3NϠP DAנGԠDN̠D ANDBԷMASKƠBԠ SZAƠN MPA9SNDPԠNUMMPD DA5GԠNנ ҠSAVBADDPԠNϠϠ MPAYŠSԠHNנ A9SBAҠAҠMPؠN DAPԠSԠ PAPԲSNDPԠNUM MPA3NDƠPA SAPBVSŠPԱ DAPԲANDPԲNS MPAYŠS A3DAMPHSԠҠA̠6P ANDBԴҠPԠMD SZASS MPAPԠMD SZN0A̠6MPD? SSN MPAYS SBA̱6SԠPԠNUMSUPҠNԠPA MPA5PNSԠHNԠPA ANP MPAԬ HDSԠ-9ASYNàMPؠN̠DAGNS SԠ-SAUSNهUPԠS SPà HSPGAMSԠHŠABYϠSԠHŠAGHN NPUԠSAUSDSNԠMPAŠH SDSAUS. SPà S0U SԠNP SBSHSԠUPGHNUM SBAҠAҠMPؠN H39ƠHAҠɯϠAG H0SSHABԠƠAGS SSK MP36-AGS DAPԲGԠPԠNUM Ҡ׷ADD HAHSNDנHPԠNUM NPDAY HSSHAGSBS SSSAUSADϠNUP MPH53- SBMS 3DƠM3 SBAҠAҠMPؠN H53ƠHAҠɯϠAG NPDAY HSàHNAGSBA SS MPSԱK SBMSɠPԠ 36DƠM36 SBAҠAҠMPؠN MPSԬ SԱDAPԲGԠPԠNUM Ҡ׸ADD H5AHSNDנHPԠNUM NPDAY H6SSHAGSBS MPSԲ SBAҠAҠMPؠN MPSԬ SԲSBMSɠSAUSADϠNUP 35DƠM35 SBAҠAҠMPؠN MPSԬ HDSANS-9ASYNàMPؠN̠DAGNS SANS SPà SANSԠSSUPAPԠHAN̠D SUHHAԠANNUPԠ̠UҠHNH ADDSSGSҠAHSHAԠPԠNUMB. HNHŠADDSSGSҠSSԠUA̠ϠH PԠNUMBҠMNUSN.HŠɯϠAGAD ANDHŠNAŠBADSSԠNHŠSANMD. HŠNԠNƠSGNA̠MHŠMPUҠSHUD NMNԠHŠADDSSGSҠϠHŠP HŠHŠNUPԠ̠U.HSSSH ɯϠAGANDSPSHŠADDSSGSҠM NMNNG.HŠAGSHKDҠAN ANDHŠADDSSSVD. SPà S05U SANNP SBSHSԠUPPԠNUM SBAҠAҠMPؠN DAPԲGԠPԠNUM Ҡ9ADDנϠAUSŠɯϠAGϠS HAHSND DAPԲGԠPԠAND ADAUNԱ5SUBAԠN ANDUNԱ5MASKƠAY HAHSNDPԠNUM- H9ƠHAҠɯϠAG ҠBԱ5UNN H50AHSANP NPDAY H5SSHɯϠAGSHUDS SSSANSԠAD MPH5 SBMS 3DƠM3 H5AH ANDUNԱ5MASKƠPԠNUM SASAVASAVŠPԠNUM PAPԲ SS SBƠ00NPàNPԠؠSBY SBAҠAҠMPؠN MPSAN HDMMNSUBNS9ASYNàMPؠN SPà SHNPSԠUPPԠ DAMPHGԠPԠNUMBS ANDBԴSAŠAUϠB SZASԠҠH'SҠA̠6? MPA̱6YSA̠6 DAMPH ANDANϬNY AƬA A̬A SAPԱSŠPԱN DAMPHGԠSNDPԠNUMB AƬAƠPSNSNDPԠN A̬A ANDAPPAŠPԠNUM AƬA A̬A SAPԲSAVŠSNDPԠN MPSHɠUN A̱6ANGUŠPԠNUMBҠҠA̠6 SAPԱSԠPԠNUMB ADABԱ0 SAPԲSNDPԠNUMB MPSHɠUN SPà SPà SPà SPà A̱6NPSԠUPPԠNUMҠNԠPA DAPԱNMN ADABԱ0PԱ ADABԱ0BY ANDUNԱ5MASKƠAY SAPԱ DAPԲNMN ADABԱ0PԲ ADABԱ0BY ANDUNԱ5MASKƠAY SAPԲ MPA̱6ɠUN SPà  PSԠNPSԠMNDSAԠAҠPS SBSHSԠUPPԠNUMBS DAMM- SANԱNUMƠPASҠA̠6P PSԲDAMM- SAN0NUMƠMSPҠPA DAPԱSԠP PSԱSAPԠSŠPԠNUMҠMSSAG H3AHSԠPԠNUMNϠBD DAײPDDAA ҠPԠADDPԠNUM SASAVBSŠPDDAAPԠNUM HAHGԠSAUS PASAVBMPA SSK SBA0PԠؠDDN'ԠҠAҠPS SZN0NDƠSԠҠHSPA? SSN MPPS3YS DAPԲGԠSNDPԠNUM MPPSԱP PS3DAMPHSԠҠA̠6 SSASSҠPԠNY MPPSԴPԠNY SBA̱6NҠPԠNSҠA̠PԠS SZNԱNSHDA̠6? MPPSԲN PSԴMPPSԬɠYS-UN SPà ANPŲ6PSԠDDN'ԠҠSAUS DAPԠGԠANGPԠNUMB AƠPSN A̬A SASAVASAVŠNUMBҠNA-G B SBSAVB SBDNNVԠϠDMA DAVԲANDS SAMAɠNMSSAG DASAVAGԠPԠN. DBSAVB SBMSɠPԠ ŲDƠM MPAɠUN SPà BNPŲ.PԠADDҠSؠSBY DASAVAGԠANGPԠNUM AƠPSNN A̬A̠BS0-3 SASAVA SBDNNVԠϠDMA DAVԲSŠN SAM30AɠMSSAG DASAVBGԠPDPԠNUM AƠPSNN A̬A̠BS0-3 SASAVB SBDNNVԠϠDMA DAVԲSŠN SAM30BɠMSSAG DASAVAGԠPԠNn DBSAVBGԠPDPԠN SBMSɠPԠ 30DƠM30 MPBɠUN SPà àNP30.PԠADDҠSؠSBY DASAVAGԠANGPԠNUM AƠPSNN A̬A̠BS0-3 SASAVAҠHAԠDSPAY SBDNNVԠϠDMA DAVԲSŠN SAM3AɠMSSAG DASAVBGԠPDPԠNUM AƠPSNN A̬A̠BS0-3 SASAVBҠHAԠDSPAY SBDNNVԠϠDMA DAVԲSŠN SAM3BɠMSSAG DASAVAGԠPԠN DBSAVBGԠPDPԠN SBMSɠPԠ 3DƠM3 DASAVBSŠPԠNUM AƬAƠNBS0-3 A̬A̠AҠH SASAVBHAԠDSPAY MPìɠUN SPà DNP3.PԠؠSSBY DAPԠPԠNUMàDAAN AƠPSN A̬A SBDNNVԠϠDMA DAVԲANDS SAM3AɠNMSSAG DASAVBAUA̠SAUS SBNVԠNVԠϠA DAV3ANDS SAM3BɠPD DAVԲDAA SAM3ìɠN DAVԱYYYYYY SAM3DɠƠMSSAG DASAVAPDSAUS SBNVԠNVԠϠA DAV3ANDS SAM3ŬɠAUA DAVԲDAA SAM3ƬɠN DAVԱ SAM3GɠMSSAG DASAVBAUA̠SAUS DBSAVAPDSAUS SBMSɠPԠ 3DƠM3 DBBԱ SBSԬ MPDɠUN DAPԠPԠNUM AƠPSNN A̬A̠B30-3 DBBHKҠPNҠPSN SZBSS Ԡ0603HAԠϠDSPAYPԠؠNUM MPDɠUN SPà BԱԠ0000 SPà ŠNPUPUԠϠPԠؠHANGSPԠY DAPBGԠPԠYҠPԠNUM ANDUNԱ5MASKƠPԠNUM AƠPSNN A̬A̠BS0-3 SAPBҠHAԠDSPAY SBDNNVԠϠDMA DAVԲANDS SAM33AɠNYYƠMSSAG DASAVBGԠPԠN ANDUNԱ5MASKƠPԠNUM AƠPSNN A̬A̠BS0-3 SASAVBSAV SBDNNVԠϠDMA DAVԲANDSŠN SAM33BɠؠƠMSSAG DAPBGԠPԠN DBSAVBGԠPԠN. SBMSɠPԠ 33DƠM33 DAPBGԠPԠB AƬAƠNBS A̬A̠0-3 SAPBSAVŠPԠN. MPŬɠUN SPà ƠNPŴ3NPàNPԠؠSBPԠY DASAVAGԠAUA̠PԠNUM AƠPSNN A̬A̠BԠ0-3 SASAVASAVŠPԠN SBDNNVԠϠDMA DAVԲANDS SAM0AɠNؠƠMSSAG DAPԲGԠPDP AƠPSN A̬A SASAVBҠHAԠDSPAY SBDNNVԠϠDMA DAVԲANDS SAM0BɠNYYƠMSSAG DASAVAGԠAUA̠PԠN DBSAVBGԠPDPԠN SBMSɠPԠ Ŵ0DƠM0 MPƬɠUN SPà AҠNPAҠUԠBAD DA3N̠DA̠ZS H56AH ANDUNԱ5MASKƠPԠNUM PAUNԱ5ASԠH? MPAҬ ADABԱ0NҠPԠNUM ANDUNԱ5MASKƠANYAS Ҡ3ADDBAKנϠNנPԠNUM MPH56 SPà DN NVSDMA̠NGSϠAS AVAUŠNNPU NVԱSԠϠDGSN NVԲSNDϠDGSN SPà DNNP BB- DPADAM000ASSUMŠNGҠSSHAN0000 NBUNԠUPHUSANDSPA SSASSSKPHNBGS MPDP ADAD000S BƬB ADBMM DPADAMM00 NBUNԠUPHUNDDSPA SSASSSKPHNBGS MPDP ADAD00S ADBASZZ SBVԱ B DP3ADAMM0 NBUNԠUPNSPA SSASSSKPHNBGS MPDP3 ADAD0S BƬB ҠB ҠASZZ SAVԲ MPDN HDNDMMNSUBNS9ASYNàMPؠN HŠNVԠUNŠNVSHŠSNGŠDNHŠA G.ϠHŠASɠDS(A̩NVԱVԲANDV3. SPà NVԠNP SAMP5SAVŠD DBADϠBAS A ANDD SSB ҠBԸNŠҠԠA̠DG ҠASZZ SAVԱ DAMP5GԠDBAK AƬA A̬A ANDA00AVŠϠDGS DBASAVŠҠAH AƬA̠MSԠϠPSN ҠBҠHŠϠGH ANDB30 ҠASZZ SAVԲ DAMP5GԠDBAK ANDA00AVŠASԠϠDGS DBA AƬA ҠB ANDB30 ҠASZZ SAV3SAVŠGHMSԠDGS MPNVԬɠUN HDҠMSSAGS GZND SPà MSSAGS SPà SUP MASà0PSW 640ԠDDNԠAҠSAUSN ASà5PԠد M30ASà030HŠPԠADDSSS ASàSHUDBŠYY M3ASà03HŠPԠADDSSS ASàSHUDBŠYY M3ASà603SAUSNPԠؠS ASà0SHUDBŠYYYYYY M33ASà033UPUԠNPԠ ASà9HANGSPԠYY M3ASà603SDSAUSN.AD ASàϠNUPԯ M35ASà6035SDSAUSN.AD ASàϠNUPԯ M36ASà5036-ϠAGADϠA. ASàSԠABD M3ASà03SANSԠAD M0ASà600SANSԠNUPԠUD ASà6NPԠؠSHUDBŠPԠYY HDMSASà9ASYNàMUP ASà3N̠BADDAGNSï AAUSԠDƠAVAABŠMMY ND B6   12924-18001 1537 S 0122 2892A CARD READER DIAGNOSTIC             H0101 ASMB,A,B,L,C HED GENERAL OPERATING PROCEDURE ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. .I * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIZATION CHART * ****** ************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I, JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN Ly LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 1X CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE E LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I l JMP *+3 YES LDA ZEOLC C HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB >ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1- Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS ISS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP P LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP ll LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * | * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 5? ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 3H E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 0 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION ag640 DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP P CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 6   12924-18002 1537 S 0122 2892A CARD READER DIAGNOSTIC             H0101  CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * * DEF *+1 * * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 3H E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12Hg,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP Pl ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 6< ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP P CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SܵUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 2b RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 3H E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 3H E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF 8ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 4 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 1 DEF ZBS62 DEF ZBS63 DEF ZBS64 4 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * * HED BASEPAGE DATA ORG 100B JMP CONF * ORG 126B DSN OCT 113100 REVISION B ORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 77 TESTS 5-0 (6 IS NOT STANDARD) STDB OCT 0 NO B REG TESTS * ORG 150B HDMS EQU * ASC 15,2892A CARD READER DIAGNOSTIC/ CR EQU 10B B} SKP IOID EQU * DEF STRS1 DEF STRS2 DEF STRS3 DEF STSS1 DEF STSS2 DEF STS01 DEF STS02 DEF STS03 DEF STS04 DEF STS05 DEF STS06 DEF STS07 DEF STS08 DEF STS09 DEF TMGS1 DEF TMGS2 DEF TMGS3 DEF TMGS3+1 DEF TMG1 DEF CFRS1 1 DEF CFRS2 DEF R2BS1 DEF R2BS2 DEF RRSI1 DEF RRS01 DEF RRIS1 DEF RRIS2 DEF DMAS1 DEF DMAS2 DEF DMAS3 DEF DMAS4 DEF SDTS1 DEF SDTS2 2 DEC -1 TSTD EQU * DEF TST00 BASIC I/O DEF TST01 STATUS DEF TST02 TIMING DEF TST03 DATA PATTERN DEF TST04 READ RATE DEF TST05 DMA TRANSFER DEF TST06 PSEUDO OPERATOR DESIGN DEC -1 TERMINATOR HED COMMON SUBROUTINES CONF CLC INTP,C CLEAR ALL I/O JSB SWRT,I CHECK SWR FOR A TBG NOP f LDA B ALF,ALF RAR AND .77 STA TBGSC SAVE SELECT CODE LDB RSS SET FLAG IN PROGRAM SZA CLB STB .TBG1,I STB .TBG2,I STB .TBG3,I SZA,RSS IS THERE A TBG SC? JMP CFIG,I NO AND .M7 SZA TBG > 7 JMP *+3 YES HLT 73B NO TELL OPERATOR JMP CONF TRY AGAIN LDA TBGS1 UPDATE SELECT CODE AND .M77 IOR TBGSC STA TBGS1 OTA TBG LDA TBGS2 AND .M77 IOR TBGSC STA TBGS2 STC TBG,C LDA TBGS3 AND .M77 IOR TBGSC STA TBGS3 CLF TBG JMP CFIG,I CONTINUE CONFIGURATION SKP JSBTM JSB TBGI TRAP CELL JSB FOR TBG * TBGI NOP INA COUNT 1 MILLISECOND TBGS3 CLF 10B RESET TBG JMP TBGI,I RETURN TO PROGRAM * * RRTM NOP CLA,INA SET FOR 1 MILL SEC TBGS1 OTA 10B TBGS2 STC 10B,C START TBG LDA JSBTM SET TRAP CELL STA TBGSC,I I| JMP RRTM,I * TBGSC NOP JSBDM JSB *+1,I DEF DMAI JSBRI JSB *+1,I DEF RRI .M7 OCT 177770 .M77 OCT 177700 RSS RSS .TBG1 DEF TBG1 .TBG2 DEF TBG2 .TBG3 DEF TBG3 SKP * READ ONE CARD (STATUS TESTS MAINLY) * STRD NOP LDA STRD,I GET ANY VARIATIONS STA STRDP LDA DM80 SET FOR 80 COLUMNS STA TMP STRS1 STC CR,C PICK CARD LDA D1000 ALLOW 1 SECOND JSB WFI WAIT FOR INTERRUPT JMP STRDT TIMED OUT LDB TMP CPB DM50 VARIATION ON 50TH COLUMN STRDP NOP STRS2 LIA CR GET DATA STRS3 CLF CR CLEAR FLAG FOR INB,SZB,RSS DONE? JMP *+3 STB TMP NO SAVE COUNT JMP STRS1+1 WAIT FOR NEXT COLUMN LDA D1000 JSB WFI YES WAIT FOR EOP JMP STRDT TIMED OUT STRDX ISZ STRD ADJUST RETURN JMP STRD,I RETURN P+2 * STRDT EQU * E030 JSB ERMS,I TELL OPERATOR OF DEF STRDE TIME OUT ERROR JMP STRDX EXIT * STRDE ASC 09,E030 CR TIMED OUT/ DM80 DEC -80 DM50 DEC -50 TMP NOP NOP NOP NOP P NOP D1000 DEC 1000 SKP * READ TO BUFFER * R2B NOP JSB WFIS SET INTERRUPT TRAP LDA DM80 SET FOR 80 COLUMNS STA CNTR LDA BFD SET POINTER TO INPUT BUFFER STA TMP R2BS1 STC CR,C GIVE PICK COMMAND R2B0 LDA D1000 JSB WFI WAIT FOR INTERRUPT JMP E130 R2BS2 LIA CR GET DATA AND STATUS SSA EOP? JMP E131 YES - ERROR STA TMP,I NO PUT DATA IN BUFFER ISZ TMP ISZ CNTR DONE 80 COLUMNS? JMP R2B0 NO LDA D1000 YES WAIT FOR EOP JSB WFI JMP E130 JMP R2B,I RETURN TO CALLER * E130 JSB ERMS,I TELL OPERATOR OF ERROR DEF DRTE1 CARD TIMED OUT JMP R2B,I EXIT * E131 JSB ERMS,I DEF DRTE2 EOP BEFORE 80 COLUMNS JMP R2B,I EXIT SKP Pl DRTC NOP LDA DM80 SET COUNT FOR COMPARE STA CNTR LDA BFD AND BUFFER POINTERS STA TMP LDA DRTC,I STA TMP+1 DRT0 LDA TMP,I GET DATA READ CPA TMP+1,I DOES DATA COMPARE? RSS JSB DRTE NO ISZ TMP YES MOVE TO NEXT WORD ISZ TMP+1 ISZ CNTR DONE 80 COLUMNS YET? JMP DRT0 NO ISZ DRTC YES ADJUST RETURN JMP DRTC,I RETURN * * DRTE NOP LDB DRTBD CONVERT ACTUAL DATA CLE JSB O2AS,I MESSAGE LDA DRTA MOVE 4 CHARACTERS STA DRTE4 TO MESSAGE LDA DRTB STA DRTE4+1 LDA TMP+1,I CONVERT EXPECTED DATA FOR LDB DRTBD CLE JSB O2AS,I MESSAGE LDA DRTA MOVE 4 CHARACTERS STA DRTE5 TO MESSAGE LDA DRTB STA DRTE5+1 }LDA TMP,I GET DATA FOR HALT LDB TMP+1,I E132 JSB ERMS,I REPORT ERROR DEF DRTE3 JMP DRTE,I RETURN * DRTE1 ASC 09,E130 CR TIMED OUT/ DRTE2 ASC 14,E131 EOP BEFORE 80 COLUMNS/ DRTE3 ASC 10,E132 DATA ERROR ACT DRTE4 ASC 05,XXXX EXP DRTE5 ASC 03,XXXX// CNTR NOP DRTBD DEF *+1 NOP DRTA NOP DRTB NOP BFD DEF *+1 BSS 90 SKP * STATUS CHECK FOR TEST 1 * * CDSTC NOP P STSS1 OTA CR DO OTA TO GET STATUS STSS2 LIA CR GET STATUS CPA CDSTC,I DOES IT COMPARE? JMP CDSTR YES RETURN STA CDSTX NO - SAVE STATUS LDA STPNO REPORT ERROR RAR,RAR CONVERT RAR STEP AND .7 NUMBER ADA .63 ALF,ALF STA B LDA STPNO AND .7 ADA .60 IOR B STA STCM0+1 PUT IT IN PLACE LDA CDSTX GET CURRENT STATUS FOR MESSAGE LDB STCRN CLE JSB O2AS,I CONVERT IT AND STORE IT LDA CDSTC,I GET EXPECTED FOR MESSAGE LDB STEXP CLE JSB O2AS,I CONVERT IT AND STOR IT LDA CDSTX GET CURRENT STATUS FOR HALT LDB CDSTC,I GET EXPECTED FOR HALT JSB ERMS,I REPORT ERROR DEF STCM0 CDSTR ISZ CDSTC JMP CDSTC,I RETURN TO CALLER * * STCM0 ASC 08,E0XX STATUS IS STCM1 ASC 03,XXXXXX ASC 07, AND EXPECTED STCM2 ASC 04,XXXXXX// STCRN DEF STCM1 STEXP DEF STCM2 2 STPNO NOP CDSTX NOP .60 OCT 60 .63 OCT 63 .7 OCT 7 SKP * WAIT FOR INTERRUPT * WFI NOP STF INTP JSB TMRR,I CLF INTP JMP WFI,I RETURN P+1 WFIR CLF INTP ISZ WFI RETURN P+2 JMP WFI,I * * * WFIS NOP LDA USSC GET SELECT CODE AND .77 LDB JMPI STB A,I PUT JMP IN TRAP CELL JMP WFIS,I, * JMPI JMP WFIR .77 OCT 77 * * CHECK FOR READY * CFR NOP CLB GIVE HIM 2 CHANCES CFRS1 OTA CR CFRS2 LIA CR SLA IS IT READY? JMP *+3 ISZ CFR YES JMP CFR,I RETURN P+2 SZB SECOND TIME? JMP CFR,I YES E055 JSB ERMS,I TELL OPERATOR DEF CFRM1 1 CCB SECOND TRY JMP CFR+2 2r * CFRM1 ASC 09,E055 CR NOT READY/ HED TESTS * STATUS CHECKS * TST01 EQU * * STCK NOP CLC INTP,C CLEAR ALL I/O JSB WFIS SET INTERRUPT TRAP CLA,INA SET STEP 1 STA STPNO H100 JSB MSGH,I TELL OPERATOR TO DEF STM1 TURN CARD READER POWER OFF JSB CDSTC GO CHECK STATUS OCT 110001 BIT 2 =0 BIT 0 =1 * * ISZ STPNO SET STEP 2 H101 JSB MSGH,I TELL OPERATOR TO DEF STM2 TURN CARD READER POWER ON JSB CDSTC GO CHECK STATUS OCT 110041 BIT 2 =0 BIT 0 =1 * * * * ISZ STPNO SET STEP 3 STS01 STC CR,C GIVE PICK COMMAND JSB CDSTC GO CHECK STATUS OCT 010441 BIT 12 =1 BIT 15 =0 BIT 8 =1 * * ISZ STPNO SET STEP 4 H102 JSB MSGH,I TELL OPERATOR TO DEF STM3 PUT CR IN OFF-LINE MODE JSB CDSTC GO CHECK STATUS OCT 110045 BITS 2,15,12 =1 BITS 8 & 0 =0 STS02 SFC CR CHECK THAT FLAG SET BY OL+PICK JMP *+5 CLA CLB E053 JSB ERMS,I IT WASN'T REPORT ERROR DEF STE1 * * ISZ STPNO SET STEP 5 STS03 STC CR,C GIVE PICK COMMAND JSB CDSTC GO CHECK STATUS OCT 110045 BIT 8 =0 BITS 12&15 =1 SKP ISZ STPNO SET STEP 6 H103 JSB MSGH,I TELL OPERATOR TO DEF STM4 PUT CR IN ON-LINE MODE * LOAD THREE CARDS * START CR PRESS RUN STS04 SFC CR CHECK THAT FLAG IS SET BY * OFF-TO-ON LINE * CONTROL SET * /640 RIP =0 JMP *+5 CLA CLB 6   12924-18003 1537 S 0122 2892A CARD READER DIAGNOSTIC             H0101 E054 JSB ERMS,I IT WASN'T REPORT ERROR DEF STE2 JSB CDSTC GO CHECK STATUS OCT 110000 INDICATS ALL READY * * ISZ STPNO SET STEP 7 H104 JSB MSGH,I TELL OPERATOR TO DEF STM5 EXTEND STACKER ARM AND HOLD JSB CDSTC GO CHECK STATUS OCT 110141 * * ISZ STPNO SET STEP 10 STS05 STC CR,C GIVE PICK COMMAND STS06 CLC CR,C NOW CLC TO CLEAR PICK JSB CDSTC GO CHECK STATUS OCT 010141 BIT 8 = 0 * * ISZ STPNO SET STEP 11 H105 JSB MSGH,I TELL OPERATOR TO DEF STM6 START CR PRESS RUN JSB CDSTC GO CHECK STATUS OCT 010000 ALL READY * * ISZ STPNO SET STEP 12 JSB STRD READ A CARD RSS AND SKIP AN LIA JSB CDSTC GO CHECK STATUS OCT 110012 TROUBLE + LOST DATA * * JSB STRD READ A CARD STS07 OTA CR AND DO AN OTA JSB CDSTC GO CHECK STATUS OCT 110012 TROUBLE + LOST DATA SKP Pl ISZ STPNO SET STEP 13 H106 JSB MSGH,I TELL OPERATOR TO DEF STM7 PRESS END OF FILE JSB STRD READ A CARD NOP JSB CDSTC GO CHECK STATUS OCT 110241 BIT 7+5=1 * * ISZ STPNO SET STEP 14 H107 JSB MSGH,I TELL OPERATOR TO DEF STM8 LOAD SHORT CARD AND TWO LONG JSB CDSTC GO CHECK STATUS OCT 110000 ALL READY * * ISZ STPNO SET STEP 15 STS08 STC CR,C PICK CARD LDA D1000 JSB WFI WAIT FOR FIRST INTERRUPT NOP CLC INTP OUTPUT CRS JSB CDSTC GO CHECK STATUS OCT 110001 LDA D1000 JSB TMRR,I GO WAIT * * ISZ STPNO SET STEP 16 6 JSB STRD READ NEXT CARD NOP JSB CDSTC GO CHECK STATUS OCT 114043 * * ISZ STPNO SET STEP 17 H110 JSB MSGH,I TELL OPERATOR TO DEF STM9o LOAD NOTCHED CARD JSB CDSTC GO CHECK STATUS OCT 110000 ALL READY * * * ISZ STPNO SET STEP 20 JSB STRD READ A CARD NOP JSB CDSTC GO CHECK STATUS OCT 111043 SKP pl ISZ STPNO SET STEP 21 H111 JSB MSGH,I TELL OPERATOR TO DEF STM10 LOAD 2 CARDS TAPED TOGETHER JSB CDSTC GO CHECK STATUS OCT 110000 ALL READY * * ISZ STPNO SET STEP 22 STS09 STC CR,C GIVE PICK COMMAND LDA D1000 JSB TMRR,I WAIT FOR COMPLETION JSB CDSTC GO CHECK STATUS OCT 114003 PICK FAILURE * * JMP STCK,I ALL DONE RETURN TO CALLER * ORG ZCEND * * STM1 ASC 11,H100 TURN CR POWER OFF ASC 11, AND REMOVE ANY CARDS/ * STM2 ASC 11,H101 TURN CR POWER ON/ * * STM3 ASC 11,H102 PUT CR OFF-LINE/ * STM4 ASC 10,H103 PUT CR ON-LINE ASC 08,LOAD THREE CARDS ASC 05, START CR/ * STM5 ASC 17,H104 EXTEND STACKER ARM AND HOLD/ * STM6 ASC 13,H105 RELEASE ARM START CR/ * STM7 ASC 13,H106 PRESS CR END-OF-FILE/ * * STM8 ASC 13,H107 LOAD SHORT CARDS AND ASC 12,TWO LONG CARDS START CR/ * STM9 ASC 11,H110 LOAD NOTCHED CARD ASC 05, START CR/ * STM10 ASC 17,H111 LOAD 2 CARDS HOOKED TOGETHER ASC 05, START CR/ * STE1 ASC 16,H053 FLAG NOT SET OFF-LINE+PICK/ * STE2 ASC 17,H054 FLAG NOT SET OFF-TO-ON LINE/ SKP * TIMING CHECKS * TST02 EQU * * TMG NOP CLC INTP,C CLEAR ALL I/O CLA STA SVA STA SVB B JSB WFIS LDA DM10 SET TO READ TEN CARDS STA CNTR H112 JSB MSGH,I TELL OPERATOR TO DEF TMGM1 LOAD TEN CARDS TMG. JSB CFR CHECK FOR READY JMP TMG,I NO READY RESPONSE LDA DM80 SET FOR EIGHTY COLUMNS STA TMP TMGS1 STC CR,C GIVE PICK COMMAND LDA D1000 ALLOW 1 SEC JSB WFI WAIT FOR INTERRUPT ]W RSS JMP TMG0 TMGS2 LIA CR SSA,RSS EOP? JMP *+4 E056 JSB ERMS,I EOP BUT NO INTERRUPT DEF TMGE1 JMP TMGL E057 JSB ERMS,I NO EOP AFTER PICK DEF TMGE2 JMP TMGL TMG0 ADA D1000 STA SVA SAVE RESULTS ADA DM300 SSA OVER 300MS JMP TMG1 NO CONTINUE TMGS3 OTA CR LIA CR GET DATA AND STATUS SSA EOP? JMP *+4 E061 JSB ERMS,I PICK _INT OVER 300M/S DEF TMGE4 JMP TMGL ALF SSA,RSS JMP E061 E060 JSB ERMS,I PICK FAILURE DEF TMGE3 JMP TMGL SKP TMG1 LIA CR GET DATA SSA,RSS JMP *+4 E063 JSB ERMS,I EOP BEFORE 80 COLUMNS READ DEF TMGE5 JMP TMGL ISZ TMP 80 COLUMNS READ RSS S JMP TMG2 YES LDA D1000 NO WAIT FOR ANOTHER DATA INT JSB WFI JMP E067 TIMED OUT ADA D1000 IOR SVB STA SVB JMP TMG1 TMG2 LDA D1000 WAIT FOR EOP JSB WFI RSS JMP *+4 E065 JSB ERMS,I 80 COLUMNS READ BUT NO EOP DEF TMGE6 JMP TMGL ADA D1000 ADA DM4 4V SSA OVER 4 MILLSEC JMP *+4 4 E066 JSB ERMS,I DATA TO EOP OVER 4 MILL DEF TMGE9 LDA SVA CHECK IF POSSIBLE PICKER TROUBLE ADA DM40 SSA JMP *+3 E062 JSB ERMS,I YES DEF TMGE8 LDA SVB HOW ABOUT BETWEEN DATA SZA,RSS JMP *+3 E064 JSB ERMS,I DEF TMGE7 TMGL ISZ CNTR DONE TEN CARDS? JMP TMG. NO JMP TMG,I YES * E067 JSB ERMS,I INT TIMED OUT DURING READ DEF TMGE0 08 JMP TMGL SKP TMGM1 ASC 18,H112 LOAD TEN CARDS FOR TIMING TEST ASC 07,AND START CR/ * TMGE1 ASC 13,E056 EOP BUT NO INTERRUPT/ TMGE2 ASC 12,E057 NO EOP AFTER PICK/ TMGE3 ASC 09,E060 PICK FAILURE/ TMGE4 ASC 15,E061 PICK TO INT OVERz 300 MS/ TMGE5 ASC 15,E062 POSSIBLE PICKER TROUBLE/ TMGE6 ASC 14,E063 EOP BEFORE 80 COLUMNS/ TMGE7 ASC 17,E064 TIME BETWEEN DATA OVER 1 MS/ TMGE8 ASC 14,E065 80 COLUMNS BUT NO EOP/ TMGE9 ASC 14,E066 DATA TO EOP OVER 4 MS/ TMGE0 ASC 15,E067 INT TIME OUT DURING READ/ * DM10 DEC -10 SVA NOP SVB NOP DM40 DEC -40 DM4 DEC -4 DM300 DEC -300 SKP * DATA PATTERN TEST * TST03 EQU * * * DPT NOP H113 JSB MSGH,I TELL OPERATOR TO DEF DPTM1 LOAD 50 CARDS FOR DATA PATTERN TEST CLC INTP,C CLEAR ALL I/O LDA DM50 SET FOR 50 CARDS STA TMP+2 DPT0 JSB CFR CHECK FOR READY JMP DPT,I RETURN TO EXEC JSB R2B READ TO BUFFER JSB DRTC DATA READ TABLE COMPARE DEF DPTT ISZ TMP+2 DONE 50 CARDS? JMP DPT0 NO JMP DPT,I YES RETURN * DPTM1 ASC 18,H113 LOAD 50 CARDS FOR DATA PATTERN ASC 08,CHECK START CR/ * DPTT EQU * OCT 7777 OCT 0 0 OCT 3777 OCT 5777 OCT 6777 OCT 7377 OCT 7577 OCT 767778 OCT 7737 OCT 7757 OCT 7767 OCT 7773 OCT 7775 OCT 7776 OCT 4000,2000,1000 OCT 400,200,100 OCT 40,20,10 OCT 4,2,1 1? OCT 5252,2525,5252,2525 OCT 5252,2525,5252,2525 OCT 5252,2525,5252,2525 OCT 5252,2525 REP 4 OCT 0,0,0,0,0,0,0,0,0,0 SKP * READ RATE * TST04 EQU * * RR NOP H114 JSB MSGH,I TELL OPERATOR TO DEF RRM1 LOAD 50 CARDS FOR READ RATE TEST CLC INTP,C CLEAR ALL I/O JSB CFR CHECK FOR READY JMP RR,I ABORT TEST LDA DM50 SET FOR 50 CARDS STA CNTR LDA D10E4 SET CNT IF TBG STA TMP LDA JSBRI SET CARD READER INTERRUPT RRSI1 STA CR TBG1 RSS NOP = TBG AVAILABLE JSB RRTM SET UP TBG RRS01 STC CR,C GIVE PICK COMMAND LDA D10Ef4 MAX TIME 10 SEC STF INTP TURN ON INTERRUPTS TBG2 RSS NOP = TBG AVAILABLE JMP RRTBG JSB TMRR,I WAIT FOR CARDS TO BE READ CLF INTP TURN INT OFF E133 JSB ERMS,I TELL OPERATOR OF DEF RRE1 TIME OUT JMP RR,I EXIT TEST * RRTBG CMA,INA MAKE COUNT NEG LDB 110B GET MILL SEC OUNT INB,SZB JMP *-1 ISZ TMP JMP RRTBG+1 JMP E133 * * RRM1 ASC 16,H114 LOAD 50 CARDS FOR READ RATE ASC 07, AND START CR/ * RRE1 ASC 09,E133 CR TIMED OUT/ * D10E4 DEC 10000 SKP RRI NOP CLF INTP TURN OFF INTERRUPTS STA SVA SAVE A REG (B WON'T BE USED) RRIS1 LIA CR GET DATA SSA EOP? JMP *+4 YES LDA SVA NO RETURN TO COUNTER STF INTP JMP RRI,I ISZ CNTR COUNT THE CARD (DONE?) RSS JMP RRCMP YES SLA,RSS STILL READY? JMP *+3 YES E134 JSB ERMS,I TELL OPERATOR DEF RRE2 CR WENT NOT READY LDA SVA RRIS2 STC CR,C PICK NEXT CARD STF INTP JMP RRI,I RRCMP LDA SVA RESTORE NUMBER ADA D5000 DETERMINE CPM STA SVA A = NUMBER OF MILLI SEC SSA FOR 50 CARDS CMA,INA LDB A ALF,RAR *8 RBL,RBL *4 ADA B = *12 CLB ADA DM100 * SSA * JMP *+4 * /100 ADA DM100 * INB * JMP *-4 * LDA SVA SSA,RSS < 600 CMB,INB ADB D600 STB SVA SAVE IT FOR DISPLAY WHEN HALTED TBG3 RSS NOP = TBG AVAILABLE RSS ADB POT SUBTRACT OFF SET IF PROG TIME LDA B LDB DRTBD CONVERT IT FOR MESSAGE CLE JSB I2AS,I LDA DRTA PUT NUMBER IN AND .377 MESSABE IOR USPC STA RRM3 LDkRA DRTB STA RRM3+1 H115 JSB MSGC,I SHOW OPERATOR DEF RRM2 LDA SVA GET COUNT FOR DISPLAY LDB 112B CHECK IF NO TTY SZB,RSS S OCT 106015 NO SO HALT JMP RR,I RETURN TO CONTROL * RRE2 ASC 09,E134 CR NOT READY/ * RRM2 ASC 02,H115 5c RRM3 ASC 11,XXXX CARDS PER MINUTE/ * POT DEC -8 D5000 DEC 5000 DM100 DEC -100 D600 DEC 600 .377 OCT 377 USPC OCT 20000 SKP * DMA TRANSFER TEST * * TST05 EQU * * DMA NOP CLC INTP,C CLEAR ALL I/O LDA CPTO CHECK IF THERE IS DMA AVAILABLE RAR,RAR SLA,RSS JMP DMA,I NO ABORT TEST H116 JSB MSGH,I TELL OPERATOR TO DEF DMAM1 LOAD 50 CARDS FOR DMA LDA DM50 SET FOR 50 CARDS STA TMP+2 JSB WFIS SET CR TRAP CELL LDA JSBDM SET DMA TRAP STA 6B * DMAR JSB CFR CHECK FOR READY JMP DMA,I ABORT IF NOT READY LDA USSC GET AND .77 SELECT CODE OTA 6 CLC 2 LDA BFD ADDRESS IOR BIT15 INPUT OTA 2 STC 2 LDA DM85 COUNT OF 85 OTA 2 DMAS1 STC CR,C GIVE PICK COMMAND STC 6,C START DMA LDA D1000 WAIT FOR 1 SEC JSB WFI RSS JMP *+4 E135 JSB ERMS,I TELL OPERATOR DEF DMAE1 DMA TIMED OUT JMP DMA,I LIA 2 CHECK WORD COUNT IOR B16K ADD UPPER BITS TO MAKE IT NEG CPA DM5 5 WORDS LEFT JMP *+3 YES E136 JSB ERMS,I NO THEN ERROR DEF DMAE2 2 DMAS2 LIA CR SSA EOP? JMP *+3 YES OK E137 JSB ERMS,I NO EOP AFTER TRANSFER DEF DMAE3 JSB DRTC COMPARE DATA DEF DPTT WITH STANDARD BUFFER DMAN ISZ TMP+2 DONE 50 CARDS? JMP DMAR NO DO ANOTHER LOOP JMP DMA,I YES EXIT SKP DMAI NOP P CLF INTP TURN OFF INTERRUPTS M DMAS3 OTA CR DMAS4 LIA CR LIB 2 E140 JSB ERMS,I DMA COMPLETED BEFOR CR DEF DMAE4 JMP DMAN TRY NEXT CARD * BIT15 OCT 100000 DM85 DEC -85 DM5 DEC -5 B16K OCT 160000 * DMAM1 ASC 16,H116 LOAD 50 CARDS FOR DMA TEST ASC 05,START CR/ DMAE1 ASC 10,E135 DMA TIMED OUT/ DMAE2 ASC 15,E136 DMA TRANSFER COUNT WRONG/ DMAE3 ASC 16,E137 NO EOP AFTER DMA TRANSFER/ DMAE4 ASC 15,E140 DMA COMPLETED BEFORE CR/ SKP ll * SPECIAL DATA TEST (PSEUDO OPDESIGN) * TST06 EQU *  * SDT NOP H117 JSB MSGC,I TELL OPERATOR DEF SDTM1 HE'S IN SPECIAL DATA TEST CLC INTP,C CLEAR ALL I/O JMP SDTH GO TO WAIT SDTL JSB SDTRY CHECK FOR READY (SW1) JSB SDTRD READ A CARD (SW2) JSB SDTCB COMPARE BUFFERS (SW3) JSB SDTLB LIST BUFFER (SW4) JSB SDTDL DELAY (SW5) JSB SDTST REPAORT STATUS (SW6) LDA SVA GET STATUS FOR HALT CLB,INB CHECK FOR LOOP (SW0) JSB SWRT,I JMP SDTL YES SDTH OCT 106017 NO WAIT FOR CHANGES LDB .177 EXIT JSB SWRT,I IF ALL SWITCHES ARE DOWN JMP SDTL NO THEN LOOP JMP SDT,I YES EXIT * .177 OCT 177 SDTM1 ASC 11,H117 PSEUDO OPDESIGN/ SKP SDTRY NOP LDB BIT1 DOES HE WANT TO CHECK FOR READY JSB SWRT,I JMP *+2 JMP SDTRY,I NO RETURN JSB CFR YES CHECK FOR READY JMP SDTRY+1 NOT READY TRY AGAIN JMP SDTRY,I YES RETURN * * SDTRD NOP LDB BIT2 READ A CARD? JSB SWRT,I JSB R2B YES JMP SDTRD,I RETURN * * SDTCB NOP LDB BIT3 COMPARE BUFFERS JSB SWRT,I JMP *+2 JMP SDTCB,I NO JSB DRTC YES DEF DPTT STANDARD BUFFER JMP SDTCB,I RETURN * * SDTDL NOP LDA D1000 LDB BIT5 DELAY 1 SEC? JSB SWRT,I :w JSB TMRR,I YES JMP SDTDL,I RETURN * * SDTST NOP SDTS1 OTA CR DO OTA TO TRANSFER STATUS SDTS2 LIA CR READ STATUS STA SVA SAVE IT LDB BIT6 OUT PUT MESSAGE? JSB SWRT,I JMP *+2 JMP SDTST,I NO CLE LDB SDTM2 CONVERT STATUS TO ASCII JSB O2AS,I H120 JSB MSGC,I DEF *+2 JMP SDTST,I RETURN * ASC 08,H120 STATUS IS SDTSM ASC 04,XXXXXX// SDTM2 DEF SDTSM SKP SDTLB NOP LDA DM20 SET FOR OUTPUT STA CNTR LDA BFD BUFFER PAINTER STA TMP LDB BIT4 JSB SWRT,I JMP *+2 JMP SDTLB,I JSB MSGC,I DEF SDTL0 SDTLL LDB BIT4 CHECK IF HE WANTS A LIST JSB SWRT,I JMP *+2 JMP SDTLB,I NO RETURN LDA 112B CHECK IF THERE IS A CONSLE SZA ? JMP SDTLN YES USE LIST DEVICE LDA DM80 SET TO DO 80 COLUMNS STA CNTR LDA TMP,I GET DATA H121 OCT 1060212O ISZ TMP ISZ CNTR DONE? JMP SDTLL NO JMP SDTLB,I YES SDTLN LDA TMP,I CLE LDB SDTL1 FIRST 20 JSB O2AS,I LDA TMP ADA D20 LDA A,I CLE LDB SDTL2 SECOND 20 JSB O2AS,I LDA TMP ADA D40 LDA A,I CLE LDB SDTL3 THIRD 20 JSB O2AS,I LDA TMP ADA D60 LDA A,I CLE LDB SDTL4 FORTH 20 JSB O2AS,I JSB MSGC,I OUTPUT LINE DEF SDTL5 ISZ TMP ISZ CNTR DONE? JMP SDTLL NO JMP SDTLB,I YES * SKP BIT1 OCT 2 BIT2 OCT 4 BIT3 OCT 10 BIT4 OCT 20 BIT5 OCT 40 BIT6 OCT 100 0 DM20 DEC -20 0 D20 DEC 20 D40 DEC 40 D60 DEC 60 SDTL1 DEF SDTL5 5 SDTL2 DEF SDTL6 6= SDTL3 DEF SDTL7 SDTL4 DEF SDTL8 SDTL0 ASC 09,H121 BUFFER LIST// SDTL5 ASC 05,XXXXXX SDTL6 ASC 05,XXXXXX SDTL7 ASC 05,XsK640XXXXX SDTL8 ASC 04,XXXXXX// FWAA EQU * * END 6   12929-18001 1830 S 0122 DMS DIAGNOSTIC              H0101 %ASMB,A,B,L,C HED *** MEMORY EXPANSION MODULE DIAGNOSTIC *** ORG 0 SUP SPC 10 * ************************************************** * ************************************************** * ** ** * ** ** * ** ** * ** ** * ** MEMORY ** * ** EXPANSION ** * ** MODULE ** * ** DIAGNOSTIC ** * ** ** * ** ** * ** JULY 6, 1978 ** * ** ** * ************************************************** * ************************************************** SKP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074 * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE MEMSC EQU 5 DVICE EQU 0 SPC 1 ORG 100B SPC 1 JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC NOP USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL OCT 102103 FMTR BSS 1 FORMATTER SPC 1 * CONTROL LINKAGE AND DATA REFERENCES SPC 1 CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED SPC 1 * TABLE OF POINTERS SPC 1 IOIP DEF IODP TSTP DEF TSTD HDMP DEF HDMS HDMP1 DEF HDMS+21 MSP23 DEF H327+2 STDA OCT -1 STDB OCT 7 NOP NOP NOP HED *** MEM DIAGNOSTIC LINKAGE SPC 1 HDMS ASC 25,MEMORY EXPANSION MODULE DIAGNOSTIC, DSN = XXXXXX/ SPC 2 * TEST POINTER TABLE SPC 3 TSTD DEF TST00 TRANSFER MAP OR MEMORY A 0 DEF TST01 TRANSFER MAP SEQUENTIALLY A 1 DEF TST02 TRANSFER MAPS INTERNALLY A 2 DEF TST03 LOAD/STORE MAPS A 3 DEF TST04 STATUS - FENCE REGISTER A 4 DEF TST05 CROSS LOAD/STORE/COMPARE A 5 DEF TST06 MOVE WORDS INSTRUCTIONS A 6 DEF TST07 MOVE BYTES INSTRUCTIONS A 7 DEF TST10 PROTECTED MODE PRESET TEST A 8 DEF TST11 READ/WRITE-BP VIOLATIONS A 9 DEF TST12 WRITE VIOLATIONS A10 DEF TST13 PRIVILEGED INSTRUCTIONS 1 A11 DEF TST14 PRIVILEGED INSTRUCTIONS 2 A12 DEF TST15 DCPC PORTS ENABLE TEST A13 DEF TST16 READ VIOLATIONS A14 DEF TST17 INTERRUPTABLE INSTRUCTIONS A15 DEF TST20 DCPC INTERFERENCE TEST B 0 DEF TST21 VIOLATION REGISTER MAP BITS B 1 DEF TST22 MAP-LOAD REGISTER INCREMENT B 2 DEF TST23 EXTENDED MEMORY TEST B 3 DEF TST24 BASIC I/O (TCP) B 4 DEF TST25 MAP REGISTER CRUSHER B 5 DEC -1 SKP * I/O INSTRUCTION POINTER TABLE SPC 2 IODP DEF EIO01 DEF EIO02 DEF EIO03 DEF EIO04 DEF EIO4A DEF EIO05 DEF EIO06 DEF EIO07 DEF EIO08 DEF EIO09 DEF EIO10 DEF DVSC1 DEF DMACW DEF RDVC1 DEF NNIO1 DEF NNIO2 DEF NNIO4 DEF NNIO5 DEF JIO01 DEF PIO01 DEF PIO02 DEF PIO03 DEF PIO04 DEF QQIO1 DEF PTBCW DEC -1 SPC 3 * LINK ADDRESSES SPC 1 ADLNK OCT 0 M5LNK OCT 0 HED MEM/MPT VIOLATION CHECK SUBROUTINES RDVCK NOP SFC MEMSC JMP *+5 LDY RDVCK JSB ERMS,I DEF E120 RVA SSA CHECK TO SEE THAT IT WAS JMP RDVCK,I A READ VIOLATION ISZ RDVCK JMP RDVCK,I SPC 1 WTVCK NOP SFC MEMSC JMP *+5 LDY WTVCK JSB ERMS,I DEF E121 RVA AND BIT14 SZA JMP WTVCK,I ISZ WTVCK JMP WTVCK,I SPC 1 PIVCK NOP SFC MEMSC MEMV? JMP *+5 LDY PIVCK JSB ERMS,I DEF E300 RVA GET THE VIOLATION REGISTER AND BIT12 AND MAKE SURE CPA BIT12 THAT THE PRIV. INST BIT IS SET JMP PIVCK,I OK, USE CORRECT EXIT ISZ PIVCK NOT SET, USE THE JMP PIVCK,I ERROR EXIT SPC 3 E120 ASC 13,E120 RDV - MPT VIOLATION/ E121 ASC 13,E121 WTV - MPT VIOLATION/ E300 ASC 13,E300 PIV - MPT VIOLATION/ HED *** MEM DIAGNOSTIC - MAPS LOADER LODUP NOP CLA MAKE A SEQUENCE JSB MKSTB TABLE LDA LTPTB AND LDB A LOAD THE USA  USER AND SYB SYSTEM MAPS LDA OCT10 NOW PUT LDB .STB. THE SPECIAL LDX OCT05 TABLE VALUES XMM IN THE SYSTEM LDA OCT50 AND THE LDB .UTB. SPECIAL LDX OCT05 VALUES XMM IN THE USER JMP LODUP,I SPC 1 .STB. DEF *+1 OCT 11,13,14,15,16 .UTB. DEF *+1 OCT 10,12,14,15,16 SPC 2 JLOAD NOP JSB LODUP LDA OCT10 LDB .JLS. LDX OCT05 XMM LDA OCT50 LDB .JLS. LDX OCT05 XMM JMP JLOAD,I SPC 2 .JLS. DEF *+1 OCT 100010,040011,140012,13,14 HED REGISTER SAVE ROUTINES RGSVE NOP STA SVPD1 SAVE THE REGISTERS STB SVPD2 FOR STX SVPD3 ERROR STY SVPD4 REPORTING JMP RGSVE,I SPC 3 RGRS1 NOP LDA SVPD1 RESTORE THE REGISTERS LDB SVPD2 FOR ERROR REPORTING JMP RGRS1,I EXIT SPC 3 RGRS2 NOP LDX SVPD3 RESTORE LDY SVPD4 X AND Y JMP RGRS2,I SPC 3 RGRST NOP JSB RGRS1 RESTORE JSB RGRS2 ALL JMP RGRST,I REGISTERS SPC 3 SVPD1 OCT 0 SVPD2 OCT 0 SVPD3 OCT 0 SVPD4 OCT 0 HED *** MEM DIAGNOSTIC - COMMON SUBROUTINES XMMSY NOP ******************************** CLA * * LDB LTSYS * LOAD THE PATTERN FOUND IN * LDX OCT40 * LTSYS INTO THE SYSTEM MAP * XMM * * JMP XMMSY,I ******************************** SPC 3 XMMUS NOP ******************************** LDA OCT40 * * LDB LTUSR * LOAD THE PATTERN FOUND IN * LDX OCT40 * LTUSR INTO THE USER MAP * XMM * * JMP XMMUS,I ******************************** | SPC 3 P1XMM NOP ******************************** LDA OC100 * * LDB RTPTA * READ THE CONTENTS OF THE * LDX NON40 * PORT A MAP INTO RTPT1 * XMM * * JMP P1XMM,I ******************************** SPC 3 P2XMM NOP ******************************** LDA OC140 * * LDB RTPTB * READ THE CONTENTS OF THE * LDX NON40 * PORT B MAP INTO RTPT2 * XMM * * JMP P2XMM,I ******************************** SPC 3 PMON NOP CLC INTP,C PROHIBIT INTPS BEFORE WERE READY STF INTP PLACE THE SJP *+2 MEM IN ITS STC MEMSC PROTECTED JMP PMON,I MODE W/SYSTEM ENABLED SPC 2 PMONU NOP CLC INTP,C PROHIBIT INTPS BEFORE WE ARE READY STF INTP PLACE THE UJP *+2 MEM IN ITS STC MEMSC PROTECTED JMP PMONU,I MODE W/THE USER ENABLED SKP ZORCH NOP LDA MPJSB WRITE OVER STA MEMSC TCP'S SELECT LDA DVJSB CODE HALT-FILL DVSC1 STA DVICE ROUTINES JMP ZORCH,I AND EXIT SPC 1 MPJSB JSB M5LNK,I DVJSB JSB ADLNK,I SPC 2 CAINT NOP CLF INTP CAUSE AN INTRRUPT EIO06 STF DVICE ON THE DEVICE EIO07 STC DVICE CONFIGURED AT STF INTP START-UP TIME NOP WAIT FOR INTERRUPT NOP WAIT FOR INTERRUPT JSB ERMS,I NO INTERRUPT HAS DEF E066 OCCURRED, REPORT TO OPERATOR JMP CAINT,I THEN EXIT SPC 2 TRNOF NOP CLF INTP OFF THE INTERRUPT DJP *+2 AND MEM JMP TRNOF,I SPC 1 KFNCE NOP LDA OC100 MADE THE M.E.M. AND LFA M.P.T. FENCE REGISTER OTA MEMSC VALUES OCTAL 100 JMP KFNCE,I EXIT SPxC 1 OFFPM NOP LDA KERR1 PUT RECOVERY ROUTINE'S STA M5LNK ADDRESS IN THE LINK STA MEMSC CAUSE THE INTERRUPT NOP KERRA NOP TO HERE, JSB TRNOF OFF MEM AND INTP JMP OFFPM,I AND EXIT SPC 1 KERR1 DEF KERRA SKP LTZRO NOP CLA ZERO CLB THE JSB MKTBL LOAD MAP OCT 074000 TABLE JMP LTZRO,I SPC 3 RDZRO NOP CLA ZERO CLB THE JSB MKTBL READ MAP OCT 174000 TABLE JMP RDZRO,I EXIT SPC 3 LTONE NOP CCA LOAD THE LOAD CCB TABLE WITH ALL JSB MKTBL ONES AND OCT 074000 JMP LTONE,I EXIT SPC 3 CLTBL NOP JSB LTZRO ZERO BOTH JSB RDZRO TABLES JMP CLTBL,I SPC 2 BIT12 OCT 10000 BIT14 OCT 40000 SKP TBCMP NOP STA MKTB1 SAVE THE DATA PATTERN STB MKTB2 ADDRESSES FOR POINTERS LDA RTSYS CALCULATE THE CMA,INA STARTING REGISTER ADA MKTB2 AND PUT IN STA REGNR REGNR LDY NON40 XTHRU = 40 TBCM. LDA MAPSK MASK OFF AND AND MKTB2,I STORE THE READ TABLE STA B PATTERN LDA MAPSK DO THE SAME TO AND MKTB1,I LOAD TABLE PATTERN CPA B SAME PATTERN? JMP *+3 YES, OVER THE ERROR JMP TBCMP,I NO, USE ERROR EXIT TCPHR NOP RETURN CONTINUATOR ISZ REGNR BUMP THE REGISTER NUMBER ISZ MKTB1 THE LOAD TABLE POINTER ISZ MKTB2 THE READ TABLE POINTER ISY AND THRU? JMP TBCM. NO XTHRU YET, DO ANOTHER ISZ TBCMP XTHRU COMPLETE, SET UP FOR JMP TBCMP,I RETURN AND EXIT. SPC 1 MASKO OCT 100000 BIT STRIPPER MASK7 OCGT 7 REGNR OCT 0 MAPSK OCT 141777 SKP MKTBL NOP STA MKTB1 PLACE PATTERNS STB MKTB2 IN SAVE SCRATCH PADS LDA MKTBL,I GET AND STORE STA MKPD1 THE COMMAND WORD ISZ MKTBL UPDATE THE RETURN ADDRESS SSA WHICH TABLE? JSB GTRTA GO GET READ TABLE ADDRESS LDA LTSYS OR GET LOAD TABLE ADDRESS STA ADCAL STORE IN ADDRESS CALC. STA MKPNT SET UP POINTER FOR MARK LDA MKPD1 GET THE COMMAND WORD AND SYTBC WANT TO DO SZA THE SYSTEM MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OCT40 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND USTBC WANT TO DO SZA THE USER MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OC100 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND P1TBC WANT TO DO THE SZA PORT1 MAP TABLE? JSB MAKR YES LDA ADCAL GET AND UPDATE ADA OC140 THE TABLE POINTER STA MKPNT FOR NEXT TIME THRU MAKR LDA MKPD1 GET THE COMMAND WORD AND P2TBC WANT TO DO THE SZA PORT2 MAP TABLE? ?y JSB MAKR YES JMP MKTBL,I EXIT SPC 1 MKPD1 OCT 0 MAKE TABLE SCRATCH PAD REGISTER ADCAL OCT 0 ADDRESS CALCULATION REGISTER SYTBC OCT 40000 SYSTEM MAP TABLE CODE USTBC OCT 20000 USER MAP TABLE CODE P1TBC OCT 10000 PORT 1 MAP TABLE CODE P2TBC OCT 4000 PORT 2 MAP TABLE CODE MKTB1 OCT 0 MKTB2 OCT 0 SKP GTRTA NOP LDA RTSYS GET THE READ TABLE ADDRESS ISZ GTRTA SKIP OVER THE LOAD TABLE ADDRESS JMP GTRTA,I AND RETURN SPC 3 MAKR NOP LDY NON20 INITIALIZE THE XuTHRU LDA MKTB1 GET PATTERNS LDB MKTB2 ONE AND TWO STMPT STA MKPNT,I PLACE THE ISZ MKPNT PATTERNS STB MKPNT,I INTO THE ISZ MKPNT TABLE ISY XTHRU? JMP STMPT DO AGAIN JMP MAKR,I XTHRU COMPLETE, EXIT SPC 1 MKPNT OCT 0 ADDRESS POINTER PTRN1 OCT 125252 PTRN2 OCT 052525 SPC 4 LDTBL BSS 128 LOAD TABLE ***** LTSYS DEF LDTBL LTUSR DEF LDTBL+32 LTPTA DEF LDTBL+64 LTPTB DEF LDTBL+96 LTBSU DEF LDTBL+26 LTBUA DEF LDTBL+58 LTBAB DEF LDTBL+90 SPC 1 RDTBL BSS 128 READ TABLE ***** RTSYS DEF RDTBL RTUSR DEF RDTBL+32 RTPTA DEF RDTBL+64 RTPTB DEF RDTBL+96 RTBSU DEF RDTBL+26 RTBUA DEF RDTBL+58 RTBAB DEF RDTBL+90 SKP MKSTB NOP MAKE THE SEQUENCE TABLE LDB NON40 INITIALIZE STB MKST2 XTHRU COUNTER LDB LTPTB INITIALIZE STB MKST1 ADDRESS POINTER .MKST STA MKST1,I LOAD UP INA THE SEQUENCE ISZ MKST1 TABLE ISZ MKST2 FINISHED? JMP .MKST NO, DO AGAIN JMP MKSTB,I YES, EXIT SPC 1 MKST2 OCT 0 MKST1 OCT 0 SPC 3 SQALL NOP LDA NO177 STA SQAL1 XTHRU LDA LTSYS INITIALIZE STA SQAL2 ADDRESS POINTER CLA START W/ ZERO .SQAL STA SQAL2,I AND SEQUENTIALLY INA BUILD A ISZ SQAL2 COMPARE ISZ SQAL1 TABLE JMP .SQAL AND JMP SQALL,I EXIT SPC 1 SQAL1 OCT 0 SQAL2 OCT 0 HED PAGE ZERO CONSTANTS OCT01 OCT 01 OCT02 OCT 02 OCT03 OCT 03 OCT04 OCT 04 OCT05 OCT 05 OCT06 OCT 06 OCT10 OCT 10 OCT11 OCT 11 OCT12 OCT 12 OCT14 OCT 14 OCT15 OCT 15 OCT30 OCT 30 OCT33 OCT 33 OCT37 OCT 37 OCT40 OCT 40 OCT50 OCT 50 OCT73 OCT 73 OC100 OCT 100 OC140 OCT 140 OC177 OCT 200 OCT1K OCT 10<:600 OCT2K OCT 2000 FOURK OCT 4000 OC10K OCT 10000 TWNTK OCT 20000 TWN1K OCT 21000 TWN2K OCT 22000 TWN3K OCT 23000 TWN4K OCT 24000 TWN6K OCT 26000 TWN7K OCT 27000 THR2K OCT 32000 FORTK OCT 40000 FOR2K OCT 42000 FOR4K OCT 44000 FOR6K OCT 46000 OCTWO OCT 02 SPC 2 NEG01 OCT -1 NEG02 OCT -2 NEG03 OCT -3 NON05 OCT -5 NDN08 DEC -8 <  12929-18002 1830 S 0122 DMS DIAGNOSTIC              H0101 &NON20 OCT -20 NEG31 DEC -31 NEG37 OCT -37 NON40 OCT -40 NO140 OCT -140 NO177 OCT -200 NO9 OCT 176777 HED MESSAGE SECTION E050 ASC 5,E050 DJP/ E051 ASC 5,E051 DJS/ E052 ASC 5,E052 SJP/ E053 ASC 5,E053 SJS/ E054 ASC 5,E054 UJP/ E055 ASC 5,E055 UJS/ E056 ASC 5,E056 JRS/ E057 ASC 5,E057 JRS/ E060 ASC 5,E060 SSM/ E061 ASC 5,E061 DJS/ E062 ASC 5,E062 SJS/ E063 ASC 5,E063 UJS/ E064 ASC 5,E064 RSA/ E065 ASC 5,E065 RSB/ E066 ASC 5,E066 LFA/ E067 ASC 5,E067 LFB/ E316 ASC 8,E316 VR MAP 12/ E301 ASC 8,E301 VR MAP 15/ E302 ASC 8,E302 VR MAP 00/ E303 ASC 8,E303 VR MAP 11/ E325 ASC 7,E325 M-E BUS/ HED EXECUTIVE CONTROL ORG 2000B SPC 2 ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF CLE CONVERT DSN AND ATTACH TO LDA DSNL HEADER MESSAGE LDB HDMP1 JSB O2AS,I LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LIA SW CLEAR S-REG BIT 9 AND NO9 OTA SW LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA  TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITHOUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * ^* ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION 9o ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS CLA CLEAR S-REG OTA SW HLT 74B ALLOW OPERATOR TO CHANGE SWITCH JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * * TST24 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST24,I * * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB R*($A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 *   12929-18003 1830 S 0122 DMS DIAGNOSTIC              H0101 ' CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INST\RUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * *  * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 15,E020 PRESET DID NOT SET FLAG/ ZBE21 ASC 17,E021 PRESET DID NOT DISABLE INTS/ ZBE22 ASC 17,E022 PRESET DID NOT CLEAR CONTROL/ ZBE23 ASC 18,E023 PRESET DID NOT CLEAR I-O LINES/ ZBM24 ASC 12,H024 PRESS PRESET, RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED MESSAGES E031 ASC 5,E031 XMA/ E032 ASC 5,E032 XMB/ E033 ASC 5,E033 XMM/ E034 ASC 5,E034 XMM/ E035 ASC 5,E035 XMM/ E036 ASC 5,E036 XMM/ E037 ASC 5,E037 SYA/ E040 ASC 5,E040 SYB/ E041 ASC 5,E041 USA/ E042 ASC 5,E042 USB/ E043 ASC 5,E043 PAA/ E044 ASC 5,E044 PAB/ E045 ASC 5,E045 PBA/ E046 ASC 5,E046 PBB/ E047 ASC 12,E047 INTERFERENCE ERROR/ E304 ASC 6,E304 A-REG/ E305 ASC 6,E305 B-REG/ E306 ASC 6,E306 X-REG/ E307 ASC 6,E307 A-REG/  E310 ASC 6,E310 B-REG/ E311 ASC 6,E311 X-REG/ E312 ASC 6,E312 A-REG/ E313 ASC 6,E313 A-REG/ E314 ASC 6,E314 A-REG/ E315 ASC 6,E315 A-REG/ E122 ASC 5,E122 MWF/ E123 ASC 5,E123 MWF/ E124 ASC 5,E124 MWI/ E125 ASC 5,E125 MWI/ E126 ASC 5,E126 MWW/ E127 ASC 5,E127 MWW/ HED *** XMA-XMB *** TRANSFER MAPS INTERNALLY PER A B ORG 4000B * * * * * XMA/XMB - TRANSFER MAPS * CALLING SEQUENCE: * LDA WORD1 * XMA/B. * * WORD FORMAT: * A/B(15)=0=SYSTEM * A/B(15)=1=USER * A/B(0) =0=PORT1 * A/B(1) =1=PORT2 * * EG. A=100001 XFER USER TO PORT2 * A=000000 XFER SYSTEM TO PORT1 * A=000001 XFER SYSTEM TO PORT2 * * TEST 02 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO EXECUTE AN XMA/B INSTRUCTION. * * TEST 02 IS MADE UP OF EIGHT SUBTESTS, EACH OF WHICH TEST ONE * FUNCTION OF THE XMA/B INSTRUCTIONS. * * * * IF AN ERROR IS DETECTED IN TST02, ONE OF TWO MESSAGES WILL BE * OUTPUT OT THE CONSOLE, "E031 XMA" OR "E032 XMB". IN EITHER * CASE, THE A,B,X AND Y REGISTERS WILL CONTAIN THE FOLLOWING * INFORMATION: * * T=HALT CODE * A=GOOD PATTERN * B=BAD PATTERN * X=FAILING REGISTER * Y=ADDRESS OF THE FAILURE * * * SKP TST02 EQU * SPC 1 NOP JSB RDZRO CLEAR THE READ TABLE LDA PTRN1 MAKE THE SYSTEM LDB PTRN2 TABLE CONTENTS JSB MKTBL EQUAL TO OCT 040000 PATTERN1/2 JSB XMMSY WRITE THE SYSTEM MAP REGISTERS SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ LDA XFRS1 XFER SYSTEM TO PORTA WORD XMA USING THE XMA INSTRUCTION NOP CHANGE TO JMP *-N FOR LO OP/ SPC 1 JSB P1XMM READ PORTA MAP LDA LTSYS VERIFY PROPER OPERATION LDB RTPTA OF XMA SYS-PA, BY JSB TBCMP COMPARING THE TABLES JSB XMAER ERROR DETECTED, REPORT. NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 LDA PTRN2 SET UP THE SYSTEM LDB PTRN1 TABLE CONTENTS JSB MKTBL FOR THE NEXT OCT 040000 TRANSFER JSB XMMSY WRITE THE SYSTEM MAP REGISTERS NOP SPC 1 LDA XFRS2 XFER THE CONTENTS OF THE XMA SYSTEM MAP TO THE PORT B MAP NOP SPC 1 JSB P2XMM READ THE PORT B MAP LDA LTSYS VERIFY PROPER OPERATION LDB RTPTB OF XMA SYS-PB, BY JSB TBCMP COMPARING THE TABLES JSB XMAER REPORT THE DETECTED ERROR NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 JSB CLTBL ZERO BOTH TABLES LDA PTRN1 SET UP THE USER LDB PTRN2 TABLE CONTENTS JSB MKTBL FOR XFER TO OCT 020000 PORT A MAP JSB XMMUS LOAD THE USER MAP REGISTERS SPC 1 LDA XFRU1 SETUP AND EXECUTE XMA THE USER TO PORT A TRANSFER NOP CHANGE TO JMP *-N FOR LOOP/ SKP JSB P1XMM READ THE CONTENTS OF PORT A MAP LDA LTUSR AND COMPARE THE TWO TABLES LDB RTPTA FOR PROPER OPERATION JSB TBCMP OF THE TRANSFER JSB XMAER REPORT THE DETECTED ERROR NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA PTRN2 CHANGE THE PATTERN IN LDB PTRN1 THE LOADER TABLE JSB MKTBL AND LOAD UP OCT 020000 THE USER MAP JSB XMMUS REGISTERS NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA XFRU2 L SETUP AND EXECUTE THE USER MAP XMA TO PORTB MAP TRANSFER NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 JSB P2XMM READ THE CONTENTS OF PORT B MAP LDA LTUSR AND COMPARE THE TWO TABLES LDB RTPTB FOR PROPER OPERATION JSB TBCMP OF THE TRANSFER JSB XMAER REPORT ERROR NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 JSB RDZRO CLEAR READ TABLE LDA PTRN1 LOAD UP THE LDB PTRN2 SYSTEM MAP JSB MKTBL LOAD TABLE, OCT 040000 AND STORE INTO JSB XMMSY SYSTEM MAP SPC 1 LDB XFRS1 EXECUTE THE XMB XMB INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 JSB P1XMM READ THE PORT A MAP LDA LTSYS AND DO A LDB RTPTA COMPARISON OF JSB TBCMP THE TWO TABLES JSB XMBER REPORT XMB FAILURE NOP SPC 2 LDA PTRN2 CHANGE THE PATTERN LDB PTRN1 IN THE SYSTEM MAP TABLE JSB MKTBL AND RELOAD THE OCT 040000 SYSTEM MAP JSB XMMSY LOAD TABLE SKP LDB XFRS2 EXECUTE XMB XMB SYSTEM TO PORT B MAP SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ JSB P2XMM READ THE PORT B MAP LDA LTSYS AND VERIFY PROPER EXECUTION LDB RTPTB OF XMS BY COMPARING JSB TBCMP THE TWO TABLES JSB XMBER REPORT THE FAILURE NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 LDA PTRN1 SET UP THE USER MAP LDB PTRN2 LOAD TABLE WITH A JSB MKTBL RECOGNIZABLE OCT 020000 PATTERN AND LOAD UP JSB XMMUS THE USER MAP SPC 1 ` LDB XFRU1 EXECUTE THE XMB XMB USER TO PORT A MAP NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 JSB P1XMM READ THE PORT A MAP LDA LTUSR AND VERIFY PROPER EXECUTION LDB RTPTA OF XMS BY COMPARING JSB TBCMP THE TWO TABLES JSB XMBER REPORT PROBLEM NOP SPC 2 LDA PTRN2 CHANGE THE PATTERN IN THE LDB PTRN1 USER LOAD TABLE AND LOAD JSB MKTBL THE USER MAP OCT 020000 * JSB XMMUS * SPC 1 LDB XFRU2 EXECUTE THE XMB XMB USER TO PORT B MAP NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 JSB P2XMM READ THE PORT B MAP AND LDA LTUSR VERIFY PROPER EXECUTION OF LDB RTPTB XMS BY COMPARING JSB TBCMP TWO TABLES JSB XMBER REPORT DIFFERENCE BETWEEN TABLES NOP CHANGE TO JMP *-N FOR LOOP/ JMP TST02,I SKP XFRS1 OCT 0 XFRS2 OCT 1 XFRU1 OCT 100000 XFRU2 OCT 100001 SPC 2 XMAER NOP JSB RGSVE SAVE THE REGISTERS LDY XMAER GET THE FAIL FLAG LDX REGNR GET THE FAILING REGISTER JSB ERMS,I PREPORT XMA DEF E031 FAILURE JSB RGRS2 RESTORE X & Y JMP TCPHR CONTINUE SPC 3 XMBER NOP JSB RGSVE SAVE REGISTERS LDX REGNR GET FAILING REGISTER NUMBER LDY XMBER AND THE FAIL FLAG JSB ERMS,I REPORT XMB DEF E032 FAILURE JSB RGRS2 RESTORE X & Y TO CONTINUE JMP TCPHR CONTINUE SPC 3 HED *** MEM DIAGNOSTIC *** - XMM * XMM - EXCHANGE MAPS AND MEMORY * CALLING SEQUENCE: * * LDA WORD1 * LDB WORD2 * LDX WORD3 * XMM * * * * * WORD FORMAT: * * WORD 1 -f MAP ADDRESS OF FIRST REGISTER * TO BE LOADED BY XMM * * REGISTER 0-31 - SYSTEM MAP * REGISTER 32-63 - USER MAP * REGISTER 64-95 - PORT 1 MAP * REGISTER 96-127- PORT 2 MAP * * WORD 2 - ADDRESS OF THE FIRST WORD * OF THE MEMORY TABLE TO BE * USED FOR THE LOAD. THIS * TABLE CONTAINS THE ABSOLUTE * PAGE NUMBERS BEING ASSIGNED * TO THE MAP REGISTERS. * * * WORD 3 - NUMBER OF REGISTERS TO BE LOADED * * (POSITIVE NUMBER LOADS THE REGISTERS) * (NEGATIVE NUMBER LOADS MEMORY) * * * * * * SKP * * * * * TST00 - XMM * * THIS TEST VERIFIES PROPER OPERATION OF THE HARDWARE AND * FIRMWARE REQUIRED TO EXECUTE AN XMM INSTRUCTION. THE TEST * STARTS BY DOING A REGISTER ADDRESS TEST, ONE REGISTER AT A * TIME. WHEN ALL REGISTERS HAVE BEEN LOADED, READ AND VERIFIED * FOR LOAD/READ ABILITY, EACH MAP IS THEN TESTED USING VARIOUS * DATA PATTERNS, SUCH AS,ALL ONES, OR ALL ZEROS, ALTERNATE * ONES AND ZEROS, ETC. WHEN ALL FOUR MAPS HAVE BEEN TESTED * IN THIS MANNER, THE ABILITY TO EXECUTE LOAD/READ INSTRUCTIONS * ACROSS MAP BOUNDRIES IS VERIFIED. FINALLY THE XMM LOAD/READ * IS PERFORMED GIVING ALL FOUR MAPS AS THE CHARACTER COUNT * AND THE ROUTINE IS EXITED. * * * IF AN ERROR IS DETECTED WHILE RUNNING TST00, THE COMPUTER WILL * HALT WITH THE FOLLOWING INFORMATION AVAILABLE: * * T REGISTER = HALT CODE * A REGISTER = GOOD PATTERN * B REGISTER = BAD PATTERN * X REGISTER = FAILING REGISTER * Y REGISTER = ADDRESS OF FAILURE * * * * * SKP TST00 EQU * SPC 1 NOP SPC 1 * SINGLE REGISTER XMM - LOAD, READ AND COMPARE SPC 1 JSB LTZRO CLEAR THE LOAD TABLE LDA ND128 STA TSTA1 INITIALIZE ROUTIk'640NES CLA XTHRU STA TSTA2 COUNTER INA AND REGISTER NUMBER STA TSTA3 AND REGISTER COUNT TSTA. LDA TSTA2 GET THE REGISTER NUMBER LDB TSTA4 AND THE TABLE POINTER LDX TSTA3 AND THE COUNT XMM AND LOAD THE MAP REGISTER NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA TSTA2 GET REGISTER NUMBER 6   12929-18004 1830 S 0122 DMS DIAGNOSTIC              H0101 ( LDB TSTA5 AND THE TABLE POINTER LDX NSTA3 AND THE NEGATIVE COUNT XMM THEN LOAD THE MAP REGISTERS NOP CHANGE TO JMP *-N FOR LOOP/ LDA MAPSK GET MASK CONSTANT AND TSTA5,I STRIP OFF NON-RETURNABLE BITS STA B PUT IN B TO COMPARE LDA MAPSK GET THE CONSTANT AGAIN AND TSTA4,I STRIP OFF THE BITS CPA B COMPARE THE TWO WORDS JMP BUMPR COMPARISON OK, JUMP OVER ERROR FA1 LDX TSTA2 GET REGISTER LDY FAD1 AND ADDRESS JSB ERMS,I REPORT SINGLE MAP DEF E033 XMM FAILURE BUMPR ISZ TSTA2 BUMP REGISTER NUMBER POINTER ISZ TSTA1 AND XTHRU COUNTER. XTHRU? JMP TSTA. NO, DO IT FOR ANOTHER REGISTER NOP YES, CONTINUE SKP SPC 1 * SINGLE MAP XMM - LOAD, READ AND COMPARE. SPC 1 JSB LTONE LOAD THE LOAD TABLE W/ALL ONES JSB RDZRO AND CLEAR THE READ TABLE * CLA,INA RESET THE STA WHCON WHICH ONE POINTER TST.A CLA LOAD THE SYSTEM MAP REGISTERS LDB LTSYS WITH THE CONTENTS OF THE LDX OCT40 TABLE NAMED LTSYS XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 CLA LDB RTSYS NOW READ BACK THE LDX NON40 SYSTEM MAP INTO RTSYS XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTSYS COMPARE THE LDB RTSYS LOAD AND READ JSB TBCMP TABLES. JSB SMERR DID NOT COMPARE, REPORT ERROR NOP CONTINUE (CHANGE TO JMP *-N FOR LOOP/) SPC 2 LDA OCT40 LOAD THE USER MAP REGISTERS LDB LTUSR LDX OCT40 WITH THE CONTENTS OF LTUSR XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA OCT40 READ BACK THE LDB RTUSR USER MAP REGISTERS LDX NON40 Å INTO RTUSR XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTUSR COMPARE THE USER MAP LDB RTUSR LOAD AND READ JSB TBCMP TABLES JSB SMERR DID NOT COMPARE, REPORT ERROR NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 LDA OC100 LOAD THE PORTA MAP REGISTERS LDB LTPTA WITH THE CONTENTS OF LDX OCT40 THE TABLE NAMED LTPTA XMM NOP CHANGE TO JMP *-N FOR LOOP/ SKP LDA OC100 NOW READ BACK THE LDB RTPTA PORTA MAP REGISTERS LDX NON40 INTO RTPTA XMM WITH XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTPTA COMPARE THE PORTA MAP LDB RTPTA LOAD AND READ JSB TBCMP TABLES JSB SMERR DID NOT COMPARE, REPORT ERROR SPC 3 LDA OC140 LOAD THE PORTB MAP REGISTERS LDB LTPTB WITH THE CONTENTS OF LDX OCT40 THE TABLE NAMED LTPTB XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA OC140 NOW READ BACK THE LDB RTPTB PORT B MAP REGISTERS LDX NON40 INTO RTPTB XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTPTB COMPARE THE PORTB MAP LDB RTPTB LOAD AND READ JSB TBCMP TABLES JSB SMERR DID NOT COMPARE, REPORT ERROR SPC 1 JSB PTNCG CHANGE THE PATTERN JMP TST.A AND DO AGAIN SKP SPC 1 * BOUNDRY AREA XMM SPC 1 JSB RDZRO ZERO THE READ TABLE LDA OCT33 STARTING WITH REGISTER 27 LDB LTBSU FOR 12 REGISTERS, DO AN LDX DEC12 ACROSS THE BOUNDRIES LOAD XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA OCT33 READ BACK LDB RTBSU THE BOUNDRY AREA LOAD LDX NDN12 INTO RTBSU XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTBSU COMPARE THE BOUNDRY LDB RTBSU AREA LOAD AND READ JSB BACMP TABLES JSB BAERR ERROR DETECTED, REPORT. SPC 1 LDA OCT73 STARTING WITH REGISTER 59 LDB LTBUA FOR 12 REGISTERS, DO AN LDX DEC12 ACROSS THE BOUNDRY XMM XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA OCT73 NOW READ BACK THE LDB RTBUA BOUNDRY AREA TO THE LDX NDN12 READ TABLE RTBUA XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTBUA COMPARE THE BOUNDRY AREA LDB RTBUA BETWEEN THE USER AND PORTA JSB BACMP MAP REGISTERS JSB BAERR ERROR DETECTED, REPORT IT SPC 2 LDA OC133 STARTING WITH REGISTER 91 LDB LTBAB FOR 12 REGISTERS, DO LDX DEC12 AN ACROSS THE BOUNDRIES XMM XMM NOP SPC 1 LDA OC133 READ BACK THE BOUNDRY LDB RTBAB AREA REGISTERS INTO LDX NDN12 THE READ TABLE AREA XMM NOP SPC 1 LDA LTBAB COMPARE THE TWO TABLES LDB RTBAB FOR PROPER EXECUTION JSB BACMP OF XMM BETWEEN PORTSA&B JSB BAERR ERROR DETECTED, REPORT IT. SKP * ALL MAP REGISTERS XMM - LOAD, READ AND COMPARE SPC 1 JSB RDZRO ZERO THE READ TABLE AREA LDA PTRN1 AND PLACE AN ALTERNATE LDB PTRN2 ONES AND ZEROS PATTERN JSB MKTBL IN THE LOAD TABLE AREA. OCT 074000 NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 CLA LOAD THE ENTIRE CONTENTS LDB LTSYS OF THE LOAD MAP TABLE LDX DE128 INTO THE MAP REGISTERS. XMM NOP SPC 1 CLA NOW READ ALL FOUR MAPS LDB RTSYS INTO THE MEMORY TABLE OY LDX ND128 NAMED RDTBL. XMM NOP SPC 1 JSB ALCMP COMPARE TABLES JSB XALER ERROR DETECTED, REPORT NOP JMP TST00,I EXIT XMM ROUTINE SPC 5 ND128 DEC -128 TSTA1 OCT 0 TEST 00 SCRATCH PAD 1 TSTA2 OCT 0 TEST 00 SCRATCH PAD 2 TSTA3 OCT 0 TEST 00 SCRATCH PAD 3 TSTA4 DEF LDTBL FAD1 DEF FA1 NSTA3 OCT -1 TSTA5 DEF RDTBL WHCON OCT 0 DEC12 DEC 12 NDN12 DEC -12 OC133 OCT 133 DE128 DEC 128 SKP PTNCG NOP LDA WHCON GET WHICH ONE POINTER CPA OCT01 CHANGE TO PATTERN ZEROS? JMP CH1ST YES, CHANGE THEM CPA OCT02 NO, CHANGE TO ALTERNATE 1S-0S? JMP CH2ND YEP, DO IT CPA OCT03 NO. CHANGE TO ALTERNATE 0S-1S? JMP CH3RD YES, DO ALT. 0S AND 1S. CPA OCT04 NO, HOW ABOUT 3D 1S AND 0S? JMP CH4TH O.K., DO CPA OCT05 NO, THEN IT MUSTBE JMP CH5TH 3D 0S AND 1S. CH1ST JSB LTZRO CLEAR OUT THE LOAD TABLE ISZ WHCON BUMP WHICH ONE POINTER JMP PTNCG,I AND BACK TO ROUTINE SPC 1 CH2ND LDA PTRN1 GET PATTERN ONE LDB A IN THE A&B REGISTERS JSB MKTBL AND PUT IT IN OCT 074000 THE READ TABLE ISZ WHCON BUMP THE WHICH ONE POINTER, JMP PTNCG,I AND BACK TO THE ROUTINE SPC 1 CH3RD LDA PTRN2 GET PATTERN TWO LDB A TABLE WITH AN JSB MKTBL ALTERNATE 1S AND OCT 074000 ZEROS PATTERN ISZ WHCON BUMP WHICH ONE POINTER JMP PTNCG,I AND EXIT SPC 1 CH4TH LDA PTRN1 PUT NEW LDB PTRN2 PATTERN JSB MKTBL IN THE LOAD OCT 074000 TABLE, ISZ WHCON INCREMENT WHICH ONE POINTER JMP PTNCG,I AND EXIT SPC 1 CH5TH LDA PTRN2 PUT NEW REVERSE LDB PTRN1 PATTERN JSB MKTBL IN THE LOAD OCT 074000 TABLE ISZ PTNCG BUMP THE RETURN ADDRESS JMP PTNCG,I AND CONTINUE. SKP SMERR NOP JSB RGSVE SAVE THE REGISTERS LDX REGNR GET FAILING ADDRESS LDY SMERR MAKE THE JSB ERMS,I REPORT XMM DEF E034 FAILURE JSB RGRS2 RESTORE X&Y JMP TCPHR CONTINUE SPC 3 BAERR NOP JSB RGSVE LDX REGNR LDY BAERR JSB ERMS,I REPORT XMM DEF E035 FAILURE JSB RGRS2 JMP BCPHR SPC 5 XALER NOP JSB RGSVE LDX REGNR LDY XALER JSB ERMS,I REPORT XMM DEF E036 FAILURE JSB RGRS2 JMP TCPHR CONTINUE SPC 3 SKP BACMP NOP STA BACM1 INITIALIZE THE LOAD AND READ STB BACM2 REGISTER ADDRESS POINTERS. LDA LTSYS CALCULATE THE CMA,INA STARTING REGISTER ADA BACM1 NUMBER AND PLACE IN STA REGNR THE REGISTER NUMBER LDA NDN12 INITIALIZE THE STA BACM3 XTHRU COUNTER BACM. LDA MAPSK MASK BITS 13-10 AND BACM2,I FROM THE EXPECTED STA B PLACE IN B TO COMPARE LDA MAPSK MASK OFF BITS 13-10 AND BACM1,I FROM THE ACTUAL CPA B AND COMPARE THE TWO JMP *+3 YES, JUMP OVER ERROR JMP BACMP,I PATTERN AND GO REPORT IT. BCPHR NOP CONTINUE UNTIL XTHRU ISZ REGNR BUMP THE REGISTER NUMBER ISZ BACM1 THE READ TABLE POINTER ISZ BACM2 THE LOAD TABLE POINTER ISZ BACM3 THE XTHRU JMP BACM. NO XTHRU, DO AGAIN ISZ BACMP XTHRU COMPLETE, BUMP OVER ERROR JMP BACMP,I AND BACK TO CALLER SPC 1 BACM1 OCT 0 BACM2 OCT 0 BACM3 OCT 0 SPC 3 ALCMP NOP ******************************** LDA LTSYS *  * LDB RTSYS * COMPARE * JSB TBCMP * ALL FOUR * JMP ALCMP,I * MAPS * NOP * IF ANY ERROR DETECTED * LDA LTUSR * * LDB RTUSR * REPORT BACK TO CALLER * JSB TBCMP * * JMP ALCMP,I * IF NO ERRORS * LDA LTPTA * DETECTED. * LDB RTPTA * * JSB TBCMP * BUMP RETURN * JMP ALCMP,I * ADDRESS AND * LDA LTPTB * EXIT. * LDB RTPTB * * JSB TBCMP * * JMP ALCMP,I * * ISZ ALCMP * * JMP ALCMP,I ******************************** HED MEM DIAGNOSTIC - LOAD/STORE MAPS * * TEST 03 STARTS WITH THE SYA INSTRUCTION (LOAD SYSTEM MAP) * AND PLACES THE CONTENTS OF LOAD SYSTEM MAP TABLE (LTSYS) * INTO THE SYSTEM MAP REGISTERS. SYA IS USED AGAIN, THIS TIME * USING A NEGATIVE SIGN BIT IN THE TABLE ADDRESS TO READ THE * CONTENTS OF THE SYSTEM MAP REGISTERS INTO THE READ SYSTEM MAP * TABLE (RTSYS). THEN THE LOAD AND READ TABLE CONTENTS ARE * COMPARED TO INSURE PROPER OPERATION AND EXECUTION OF THE SYA * INSTRUCTION. NOW, A DIFFERENT PATTERN IS ESTABLISHED IN THE * LOAD SYSTEM MAP TABLE AND THE PROCESS IS REPEATED THIS TIME * USING SYB, WHICH IS THE B-REGISTER COUNTERPART OF SYA. * * THIS SAME SCHEME IS REPEATED USING INSTRUCTIONS AND LOAD AND * READ TABLES TO INSURE PROPER EXECUTION OF: * * USA LOAD/READ USER MAP FROM/TO THE A-REGISTER * USB LOAD/READ USER MAP FROM/TO THE B-REGISTER * * PAA LOAD/READ PORTA MAP FROM/TO THE A-REGISTER * PAB LOAD/READ PORTA MAP FR&OM/TO THE B-REGISTER * * PBA LOAD/READ PORTB MAP FROM/TO THE A-REGISTER * PBB LOAD/READ PORTB MAP FROM/TO THE B-REGISTER * * WHEN THESE EIGHT INSTRUCTIONS HAVE BEEN VERIFIED FOR PROPER * EXECUTION.INDIVIDUALLY, THEY ARE TESTED TO MAKE SURE THEY * DO NOT INTERFERE WITH THE EXECUTIONS OF ONE ANOTHER, AND THE * TEST IS EXITED. * * * CALLING SEQUENCE: LDA/B TABLE * SYA/B * * * * IF AN ERROR IS DETECTED WHILE EXECUTING TST03, THE ERROR CODE * AND FAILING INSTRUCTION ARE OUTPUT ON THE COUNSOLE, AND THE * PROGRAM HALTS THE COMPUTER. AT THIS TIME THE T,A,B,X AND Y * REGISTERS CAN BE INTERROGATED TO DETERMINE THE CAUSE AND * LOCATION OF THE ERROR, AND WHERE IN THE PROGRAM IT WAS * DETECTED. * * THE FORMAT FOR DETERMINING THESE CONDITIONS AND LOCATION IS AS * FOLLOWS: * * T REGISTER = HALT CODE * A REGISTER = GOOD PATTERN * B REGISTER = BAD PATTERN * X REGISTER = FAILING REGISTER NUMBER * Y REGISTER = ADDRESS OF FAILURE SKP TST03 EQU * SPC 1 NOP JSB CLTBL ZERO BOTH LOAD AND READ TABLES LDA PTRN1 ESTABLISH THE LDB PTRN2 FIRST PATTERN JSB MKTBL IN THE LOAD MAP OCT 040000 TABLE SPC 1 LDA LTSYS LOAD THE SYSTEM MAP REGISTERS SYA USING THE SYA INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA RTSYS READ THE SYSTEM MAP REGISTERS IOR MASKO INTO THE CONTENTS OF THE SYA SYSTEM READ TABLE NOP SPC 1 LDA LTSYS GET THE LOAD AND LDB RTSYS READ TABLE POINTERS JSB TBCMP AND COMPARE THE TWO. JSB SYAER ERROR DETECTED, REPORT IT. JSB CLTBL ZERO THE LOAD/READ TABLES SPC 2 LDA PTRN2 ESTABLISH THE SECOND LDB PTRN1 PATTERN IN JSB MKTBL THE LOAD MAP OCT 040000 TABLE LDB LTSYS LOAD THE SYSTEM MAP REGISTERS SYB USING SYB NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA RTSYS SET UP ADDRESS WITH THE IOR MASKO NEGATIVE SIGN BIT LDB A AND TRANSFER TO B-REGISTER. SYB READ THE SYSTEM MAP INTO RTSYS NOP SPC 1 LDA LTSYS COMPARE THE LOAD LDB RTSYS AND READ TABLES TO JSB TBCMP VERIFY PROPER EXECUTION JSB SYBER ERROR DETECTED, REPORT SKP JSB CLTBL ZERO LOAD AND READ TABLES LDA PTRN1 ESTABLISH PATTERN 1 LDB PTRN2 IN THE LOAD TABLE JSB MKTBL FOR THE USER MAP OCT 020000 REGISTERS. LDA LTUSR EXECUTE THE USA INSTRUCTION USA NOP SPC 1 LDA RTUSR NOW READ THE USER MAP REGISTERS IOR MASKO INTO THE CONTENTS OF THE READ USA TABLE USING USA NOP SPC 1 LDA LTUSR COMPARE THE LOAD AND LDB RTUSR READ TABLES TO VERIFY PROPER JSB TBCMP EXECUTION OF THE USA INST. JSB USAER ERROR DETECTED, REPORT SPC 2 LDA PTRN2 ESTABLISH PATTERN TWO LDB PTRN1 IN THE LOAD TABLE JSB MKTBL FOR THE USER MAP OCT 020000 REGISTERS. LDB LTUSR LOAD THE USER MAP REGISTERS WITH USB LOAD TABLE CONTENTS USING USB NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA RTUSR NOW READ THE USER MAP REGISTERS IOR MASKO INTO THE RTUSR TABLE POINTER LDB A TO BY THE CONTENTS USB OF THE B REGISTER NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTUSR COMPARE THE LOAD AND LDB RTUSR READ TABLES TO VERIFY JSB TBCMP PROPER EXECTUION OF USB JSB USBER ERROR DETECTED, REPORT. SKP MJSB CLTBL ZERO THE LOAD AND READ TABLES LDA PTRN1 ESTABLISH PATTERN ONE LDB PTRN2 IN THE LOAD TABLE JSB MKTBL FOR THE PORTA MAP OCT 010000 REGISTERS LDA LTPTA EXECUTE THE PAA INSTRUCTION WITH PAA PAA NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA RTPTA READ THE PORTA MAP REGISTERS IOR MASKO INTO THE CONTENTS OF THE READ PAA TABLE USING PAA NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDA LTPTA COMPARE THE TWO TABLES TO LDB RTPTA VERIFY PROPER EXECUTION OF JSB TBCMP THE PAA INSTRUCTION. JSB PAAER ERROR DETECTED, REPORT SPC 2 LDA PTRN2 NOW REVERSE THE PATTERN LDB PTRN1 IN THE PORTA LOAD TABLE JSB MKTBL TO ESTABLISH A PATTERN OCT 010000 TO CHECK PAB LDB LTPTA EXECUTE THE PAB INSTRUCTION WITH PAB PAB NOP SPC 1 LDA RTPTA READ BACK INTO THE READ TABLE IOR MASKO USING THE PAB INSTRUCTION LDB A AND THE NEGATIVE PAB ADDRESS POINTER NOP SPC 1 LDA LTPTA COMPARE THE TWO TABLES TO LDB RTPTA VERIFY PROPER EXECUTION OF JSB TBCMP THE PAB INSTRUCTION. JSB PABER ERROR DETECTED, REPORT. SKP JSB CLTBL ZERO THE LOAD AND READ TABLES LDA PTRN1 ESTABLISH PATTERN ONE LDB PTRN2 IN THE LOAD TABLE JSB MKTBL CONTENTS OF THE OCT 4000 PORTB MAP LDA LTPTB EXECUTE THE PBA INSTRUCTION PBA LOADING THE PORTB MAP NOP SPC 1 LDA RTPTB NOW, USING THE NEGATIVE SIGN IOR MASKO BIT OF THE POINTER, REVERSE PBA DIRECTION OF THE INSTRUCTION NOP SPC 1 LDA LTPTB COMPARE THE TWO TABLES CONTENTS LDB RTPTB TO VERIFY PROPER EXECUTION OF?  JSB TBCMP THE PBA INSTRUCTION JSB PBAER ERROR DETECTED, REPORT SPC 2 LDA PTRN2 REVERSE THE PATTERN LDB PTRN1 IN THE LOAD TABLE JSB MKTBL CONTENTS OF THE OCT 4000 PORTB MAP. LDB LTPTB EXECUTE THE PBB INSTRUCTION PBB NOP SPC 1 LDA RTPTB REVERSE THE SIGN BIT OF IOR MASKO THE BREG POINTER, AND LDB A EXECUTE THE PBB PBB NOP SPC 1 LDA LTPTB COMPARE THE TWO TABLES TO LDB RTPTB VERIFY PROPER EXECUTION OF JSB TBCMP THE PBB INSTRUCTION JSB PBBER ERROR DETECTED, REPORT. SKP JSB RDZRO CLEAR THE READ TABLE LDA PTRN1 LOAD ALTERNATE LDB A ONES AND ZEROS JSB MKTBL INTO THE LOAD OCT 040000 SYSTEM TABLE LDA PTRN2 LOAD ALTERNATE LDB A ZEROS AND ONES JSB MKTBL INTO THE LOAD OCT 020000 USER TABLE LDA PTRN1 LOAD AN ALTERNATE ONES- LDB PTRN2 ZEROS THEN ZEROS-ONES JSB MKTBL PATTERN INTO THE OCT 010000 LOAD PORTA TABLE LDA PTRN2 LOAD AN ALTERNATE ZEROS- LDA PTRN1 ONES,THEN ONES-ZEROS JSB MKTBL PATTERN INTO THE OCT 04000 LOAD PORTB TABLE NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 LDB LTSYS LOAD SYSTEM MAP REGISTERS SYB * LDB LTUSR LOAD USER MAP REGISTERS USB * LDB LTPTA LOAD THE PORTA MAP REGISTERS PAB * LDB LTPTB LOAD THE PORTB MAP REGISTERS PBB * LDA RTSYS READ BACK IOR MASKO THE SYSTEM MAP REGISTERS SYA * LDA RTUSR READ BACK THE IOR MASKO USER MAP REGISTERS USA * LDA RTPTA READ BACK THE IOR MASKO PORTA MAP REGISTERS PAA * >B@< LDA RTPTB READ BACK THE IOR MASKO PORTB MAP REGISTERS PBA * SKP JSB ALCMP COMPARE ALL FOUR MAPS JSB INFER ERROR DETECTED, REPORT LDA RTPTB NOW REVERSE THE IOR MASKO SEQUENCE PBA INTERFERENCE LDA RTPTA CHECK IOR MASKO FOR PAA OVERLAY LDA RTUSR OF IOR MASKO REGISTER USA CONTENTS LDA RTSYS * IOR MASKO * SYA SPC 1 JSB ALCMP COMPARE ALL FOUR MAPS JSB INFER INTERFERENCE ERROR DETECTED. NOP CHANGE TO JMP *-N FOR LOOP/ JMP TST03,I EXIT. SKP SYAER NOP JSB RGSVE LDX REGNR LDY SYAER JSB ERMS,I REPORT SYA DEF E037 FAILURE JSB RGRS2 JMP TCPHR SPC 2 SYBER NOP JSB RGSVE LDX REGNR LDY SYBER dB  12929-18005 1830 S 0122 DMS DIAGNOSTIC              H0101 ) JSB ERMS,I REPORT SYB DEF E040 FAILURE JSB RGRS2 JMP TCPHR SPC 2 USAER NOP JSB RGSVE LDX REGNR LDY USAER JSB ERMS,I REPORT USA DEF E041 FAILURE JSB RGRS2 JMP TCPHR SPC 2 USBER NOP JSB RGSVE LDX REGNR LDY USBER JSB ERMS,I REPORT USB DEF E042 FAILURE JSB RGRS2 JMP TCPHR SPC 2 PAAER NOP JSB RGSVE LDX REGNR LDY PAAER JSB ERMS,I REPORT PAA DEF E043 FAILURE JSB RGRS2 JMP TCPHR CONTINUE SKP PABER NOP JSB RGSVE LDX REGNR LDY PABER JSB ERMS,I REPORT PAB DEF E044 FAILURE JSB RGRS1 JMP TCPHR CONTINUE SPC 2 PBAER NOP JSB RGSVE LDX REGNR LDY PBAER JSB ERMS,I REPORT PBA DEF E045 FAILURE JSB RGRS2 JMP TCPHR CONTINUE SPC 2 PBBER NOP JSB RGSVE LDX REGNR LDY PBBER JSB ERMS,I REPORT PBB DEF E046 FAILURE JSB RGRS2 JMP TCPHR CONTINUE SPC 2 SPC 2 INFER NOP JSB RGSVE LDX REGNR LDY INFER ADY NEG01 JSB ERMS,I REPORT DEF E047 INTERFERENCE ERROR JSB RGRS2 JMP INFER,I HED MAP LOAD - REGISTER COMPLETION TEST * * TST22 * * TEST SS VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO INCREMENT THE A,B AND X REGISTERS DURING THE * EXECUTION OF THE M.E.M. MAP LOADING INSTRUCTIONS. * * TEST SS IS MADE UP OF SIX SUBTESTS, EACH EXECUTING ONE MAP * LOADING INSTRUCTION, AND THEN VERIFYING THE CORRECT VALUE OF * A,B AND X REGISTERS. THE SIX INSTRUCTIONS USED FOR THIS * TEST ARE: * * XMM XMS SYA USA PAA PBA * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * sC ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, AND THE PROGRAM * WILL HALT THE COMPUTER. AT THIS TIME THE OPERATOR WILL BE * ABLE TO DETERMINE THE CAUSE OF THE ERROR BY CHECKING THE * FOLLOWING REGISTERS: * * T REGISTER = ERROR CODE * * A REGISTER = COUNT AT COMPLETION ** * B REGISTER = COUNT AT COMPLETION * * X REGISTER = COUNT AT COMPLETION * Y REGISTER = ADDRESS OF ERROR * * * NOTE: * IF THE ERROR IS A OR B REGISTER, THE FAILING REGISTER * WILL CONTAIN THE ACTUAL VALUE, AND THE ALTERNATE REGISTER * WILL CONTAIN THE EXPECTED VALUE. IF THE FAILURE PERTAINS * TO THE X REGISTER, THE A REGISTER WILL CONTAIN THE * EXPECTED VALUE SKP TST22 EQU * SPC 1 NOP CLA SET DIFFERENT LDB OCT40 VALUES FOR THE LDX OCT40 A,B AND X REGISTERS XMM EXECUTE THE INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ SPC 1 SA1 CPA OCT40 IS A THE CORRECT VALUE? JMP SA2 YES, OVER THE ERROR JSB RGSVE NO, SAVE THE REGISTERS LDB OCT40 PUT EXPECTED VALUE IN B LDY SD1 GET THE FAIL FLAG JSB ERMS,I AND REPORT THAT THE DEF E304 A REGISTER HAS THE WRONG VALUE JSB RGRST RESTORE THE REGISTERS SPC 1 SA2 CPB OC100 NOW IS B THE CORRECT VALUE? JMP SA3 YES, OVER THE ERROR JSB RGSVE SAVE THE REGISTERS LDA OC100 GET THE EXPECTED LDY SD2 AND THE FAIL FLAG, JSB ERMS,I THEN REPORT DEF E305 THE ERROR JSB RGRST RESTORE THE REGISTERS SPC 1 SA3 CXA A_X SZA,RSS IS X = 0? JMP SA4 YES, OVER THE ERROR CLA NO, CLEAR A FOR DISPALY LDY SD3 Y=FAIL FLAG JSB ERMS,I AND REPORT DEF E306 X NOT = TO ZERO SPC 2 SA4 YCLA SET UP LDB OCT01 FOR TESTING LDX OC177 REGISTERS XMS AFTER AN XMM NOP CHANGE TO JMP *-N FOR LOOP/ SPC 2 SA5 CPA OC177 IS A CORRECT? JMP SA6 YES, OVER THE ERROR JSB RGSVE NO, SAVE THE REGISTERS LDY SD5 GET THE FAIL FLAG LDB OC177 THE EXPECTED VALUE JSB ERMS,I AND DEF E307 REPORT THE ERROR JSB RGRST NOW RESTORE AND CONTINUE SKP SA6 CPB OC200 IS B CORRECT? JMP SA7 YES, OVER THE ERROR LDA OC200 NO, A=EXPECTED VALUE LDY SD6 Y=FAIL FLAG JSB ERMS,I REPORT B=INCORRECT DEF E310 VALUE SPC 1 SA7 CXA A=X SZA,RSS X=0? JMP SA8 YES, OVER CLA NO. LDY SD7 JSB ERMS,I REPORT DEF E311 SPC 1 SA8 LDA LTSYS NOW EXECUTE SYA SYA CPA LTUSR WAS A INCREMENTED? JMP SA9 YES, OVER THE ERROR LDB LTUSR NO, B=EXPECTED LDY SD8 Y=FAIL FLAG JSB ERMS,I REPORT DEF E312 ERROR LDA LTUSR GET NEXT VALUE SPC 1 SA9 USA EXECUTE USA CPA LTPTA A CORRECTLY INCREMENTED? JMP SA10 YES, OVER THE ERROR LDB LTPTA NO, B=EXPECTED VALUE LDY SD9 Y=FAIL FLAG JSB ERMS,I REPORT DEF E313 FAILURE LDA LTPTA GET NEXT VALUE SPC 1 SA10 PAA CPA LTPTB A= CORRECT VALUE JMP SA11 YES, OVER THE ERROR LDB LTPTB NO, B=EXPECTED VALUE LDY SA10 Y=FAIL FLAG JSB ERMS,I REPORT DEF E314 FAILURE LDA LTPTB GET NEXT VALUE SPC 1 SA11 PBA CPA LTPTC A INCREMENTED CORRECTLY JMP SA12 YES, OVER ERROR LDB LTPTC NO, B=EXPECTED LDY SD11 Y=FAIL FLAG JSB ERMS,I REPORT DEF E315 FAILURE SPC 2 SA12 NOP AND JMP TST22,I EXIT TEST SKP LTPTC DEF LDTBL+128 SD1 DEF SA1 SD2 DEF SA2 SD3 DEF SA3+1 SD5 DEF SA5 SD6 DEF SA6 SD7 DEF SA7+1 SD8 DEF SA8+2 SD9 DEF SA9+1 SD10 DEF SA10+1 SD11 DEF SA11+1 OC200 OCT 201 SPC 1 HED PROTECTED MODE PRESET TEST * * TST10 * * TEST 10 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO SET AND CLEAR STATUS REGISTER BIT 11 (PROTECTED * MODE) AND THE BASE PAGE FENCE. * * TEST 10 STARTS BY INVOKING PROTECTED MODE, CHECKING THE MEM * STATUS REGISTER FOR THE CORRECT STATE OF BIT 11, THEN * PROTECTED MODE IS FORCED OFF PROGRAMMATICALLY, AND THE STATE * OF STATUS REGISTER BIT 11 IS AGAIN TESTED. * * THE MESSAGE "H115 PRESS HALT, PRESET, RUN IN LESS THAN TEN * SECONDS" IS OUTPUT ON THE CONSOLE, PROTECTED MODE IS AGAIN * INVOKED, AND THE PROGRAM STARTS A TEN SECOND TIMER. * * IF THERE IS NO CONSOLE AVAILIABLE, THE PROGRAM WILL INFORM * THE OPERATOR THAT THE PROTECTED MODE PRESET TEST IS NEXT TO BE * EXECUTED BY HALTING WITH 107026 DISPLAYED IN THE MEMORY DATA * REGISTER. THE OPERATOR MUST THEN PRESS RUN TO START THE * TEST. * * THE OPERATOR MUST THEN PRESS HALT, PRESET AND RUN, THEN * THE STATE OF STATUS REGISTER BIT 11 IS TESTED TO VERIFY THAT * PRESET TURNS PROTECTED MODE OFF, AND THE BASE PAGE FENCE IS * TESTED TO INSURE THAT PRESET ALSO ZEROS THE BASE PAGE FENCE * * IF AN ERROR IS DETECTED IN TST10, THE MESSAGE "E114 PM NOT * SET BY STC 05" OR "E116 PM OR MEM FENCE NOT CLEARED BY * PRESET" WILL BE OUTPUT, AND THE PROGRAM HALTS THE COMPUTER. * * IN THE EVENT THE PROTECTED MODE IS UNABLE TO BE TURNED * OFF, IT IS NOT POSSIBLE TO EITHER HALT THE COMPUTER, OR * OUTPUT AN ERROR MESSAGE ON THE CONSOLE, SO THE FOLLOWING * WILL DONE TO INFORM THE OPERATOR THAsT THE PROGRAM WAS * UNABLE TO OFF THE PROTECTED MODE, OR PRESET DID NOT * DISABLE PROTECTED MODE: * THE EXTEND REGISTER WILL FLASH ON AND OFF * AT APPROXIMATELY ONE-HALF SECOND INTERVALS. * * AT THIS TIME, THE OPERATOR MUST PRESS HALT AND * CORRECT THE PROBLEM, AS THE EXTEND REGISTER INDICATION * WILL CONTINUE UNTIL HALT IS PRESSED. * * WHEN TEST 10 IS COMPLETE, THE MESSAGE "H117 PRESET * TEST COMPLETE" WILL BE OUTPUT ON THE CONSOLE, AND * CONTROL IS PASSED BACK TO THE EXECUTIVE. SKP TST10 EQU * SPC 1 NOP JSB KFNCE LOAD THE MEM + MPT FENCES JSB JLOAD AND THE MEM MAPS AND THE JSB ZORCH INTERRUPT TRAP CELLS SPC 1 JSB PMON SET PROTECTED MODE RSA GET THE STATUS REGISTER AND PMSTS ISOLATE THE PM BIT (11) SZA = 1? JMP ICNT1 YES, OVER THE ERROR JSB OFFPM NO, OFF PM, INTP AND SYSTEM JSB ERMS,I REPORT NO PM OR NO DEF E114 STATUS REGISTER BIT 11 SPC 1 ICNT1 LDA IIR1. SET UP AN MEM VIOLATION STA M5LNK RETURN ADDRESS LINK STA MEMSC CAUSE AN MPT/MEM FENCE VIOLATION SPC 1 IIRA1 NOP VIOLATION RETURN ADDRESS RSA GET STATUS REGISTER CONTENTS AND PMSTS ISOLATE THE PM BIT (11) SZA = 0? JMP IERR1 NO, GO FLASH THE E-REGISTER JSB TRNOF YES, TURN OFF INTP AND SYSTEM LDB BIT.8 CHECK THE SWITCH REGISTER JSB SWRT,I TO SEE IF JMP IENDX SUPPRESSION DESIRED, EXIT SPC 1 LDA 112B CONSOLE SZA,RSS PRESENT? JSB NOTTY NO, GO DO THE WARNING HALT SPC 1 JSB MSGC,I TELL OPERATOR DEF H115 HLT-PRESET-RUN SPC 1 CCA LOAD THE MEM FENCE LFA WITH ALL ONES JSB PMON PRIVELEGED MODE - ON LDA ITMRC GE]T TIMING CONSTANT JSB TMRR,I START A 10 SECOND TIMER NOP RSA GET THE STATUS STA ITMP1 SAVE IT AND PMSTS MAKE SURE PM IS OFF SZA OFF??? JMP IERR1 NO, ERROR DETECTED JSB TRNOF YES, OFF THE INTERRUPT SYS NOP SKP LDA ITMP1 GET THE STATUS BACK SZA,RSS DID PRESET CLEAR IT? JMP *+3 YES, OVER THE ERROR JSB ERMS,I NO, REPORT THE DEF E116 ERROR JSB MSGC,I TELL OP TEST IS COMPLETE DEF H117 IENDX NOP JMP TST10,I EXIT SKP IERR1 CME BLINK EXTEND REGISTER ISZ SVPD1 WAIT JMP *-1 LOOP JMP *-3 HANG UP IN THE LOOP SPC 1 ITMRC DEC 10000 IIR1. DEF IIRA1 ITMP1 OCT 0 PMSTS OCT 4000 BIT.8 OCT 10400 SPC 2 E114 ASC 13,E114 PM NOT SET BY STC 05/ H115 ASC 13,H115 PRESS HALT-PRESET-RUN ASC 13, IN LESS THAN 10 SECONDS/ E116 ASC 16,E116 PM OR MEM FENCE NOT CLEARED ASC 6, BY PRESET/ H117 ASC 13,H117 PRESET TEST COMPLETE/ SPC 3 NOTTY NOP ISZ NOTTY BUMP PAST THE ISZ NOTTY MSG AND DEF, AND E326 OCT 107026 HALT CODE 326 JMP NOTTY,I NOW GO DO THE PRESET TEST SPC 2 * MESSAGES E226 ASC 5,E226 XMM/ E227 ASC 5,E227 XMM/ E230 ASC 5,E230 XMS/ E231 ASC 5,E231 XMS/ E232 ASC 5,E232 SYA/ E233 ASC 5,E233 SYA/ E234 ASC 5,E234 USA/ E235 ASC 5,E235 USA/ HED STATUS-FENCE REGISTER * TEST 04 * * TEST 04 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * OF THE MEMORY EXPANSION MODULE STATUS REGISTER AND THE SET OF * INSTRUCTIONS USED IN TEST 04 TO EXERCISE IT. * * THESE INSTRUCTIONS ARE: * * DJP - DISABLE M.E.M. AND JUMP * DJS - DISABLE M.E.M. AND JUMP SUBROUTINE * SJP - ENABLE SYSTEM MAP AND JUMP * SJS - ENABLE SYSTEM MAP AND JUMP SUBROUTINE * UJP - ENABLE U^SER MAP AND JUMP * UJS - ENABLE USER MAP AND JUMP SUBROUTINE * RSA/B READ STATUS REGISTER INTO A/B REGISTER * LFA/B LOAD FENCE REGISTER FROM A/B REGISTER * SSM - STORE STATUS IN MEMORY * JRS - JUMP AND RESTORE STATUS * * TEST 04 CHECKS THE STATUS REGISTER BITS BY EXECUTING ONE OF * THE ABOVE INSTRUCTIONS, THE INTERRUPT SYSTEM, AND THE PROTECT * FEATURES OF M.E.M. TO ESTABLISH VALIDITY OF THE VARIOUS STATUS * REGISTER BITS. * * THE INITIAL CHECKING IS DONE THRU THE A-REGISTER REFERENCE * (RSA-LFA) INSTRUCTIONS. ONCE IT IS ESTABLISHED THAT THE * A-REGISTER REFERENCE INSTRUCTIONS EXECUTE PROPERLY, THE * B-REGISTER COUNTERPARTS ARE CHECKED. * * AFTER ALL BITS OF THE STATUS REGISTER, AND ALL OF THE ABOVE * INSTRUCTIONS ARE CHECKED, CONTROL IS RETURNED TO THE CONTROL * PROGRAM. * * IF AN ERROR IS DETECTED WHILE TST04 IS BEING EXECUTED, A * MESSAGE WILL BE OUTPUT TO THE CONSOLE, AND THE ERROR ROUTINE * WILL HALT THE COMPUTER. * * TO DETERMINE THE CAUSE OF THE ERROR, THE OPERATOR MUST CHECK * THE FOLLOWING REGISTERS: * * T REGISTER = HALT CODE * A REGISTER = STATUS BIT(S) WHICH FAILED * * B REGISTER = STATUS BIT(S) WHICH FAILED * * X REGISTER = STATUS REGISTER AT FAILURE * Y REGISTER = ADDRESS OF FAILURE * * *NOTE. IN THE CASE OF REGISTER REFERENCE INSTRUCTIONS, THE * REGISTER REFERENCED WILL CONTAIN ACTUAL(BAD) DATA, AND * THE ALTERNATE REGISTER WILL CONTAIN THE EXPECTED(GOOD) * DATA. * SKP ORG 6000B TST04 EQU * SPC 1 NOP JSB ZORCH PUT JSB,I INSTRUCTION IN CELLS JSB LODUP LOAD UP THE MAPS NOP SPC 1 DJP *+3 DISABLE THE MEM AND JUMP *+3 JSB TEER1 GO AND REPORT THE ERROR RSA READ MEM STATUS REGISTER NOP AND EMSK1 MASK OFF DONT CARE BITS SZA,RSS /| TEST TO SEE IF THE JMP *+3 PROPER STATUS RETURNED. OVER CLB ERROR DETECTED, GET EXPECTED JSB STERA STATUS AND REPORT THE ERROR SPC 1 RSB NOW READ THE STATUS TO B-REG NOP CHANGE TO JMP *-N FOR LOOP/ LDA EMSK1 PUT THE MASK VALUE IN A AND B STRIP OFF THE DONT CARE BITS SZA,RSS TEST FOR PROPER STATUS JMP *+3 CLA ERROR DETECTED, GET THE EXPECTED JSB STERB STATUS AND REPORT THE ERROR SPC 1 DJS *+3 DISABLE AND JSB *+3 RTAD1 JSB TEER2 NO JSB, REPORT NOP SUBROUTINE RETURN ADDRESS RSA READ MEM STATUS REGISTER NOP AND EMSK1 ELIMINATE DONT CARE BITS SZA,RSS TEST TO SEE PROPER STATUS JMP *+3 OK, OVER THE ERROR JSB CLB ERROR IN STATUS RETURNED, JSB STERA REPORT ON CONSOLE SPC 1 RSB READ STATUS TO B REGISTER NOP CHANGE TO JMP *-N FOR LOOP/ LDA EMSK1 PLACE MASK VALUE IN A AND B STRIP OFF DONT CARE BITS SZA,RSS TEST FOR PROPER STATUS RETURN JMP *+3 OK, OVER THE ERROR CLA ERROR DETECTED, PUT THE EXPECTED JSB STERB VALUE IN A AND REPORT. SPC 1 LDA RTAD1+1 CPA RTAD2 COMPARE RETURN ADDRESS JMP *+2 ADDRESS CORRECT, CONTINUE JSB DJSER ADDRESS NOT CORRECT, REPORT NOP CHANGE TO JMP *-N FOR LOOP/ SKP SJP *+7 ENABLE SYSTEM & JUMP DJP *+2 OFF SYSTEM IF NO JUMP JSB TEER3 REPORT SJP DIDNT JUMP SPC 1 SJP *+2 RE-ENABLE AFTER ERROR NOP CHANGE TO JMP *-N FOR LOOP/ RSA READ STATUS REGISTER AND EMSK2 STRIP OFF DON'T CARE BITS CPA STN01 PROPER STATUS? JMP *+7 OVER THE ERROR DJP *+2 DISABLE TO REPORT KiERROR LDB STN01 NO, GET THE EXPECTED VALUE JSB STERA REPORT ERROR SJP *+2 SYSTEM BACK ON AFTER ERROR SPC 2 RSB NO READ STATUS TO B-REG NOP CHANGE TO JMP *-N FOR LOOP/ LDA EMSK2 PLACE MASK VALUE IN A AND B STRIP OFF DONT CARE BITS CPA STN01 PROPER STATUS? JMP *+5 YES, OVER THE ERROR DJP *+2 NO, OFF MEM TO REPORT ERROR LDA STN01 GET THE EXPECTED VALUE IN A JSB STERB AND REPORT THE PROBLEM SPC 1 DJP *+3 DISABLE THE MEM AND JUMP *+3 JSB TEER1 REPORT DJP PROBLEM RSA READ STATUS REGISTER IN A AND EMSK2 ELIMINATE DONT CARE BITS SZA,RSS TEST FOR PROPER STATUS JMP *+3 PROPER STATUS RETURNED CLB WRONG STATUS IN BITS 13 & 11, JSB STERA REPORT ON CONSOLE SPC 1 RSB READ STATUS TO B LDA EMSK2 GET MASK VALUE AND AND B STRIP OFF DONT CARE BITS SZA,RSS TEST FOR PROPER STATUS RETURNED JMP *+3 YES, OVER THE ERROR CLA NO, GET EXPECTED VALUE AND JSB STERB REPORT ON THE CONSOLE SPC 1 SJS *+7 ENABLE THE SYSTEM AND JSB RTAD3 DJP *+2 CRASH, NO JSB JSB TEER4 REPORT ON CONSOLE SJP *+2 MEM BACK ON AFTER ERROR SKP NOP RETURN ADDRESS LDA *-1 GET THE CALCULATED RETURN ADDR. CPA RTAD4 AND COMPARE TO RETURN JMP *+6 RETURN ADDRESS OK, OVER THE ERR DJP *+2 RETURN ADDRESS WRONG, REPORT JSB SJSER RETURN ADDRESS WRONG, REPORT SJP *+2 MEM BACK ON AFTER ERROR SPC 1 RSA READ THE STATUS REGISTER AND EMSK2 GET RID OF DONT CARE BITS CPA STN01 BIT 13 ON? JMP *+7 YES, OVER ERROR HANDLING DJP *+2 NO, MEM OFF FOR REPORT LDsB STN01 GET WHAT STATUS SHOULD BE JSB STERA REPORT THE ERROR SJP *+2 REENABLE THE ERROR SPC 1 RSB NOW READ STATUS TO B LDA EMSK2 GET MASK VALUE AND AND B STRIP OFF DONT CARE BITS CPA STN01 TEST FOR PROPER STATUS JMP *+7 OK, OVER THE ERROR DJP *+2 ERROR, OFF MEM TO REPORT LDA STN01 GET PROPER STATUS JSB STERB AND REPORT FAILURE SJP *+2 BACK ON AFTER ERROR SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ UJP *+7 ENABLE USER MAP & JUMP DJP *+2 DISABLE FOR ERROR JSB TEER5 REPORT UJP DIDN'T JUMP UJP *+2 RE-ENABLE AFTER ERROR NOP CHANGE TO JMP *-N FOR LOOP/ RSA READ STATUS REGISTER AND EMSK2 STRIP DONT CARE BITS CPA STN02 GOT PROPER STATUS? JMP *+3 YES, JUMP OVER ERROR LDB STN02 NO, GET EXPECTED STATUS JSB STERA REPORT ERROR SPC 1 RSB READ STATUS REG TO B LDA EMSK2 GET THE MASK VALUE AND B STRIP OFF THE DONT CARE BITS CPA STN02 IS STATUS CORRECT? JMP *+7 YES, OVER THE ERROR DJP *+2 NO, OFF USER TO REPORT LDA STN02 GET THE EXPECTED PATTERN JSB STERB AND REPORT THE ERROR UJP *+2 BACK ON AFTER ERROR SKP SPC 1 NOP CHANGE TO JMP *-N FOR LOOP/ SJP *+5 DJP *+2 WHOOPS, OFF MEM JSB TEER3 SJP DIDNT JUMP NOP CHANGE TO JMP *-N FOR LOOP/ UJS *+7 ENABLE AND JSB RTAD5 DJP *+2 NO JSB, OFF THE SYSTEM JSB TEER6 AND REPORT NO JSB UJP *+2 BACK ON AFTER ERROR NOP JSB RETURN ADDRESS LDA *-1 GET RETURN ADDRESS CPA R.TA5 JMP *+6 YES OVER ERROR HANDLING DJP *+2 OFF FOR ERROR JSB UJSER NO, REPORT A@B@WU2 JMP .GCOM SPC 1 MBWU3 NOP JSB ERMS,I DEF E135 JMP MBWU3,I SPC 2 HPAD1 OCT 0 HPAD2 OCT 0 HPAD3 OCT 0 UMASK OCT 177400 E130 ASC 5,E130 MBF/ E131 ASC 5,E131 MBF/ E132 ASC 5,E132 MBI/ E133 ASC 5,E133 MBI/ E134 ASC 5,E134 MBW/ E135 ASC 5,E135 MBW/ HED VIOLATION REGISTER - MAP REGISTER BITS * * TST21 * * TEST 21 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO DISPLAY THE PAGE ON WHICH A VIOLATION HAS OCCURRED * * TEST 21 CAUSES SEVERAL VIOLATIONS TO BE REPORTED, AND TESTS * THE VIOLATION MAP BITS FOR CORRECT VALUE. * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF TST21, AN * ERROR MESSAGE IS OUTPUT ON THE TERMINAL, AND THE PROGRAM HALTS * THE COMPUTER. AT THIS TIME, THE OPERATOR MAY DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE CONTENTS OF THE FOLLOWING * REGISTERS: * * T REGISTER = ERROR CODE * A REGISTER = ACTUAL PATTERN * B REGISTER = EXPECTED PATTERN * Y REGISTER = ADDRESS OF FAILURE SKP TST21 EQU * SPC 1 NOP JSB ZORCH PUT JSB'S IN INTERRUPT CELLS JSB KFNCE LOAD UP THE FENCE REGISTERS JSB LODUP LOAD THE MAP REGISTERS LDA OCT10 NOW LDB RPNTR PUT LDX OCT06 PROTECTED XMM BITS IN MAPS SPC 1 LDA RD1 PUT INTERRUPT STA M5LNK ADDRESS IN LINK JSB PMON ON THE PROTECTED MODE STA TWN4K,I AND FORCE A WRITE VIOLATION SPC 1 RA1 NOP JSB TRNOF OFF INTP AND SYS RVA GET THE VIOLATION REGISTER AND RMASK MASK OFF ALL BUT MAP BITS RA2 CPA OCT12 JMP ROVR1 YES, OVER THE ERROR SPC 1 LDB OCT12 NO, GET THE EXPECTED PAGE LDY RD2 THE FAIL FLAG, JSB ERMS,I AND REPORT WRONG DEF E316 SPC 2 ROVR1 LDA RD3 UPDAoQTE THE STA M5LNK RETURN ADDRESS JSB PMON ON THE PM SYSTEM STA THR2K,I VIOLATE PAGE 15 SPC 1 RA3 NOP JSB TRNOF OFF INTP AND SYS RVA GET VIOLATION REGISTER AND RMASK ISOLATE MAP REGISTER BITS RA4 CPA OCT15 RIGHT PAGE? JMP ROVR2 YES, OVER THE ERROR SPC 1 LDB OCT15 GET EXPECTED PAGE NUMBER LDY RD4 AND FAIL FLAG JSB ERMS,I NOW REPORT THE ERROR DEF E301 SPC 2 ROVR2 LDA RD5 UPDATE STA M5LNK RETURN ADDRESS JSB PMON SKP SPC 1 RA5 NOP JSB TRNOF OFF INTP + SYS RVA AND RMASK ISOLATE MAP REGISTER RA6 SZA,RSS PAGE ZERO? JMP ROVR3 YES, OVER THE ERROR CLB NO, GET EXPECTED NUMBER LDY RD6 FAIL FLAG JSB ERMS,I AND REPORT DEF E302 SPC 2 ROVR3 LDA RD7 UPDATE STA M5LNK RETURN ADDRESS JSB PMON ON PROTECTED MODE STA TWN2K,I NOW STORE FOR ALL ONES SPC 1 RA7 NOP JSB TRNOF OFF INTP AND SYS RVA GET VIOLATION REGISTER AND RMASK ISOLATE MAP BITS RA8 CPA OCT11 JMP ROVR4 YES, OVER THE ERROR LDB RMASK GET THE EXPECTED VALUE LDY RD8 FAIL FLAG JSB ERMS,I REPORT THE DEF E303 SPC 2 ROVR4 NOP JMP TST21,I SKP RPNTR DEF *+1 OCT 040010,041777,040012,040013,040014,040015 RD1 DEF RA1 RD2 DEF RA2 RD3 DEF RA3 RD4 DEF RA4 RD5 DEF RA5 RD6 DEF RA6 RD7 DEF RA7 RD8 DEF RA8 RMASK OCT 77 HED WRITE VIOLATIONS * * TST12 * * TEST 12 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO SUCESSFULLY DETECT AND REPORT A PROTECTED MODE * WRITE VIOLATION, AS WELL AS PREVENT THE WRITE OPERATION FROM * ALTERING PROTECTED MEMORY. * * TEST 12 IS MADE UP OF FIVE SUBTESTS VWHICH FIRST ATTEMPT A * WRITE INTO PROTECTED MEMORY, INSURE THAT THE PROTECT FEATURES * CAUSE A MEMV INTERRUPT, AND THEN CHECK TO INSURE THAT THE * WRITE DID NOT CHANGE MEMORY. * * THE FIVE INSTRUCTIONS USED TO FOR TEST 12 ARE: * * MBI MBW MWI MWW XSA * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF TEST KK, AN * ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, AND THE PROGRAM * HALTS THE COMPUTER. THE OPERATOR MAY THEN DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE T REGISTER, WHICH WILL * CONTAIN THE ERROR CODE, AND THE Y REGISTER, WHICH WILL CONTAIN * THE ADDRESS OF THE FAILURE. * * SKP ORG 14000B TST12 EQU * SPC 1 NOP JSB ZORCH LOAD UP INTERRUPT CELLS JSB JLOAD MAPS AND JSB KFNCE FENCE SPC 1 SPC 1 LDA KRT01 PUT RETURN ADDRESS STA M5LNK IN VIOLATION INTERRUPT RETURN JSB PMON ON PROTECTED MODE LDA TWNTK ATTEMPT LDB TWNTK A NON-PRIVELEGED LDX KCONT MBI INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ KA1 MBI JSB OFFPM TURN OFF PM TO REPORT ERROR LDY KD1 GET FAILURE FLAG JSB ERMS,I AND REPORT THE FAILURE DEF E151 SPC 1 KRA01 NOP VIOLATION INTERRUPTED HERE JSB TRNOF OFF THE INTSYS AND SYS MAP JSB WTVCK CHECK WRITE VIOLATION BIT JMP *+5 LDY WTVCK GET FAIL FLAG JSB ERMS,I DEF E152 SPC 1 LDA KRT02 PLACE NEXT RETURN STA M5LNK ADDRESS INTO M5LNK LDA TWNTK ATTEMPT A LDB TWNTK PROTECTED MODE LDX KCONT EXECUTION NOP OF A JSB PMON MBW KA2 MBW INSTRUCTION JSB OFFPM LDY KD2 GET FAIL FLAG JSB ERMS,I AND REPORT DEF E153 SPC 1 KRA02 NOP JSB TRNOF OFF THE INTSYS A{ND SYSMAP JSB WTVCK CHECK WRITE PROTECT BIT JMP *+5 OK LDY WTVCK NO, FAIL JSB ERMS,I DEF E154 SKP LDA KRT03 PLACE NEXT VIOLATION STA M5LNK INTERRUPT ADDRESS IN M5LNK LDA TWN6K NOW ATTEMPT LDB TWN2K EXECUTION LDX KCONT OF A JSB PMON PROTECTED MODE-ON KA3 MWI MOVE WORDS INTO INSTRUCTION JSB OFFPM LDY KD3 GET THE FAIL FLAG JSB ERMS,I AND REPORT DEF E155 NO MEMV SPC 1 KRA03 NOP VIOLATION RETURNS TO HERE JSB TRNOF OFF THE INTERRUPT SYSTEM ETC JSB WTVCK CHECK BIT14 JMP *+5 OK LDY WTVCK NO, FAIL JSB ERMS,I DEF E156 SPC 1 LDA KRT04 NEXT RETURN STA M5LNK ADDRESS INTO M5LNK LDA TWN6K NOW TRY TO LDB TWNTK EXECUTE LDX KCONT A MWW NOP INSTRUCTION JSB PMON IN PM. KA4 MWW JSB OFFPM LDY KD4 GET THE FAIL FLAG JSB ERMS,I AND REPORT DEF E157 SPC 1 KRA04 NOP RETURN FROM VIOLATION INTERRUPT JSB TRNOF OFF INTP AND SYS JSB WTVCK JMP *+5 LDY WTVCK JSB ERMS,I DEF E160 ******** SPC 1 LDA KRT06 UPDATE STA M5LNK M5LNK NOP JSB PMON ON PROTECTED MODE KA5 XSA TWNTK ATTEMPT A CROSS STORE JSB OFFPM LDY KD5 JSB ERMS,I DEF E161 SPC 1 KRA06 NOP VIOLATION RETURN ADDRESS JSB TRNOF OFF INTSYS JSB WTVCK CHECK WRITE VIOLATION BIT JMP *+5 LDY WTVCK JSB ERMS,I DEF E162 NOP JMP TST12,I SPC 2 KD1 DEF KA1 KD2 DEF KA2 KD3 DEF KA3 KD4 DEF KA4 KD5 DEF KA5 E151 ASC 5,E151 MBI/ E152 ASC 5,E152 MBI/ E153 ASC 5,E153 MBW/ E154 ASC 5,E154 MBW/ E155 ASC 5,E155 MWI/ E156 ASC 5,E156 MWI/ E157 ASC 5,E157 MWW/ E160 ASC 5,E160 MWW/ E161 ASC 5,E161 XSA/ E162 ASC 5,E162 XSA/ HED READ VIOLATIONS * * TST16 * * TEST 16 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO SUCESSFULLY DETECT AND REPORT A PROTECTED MODE * READ VIOLATION. * * * TST16 IS MADE UP OF FOUR SUBTESTS WHICH FIRST ATTEMPT A READ * FROM PROTECTED MEMORY, THEN INSURE THAT THE PROTECT FEATURES * CAUSE A MEMV INTERRUPT, AND TEST THE VIOLATION REGISTER TO * INSURE THE CORRECT STATE OF THE READ VIOLATION BIT. * * THE FOUR INSTRUCTIONS USED FOR TST16 ARE: * * MWW MWI MBW MBI * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, AND THE PROGRAM * WILL HALT THE COMPUTER. THE OPERATOR MAY THEN DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE T REGISTER, WHICH WILL * CONTAIN THE ERROR CODE, AND THE Y REGISTER, WHICH WILL CONTAIN * THE ADDRESS OF THE FAILURE. * * * SKP TST16 EQU * SPC 1 NOP JSB ZORCH JSB KFNCE JSB OLOAD SPC 1 LDA OXDR1 STA M5LNK ADDRESS INTO M5LNK LDA TWNTK NOW TRY TO LDB TWNTK EXECUTE LDX KCONT A MWW NOP INSTRUCTION JSB PMON IN PM. MWW JSB OFFPM LDY OFFPM JSB ERMS,I DEF E245 OXTR1 NOP JSB TRNOF OFF INTP AND SYS JSB RDVCK CHECK IT WAS A READ VIOLATION JMP *+5 IT WAS, OVER THE ERROR LDY RDVCK GET THE FAILURE FLAG JSB ERMS,I AND REPORT THE ERROR DEF E246 SPC 1 LDA OXDR2 STA M5LNK INTERRUPT ADDRESS IN M5LNK LDA TWNTK NOW ATTEMPT LDB TWNTK EXECUTION LDX KCONT OF A JSB PMON PROTECTED MODE-ON MWI MOVE WORDS INTO INSTRUCTION JSB OFFPM LDkY OFFPM SET ERROR FLAG ADDRESS JSB ERMS,I DEF E247 SPC 1 OXTR2 NOP JSB TRNOF OFF THE INTSYS AND SYSMAP JSB RDVCK CHECK IT WAS A READ VIOLATION JMP *+5 IT WAS, OVER THE ERROR LDY RDVCK GET THE FAILURE FLAG JSB ERMS,I AND REPORT THE ERROR DEF E250 SKP LDA OXDR3 STA M5LNK ADDRESS INTO M5LNK LDA FORTK ATTEMPT LDB FORTK P.M. LDX KCONT EXECUTION NOP OF A JSB PMON MBW MBW INSTRUCTION JSB OFFPM LDY OFFPM SET ERROR FLAG ADDRESS JSB ERMS,I DEF E251 SPC 1 OXTR3 NOP JSB TRNOF JSB RDVCK CHECK IT WAS A READ VIOLATION JMP *+5 IT WAS, OVER THE ERROR LDY RDVCK GET THE FAILURE FLAG JSB ERMS,I AND REPORT THE ERROR DEF E252 SPC 1 LDA OXDR4 STA M5LNK IN VIOLATION INTERRUPT RETURN JSB PMON ON PROTECTED MODE LDA FORTK LDB FORTK LDX KCONT MBI INSTRUCTION NOP CHANGE TO JMP *-N FOR LOOP/ MBI JSB OFFPM TURN OFF PM TO REPORT ERROR LDY OFFPM SET ERROR FLAG ADDRESS JSB ERMS,I DEF E253 SPC 1 OXTR4 NOP JSB TRNOF JSB RDVCK CHECK IT WAS A READ VIOLATION JMP *+5 IT WAS, OVER THE ERROR LDY RDVCK GET THE FAILURE FLAG JSB ERMS,I AND REPORT THE ERROR DEF E254 SPC 1 NOP JMP TST16,I SKP OXDR1 DEF OXTR1 OXDR2 DEF OXTR2 OXDR3 DEF OXTR3 OXDR4 DEF OXTR4 E245 ASC 5,E245 MWW/ E246 ASC 5,E246 MWW/ E247 ASC 5,E247 MWI/ E250 ASC 5,E250 MWI/ E251 ASC 5,E251 MBW/ E252 ASC 5,E252 MBW/ E253 ASC 5,E253 MBI/ E254 ASC 5,E254 MBI/ SPC 1 SPC 1 OLOAD NOP JSB JLOAD LDA OCT11 LDB OCT11 LDX OCT03 XMS JMP OLOAD,I KRT01 DEF KRA01 1KRT02 DEF KRA02 KRT03 DEF KRA03 KRT05 DEF KRA05 KRT06 DEF KRA06 KRT07 DEF KRA07 KCONT OCT 100 KRT04 DEF KRA04 KXFRW OCT 100001 HED PRIVILEGED INSTRUCTIONS * * TST13 * * TEST 13 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO SUCESSFULLY DETECT AND REPORT A PROTECTED MODE * PRIVILEGED INSTRUCTION VIOLATION. * * THIS TEST IS MADE UP OF EIGHT SUBTESTS WHICH INSURE PRIVILEGED * INSTRUCTIONS WILL CAUSE A MEMV INTERRUPT IF THE USER MAP IS * ENABLED, AND WILL NOT CAUSE A VIOLATION IF THE SYSTEM MAP IS * ENABLED. * * THE INSTRUCTIONS USED FOR THIS TEST ARE: * * JRS DJP DJS SJP SJS UJP UJS LFA * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, AND THE PROGRAM * WILL HALT THE COMPUTER. THE OPERATOR MAY THEN DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE T REGISTER WHICH WILL * CONTAIN THE ERROR CODE, AND THE Y REGISTER, WHICH WILL CONTAIN * THE ADDRESS OF THE ERROR SKP TST13 EQU * SPC 1 NOP JSB LODUP LOAD MAPS JSB ZORCH STORE JSB'S JSB KFNCE SET UP THE FENCES SPC 1 LDA LRAD1 PUT NEXT RETURN STA M5LNK ADDRESS LINK JSB PMONU ON PM W/USER MAP ENABLED JRS STS TRG JMP AND RESTORE STATUS IF WE CAN STS OCT 024100 STATUS WORD TRG NOP TARGET ADDRESS JSB OFFPM FORCE PM OFF LDY TRG GET THE FAILURE FLAG JSB ERMS,I AND REPORT DEF E163 NO MEMV SPC 1 LLRA1 NOP JSB TRNOF OFF PM TO CHECK JSB PIVCK BIT 12 OF THE VIOLATION REGISTER JMP *+5 LDY PIVCK JSB ERMS,I DEF E164 LDA LRAD2 PUT THE ERROR ROUTINE STA M5LNK ADDRESS IF IT VIOLATES W/SYSTEM JSB PMON ON PM SSM LLSTS PUT STATUS IN MEMORY LLSTATUS NOP CHANGE TO JMP 640*-N FOR LOOP/ JRS LLSTS NXT DO JMP AND RESTORE IN PM SYSTEM NXT JSB OFFPM JMP LOVR1 OVER THE ERROR LLRA2 NOP JSB TRNOF OFF INTP AND SYS d16   12929-18011 1830 S 0122 DMS DIAGNOSTIC              H0101 % LDY LLRA2 GET FAIL FLAG JSB ERMS,I AND REPORT DEF E165 SPC 2 LOVR1 LDA LRAD3 PUT NEXT RETURN ADDRESS STA M5LNK IN VIOLATION LINK ADDRESS JSB PMONU PM ON W/USER ENABLED DJP *+2 TRY TO DISABLE MEM JSB OFFPM MADE IT W/NO VIOLATION LDY OFFPM GET FAIL FLAG JSB ERMS,I AND OUTPUT DEF E166 SKP LLRA3 NOP JSB TRNOF OFF INT AND USER JSB PIVCK CHECK VIOLATION BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E167 LDA LRAD4 NEXT INTP STA M5LNK ADDRESS JSB PMON NOP CHANGE TO JMP *-N FOR LOOP/ JSB OFFPM TURN OFF PROTECTED MODE JMP LOVR2 AND JUMP OVER THE ERROR LLRA4 NOP JSB TRNOF OFF INTP AND USER LDY TRNOF JSB ERMS,I DEF E200 SPC 2 LOVR2 LDA LRAD5 NEXT ADDRESS STA M5LNK INTO-LINK JSB PMONU PM W/USER ENABLED DJS *+2 DISABLE AND JSB NOP JSB OFFPM JSB MUST HAVE WORKED LDY OFFPM JSB ERMS,I DEF E201 SPC 2 LLRA5 NOP RETURN FROM VIOLATION INTERRUPT JSB TRNOF OFF PROTECTED MODE JSB PIVCK AND CHECK VIOLATION BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E202 LDA LRAD6 UPDATE THE STA M5LNK LINK WORD JSB PMON ON PM W/SYSTEM ENABLED NOP CHANGE TO JMP *-N FOR LOOP/ DJS *+2 NOW MAKE SURE DJS CAN BE NOP EXECUTED IN PM WITH SYS ENABLED JSB OFFPM TURN OFF THE PROTECTED MODE JMP LOVR3 AND JUMP OVER THE ERROR ROUTINE LLRA6 NOP VIOLATION RETURN ADDRESS JSB TRNOF OFF INTP + SYS MAP LDY TRNOF JSB ERMS,I DEF E203 SKP LOVR3 LDA LRAD7 UPDATE STA M5LNK RETURN ADDRESS JSB PMONU PM ON W/USER ENABLED SJP *+2 TRY TO TURN SYSTpEM MAP ON JSB OFFPM MADE IT, LDY OFFPM JSB ERMS,I DEF E204 SPC 2 LLRA7 NOP JSB TRNOF OFF INTP, JSB PIVCK AND CHECK VIOLATION REGISTER 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E205 LDA LRAD8 UPDATE STA M5LNK M5LNK JSB PMON ONE PM SJP *+2 SJP JSB OFFPM OK, ITS DONE, OFF PM JMP LOVR4 AND JUMP OVER THE ERROR LLRA8 NOP JSB TRNOF OFF INTP + SYSTEM LDY TRNOF JSB ERMS,I DEF E206 SPC 2 LOVR4 LDA LRAD9 UPDATE STA M5LNK M5LNK JSB PMONU ON PM W/USER ENABLED SJS *+2 ATTEMPT SJS NOP INSTRUCTION JSB OFFPM MADE IT, LDY OFFPM JSB ERMS,I DEF E207 SKP LLRA9 NOP JSB TRNOF OFF INTP AND USER, JSB PIVCK AND CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E210 LDA LRA10 UPDATE STA M5LNK THE M5LNK JSB PMON ON PROTECTED MODE, SJS *+2 AND JSB NOP JSB OFFPM OK, TURN PM OFF JMP LOVR5 AND JMP OVER THE ERROR LLR10 NOP JSB TRNOF OFF INTP AND SYSTEM LDY TRNOF JSB ERMS,I DEF E211 SPC 2 LOVR5 LDA LRA11 UPDATE STA M5LNK M5LNK JSB PMONU ON PM UJP *+2 TRY UJP WITH PM JSB OFFPM MADE IT, LDY OFFPM JSB ERMS,I DEF E212 SPC 2 LLR11 NOP JSB TRNOF OFF INTP JSB PIVCK CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E213 LDA LRA12 UPDATE STA M5LNK M5LNK JSB PMON ON PM UJP *+2 NOW ENABLE THE USER MAP RSB READ STATUS JSB OFFPM TURN OFF PROTECTED MODE LDA B PUT STATUS IN A AND BIT12 STRIP ALL BUT BIT12 SZA WAS BIT 12 A ONE? L JMP LOVR6 YES, OVER THE ERROR JSB ERMS,I NO, TELL OPERATOR DEF E214 LLR12 NOP JSB TRNOF OFF INTP LDY TRNOF JSB ERMS,I DEF E215 SKP LOVR6 LDA LRA13 UPDATE STA M5LNK M5LNK JSB PMONU ON PM W/USER ENABLED UJS *+2 ATTEMPT EXECUTION OF UJS NOP MUST HAVE MADE IT, JSB OFFPM OFF PM LDY OFFPM JSB ERMS,I DEF E216 SPC 1 LLR13 NOP JSB TRNOF OFF INTP AND USER JSB PIVCK CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E217 LDA LRA14 UPDATE STA M5LNK M5LNK JSB PMON ON PROTECTED MODE UJS *+2 NOW ENABLE THE USER NOP RSB GET STATUS JSB OFFPM AND FORCE PM OFF LDA B GET STATUS AND MAKE AND BIT12 SURE THAT THE USER SZA MAP WAS ENABLED JMP LOVR7 IT WAS, GO ON JSB ERMS,I NO, TELL OPERATOR DEF E220 JMP LOVR7 THEN GO ON SKP LLR14 NOP JSB TRNOF OFF INTP LDY TRNOF JSB ERMS,I DEF E221 SPC 1 LOVR7 NOP LDA KRT07 NEXT RETURN STA M5LNK ADDRESS LDA KFTRY JSB PMONU ON THE PROTECTED MODE LFA IN PM. JSB OFFPM LDY OFFPM JSB ERMS,I DEF E224 SPC 1 KRA07 NOP JSB TRNOF OFF INTP AND SYSTEM MAP JSB PIVCK CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E225 NOP JMP TST13,I SKP LRAD1 DEF LLRA1 LRAD2 DEF LLRA2 LRAD3 DEF LLRA3 LRAD4 DEF LLRA4 LRAD5 DEF LLRA5 LRAD6 DEF LLRA6 LRAD7 DEF LLRA7 LRAD8 DEF LLRA8 LRAD9 DEF LLRA9 LRA10 DEF LLR10 LRA11 DEF LLR11 LRA12 DEF LLR12 LRA13 DEF LLR13 LRA14 DEF LLR14 LLSTS OCT 0 SPC 2 E163 ASC 5,E163 JRS/ E164 ASC 5,E164 JRS/ E165 ASC 5,E165 JRS/ E166 ASC 5,E166 DJP/ E167 ASC 5,E167 DJP/ E200 ASC 5,E200 DJP/ E201 ASC 5,E201 DJS/ E202 ASC 5,E202 DJS/ E203 ASC 5,E203 DJS/ E204 ASC 5,E204 SJP/ E205 ASC 5,E205 SJP/ E206 ASC 5,E206 SJP/ E207 ASC 5,E207 SJS/ E210 ASC 5,E210 SJS/ E211 ASC 5,E211 SJS/ E212 ASC 5,E212 UJP/ E213 ASC 5,E213 UJP/ E214 ASC 5,E214 UJP/ E215 ASC 5,E215 UJP/ E216 ASC 5,E216 UJS/ E217 ASC 5,E217 UJS/ E220 ASC 5,E220 UJS/ E221 ASC 5,E221 UJS/ E222 ASC 5,E222 XMA/ E223 ASC 5,E223 XMA/ E224 ASC 5,E224 LFA/ E225 ASC 5,E225 LFA/ KFTRY OCT 100001 HED MAP VIOLATION * * TST14 * * TEST 14 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO DETECT AND REPORT THE ATTEMPT, AND PREVENT THE * EXECUTION OF ANY MEM INSTRUCTION WHICH ALTERS THE CONTENTS OF * THE MAPS WHILE IN PROTECTED MODE. * * THIS TEST IS MADE UP OF SEVEN SUBTESTS WHICH ATTEMPT TO ALTER * THE CONTENTS OF THE MAPS, AND THEN INSURE A MEM VIOLATION * AND THE CORRECT STATE OF THE VIOLATION REGISTER'S PRIVILEGED * INSTRUCTION BIT. * * THE INSTRUCTIONS USED TO ATTEMPT ALTERING THE MAPS IN THIS * TEST ARE: * * XMM XMS XMA SYA USA PAA PBA * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * ERROR MESSAGE IS OUTPUT ON THE CONSOLE, AND THE PROGRAM HALTS * THE COMPUTER. AT THIS TIME, THE OPERATOR MAY DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE T REGISTER, WHICH CONTAINS * THE ERROR CODE, AND THE Y REGISTER, WHICH CONTAINS THE ADDRESS * OF THE ERROR * * SKP TST14 EQU * SPC 1 NOP JSB KFNCE LOAD FENCES FOR THIS TEST JSB JLOAD LOAD MAPS JSB ZORCH PUT JSBS IN MEMSC AND DVICE SPC 1 LDA MRTD1 PUT INTERRUPT RETURN ADDRESS STA M5LNK IN THE VIOLATION RETURN ADDRESS JSB PMON ON PROTECTED MODE CLA TRY TO LDB MLPTR EXECUTE LDX OCT0 1 AN XMM XMM INSTRUCTION JSB OFFPM MODE IT, OFF PM LDY OFFPM JSB ERMS,I DEF E226 SPC 1 MRAD1 NOP JSB TRNOF OFF THE INTP AND USER JSB PIVCK CHECK VIOLATION REGISTER BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E227 LDA MRTD2 UPDATE THE STA M5LNK RETURN ADDRESS CLA NOW CLB TRY LDX OCT40 EXECUTING JSB PMON XMS XMS IN PM JSB OFFPM MADE IT, OFF PM LDY OFFPM JSB ERMS,I DEF E230 SKP MRAD2 NOP JSB TRNOF OFF INTP AND SYS JSB PIVCK CHECK BIT12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E231 LDA MRTD3 UPDATE STA M5LNK M5LNK LDA MLPTR POINT TO JLOAD TABLE JSB PMON TURN PM ON SYA TRY TO LOAD SYSTEM MAP JSB OFFPM LDY OFFPM JSB ERMS,I DEF E232 SPC 1 MRAD3 NOP JSB TRNOF OFF INTP AND SYS MAP JSB PIVCK CHECK PI VIOLATION BIT JMP *+5 LDY PIVCK JSB ERMS,I DEF E233 LDA MRTD4 UPDATE STA M5LNK M5LNK LDA MLPTR NOW JSB PMON TRY USA USA JSB OFFPM OFF PROTECTED MODE LDY OFFPM JSB ERMS,I DEF E234 SPC 1 MRAD4 NOP JSB TRNOF OFF THE INT SYS JSB PIVCK AND CHECK BIT12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E235 LDA MRTD5 UPDATE STA M5LNK M5LNK LDA MLPTR NOW JSB PMON ATTEMPT PAA PAA IN PM JSB OFFPM LDY OFFPM JSB ERMS,I DEF E236 SKP MRAD5 NOP JSB TRNOF OFF INTP AND SYS JSB PIVCK CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E237 LDA MRTD6 UPDATE STA M5LNK THE LINK WORD LDA MLPTR NOW JSB PMON TRY A PM ON PBA PBA JSB OFFPM LDY OFFPM JSB ERMS,I DEF E240 SPC 1 MRAD6 NOP JSB TRNOF OFF INTP JSB PIVCK AND CHECK BIT 12 JMP *+5 LDY PIVCK JSB ERMS,I DEF E241 SPC 1 LDA KRT05 UPDATE VIOLATION STA M5LNK RETURN ADDRESS LDA KXFRW GET TRANSFER WORD NOP CHANGE TO JMP *-N FOR LOOP/ JSB PMON ON THE PROTECTED MODE XMA TRY XMA INSTRUCTION JSB OFFPM MUST HAVE MADE IT, LDY OFFPM GET FAIL FLAG JSB ERMS,I REPORT THE ERROR DEF E222 SPC 1 KRA05 NOP INTERRUPT RETURN ADDRESS JSB TRNOF OFF THE INTP AND SYSTEM JSB PIVCK CHECK BIT 12 JMP *+5 OK GO ON LDY PIVCK NO, GET FAIL FLAG JSB ERMS,I AND REPORT NO BIT 12 DEF E223 NOP JMP TST14,I SKP E240 ASC 5,E240 PBA/ E241 ASC 5,E241 PBA/ SPC 2 MRTD1 DEF MRAD1 MRTD2 DEF MRAD2 MRTD3 DEF MRAD3 MRTD4 DEF MRAD4 MRTD5 DEF MRAD5 MRTD6 DEF MRAD6 MLPTR DEF LTSYS HED MEM DIAGNOSTIC - DCPC INTERFERENCE TEST * * TST20 * * TEST 20 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO SUCESSFULLY LOAD AND READ MAP REGISTERS WHILE * EXECUTING DCPC TRANSFERS. * * THIS TEST IS COMPRISED OF EXECUTING A USA AND USB WHILE DCPC * IS TRANSFERING DATA, AND CHECKING THE RESULTS. IF NO * ERROR IS FOUND FOR EVERY COMBINATION OF MAP REGISTER LOAD, * THE TEST IS EXITED. * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, * AN ERROR MESSAGE IS OUTPUT ON THE CONSOLE, AND THE PROGRAM * HALTS THE COMPUTER. THE OPERATOR MAY THEN DETERMINE THE * CAUSE OF THE ERROR BY CHECKING THE FOLLOWING REGISTERS: * * T REGISTER = HALT CODE * A RESISTER = ACTUAL PATTE'RN * B REGISTER = EXPECTED PATTERN * X REGISTER = FAILING REGISTER * Y REGISTER = ADDRESS OF FAILURE * * * * HED DCPC INTERFERENCE TEST TST20 EQU * SPC 1 NOP JSB LODUP LOAD THE SYSTEM MAP REGISTERS SPC 1 LDY NEG04 LDB LTSYS * QHREB LDX NON07 MAKE A LDA OCT10 LOAD QHREA STA B,I TABLE INA TO DO INB LARGE ISX DCPC JMP QHREA TRANSFERS ISY * JMP QHREB * SPC 1 LDA LTSYS LOAD PAA PORT A AND LDA LTSYS PORT B PBA MAP REGISTERS SPC 1 NOP HEREB LDA PTBCW OTA .DMA7 CLC .DMA3 LDA TWNTK IOR INPCW OTA .DMA3 STC .DMA3 LDA NG31K OTA .DMA3 SPC 2 NOP SJP *+2 QQIO1 STC DVICE,C STC .DMA7,C NOP CLA HEREA JSB CHTBL MAKE SEQUENCE TABLE LDA RTSYS MAKE THE IOR INPCW READ POINTER LDB LTSYS GET THE LOAD POINTER USB LOAD THE MAP AND NOP USA READ 'EM BACK NOP CHANGE TO JMP *-N FOR LOOP/ LDA RTSYS NOW LDB LTSYS COMPARE THE JSB TBCMP TWO TABLES JSB DMAER WHOOPS, DCPC AFFECTED USA SFS .DMA7 JMP HEREA NO, DO ANOTHR USA NOP JMP HEREB YES, DO ANOTHER DCPC SETUP SPC 5 CHTBL NOP LDA HOLDR GET LAST COUNT LDY NON40 LDB LTSYS AND POINTER XXXQQ INA BUMP REGISTER PATTERN CPA LAST TIME TO RESET? JMP EXITQ STA B,I NO, PUT IT IN THE TABLE INB BUMP POINTER STA HOLDR SAVE THE PATTERN ISY BUMP THE XTHRU JMP XXXQQ KEEP GOING JMP CHTBL,I DONE, EXIT SPC 1 DMAER NOP DJS yRGSVE DISABLE MEM AND SAVE THE REG. LDY DMAER JSB ERMS,I DEF E264 JMP TCPHR SJS RGRS2 REENABLE AND RESTORE Y SPC 2 WAITQ LDA QFLAG SZA,RSS JSB QRASH DCPC NOT COMPLETE AFTER 2 SEC CLA FIRST TIME THRU STA QFLAG RESET QFLAG LDA OCT2K OFF TO JSB TMRR,I 2 SECOND TIMER JMP .EXTQ AND DO SFS 7 AGAIN SPC 1 QRASH NOP LDY QRASH GET FAIL FLAG CLC INTP,C DJP *+2 NO DCPC FLAG, CRASH JSB ERMS,I DEF E267 JMP TST.Q E267 ASC 5,E267 DCPC/ SKP EXITQ CCA STA QFLAG .EXTQ SFS .DMA7 JMP *+2 JMP TST.Q JMP WAITQ SPC 2 TST.Q DJP *+2 CLC INTP,C NOP JMP TST20,I SPC 1 HOLDR OCT 0 LAST OCT 1777 PTBCW OCT 100014 .DMA7 EQU 7B .DMA3 EQU 3B INPCW OCT 100000 NG31K OCT -31000 NON07 OCT -7 NEG04 OCT -4 QFLAG OCT 0 E264 ASC 5,E264 DCPC/ HED INTERRUPTIBLE INSTRUCTIONS TEST * * TST17 * * TEST 17 VERIFIES PROPER OPERATION OF THE HARDWARE AND FIRMWARE * REQUIRED TO COMPLETE THE EXECUTION OF AN INSTRUCTION WHICH HAS * INTERRUPTED BY THE CPU. * * TEST 17 IS MADE UP OF EIGHT SUBTESTS WHICH START EXECUTION OF * AN INTERRUPTIBLE INSTRUCTION, AND THEN CAUSE AN INTERRUPT. * AT THE COMPLETION OF THE INTERRUPT HANDLING ROUTINE, CONTROL * IS RETURNED TO THE INTERRUPTED INSTRUCTION, AND THEN THE * RESULTS OF THE INSTRUCTION UNDER TEST ARE CHECKED TO VERIFY * COMPLETION. * * THE INSTRUCTIONS TESTED ARE: * * MBF MBI MBW MWF MWI MWW XMS XMM * * IF AN ERROR IS DETECTED DURING EXECUTION OF THIS TEST, AN * ERROR MESSAGE IS OUTPUT ON THE CONSOLE, AND THE PROGRAM HALTS * THE COMPUTER. AT THIS TIME, THE OPERATOR CAN DETERMINE THE A64006   12929-18012 1830 S 0122 DMS DIAGNOSTIC              H0101 &* CAUSE OF THE ERROR BY CHECKING THE T REGISTER WHICH WILL * CONTAIN THE ERROR CODE, AND THE Y REGISTER, WHICH WILL CONTAIN * THE ADDRESS OF THE ERROR SKP ORG 16000B TST17 EQU * SPC 1 NOP JSB KFNCE LOAD FENCE REGISTERS JSB ZORCH JSB'S INTO TRAP CELLS JSB LODUP AND MAP REGISTERS SPC 1 LDB TWNTK CHANGE THE SOURCE JSB PEMAD,I ADDRESS'S PATTERN LDB TWN2K AND ZERO JSB PZERO,I THE DESTINATION LDA PRET1 PUT INTERRUPT RETURN STA ADLNK IN TRAP CELL CCA SET INTERRUPT STA PHLAG CHECK FLAG JSB PSTUP SET UP FOR INTERRUPT JSB PINIT,I RESET TESTGG PATTERN TABLE LDA FORTK NOW SETUP LDB FORTK TO EXECUTE LDX FOURK MOVE BYTES FROM INSTRUCTION SJP *+2 ENABLE THE SYSTEM STF INTP START THE INTERRUPT MBF AND EXECUTE. NOP CHANGE TO JMP *-N FOR LOOP/ CAY SAVE THE A REGISTER JSB TRNOF LDA PHLAG GET THE FLAG SZA WAS THE INTERRUPT PROCESSED? JSB CRASH NO, GO ABORT TST17 LDA TWN2K NOW MAKE LDB TWNTK SURE THAT LDX NON2K THE INSTRUCTION JSB PCOMP,I COMPLETED EXECUTION JSB *+2 WHOOPS, FOUND AN ERROR, JMP PNXT1 TBCMP OK, CONTINUE NOP JSB ADDRESS HOLDER JSB RGSVE SAVE THE RESISTERS LDY *-2 GET THE ERROR FLAG JSB ERMS,I AND REPORT DEF E255 JSB RGRS2 RESTORE X AND Y SPC 1 JMP .PCOM,I PNXT1 CCA RESET THE STA PHLAG INTP FLAG LDB TWN2K CHANGE JSB C.PTN,I PATTERNS LDB TWNTK IN SOURCE JSB PZERO,I AND DESTINATION JSB PSTUP SET UP TO INTERRUPT LDA FORTK NOW SET UP LDB FORTK TO EXECUTE LDX FOURK MOVE BYTES INTO INSTRUCTION SJP *+2 ENABLE THE SYSTEM STF INTP START THE INTERRUPT MBI AND EXECUTE MBI NOP CHANGE TO JMP *-N FOR LOOP/ CAY SAVE A LDA PHLAG GET THE FLAG SZA DID IT INTERRUPT? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK VERIFY LDB TWN2K THAT LDX NON2K THE CORRECT JSB PCOMP,I NUMBER OF BYTES WERE MOVED JSB *+2 NO, REPORT JMP PNXT2 YES, OVER THE ERROR NOP STY SVPD4 SAVE Y LDY *-3 AND GET FAIL FLAG JMP .PCOM,I SPC 1 JSB ERMS,I REPORT DEF E265 LDY SVPD4 RESTORE Y JMP .PCOM,I AND FINISH TBCMP SPC 1 PNXT2 CCA RESET THE STA PHLAG INTERRUPT FLAG LDA FORTK SET UP LDB FOR4K FOR A LDX FOURK MBI INSTRUCTION JSB PSTUP SET UP FOR INTERRUPT SJP *+2 TURN ON SYSTEM STF INTP INITIATE AN INTERRUPT MBW AND EXECUTE NOP CAY SAVE A LDA PHLAG GET INTP FLAG SZA INTERRUPT PROCESSED? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK VERIFY LDB TWN4K MBW LDX NON2K JSB PCOMP,I COMPLETED CORRECTLY JSB *+2 NO, REPORT THE ERROR JMP PNXT3 YES, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 GET FAIL FLAG JSB ERMS,I REPORT THE DEF E256 ERROR LDY SVPD4 RESTORE Y JMP .PCOM,I AND CONTINUE SPC 1 PNXT3 CCA RESET INTP STA PHLAG CHECK FLAG LDA TWNTK CHANGE JSB C.PTN,I SOURCE PATTERN LDA TWNTK SET UP TO LDB TWNTK EXECUTE AN LDX OCT2K MWF INSTRUCTION JSB PSTUP SET UP TO INTERRUPT STF INTP INITIATE AN INTERRUPT lMWF AND EXECUTE THE NOP DEBUG CAY SAVE A LDA PHLAG GET THE INTP CHECK FLAG SZA WAS THE INTERRUPT PROCESSED? JSB CRASH NO, ABORT TST17 JSB TRNOF LDA TWN2K AND MAKE SURE LDB TWNTK THAT MWF LDX NON2K COMPLETED CORRECTLY JSB PCOMP,I JSB *+2 ERROR FOUND, REPORT IT JMP PNXT4 GCOMP COMPLETE, OVER THE ERROR NOP STY SVPD4 SAVE Y LDY *-3 GET FAIL FLAG JSB ERMS,I AND REPORT DEF E257 LDY SVPD4 RESTORE Y JMP .PCOM,I AND CHECK MORE SPC 1 PNXT4 CCA RESET STA PHLAG PHLAG LDA TWN2K CHANGE THE SOURCE JSB C.PTN,I PATTERN LDA TWNTK SET UP TO LDB TWNTK EXECUTE A LDX OCT2K MWI INST. JSB PSTUP SETUP TO INTERRUPT STF INTP ON INTP MWI EXECUTE MWI NOP DEBUG CAY SAVE A LDA PHLAG WAS INTERRUPT SZA PROCESSED? JSB CRASH NO, ABORT THE TEST JSB TRNOF LDA TWNTK CHECK LDB TWN2K COMPLETION LDX NON2K OF THE JSB PCOMP,I MWI INSTRUCTION JSB *+2 FAILURE DETECTED, REPORT JMP PNXT5 COMPLETED OK, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 AND GET THE FAILURE FLAG JSB ERMS,I THEN REPORT DEF E260 LDY SVPD4 RESTORE Y JMP .PCOM,I AND BACK FOR MORE SPC 1 PNXT5 CCA RESET STA PHLAG PHLAG LDA TWNTK CHANGE THE JSB C.PTN,I SOURCE PATTERN LDA TWNTK NOW SET UP LDB TWN2K TO EXECUTE LDX OCT2K AN MWW INST JSB PSTUP PRESET FOR AN INTERRUPT STF INTP NOW INITIATE AN INTERRUPT MWW AND EXECUTE THE INSTRUCTION NOP CAY SAVE A / LDA PHLAG GET INT PROCESS FLAG SZA WAS INTERRUPT PROCESSED? JSB CRASH NO, CRASH JSB TRNOF LDA TWNTK LDB TWN4K VERIFY LDX NON2K MWW COMPLETED JSB PCOMP,I AFTER THE INTERRUPT JSB *+2 WHOOPS, SOMETHING'S WRONG JMP PNXT6 MWW WAS SUCCESSFUL, CONTINUE NOP STY SVPD4 SAVE GCOMP'S XTHRU COUNTER LDY *-3 GET FAIL-FLAG JSB ERMS,I AND REPORT DEF E261 LDY SVPD4 RESTORE Y JMP .PCOM,I AND BACK FOR MORE SPC 1 PNXT6 CCA SET INTP STA PHLAG CHECK FLAG CLA SET UP CLB TO TRY LDX OC177 XMS JSB PSTUP SET UP FOR AN INTERRUPT STF INTP TURN INTERRUPT SYSTEM ON XMS AND EXECUTE XMS NOP LDA PHLAG MAKE SURE SZA INT WAS PROCESSED JSB CRASH NO, ABORT THE TEST JSB TRNOF CLA READ LDB RTSYS BACK LDX NO177 THE MAP XMM REGISTERS JSB SQALL MAKE A TABLE TO COMPARE SPC 1 JSB .ALCP,I MAKE SURE XMSW COMPLETED JSB *+2 ERROR DETECTED JMP PNXT7 COMPARE OK, CONTINUE NOP STY SVPD4 SAVE Y LDY *-3 GET THE ERROR FLAG JSB ERMS,I DEF E262 LDY SVPD4 NOW RESTORE Y JMP TCPHR AND BACK FOR MORE SPC 1 PNXT7 CCA SET STA PHLAG PHLAG JSB RDZRO ZERO THE READ TABLE CLA NOW XMM LDB RTSYS MAPS TO LDX NO177 MEMORY JSB PSTUP PRESET INTP STF INTP ON INTP AND SYS XMM AND EXECUTE NOP CAY SAVE A LDA PHLAG INTP PROCESSED SZA ??? JSB CRASH NO, ABORT JSB TRNOF JSB SQALL VERIFY COMPLETION JSB .ALCP,I JSB i*+2 ERROR DISCOVERED JMP PNXT8 NO ERROR DISCOVERED, GO ON NOP STY SVPD4 SAVE Y LDY *-3 GET ERROR FLAG JSB ERMS,I REPORT DEF E263 LDY SVPD4 RESTORE PNXT8 NOP JMP TST17,I SKP SPC 3 SPC 3 PRET1 DEF PRED1 PHLAG OCT 0 .ALCP DEF ALCMP PCOMP DEF GCOMP .PCOM DEF .GCOM PEMAD DEF MEMAD PZERO DEF GZERO PINIT DEF GINIT C.PTN DEF CHPTN SPC 3 CRASH NOP JSB TRNOF LDY CRASH GET FAIL FLAG JSB ERMS,I REPORT NO DEF E266 INTERRUPT OCCURRED JMP TST17,I AND ABORT TST17 SPC 2 PRED1 NOP CLF INTP OFF INTP PIO01 CLC DVICE CLEAR PIO02 CLF DVICE DEVICE SC JSB RGSVE SAVE ABX&Y CLA CLEAR STA PHLAG PHLAG NOP JSB RGRS1 JMP PRED1,I EXIT SPC 1 PSTUP NOP PIO03 STF DVICE TURN DVICE PIO04 STC DVICE READY, AND SJP PSTUP,I TURN SYSTEM ON & EXIT E255 ASC 5,E255 MBF/ E256 ASC 5,E256 MBW/ E257 ASC 5,E257 MWF/ E260 ASC 5,E260 MWI/ E261 ASC 5,E261 MWW/ E262 ASC 5,E262 XMS/ E263 ASC 5,E263 XMM/ E265 ASC 5,E265 MBI/ E266 ASC 14,E266 NO INTP, ABORTING TEST/ HED EXTENDED MEMORY TEST * * TST23 * * TEST 23 IS A UTILITY PROGRAM OFFERED AS A QUICK CHECK OF * EXTENDED MEMORY. IT IS NOT INTENDED TO BE USED AS A THOROUGH * MEMORY DIAGNOSTIC, MERELY A VERIFICATION OF THE HARDWARE * AND FIRMWARE REQUIRED TO ACCESS MEMORY SIZES GREATER THAN * 32K WORDS. * * TEST 23 STARTS BY CALCULATING MEMORY SIZE, BUILDS A TABLE * OF STARTING PAGE NUMBERS, AND THEN EXECUTING ONE PASS OF THE * DIAGNOSTIC ON ALL OF EXTENDED MEMORY, THEN EXITS BACK TO THE * CONTROL PROGRAM. * * IF AN ERROR IS DETECTED DURING THE EXECUTION OF THIS TEST, AN * ERROR MESSAGE WILL BE OUTPUT ON THE CONSOLE, OR, A CODED * HALT WILL OCCUR SO THE OPERATOR WILL BE AWARE vmOF THE ERROR * AND CAN DETERMINE THE CAUSE OF THE ERROR BY EXAMINING THE A,B * AND X REGISTERS WHICH WILL CONTAIN THE FOLLOWING INFORMATION: * * T REGISTER = ERROR CODE * A RESISTER = EXPECTED VALUE * B RESISTER = ACTUAL VALUE * * X RESISTER = LOGICAL ADDRESS OF ERROR * * * TO CONVERT THE LOGICAL MEMORY ADDRESS TO A PHYSICAL MEMORY * ADDRESS, THE OPERATOR MUST REMBER THE FOLLOWING STEPS: * * 1. THE LOGICAL PAGE NUMBER IS CONTAINED IN THE * MEMORY ADDRESS BITS 10-14. CONVERT TO OCTAL * FOR LOGICAL PAGE NUMBER. * * 2. SELECT THE CORRESPONDING MAP REGISTER. THIS * CAN BE DONE BY SELECTING THE M-REGISTER, * SETTING M-REGISTER BITS 14 AND 15 TO ONE, AND * M-REGISTER BITS 0-9 TO THE ADDRESS OF THE * MAP REGISTER DESIRED. WITHOUT PRESSING THE * STORE SWITCH, SELECT THE T-REGISTER * AT THIS TIME, THE T-REGISTER WILL CONTAIN * THE CONTENTS OF THE MAP ADDRESSED BY THE * M-REGISTER. THE CONTENTS OF THIS MAP REGISTER * IS THE PHYSICAL MEMORY PAGE NUMBER. SKP TST23 EQU * SPC 1 NOP LDA MEMO GET MEMORY SIZE FROM THE CONFG. AND XMASK ELIMINATE OTHER OPTIONS CPA XMASK AT LEAST 32K? JMP *+4 YEP, CONTINUE BOMBX JSB MSGC,I NOPE, TELL OPERATOR HE CANT DEF H317 RUN THIS TEST WITH LESS THAN 32K JMP TST23,I AND EXIT JSB LODUP LOAD UP MAPS 0-37 SPC 1 LDA OCT40 INITIALIZE MAXIMUM STA MAXPG PAGE COUNTER NOP DEBUG TSTX1 LDA OCT10 STARTING W/REGISTER TEN, LDB MAXPG AND FOR THE NEXT 24 LDX DEC24 PAGES, DEFINE MORE XMS MEMORY SPC 1 LDY NEG24 INITIALIZE A PAGE COUNTER OF 24 LDB TWNTK GET A PAGE 10 STARTING ADDRESS LDA PTRN1 AND A RECOGNIZABLE PATTERN SJP *+2 NOW ENABLE THE SYSTEM T23MS STA B,I STORE PATTERN INTO 1. LOC OF LDA B,I PAGE, READ IT BACK & CHECK THAT SZA,RSS IT IS NOT 000000 OR 177777 JMP PATMS PATTERN RETURNED IS 000000 CMA SZA,RSS JMP PATMS PATTERN STORED IS 177777 ADB OCT2K UPDATE B-REG TO BEGINNING OF NEXT PAGE LDA PTRN1 LOAD A-REG WITH PATTERN AGAIN ISY & INCREMENT PAGE COUNTER JMP T23MS DJP *+2 DISABLE MEMORY LDA MAXPG INCREASE STARTING ADDRESS OF MEMORY ADA OCT30 BLOCK BY 24 PAGES & GO TO REDE- STA MAXPG FINE MEMORY BLOCK JMP TSTX1 GO REDEFINE MEMORY * PATMS DJP *+1 DISABLE MEMORY LDA TWNTK DEDUCT THE 8K OF MEM ADDRESS IN THE CMA,INA BASE MEMORY, ATTACHED TO EVERY 24K ADB A IN THE MEM MAP TO GET TRUE DISPLM ADDR BLF CONVERT IT TO A TRUE PAGE DISPLM. RBL,RBL IN THE 24 PAGE BLOCK ADB MAXPG ADD THE PAGE NUMBER SUPPLIED BY 24K MODULE LDA B LOAD VALUE TO A-REG & CONVERT IT TO CLE ASCII FOR MESSAGE PRINT OUT LDB MSP23 JSB I2AS,I JSB MSGC,I PRINT MESSAGE TO CONSOLE DEF H327 * CMPLT DJP *+2 OFF THE SYSTEM LDA MAXPG GET DETECTED MAX+1 VALUE CMA,INA MAKE IT CMA MAXIMUM PAGE STA MAXPG SAVE THE MAXIMUM PAGE VALUE STB XERRA AND THE 'TOO BIG' VALUE IN B LDB NXTBL GET THE LAST TEMP TABLE ADDRESS OTRLP STA B,I STORE IN TEMPTABLE ADA NEG24 SUBTRACT 24 FOR NEXT TIME THRU STA XXTMP SAVE IN CASE NO END ADA NON40 USED UP? SSA YES, ALL GONE JMP XXARO GO FINISH UP LDA XXTMP NO, GET VALUE BACK ADB NEG01 UPDATE THE POINTER JMP OTRL-P AND DO AGAIN XXARO LDA TABLE SET UP A POINTER STA XTABL TO THE FIRST PAGE TABLE LDA OCT40 START WITH PAGE 40 STA XTABL,I PUT IN THE TABLE ISZ XTABL BUMP TABLE POINTER LDA B,I CHECK IF ONLY 64K CPA MAXPG IS PRESENT JMP MRKER PUT END OF TABLE MARKER INRLP INB BUMP POINTER TO NEXT PAGE LDA B,I GET THE NEXT STARTING PAGE STA XTABL,I AND PLACE IT IN THE TABLE CPA MAXPG COMPLETE? JMP *+3 YES, FINISH OFF ISZ XTABL NO, BUMP TABLE POINTER JMP INRLP THEN DO AGAIN MRKER CCA MAKE AN END OF TABLE MARKER, STA XTABL,I PUT END MARKER IN TABLE SPC 1 LDB XERRA GET THE 'TOO BIG' VALUE LDA ITABL INITIALIZE A STA SVPD1 VALUE TABLE POINTER CPB FORTK IS IT EXTRA EIGHT K? JMP YDOIT YES, FINISH ISZ SVPD1 NO, BUMP THE POINTER CPB SIXTK EXTRA SIXTEEN K? JMP YDOIT YES ISZ SVPD1 NO, BUMP AGAIN YDOIT LDB SVPD1,I AND PUT CORRECT ENDING STB UBOU VALUE IN UPPER BOUNDARY. SKP CLA ZERO THE MEM LFA BASE PAGE FENCE LDA OCT40 LOAD USER LDB TBLDF MAP REGISTERS LDX OCT05 FOR BITS 13-19 (ME BUS) XMM CHECK SPC 1 LDY NON05 INIT. XTHRU = 5 LDA PTRN2 GET LDX PTRN1 PATTERNS LDB OCT10 AND POINTER STX B,I PUT CONTROL PATTERN IN 10 SPC 1 SJP *+2 ON THE SYSTEM AREA XDOIT XSA B,I CROSS STORE CPA OCT10,I CLOBBER ADDRESS 10? JSB XERRA YES, GO AND CRASH!! ADB OCT2K NO, UPDATE POINTER TO NEXT PAGE ISY DONE?? JMP XDOIT NO, GO DO IT AGAIN JMP JACK-1 YES, GO DO MEM TESTING SPC 1 XERRA NOP DJP *+2 OFF SYSTEM JSB RGSVE SAVE THE REGISTERS LDY XERRA GET THE FAIL FLAG JSB ERMS,I AND REPORT THE DEF E325 PROBLEM OF ME BUS SJP *+2 BACK ON THE SYSTEM JMP XERRA,I AND RETURN SPC 1 TBLDF DEF *+1 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 SPC 2 JSB RESET SET TABLE POINTER TO FIRST ADDR JACK DJP *+2 DISABLE THE SYSTEM LDA OCT10 STARTING REGISTER IS 10 LDB XTABL,I GET THE NEXT STARTING PAGE CPB NEG01 LAST ONE? JMP ENDXX YES, GO EXIT THE TEST LDX OCT37 NO, GET THE COUNT XMS AND REDEFINE THE MAP REGISTERS SKP ISZ XTABL BUMP THE TABLE POINTER SJP *+2 TURN THE SYSTEM ON JMP ACT AND DO THE MEMORY DIAGNOSTIC SPC 2 RESET NOP LDA TABLE RESET THE STA XTABL STARTING PAGE LDB XTABL,I TABLE POINTER, JMP RESET,I AND EXIT XMASK OCT 70000 SPC 3 ENDXX NOP JMP TST23,I EXIT TST23 SPC 2 E321 DEF ERROR H317 ASC 16,H317 MUST HAVE GREATER THAN 32K/ H327 ASC 22,H327 XXXXK OF CONTIGUOUS MEMORY INSTALLED/ SPC 2 DEC24 DEC 24 SIXTK OCT 60000 MAXPG OCT 0 NEG24 DEC -24 XXTMP OCT 0 XTABL OCT 0 TABLE DEF *+1 BSS 7 NXTBL DEF *+7 BSS 7 ITABL DEF *+1 OCT 37777 OCT 57777 OCT 77777 SKP ACT LDA MTIME STA MCNT CCE LOOP CME LDA LBOU THIS TEST DOES A MEMORY ADDRESS FILL LDB A AND DOES A MEMORY COMPLEMENT SEZ TEST THUS ASSURING OF DETECTING CMB ANY FAILURE REGARDLESS OF WHERE STB A,I IT IS LOCATED CPA UBOU JMP CMP-1 THIS TEST DOES THE ADRS TEST WHEN INA E IS CLEAR AND DOES THE ADRS JMP FILL COMPLEMENT TEST WHEN E IS SET LDA LBOU CMP CAX LDB A,I SEZ A = GOOD DATA CMA B = BAD DATA CPk>A B RSS E320 OCT 107020 SEZ CMA CPA UBOU JMP DOWN INA JMP CMP DOWN SEZ ISZ MCNT JMP LOOP NOP HED WALKING ONES TEST W1 LDA MTIME WALKING ONE TEST STA MCNT INITIALIZE REPEAT COUNTER LDA IPAT1 STA PAT1 LDA IPAT2 STA PAT2 CLA,INA STA BITPT FOR ROTATING BIT PATTERN CAX BEGW CLO LDA LBOU STA ADDRS INITIALIZE ADDRESS POINTER WPAT1 LDB PAT1 JSB WRITE LDB PAT2 JSB WRITE JMP WPAT1 SPC 2 * THE WRITE SUBROUTINE IS ENTERED WITH THE * PATTERN TO BE STORED IN THE B-REG. IT IS *STORED IN 32 LOCATIONS BEGINNING AT THE * ADDRESS POINTER OR UNTIL THE UPPER ADDRESS * BOUND IS REACHED. THE RETURN ADDRESS IS * THEN MODIFIED TO GET THE ALTERNATE PATTERN. SPC 2 WRITE NOP STB ADDRS,I STORE B THRU THE ADDRESS POINTER LDA ADDRS CPA UBOU HAS UPPER BOUND BEEN REACHED? JMP BEGR YES, GO READ. INA NO, STA ADDRS MODIFY ADDRESS POINTER AND XXMSK SZA AT 32 WORD BOUNDARY JMP WRITE+1 NO CONTINUE WITH PRESENT PATTERN JMP WRITE,I SPC 2 * THE MEMORY WHICH HAS BEEN WRITTEN WITH * 32 WORDS OF PATTERN ONE INTERLEAVED WITH * 32 WORDS OF PATTERN TWO WILL NOW BE * TESTED. IF THE DATA IN A MEMORY CELL * TESTS VALID, IT WILL BE COMPLEMENTED * AND TESTED AGAIN. IF IT IS STILL VALID IT * WILL BE RECOMPLIMENTED AND THE * NEXT MEMORY CELL WILL BE TESTED. ANY * INVALID TEST WILL RESULT IN A 107021 WITH THE * GOOD DATA IN THE A-REG AND THE BAD DATA * IN THE B-REG. PUSH RUN AND A 107022 * WILL OCCUR WITH THE ADDRESS IN THE A-REG * AND THE BAD DATA IN THE B-REG. SKP BEGR STO LDA LBOU STA ADDRS INITIALIZE THE ADDRESS POINTER. RPAT1 LDA PAT1 ؙB@< 7 ADB Z.7 SSB ? JMP *+3 OK GO ON E.73 HLT 73B NO JMP ZCONF TRY AGAIN LDB LSCS CHECK IF LOW CMB SC IS LESS THAN THE ADB A SC OF THE FENCE SSB JMP E072 NO, ERROR LDB HSCS CHECK IF HIGH CMB,INB SC IS BIGGER THAN THE ADB A SC OF THE FENCE SSB JMP *+3 YES,PROCEED E072 HLT 72B NO, RETURN FOR RECONFIGURATION JMP ZCONF LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS CLA CLEAR S-REG FOR INPUT OTA 01B HLT 74B ALLOW OPERATOR TO INPUT PROGRAM OPTIONS JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED 12936 PRIVILEGED INTERRUPT CARD DIAGNOSTIC * * CNTLF CNTL * ***** **** * * * *********************************** * * ~ * * * * * * * * NO * LOWER * * FLGF * ACTION * PRIORITY * * **** * (00) * (10) * * * * * * * * * * *********************************** * * * * * * * * * * INTERRUPT * * * * AND * LOWER * * FLG * LOWER * PRIORITY * * *** * PRIORITY * (11) * * * (01) * * * * * * * *********************************** * * * * FLG = FLAG * CNTL = CONTROL * * * HED 12936 PRIVILEGED INT DIAG - POINTERS ORG 100B JMP PCFG,I GO TO CONFIGURE HI-LO SC ORG 140B IOIP DEF IODP TSTP DEF TSTD LDMP DEF LDMS STDA OCT 777 STDB OCT 0 ORG 150B IODP EQU * DEF FSC01 DEF FSC02 DEF FSC03 DEF FSC04 DEF FSC05 DEF FSC06 DEF FSC07 DEF FSC10 DEF FSC11 DEF FSC12 DEF FSC13 DEF FSC14 DEF FSC15 DEF FSC16 DEF FSC17 DEF FSC20 DEF FSC21 DEF FSC22 DEF FSC23 DEF FSC24 DEF FSC25 DEF FSC26 DEF FSC27 DEF FSC30 DEF FSC31 DEF FSC32 DEF FSC33 DEF FSC34 DEF FSC35 DEF FSC36 DEF FSC37 DEF FSC40 DEF FSC41 DEF FSC42 DEC -1 SPC 3 HIODP EQU * DEF HSC00 DEF HSC01 DEF HSC02 DEF HSC03 DEF HSC04 DEF HSC07 DEF HSC10 DEF HSC11 DEF HSC12 DEF HSC13 DEF HSC14 DEF HSC15 DEF HSC1L<:66 DEF HSC17 DEF HSC20 DEF HSC21 DEF HSC22 DEF HSC23 DEC -1 SPC 3 LOODP EQU * DEF LSC00 DEF LSC01 DEF LSC02 DEF LSC03 DEF LSC04 DEF LSC05 DEF LSC06 DEF LSC07 DEF LSC10 DEF LSC11 DEF LSC12 DEF LSC13 DEF LSC14 DEF LSC15 DEF LSC16 DEF LSC17 DEF LSC20 DEF LSC21 DEF LSC22 DEF LSC23 DEC -1 SPC 3 TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST08 DEF TST09 DEC -1 LDMS ASC 22,12936 PRIVILEGED INTERRUPT CARD DIAGNOSTIC/ SKP HSC EQU 12B FCH EQU 11B LSC EQU 10B SPC 3 HIOIP DEF HIODP LOOIP DEF LOODP SPC 3 HITJ JSB HITP,I HCCJ JSB HCCP,I HPSJ JSB HPSP,I H00J JSB H00P,I H01J JSB H01P,I H10J JSB H10P,I H11J JSB H11P,I * HITP DEF HITR HCCP DEF HCCR HPSP DEF HPSR H00P DEF H00R H01P DEF H01R H10P DEF H10R H11P DEF H11R * FCCJ JSB FCCP,I FPSJ JSB FPSP,I F00J JSB F00P,I F01J JSB F01P,I F10J JSB F10P,I F11J JSB F11P,I FPRJ JSB FPRP,I * FCCP DEF FCCR FPSP DEF FPSR F00P DEF F00R F01P DEF F01R F10P DEF F10R F11P DEF F11R FPRP DEF FPRR * LOTJ JSB LOTP,I L00J JSB L00P,I L01J JSB L01P,I L10J JSB L10P,I L11J JSB L11P,I LPRJ JSB LPRP,I * LOTP DEF LOTR L00P DEF L00R L01P DEF L01R L10P DEF L10R L11P DEF L11R LPRP DEF LPRR 9a<  12936-18002 1643 S 0122 12936A PRIVILEGED INTERRUPT DIAGNOSTIC             H0101  HED 12936 PRIVILEGED INT DIAG - SUBROUTINES * * LHSU SETS THE LO/HI SC TO INT * LHSU NOP HSC00 STC HSC SET HI SC HSC01 STF HSC TO INT LSC00 STC LSC SET LO SC LSC01 STF LSC TO INT JMP LHSU,I EXIT SPC 3 * * TOS TURNS OFF LO/HI/FENCE CH'S * TOS NOP FSC41 CLC FCH TURN FSC42 CLF FCH OFF HSC14 CLC HSC HI/LO/FENCE LSC07 CLC LSC SC'S JMP TOS,I EXIT SPC 3 * * SCCS CONFIGURES I/O INSTRUCTIONS TO * THE CURRENT SELECT CODE * SCCS NOP STA SCS SAVE SELECT CODE STB CSC SAVE SC TABLE SCCS1 LDB CSC,I LOAD FIRST ADDRESS CPB M1 IS IT THE END OF LIST JMP SCCS,I YES, EXIT LDA B,I NO, LOAD INSTRUCTION AND SCMK MASK OFF SC IOR SCS OR IN CURRENT SC STA B,I RESTORE ISZ CSC MOVE PTR TO NEXT ADDRESS JMP SCCS1 CONTINUE SCS OCT 0 CSC OCT 0 SCMK OCT 177700 M1 DEC -1 HED 12936 PRIVILEGED INT DIAG - CONFIGURATION * * PCFG PERFORMS CONFIGURATION ON LO/HI SC * I/O INSTRUCTIONS * PCFG DEF FCFG FCFG EQU * CF1 LIA SW LOAD SWITCH REGISTER AND MKSC MASK OFF HI SC STA LSCS SAVE LDB A CHECK CMB,INB THAT ADB B7 SC SSB > 7 JMP CF2 YES E073 HLT 73B NO JMP CF1 CF2 LIA SW ALF,ALF POSITION HI SC RAL,RAL AND MKSC MASK OFF HI SC STA HSCS SAVE LDB A CHECK CMB,INB THAT ADB B7 SC SSB > 7 JMP CF3 YES JMP E073 NO JMP CF1 CF3 LDB LSCS CHECK THAT HIGH SC CMA,INA IS AT LEAST INA LOW SC + 2 ADA B  SSA JMP CF4 YES, CONTINUE E071 HLT 71B NO, RETURN FOR ANOTHER TRY JMP CF1 CF4 LDA LSCS LDB LOOIP JSB SCCS CONFIGURE LO SC INSTR LDA HSCS LDB HIOIP JSB SCCS CONFIGURE HI SC INSTR CLA CLEAR S-REG. FOR INPUT OTA 01B HLT 70B ENTER FENCE SC TO SWR JMP CFIG,I GO TO FENCE CONFIGURATION LSCS OCT 0 HSCS OCT 0 B7 OCT 7 MKSC OCT 77 * HED 12936 PRIVILEGED INT DIAG - TEST 0 * INITIATION SECTION * * HI SC SET TO INT * TST00 EQU * HIT NOP LDA HITJ SET UP HSC15 STA HSC RETURN POINT HSC16 STC HSC SET HI SC HSC17 STF HSC TO INT STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E035 JSB ERMS,I REPORT ERROR DEF MS035 JMP HIT,I EXIT MS035 ASC 19,E035 HI SC SET TO INT BUT DID NOT INT/ * * * COMPLETION SECTION * * INTERRUPT SEQUENCE * 1. LOW * 2. NOT HIGH * 3. NOT FENCE * HITR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP HIT,I EXIT * HED 12936 PRIVILEGED INT DIAG - TEST 1 * INITIATION SECTION * * LO SC SET TO INT * TST01 EQU * LOT NOP LDA LOTJ SET UP LSC10 STA LSC RETURN POINT LSC11 STC LSC SET LO SC LSC12 STF LSC TO INT STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E036 JSB ERMS,I REPORT ERROR DEF MS036 JMP LOT,I EXIT MS036 ASC 19,E036 LO SC SET TO INT BUT DID NOT INT/ * SPC 2 * * COMPLETION SECTION * * INTERRUPT SEQUENCE * * 1. HIGH * * 2. NOT FENCE * 3. NOT LOW * LOTR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP LOT,I EXIT * HED 12936 PRIVILEGED INT DIAG - TEST 2 * * INITIATION SECTION * * CNTL.FLGF * HI SC SET TO INTERRUPT * TST02 EQU * CCT NOP LDA HCCJ SET HSC04 STA HSC UP LDA FCCJ INT FSC04 STA FCH RETURN HSC12 STC HSC SET HI SC HSC13 STF HSC TO INT FSC05 CLF FCH SET FENCE TO FSC06 STC FCH LOWER PRIORITY STF INTP TURN ON INTS FSC24 CLC FCH CLEAR FENCE CONTROL NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E030 JSB ERMS,I REPORT ERROR DEF MS030 JMP CCT,I EXIT MS030 ASC 19,E030 CLC SC FAILED TO CLEAR CONTROL OR OCT 6412 ASC 14, PRIORITY CHAIN BROKEN/ SPC 2 * * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * 1. HIGH * 2. NOT LOW * 3. NOT FENCE * FCCR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E031 JSB ERMS,I REPORT ERROR DEF MS031 JMP CCT,I EXIT MS031 ASC 16,E031 CLC SC CAUSED FLAG TO SET/ SPC 2 HCCR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP CCT,I EXIT * HED 12936 PRIVILEGED INT DIAG - TEST 3 * * INITIATION SECTION * * CNTL.FLG * HI SC SET TO INT * TST03 EQU * PST NOP LDB BTCK CHECK FOR JSB SWRT,I TEST SUPPRESS JMP PST,I YES LDA HPSJ SET HSC07 STA HSC UP LDA FPSJ INT FSC07 STA FCH RETURN FSC02 OTA FCH SET FENCE TO FSC03 STC FCH LOWER PRIORITY L032 JSB MSGH,I TE@LL OPERATOR TO DEF MS032 " PRESS PRESET, RUN " HSC02 STF HSC SET HI SC HSC03 STC HSC TO INT STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E033 JSB ERMS,I REPORT ERROR DEF MS033 JMP PST,I EXIT MS032 ASC 14,H032 PRESS PRESET(EXT), RUN/ MS033 ASC 20,E033 PRESET(EXT) FAILED TO CLEAR CONTROL OCT 6412 ASC 21, AND-OR FLAG OR PRIORITY CHAIN BROKEN/ SKP * * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * 1. HIGH * 2. NOT LOW * 3. NOT FENCE * FPSR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E034 JSB ERMS,I REPORT ERROR DEF MS034 JMP PST,I EXIT MS034 ASC 18,E034 FENCE INT'D AFTER PRESET(EXT)/ SPC 3 HPSR NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP PST,I EXIT BTCK OCT 10400 * HED 12936 PRIVILEGED INT DIAG - TEST 4 * * INITIATION SECTION * * CNTLF.FLGF * LO/HI SC SET TO INTERRUPT * TST04 EQU * CNAFN NOP LDA H00J SET HSC20 STA HSC UP LDA F00J INT FSC20 STA FCH RETURN LDA L00J POINTS LSC20 STA LSC * CLA CLEAR LOW STA L00P,I RETURN FLAG JSB LHSU SET UP HI/LO SC'S FSC10 CLF FCH SET FENCE CH FSC11 CLC FCH FOR NO ACTION STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E040 JSB ERMS,I REPORT ERROR DEF MS040 " NO INT RECEIVED FROM LO/HI" JMP CNAFN,I EXIT * MS040 ASC 19,E040 NOQ INT RECEIVED FROM LO OR HI SC/ SPC 2 * * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * * 1. LOW * 2. HIGH * 3. NOT FENCE * L00R NOP CLF INTP TURN OFF INTS LSC04 CLC LSC CLEAR HI CH STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E041 JSB ERMS,I REPORT ERROR DEF MS041 JMP CNAFN,I EXIT MS041 ASC 21,E041 HI SC DID NOT INTERRUPT AFTER LO SC/ SKP * F00R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L00R SZA TEST FOR HI INT ? JMP E043 YES E042 JSB ERMS,I NO, REPORT ERROR DEF MS042 JMP CNAFN,I EXIT E043 JSB ERMS,I REPORT ERROR DEF MS043 JMP CNAFN,I EXIT MS042 ASC 20,E042 FENCE INT'D BEFORE LO SC INT'D BUT OCT 6412 ASC 12, FENCE FLAG NOT SET/ MS043 ASC 19,E043 FENCE INT'D AFTER LO SC INT'D BUT OCT 6412 ASC 12, FENCE FLAG NOT SET/ SPC 2 * H00R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L00R SZA TEST FOR LO INT ? JMP CNAFN,I YES, EXIT E044 JSB ERMS,I NO, REPORT ERROR DEF MS044 JMP CNAFN,I EXIT MS044 ASC 15,E044 HI SC INT'D BEFORE LO SC/ * HED 12936 PRIVILEGED INT DIAG - TEST 5 * * INITIATION SECTION * * CNTL.FLGF * LO/HI SC SET TO INTERRUPT * ORG 4000B TST05 EQU * CAFN NOP LDA H10J SET HSC21 STA HSC UP LDA F10J INT FSC21 STA FCH RETURN LDA L10J POINTS LSC21 STA LSC * CLA CLEAR LOW STA L10P,I RETURN POINT FLAG JSB LHSU SET UP HI/LO SC'S FSC12 ޙCLF FCH SET FENCE TO FSC13 STC FCH LOWER PRIORITY STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E050 JSB ERMS,I REPORT ERROR DEF MS050 JMP CAFN,I EXIT MS050 ASC 16,E050 NO INT RECEIVED FROM LO SC/ * SPC 2 * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * * 1. LOW * 2. NOT FENCE * 3. NOT HIGH * L10R NOP CLF INTP TURN OFF INTS LSC05 CLC LSC CLEAR LOW SC STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP CAFN,I EXIT SKP F10R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L10R SZA TEST FOR LO INT ? JMP E052 YES E051 JSB ERMS,I REPORT ERROR DEF MS051 JMP CAFN,I EXIT E052 JSB ERMS,I REPORT ERROR DEF MS052 JMP CAFN,I EXIT MS051 ASC 18,E051 FENCE INT'D BEFORE LO SC WITH OCT 6412 ASC 12, FENCE CONTROL SET/ MS052 ASC 17,E052 FENCE INT'D AFTER LO SC INT'D OCT 6412 ASC 14, WITH FENCE CONTROL SET/ SPC 3 * * * H10R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L10R SZA TEST FOR LO INT ? JMP E054 YES E053 JSB ERMS,I NO, REPORT ERROR DEF MS053 JMP CAFN,I EXIT E054 JSB ERMS,I REPORT ERROR DEF MS054 JMP CAFN,I EXIT MS053 ASC 19,E053 LO SC DID NOT INT BUT HI SC INT'D OCT 6412 ASC 10, WITH FENCE UP/ MS054 ASC 17,E054 HI SC INT'D AFTER LO SC INT'D OCT 6412 ASC 11, BUT FENCE WAS UP/ * HED 12936 PRIVILEGED INT DIABG - TEST 6 * * INITIATION SECTION * * CNTL.FLG * LO/HI SC SET TO INTERRUPT * TST06 EQU * CAF NOP LDA H11J SET HSC22 STA HSC UP LDA F11J INT FSC22 STA FCH RETURN LDA L11J POINTS LSC22 STA LSC * CLA CLEAR LOW STA L11P,I RETURN POINT FLAG JSB LHSU SET UP HI/LO SC'S FSC14 STC FCH SET FENCE TO FSC15 OTA FCH LOWER PRIORITY STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E060 JSB ERMS,I REPORT ERROR DEF MS060 JMP CAF,I EXIT MS060 ASC 16,E060 NO INT RECEIVED FROM LO SC/ * SKP * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * * 1. LOW * 2. NOT FENCE * 3. NOT HIGH * L11R NOP CLF INTP TURN OFF INTS LSC06 CLC LSC CLEAR LO SC STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES JMP CAF,I EXIT SPC 1 * F11R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L11R SZA TEST FOR LO INT ? JMP E062 YES E061 JSB ERMS,I REPORT ERROR DEF MS061 JMP CAF,I EXIT E062 JSB ERMS,I REPORT ERROR DEF MS062 JMP CAF,I EXIT MS061 ASC 20,E061 FENCE INT'D BEFORE LO SC BUT FENCE OCT 6412 ASC 13, FLAG AND CONTROL SET/ MS062 ASC 17,E062 FENCE INT'D AFTER LO SC INT'D OCT 6412 ASC 15, BUT FLAG AND CONTROL SET/ SPC 1 * H11R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA L181R SZA JMP E064 YES E063 JSB ERMS,I NO, REPORT ERROR DEF MS063 JMP CAF,I EXIT E064 JSB ERMS,I REPORT ERROR DEF MS064 JMP CAF,I EXIT MS063 ASC 19,E063 LO SC DID NOT INT BUT HI SC INT'D OCT 6412 ASC 10, WITH FENCE UP/ MS064 ASC 17,E064 HI SC INT'D AFTER LO SC INT'D OCT 6412 ASC 09, BUT FENCE UP/ HED 12936 PRIVILEGED INT DIAG - TEST 7 * * INITIATION SECTION * * CNTLF.FLG * HI/FENCE SC SET TO INT * LO SET TO INT AFTER FENCE INT * TST07 EQU * CNAF NOP LDA H01J SET HSC23 STA HSC UP LDA F01J INT FSC23 STA FCH RETURN LDA L01J POINTS LSC23 STA LSC * CLA CLEAR HI/FENCE STA L01P,I RETURN POINT FLAG STA F01P,I HSC10 STC HSC SET HI SC HSC11 STF HSC TO INT FSC16 CLC FCH SET FENCE TO INT FSC17 OTA FCH AND LOWER PRIORITY STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E100 JSB ERMS,I REPORT ERROR DEF MS100 JMP CNAF,I EXIT MS100 ASC 21,E100 NO INT RECEIVED FROM FENCE OR HI SC/ * SKP 2 * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * * 1. FENCE * 2. LOW * 3. HIGH * L01R NOP CLF INTP TURN OFF INTS LDA F01R SZA,RSS TEST FOR FENCE INT ? JMP E102-1 NO LSC13 CLC LSC CLEAR LO SC FSC01 CLF FCH CLEAR FENCE SC STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E101 JSB ERMS,I REPORT ERROR DEF MS101 lpJMP CNAF,I EXIT JSB TOS TURN OFF ALL DEVICES E102 JSB ERMS,I REPORT ERROR DEF MS102 JMP CNAF,I EXIT MS101 ASC 18,E101 HI SC DID NOT INT AFTER LO SC/ MS102 ASC 15,E102 LO SC INT'D BEFORE FENCE/ SPC 3 * F01R NOP CLF INTP TURN OFF INTS LSC03 STC LSC SET HI CH LSC02 STF LSC TO INT STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E103 JSB ERMS,I REPORT ERROR DEF MS103 JMP CNAF,I EXIT MS103 ASC 18,E103 LO SC DID NOT INT AFTER FENCE/ SPC 3 H01R NOP CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES LDA F01R SZA,RSS TEST FOR FENCE INT ? JMP E104 NO LDA L01R YES SZA TEST FOR LO INT ? JMP CNAF,I YES E105 JSB ERMS,I REPORT ERROR DEF MS105 JMP CNAF,I EXIT E104 JSB ERMS,I NO, REPORT ERROR DEF MS104 JMP CNAF,I EXIT MS104 ASC 18,E104 HI SC INT'D BUT FENCE AND LO SC OCT 6412 ASC 09, DID NOT INT/ MS105 ASC 17,E105 HI SC INT'D AFTER FENCE INT'D OCT 6412 ASC 14, BUT BEFORE LO SC INT'D/ * HED 12936 PRIVILEGED INT DIAG - TEST 8 * * INITIATION SECTION * * CNTL.FLG * LO/FENCE SET TO INT * FENCE SET TO INT AFTER LOW * TST08 EQU * LFPRT NOP LDA LPRJ SET LSC14 STA LSC UP LDA FPRJ INT FSC25 STA FCH RTN PTS CLA CLEAR HI CH STA LPRP,I RETURN POINT FLAG LSC15 STC LSC SET LO SC LSC16 STF LSC TO INT FSC26 OTA FCH SET FENCE TO INT FSC27 CLC FCH AND LOWER PRIORITY STF INTP TURN ON INTS NOP DELAY NOP * NOP *  CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E200 JSB ERMS,I REPORT ERROR DEF MS200 JMP LFPRT,I EXIT MS200 ASC 21,E200 NO INT RECEIVED FROM FENCE OR LO SC/ * * COMPLETION SECTIONS * * INTERRUPT SEQUENCE * * 1. LO * 2. FENCE * LPRR NOP CLF INTP TURN OFF INTS LSC17 CLC LSC TURN OFF LO SC STF INTP TURN ON INTS NOP DELAY NOP * NOP * CLF INTP TURN OFF INTS JSB TOS TURN OFF ALL DEVICES E201 JSB ERMS,I REPORT ERROR DEF MS201 JMP LFPRT,I EXIT MS201 ASC 18,E201 FENCE DID NOT INT AFTER LO SC/ SPC 2 FPRR NOP CLF INTP TURN OFF INTS JSB TOS LDA LPRR SZA TEST FOR LO INT ? JMP LFPRT,I YES E202 JSB ERMS,I NO, REPROT ERROR DEF MS202 JMP LFPRT,I EXIT MS202 ASC 15,E202 FENCE INT'D BEFORE LO SC/ * HED 12936 PRIVILEGED INT DIAG - TEST 9 * * SCLP PROVIDES A SCOPE LOOP OF FENCE FLAG/CNTL * SET AND THEN CLEARED WITH AND WITHOUT INTS ON * TST09 EQU * SCLP NOP CLA FSC40 STA FCH FSC30 STC FCH SET FENCE CONTROL NOP FSC31 OTA FCH SET FENCE FLAG NOP FSC32 CLC FCH CLEAR FENCE CONTROL NOP FSC33 CLF FCH CLEAR FENCE FLAG STF INTP TURN ON INT FSC34 STC FCH SET FENCE CONTROL NOP FSC35 OTA FCH SET FENCE FLAG NOP FSC36 CLC FCH CLEAR FENCE CONTROL NOP FSC37 CLF FCH CLEAR FENCE FLAG CLF INTP TURN OFF INTS LDB BT9 CHECK FOR EXIT LIA 1 AND B SZA TEST FOR EXIT JMP SCLP,I JMP FSC30 NO BT9 OCT 1000 FWAA EQU * JSB ERMS,I DEF MS030 JSB ERMS,I DEF MS031 JSB ERMS,I DEF MS032 JSB ERMS,I DEF MS033 JSB ERMS,I B@< DEF MS034 JSB ERMS,I DEF MS035 JSB ERMS,I DEF MS036 JSB ERMS,I DEF MS040 JSB ERMS,I DEF MS041 JSB ERMS,I DEF MS042 JSB ERMS,I DEF MS043 JSB ERMS,I DEF MS044 JSB ERMS,I DEF MS050 JSB ERMS,I DEF MS051 JSB ERMS,I DEF MS052 JSB ERMS,I DEF MS053 JSB ERMS,I DEF MS054 JSB ERMS,I DEF MS060 JSB ERMS,I DEF MS061 JSB ERMS,I DEF MS062 JSB ERMS,I DEF MS063 JSB ERMS,I DEF MS064 JSB ERMS,I DEF MS100 JSB ERMS,I DEF MS101 JSB ERMS,I DEF MS102 JSB ERMS,I DEF MS103 JSB ERMS,I DEF MS104 JSB ERMS,I DEF MS105 JSB ERMS,I DEF MS200 JSB ERMS,I DEF MS201 JSB ERMS,I DEF MS202 HLT 66B END 8B  12943-18001 1728 S 0122 EIG (INDEX) DG              H0101 ASMB,A,B,L,C HED EIG (WORD,BYTE,BIT) DIAGNOSTIC ORG 0 DSN 101112 24 AUGUST 1977 REV 1728 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND CONFIG. * B. LOAD DIAGNOSTIC PROGRAM. * C. LOAD ADDRESS 100B * D. LOAD SW REG WITH SELECT CODE * E. PRESS RUN WAIT FOR HALT 102074 * F. ENTER PROGRAM OPTION: (8-15) * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPPRESS ERROR MESSAGES. * 10 = SUPPRESS NON-ERROR MESSAGES. * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * * 7 * = RESERVED * 0 * * * * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE - RETURN TO STEP C * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * 106070 - * 106076 CONFIG. HALTS SEE DIAG. CONFIG. MANUAL HED DEFINITION OF MNEMONICS OR ABBERVIATION * ** DEFINITION OF MNEMONICS OR ABBREVIATIONS ** * * * A, A-REG - A-REGISTER. * ACT - ACTUAL. * ADDR ٞ- ADDRESS. * B, B-REG - B-REGISTER. * CNT - COUNT. * CONFIG - CONFIGURE, CONFIGURATOR. * CONST - CONSTANT. * DEC - DECIMAL. * DGT - DIGIT. * E, E-REG - EXTEND REGISTER. * EXP - EXPECT, EXPECTED. * INCR - INCRMENT. * INSTR - INSTRUCTION. * INTP - INTERRUPT. * MEM - MEMORY. * MPT - MEMORY PROTECT. * NEG - NEGATIVE * NOS, NUM, NUMB - NUMBER. * O-REG, OVR, - OVERFLOW REGISTER. * P, P-REG - P-REGISTER. * PARAM - PARAMETER. * POS - POSITIVE. * REG - REGISTER. * RTN - RETURN. * SC, SELECT CODE * SUBT - SUBTRACT * SYS, SYST - SYSTEM. * TP, TABLE POINTER. * WD, WDS- WORD, WORDS. * := - REPLACED BY, I.E. A:=B, WHERE AS A IS REPLACED BY VALUE B. HED TEST DESCRIPTION * TEST SELECTION BY OPERATOR: * ********************************************************************** * A-REG SETTING * TEST TO BE * TEST NAME: * * IF SET: * SELECTED * * ********************************************************************** * * * * * 0 * 0 * LBT TEST (LOAD BYTE) * * 1 * 1 * SBT TEST (STORE BYTE) * * 2 * 2 * CBT TEST (COMPARE BYTE) * * 3 * 3 * SFB TEST (SCAN BYTE) * * 4 * 4 * MBT TEST (MOVE BYTE) * * 5 * 5 * CMW TEST (COMPARE WORD) * * 6 * 6 * MVW TEST (MOVE WORD) * * 7 * 7 * TBS TEST (TEST BITS) * * 8 * 8 * SBS TEST (SET BITS) * * 9 * 9 * CBS TEST (CLEAR BITS) * ********************************************************************** * j* IF A-REG IS CLEAR THEN ALL TESTS ARE RUN. * * THE FOLLOWING INSTRUCTIONS ARE TESTED FOR INTERRUPABILITY: * * CBT * CMW * MBT * MVW * SFB * * * THE FOLLOWING INSTRUCTIONS ARE TESTED FOR MEMORY PROTECT * (IF MEMORY PROTECT IS AVAILABLE): * * CBS * MBT * MVW * SBS * SBT HED 2100 DIAGNOSTIC A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE CH EQU 10B I-O CHANNEL SELECT CODE * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 101112 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF .CONF CONFIGURATION SECTION MSGC DEF .MSGC MESSAGE WITH NO HALT MSGH DEF .MSGH MESSAGE WITH HALT ERMS DEF .ERMS ERROR MESSAGE SWRT DEF .SWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF .EXRT RETURN TO CONTROL PROGRAM NOP RESERVED SKP * STDA OCT 1777 STDB OCT 0 * TSTP DEF *+1 TABLE OF TEST NUMBERS DEF TST00 LOAD9Q BYTE TEST DEF TST01 STORE BYTE TEST DEF TST02 COMPARE BYTE TEST DEF TST03 SCAN BYTE TEST DEF TST04 MOVE BYTE TEST DEF TST05 COMPARE WORDS TEST DEF TST06 MOVE WORDS TEST DEF TST07 TEST-BITS DEF TST08 SET-BITS DEF TST09 CLEAR-BITS .M1 DEC -1 * IOID DEF *+1 TABLE OF I-O CHANNEL CONFIGURATION DEF SC1 DEF SC2 DEF SC3 DEF SC4 DEF SC5 DEF SC6 IOM OCT 177700 * IOSC NOP * INSTX DEF *+1 DEF CBTA+2 DEF II2+2 DEF MBTA+2 DEF MBTB+2 DEF II4+2 DEF CMWA+2 DEF II5+2 DEF MVWA+2 DEF MVWB+2 DEF II6+2 DEC -1 HED DIAGNOSTIC CONSTANTS & STORAGE LOCATIONS SAVA NOP SAVB NOP EOLC NOP TSTA NOP SINA NOP SINB NOP UINA NOP UINB NOP BTMP NOP M40 DEC -40 DEC -10,-9,-8,-7,-6,-5,-4,-3,-2,-1 . OCT 0 DEC 1,2,3,4,5,6,7,8,9,10 .40 DEC 40 .60 OCT 60 .77 OCT 77 .177 OCT 177 .M2 DEC -2 D100 DEC -100 BT5 OCT 40 SW15 OCT 100000 SW14 OCT 40000 SW13 OCT 20000 SW12 OCT 10000 S812 OCT 010400 SW9 OCT 1000 MBT9 OCT 176777 .100 OCT 100 .200 OCT 200 .300 OCT 300 B7700 OCT 7700 M70K OCT 070000 H2 OCT 102000 H6 OCT 106000 H3 OCT 103000 H7 OCT 107000 TSH OCT 106077 * * CAUTION IN USING THESE CONTANTS * DO NOT CHANGE THERE ORDER AND * THE VALUE MAY BE MODIFIED BY * THE PROGRAM.. * CFTT DEC -1 TSTF DEF *+1 ASC 3,TEST .TSTN ASC 2,XX// PSC ASC 6,PASS XXXXXX/ A.E OCT 105 PCB DEF *+1 STORE DECIMAL TEST OCT 0 NUMBER IN OCT 0 STRING PCBX ASC 1,XX HDMX DEF HDM1+3 * * SKP AREG BSS 1 BREG BSS 1 EREG BSS 1 OREG BSS 1 PATTN OCT 125252 SKIP BSS 1 TN2 BSS 1 TEST CASE NUM TP BSS 1 TABLE POINTER WCP BSS 1 WORD COUNT PARAM WRD1 BSS 1 WORD O$PRAND 1 WRD2 BSS 1 WORD OPRAND 2 INTFL BSS 1 INTP FLAG * * INTERRUPT RETURNS * JSBX JSB *+1,I DEF RTXZ JSB2 JSB *+1,I DEF RT2 JSB3 JSB *+1,I DEF RT3 JSB4 JSB *+1,I DEF RT4 JSB5 JSB *+1,I DEF RT5 JSB6 JSB *+1,I DEF RT6 CISK0 DEF CPSK0 CISK1 DEF CPSK1 CISK2 DEF CPSK2 PTR2 DEF II2 PTR3 DEF II3 PTR4 DEF II4 PTR5 DEF II5 PTR6 DEF II6 * * DEF STATEMENTS * A.CBT DEF CBTTB A.CMW DEF CMWTB A.DS DEF DS A.LB DEF LB A.LBT DEF LBTTB A.LBX DEF LBX A.MBT DEF MBTTB A.MVW DEF MVWTB A.OCT DEF OCT A.SBT DEF SBTTB A.SFB DEF SFBTB A.TBS DEF TBSTB A.WD DEF WD A.WD1 DEF WD1 A.SBS DEF SBSTB A.CBS DEF CBSTB WDX DEF WD+35 * * DATA STRING * DS BSS 40 * * MEMORY PROTECT * FENCE DEF * MPPAR EQU 5 CBSMP DEF CBS3 MBTMP DEF MBT3A MVWMP DEF MVW3A SBSMP DEF SBS3 SBTMP DEF SBT3 MPCKX BSS 1 PMMTN JSB *+1,I DEF MPCHK * HED SUBROUTINES ************************************************************************ * * SUBROUTINES FOR SETTING UP OPERANDS BEFORE EXECUTING * THE INSTRUCTION * ************************************************************************ * * EXAMINE NEXT TEST PARAMETER * * RETURN CONDITIONS: * * IF TEST PARAM > -1 THEN NO SKIP * IF TEST PARAM =-1 THEN SKIP 1 * IF TEST PARAM = -2 THEN SKIP 2 * ETC. * NXTP NOP CLA CLEAR STA INTFL INPT FLAG ISZ TN2 INCR TEST-CASE NUMBER LDA TP,I NEXT TEST PARAM FROM TEST TABLE SSA IF A<0 THEN JMP NXTP1 GOTO NXTP1 CLA ELSE A:=0 NXTP2 ADA NXTP ADD A TO RETURN ADDR JMP A,I JUMP TO LOCATION POINTED TO BY A NXTP1 ISZ TP INCR TEST TABLE POINTER BY 1 CMA,INA MAKE TEST PARAM POSITIVE JMP NXTP2 ADD TO A FOR SKIP RETURN * * RECORD SKIP CONDITION FOR COMPARE INSTRUCTIONS AND * SAVE A,B,E,O REGISTERS * CPSK0 NOP  CLF INTP CLEAR INTP ISZ CPSK0 INCR RETURN ISZ CPSK0 ADDR P+3 STA AREG SAVE A-REG CLA A:=0 JSB CPSK RECORD SKIP CONDITION JMP CPSK0,I RETURN P+3 * CPSK NOP STA SKIP RECORD SKIP CONDITION STB BREG SAVE B-REG JSB SEO SAVE E,O-REG JMP CPSK,I RETURN * CPSK1 NOP CLF INTP CLEAR INTP ISZ CPSK1 INCR RETURN ADDR FOR P+2 STA AREG SAVE A-REG LDA .+1 A:=SKIP CONDITION JSB CPSK RECORD SKIP CONDITION,SAVE B,E,O-REG JMP CPSK1,I RETURN P+2 CPSK2 NOP CLF INTP CLEAR INTP STA AREG SAVE A-REG LDA .+2 A:=2 JSB CPSK RECORD SKIP CONDITION,SAVE B,E,O-REG JMP CPSK2,I RETURN P+1 * * SAVE A,B,E,O REGISTERS * SABEO NOP STA AREG SAVE A-REG STB BREG SAVE B-REG JSB SEO SAVE E,O-REG JMP SABEO,I RETURN * * SAVE E AND O REGISTERS * SEO NOP CLA CLEAR A-REG SEZ IS E-REG SET ? LDA .+1 YES - SET EREG TO 1 STA EREG NO - SET EREG TO 0 LDA .+1 A:=1 SOS IS O-REG SET ? CLA YES - SET OREG TO 1 STA OREG NO - SET OREG TO 0 JMP SEO,I RETURN * * GET DATA FROM TEST TABLE * TPX NOP NOP DEBUG LDA TP,I GET DATA FORM TEST TABLE ISZ TP INCR TEST TABLE JMP TPX,I RETURN * * CHECK SKIP CONDITION * CKSK NOP JSB TPX NEXT ENTRY IN TEST TABLE XOR SKIP COMPARE SKIP SZA,RSS CONDITION RESULT JMP CKSK,I OK - RETURN JSB LTN PRINT TEST-CASE NUMBER E003 JSB ERMS,I REPORT ERROR DEF ME03,I DEF ME00 JMP CKSK,I RETURN * SAVE1 BSS 1 SAVE2 BSS 1 * * CHECK DATA STRING * CKDS NOP NOP DEBUG JSB TPX GET DATA FROM TEST TAB8LE STA SAVE1 SAVE DATA CMA,INA TWO'S COMP STA WCP SAVE NEGATIVE VALUE STA SAVE2 LDA WRD1 BYTE ADDR OF SOURCE LDB A.DS ADDR OF DESTINATION STRING STA AREG SAVE ADDR STB BREG CKDS1 LDA AREG,I GET DATA FROM SOURCE STRING LDB BREG,I GET DATA FROM DISTINATION STRING NOP DEBUG CPA B JMP CKDS4 OK JSB LTN PRINT TEST-CASE NUMBER E010 JSB ERMS,I DEF ME010,I DEF ME00 CKDS4 ISZ AREG INCR ADDR POINTER ISZ BREG IN A & B REG ISZ WCP LAST LOCATION IN STRING ? JMP CKDS1 NO LDA .40 NUMBER OF LOCATION IN STRING ADA SAVE2 SUBTRACT NUMBER USED CMA,INA TWO'S COMP STA WCP SAVE NEGATIVE VALUE LDA PATTX GET PATTERN STORED IN STRING LDB SAVE1 NUMBER OF WORDS TRANSFERED INTO STRING ADB A.DS ADDR OF STRING STB SAVE1 SAVE ADDR OF UNUSED STRING CKDS2 LDB SAVE1,I GET DATA IN UNUSED STRING NOP DEBUG CPA B IS STRING ALTERED BY TEST INSTR JMP CKDS3 OK JSB LTN PRINT TEST-CASE NUMBER E004 JSB ERMS,I REPORT ERR DEF ME004,I DEF ME00 CKDS3 ISZ SAVE1 INCR STRING ADDR ISZ WCP LAST ADDR ? JMP CKDS2 NO JMP CKDS,I RETURN * * SET UP STRING ADDR FOR A & B-REG ENTRY * DSABR NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.WD ADDR OF DATA TABLE LDA A,I GET DATA FROM TABLE STA WRD1 SAVE DATA FOR WORD 1 OPERAND NOP JSB TPX NEXT ENTRY IN TEST TABLE ADA A.WD ADDR OF DATA TABLE LDA A,I GET DATA FROM TABLE STA WRD2 SAVE DATA FOR WORD 2 OPERAND NOP DEBUG JMP DSABR,I RETURN * * GET WORD COUNT * WCX NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE STA WCP SAVE VALUE AS A WORD COUNT JMP WCX,I RETURN * * LOAD DATA STRING WITH PATTERN * ENTER WITH PATTERN IN A-REG * STDS NOP STA PATTX SAVE PATTERN LDB M40 -40 STB SAVE2 SAVE VALUE LDB A.DS ADDR OF DATA STRING STDS1 STA B,I STORE PATTERN IN DATA STRING INB INCR ADDR IN BREG ISZ SAVE2 LAST LOCATION IN STRING ? JMP STDS1 NO JMP STDS,I RETURN * PATTX BSS 1 * * LOAD BYTE ADDR * LBA NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.LB ADDR OF DATA TABLE STA WRD1 STORE ADDR JMP LBA,I RETURN * LBB NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.LBX ADDR OF DATA TABLE STA WRD1 STORE ADDR JMP LBB,I RETURN * PATX NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.LBX ADDR OF DATA TABLE LDA A,I GET PATTERN JSB STDS STORE PATTERN JMP PATX,I RETURN * SBA NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.OCT ADDR OF DATA TABLE STA WRD2 STORE ADDR JMP SBA,I RETURN * CKLB NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.OCT ADDR OF DATA TABLE LDB A,I GET DATA IN TABLE LDA AREG GET ACTUAL DATA NOP DEBUG CPA B COMPARE DATA JMP CKLB1 OK JSB LTN PRINT TEST-CASE NUMBER E005 JSB ERMS,I REPORT ERR DEF ME005,I DEF ME00 CKLB1 LDA WRD1,I BYTE ADDR:= INA BYTE ADDR +1 LDB BREG GET ACTUAL BYTE ADDR NOP DEBUG CPA B COMPARE BYTE ADDR JMP CKLB,I OK - RETURN JSB LTN PRINT TEST-CASE NUMBER E006 JSB ERMS,I REPORT ERR  DEF ME006,I DEF ME00 JMP CKLB,I RETURN * CKSB NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.LBX ADDR OF DATA TABLE LDA A,I GET DATA FROM TABLE LDB DS ADDR OF DATA STRING NOP DEBUG CPA B COMPARE DATA JMP CKSB,I RETURN JSB LTN PRINT TEST-CASE NUMBER E007 JSB ERMS,I REPORT ERR DEF ME007,I DEF ME00 JMP CKSB,I RETURN * CKSF NOP NOP DEBUG JSB TPX NEXT ENTRY IN TEST TABLE ADA A.WD ADDR OF DATA TABLE LDA A,I GET DATA FROM TABLE LDB BREG RESTORE B-REG CONDITIONS AFTER TEST INSTR NOP DEBUG CPA B COMPARE DATA JMP CKSF,I RETURN JSB LTN PRINT TEST-CASE NUMBER E011 JSB ERMS,I REPORT ERR DEF ME011,I DEF ME00 JMP CKSF,I RETURN * MOVE NOP LDA MOVE,I ADDR OF 1'ST WORD LDB ME.X ADDR OF STRING LDA A,I GET WORD STA B,I STORE WORD LDA MOVE,I GET ADDR OF INA 2'ND WORD LDA A,I GET WORD INB NEXT ADDR IN STRING STA B,I STORE WORD ISZ MOVE INCR RETURN ADDR JMP MOVE,I RETURN P+2 * ME.X DEF ME. * * LOAD TEST NUMBERS INTO A REGISTER * LTN NOP CLF INTP TURN OFF I-O SYST LDA TN2 CONVERT CLE TEST LDB LTN1 NUMBER JSB O2AS,I TO LDA TN2 ASCII AND OUTPUT ALF A:=TEST-CASE NUMBER ALS,ALS SHIFTED LEFT 6 BITS AND IOR TSTN MERGE IN TEST NUMB JMP LTN,I RETURN * LTN1 DEF ME00+9 ASCII MESSAGE * * TURN ON MEMORY PROTECT LOGIC * * ENTER WITH (A)=EXIT ADDRESS AND * (B)=FENCE ADDRESS * MEMTN NOP STA MPCKX STORE EXIT ADDRESS LDA PMMTN GEV<:6T INTERRUPT ADDRESS STA MPPAR STORE INTP ADDR LDB FENCE MPT FENCE OTB MPPAR LOAD FENCE REGISTER STF INTP TURN OFF INTERRUPT SYS STC MPPAR TURN ON MEM. PROTECT LOGIC JMP MEMTN,I EXIT * * MEMORY PROTECT VIOLATION ROUTINE * MPCHK NOP CLF INTP TURN OFF INTERRUPT SYS LIA MPPAR GET VIOLATION REGISTER SSA CHECK FOR PARITY ERROR JMP MPCK1 PARITY ERROR! CLF MPPAR TURN OFF PARITY LOGIC LDA TSH RESTORE STA MPPAR TRAP CELL HALT STF MPPAR TURN ON PARITY LOGIC JMP MPCKX,I EXIT D<  12943-18002 1728 S 0122 EIG (INDEX) DG              H0101 * MPCK1 EQU * OCT 107005 HALT ON PARITY ERROR JMP *-1 * * CHECK IF MEMORY PROTECT IS PRESENT * MEMPR NOP LDA CPTO CHECK COMPUTER AND BT5 TYPE & OPTIONS SZA FOR ISZ MEMPR MEM PROTECT JMP MEMPR,I * * TURN OFF MEMORY PROTECT LOGIC * MTNOF NOP CLC MPPAR TURN OFF MEM PROTECT LDA TSH RESTORE STA MPPAR TRAP CELL HALT CLF INTP CLEAR INTERRUPT SYS JSB LTN PRINT TEST-CASE NUMBER E012 JSB ERMS,I REPORT ERROR DEF ME012,I DEF ME00 JMP MTNOF,I EXIT * IIO NOP STB IOSC,I STORE RTN ADDR IN TRAP CELL JSB TOINT TURN ON I-O JMP IIO,I EXIT * TOINT NOP SC1 STC CH SET CONTROL AND SC2 STF CH FLAG ON I-O DEVICE JMP TOINT,I EXIT * * CHECK IF INTP OCCURRED * CKINT NOP SC5 CLF CH TURN OFF FLAG AND SC6 CLC CH CONTROL ON I-O DEVICE CLF INTP TURN OFF INTP SYS LDA INTFL TEST IF INTP SZA OCCURRED JMP CKINT,I EXIT JSB LTN OK - EXIT E013 JSB ERMS,I REPORT ERR DEF ME013,I DEF ME00 JMP CKINT,I EXIT * * * * * THE FOLLOWING INSTRUCTIONS CBT, CMW, MBT, SFB ARE TESTED * FOR INTERRUPTABILITY. THE DIAGONSTIC PROGRAMME HOLDS A * PENDING INTERRUPT DURNING THE EXECUTION OF INSTRUCTION * UNDER TEST. DURNING THE EXECUTION OF THE INSTRUCTION * THE U-CODE WILL ALLOW FOR THE INTERRUPT TO BE HANDLED. * THE FIRST PENDING INTERRUPT IS HANDLED BY ROUTINE RTX. * ROUTINE RTX ONLY HANDLES THE FIRST PENDING INTERRUPT * AND CHECKS THE ADDRESS OF THE INSTRUCTION ALLOWING THE * INTERRUPT TO BE PROCESSED. DEPENDING UPON THE INSTRUCTION * AND THE DATA TEST PARAMETER USED THE U-CODE MAY MODIFY * THE P-REGISTER OR TARGET ADDRESS MAKING IT IMPRACTICAL * TO VERIFY THE ADDRESS WHEN THE SUBSEQUENT INTERRUPT OCCURS. * THEREFORE, ROUTINE RTXZ WILL HANDLثE ALL INTERRUPTS AFTER * ROUTINE RTX HAS HANDLED THE FIRST PENDING INTERRUPT. * * CHECK ADDR OF INTP * RTXX NOP RTX STA RTXX MODIFY RTN ADDR NOP DEBUG JSB TOIO TURN OFF I-O CPA B CHECK INTP LOCATION JMP *+5 OK JSB LTN REPORT ERR E014 JSB ERMS,I DEF ME014,I DEF ME00 LDB JSBX LOAD INTP TRAP CELL STB IOSC,I WITH ADDR OF RTXZ JSB TOINT TURN ON I-O DEVICE LDA AREG RESTORE LDB BREG A & B REG STF INTP TURN ON INTP SYS JMP RTXX,I EXIT * RTXZ NOP CLF INTP TURN OFF INTP SYST JSB SABEO SAVE REGS JSB TOIO TURN OFF I-O DEVICE NOP DEBUG LDA AREG RESTORE LDB BREG A & B REG NOP DEBUG JSB TOINT TURN ON INTP DEVICE STF INTP TURN OF INTP SYST JMP RTXZ,I RETURN TO MACRO * TOIO NOP CLF INTP TURN OFF INTP SYST SC3 CLF CH TURN OFF SC4 CLC CH I-O DEVICE JMP TOIO,I EXIT * XINST NOP CLA LDB INSTX STB SAVB XINT1 LDB SAVB,I CPB .M1 JMP XINST,I EXIT STA SAVB,I RESTORE NOP ISZ SAVB NEXT LOCATION JMP XINT1 * HED DIAGNOSTIC PROGRAM CONTROL ORG 2000B STEX CLC INTP,C TURN I/O SYSTEM OFF CLE LDA DSN LDB HDMX JSB O2AS,I JSB MSGC,I OUT PUT IT DEF HDMS LDA CPTO GET COMPUTER TYPE AND OPTIONS AND BT5 MASK OFF MPT BIT SZA IS MPT CONFIG. ? JMP *+3 YES, SKIP MESSAGE JSB MSGC,I PRINT MESSAGE DEF MH001 MPT NOT PRESENT CLA CLEAR PASS STA EOLC COUNT EXCZ LDB SW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP USR IT'S USERS CHOICE NUSR LDA STDA GET STANDARD TEST RUN LDB STDB * n JMP EXC * USR LIA SW AND MBT9 OTA SW LDA SINA RETRIEVE PREVIOUS RUN LDB SINB HLT 75B WAIT FOR USER INPUT EXC STA UINA SAVE STB UINB USER STA SINA INPUT STB SINB PROGRAM CCA SET TEST NUMBER STA TSTN =-1 STA CFTT CLA STA TSTA CLEAR TEST RUN FLAG SPC 2 EXCL LDA UINA RESTORE A REG. LDB UINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA UINA SAVE POSITIONS STB UINB ISZ TSTN MOVE TEST UP ONE NOP XCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA .M1 IS IT END OF LIST JMP EOL YES LDB UINB SSB,RSS SHOULD IT BE RUN? JMP EXCL NO STA TSTA YES - SAVE TEST ADDRESS JSB XINST RESTORE NOP IN 3'RD WORD OF MACRO JSB ITCH INITIALIZE TRAP CELL HALTS CLA CLEAR STA TN2 TEST-CASE NUM JSB TSTA,I GO DO TEST .EXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB SW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP USR YES LDB SW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP XCL1 YES - LOOP JMP EXCL CONTINUE * EOL LDA TSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP NUSR NO SO PICK UP STANDARD RUN LDA EOLC UP DATE PASS COUNT INA STA EOLC CCE LDB PSCA GET PASS COUNT ADB .+2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE PSCA DEF PSC LDB SW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA EOLC HLT 77B 1~NO WAIT AND DISPLAY PASS COUNT LDA SINA RESTORE ORIGINAL LDB SINB PROGRAM JMP EXCZ DO IT ALL AGAIN SKP * MESSAGE OUTPUT WITH OUT HALT * .MSGC NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP .MSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * .MSGH NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA HLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA SAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP .MSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * .ERMS NOP ENTRY JSB MSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB SW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA SAVA RESTORE A & B LDB SAVB HLT NOP WAIT FOR OPERATOR JMP .ERMS,I RETURN TO CALLER SKP * OUTPUT MESSAGE * MSG NOP STA SAVA SAVE A AND B REGISTERS STB SAVB LDB MSG,I GET SWITCH REGISTER BIT LDA MSG ADA .M2 DECREMENT RETURN ADDRESS STA MSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP MSG0 YES LDA MSG,I CHECK IF ERROR LDA A,I ELA,CLE,ERA LDA A,I IF SO ALF,ALF AND .177 CPA A.E JSB CFTN CHECK TO OUTPUT TEST NUMBER LDA MSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS ELB,CLE,ERB CLA,CLE JSB FMTR,I MSG0 LDA MSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING ELB,CLE,ERB CCA,CCE JSB AS2N,I STA N2AO SAVE RESULT AND .300 DECODE LDB H2 HALT CODE CPA .100 LDB H6 CPA .200 LDB H3 CPA .300 LDB H7 LDPA N2AO GET HALT NUMBER AND .77 IOR B STA HLT SAVE IT MSG1 LDA MSG,I LDA A,I SSA,RSS JMP MSG2 ISZ MSG,I LDB MSG ADB .+2 LDB B,I JSB SWRT,I JMP MSG1 LDA MSG,I LDB A,I ELB,CLE,ERB CLA,CLE JSB FMTR,I JMP MSG1 MSG2 ISZ MSG,I ADJUST RETURN POINTERS ISZ MSG ISZ MSG ISZ MSG LDA SAVA RESTORE A AND B REGISTERS LDB SAVB JMP MSG,I SKP CFTN NOP LDA TSTN GET TEST NUMBER CPA CFTT IS IT THE SAME ONE? JMP CFTN,I YES SKIP OUTPUT STA CFTT NO - THEN UPDATE IT CLE LDB PCB JSB I2AS,I LDB PCBX STB .TSTN CLA JSB SLOP,I CLA,CLE LDB TSTF JSB FMTR,I JMP CFTN,I SPC 2 * N2AO NOP IOAD NOP STA IOAD SAVE NUMBER AND .+7 CONVERT FIRST IOR .60 NUMBER STA B SAVE IT LDA IOAD GET RAR,RAR SECOND RAR NUMBER AND .+7 CONVERT IOR .60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP N2AO,I AND RETURN * * SWITCH REGISTER CHECK * .SWRT NOP STA N2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ .SWRT NO LDA N2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP .SWRT,I RETURN TO CALLER * * INITIALIZE TRAP CELL HALTS * ITCH NOP LDA TSH GET STARTING TRAP CELL HALT LDB .+2 GET FIRST TRAP CELL LOCATION TSHL STA B,I PUT IT IN PLACE CPB .77 AM I FINISHED JMP ITCH,I YES INB NEXT ADDRESS JMP TSHL * * * PUT JSB INSTRUCTION IN TRAP CELL * TCJI NOP  LDB JSBI GET INSTRUCTION STB IOSC,I PUT IT IN TRAP CELL LDA TCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ TCJI ADJUST RETURN JMP TCJI,I RETURN TO CALLER * JSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ISC NOP STA IOSC SAVE SELECT CODE IOL LDA B,I GET ADDRESS OF LOCATION CPA IOM IS IT THE TERMINATOR JMP ISC,I YES RETURN TO CALLER STA SAVA SAVE ADDR LDA A,I GET INSTR AND IOM MASK OFF OLD SELECT CODE IOR IOSC ADD IN NEW SELECT CODE STA SAVA,I RESTORE IT INB MOVE TO NEXT ADDRESS JMP IOL DO IT * * * CONFIGURATION SECTION * .CONF JSB CONF CONFIG I-O CHANNEL JMP STEX RETURN TO DIAG CONTROL CONF NOP CLC INTP,C TURN I/O SYSTEM OFF CON1 LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND .77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB .+7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP CON1 TRY AGAIN LDB IOID INITIALIZE TEST I/O JSB ISC INSTRUCTIONS CLA CLEAR OTA SW SWITCH REGISTER HLT 74B ALLOW OPERATOR TO CHANGE SR OPTIONS JMP CONF,I GO TO EXEC CONTROL SECTION HED TEST THE LOAD BYTE INSTRUCTION LBT TST00 EQU * LBTT NOP JSB MOVE PUT "LBT" DEF MLBT IN MESSAGE STRING LDA A.LBT ADDR OF LBT TEST TABLE STA TP STORE ADDR IN TABLE POINTER LBT1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP LBT2 EXECUTE TEST JMP LBTT,I EXIT TEST LBT2 JSB LBA SET UP ADDR CCA PRESET A-REG NOP DEBUG LDB WRD1,I LOAD B-REG WITH ADDR NOP y\DEBUG LBT EXECUTE LOAD BYTE INSTR NOP DEBUG JSB SABEO SAVE A,B,E,O-REGS JSB CKLB CHECK RESULT JMP LBT1 NEXT TEST CASE * * * LBT TEST TABLE * LBTTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: BYTE ADDR OF VALUE TO BE LOADED * SECOND: BYTE ADDR OF RESULT STORED * DEC 0,0 DEC 1,1 DEC 2,2 DEC 3,3 DEC 4,4 DEC 5,5 DEC 6,6 DEC 7,7 DEC 8,8 * * TERMINATOR * DEC -1 HED TEST THE STORE BYTE INSTRUCTION SBT TST01 EQU * SBTT NOP JSB MOVE PUT "SBT" DEF MSBT IN MESSAGE STRING LDA A.SBT ADDR OF SBT TEST TABLE STA TP STORE ADDR IN TABLE POINTER CLA CLEAR JSB STDS DATA STRING SBT1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP SBT2 EXECUTE TEST JMP SBTT,I EXIT TEST JMP SBT4 EXECUTE MPT TEST SBT2 JSB LBA GET BYTE ADDR JSB SBA GET DATA ADDR LDA WRD2,I GET DATA LDB WRD1,I GET BYTE ADDR FOR DESTINATION NOP DEBUG SBT EXECUTE STORE BYTE INSTR NOP DEBUG SBT3 JSB SABEO SAVE A,B,E,O-REGS JSB CKSB CHECK RESULT JMP SBT1 NEXT TEST CASE * * TEST MEMORY PROTECT * SBT4 JSB MEMPR CHECK IF MPT IS PRESENT JMP SBT4B MPT NOT AVAILABLE CLA CLEAR JSB STDS DATA STRING JSB LBA GET BYTE ADDR JSB SBA GET DATA ADDR LDA SBTMP INTP ADDR JSB MEMTN TURN ON MPT LOGEC LDA WRD2,I GET DATA LDB WRD1,I GET BYTE ADDR FOR DESTINATION NOP DEBUG SBT EXECUTE STORE BYTE INSTR NOP DEBUG JSB MTNOF MPT FAILED, REPORT ERR JMP SBT4N NEXT TEST-CASE * SBT4B ISZ TP ADJUST TABLE POINTER ISZ TP M FOR SBT4N ISZ TP NEXT PARAM JMP SBT1 * * SBT TEST TABLE * SBTTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: BYTE ADDR OF VALUE TO BE STORED * SECOND: BYTE ADDR WHERE TO BE STORED * THIRD: CHECK RESULT * DEC 10,0,5 DEC 11,0,6 DEC 10,4,8 DEC 11,4,7 DEC 10,0,9 DEC 11,8,5 DEC 10,8,4 * * MEMORY PROTECT * DEC -2,10,0,4 * * TERMINATOR * DEC -1 HED TEST THE COMPARE BYTE INSTRUCTION CBT TST02 EQU * CBTT NOP JSB MOVE PUT "CBT" DEF MCBT IN MESSAGE STRING LDA A.CBT ADDR OF CBT TEST TABLE STA TP STORE ADDR IN TABLE POINTER CBT1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP CBT2 EXECUTE TEST JMP CBTT,I EXIT TEST JMP CBT4 EXECUTE INTERRUPT TEST CBT2 JSB DSABR SET UP ADDR FOR SOURCE & DESTINATION JSB WCX GET WORD COUNT LDA WRD1 LOAD A & B-REG LDB WRD2 WITH ADDR NOP DEBUG CBTA CBT WCP EXECUTE COMPARE BYTE INSTR JSB CPSK0 RECORD JSB CPSK1 SKIP JSB CPSK2 RESULT CBT3 JSB CKSK CHECK SKIP RESULT JMP CBT1 NEXT TEST CAST * * TEST CBT INSTR WITH INTERRUPT * CBT4 CLF INTP TURN OFF INTP LDB JSB2 GET INTP ADDR JSB IIO TURN ON I-O JSB DSABR SET UP ADDR FOR SOURCE & DESTINATION JSB WCX GET WORD COUNT LDA WRD1 LOAD A & B-REGS LDB WRD2 WITH ADDR NOP DEBUG STF INTP TURN ON INTP SYST II2 CBT WCP EXECUTE CBT INSTR JSB CISK0,I RECORD JSB CISK1,I SKIP JSB CISK2,I RESULT CLF INTP TURN OFF INTP SYST JSB TOIO TURN OFF I-O JMP CBT3 CHECK RESULT * RT2 NOP CLF INTP TURN OFF INTP SYST JSB SABEO SAVE REGS NOP DEBUG SLDA RT2 ADDR OF INTERRUPTING INSTR LDB PTR2 EXP ADDR NOP DEBUG JMP RTX INTP ROUTINE * * * CBT TEST TABLE * CBTTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: BYTE ADDR OF STRING 1 * SECOND: BYTE ADDR OF STRING 2 * THIRD: WORD COUNT VALUE * FOURTH: SKIP RESULT * DEC 6,7,8,0 DEC 8,9,8,1 DEC 8,10,8,2 * * INTERRUPT PARAMETER * DEC -2,6,7,8,0 DEC -2,8,9,8,1 DEC -2,8,10,8,2 * * TERMINATOR * DEC -1 HED TEST THE SCAN BYTE INSTRUCTION SFB TST03 EQU * SFBT NOP JSB MOVE PUT "SFB" DEF MSFB IN MESSAGE STRING LDA A.SFB ADDR OF SFB TEST TABLE STA TP STORE ADDR IN TABLE POINTER SFB1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP SFB2 EXECUTE TEST JMP SFBT,I EXIT TEST JMP SFB4 EXECUTE INTP TEST SFB2 JSB DSABR SET UP ADDR FOR SOURCE & DESTINATION LDA WRD1,I TEST & TERMINATION WORD LDB WRD2 ADDR OF STRING NOP DEBUG SFB EXECUTE SCAN BYTE INSTR JSB CPSK0 RECORD JSB CPSK1 SKIP JSB CPSK2 RESULT SFB3 NOP DEBUG JSB CKSK CHECK SKIP RESULT JSB CKSF CHECK FOR PROPER TERMENATION NOP DEBUG JMP SFB1 NEXT TEST CASE * * TEST SFB WITH INTERRUPT * SFB4 CLF INTP TURN OFF INTP SYST LDB JSB3 GET INTP ADDR JSB IIO TURN ON I-O DEVICE JSB DSABR SET UP ADDR LDA WRD1,I TEST AND DESTINATION WORD LDB WRD2 STRING ADDR NOP DEBUG STF INTP TURN OF INTP SYST II3 SFB EXECUTE SFB INSTR JSB CISK0,I RECORD JSB CISK1,I SKIP JSB CISK2,I RESULT JSB TOIO TURN OFF I-O DEVICE JMP SFB3 NEXT TEST-CASE * RT3 NOP CLF INTP TURN OFF Iv<:6NTP SYST JSB SABEO SAVE REGS LDA RT3 ADDR OF INTP INSTR LDB PTR3 EXP ADDR NOP DEBUG JMP RTX JUMP TO INTP ROUTINE * * * SFB TEST TABLE * SFBTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: ADDR OF TERMINATION BYTE * SECOND: ADDR OF TEST BYTE * THIRD: SKIP RESULT * FOURTH: DATA RESULT * DEC 13,11,0,15 DEC 14,12,1,16 * * INTERRUPT PARAMETER * DEC -2,13,11,0,15 DEC -2,14,12,1,16 * * TERMINATOR * DEC -1 Ņ<  12943-18003 1728 S 0122 EIG (INDEX) DG              H0101  HED TEST THE MOVE BYTE INSTRUCTION MBT TST04 EQU * MBTT NOP JSB MOVE PUT "MBT" DEF MMBT IN MESSAGE STRING LDA A.MBT ADDR OF MBT TEST TABLE STA TP STORE ADDR IN TABLE POINTER MBT1 JSB NXTP NEXT TEST PARAM JMP MBT2 EXECUTE TEST JMP MBTT,I EXIT TEST JMP MBT4 EXECUTE MPT TEST JMP MBT5 EXECUTE INTP TEST MBT2 JSB MBTX SET UP PARAM LDA WRD1 ADDR OF SOURCE STRING LDB WRD2 ADDR OF DESTINATION STRING NOP DEBUG MBTA MBT WCP EXECUTE MOVE BYTE INSTR NOP DEBUG MBT3B JSB TPX GET COMPARE ADA A.WD STRING LDA A,I ADDR STA WRD1 STORE ADDR MBT3 JSB CKDS CHECK RESULT IN DATA STRING JMP MBT1 NEXT TEST CASE * * MEMORY PROTECT TEST * MBT4 JSB MEMPR CHECK IF MPT IS PRESENT JMP MBT4B MPT NOT PRESENT JSB MBTX SET UP PARAM LDA MBTMP INTP ADDR JSB MEMTN TURN ON MPT LOGIC LDA WRD1 ADDR OF SOURCE STRING LDB WRD2 ADDR OF DESTINATION STRING NOP DEBUG MBTB MBT WCP EXECUTE MBT INSTR NOP DEBUG JSB MTNOF TURN OFF MPT & REPORT ERR JMP MBT4N NEXT TEST-CASE * MBTX NOP LDA PATTN STORE PATTERN JSB STDS IN DESTINATION STRING JSB DSABR SET UP ADDR FOR SOURCE & DESTINATION JSB WCX GET WORD COUNT JMP MBTX,I EXIT * MBT3A LDA WDX,I STA WRD1 NOP DEBUG JMP MBT3 * MBT4B ISZ TP ADJUST TABLE POINTER ISZ TP FOR ISZ TP MBT4N ISZ TP NEXT TEST PARAM JMP MBT1 * * TEST MBT WITH INTERRUPT * MBT5 CLF INTP TURN OFF INTP SYST LDB JSB4 INTP ADDR JSB IIO TURN ON I-O JSB MBTX SET UP PARAM LDA WRD1 SOURCE STRING LDB WRD2 DESTINATION STRING NOP DEBUG STF INTP TURN ON INTP SYST II4 MBT WCP EXECUTE MBT INSTR CLF INTP TURN OFF INTP SYST JSB TOIO TURN OFF I-O DEVICE NOP DEBUG JMP MBT3B NEXT TEST-CASE * RT4 NOP CLF INTP TURN OFF INTP SYST JSB SABEO SAVE REGS LDA RT4 ADDR OF INTP ADDR LDB PTR4 EXP ADDR NOP DEBUG JMP RTX INTP ROUTINE * * * MBT TEST TABLE * MBTTB EQU * * * MEANING OF TABLE ENTRIES: * * FIRST: BYTE ADDR OF SOURCE STRING * SECOND: BYTE ADDR OF DESTINATION STRING * THIRD: NUMBER OF BYTES * FOUTH: ADDR OF COMPARE STRING * FIFTH: NUMBER OF CPU WORDS USED * DEC 17,18,8,36,4 DEC 22,19,4,37,3 * * MEMORY PROTECT * DEC -2,17,18,8,4 * * INTERRUPT PARAMETER * DEC -3,17,18,8,36,4 * * TERMINTOR * DEC -1 HED TEST THE COMPARE WORD INSTRUCTION CMW * TST05 EQU * CMWT NOP COMPARE WORD TEST JSB MOVE PUT "CMW" DEF MCMW IN MESSAGE STRING LDA A.CMW ADDR OF CMW TEST TABLE STA TP STORE ADDR IN TABLE POINTER CMW1 JSB NXTP NEXT TEST PARMA FROM TEST TABLE JMP CMW2 EXECUTE TEST JMP CMWT,I EXIT TEST JMP CMW4 EXECUTE INTP TEST CMW2 JSB DSABR SET UP STRING ADDR JSB WCX GET WORD COUNT LDA WRD1 A:=WORD 1 ADDR LDB WRD2 B:=WORD 2 ADDR NOP DEBUG CMWA CMW WCP EXECUTE CMW INSTR JSB CPSK0 RECORD JSB CPSK1 SKIP JSB CPSK2 RESULT CMW6 JSB CKSK CHECK SKIP RESULT JMP CMW1 NEXT TEST CASE * * TEST CMW WITH INTP * CMW4 CLF INTP TURN OFF INTP SYST LDB JSB5 INTP ADDR JSB IIO TURN ON I-O DEVICE JSB DSABR SET UP STRING ADDR JSB WCX GET WORD COUNT LDA WRD1 8STRING 1 ADDR LDB WRD2 STRING 2 ADDR NOP DEBUG II5 CMW WCP EXECUTE CMW INSTR JSB CISK0,I RECORD JSB CISK1,I SKIP JSB CISK2,I RESULT CLF INTP TURN OFF INTP SYST JSB TOIO TURN OFF I-O DEVICE JMP CMW6 CHECK RESULT * RT5 NOP CLF INTP TURN OFF INTP SYST JSB SABEO SAVE REGS LDA RT5 ADDR OF INTP INSTR LDB PTR5 EXP ADDR NOP DEBUG JMP RTX INTP ROUTINE * * * * CMW TEST TABLE * CMWTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: ADDR OF STRING 1 IN A-REG. * SECOND: ADDR OF STRING 2 IN B-REG. * THIRD: NUMBER OF WORDS IN STRING TO BE COMPARED. * FOURTH: SKIP RESULT. * * ARRAY 1 ARRAY 2 * CW1 DEC 0,1,4,0 ASCII STRING A1 = A2 DEC 0,2,4,1 ASCII STRING A1 < A2 DEC 0,3,4,2 ASCII STRING A1 > A2 DEC 23,24,1,2 +052777 +000001 A1 > A2 DEC 24,23,1,1 +000001 +052777 A1 < A2 DEC 24,25,1,2 +000001 -177777 A1 < A2 DEC 25,24,1,1 -177777 +000001 A1 < A2 DEC 26,23,1,1 -100000 +052777 A1 < A2 DEC 23,26,1,2 +052777 -100000 A1 > A2 DEC 26,27,1,1 -100000 -125000 A1 < A2 DEC 27,26,1,2 -125000 -100000 A1 > A2 DEC 28,23,1,1 +052525 +052777 A1 < A2 DEC 23,28,1,2 +052777 +052525 A1 > A2 DEC 25,29,1,0 -177777 -177777 A1 = A2 DEC 26,30,1,0 -100000 -100000 A1 = A2 DEC 24,31,1,0 +000001 +000001 A1 = A2 DEC 32,33,1,0 +077777 +077777 A1 = A2 DEC 20,34,1,0 +000000 +000000 A1 = A2 * * INTERRUPT PARAMETER * DEC -2,0,1,4,0 DEC -2,0,2,4,1 DEC -2,0,3,4,2 * * TERMINATOR * DEC -1 HED TEST THE MOVE WORD INSTRUCTION MVW TST06 EQU * MVWT NOP JSB MOVE PUT "MVW" DEF MMVW IN MESSAGE STRING LDA A.MVW ADDR OF MVW TEST TABLE STA TP STORE ADDR IN TABLE POINTER MVW1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP MVW2 EXECUTE TEST JMP MVWT,I EXIT TEST JMP MVW4 EXECUTE MPT TEST JMP MVW5 EXECUTE INTP TEST MVW2 JSB MBTX SET UP PARAM LDA WRD1 ADDR OF SOURCE STRING LDB WRD2 ADDR OF DESTINATION STRING NOP DEBUG MVWA MVW WCP EXECUTE MVW INSTR NOP DEBUG MVW3 JSB CKDS CHECK DATA STRING JMP MVW1 NEXT TEST CASE * * MEMORY PROTECT TEST * MVW4 JSB MEMPR CHECK IF MPT IS PRESENT JMP MVW4B MPT NOT PRESENT JSB MBTX SET UP PARAM LDA MVWMP INTP ADDR JSB MEMTN TURN ON MPT LOGIC LDA WRD1 ADDR OF SOURCE STRING LDB WRD2 ADDR OF DESTINATION STRING NOP DEBUG MVWB MVW WCP EXECUTE MVW INSTR NOP DEBUG JSB MTNOF MPT FAILED, REPORT ERR JMP MVW4N NEXT TEST-CASE * MVW4B ISZ TP ADJUST TABLE POINTER ISZ TP FOR ISZ TP MVW4N ISZ TP NEXT PARAM JMP MVW1 * MVW3A LDA WDX,I STA WRD1 NOP DEBUG JMP MVW3 * * TEST MVW WITH INTP * MVW5 CLF INTP TURN OFF INTP SYST LDB JSB6 INTP ADDR JSB IIO TURN ON I-O DEVICE JSB MBTX SET UP PARAM LDA WRD1 SOURCE ADDR LDB WRD2 DESTINATION ADDR NOP DEBUG STF INTP TURN ON INTP SYST II6 MVW WCP EXECUTE MVW INSTR CLF INTP TURN OFF INTP SYST JSB TOIO TURN OFF I-O DEVICE JMP MVW3 CHECK RESULT * RT6 NOP CLF INTP TURN OFF INTP SYST JSB SABEO SAVE REGS LDA RT6 ADDR OF INTP INSTR LDB PTR6 EXP ADDR NOP DEBUG JMP RTX INTP ROUTINE * * * MVW TEST TABLE * * MVWTB EQU * * * MEANING OF THE TABLE ENTRIES: * * FIRST: ADDR OF SOURCE IN A-REG. * SECOND: ADDR OF DESTINATION IN B-REG. * THIRD: NUMBER OF WORDS TO BE MOVED. * FOURTH: NUMBER OF WORDS TO BE CHECKED * DEC 4,5,4,4 * * MEMORY PROTECT * DEC -2,4,5,4,4 MEMORY PROTECT * * INTERRUPT PARAMETER * DEC -3,4,5,4,4 * * TERMINATOR * DEC -1 HED TEST THE TEST-BIT INSTRUCTION TBS TST07 EQU * TBST NOP JSB MOVE PUT "TBS" DEF MTBS IN MESSAGE STRING LDA A.TBS ADDR OF SBS TEST TABLE STA TP STORE ADDR IN TABLE POINTER TBS1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP TBS2 EXECUTE TEST JMP TBST,I EXIT TEST TBS2 JSB LBB 1ST PARAM IS STA WRD2 STORED IN TO WRD2 JSB LBB 2ND PARAM IS IN WRD1 NOP DEBUG TBS WRD1 WRD2 EXECUTE TBS INSTR JSB CPSK0 RECORD JSB CPSK1 SKIP JSB CPSK2 RESULT NOP DEBUG JSB CKSK CHECK SKIP RESULT JMP TBS1 NEXT TEST CASE * * * TBS TEST TABLE * TBSTB EQU * * * MEANING OF TABLE ENTRIES: * * FIRST: ADDR OF 16 BIT MASK * SECOND: ADDR OF BIT TO BE TESTED * THIRD: SKIP RESULT * DEC 6,6,0 DEC 6,7,1 * * TERMINATOR * DEC -1 HED TEST THE SET-BIT INSTRUCTION SBS TST08 EQU * SBST NOP JSB MOVE PUT "SBS" DEF MSBS IN MESSAGE STRING LDA A.SBS ADDR OF SBS TEST TABLE STA TP STORE ADDR IN TABLE POINTER SBS1 JSB NXTP NEXT TEST PARAM FROM TEST TABLE JMP SBS2 EXECUTE TEST JMP SBST,I EXIT TEST JMP SBS5 EXECUTE MPT TEST JMP SBS4 EXECUTE TEST WITH NON INDIRECT SBS2 JSB PATX LOAD PATTERN JSEB LBB GET MASK FOR B-REG LDA A.DS ADDR OF DESTINATION STA WRD2 NOP DEBUG SBS WRD1,I WRD2,I EXECUTE SBS INSTR NOP DEBUG SBS3 JSB CKSB CHECK RESULT JMP SBS1 NEXT TEST CASE * SBS4 JSB PATX LOAD PATTERN JSB STDS IN DESTINATION STRING JSB LBB GET ADDR OF MASK LDA WRD1,I GET MASK STA WRD1 STORE MASK NOP DEBUG SBS WRD1 DS EXECUTE SBS INSTR NOP DEBUG JMP SBS3 NEXT TEST PARAM SPC 1 * * MEMORY PROTECT TEST * SBS5 JSB MEMPR CHECK IF MTP PRESENT JMP SBS5B MPT NOT PRESENT JSB PATX STORE PATTERN IN DATA STRING JSB LBB GET MASK FOR B-REGDATA STRING LDA A.DS ADDR OF DESTINATION STA WRD2 STORE ADDR LDA SBSMP INTP ADDR JSB MEMTN TURN ON MPT LOGIC NOP DEBUG SBS WRD1,I WRD2,I EXECUTE SBS INSTR NOP DEBUG JSB MTNOF MPT FAILED, REPORT ERR JMP SBS5N NEXT TEST-PARAM * SBS5B ISZ TP ADJUST TABLE POINTER ISZ TP FOR SBS5N ISZ TP NEXT PARAM JMP SBS1 * * * SBS TEST TABLE * * SBSTB EQU * * * MEANING OF TABLE ENTRIES: * * FIRST: PATTERN IN DATA STRING * SECOND: BIT(S) TO SET WITH MASK * THIRD: CHECK RESULT * * INDIRECT ADDRESSES * DEC 4,6,6 DEC 4,7,7 DEC 26,6,26 DEC 26,7,26 DEC 6,7,26 DEC 7,6,26 DEC 26,4,26 DEC 4,26,26 DEC 4,4,4 * * INDIRECT ADDR * DEC -3,4,6,6 DEC -3,4,7,7 DEC -3,26,7,26 * * MEMORY PROTECT * DEC -2,4,6,4 DEC -2,4,7,4 DEC -2,26,7,26 * * TERMINATOR * DEC -1 HED TEST THE CLEAR-BIT INSTRUCTION CBS TST09 EQU * CBST NOP JSB MOVE PUT "CBS" DEF MCBS IN MESSAGE STRING LDA A.CBS # ADDR OF CBS TEST TABLE STA TP STORE ADDR IN TABLE POINTER CBS1 JSB NXTP NEXT TEST PARAM IN TEST TABLE JMP CBS2 EXECUTE TEST WITH INDIRECT ADDR JMP CBST,I EXIT TEST JMP CBS4 EXECUTE TEST WITH NON-INDIRECT ADDR JMP CBS5 EXECUTE MPT TEST CBS2 JSB PATX STORE PATTERN DATA STRING JSB LBB SET UP MASK FOR B-REG LDA A.DS DESTINATION ADDR STA WRD2 NOP DEBUG CBS WRD1,I WRD2,I EXECUTE CBS INSTR NOP DEBUG CBS3 JSB CKSB CHECK RESULT JMP CBS1 NEXT TEST CASE * CBS4 JSB PATX STORE PATTERN JSB STDS IN DESTINATION STRING JSB LBB GET ADDR OF MASK LDA WRD1,I GET MASK STA WRD1 STORE MASK NOP DEBUG CBS WRD1 DS EXECUTE CBS INSTR NOP DEBUG JMP CBS3 NEXT TEST PARAM * * MEMORY PROTECT TEST * CBS5 JSB MEMPR CHECK IF MPT IS PRESENT JMP CBS5B MPT NOT PRESENT JSB PATX STORE PATTERN IN DATA STRING JSB LBB GET MASK FOR B-REG LDA A.DS GET DESTINATION ADDR STA WRD2 LDA CBSMP INTP ADDR JSB MEMTN TURN ON MPT LOGIC NOP DEBUG CBS WRD1,I WRD2,I EXECUTE CBS INSTR NOP DEBUG JSB MTNOF MPT FAILED, REPORT ERR JMP CBS5N * CBS5B ISZ TP ADJUST TABLE ISZ TP POINTER CBS5N ISZ TP NO MPT !! JMP CBS1 NEXT TEST-CASE * * * CBS TEST TABLE * * CBSTB EQU * * * MEANING OF TABLE ENTRIES: * * FIRST: PATTERN IN DATA STRING * SECOND: BIT(S) TO BE CLEARED WITH CBS INSTR. * THIRD: CHECK RESULT * * INDIRECT ADDRESSES * DEC 26,6,7 DEC 26,7,6 DEC 26,26,4 DEC 26,4,26 DEC 4,4,4 DEC 4,26,4 * *INDIRECT ADDR * DEC -2,26,6,7 DEC -2,26,7,6 DEC -2,26,26,4 :DEC -2,26,4,26 DEC -2,4,4,4 DEC -2,4,26,4 * * MEMORY PROTECT * DEC -3,26,6,26 * * TERMINATOR * DEC -1 HED DATA CONSTANTS * WD EQU * DEF STG1 DEF STG2 DEF STG3 DEF STG4 DEF MWR1 DEF DS DBL STG1 DBL STG2 DBR STG1 DBR STG3 DBR STG4 DBR LSTG DBL LSTG DEF OP1 DEF OP2 DBL LSTG+8 DBL LSTG+17 DBL MSTG DBL DS DBR DS DEF LBA4 DEF LBA10 DBR MST1 DEF LBA2 DEF LBA10 DEF LBA26 DEF LBA25 DEF LBA5 DEF LBA7 DEF .M1 DEF SW15 DEF .+1 DEF LBA44 DEF LBA45 DEF OT9 DEF LBA46 DEF MSTG DEF MST2 * WD1 EQU * STG1 ASC 04,12345670 STG2 ASC 04,12345670 STG3 ASC 04,12347670 STG4 ASC 04,12345570 MWR1 ASC 04,Z0Y1XIW3 LSTG ASC 17,ABCDEFGHIJKLMNOPQRSTUVWXYZ12345670 OP1 ASC 01,0Q OP2 ASC 01,0/ MSTG ASC 04,A1B2C3D7 MST1 OCT 052501 PATTN + A ASC 1,BC OCT 042125 D + PATTN MST2 OCT 125101 ASC 1,BC OCT 042252 SPC 3 LB EQU * DBL LBA0 DBR LBA0 DBL LBA1 DBR LBA1 DBL LBA2 DBR LBA2 DBL LBA3 DBR LBA3 DBL LBA4 DBR LBA4 DBL DS DBR DS SPC 3 LBX EQU * LBA0 OCT 125377 LBA1 OCT 177652 LBA2 OCT 052777 LBA3 OCT 177525 LBA4 OCT 0 LBA5 OCT 125000 LBA6 OCT 125252 LBA7 OCT 052525 LBA8 OCT 052652 LBA9 OCT 125125 LBA10 OCT 1 OCT 2 OCT 4 OCT 10 OCT 20 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 OCT 2000 OCT 4000 OCT 10000 OCT 20000 OCT 40000 LBA25 OCT 100000 LBA26 OCT 177777 OCT 177776 OCT 177775 OCT 177773 OCT 177767 OCT 177757 OCT 177737 OCT 177677 OCT 177577 OCT 177377 0640 OCT 176777 OCT 175777 OCT 173777 OCT 167777 OCT 157777 OCT 137777 LBA44 OCT 077777 LBA45 OCT 077777 LBA46 OCT 125252 OCT 125252 OCT 125252 OCT 125252 SPC 3 OCT EQU * OT1 OCT 252 OT2 OCT 377 OT3 OCT 377 OT4 OCT 252 OT5 OCT 125 OT6 OCT 377 OT7 OCT 377 OT8 OCT 125 OT9 OCT 0 * HED DIAGNOSTIC MESSAGES HDMS OCT 6412 ASC 15,EIG (WORD,BYTE,BIT) DIAGNOSTIC HDM1 ASC 07, DSN XXXXXX// ME00 ASC 14, IN TEST-CASE XXXXXX OF ME. ASC 06,XXX INSTR./ MH001 ASC 16,H001 MEMORY PROTECT NOT PRESENT/ ME03 ASC 17,E003 INSTR DOES NOT SKIP PROPERLY/ ME004 ASC 18,E004 TEST INSTRUCTION EXECUTED PAST ASC 11,SPECIFIED WORD COUNT/ ME005 ASC 18,E005 WRONG RESULT RETURNED IN A-REG/ ME006 ASC 18,E006 WRONG RESULT RETURNED IN B-REG/ ME007 ASC 13,E007 WRONG DATA RETURNED/ ME010 ASC 16,E010 DISTINATION STRING DOES NOT ASC 14, COMPARE WITH SOURCE STRING/ ME011 ASC 14,E011 INCORRECT TERMINATION/ ME012 ASC 17,E012 MEMORY PROTECT DIDN'T OCCUR/ ME013 ASC 12,E013 INTP DIDN'T OCCUR/ ME014 ASC 15,E014 INTP FROM WRONG LOCATION/ * MLBT ASC 02,LBT MSBT ASC 02,SBT MCBT ASC 02,CBT MSFB ASC 02,SFB MMBT ASC 02,MBT MCMW ASC 02,CMW MMVW ASC 02,MVW MTBS ASC 02,TBS MSBS ASC 02,SBS MCBS ASC 02,CBS FWAA EQU * FIRST WORD OF AVAL. MEMORY END /6   12943-18004 1432 S 0122 12943A 2100 SERIES EIG DIAGNOSTIC             H0101 ASMB,A,B,L,C HED GENERAL OPERATING PROCEDURE ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. SKIP * E. SKIP * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = RESERVED * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B P * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFEREݰNCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP STRT,I GO START PROGRAM FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC NOP USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 101011 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * SKP ORG 140B IOIP DEF IODP TSTP DEF TSTD HDMP DEF HDMS STDA OCT 7777 STDB OCT 0 HED EIG DIAGNOSTIC - CONSTANTS ORG 150B IODP EQU * DEC -1 TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEC -1 ORG 200B AACT OCT 0 AEXP OCT 0 BACT OCT 0 BEXP OCT 0 XACT OCT 0 XEXP OCT 0 YACT OCT 0 YEXP OCT 0 MACT OCT 0 MEXP OCT 0 OEACT OCT 0 EEACT OCT 0 HDMS ASC 12, EIG (INDEX) DIAGNOSTIC/ STRT OCT 2000 SKP * TEST SEQUENCES * * TEST * * SUBTST 1 2 3 4 * * LDA LDA LDB LDB * 0 CAX CAY CBX CBY * STX STY STX STY * * LDX LDY LDX LDY * 1 CXA CYA CXB CYB * STA STA STB STB * * LDX LDY LDX LDY * 2 XAX XAY XBX XBY * STX STY STX STY * * LDX LDY LDX LDY * 3 ISX ISY DSX DSY * STX STY STK STY * * LDX LDY LDX LDY * 4 ADX +N ADY +N ADX -N ADY -N * STX STY STX STY * * LDX LDY LDX LDY * 5 LAX LAY LBX LBY * STA STA STB STB * * LDA LDA LDB LDB * 6 LDX LDY LDX LDY * SAX SAY SBX SBY * * JLY JLY I(2) LDY * 7 STY STY JPY * * 8 LDX A LDX B STX A STX B * * 9 LAX M,I(1) LAY M,I(2)LDX M,I(3)LDX A,I(1) * * 10 SAX MP SAY MP STX MP STY MP * * 11 JLY MP JPY MP * * * N = 52525 * M = MEMORY * I = INDIRECT * MP = MEMORY PROTECT * * * * SKP ZCONF EQU * MP EQU 5B BT15 OCT 100000 MPBT OCT 40 OP1 OCT 52525 OP2 OCT 125252 DM1 DEC -1 CT DEC -10000 LOCS OCT 0 B2 OCT 2 B4 OCT 4 B6 OCT 6 B7 OCT 7 D10 DEC 10 ECSV1 OCT 0 ERFLG OCT 0 BPFLG OCT 0 MFLG OCT 0 YFLG OCT 0 BUFS OCT 0 TPSV OCT 0 CTSV OCT 0 ECSV OCT 0 FPPS OCT 0 SPPS OCT 0 ASV OCT 0 BSV OCT 0 OPTS1 DEF *+1 OPTS BSS 40 OPTP1 DEF OPT1 OPcT1 OCT 0 OCT 1 OCT 2 OCT 4 OCT 10 OCT 20 OCT 40 OCT 100 OCT 200 OCT 400 OCT 1000 OCT 2000 OCT 4000 OCT 10000 OCT 20000 OCT 40000 OCT 100000 OCT 177776 OCT 177775 OCT 177773 OCT 177767 OCT 177757 OCT 177737 OCT 177677 OCT 177577 OCT 177377 OCT 176777 OCT 175777 OCT 173777 OCT 167777 OCT 157777 OCT 137777 OCT 77777 OCT 177777 OTE1 DEF * SKP FPP DEF AACT OSV OCT 0 ESV OCT 0 OPP1 DEF OPTP1,I OPP2 DEF OPP1,I JMP1 JMP JP1P,I JMP2 JMP JP2P,I JMP3 JMP JP3P,I JP1P DEF JP1R JP2P DEF JP2R JP3P DEF JP3R EC11 OCT 70300 EC12 OCT 72340 EC13 OCT 70401 EC14 OCT 72441 EC21 OCT 04526 EC22 OCT 04627 EC23 OCT 06566 EC24 OCT 06667 EC31 OCT 71426 EC32 OCT 73467 EC33 OCT 71526 EC34 OCT 73567 EC41 OCT 71026 EC42 OCT 73067 EC43 OCT 70726 EC44 OCT 72767 EC51 OCT 70226 EC52 OCT 72267 EC53 OCT 70226 EC54 OCT 72267 EC61 OCT 05126 EC62 OCT 05167 EC63 OCT 07226 EC64 OCT 07267 EC71 OCT 75300 EC72 OCT 77340 EC73 OCT 101301 EC74 OCT 103341 EC101 OCT 71300 EC102 OCT 72340 SKP ISMT ASC 02,LDA- 00 00000 ASC 02,LDB- 01 00001 ASC 02,STA- 02 00010 ASC 02,STB- 03 00011 ASC 02,ADX- 04 00100 ASC 02,ADY- 05 00101 ASC 02,CAX- 06 00110 ASC 02,CAY- 07 00111 ASC 02,CBX- 08 01000 ASC 02,CBY- 09 01001 ASC 02,CXA- 10 01010 ASC 02,CXB- 11 01011 ASC 02,CYA- 12 01100 ASC 02,CYB- 13 01101 ASC 02,DSX- 14 01110 ASC 02,DSY- 15 01111 ASC 02,ISX- 16 100F00 ASC 02,ISY- 17 10001 ASC 02,LAX- 18 10010 ASC 02,LAY- 19 10011 ASC 02,LBX- 20 10100 ASC 02,LBY- 21 10101 ASC 02,LDX- 22 10110 ASC 02,LDY- 23 10111 ASC 02,XAX- 24 11000 ASC 02,XAY- 25 11001 ASC 02,XBX- 26 11010 ASC 02,XBY- 27 11011 ASC 02,STX- 28 11100 ASC 02,STY- 29 11101 ASC 02,SAX- 30 11110 ASC 02,SAY- 31 11111 ASC 02,SBX- 32 10000 ASC 02,SBY- 33 10001 SKP SPP DEF *+1 AAP DEF AS+1 AEP DEF AS+5 BAP DEF BS+1 BEP DEF BS+5 XAP DEF XS+1 XEP DEF XS+5 YAP DEF YS+1 YEP DEF YS+5 MAP DEF MS MEP DEF MS+4 EPP DEF * MS030 ASC 12,E030 AAA-BBB-CCC-ERROR OCT 6412 ASC 06,REG-ACT-EXP OCT 6412 AS ASC 10,A AAAAAA AAAAAA BS ASC 10,B BBBBBB BBBBBB OCT 6412 XS ASC 10,X XXXXXX XXXXXX YS ASC 10,Y YYYYYY YYYYYY OCT 6412 MTRM ASC 01,/ MS ASC 07,MMMMMM MMMMMM OCT 6412 SLCH ASC 01,/ MCH ASC 01,M MS031 ASC 13,E031 OVERFLOW-EXTEND ERROR OCT 6412 ASC 06,REG-ACT-EXP OCT 6412 OES ASC 08,OV XX EX XX/ HED EIG DIAGNOSTIC - SUBROUTINES RCK01 NOP STA AACT SAVE ACT A STB BACT SAVE ACT B LDA YFLG SZA TEST FOR FLAG SET JMP RC00 YES LDA BPFLG LOAD BYPASS FLAG SZA,RSS IS IT SET ? JMP X01 CLA STA YACT CLEAR ACT STA YEXP CLEAR EXP JMP ECK CHECK FOR ERROR FLAG SET X01 STY YACT SAVE Y NOP DANGER DO NOT REMOVE JMP ECK CHECK FOR ERROR FLAG SET RC00 LDA BPFLG SZA,RSS IS IT SET ? JMP Y01 CLA STA XACT CLEAR ACT STA XEXP CLEAR EXP JMP ECK CHECK FOR ERROR FLAG SET Y01 STX XACT SAVE X NOP DANGER DO NOT REMOVE ECK LDA ERFLG LOAD ERROR FLAG SZA IS FLAG SET ? JMP RC11-1 YES MCK LDB MFLG LOAD MEM CHECK FLAG SZB,RSS IS IT SET ? JMP ATST NO * MTST LDB MACT LOAD ACT M CPB MEXP TEST M JMP ATST OK JSB RPER REPORT ERROR IN M JMP RC11 CONTINUE * ATST LDA AACT LOAD A CPA AEXP TEST A JMP BTST OK JSB RPER1 REPORT ERROR IN A JMP RC11 GO TO NEXT TEST CASE * BTST LDB BACT LOAD B CPB BEXP TEST B JMP XTST OK JSB RPER1 REPORT ERROR IN B JMP RC11 GO TO NXT TST CASE * XTST LDA XACT LOAD X CPA XEXP TEST X JMP YTST OK JSB RPER1 REPORT ERROR IN X JMP RC11 CONTINUE * YTST LDA YACT LOAD Y CPA YEXP Y JMP RC11 * JSB RPER1 REPORT ERROR IN Y JMP RC11 CONTINUE * JSB RPER1 REPORT ERROR RC11 ISZ TPSV BUMP TST CASE PTR LDA TPSV CPA OTE1 LAST TST CASE ? RCEX1 ISZ RCK01 MOVE RTN PT CLA CLEAR STA ERFLG ERROR FLAG LDA AACT NO, RELOAD A,B LDB BACT JMP RCK01,I EXIT STS OCT 0 ST1 OCT 20 ST2 OCT 40 ST3 OCT 60 ST4 OCT 100 SKP RPOEE NOP STA ASV SAVE A STB BSV SAVE B CCA SET STA ERFLG ERROR FLAG LDA OEACT FORM AND D1 IOR B60 ASCII STA TMP LDA OEACT FOR RAL AND D1 O IOR B60 ERROR ALF,ALF IOR TMP MESSAGE ALF,ALF POSITION ACT-EXP STA OAP,I LDA EEACT FORM AND D1 k ASCII IOR B60 FOR STA TMP E LDA EEACT ERROR RAL AND D1 MESSAGE IOR B60 ALF,ALF IOR TMP ALF,ALF POSITION ACT-EXP STA EMP,I LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E031 JSB ERMS,I REPORT ERROR DEF MS031 LDA ASV RELOAD A LDB BSV RELOAD B JMP RPOEE,I EXIT TMP OCT 0 D1 OCT 1 OAP DEF OES+2 EMP DEF OES+6 B60 OCT 60 SKP RPER NOP LDA MCH ADD MSG STA MTRM LINK JSB ERRP REPORT ERROR JMP RPER,I EXIT SPC 2 RPER1 NOP LDA SLCH ADD MSG STA MTRM TERMINATOR JSB ERRP REPORT ERROR JMP RPER1,I EXIT SPC 2 ERRP NOP JSB SIS INSERT SEQUENCE IN MESSAGE JSB CAID CONVERT AND INSERT DATA LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E030 JSB ERMS,I REPORT ERROR DEF MS030 JMP ERRP,I EXIT SPC 2 SIS NOP LDA ISMP INITIALIZE STA ISMPS PTR TO FIRST MSG LDA ECSV LOAD ERROR CODE AND B37 MASK OFF CODE JSB MMSG CONVERT AND STORE 1 ST INSTR LDA ECSV RELOAD ERROR CODE RAR,ALF POSITION ALF,ALF NEXT CODE AND B37 MASK OFF CODE JSB MMSG CONVERT AND STORE 2 ND INSTR LDA ECSV RELOAD ERROR CODE ALF POSITION RAL,RAL LAST CODE AND B77 MASK OFF CODE JSB MMSG CONVERT AND STORE 3 RD INSTR JMP SIS,I EXIT SPC 2 MMSG NOP RAL MULTIPLY BY 2 ADA ISP ADD TABLE ENTRY POINT LDB A,I LOAD 1ST CHAR STB ISMPS,I STORE IN MSG INA BUMP ISZ ISMPS <6 POINTERS LDB A,I LOAD 2ND CHAR STB ISMPS,I STORE IN MSG ISZ ISMPS MOVE POINTER JMP MMSG,I EXIT ISMPS OCT 0 ISMP DEF MS030+3 ISP DEF ISMT B37 OCT 37 B77 OCT 77 SKP CAID NOP LDA FPP LOAD OPERAND POINTER STA FPPS LDA SPP LOAD POINTER TO MSG STRING STA SPPS CLP CLE SET LDA FPPS,I UP LDB SPPS,I CONVERSION JSB O2AS,I ROUTINE ISZ FPPS BUMP NEXT OPERAND ISZ SPPS BUMP DESTINATION POINT LDA SPPS TEST CPA EPP FOR LAST OPERAND JMP CAID,I YES JMP CLP NO, CONTINUE SKP EOSV NOP STA ASV SAVE A ERA SAVE AND BT15 STA ESV E STA EEACT LDA BT15 SOS TEST FOR CLA O STA OSV SET/CLEAR STA OEACT CLO CLEAR E CLE O LDA ASV RESTORE A JMP EOSV,I EXIT SPC 2 EOCK NOP STA ASV SAVE A STB BSV SAVE B ERA TEST AND BT15 E LDB A SAVE A RAL POSITION BIT IOR EEACT ADD IN EXP VALUE STA EEACT SAVE EXP/ACT E LDA B RESTORE A CPA ESV JMP OCK OK JMP EOE ERROR OCK LDA BT15 SOS TEST FOR CLA O RAL POSITION BIT IOR OEACT ADD IN EXP VALUE STA OEACT SAVE EXP/ACT O LDA BT15 SOS TEST FOR CLA O CPA OSV JMP EOE+1 OK LDA ASV RESTORE A LDB BSV RESTORE B EOE JSB RPOEE REPORT O/E ERROR LDA ASV RESTORE A LDB BSV RELOAD B JMP EOCK,I EXIT SKP RSEI NOP STA ASV SAVE A STB 54BSV SAVE B LDA ERFLG LOAD FLAG SZA,RSS IS IT SET ? JMP END EXIT LDA ERFLG TEST CPA B2 FOR WHICH MSG TO USE JMP RSED LDA ISE NO ADA ECSV1 FORM LDB A,I MSG STB MS032+2 FOR INA OUTPUT LDB A,I STB MS032+3 LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E032 JSB ERMS,I REPORT ERROR DEF MS032 JMP END EXIT RSED LDA ISE ADA ECSV1 FORM LDB A,I MSG STB MS033+2 FOR INA OUTPUT LDB A,I STB MS033+3 LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E033 JSB ERMS,I REPORT ERROR DEF MS033 END LDA ASV RESTORE A LDB BSV RESTORE B JMP RSEI,I EXIT ISE DEF ISET ISET ASC 02, ISX ASC 02, ISY ASC 02, DSX ASC 02, DSY MS032 ASC 15,E032 ISX INSTR FAILED TO SKIP/ MS033 ASC 19,E033 ISX INSTR SKIP'D BUT SHOULD NOT/ SKP SKP1 NOP STA ASV SAVE A STB BSV LDA SKP1 MOVE STA SKXY RTN POINT LDA XEXP LOAD SKP INDICATOR JMP SKXY+1 SPC 2 SKP2 NOP STA ASV SAVE A STB BSV SAVE B LDA SKP2 MOVE STA SKXY RTN POINT LDA YEXP LOAD SKP INDICATOR JMP SKXY+1 SPC 2 SKXY NOP CCB SZA TEST FOR SKP CORRECT CLB STB ERFLG INITIALIZE FLAG LDA ASV RESTORE A LDB BSV B ISZ SKXY MOVE RTN POINT JMP SKXY,I EXIT SPC 2 SKP11 NOP STA ASV SAVE A STB BSV SAVE B LDA SKP11 MOVE STA SKXY1 RTN POINT LDA XEXP LOAD SKP INDICATOR JMP SKXY1+1 SPC 2 SKP21 NOP STA ASV SAVE A cB@< STB BSV SAVE B LDA SKP21 MOVE STA SKXY1 RTN POINT LDA YEXP LOAD SKP INDICATOR JMP SKXY1+1 SPC 2 SKXY1 NOP LDB B2 SZA,RSS TEST FOR SKP CORRECT CLB STB ERFLG INITIALIZE FLAG LDA ASV RESTORE A LDB BSV B JMP SKXY1,I EXIT SKP RCK02 NOP STA AACT SAVE A STB BACT B STX XACT X NOP DANGER DO NOT REMOVE STY YACT Y NOP DANGER DO NOT REMOVE CPA AEXP TEST A JMP RCK02,I OK JSB RPIE REPORT INDIRECT ERROR JMP RCK02,I EXIT SPC 2 RCK03 NOP STA AACT SAVE A STB BACT B STX XACT X NOP DANGER DO NOT REMOVE STY YACT Y NOP DANGER DO NOT REMOVE LDA XACT CPA XEXP TEST X RESULTS JMP RCK03,I EXIT JSB RPIE REPORT INDIRECT ERROR JMP RCK03,I EXIT SPC 2 RPIE NOP LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E040 JSB ERMS,I REPORT ERROR DEF MS040 JMP RPIE,I EXIT LAXM ASC 01,AX LAYM ASC 01,AY LDXM ASC 01,DX MS040 ASC 13,E040 LAX INDIRECT FAILED/ SKP B  12943-18005 1432 S 0122 12943A 2100 SERIES EIG DIAGNOSTIC             H0101 CTI NOP LDA SAP LOAD PTR TO INSTR LOC'S STA SAPS SAVE CTI1 LDA SAPS,I LOAD INSTR PTR LDB CTI,I LOAD 1ST INSTR STB A,I STORE INLINE ISZ CTI BUMP PTRS LDA SAPS INA STA SAPS SAVE CPA EAP TEST FOR LAST LOC JMP CTI,I YES, EXIT JMP CTI1 NO, CONTINUE SAPS OCT 0 SAP DEF *+1 DEF ILI0 DEF ILI1 DEF ILI2 DEF ILI3 DEF ILI4 DEF ILI5 DEF ILI6 DEF ILI7 DEF ILI10 DEF ILI11 DEF ILI12 DEF ILI13 EAP DEF * SKP XINT NOP STA ASV SAVE A LDA OPTP1 INITIALIZE PTR STA TPSV TO TST CASES CLA CLEAR STA YFLG Y FLAG LDA BEXP STA YEXP LDY YEXP LOAD Y NOP DANGER DO NOT REMOVE LDA ASV RESTORE A JMP XINT,I EXIT SPC 2 YINT NOP STA ASV SAVE A LDA OPTP1 INITIALIZE PTR STA TPSV TO TST CASES CCA SET STA YFLG Y FLAG LDA BEXP STA XEXP LDX XEXP LOAD X NOP DANGER DO NOT REMOVE LDA ASV RESTORE A JMP YINT,I EXIT HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER P@ STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT r* ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG ;d LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT w LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * ZCEND EQU * HED EIG DIAGNOSTIC - SUBROUTINES ORG ZCEND ISTS NOP CLA INITIALIZE STA BPFLG BYPASS FLAG STA MFLG MEMORY CHECK FLAG STA ERFLG ERROR FLAG ILI0 NOP INSTR LOADS ERROR CODE STA ECSV LDA ST1 SET UP STA STS TEST/SUBTEST NO CLB B= 0'S STB BEXP ILI1 NOP INSTR CALLS EXECUTION ROUTINE CCB B= 1'S STB BEXP ILI2 NOP INSTR CALLS EXECUTION ROUTINE ILI3 NOP INSTR LOADS ERROR CODE STA ECSV LDA ST2 SET UP STA STS TEST/SUBTEST NO CLB B= 0'S STB BEXP ILI4 NOP INSTR CALLS EXECUTION ROUTINE CCB B= 1'S STB BEXP ILI5 NOP INSTR CALLS EXECUTION ROZUTINE ILI6 NOP INSTR LOADS ERROR CODE STA ECSV LDA ST3 SET UP STA STS TEST/SUBTEST NO CLA A= 0'S STA AEXP ILI7 NOP INSTR CALLS EXECUTION ROUTINE CCA A= 1'S STA AEXP ILI10 NOP INSTR CALLS EXECUTION ROUTINE ILI11 NOP INSTR LOADS ERROR CODE STA ECSV LDA ST4 SET UP STA STS TEST/SUBTEST NO CLA A= 0'S STA AEXP ILI12 NOP INSTR CALLS EXECUTION ROUTINE CCA A= 1'S STA AEXP ILI13 NOP INSTR CALLS EXECUTION ROUTINE JMP ISTS,I HED EIG (INDEX) DIAGNOSTIC - TEST 0 TST00 EQU * NOP JSB CTI LDA EC11 LOAD ERROR CODE IG1 JSB EXE11 EXECUTION ROUTINE JSB EXE11 EXECUTION ROUTINE LDA EC12 LOAD ERROR CODE JSB EXE12 EXECUTION ROUTINE JSB EXE12 EXECUTION ROUTINE LDA EC13 LOAD ERROR CODE JSB EXE13 EXECUTION ROUTINE JSB EXE13 EXECUTION ROUTINE LDA EC14 LOAD ERROR CODE JSB EXE14 EXECUTION ROUTINE JSB EXE14 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST00,I EXIT SKP EXE11 NOP CCA INITIALIZE STA BPFLG BYPASS FLAG JSB XINT INITIALIZE PTRS/FLGS EX11 LDA TPSV,I LOAD 1ST TST CASE STA AEXP SAVE STA XEXP LDB BEXP LOAD B CAX X _ A STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX11 LOOP JMP EXE11,I EXIT SPC 2 EXE12 NOP JSB YINT INITIALIZE PTRS/FLGS EX12 LDA TPSV,I LOAD TST CASE STA AEXP SAVE STA YEXP LDB BEXP LOAD B CAY Y _ A STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01  CHECK RESULTS JMP EX12 LOOP JMP EXE12,I EXIT SKP EXE13 NOP JSB XINT INITIALIZE PTRS/FLGS EX13 LDB TPSV,I LOAD TST CASE STB BEXP SAVE STB XEXP LDA AEXP LOAD A CBX X _ B STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX13 LOOP JMP EXE13,I EXIT SPC 2 EXE14 NOP JSB YINT INITIALIZE PTRS/FLGS EX14 LDB TPSV,I LOAD TST CASE STB BEXP SAVE STB YEXP LDA AEXP LOAD A CBY Y _ B STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX14 LOOP JMP EXE14,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 1 TST01 EQU * NOP JSB CTI LDA EC21 LOAD ERROR CODE IG2 JSB EXE21 EXECUTION ROUTINE JSB EXE21 EXECUTION ROUTINE LDA EC22 LOAD ERROR CODE JSB EXE22 EXECUTION ROUTINE JSB EXE22 EXECUTION ROUTINE LDA EC23 LOAD ERROR CODE JSB EXE23 EXECUTION ROUTINE JSB EXE23 EXECUTION ROUTINE LDA EC24 LOAD ERROR CODE JSB EXE24 EXECUTION ROUTINE JSB EXE24 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST01,I EXIT SKP EXE21 NOP CCA INITIALIZE STA BPFLG BYPASS FLAG JSB XINT INITIALIZE PTRS/FLGS EX21 LDA TPSV,I LOAD TST CASE STA AEXP STA XEXP SAVE LDB BEXP LOAD B CLA LDX XEXP X _ M CXA A _ X STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX21 LOOP JMP EXE21,I EXIT SPC 2 EXE22 NOP JSB YINT INITIALIZE PTRS/FLGS EX22 LDA TPSV,I LOAD TST CASE STA AEXP STA YEXP  SAVE LDB BEXP LOAD B CLA LDY YEXP Y _ M CYA A _ Y STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX22 LOOP JMP EXE22,I EXIT SKP EXE23 NOP JSB XINT INITIALIZE PTRS/FLGS EX23 LDB TPSV,I STB BEXP SAVE STB XEXP LDA AEXP LOAD A CLB LDX XEXP X _ M CXB B _ X STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX23 LOOP JMP EXE23,I EXIT SPC 2 EXE24 NOP JSB YINT EX24 LDB TPSV,I STB BEXP SAVE STB YEXP LDA AEXP LOAD A CLB LDY YEXP Y _ M CYB B _ Y STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX24 LOOP JMP EXE24,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 2 TST02 EQU * NOP JSB CTI LDA EC31 LOAD ERROR CODE IG3 JSB EXE31 EXECUTION ROUTINE JSB EXE31 EXECUTION ROUTINE LDA EC32 LOAD ERROR CODE JSB EXE32 EXECUTION ROUTINE JSB EXE32 EXECUTION ROUTINE LDA EC33 LOAD ERROR CODE JSB EXE33 EXECUTION ROUTINE JSB EXE33 EXECUTION ROUTINE LDA EC34 LOAD ERROR CODE JSB EXE34 EXECUTION ROUTINE JSB EXE34 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST02,I EXIT SKP EXE31 NOP JSB XINT INITIALIZE PTRS/FLGS EX31 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CMA STA XEXP LDB BEXP LOAD B LDX AEXP X _ M XAX A _ X X _ A STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX31 LOOP JMP EXE31,I UEXIT SPC 2 EXE32 NOP JSB YINT INITIALIZE PTRS/FLGS EX32 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CMA STA YEXP LDB BEXP LOAD B LDY AEXP Y _ M XAY A _ Y Y _ A STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX32 LOOP JMP EXE32,I EXIT SKP EXE33 NOP JSB XINT INITIALIZE PTRS/FLGS EX33 LDB TPSV,I LOAD TST CASE STB BEXP SAVE CMB STB XEXP LDA AEXP LOAD A LDX BEXP X _ M XBX B _ X X _ B STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX33 LOOP JMP EXE33,I EXIT SPC 2 EXE34 NOP JSB YINT INITIALIZE PTRS/FLGS EX34 LDB TPSV,I LOAD TST CASE STB BEXP SAVE CMB STB YEXP LDA AEXP LOAD A LDY BEXP Y _ M XBY B _ Y Y _ B STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX34 LOOP JMP EXE34,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 3 TST03 EQU * NOP JSB CTI LDA EC41 LOAD ERROR CODE IG4 JSB EXE41 EXECUTION ROUTINE JSB EXE41 EXECUTION ROUTINE LDA EC42 LOAD ERROR CODE JSB EXE42 EXECUTION ROUTINE JSB EXE42 EXECUTION ROUTINE LDA EC43 LOAD ERROR CODE JSB EXE43 EXECUTION ROUTINE JSB EXE43 EXECUTION ROUTINE LDA EC44 LOAD ERROR CODE JSB EXE44 EXECUTION ROUTINE JSB EXE44 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST03,I EXIT SKP EXE41 NOP JSB XINT INITIALIZE PTRS/FLGS EX41 LDA TPSV,I LOAD TST CASE STA AEXP SAVE INA STA XEXP CLA  STA ECSV1 SAVE ERROR CODE LDB BEXP LOAD B LDA AEXP RELOAD A LDX AEXP X _ M ISX X _ X+1 JSB SKP1 CHECK SKP CONDITION JSB SKP11 CHECK SKP CONDITION STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RSEI REPORT SKP ERROR IF PRESENT JSB RCK01 CHECK RESULTS JMP EX41 LOOP JMP EXE41,I EXIT SPC 2 EXE42 NOP JSB YINT INITIALIZE PTRS/FLGS EX42 LDA TPSV,I LOAD TST CASE STA AEXP SAVE INA STA YEXP LDA B2 STA ECSV1 SAVE ERROR CODE LDB BEXP LOAD B LDA AEXP RELOAD A LDY AEXP Y _ M ISY Y _ Y+1 JSB SKP2 CHECK SKP CONDITION JSB SKP21 CHECK SKP CONDITION STY YACT M _ X NOP DANGER DO NOT REMOVE JSB RSEI REPORT SKP ERROR IF PRESENT JSB RCK01 CHECK RESULTS JMP EX42 LOOP JMP EXE42,I EXIT SKP EXE43 NOP JSB XINT INITIALIZE PTRS/FLGS EX43 LDA TPSV,I LOAD TST CASE STA AEXP SAVE ADA DM1 STA XEXP LDA B4 STA ECSV1 SAVE ERROR CODE LDB BEXP LOAD B LDA AEXP RELOAD A LDX AEXP X _ M DSX X _ X-1 JSB SKP1 CHECK SKP CONDITION JSB SKP11 CHECK SKP CONDITION STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RSEI REPORT ERROR IF PRESENT JSB RCK01 CHECK RESULTS JMP EX43 LOOP JMP EXE43,I EXIT SPC 2 EXE44 NOP JSB YINT INITIALIZE PTRS/FLGS EX44 LDA TPSV,I LOAD TST CASE STA AEXP SAVE ADA DM1 STA YEXP LDA B6 STA ECSV1 SAVE ERROR CODE LDB BEXP LOAD B LDA AEXP RELOAD A LDY AEXP Y _ M DSY Y _ Y-1 JSB SKP2 CHECK SKP :CONDITION JSB SKP21 CHECK SKP CONDITION STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RSEI REPORT ERROR IF PRESENT JSB RCK01 CHECK RESULTS JMP EX44 LOOP JMP EXE44,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 4 TST04 EQU * NOP JSB CTI LDA EC51 LOAD ERROR CODE IG5 JSB EXE51 EXECUTION ROUTINE JSB EXE51 EXECUTION ROUTINE LDA EC52 LOAD ERROR CODE JSB EXE52 EXECUTION ROUTINE JSB EXE52 EXECUTION ROUTINE LDA EC53 LOAD ERROR CODE JSB EXE53 EXECUTION ROUTINE JSB EXE53 EXECUTION ROUTINE LDA EC54 LOAD ERROR CODE JSB EXE54 EXECUTION ROUTINE JSB EXE54 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST04,I EXIT SKP EXE51 NOP JSB XINT INITIALIZE PTRS/FLGS EX51 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CLE CLEAR E CLO O ADA OP1 STA XEXP JSB EOSV LDB BEXP LOAD B LDA AEXP RELOAD A LDX AEXP X _ M ADX OP1 X _ X + M STX XACT M _ X NOP DANGER DO NOT REMOVE JSB EOCK CHECK E/O RESULTS JSB RCK01 CHECK RESULTS JMP EX51 LOOP JMP EXE51,I EXIT SPC 2 EXE52 NOP JSB YINT INITIALIZE PTRS/FLGS EX52 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CLE CLEAR E CLO O ADA OP1 STA YEXP JSB EOSV LDB BEXP LOAD B LDA AEXP RELOAD A LDY AEXP Y _ M ADY OP1 Y _ Y + M STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB EOCK CHECK E/O RESULTS JSB RCK01 CHECK RESULTS JMP EX52 LOOP JMP EXE52,I EXIT SKP MHFBBH  12943-18006 1432 S 0122 12943A 2100 SERIES EIG DIAGNOSTIC             H0101 EXE53 NOP JSB XINT INITIALIZE PTRS/FLGS EX53 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CLE CLEAR E CLO O ADA OP2 STA XEXP JSB EOSV LDB BEXP LOAD B LDA AEXP RELOAD A LDX AEXP X _ M ADX OP2 X _ X + M STX XACT M _ X NOP DANGER DO NOT REMOVE JSB EOCK CHECK E/O RESULTS JSB RCK01 CHECK RESULTS JMP EX53 LOOP JMP EXE53,I EXIT SPC 2 EXE54 NOP JSB YINT INITIALIZE PTRS/FLGS EX54 LDA TPSV,I LOAD TST CASE STA AEXP SAVE CLE CLEAR E CLO O ADA OP2 STA YEXP JSB EOSV LDB BEXP LOAD B LDA AEXP RELOAD A LDY AEXP Y _ M ADY OP2 Y _ Y + M STY YACT M _ X NOP DANGER DO NOT REMOVE JSB EOCK CHECK E/O RESULTS JSB RCK01 CHECK RESULTS JMP EX54 LOOP JMP EXE54,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 5 TST05 EQU * NOP JSB CTI LDA EC61 LOAD ERROR CODE IG6 JSB EXE61 EXECUTION ROUTINE JSB EXE61 EXECUTION ROUTINE LDA EC62 LOAD ERROR CODE JSB EXE62 EXECUTION ROUTINE JSB EXE62 EXECUTION ROUTINE LDA EC63 LOAD ERROR CODE JSB EXE63 EXECUTION ROUTINE JSB EXE63 EXECUTION ROUTINE LDA EC64 LOAD ERROR CODE JSB EXE64 EXECUTION ROUTINE JSB EXE64 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST05,I EXIT SKP EXE61 NOP JSB XINT INITIALIZE PTRS/FLGS CCA INITIALIZE STA CTSV COUNTER EX61 LDA TPSV,I LOAD TST CASE STA AEXP SAVE LDB BEXP LOAD B LDA CTSV INA STA CTSV STA XEXP LDX CTSV  X _ M LAX OPT1 A _ M(X) STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX61 LOOP JMP EXE61,I EXIT SPC 2 EXE62 NOP JSB YINT INITIALIZE PTRS/FLGS CCA INITIALIZE STA CTSV COUNTER EX62 LDA TPSV,I LOAD TST CASE STA AEXP LDB BEXP LOAD B LDA CTSV INA STA CTSV STA YEXP LDY CTSV Y _ M LAY OPT1 A _ M(Y) STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX62 LOOP JMP EXE62,I EXIT SKP EXE63 NOP JSB XINT INITIALIZE PTRS/FLGS CCB INITIALIZE STB CTSV COUNTER EX63 LDB TPSV,I LOAD TST CASE STB BEXP SAVE LDA AEXP LOAD A LDB CTSV INB STB CTSV STB XEXP LDX CTSV X _ M LBX OPT1 B _ M(X) STX XACT M _ X NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX63 LOOP JMP EXE63,I EXIT SPC 2 EXE64 NOP JSB YINT INTIIALIZE PTRS/FLGS CCB INITIALIZE STB CTSV COUNTER EX64 LDB TPSV,I LOAD TST CASE STB BEXP SAVE LDA AEXP LOAD A LDB CTSV INB STB CTSV STB YEXP LDY CTSV Y _ M LBY OPT1 B _ M(Y) STY YACT M _ Y NOP DANGER DO NOT REMOVE JSB RCK01 CHECK RESULTS JMP EX64 LOOP JMP EXE64,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 6 TST06 EQU * NOP JSB CTI LDA EC71 LOAD ERROR CODE IG7 JSB EXE71 EXECUTION ROUTINE JSB EXE71 EXECUTION ROUTINE LDA EC72 LOAD ERROR CODE JSB EXE72 EXECUTION ROUTINE JSB EXE72 EXECUTION ROUTINE  LDA EC73 LOAD ERROR CODE JSB EXE73 EXECUTION ROUTINE JSB EXE73 EXECUTION ROUTINE LDA EC74 LOAD ERROR CODE JSB EXE74 EXECUTION ROUTINE JSB EXE74 EXECUTION ROUTINE JSB ISTS EXECUTE INITIALIZED SUBROUTINE JMP TST06,I EXIT SKP EXE71 NOP CCA INITIALIZE STA MFLG MEMORY CHECK FLAG JSB XINT INITIALIZE PTRS/FLGS CCA INITIALIZE STA CTSV COUNTER LDA OPTS1 STA BUFS EX71 LDA TPSV,I LOAD TST CASE STA AEXP SAVE STA MEXP LDB BEXP LOAD B LDA CTSV INA STA CTSV STA XEXP CLA CLEAR STA BUFS,I BUFFER LDA AEXP RELOAD B LDX CTSV X _ M SAX OPTS M(X) _ A STX XACT M _ X NOP DANGER DO NOT REMOVE STB BSV LDB BUFS,I STB MACT LDB BSV ISZ BUFS MOVE PTR TO NXT BUFFER LOC JSB RCK01 CHECK RESULTS JMP EX71 LOOP JMP EXE71,I EXIT SPC 2 EXE72 NOP JSB YINT INITIALIZE PTRS/FLGS CCA INITIALIZE STA CTSV COUNTER LDA OPTS1 STA BUFS EX72 LDA TPSV,I LOAD TST CASE STA AEXP SAVE STA MEXP LDB BEXP LOAD B LDA CTSV INA STA CTSV STA YEXP CLA CLEAR STA BUFS,I BUFFER LDA AEXP RELOAD LDY CTSV Y _ M SAY OPTS M(Y) _ A STY YACT M _ Y NOP DANGER DO NOT REMOVE STB BSV LDB BUFS,I STB MACT LDB BSV ISZ BUFS JSB RCK01 CHECK RESULTS JMP EX72 LOOP JMP EXE72,I MOVE PTR TO NXT BUFFER LOC SKP EXE73 NOP JSB XINT INITIALIZE PTRS/FLGS CCB INITIALIZE STB CTSV . COUNTER LDB OPTS1 STB BUFS EX73 LDB TPSV,I LOAD TST CASE STB BEXP SAVE STB MEXP LDA AEXP LOAD A LDB CTSV INB STB CTSV STB XEXP CLB CLEAR STB BUFS,I BUFFER LDB BEXP RELOAD LDX CTSV X _ M SBX OPTS M(X) _ B STX XACT M _ X NOP DANGER DO NOT REMOVE STA ASV LDA BUFS,I STA MACT LDA ASV ISZ BUFS MOVE PTR TO NXT BUFFER LOC JSB RCK01 CHECK RESULTS JMP EX73 LOOP JMP EXE73,I EXIT SPC 2 EXE74 NOP JSB YINT INITIALIZE PTRS/FLGS CCB INITIALIZE STB CTSV COUNTER LDB OPTS1 STB BUFS EX74 LDB TPSV,I LOAD TST CASE STB BEXP SAVE STB MEXP LDA AEXP LOAD A LDB CTSV INB STB CTSV STB YEXP CLB CLEAR STB BUFS,I BUFFER LDB BEXP RELOAD LDY CTSV Y _ M SBY OPTS M(Y) _ B STY YACT M _ Y NOP DANGER DO NOT REMOVE STA ASV LDA BUFS,I STA MACT LDA ASV ISZ BUFS JSB RCK01 CHECK RESULTS JMP EX74 LOOP JMP EXE74,I MOVE PTR TO NXT BUFFER LOC HED EIG (INDEX) DIAGNOSTIC - TEST 7 ORG 4000B TST07 EQU * NOP LDA JDP1 SET UP STA YEXP Y EXP MLOC JLY LOC1 EXECUTE JLY NOP DANGER DO NOT REMOVE LDA ST1 SET UP IOR TSTN TEST/SUBTEST NO E041 JSB ERMS,I REPORT ERROR - NO JMP DEF MS041 JMP JLYI GO TO NEXT TEST LOC1 STY YACT SAVE Y NOP DANGER DO NOT REMOVE LDA YEXP CPA YACT TEST Y RESULTS JMP JLYI OK LDA ST1 SET UP IOR TSTN TEST/SUBTEST NO E042 JSB ERMS,I REPORT ERROR - Y INCORRECT DEF MS042 SPC 2 JLYI LDA JDP2 SET UP STA YEXP Y EXP MLOC1 JLY LOCI,I EXECUTE JLY I NOP DANGER DO NOT REMOVE LDA ST2 SET UP IOR TSTN TEST/SUBTEST NO E043 JSB ERMS,I REPORT ERROR - NO JMP I DEF MS043 JMP JPYT GO TO NEXT TEST LOC2 STY YACT SAVE Y NOP DANGER DO NOT REMOVE LDA YEXP CPA YACT TEST Y RESULTS JMP JPYT OK LDA ST2 SET UP IOR TSTN TEST/SUBTEST NO E044 JSB ERMS,I REPORT ERROR - Y INCORRECT DEF MS044 SPC 2 JPYT LDA RTNP SET UP STA YEXP Y EXP LDY RTNP Y _ M JPY 0 EXECUTE JPY NOP DANGER DO NOT REMOVE LDA ST3 SET UP IOR TSTN TEST/SUBTEST NO E045 JSB ERMS,I REPORT ERROR - NO JMP DEF MS045 JMP TSTE GO TO END RTN STY YACT SAVE Y NOP DANGER DO NOT REMOVE LDA YEXP CPA YACT TEST Y RESULTS JMP TSTE OK LDA ST3 SET UP IOR TSTN TEST/SUBTEST NO E046 JSB ERMS,I REPORT ERROR - Y INCORRECT DEF MS046 TSTE JMP TST07,I EXIT RTNP DEF RTN JDP1 DEF MLOC+2 JDP2 DEF MLOC1+2 LOCI DEF LOCI1,I LOCI1 DEF LOC2 DISP1 OCT 0 MS041 ASC 15,E041 JLY INSTR FAILED TO JMP/ MS042 ASC 19,E042 JLY INSTR JMP'D BUT Y INCORRECT/ MS043 ASC 16,E043 JLY INSTR FAILED TO JMP,I/ MS044 ASC 23,D044 JLY INSTR JMP'D INDIRECT BUT Y INCORRECT/ MS045 ASC 15,E045 JPY INSTR FAILED TO JMP/ MS046 ASC 19,E046 JPY INSTR JMP'D BUT Y INCORRECT/ HED EIG (INDEX) DIAGNOSTIC - TEST 8 TST10 EQU * NOP LDA OP1 LOAD OPERAND STA XEXP SAVE A STA AEXP LDX A LOAD X STX XACT SAVE X NOP DANGER DO NOT REMOVE STA AACT LDA XEXP RELOAD A CPA XACT TEST X RESULT 0c RSS OK JSB E034 REPORT ERROR SPC 2 LDB OP2 LOAD OPERAND STB XEXP SAVE B STB BEXP LDX B LOAD X STX XACT SAVE X NOP DANGER DO NOT REMOVE STB BACT LDB OP2 RELOAD B CPB XACT TEST X RESULT RSS OK JSB E035 REPORT ERROR SPC 2 LDA OP1 LOAD A CLB LOAD B STB AEXP SAVE STB XEXP LDX AEXP LOAD X STX A SAVE IN A STX XACT NOP DANGER DO NOT REMOVE STA AACT SAVE A CPA AEXP TEST A RESULT RSS OK JSB E036 REPORT ERROR SPC 2 LDB OP2 LOAD B CCA LOAD A STA BEXP SAVE STA XEXP LDX BEXP LOAD X STX B SAVE X IN B STX XACT NOP DANGER DO NOT REMOVE STB BACT SAVE B CPB BEXP TEST B RESULT JMP TST10,I EXIT LDA ST4 SET UP IOR TSTN TEST/SUBTEST NO E037 JSB ERMS,I REPORT ERROR DEF MS037 JMP TST10,I EXIT E034 NOP LDA ST1 SET UP IOR TSTN TEST/SUBTEST NO JSB ERMS,I REPORT ERROR DEF MS034 JMP E034,I EXIT E035 NOP LDA ST2 SET UP IOR TSTN TEST/SUBTEST NO JSB ERMS,I REPORT ERROR DEF MS035 JMP E035,I EXIT E036 NOP LDA ST3 SET UP IOR TSTN TEST/SUBTEST NO JSB ERMS,I REPORT ERROR DEF MS036 JMP E036,I EXIT MS034 ASC 09,E034 LDX A FAILED/ MS035 ASC 09,E035 LDX B FAILED/ MS036 ASC 09,E036 STX A FAILED/ MS037 ASC 09,E037 STX B FAILED/ HED EIG (INDEX) DIAGNOSTIC - TEST 9 TST11 EQU * NOP CLA STA BPFLG CLEAR STA ERFLG STA MFLG FLAGS LDA EC61 INITIALIZE STA ECSV ERROR CODE LDA LAXM SET UP STA MS040+3 MESSAGE LDA ST1 SET UP STA STS TEST/SUBTEST NO CCB SET UP STB BEXP B STB YEXP Y LDA OPT1+7 STA AEXP A LDA B7 STA XEXP X CLA LOAD A STA YFLG LDY YEXP LDX XEXP M _ M LAX OPTP1,I A _ M(X),I NOP DANGER DO NOT REMOVE JSB RCK02 CHECK RESULTS SPC 2 LDA EC62 INITIALIZE STA ECSV ERROR CODE LDA LAYM SET UP STA MS040+3 MESSAGE LDA ST2 SET UP STA STS TEST/SUBTEST NO LDB OP1 SET UP STB BEXP B STB XEXP X LDA OPT1+10 STA AEXP A LDA D10 STA YEXP Y STA YFLG CLA LOAD A LDY YEXP Y _ M LDX XEXP X _ M LAY OPP1,I A _ M(Y),I NOP DANGER DO NOT REMOVE JSB RCK02 CHECK RESULTS SPC 2 LDA EC101 INITIALIZE STA ECSV ERROR CODE LDA LDXM SET UP STA MS040+3 MESSAGE LDA ST3 SET UP STA STS TEST/SUBTEST NO CLB SET UP STB BEXP B STB YEXP Y CLA STA YFLG CCA STA AEXP A LDA OPP2,I STA XEXP X CCA LOAD A LDY YEXP Y _ M LDX OPP2,I X _ M(I) NOP DANGER DO NOT REMOVE JSB RCK03 CHECK RESULTS SPC 2 LDA EC102 INITIALIZE STA ECSV ERROR CODE LDA ST4 SET UP STA STS TEST/SUBTEST NO LDB OP2 SET UP STB BEXP B STB NYEXP Y STB XACT LDA OPTP1,I STA AEXP A STA XEXP X LDA OPTP1 A _ M LDY YEXP Y _ M LDX A,I X _ A(I) NOP DANGER DO NOT REMOVE JSB RCK03 CHECK RESULTS JMP TST11,I EXIT HED EIG (INDEX) DIAGNOSTIC - TEST 10 TST12 EQU * NOP JSB MPCK CHECK FOR MEMORY PROTECT PRESENT JMP TST12,I EXIT LDA FN1 SET UP OTA MP FENCE LDA JMP1 SET UP STA MP RETURN POINT LDA LAXM SET UP STA MS050+3 ERROR STA MS051+3 MESSAGES CLA STA NEL MEMORY LDA INT1 STA INTS LDA ST1 SET UP STA STS TEST/SUBTEST NO LDA CT INITIALIZE STA LOCS COUNTER LDA SAYP STA RTNS SAVE RTN POINT STF INTP TURN ON INTS STC MP TURN ON MP LDA OP1 LOAD A LDX DISP1 LOAD X INT1 SAX NEL CAUSE M.P. INT NOP DANGER DO NOT REMOVE CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOP OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR JMP TST12,I EXIT SPC 2 SAYT LDA FN1 SET UP OTA MP FENCE LDA JMP1 SET UP STA MP RETURN POINT LDA LAYM SET UP STA MS050+3 ERROR STA MS051+3 MESSAGES CLA CLEAR STA NEL MEMORY LDA INT2 SET UP STA INTS INT CHECK LDA ST2 SET UP STA STS TEST/SUBTEST NO LDA CT INITIALIZE STA LOCS COUNTER LDA STXP STA RTNS SAVE RTN POINT STF INTP TURN ON INTS STC MP TURN ON MP LDA OP1 LOAD A LDY #7DISP1 LOAD Y INT2 SAY NEL CAUSE M.P. INT NOP DANGER DO NOT REMOVE CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOP OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR JMP TST12,I EXIT SPC 2 STXT LDA FN1 SET UP OTA MP FENCE LDA JMP1 SET UP STA MP RETURN POINT LDA STXM SET UP STA MS050+3 ERROR STA MS051+3 MESSAGES CLA CLEAR STA NEL MEMORY LDA INT3 SET UP STA INTS INT CHECK LDA ST3 SET UP STA STS TEST/SUBTEST NO LDA CT INITIALIZE STA LOCS COUNTER LDA STYP STA RTNS SAVE RTN POINT STF INTP TURN ON INTS STC MP TURN ON MP LDX OP1 LOAD X INT3 STX NEL CAUSE M.P. INT NOP DANGER DO NOT REMOVE CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOP OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR JMP TST12,I EXIT SPC 2 STYT LDA FN1 SET UP OTA MP FENCE LDA JMP1 SET UP STA MP RETURN POINT LDA STYM SET UP STA MS050+3 ERROR STA MS051+3 MESSAGE CLA SET UP STA NEL MEMORY LDA INT4 SET UP STA INTS INT CHECK LDA ST4 SET UP STA STS TEST/SUBTEST NO LDA CT INITIALIZE STA LOCS COUNTER LDA TEXT STA RTNS SAVE RETURN STF INTP TURN ON INTS STC MP TURN ON MP LDY OP1 LOAD Y INT4 STY NEL CAUSE M.P. INT NOP DANGER DO NOT REMOVE CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOPA OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR LSTST JMP TST12,I EXIT SPC 2 JP1R CLF INTP TURN OFF INTS LDA TSTN SET UP IOR STS TEST/SUBTEST NO LIB MP GET VIOLATION ADDR SSB,RSS JMP *+3 OCT 106005 JMP *-1 LIA MP RELOAD VIOLATION REGISTER LDA A,I GET INSTR AT LOC CPA INTS TEST FOR CORRECT INSTR JMP CN1 YES LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E050 JSB ERMS,I REPORT ERROR DEF MS050 JMP RTNS,I GO TO NEXT TEST CN1 LDA NEL IS MEMORY SZA,RSS CHANGED JMP RTNS,I NO LDA TSTN LOAD TEST NO IOR STS OR IN SUBTEST NO E051 JSB ERMS,I REPORT ERROR DEF MS051 JMP RTNS,I GO TO NEXT TEST NEL OCT 77 FN1 DEF TEXT RTNS OCT 0 INTS OCT 0 STXM ASC 01,TY STYM ASC 01,TX SAYP DEF SAYT STXP DEF STXT STYP DEF STYT TEXT DEF LSTST MS050 ASC 18,E050 SAX INSTR DID NOT CAUSE MP INT/ MS051 ASC 20,E051 SAX INSTR CAUSED MP INT BUT MEMORY OCT 6412 ASC 09,WAS NOT PROTECTED/ SPC 2 MPCK NOP LDA CPTO LOAD OPTION WORD AND MPBT SZA,RSS TEST FOR MP PRESENT JMP MP1 NO ISZ MPCK YES MOVE RTN POINT JMP MPCK,I EXIT MP1 JSB MSGC,I REPORT MP NOT PRESENT DEF MS047 JMP MPCK,I MS047 ASC 20,H047 MEMORY PROTECT OPTION NOT PRESENT/ HED EIG (INDEX) DIAGNOSTIC - TEST 11 TST13 EQU * NOP JSB MPCK CHECK FOR MEMORY PROTECT PRESENT JMP TST13,I EXIT LDA FN2 SET UP OTA MP FENCE LDA CT INITIALIZE STA LOCS COUNTER LDA JMP2 SET UP STA MP RETURN STF INTP TURN ON INTS STC MP TURN ON M.P. INT5 JLY MPV1 EXECUTE JLY NOP DANGER DO NOT REMOVE  CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOP OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR JMP TST13,I EXIT MPV1 CLF INTP FORCE M.P. INT JMP *-1 HANG SPC 2 JPYT1 LDA FN2 SET UP OTA MP FENCE LDA CT INITIALIZE STA LOCS COUNTER LDA JMP3 SET UP STA MP RETURN STF INTP TURN ON INTS STC MP TURN ON M.P. LDY OPT1 INT6 JPY MPV2 EXECUTE JPY NOP DANGER DO NOT REMOVE CLF INTP FORCE INT ISZ LOCS INCREMENT COUNT JMP *-2 LOOP OCT 106010 M.P. NOT INSTALLED / CLF 0 ERROR JMP TST13,I EXIT MPV2 CLF INTP FORCE M.P. INT JMP *-1 HANG SPC 2 JP2R CLF INTP TURN OFF INTS LDA TSTN SET UP IOR ST1 OR IN SUBTEST NO LIB MP GET VIOLATION ADDR SSB,RSS JMP *+3 OCT 106005 JMP *-1 LIA MP RELOAD VIOLATION REGISTER LDA A,I GET CONTENTS CPA INT5 CORRECT CONTENTS JMP JPYT1 GO TO NEXT TEST LDA ST1 SET UP IOR TSTN TEST/SUBTEST NO E054 JSB ERMS,I REPORT ERROR DEF MS054 JMP JPYT1 GO TO NEXT TEST SPC 2 JP3R CLF INTP TURN OFF INTS LDA TSTN SET UP IOR ST2 OR IN SUBTEST NO LIB MP GET VIOLATION ADDR SSB,RSS JMP *+3 OCT 106005 JMP *-1 LIA MP RELOAD VIOLATION REGISTER LDA A,I GET CONTENTS CPA INT6 CONTENTS CORRECT LSTTE JMP TST13,I EXIT LDA ST2 SET UP IOR TSTN TEST/SUBTEST NO E056 JSB ERMS,I REPORT ERROR DEF MS056 JMP LSTTE FN2 DEF LSTTE MS054 ASC 19,E054 JLY INSTR FAILED TO CAUSE MP INT ASC 01,/ MS056 ASC 19,E056 JPY INSTR FAILED TO CAUSE MP INT !gHFB ASC 01,/ SKP LDA ECPT ROUTINE STA ECPTS TO ELP LDA ECPTS CHECK STA ECSV ALL JSB RPER1 CODED ISZ ECPTS ERROR LDA ECPTS MESSAGES CPA ECLE HLT 66B JMP ELP ECPT DEF EC11 ECPTS OCT 0 ECLE DEF EC74+1 FWAA EQU * END NH  12960-18001 1805 S 0122 DIAG-7900/7901              H0101 ASMB,A,B,L,C HED 7900/7901 CARTRIDGE DISC DIAGNOSTIC FOR 2100 SERIES * 7900/7901 CARTRIDGE DISC DIAGNOSTIC FOR 2100 SERIES COMPUTERS * * CONFIGURATION ADDRESS = 100B * * STARTING ADDRESS = 2000B * * SWITCH REGISTER DURING CONFIGURATION * BITS 0-5 SELECT CODE FOR THE I/O CHANNEL CONTAINING THE * DATA INTERFACE FOR THE DISC * THE COMMAND CHANNEL INTERFACE BOARD IS THE NEXT * HIGHER SELECT CODE * BITS 6-13 SPARES * BIT 14 SET TO ZERO FOR DMA CHANNEL 6 * * SWITCH REGISTER DURING EXECUTION * * BIT 0 NOT USED * BIT 1 SKIP TO END OF SECTION ONCE WHEN SET * BIT 2 IF SET TO ONE,ALTER CYLINDER TABLE AND/OR * PATTERN TABLE AND/OR SELECT HEADS * AND/OR CHANGE UNIT REMOVAL THRESHOLD * AND/OR ALTER UNIT TABLE * BIT 3 IF SET TO ONE,EXECUTE OPERATOR DESIGN PROGRAM * BIT 4 IF SET TO ONE, EXECUTE WRITE * ADDRESS PART OF S1 * BIT 5 IF SET TO ONE,SHORTEN TEST IN S2,S3,S4 AND S5 * BIT 6 IF SET TO ONE,RESTRICT CYLINDER SELECTION * BIT 7 IF SET TO ONE,REPEAT LAST SECTION * BIT 8 SUPPRESS SPACES,PRINT H65 INDEPENDENT OF BIT 10 * IF ERROR OCCURS. * BIT 9 IF SET TO ONE,HALT AFTER EACH SECTION OF THE * PROGRAM * BIT 10 IF SET TO ONE,ALL NON-ERROR MESSAGES FOR THE * TELEPRINTER WILL BE SUPPRESSED,EXCEPT CURRENT * OPERATION MESSAGES AND H51 * BIT 11 IF SET TO ONE,ALL MESSAGES FOR THE TELEPRINTER * WILL BE SUPPRESSED * BIT 12 IF SET TO ONE, PRINT TIMING MESSAGES * IN S2 AND S4 * BIT 13 IF SET TO ONE,LOOP ON LAST STEP * BIT 14 IF SET TO ZERO,PROGRAM HALTS AFTER EACH ERROR * BIT 15 IF SET TO ONkE,PROGRAM WILL COME TO AN ORDERLY * HALT AT THE END OF CURRENT STEP * ORG 100B JMP CNFIG,I CONFIGURE PROGRAM ORG 105B TO DEFINE ENDING ADDRESS FOR SIO DUMP DEF PEND ENDING LOCATION OF PROGRAM ORG 126B OCT 151302 DSN=151302,REV=1805 (1-10-78) ORG 130B * * CURRENT OPERATION (LOOP ADDRESS) * COPR NOP STA STEPN CAPTURE RETURN JMP COPR,I ADDRESS * A EQU 0 A REGISTER ADDRESS B EQU 1 B REGISTER ADDRESS CC EQU 0 THIS SYMBOL IS USED AT ALL PLACES * WHERE THE COMMAND CHANNEL NUMBER * IS STORED CH EQU 0 THIS SYMBOL IS USED AT ALL * PLACES WHERE BOTH CHANNELS ARE * STORED IN BASIC I/O DC EQU 0 THIS SYMBOL IS USED AT ALL * PLACES WHERE THE DATA CHANNEL * NUMBER IS STORED DMAC EQU 2 DMA CONTROL CHANNEL DMAD EQU DMAC+4 DMA INTERRUPT CHANNEL SIOLO EQU 102B ENTRY ADDRESS FOR SIO LIST OUTPUT SIOFO EQU 103B ENTRY ADDRESS FOR FAST OUTPUT * SZREF EQU 0 APPEARS WHERE A REFERENCE DEPENDS * ON THE SECTOR SIZE. * MSIZE EQU 117B MEMORY SIZE TMR EQU 121B LINK TO ONE MSEC TIME DELAY I2ASC EQU 123B LINK TO INTEGER TO ASCII CONV. O2ASC EQU 124B LINK TO OCTAL TO ASCII CONV. * ATTN BSS 1 BILD BSS 1 BPTRA BSS 1 BUFAD BSS 1 PRIMARY BUFFER ADDRESS BUFAE BSS 1 SECONDARY BUFFER ADDRESS CC7 OCT 0 CCHAR BSS 1 CCNT BSS 1 CH13 NOP CLOAD BSS 1 COPRN NOP CPNT BSS 1 CPONT BSS 1 CSAVE BSS 1 CSTOR BSS 1 CYL BSS 1 CYLINDER NUMBER CYLX BSS 1 DC14 OCT 0 DFLT BSS 1 DMRF BSS 1 DMA ERROR INDICATOR ELOC BSS 1 LAST ERROR NUMBER ERR BSS 1 NUMBER OF ERRORS FIRST BSS f1 USED IN S4 FL6 BSS 1 FSAVE BSS 1 GLOB1 BSS 1 GLOB2 BSS 1 GLOB3 BSS 1 GLOB4 BSS 1 GLOB5 BSS 1 GLOB6 BSS 1 HDON OCT 0 HEAD BSS 1 BITS 6 - 0 HEAD NUMBER HFLAG OCT 0 IFRST BSS 1 ISR BSS 1 LABEL BSS 1 LABLC OCT 0 LBLP1 BSS 1 LBLP2 BSS 1 LCNT BSS 1 LOCAL BSS 1 LWAM BSS 1 LAST WORD OF AVAILABLE MEMORY MAX DEC 20 NO. OF ERRORS FOR UNIT REMOVAL MDFLG BSS 1 SET TO 14B FOR MULTI-DRIVE NEWBD OCT 0 INDICATE IF TESTING NEW BOARD NI BSS 1 NUMP DEC 1 OPCNT BSS 1 OPSRT BSS 1 PASS BSS 1 PASS NUMBER STORED HERE PCNT BSS 1 PCNTA BSS 1 PFLAG BSS 1 PLOAD BSS 1 PSAVE NOP PSTOR BSS 1 S400 DEF S40 S40 BSS 4 S4BUG BSS 1 S6CNT BSS 1 SAV6 BSS 1 SECTN BSS 1 CURRENT SECTION NUMBER SECTR BSS 1 SECTOR WHERE CURRENT OPERATION * WILL START SFLAG BSS 1 SHTAS BSS 1 STAUS BSS 1 DEVICE STATUS STORED HERE STEPN OCT 0 STRF BSS 1 ERROR POINTER OR ZERO IF NO SVCTA BSS 1 USED TO TIME SEEKS IN S2 AND S4 TEMP1 BSS 1 TEMP2 BSS 1 TEMP3 BSS 1 UNITS DEF UNITA UNITA OCT 0 BSS 3 UNITC OCT 1 UNIT OCT 0 VAL1 BSS 1 VAL2 BSS 1 VALUE BSS 1 WCNT BSS 1 POSITIVE WORD COUNT FOR * CURRENT OPERATION WD0 DEF * WD1 BSS 1 WD2 BSS 1 WD3 BSS 1 WD4 BSS 2 CVT3 EQU WD1 CVT1 EQU WD2 CVT2 EQU WD3 CVT DEF WD1 SKP D0 DEC 0 B1 DEC 1 D1 EQU B1 D2 DEC 2 CRLFL EQU D2 BIT1 EQU D2 D3 DEC 3 B3 EQU D3 D4 DEC 4 BIT2 EQU D4 B4 EQU D4 D5 DEC 5 D6 DEC 6 D7 DEC 7 B7 EQU D7 D8 DEC 8 BIT3 EQU D8 B10 EQU D8 D9 DEC 9 B11 EQU D9 D10 DEC 10 D11 DEC 11 D12 DEC 12 B14 EQU D12 D13 DEC 13 B15 EQU D13 D14 DEC 14 B16 EQU D14 D15 DEC 15 B17 EQU D15 BIT4 DEC 16 B20 EQU BIT4 D16 EQU BIT4 D17 DEC 17 B21 EQU D17 D18 DEC 18 B22 EQU D18 D19 DEC 19 B23 EQU D19 D20 DEC 20 B24 EQU D20 B25 DEC 21 D21 EQU B25 B26 DEC 22 D22 EQU B26 D23 DEC 23 B27 EQU D23 B30 DEC 24 D24 EQU B30 D25 DEC 25 B31 EQU D25 B32 DEC 26 D26 EQU B32 D27 DEC 27 B33 EQU D27 D28 DEC 28 B34 EQU D28 D29 DEC 29 B35 EQU D29 D30 DEC 30 B36 EQU D30 B37 DEC 31 D31 EQU B37 B40 DEC 32 BIT5 EQU B40 D32 EQU B40 B41 DEC 33 D33 EQU B41 B42 DEC 34 D34 EQU B42 B43 DEC 35 D35 EQU B43 B44 DEC 36 D36 EQU B44 B45 DEC 37 D37 EQU B45 B46 DEC 38 D38 EQU B46 B47 DEC 39 B51 DEC 41 B52 DEC 42 B53 DEC 43 B54 DEC 44 B55 DEC 45 D45 EQU B55 B56 DEC 46 D46 EQU B56 B57 DEC 47 D47 EQU B57 B60 DEC 48 D48 EQU B60 B61 DEC 49 D49 EQU B61 B62 DEC 50 D50 EQU B62 D51 DEC 51 B64 DEC 52 D52 EQU B64 B65 DEC 53 D53 EQU B65 B66 DEC 54 D54 EQU B66 B67 DEC 55 D55 EQU B67 B70 DEC 56 D56 EQU B70 B71 DEC 57 D57 EQU B71 B100 DEC 64 BIT6 EQU B100 B103 DEC 67 B104 DEC 68 B105 OCT 105 D72 DEC 72 D95 DEC 95 B142 OCT 142 D106 DEC 106 BIT7 OCT 200 BIT8 OCT 400 B401 OCT 401 BIT9 OCT 1000 BIT10 OCT 2000 B2011 OCT 2011 A2400 OCT 2400 BIT11 OCT 4000 A4400 OCT 4400 BIT12 OCT 10000 BIT13 OCT 20000 C0001 OCT 20001 C1440 OCT 21440 C7461 OCT 27461 BIT14 OCT 40000 E2001 OCT 42001 BIT15 OCT 100000 B7777 OCT 17777 BB OCT 20040 B2060 OCT 20060 CRLF OCT 6412 D7777 OCT 37777 H7777 OCT 77777 HA OCT 40400 HB OCT 1400 HC EQU BIT8 JMPI OCT 126000 JSB1 JSB R1,I MEM OCT 70000 NN OCT 47000 P7400 OCT 177400 P7700 OCT 177700 THLT2 OCT 106002 HLTC OCT 102010 YY OCT 13400 B77 OCT 77 B177 OCT 177 B377 OCT 377 B1777 OCT 1777 B3777 OCT 3777 D128 EQU BIT7 D129 DEC 129 D202 DEC 202 D203 DEC 203 D256 EQU BIT8 D384 DEC 384 D512 EQU BIT9 B6000 OCT 6000 D1024 EQU BIT10 PAGE8 OCT 16000 MM1  DEC -1 MM2 DEC -2 MM3 DEC -3 MM4 DEC -4 MM5 OCT -5 MM6 DEC -6 MM7 DEC -7 MM8 DEC -8 MM10 DEC -10 MM13 DEC -13 MM16 DEC -16 MM31 DEC -31 MM48 OCT -60 MM56 OCT -70 MM58 OCT -72 MM64 EQU P7700 MM105 DEC -105 M124 DEC -124 M175 DEC -175 M256 EQU P7400 MM512 DEC -512 MM650 DEC -650 M1024 DEC -1024 M3000 DEC -3000 M7936 DEC -7936 * * ASCD0 ASC 1,.0 ASCZZ ASC 1,00 UPD ASC 1,U/ LRD ASC 1,L/ BPTR DEF BUFB WRITE BUFFER BPTR1 DEF BUFB+128 BPTS DEF BUFB+1024 READ BUFFER BPTO DEF BUFB+2048 DMACW ABS 120000B+DC SKP * * * BASE PAGE LINKS AND POINTERS * * .E6 DEF E6 ADDOI DEF ADDO ADDRS DEF INTPT+1 CNFIG DEF INIT CRLFI DEF CRLF DDD DEF D0 EFER DEF FER EFERC DEF FERC ELER DEF LER ERHTI DEF ERHLT FCYKI DEF FCYCK FTR DEF FTRBN GETNI DEF GETN JE6 JMP .E6,I LONG DEF JP65C OPDNI DEF OPDSN P001A DEF J001A P002A DEF J002A P003A DEF J003A P004A DEF J004A P005A DEF J005A P013A DEF JP13A P013B DEF JP13B P023A DEF JP23A P024A DEF JP24A P027A DEF JP27A P033A DEF JP33A P037A DEF JP37A P037B DEF JP37B P040A DEF JP40A P040B DEF JP40B P041A DEF JP41A P042A DEF JP42A P047A DEF JP47A P047B DEF JP47B P047C DEF JP47C P050A DEF JP50A P050B DEF JP50B P051A DEF JP51A P051B DEF JP51B P051C DEF JP51C P051D DEF JP51D P052A DEF JP52A P052B DEF JP52B P052C DEF JP52C P052D DEF JP52D P052E DEF JP52E P052F DEF JP52F P053A DEF JP53A P053B DEF JP53B P054A DEF JP54A P054B DEF JP54B P056A DEF JP56A P057A DEF JP57A P064A DEF JP64A P064B DEF JP64B P065A DEF JP65A P065B DEF JP65B P065E DEF JP65E P070A DEF JP70A PO72A DEF JP72A PATR DEF PATTR PATTI DEF GLOB4 USED IN PCHK PCHKI DEF PCHK PCOPI DEF PCOPR PFMI DEF FMI PPT1 JSB TV1,I PPT2 JSB TV2,I PPT4 JSB TV4,I PPT5 JSB TV5,I PPT6 JSB TV6,I PPT7 JMP OPDNI,I PPT8 JSB TV8,I PPT9 JSB TV9,I PPT10 JSB TV10,I PPT13 JSB TV13,I PPT14 JMP TV14,I PPT1nn5 JSB TV15,I R1 DEF RETRN RNCHI DEF RNCH RNSCI DEF RNSC SHORT DEF JP65D SKIPI DEF SKIP ST32I DEF STP32 ST35I DEF STP35 THRUI DEF THRU TRT DEF TRTBP TV1 DEF TVP1 TV2 DEF TVP2 TV4 DEF TVP4 TV5 DEF TVP5 TV6 DEF TVP6 TV8 DEF TVP8 TV9 DEF TVP9 TV10 DEF TVP10 TV13 DEF TVP13 TV14 DEF TVP14 TV15 DEF TVP15 VAL DEF VALUE WADI DEF WADR WADRI DEF WADRA * * SECT DEF *,I * DEF S1 * DEF S2 * DEF S3 * DEF S4 * DEF S5 * * * * THE FOLLOWING WORDS AND EQUATES DETERMINE THOSE * STATUSES, COMMANDS, SIZES, ETC. THAT MIGHT * VARY BECAUSE OF DESIGN CHANGES * * CYCHK OCT 060000 CYCLIC CHECK COMMAND CYPP EQU D203 NUMBER OF CYLINDERS PER PACK DFTB EQU BIT8 DEFECTIVE TRACK BIT FOR ADDRESSES LCYL EQU 202 LAST CYLINDER PALT OCT 130000 ALTERNATE POSITION COMMAND POSIT OCT 030000 POSITION COMMAND READC EQU BIT13 READ COMMAND RFINE OCT 050000 SCPT EQU B30 NUMBER OF SECTORS PER TRACK WPCYL DEC 6144 WORDS PER CYLINDER (=TRPC*SCPT*WORDS PER * SECTOR (128 FOR HP 7900)) STATS EQU D0 STATUS COMMAND TRPC EQU D2 NUMBER OF TRACKS PER CYLINDER WRILB EQU BIT9 WRITE LOCKOUT BIT FOR ADDRESSES WRITA OCT 110000 WRITE ADDRESS COMMAND WRITC EQU BIT12 WRITE COMMAND * * BIT0 ANY ERROR BIT * BIT1 DATA ERROR BIT PBBIT EQU BIT2 DRIVE BUSY BIT FLBIT EQU BIT3 FLAGGED CYLINDER BIT * BIT4 ADDRESS ERROR BIT * BIT5 END OF CYLINDER BIT NRBIT EQU BIT6 NOT READY BIT * BIT7 NOT USED * BIT8 SEEK CHECK BIT * BIT9 ENABLE INITIALIZATION BIT * BIT10 SURFACE PROTECT BIT * BIT11 DRIVE UN]$SAFE BIT * BIT12 NOT USED * BIT13 OVERRUN ERROR BIT * BIT14 FIRST SEEK BIT * BIT15 NOT USED * * SCST EQU D8 SECTOR WHERE SECOND THIRD STARTS SCLT EQU D16 SECTOR WHERE LAST THIRD STARTS WCFT EQU BIT10+SZREF WORD COUNT FOR FIRST THIRD WCLT EQU BIT10+SZREF WORD COUNT FOR LAST THIRD * NFFB OCT 177777 HED RAND * * * * RANDOM NUMBER GENERATOR * * THIS ROUTINE GENERATES BIT PATTERNS FOR * THE DISK DIAGNOSTIC. NO CLAIM IS MADE FOR * STATISTICAL RANDOMNESS. * * EXITS WITH PATTERN IN A, * B UNCHANGED, * * * RAND NOP LDA BASE LOAD BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF STILL POSITIVE LDA BASE OOPS, BASE NOT BIG ENOUGH CLE,ELA DOUBLE BASE OR REMAINDER STA BASE FOR NEXT TRY JMP RAND,I * PRIME DEC -31069 * THIS PRIME NUMBER LOOPS EVERY * 31068 TIMES IN ITS RECIPROCAL * EXPANSION BASE ABS 034521B HED SEEK,SEES,SEEH,STAT,COMMD,DADO,WAITD * * * ROUTINES TO DO COMMONLY REQUIRED OPERATIONS. * * SEEK NOP LDB B44 CURRENT OPERATION CODE LDA CYL PUT CYLINDER NUMBER OUT BEFORE JSB DADO GIVING THE COMMAND LDA POSIT LOAD COMMAND FOR POSITION SEEK1 JSB COMMD ISSUE COMMAND JSB WAITD LDA HEAD IOR HDON SELECT SURFACE ALF,ALF HEAD NUMBER TO LEFT HALF IOR SECTR PLUG IN SECTOR NUMBER JSB DADO OUTPUT HEAD-SECTOR JSB WAITD JMP SEEK,I * * SEES NOP SEEH EQU SEES LDB B15 CURRENT OPERATION CODE LDA CYL LOAD CYLINDER NUMBER JSB DADO PUT OUT ON DATA CHANNEL LDA SEES STA SEEK LDA PALT LOAD ALTERNATE POSITION CԑOMMAND JMP SEEK1 * * STAT NOP STATUS CHECK ROUTINE LDA STATS LOAD THE DCU STATUS COMMAND DC23 STC DC,C SET UP DATA CHANNEL FOR INPUT LDB COPRN DON'T CHANGE CURRENT OPERATION JSB COMMD OUTPUT COMMAND NOP ALLOW SOME TIME CLA,INA DC15 SFS DC BACK YET? JSB TMR,I NO- DELAY 1 MS DC12 SFC DC STATUS SHOULD BE BACK JMP STABK AFTER 1 MS JSB PCOP PRINT CURRENT OPERATION MESSAGE E12 JSB ERROR NO DC FLAG WHILE CHECKING STATUS JSB ADDOI,I * FALLOUT OKAY STABK EQU * DC01 LIA DC AND NFFB STA STAUS SAVE STATUS JMP STAT,I RETURN STATUS IN A * * COMMD NOP IOR UNIT PLUG IN UNIT NUMBER CC01 OTA CC CC02 CLC CC MAKE SURE ENCODE IS ZERO CC03 STC CC,C NOW SET ENCODE STB COPRN SET UP CURRENT OPERATION NUMBER JMP COMMD,I * * DADO NOP DC02 OTA DC DC03 STC DC,C JMP DADO,I * * WAITD NOP WAIT ON DATA CHANNEL LDA MM16 ALLOW A SHORT COUNT WALP EQU * DC04 SFC DC JMP WAITD,I SSA,INA JMP WALP JSB PCOP PRINT CURRENT OPERATION MESSAGE DC13 SFS DC CHECK FOR FLAG NOW JMP E63 E11 JSB ERROR LATE DC FLAG JMP *+2 E63 JSB ERROR NO DC FLAG JSB ADDOI,I JMP WAITD,I HED WAITS,WAIH,WAIS * * THE WAITS ROUTINE WAITS FOR UP TO 105 MILLISECONDS * FOR THE COMMAND CHANNEL FLAG. WHEN THE FLAG SETS, * WAITS CALLS STAT FOR THE STATUS * WAITS NOP LDA MM105 WAX EQU * STA LCNT SET EXTRA CLOCK COUNTER WASD EQU * CLA,INA JSB TMR,I ONE MSEC TIME DELAY CC05 SFS CC SKIP IF SEEK DONE JMP WASQ CC15 LIA CC GET ATTENTION FOR POSSIBLE CHECK STA ATTN LDA LCNT CALCULATE ADA D106 TIME SPENT BEFORE FLAG SET, ADA SVCTA ADD TO A640CCUMULATED AMOUNT STA SVCTA AND SAVE IT JSB STAT CALL FOR STATUS JMP WAITS,I * WASQ EQU * ISZ LCNT SKIP WHEN TIMED OUT JMP WASD KEEP LOOPING JSB MC WIPE OUT THE CARDS JSB PCOP PRINT CURRENT OPERATION MESSAGE E10 JSB ERROR NO CC FLAG JSB ADDOI,I JMP WAITS,I RETURN * * * WAIH ALLOWS ENOUGH TIME FOR HEAD * SWITCHING TO OCCUR. * WAIH NOP LDA WAIH LOAD RETURN ADDRESS STA WAITS SAVE FOR RETURN LDA MM2 ALLOW TWO MILLISECONDS JMP WAX * * * WAIS ALLOWS TIME FOR SECTOR SWITCHING TO * OCCUR. * WAIS EQU WAIH HED FSEEK,FSEEH,FSEES * FSEEK,FSEEH,FSEES * PERFORM JSB SEEK OR SEEH * JSB WAITS OR WAIH * JSB WCHK * WITH EXPECTED STATUS = 0 * FSEEK NOP JSB SEEK PERFORM SEEK JSB WAITS WAIT FOR SEEK TO COMPLETE LDA ATTN CHECK ATTENTION JSB GETNI,I DETERMINE BIT NUMBER RSS OK SO FAR JMP *+3 ERROR - NONE SET CPB UNIT CORRECT UNIT JMP ATTEN OK JSB PCOP START ERROR REPORT LDA B21 STA ELOC JSB FPRNT E21 MISSING OR DUP. ATTENTION JSB ADDOI,I ATTEN EQU * FSK LDA SHTAS STA FSAVE SAVE STATUS-EXPECTED FOR OTHER CLA OPERATION STA SHTAS EXPECTED STATUS FOR SEEK IS 0 JSB WCHK CHECK STATUS LDA FSAVE STA SHTAS RESTORE EXPECTED STATUS JMP FSEEK,I FSEES EQU * FSEEH NOP JSB SEEH SWITCH HEADS JSB WAIH WAIT FOR HEADS TO SWITCH LDA FSEEH STA FSEEK JMP FSK =6   12960-18002 1805 S 0122 DIAG-7900/7901              H0101  HED PCOP,ERROR,B11CK,SWR,PRINT,PRNT1,FPRNT,CNVRT,TTYCK * PCOP NOP ROUTINE TO PRINT COPR LDA COPRN JMP PCOPI,I * * ERROR * REPORT ERROR MESSAGES * USES SIOLO,SWR,B11CK * THE RETURN ADDRESS IS USED TO LOOK UP THE ADDRESS,LENGTH AND * NUMBER OF THE ERROR MESSAGE * ERROR NOP CLF 0 DISABLE INTERRUPTS CCB ADB ERROR LDA EFER,I FIND ERROR NUMBER BASED ON RETRN ER2 EQU * CPB A,I ADDRESS AND TABLE JMP ER1 FOUND IT INA CPA ELER,I JMP 1777B PROGRAM ERROR,PAGE 0 MAY BE * WIPED OUT. JMP ER2 ER1 EQU * ADA EFERC,I ADA MM1 STA ELOC JSB FPRNT PRINT MESSAGE LDB ELOC ADB MM8 -8 SSB SKIP IF ERROR NUMBER GTR THAN 7 JSB ERHTI,I CHECK FOR HALT JMP ERROR,I * * B11CK * IF TTY SUPPRESSED,RETURN * IF TTY NOT SUPPRESSED,SKIP NEXT INSTRUCTION ON RETURN * USES SWR * B11CK NOP JSB SWR AND BIT11 SZA,RSS IS TTY SUPPRESSED? ISZ B11CK NO JMP B11CK,I * * SWR * INPUT SWITCH REGISTER TO A-REGISTER * SWR NOP LIA 1 IOR ISR CAPTURE ALL SWITCHES STA ISR WHICH ARE SET LIA 1 JMP SWR,I * * PRINT * A = ERROR NUMBER * PRINT NOP JSB PRNT1 GET ADDRESS AND LENGTH JMP PRINT,I TTY SUPPRESSED JSB SIOLO,I OUTPUT MESSAGE JMP PRINT,I * * PRNT1 * EXITS WITH B=MESSAGE ADDRESS * A=MESSAGE LENGTH * PRNT1 NOP STA PSAVE JSB B11CK JMP PRNT1,I ISZ PRNT1 LDB PSAVE ADB PFMI,I MESSAGE ADDRESS LDB B,I STB PSAVE SAVE ADDRESS CLA STA LOCAL LENGTH COUNTER * * SCAN MESSAGE UNTIL # * PLOOP EQU * LDA B,I NEXT TWO CHARACTERS CPA C1440 21440B = #,BLANK? JMP L1 YES AND B377 NO CPA B43 =#? JMP L2 YES ISZ LOCAL NO ISZ LOCAL ISZ B JMP PLOOP L2 EQU * ISZ LOCAL L1 EQU * LDB PSAVE ADDRESS LDA LOCAL LENGTH JMP PRNT1,I RETURN * * * FPRNT * OUTPUT TO FAST DEVICE IF CONFIGURED * FPRNT NOP LDB 113B IS FAST DEVICE SZB CONFIGURED? JMP FPR1 YES JSB PRINT OUTPUT TO SLOW DEVICE JMP FPRNT,I FPR1 EQU * JSB PRNT1 GET MESSAGE AND LENGTH JMP FPRNT,I TTY SUPPRESSED JSB SIOFO,I JMP FPRNT,I * * * CNVRT CLEARS E AND CALLS O2ASC * CNVRT NOP CLE JSB O2ASC,I JMP CNVRT,I * * TTYCK * RETURN IF TTY NOT AVAILABLE FOR NON-ERROR MESSAGES * INCREMENT RETURN ADDRESS IF PRINTOUT OK * TTYCK NOP JSB SWR LOAD SWITCH REGISTER AND B6000 SZA,RSS IS TTY AVAILABLE? ISZ TTYCK YES JMP TTYCK,I RETURN HED DECIN,DCIN1,DCIN2,SWR4 * * DECIN * CONVERTS DECIMAL INTEGERS TO ASCII * A=VALUE ON INPUT * CVT1 = MIDDLE TWO DIGITS ON EXIT * CVT2 = LAST TWO DIGITS ON EXIT * DECIN NOP CLE LDB CVT TEMPORARY STORAGE BUFFER JSB I2ASC,I JMP DECIN,I * * * DCIN1 * STORE ONE WORD OF CONVERTED A AT B * DCIN1 NOP STB LOCAL SAVE POINTER JSB DECIN CONVERT TO ASCII LDA CVT2 STORE STA LOCAL,I INTO MESSAGE JMP DCIN1,I * * DCIN2 * STORE TWO WORDS OF CONVERTED A STARTING AT B * DCIN2 NOP STB LOCAL SAVE POINTER JSB DECIN CONVERT TO ASCII LDA CVT1 STORE LDB LOCAL TWO STA B,I WORDS INB INTO LDA CVT2 MESSAGE STA B,I JMP DCIN2,I # * * * SWR4 * INPUT SWITCH REGISTER IF SFLAG = 0 (S1,S2,S3) * USE STORED VERSION IF SFLAG = 1 (S4,S5) * SWR4 NOP LDA SFLAG IS FLAG = O? SZA JMP SWR4A NO JSB SWR YES,USE SWITCH REGISTER JMP SWR4,I SWR4A LDA S400 USE ADA UNIT STORED LDA A,I VALUE JMP SWR4,I HED DCHK,WCHK * * * THE DCHK ROUTINE IS CALLED AFTER A READ. * IT COMPARES THE READ AND WRITE BUFFERS. * * THE WCHK ROUTINE IS CALLED AFTER A WRITE. * IT CHECKS ONLY THE STATUS. * THE WRERX AND WRERZ ENTRIES ARE USED BY THE * OTHER ROUTINES TO DO THEIR STATUS CHECK. * * * THE PCHK ROUTINE IS CALLED AFTER A READ. * IT COMPARES THE READ BUFFER TO A PATTERN WORD. * * THE RCHK ROUTINE IS CALLED AFTER A READ. * IT CHECKS THE CHECKSUMMED SECTOR IN * THE READ BUFFER. * * THEY COMPARE THE CURRENT STATUS ( STAUS ) WITH THE * PREDICTED STATUS ( SHTAS ) BY CALLING THE ERRAN ROUTINE. * * * THE ROUTINES GIVE A NORMAL RETURN IF NO ERRORS ARE * DETECTED. IF AN ERROR OCCURS, THE ROUTINES GENERATE AN * ERROR MESSAGE AND CHECK FOR HALT OR CONTINUE. * * DCHK NOP TO CHECK FOR ERRORS IN * READ AND TO COMPARE READ * AND WRITE BUFFERS LDA DCHK LOAD RETURN ADDRESS STA WCHK SAVE FOR POSSIBLE CALL * * * COMPARES THE BUFAD AND BUFAE BUFFERS USING WCNT * FOR BUFFER LENGTH. * * LDA BUFAD LOAD FIRST BUFFER ADDRESS STA TEMP1 LDA BUFAE LOAD SECOND BUFFER ADDRESS STA TEMP2 LDA WCNT CMA,INA STA TEMP3 SET ISZ COUNTER DCM EQU * LDA TEMP1,I CPA TEMP2,I JMP DCL EQUAL COMPARE * LDA TEMP3 ADA WCNT GENERATE RELATIVE LOCATION EE101 LDB P047A LOAD POINTER JSB DCIN2 CALL CONVERT ROU TINE LDA TEMP1,I LOAD WHAT WORD SHOULD BE LDB P047C LOAD POINTER JSB CNVRT CALL CONVERT AND MOVE ROUTINE LDA TEMP2,I LOAD WHAT WORD ACTUALLY WAS LDB P047B LOAD POINTER JSB CNVRT CONVERT TO ASCII LDA NUMP DECREMENT ADA MM1 PRINTOUT COUNT SZA,RSS JMP DCLA IF 1 LEAVE AT 1 AND EXIT STA NUMP E47 JSB ERROR DATA WORD XXXX IS YYYYYY SHOULD * BE ZZZZZZ JMP DCL DCLA EQU * LDB B47 DATA WORD XXXX IS YYYYYY SHOULD * BE ZZZZZZ STB ELOC SAVE FOR ERHLT STB STRF JMP WRERZ GO ANALYZE ERRORS * * DCL EQU * ISZ TEMP1 COUNT UP BUFFER ISZ TEMP2 ADDRESSES AND ISZ TEMP3 CHECK FOR COMPLETION JMP DCM JMP WRERX BUFFERS OKAY, NORMAL STATUS CHECK SKP * * WCHK NOP TO CHECK FOR ERRORS ON * NON-READ OPERATIONS WRERX EQU * JSB ERRAN CALL ERROR COMPARITOR SZA SKIP IF NO ERROR JMP WRERZ REPORT ERROR LDA DMRF CHECK FOR DMA NOT FINISHED SZA,RSS SKIP IF ERROR JMP WOUT RETURN IF NO TROUBLE JSB PCOP PRINT CURRENT OPERATION MESSAGE JSB DMERQ PRINT DMA ERROR MESSAGE WROUT JSB ADDOI,I WOUT JMP WCHK,I RETURN * * WRERZ EQU * JSB PCOP PRINT CURRENT OPERATION MESSAGE JSB DMERQ CHECK FOR DMA ERROR JSB ERRAN CHECK FOR STATUS ERRORS SZA SKIP IF STATUS OKAY JSB FPRNT PRINT OUT ERROR MESSAGE LDA STRF CHECK FOR BUFFER ERRORS SZA SKIP IF NO SUCH ERRORS JSB FPRNT PRINT OUT ERROR MESSAGE CLB STB STRF CLEAR OUT POINTER WORD JMP WROUT HED ERRAN ERRAN NOP ROUTINE TO PERFORM ERROR ANAL. LDA STAUS XOR SHTAS IS ALL AS SHOULD BE  SZA,RSS JMP ERRAN,I EVERYTHING IS FINE LDA STAUS LOAD CURRENT STATUS LDB P064A AND ADDRESS FOR ASCII JSB CNVRT CONVERT TO OCTAL AND MOVE LDA SHTAS LOAD WHAT STATUS SHOULD BE LDB P064B AND ADDRESS FOR ASCII JSB CNVRT CONVERT TO OCTAL AND MOVE E64 LDA B64 STATUS IS XXXXXX SHOULD BE XXXXXX STA ELOC SAVE FOR ERHLT * A MUST BE NON-ZERO AT THIS POINT JMP ERRAN,I RETURN HED DGEN,RFNE,CYCK,DMRFC,ENDST * DGEN * THIS ROUTINE FILLS UP THE BUFFER WITH RAW RANDOM DATA * USES WCNT AS A LENGTH * USES BUFAD FOR ADDRESS * * DGEN NOP LDA WCNT CMA,INA STA TEMP1 NEGATIVE WORD COUNT LDA BUFAD STA TEMP2 DGL EQU * JSB RAND GET RANDOM NUMBER STA TEMP2,I ISZ TEMP2 COUNT UP ADDRESS ISZ TEMP1 COUNT JMP DGL JMP DGEN,I * * RFNE * ISSUE REFINE COMMAND * RFNE NOP LDB B60 SET UP CURRENT OPERATION LDA RFINE REFINE COMMAND JSB COMMD ISSUE COMMAND JSB WAITS WAIT FOR COMPLETION JMP RFNE,I RETURN * * CYCK * ISSUE CYCLIC CHECK COMMAND * CYCK NOP LDB B22 SET UP CURRENT OPERATION JSB DADO A = NUMBER OF SECTORS ON ENTRY LDA CYCHK CYCLIC CHECK COMMAND JSB COMMD ISSUE COMMAND JSB WAITS WAIT FOR COMPLETION JMP CYCK,I RETURN * * DMRFC * REMOVE BIT 15 FROM DMRF * DMRFC NOP LDA DMRF AND H7777 =77777B STA DMRF JMP DMRFC,I * * ENDST * END OF STEP ROUTINE * ENDST NOP JSB SWR GET SWITCH REGISTER SSA HLT 4 HALT IF BIT 15 SET JSB SWR GET FRESH COPY OF SWITCH REG. AND BIT1 SZA JMP END1 SKIP JSB SWR AND BIT13 SZA,RSS JMP ENDST,I JMP PCCOPR,I LOOP IF BIT 13 SET END1 EQU * LDA STEPN INCREMENT CPA D51 S4BUG RSS FOR STEPS CPA D52 51 AND ISZ S4BUG 52 JMP SKIPI,I HED DMR,DMW,DMALL * * * THESE ROUTINES SET UP DMA AND START THE DATA CHANNEL. * * THE DMR ROUTINE SETS UP A READ INTO THE INPUT * BUFFER ( ADDRESS IN BUFAE, COUNT IN WCNT ) * * THE DMW ROUTINE SETS UP A WRITE FROM THE OUTPUT * BUFFER ( ADDRESS IN BUFAD, COUNT IN WCNT ) * * DMR NOP SET UP DMA READ OPERATION JMP DMRI,I DMRI DEF DMRR * * DMW NOP JMP DMWI,I DMWI DEF DMWW * DMALL NOP (A = MEMORY ADDRESS) LDB DMACW LOAD DMA COMMAND WORD DM6A OTB DMAD SEND TO DATA CHANNEL DM2A CLC DMAC PREPARE TO LOAD ADDRESS DM2B OTA DMAC OUTPUT MEMORY ADDRESS DM2C STC DMAC PREPARE TO LOAD COUNT LDA WCNT AND CMA,INA OUTPUT TWOS COMPLEMENT OF DM2D OTA DMAC WORD COUNT JMP DMALL,I HED READ,WRITE * * * READ AND WRITE * * THESE ROUTINES ARE CALLED TO INITIALIZE ALL * DMA TRANSFERS TO AND FROM THE DISK. * * THEY ASSUME THAT * THE WORD COUNT IS IN WCNT * READ ASSUMES BUFFER ADDRESS IN BUFAE * WRITE ASSUMES BUFFER ADDRESS IN BUFAD * * READ NOP JSB DMR SET UP DMA READ OPERATION LDB B46 SET UP CURRENT OPERATION LDA READC LOAD READ COMMAND JSB COMMD OUTPUT COMMAND JSB DMAT JSB STAT GET STATUS JMP READ,I RETURN * * * WRITE NOP JSB DMW SET UP DMA WRITE OPERATION LDB B45 SET UP CURRENT OPERATION LDA WRITC LOAD WRITE COMMAND JSB COMMD OUTPUT COMMAND JSB DMAT JSB STAT GET STATUS JMP WRITE,I HED DMAT * * * * THIS SECTION SHOULD BE CALLED FOR EACH TRANSFER USING THE * DMA. IT CONTINUOUSLY CHECKS FOR THE FLAG TO BE SET ON THE * COMMAND CHANNEL WHILE MONITORING THE DATA TRANSFER AND * CHECKING FOR OVERTIME. * * * DMAT NOP LDA MM650 ALLOW 650 MSEC WORST CASE STA LCNT SET EXTRA CLOCK LDA DMSP WILL THIS DMA TRANSFER SZA,RSS BE INTERRUPTED? JMP DMSL NO DM2I LIA DMAC LOAD CURRENT WORD COUNT STA TEMP1 AND SAVE IT FOR COMPARISON LDB BIT15 ALLOWS LOTS OF TIME DMBL EQU * INB SZB,RSS WAITED LONG ENOUGH? JMP DMSP YES DM2J LIA DMAC LOAD CURRENT WORD COUNT CPA TEMP1 CHECK FOR START OF OPERATION JMP DMBL IF OPERATION HAS NOT STARTED DATA * * THIS LOCATION IS USED BY ROUTINES THAT * MUST INTERRUPT THE DMA TRANSFER. DMSP NOP *** * DMSL EQU * RUNS AROUND CHECKING FOR END * OF OPERATION FLAG. * TIMES OUT WHEN LCNT GOES POSITIVE CLA,INA JSB TMR,I DELAY FOR ONE MSEC ISZ LCNT CLA,RSS JMP TOUT TIME OUT CC04 SFS CC JMP DMSL NO FLAG YET. DM6G SFC DMAD SKIP IF DMA NOT DONE JMP DMAT,I EVERYTHING IS ALRIGHT JMP FTCX CALL WORD COUNT CONVERTER * TOUT EQU * CLA,INA DM6H SFS DMAD CHECK FOR FLAG ON DMA CHANNEL FTCX EQU * IOR BIT15 TRANSFER NOT COMPLETE BIT STA DMRF SAVE FOR LATER CHECK JSB MC TROUBLE. BOMB OUT CARDS DM2K LIA DMAC LOAD CURRENT WORD COUNT SZA,RSS RESIDUE = 0? JMP DMATA YES-DISABLE E13,CHECK FOR E43 ADA WCNT MAKE INTO POSITIVE WORD COUNT AND B7777 MASK OFF UPPER THREE BITS LDB P013A LOAD POINTER FOR ASCII STORE JSB DCIN2 CALL CONVERT ROUTINE JMP DMAT,I RETURN AND WAIT FOR VERDICT DMATA EQU * LDA DMRF SSA XOR PALT =130000B - BIT 15 -5OFF,BIT 13 ON STA DMRF JMP DMAT,I * * MC NOP MASTER CLEAR DM6E CLC DMAD DM6F STF DMAD KILL DMA TRANSFER CC06 CLC CC DC11 CLC DC DC22 STF DC JMP MC,I * * DMERQ NOP LDB DMRF CHECK FOR ACTUAL ERROR SZB,RSS SKIP IF ERROR CONDITION EXISTS JMP DMERQ,I EXIT IF NO ERROR SLB SKIP IF NOT TIME OUT E14 JSB ERROR NO COMMAND FLAG ON DMA OPERATION LDB DMRF RBL,RBL SSB SKIP IF BIT 13 = 0 E43 JSB ERROR DMA MISSING LDB DMRF CLA STA DMRF CLEAR ERROR INDICATOR SSB,RSS SKIP IF DMA FLAG WAS NOT SET JMP DMERQ,I RETURN * LDA WCNT LOAD THE EXPECTED WORD COUNT LDB P013B LOAD POINTER FOR ASCII STORE JSB DCIN2 CALL CONVERT ROUTINE E13 JSB ERROR XXXX WORDS TRANSFERRED YYYY * EXPECTED JMP DMERQ,I RETURN HED CHAR,DCHAR,OCHAR,HIN,H31 * * * CHAR * GET NEXT NON-BLANK CHARACTER * WONT SKIP IF BUFFER EMPTY * CHAR NOP CHAR1 ISZ CCNT DONE? PPT3 RSS NO JMP CHAR,I YES LDA BPTRA,I TTY WORD ISZ IFRST JMP SEC ALF,ALF USE LEFT HALF JMP COUT SEC CCB USE RIGHT HALF STB IFRST ISZ BPTRA BUMP WORD POINTER COUT AND B377 STA CCHAR SAVE IT XOR B40 IS IT BLANK SZA,RSS SKIP IF NO JMP CHAR1 IGNORE BLANKS LDA CCHAR ISZ CHAR JMP CHAR,I * * * DCHAR * GET DECIMAL VALUE * SKIPS ON EXIT IF NOT DONE * DCHAR NOP LDA MM58 UPPER LIMIT LDB VAL POINTS TO VALUE DCHR1 STA VAL2 STB VAL1 LDA MM1 STA DFLT DFLT = -1 CLA INITIALIZE TO ZERO DCHR2 STA VALUE STORE VALUE JSB CHAR GET NEXT CHARACTER JMP DOUT2 DONE XOR B54 IS CHARACTER SZA,RSS A COMMA JMP DOUT1 YES,DONE LDA VAL2 CHECK ADA CCHAR VALIDITY SSA OF JMP *+3 CHARACTER CCERR JSB H31 BAD INPUT JMP DOUT2 LDA CCHAR ADA MM48 LOWER LIMIT SSA JMP CCERR STA DFLT DFLT # -1 LDB VALUE OK,BUILD BLF,RBR UP ADB VAL1,I VALUE ADB VAL1,I ADA B JMP DCHR2 CONTINUE DOUT1 ISZ DCHAR NORMAL EXIT DOUT2 LDA VALUE ERROR OR END OF READ BUFFER JMP DCHAR,I * * * OCHAR * GET OCTAL VALUE * SKIPS ON EXIT IF NOT DONE * OCHAR NOP LDA OCHAR STA DCHAR SET RETURN LDA MM56 UPPER LIMIT LDB DDD POINTS TO D0 JMP DCHR1 * * * HIN * INPUT FROM TTY * HIN NOP LDA D72 CHARACTER COUNT LDB BINA BUFFER ADDRESS JSB 104B,I TTY INPUT DRIVER SZA,RSS WERE ZERO WORDS INPUT? JMP HIN+1 YES,TRY AGAIN CMA STA CCNT SAVE CHARACTER COUNT CCA STA IFRST FLAG = -1 LDA BINA STA BPTRA SET POINTER JMP HIN,I BINA DEF BUFB * * H31 NOP LDA B31 BAD INPUT JSB PRINT JMP H31,I * HED OVJ,ASK OVIJS JMP OVJ OVJ EQU * LDA C0001 OVBIT+AEBIT 020001 STA SHTAS WHAT STATUS SHOULD BE CLA STA DMSP SET BACK TO NO-OP LDA M256 ALLOW A SHORT WAIT FOR THE FLAG OVJR EQU * SSA,INA,RSS DON'T HANG FOREVER JMP OVJX PRETEND FLAG SET DM6I SFS DMAD SKIP WHEN DMA DONE JMP OVJR BACK IF NOT DONE JSB DADO OUTPUT ONE EXTRA WORD . . . LATE OVJX EQU * JMP DMSL * * ASK * ASK OPERATOR IF HE WISHES TO CHANGE TABLE * ASK NOP H25 LDA B25 DO YOU WISH TO CHANGE TABLE? JSB PRINT JSB HIN INPUT FROM KEYBOARD LDA m<:6BINA,I INPUT BUFFER AND P7400 XOR NN =47000B IS FIRST CHARACTER N? SZA,RSS SKIP IF NO JMP ASK,I XOR YY =13400B IS FIRST CHARACTER Y? SZA JMP H25 TRY AGAIN ISZ ASK JMP ASK,I ORG 1777B DONE NOP ALLOW JUMP FROM ANY PAGE <  12960-18003 1805 S 0122 DIAG-7900/7901              H0101  HED START ORG 2000B * START * INITIALIZES PROGRAM AND STUFFS HALTS INTO LOW CORE * START CLC 0,C TURN EVERYTHING OFF LDA 106B LAST WORD OF AVAILABLE MEMROY STA LWAM STORE IT IN LWAM JSB TTYCK IS TTY AVAILABLE? JMP AGAIN NO CLA H0 JSB PRINT CARTRIDGE DISK MEMORY DIAGNOSTIC AGAIN EQU * LDB D2 TRAP CELL LOCATION LDA THLT2 TRAP CELL HALT OLP STA B,I INB INA CPB B100 TRAP CELL HALTS COMPLETE? RSS YES JMP OLP NO,REPEAT * CLA STA DMSP SET WORD TO NO-OP STA PASS RESTART STA WCNT STA CYL STA HEAD STA SECTR STA S4BUG LDA BPTR STA BUFAD INITIALIZE BUFAD CLA,INA STA NI LDA MM1 STA NFFB RESET STATUS MASK LDA UNITA STA UNIT UNIT = UNIT TABLE(0) BGN EQU * CLA STA ISR ZERO SWITCH REGISTER SUMMARY STA ERR ZERO NUMBER OF ERRORS STA STEPN STEP NUMBER = 0 CLA,INA A _ 1 LDB MDFLG RESET NI CPB B14 IF MULTI-DRIVE CONDITION STA NI IS TRUE STA SECTN START WITH SECTION ONE LDA D3 STA MDFLG LDA UNIT STUFF ADA ASCZZ UNIT INTO STA P065E,I PASS MESSAGE * H35 LDA B35 INITIAL STATUS STA COPRN LDA DC14 DATA CHANNEL JSB CNVS LDA CC7 COMMAND CHANNEL JSB CNVS CLB STB LOCAL ISZ LOCAL DELAY,ALLOW FOR JMP *-1 SWITCH THREE TO BE SET LDA UNIT SAVE STA GLOB4 UNIT NUMBER CLA STA SHTAS * * CLEAR ATTENTION INITIALLY ON ALL DRIVES THAT ARE ONLINE * STA UNIT INST1 EQU * LDA M1024 SET UP FOR 1024 MSEC DELAY STA LCNT INST3 CLA,INA DELAY 1 MSEC JSB TMR,I ISZ LCNT6^ DONE? RSS NO JMP INST5 YES - GIVE UP JSB STAT GET STATUS AND B104 NRBIT + PBBIT 000104 CPA PBBIT IS UNIT READY AND BUSY? JMP INST3 YES - WAIT INST5 ISZ UNIT NO - CONTINUE LDA UNIT CPA D4 DONE WITH ALL UNITS? CLA,RSS YES JMP INST1 NO - CONTINUE HLP2 EQU * STA UNIT SET UP UNIT NUMBER JSB STAT GET STATUS AND NRBIT IS THIS UNIT READY? SZA SKIP IF YES JMP HLP3 NO JSB SEEK ISSUE SEEK JSB WAITS TO CLEAR ANY SEEK PROBLEMS JMP HLP1 HLP3 EQU * JSB SEEH CLEAR STATUS BITS THAT JSB WAIH LATCH HLP1 LDA UNIT INCREMENT INA UNIT NUMBER CPA D4 DONE? RSS YES JMP HLP2 NO,CONTINUE LDA GLOB4 STA UNIT SCALR EQU * SECTION CALLER LDA HDON SAVE STA GLOB2 HEAD ASSIGNMENT SCAL1 EQU * * CLA STA STEPN STEP NUMBER = 0 LDA B35 STA COPRN INITIAL STATUS JSB SW2 TEST BIT 2 , RETURN IF SET CTD EQU * PREPARE CYLINDER TABLE LDA P024A INITIALIZE STA CPNT POINTER LDA MM10 -10 STA CSAVE CLOOP ADA TRT CYLINDER TABLE POINTER LDA A,I JSB DECIN CONVERT NUMBER LDA CVT1 USE RIGHT AND B377 CHARACTER ALF,ALF OF LDB A CVT1 LDA CVT2 AND AND P7400 LEFT ALF,ALF CHARACTER IOR B OF CVT2 STA CPNT,I FOR FIRST ISZ CPNT WORD LDA CVT2 USE AND B377 RIGHT ALF,ALF CHARACTER IOR B54 OF CVT2 STA CPNT,I AND ISZ CPNT ASCII COMMA ISZ CSAVE FOR LDA CSAVE SECOND WORD SSA  JMP CLOOP LDB P024A REMOVE ADB D19 LAST LDA B,I COMMA AND P7400 IOR B40 STA B,I H24 LDA B24 CYLINDER TABLE CONTENTS JSB PRINT JSB ASK WISH TO CHANGE? JMP PAT NO H26 LDA B26 YES,ENTER CYLINDER NUMBERS * SEPARATED BY COMMAS JSB PRINT JSB HIN INPUT FROM KEYBOARD CTS JSB DCHAR GET DECIMAL VALUE JMP CTS1 ERROR OR DONE? JSB CSTR STORE IN TABLE JMP CTS CONTINUE CTS1 LDA CCNT SZA,RSS SKIP IF ERROR JSB CSTR DONE JMP CTD PAT EQU * JSB SW2 TEST BIT 2 , RETURN IF SET PAT1 LDA MM1 TWO LINES WILL BE USED STA PCNTA LDA PATR ADDRESS ADA MM10 OF FIRST STA PLOAD PATTERN LDA P027A ADDRESS STA PSTOR OF MESSAGE PC LDA MM5 FIVE PATTERNS PER LINE STA PCNT PB LDB PSTOR LDA PLOAD,I JSB CNVRT CONVERT TO ASCII ISZ PLOAD LDB PSTOR ADB D3 LDA BB TWO ASCII BLANKS STA B,I INB STB PSTOR ISZ PCNT HAVE WE DONE 5 YET? JMP PB NO ISZ PCNTA YES,HAVE WE DONE TEN? JMP PATT1 YES LDA CRLF 06412 STA PSTOR,I ISZ PSTOR JMP PC PATT1 EQU * H27 LDA B27 PATTERN TABLE CONTENTS JSB PRINT JSB ASK WISH TO CHANGE? JMP HD NO H30 LDA B30 YES,ENTER PATTERN NUMBERS * SEPARATED BY COMMAS JSB PRINT JSB HIN INPUT FROM KEYBOARD PTS JSB OCHAR GET OCTAL VALUE JMP PTS1 ERROR OR DONE? JSB PSTR STORE IN TABLE JMP PTS CONTINUE PTS1 LDA CCNT SZA,RSS SKIP IF ERROR JSB PSTR DONE JMP PAT1 HD EQU * JSB SW2 TEST BIT 2 , RETURN IF SET HD3 LDA B62 CHOOSE HEAD MODE;A=0,1;B=2,3 * C=0,1 THEN 2,3 H62 JSB PRINT JSB HIN CLA STA HFLAG LDA BINA,I AND P7400 XOR HA =40400 SZA,RSS JMP HD1 XOR HB =1400 SZA,RSS JMP HD2 XOR HC =400 SZA JMP HD3 CLA,INA STA HFLAG HD1 CLA,RSS HD2 LDA D2 STA HDON JSB SW2 TEST BIT 2 , RETURN IF SET MAX2 LDA MAX SET LDB P023A UP INB MESSAGE JSB DCIN2 LDA CVT3 STA P023A,I LDA B23 H23 JSB PRINT XXXXXX ERRORS/PASS ALLOWED JSB ASK WISH TO CHANGE? JMP MAX3 NO MAX1 LDA B32 H32 JSB PRINT ENTER ERRORS/PASS JSB HIN JSB DCHAR RSS ERROR OR DONE? JMP MAX1 MUST BE DONE LDB CCNT SZA MAX MAY NOT BE ZERO SZB SKIP IF DONE JMP MAX1 ERROR STA MAX JMP MAX2 MAX3 EQU * JSB SW2 TEST BIT 2 , RETURN IF SET * PREPARE UNIT TABLE * LDA UNITC NUMBER OF UNITS LDB P037A JSB DCIN1 DEPOSIT IN MESSAGE LDA UNITC CMA,INA STA CSAVE LDB P037B LDA UNITS STA CPNT PUNA LDA CPNT,I GET UNIT ADA B2060 BLANK,0 STA B,I STORE IN MESSAGE INB ISZ CPNT ISZ CSAVE DONE? JMP PUNA NO LDA C1440 #,BLANK STA B,I LDA B37 H37 JSB PRINT UNIT TABLE/X DRIVE(S);A,B... JSB ASK WISH TO CHANGE? JMP H34H NO H34 LDA B34 ENTER UNIT NUMBER(0-3) SEPARATED * BY COMMAS JSB PRINT JSB HIN INPUT FROM KEYBOARD CLA STA UNITC NUMBER OF UNITS = 0 LDA UNITS STA GLOB3 POINTER FOR UNIT NUMBERS H34A JSB OCHAR GET CHARACTER JMP H34B ERROR OR DONE JSB H34G STORE AND CHECK ISZ GLOB3 BUMP POINTER LDA UNITC PROCESS FIRST CPA D4 FOUR ONLY JMP H34D DONE JMP H34A CONTINUE H34B LDB CCNT DONE OR ERROR? SZB JMP H34 ERROR (ALREADY REPORTED) JSB H34G STORE AND CHECK H34D EQU * LDA UNITC SET CMA,INA UP NUMBER STA FL6 OF UNITS CLA ZERO STA SHTAS EXPECTED STATUS LDA UNITS SET STA GLOB4 UP POINTER H34F EQU * LDA GLOB4,I LOAD UNIT NUMBER STA UNIT IOR B2060 STA PO72A,I JSB STAT GET STATUS AND NRBIT IS NOT READY BIT SET? SZA SKIP IF NO JSB WCHK YES,PRINT ERROR LDA STAUS AND PBBIT IF NOT ONLINE SZA SKIP IF NO E72 JSB ERROR UNIT X NOT READY ISZ GLOB4 NEXT UNIT NUMBER ISZ FL6 DONE? JMP H34F NO,CONTINUE LDA UNITA SWITCH NUMBER STA UNIT ADA ASCZZ SET UP STA P065E,I PASS MESSAGE JMP MAX3 H34H EQU * JMP SCAL1 CONTINUE H34G NOP ISZ UNITC BUMP COUNT STA GLOB3,I STORE UNIT NUMBER ADA MM4 TEST SSA RANGE 0 LEQ X LEQ 3 JMP H34G,I OK,RETURN JSB H31 BAD INPUT JMP H34 TRY AGAIN SW2 NOP JSB SWR AND BIT2 IS BIT 2 SET? SZA BRANCH IF NO JMP SW2,I LDA GLOB2 DID HEAD ASSIGNMENT CPA HDON CHANGE? RSS NO JMP BGN YES - CLEAR LATCHED STATUS BITS JSB SWR AND BIT3 SZA IS BIT 3 SET? JMP OPDNI,I YES * * CHECK TO SEE UNIT IS PRESENT * JSB STAT IS UNIT AND NRBIT PRESENT? SZA,RSS JMP UD1 YES LDA UNIT NO ^=STA GLOB1 ADA B2060 STA P050A,I SET UP FIRST PART OF MESSAGE LDA P050B STA GLOB2 LDA NRBIT STA GLOB3 CLA UD2 EQU * STA UNIT CPA GLOB1 LOOK AT ALL OTHER UNITS JMP UD3 NO - SAME UNIT JSB STAT IS THIS AND NRBIT UNIT PRESENT? LDB MM16 SZA,RSS LDB UNIT YES AND GLOB3 STA GLOB3 ADB B2060 B = BLANK,BLANK OR BLANK,UNIT # STB GLOB2,I SET UP LAST PART ISZ GLOB2 OF MESSAGE UD3 EQU * CLA,INA ADA UNIT CPA D4 DONE? RSS YES JMP UD2 CONTINUE LDA GLOB3 LDB BB BLANK,BLANK SZA,RSS LDB C1440 #,BLANK STB GLOB2,I E50 JSB ERROR E50 UNIT MISSING - PRESENT ... LDA PASS SZA JMP UD4 DONT HALT IF PASS <> 0 HLT 6 JMP START UD4 EQU * LDA GLOB1 STA UNIT UD1 EQU * LDA SECTN LOAD SECTION NUMBER ADA SECT ADD ON POINTER JMP A,I CALL SECTION SKIP EQU * LDA HLTC =102010 IOR SECTN SECTION NUMBER STA SHLT HALT BETWEEN SECTIONS JSB SWR CHECK FOR HALT AT END OF SECTION AND BIT9 SZA SHLT NOP JSB SWR CHECK FOR TEST REPEAT AND BIT7 SZA SKIP IF NO REPEAT JMP SCALR REPEAT LAST TEST THRU EQU * ENTRY POINT FROM SECTION 5 LDB SECTN COUNT UP SECTION NUMBER INB STB SECTN CPB D6 FIVE SECTIONS CLA,INA,RSS JMP SCALR ADA PASS INCREMENT PASS NUMBER STA PASS LDA ERR SZA,RSS JMP PS1 JSB SWR AND A2400 CPA A2400 BOTH SET? JMP PS2 YES PS1 EQU * JSB TTYCK JMP ECHOS PS2 EQU * LDA PASS LDB P065A CONVERT PASS JSB DCIN2 NUMBER z LDA ERR LDB P065B CONVERT NUMBER JSB DCIN2 OF ERRORS LDA MM3 STA TEMP1 LDB LONG LDA ISR AND B142 SZA SKIP IF LONG PASS LDB SHORT STB LOCAL LDB P065A ADB MM4 LPASS EQU * LDA LOCAL,I MOVE STRING STA B,I INTO ADB MM1 MESSAGE ISZ LOCAL ISZ TEMP1 JMP LPASS LDB P065B CHECK ADB D5 FOR LDA B,I MULTI-DRIVE AND MM16 =177760B IOR MDFLG STA B,I LDA B65 H65 JSB PRINT PASS XXXX ECHOS JMP BGN RUN TEST OVER SKP FRSTA DEF *+1 DEF CH1 DEF CH2 DEF CH3 DEF CH4 DEF CH5 DEF CH6 DEF CH7 DEF CH8 DEF CH9 DEF CH10 DEF CH13 DEF CH15 LASTA DEF *-1 * * CNVS * CONVERT CHANNEL NUMBER TO ASCII AND STORE IN * MESSAGES M2 THROUGH M7. INITIALIZE CH1 * THROUGH CH13 TO CHANNEL SELECT CODE * CNVS NOP STA LOCAL SAVE SELECT CODE LDB CVT TEMPORARY STORAGE BUFFER JSB CNVRT CONVERT TO OCTAL LDA WD3 GET LEAST SIGNIFICANT PART STA P002A,I STORE STA P003A,I INTO STA P004A,I MESSAGES STA P005A,I STA P057A,I LDB FRSTA STB GLOB2 SAVE FIRST POINTER CLB LDB GLOB2,I LOAD POINTER LDA B,I LOAD WORD AND P7700 MASK OUT SELECT CODE IOR LOCAL STUFF IN NEW SELECT CODE STA B,I STORE BACK CPB LASTA,I DONE? JMP CTEST YES ISZ GLOB2 JMP CLB * * * CTEST * TEST CHANNEL * CTEST EQU * CLC 0,C INITIALIZE I/O SYSTEM LDA M1024 PUT ILLEGAL DISC CH15 OTA CH COMMAND IN A CH1 CLF CH CLEAR CHANNEL FLAG CH2 SFS CH RSS E2 JSB ERROR CLF OR SFS FAILED ON CHANNEL X CH3 CLF CH TRY AG_AIN CH4 SFC CH E3 JSB ERROR SFC FAILED WITH FLAG CLEAR-CH. X CH5 STF CH CH6 SFC CH RSS E4 JSB ERROR STF OR SFC FAILED ON CHANNEL X CH7 STF CH TRY AGAIN CH8 SFS CH E5 JSB ERROR SFS FAILED WITH FLAG SET - CH. X * * SCREEN TEST * LDA B10 START AT SELECT CODE 10 C1 STA GLOB3 CPA CH13 SAME AS THIS SELECT CODE? JMP C2 YES - SKIP TEST IOR STF0 NO - SET UP STF X STA C3 CH9 CLF CH CLEAR CH C3 STF CH STF X CH10 SFS CH SKIP CH JMP C2 OK E57 JSB ERROR SCREEN TEST ERROR JSB ERHTI,I HALT? C2 EQU * LDA GLOB3 INA CPA B100 DONE? RSS YES JMP C1 NO * TEST INTERRUPT CAPABILITY * LDA CH13 EXIT IF DATA CHANNEL CPA DC14 JMP CNVS,I LDA CH13,I STA GLOB1 LDA JSB1 SET UP INTERRUPT TRAP CELL STA CH13,I LDA JE6 CC16 STC CC SET CHANNEL TO REQUEST CC17 STF CC AN INTERRUPT STF0 STF 0 ENABLE INTERRUPTS STC 1 * INTERRUPTS STF 1 SHOULD CLC 1 BE CLF 1 DELAYED JMP *+1,I UNTIL DEF *+1 . JSB *+1,I . DEF *+1 . NOP . INTPT NOP * HERE E6 JSB ERROR NO INTERRUPT ON CHANNEL X JMP CC18 RETRN NOP INTERRUPT SUBROUTINE CLF 0 DISABLE INTERRUPTS LDA GLOB1 TRAP CELL HALT STA CH13,I STF 0 TEST INTERRUPT ACKNOWLEDGE NOP * SHOULD NOT NOP INTERRUPT HERE CLF 0 DISABLE INTERRUPTS LDA RETRN DID INTERRUPT OCCUR AT THE CPA ADDRS CORRECT MEMORY LOCATION RSS E7 JSB ERROR INCORRECT RETURN ADDRESS - CH. X CC18 STC CC SET CONTROL CC19 STF CC CLC 0 SHOULD CLEAR ALL CON&TROL BITS STF 0 ENABLE INTERRUPTS NOP ** SHOULD NOT INTERRUPT NOP HERE CLC 0 TURN EVERYTHING OFF LDA GLOB1 STA CH13,I * CLF 0 JMP CNVS,I YES HED WADR,DGEN1,CSTR,PSTR * * WADR * USE DMA TO WRITE ADDRESSES ON THE DISC * WADR NOP JSB FSEEH RESET RAR LDA WPCYL STA WCNT SET UP WORD COUNT JSB WADRI,I WRITE ADDRESS JSB WCHK CHECK FOR ERRORS JMP WADR,I EXIT * * DGEN1 * LIMIT WORD COUNT TO 1024. * DGEN1 NOP STA WRSP LDA D1024 STA WCNT WCNT = 1024 JSB DGEN FILL WRITE BUFFER WITH RANDOM JMP DGEN1,I DATA * CSTR NOP LDA TRT CSTR1 STA CPONT SET POINTER ADA MM2 PUSH CYLINDER STA CLOAD TABLE INA DOWN ONE STA CSTOR AND MOVE LDA CLOAD,I PLACE STA CSTOR,I NEW LDA CLOAD ENTRY STA CSTOR ON ADA MM1 TOP STA CLOAD ADA D11 CPA CPONT RSS JMP MOVE LDA VALUE STA CSTOR,I JMP CSTR,I * PSTR NOP LDA PSTR STA CSTR SET UP RETURN LDA PATR JMP CSTR1 HED FCYCK,WEND,SEND,DEND * FCYCK * PERFORM COMPLETE CYCLIC CHECK OPERATION,INCLUDING SEEK. * A = NUMBER OF SECTORS ON ENTRY. * FCYCK NOP STA WCNT SAVE NUMBER OF SECTORS JSB FSEEK SEEK LDA WCNT JSB CYCK ISSUE CYCLIC CHECK JSB WCHK CHECK STATUS JMP FCYCK,I RETURN * * WEND * JSB WCHK CHECK STATUS * JSB ENDST END STEP * WEND NOP JSB WCHK JSB ENDST JMP WEND,I * * SEND * CLA * STA SHTAS * JSB ENDST * SEND NOP CLA STA SHTAS EXPECTED STATUS = 0 JSB ENDST JMP SEND,I * _<:6* DEND * JSB READ * JSB DCHK * JSB ENDST * DEND NOP JSB READ JSB DCHK VERIFY DATA READ JSB ENDST JMP DEND,I 3<  12960-18004 1805 S 0122 DIAG-7900/7901              H0101  HED S1 - SECTION 1 * SECTION 1 * THIS SECTION TESTS MOST CONTROLLER FUNCTIONS USING SHORT * READS AND WRITES. * WRSP EQU GLOB1 LOCATION FOR PCI AND DCI BITS WRR EQU GLOB2 TIMER S1 EQU * CLB STB SFLAG STB SHTAS WHAT STATUS SHOULD BE STB DMRF NO DMA ERRORS AT START STB STRF NO INITIAL ERRORS STB CYL STB HEAD STB SECTR LDA BPTR STA BUFAD INITIALIZE BUFFER ADDRESS LDA BPTS LOAD READ BUFFER ADDRESS STA BUFAE SET POINTER * * STEP 1 * GET AND CHECK STATUS FOR 0 * LDA D1 JSB COPR LDA B35 INITIAL STATUS STA COPRN JSB STAT GET STATUS JSB WEND CHECK STATUS AND END STEP * * STEP 2 * SEEK TO CYLINDER 0 * LDA D2 JSB COPR JSB FSEEK SEEK JSB ENDST * * SKIP TO STEP 21 IF BIT 4 IS CLEAR * JSB SWR AND BIT4 SZA,RSS JMP STP21 * * STEP 3 * ASK OPERATOR TO SET OVERRIDE SWITCH * LDA D3 JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTA NO LDA B66 YES JSB PRINT WHLTA LDA B66 SET OVERRIDE SWITCH PUSH RUN HLT 2 JSB ENDST * * STEP 4 * PLACE WRITE LOCKOUT BIT ON CYLINDER ZERO,READ CYLINDER ZERO * (CHECKING FOR FLAGGED CYLINDER INDICATION) AND CYCLIC CHECK * CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER INDICATION). * LDA D4 JSB COPR LDA WRILB LOAD WRITE LOCKOUT BIT JSB DGEN1 GENERATE BUFFER JSB WADR WRITE ADDRESSES ONTO DISK LDA FLBIT FLAGGED TRACK BIT STA SHTAS WHAT STATUS SHOULD BE LDA D128+SZREF READ ONE STA WCNT SECTOR JSB FSEEH READ JSB READ BACK JSB DCHK AND CHECK LDA D1 ONE SECTOR JSB FCYCK ISSUE CYCLIC CHECK JSB SEND * * & STEP 5 * PLACE DEFECTIVE CYLINDER BIT ON CYLINDER ONE * ISZ CYL CYL = 1 LDA D5 JSB COPR JSB FSEEK SEEK IN S0 LDA DFTB LOAD DEFECTIVE TRACK INDICATOR JSB DGEN1 GENERATE BUFFER JSB WADR WRITE ONTO DISK JSB ENDST * * STEP 6 * ASK OPERATOR TO CLEAR OVERRIDE SWITCH * LDA D6 JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTB NO LDA B67 YES JSB PRINT WHLTB LDA B67 CLEAR OVERRIDE SWITCH,PUSH RUN HLT 2 JSB ENDST * * STEP 7 * READ CYLINDER ONE (CHECKING FOR ADDRESS ERROR,FLAGGED CYLINDER * AND ANY ERROR INDICATIONS). * LDA D7 JSB COPR LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR JSB FSEEH ADDRESS RECORD IN S0 JSB READ LDA B31 FLBIT+NFBIT+AEBIT 000031 STA SHTAS WHAT STATUS SHOULD BE JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WEND CHECK STATUS AND END STEP * * STEP 8 * WRITE CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER AND ANY * ERROR INDICATIONS). * LDA D8 JSB COPR CLA STA CYL SET TO CYLINDER ZERO JSB FSEEK SEEK IN S0 JSB WRITE LDA B11 FLBIT+AEBIT 000011 STA SHTAS JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WEND CHECK STATUS AND END STEP * * STEP 9 * WRITE ADDRESS ON CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER * AND ANY ERROR INDICATIONS). * LDA D9 JSB COPR JSB FSEEK SEEK CLA JSB DGEN1 GENERATE BUFFER LDA WPCYL =6144 STA WCNT JSB WADRI,I JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WEND CHECK STATUS AND END STEP * * STEP 10 * ASK OPERATOR TO SET OVERRIDE SWITCH * LDA D10 JSB COPR CLA STA SHTAS WHAT STATUS SHOULD NORMALLY BE  JSB TTYCK IS TTY AVAILABLE? JMP WHLTC NO LDA B66 YES JSB PRINT WHLTC LDA B66 SET OVERRIDE SWITCH,PUSH RUN HLT 2 JSB ENDST * * STEP 11 * INITIALIZE ENTIRE PACK * LDA D11 JSB COPR CLA WRCL EQU * STA CYL SET NEW CYLINDER NUMBER * * THE FOLLOWING OPERATION IS A SEEK THAT * CAUSES POSITIONER MOTION. * JSB SEEK CLA JSB DGEN1 GENERATE BUFFER JSB WAITS WAIT FOR SEEK COMPLETION JSB WADR WRITE AND READ ADDRESSES LDA D1024+SZREF READ BACK EIGHT SECTORS STA WCNT JSB FSEEH READ JSB READ BACK JSB DCHK AND CHECK CLA,INA INCREMENT CYLINDER ADA CYL COUNT UP TO NEXT CYLINDER CPA CYPP CHECK FOR END OF PACK RSS JMP WRCL NOT DONE, FINISH PACK JSB ENDST * * STEP 12 * ASK OPERATOR TO CLEAR OVERRIDE SWITCH * LDA D12 JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTD NO LDA B67 YES JSB PRINT WHLTD LDA B67 CLEAR OVERRIDE SWITCH,PUSH RUN HLT 2 JSB ENDST * * STEP 13 * ASK OPERATOR TO UNLOCK DRIVE * LDA D13 JSB COPR LDA UNIT CONVERT ADA B2060 UNIT NUMBER STA P070A,I TO ASCII STA P040B,I JSB TTYCK IS TTY AVAILABLE? JMP WHLTE NO H70 LDA B70 YES JSB PRINT WHLTE LDA B70 UNLOCK UNIT X,PUSH RUN HLT 2 JSB ENDST * * STEP 14 * CHECK FOR NOT-READY AND ANY ERROR INDICATIONS. ISSUE A WRITE * COMMAND AND CHECK STATUS. ISSUE A SEEK TO CHECK THAT THE * CONTROLLER SETS THE COMMAND FLAG IMMEDIATELY IF THE DISC * DRIVE IS NOT READY. * THIS STEP REPORTS A SEEK CHECK ERROR WHEN LOOPED. * LDA D14 JSB COPR JSB STAT LDA B105 NR['BIT+PBBIT+AEBIT 000105 STA SHTAS SET WHAT STATUS SHOULD BE JSB WCHK LDA D128+SZREF STA WCNT JSB WRITE JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WCHK AND CHECK FOR ERRORS JSB SEEK SEEK JSB WAITS WAIT FOR SEEK TO COMPLETE JSB ENDST * * STEP 15 * ASK OPERATOR TO SET DATA PROTECT SWITCH AND READY DRIVE. TEST * ATTENTION BITS WHEN HEADS LOAD. * LDA D15 JSB COPR LDA HDON LDB UPD SZA IF HDON = 0, UPPER DISC LDB LRD OTHERWISE, LOWER DISC STB P040A,I PREPARE STB P041A,I MESSAGES NRCB EQU * LDA MM10 PRINT EVERY STA WRR 82 SECONDS JSB TTYCK JMP WHLTF H40 LDA B40 PROTECT X/D THEN READY UNIT X JSB PRINT WHLTF LDA M7936 STA LCNT SET MILLISECOND COUNTER CC13 CLC CC SET UP FOR CC14 STC CC,C FLAG ON HEAD-LOAD NRCF EQU * CC11 SFC CC SKIP IF NOT READY JMP CC12 FLAG IS SET CLA,INA JSB TMR,I DELAY 1 MSEC ISZ LCNT JMP NRCF ISZ WRR READY TO PRINT? JMP WHLTF NO JMP NRCB YES CC12 LIB CC ATTENTION BITS LDA B21 SZB,RSS JSB FPRNT MISSING ATTENTION BITS JSB ENDST * * STEP 16 * PERFORM A SEEK OPERATION AND TEST FOR FIRST SEEK BIT. * THIS STEP REPORTS A FIRST SEEK ERROR WHEN LOOPED. * LDA D16 JSB COPR CLA STA CYL JSB SEEK * * TEST FIRST SEEK BIT * LDA E2001 FSBIT+SPBIT+AEBIT 042001 STA SHTAS JSB WAITS JSB WEND CHECK STATUS AND END STEP * * STEP 17 * ATTEMPT TO WRITE DATA ON THE DISC AND THEN VERIFY THAT NO * DATA TRANSFER TOOK PLACE. CHECK STATUS. LDA D17 JSB COPR JSB SEEK JSB STAT JSB DMW INITIATE DMA LDB B45 SET UP CURRENT OPE=RATION LDA WRITC JSB COMMD WRITE ON PROTECTED SUBCHANNEL LDA M175 STA LCNT WATE EQU * CLA,INA JSB TMR,I DELAY 1 MSEC ISZ LCNT JMP WATE LOOP UNITL TIMEOUT JSB MC TURN OFF DMA DM2L LIA DMAC ADA WCNT AND B7777 CPA D1 SHOULD BE ONLY 1 TRANSFERRED JMP PSTAT IF SO, GO AHEAD AND CHECK STATUS LDB P013A IF NOT, BOMB JSB DCIN2 CLA,INA STA WCNT LDA BIT15 STA DMRF JSB PCOP JSB DMERQ JSB ADDOI,I PSTAT LDA B2011 SPBIT+FLBIT+AEBIT 002011 STA SHTAS JSB STAT JSB WCHK CHECK STATUS ON WRITE JSB SEND * * STEP 18 * ASK OPERATOR TO CLEAR DATA PROTECT SWITCH * LDA D18 JSB COPR JSB TTYCK JMP WHLTH LDA B41 H41 JSB PRINT H41 CLEAR X/D PROTECT,LOAD,RUN WHLTH LDA B41 HLT 2 JSB STAT CLEAR FIRST STATUS JSB ENDST * * STEP 19 * TEST POPIO LINE WITH PRESET SWITCH. * ISZ CYL LDA D19 JSB COPR CLA STA SHTAS JSB FSEES ADDRESS RECORD * * RAR NOW DIFFERS FROM POSITIONER. * A READ WILL SHOW A STATUS OF 21B. * JSB DMR SET UP DMA READ OPERATION LDB B46 SET UP CURRENT OPERATION LDA READC LOAD READ COMMAND JSB COMMD OUTPUT COMMAND JSB DMAT JSB TTYCK JMP WHLTG LDA B71 H71 JSB PRINT PRESS PRESET(S) THEN PRESS RUN WHLTG LDA B71 HLT 2 JSB STAT * * THE FOLLWOING TEST VERIFIES THE POPIO LINE * JSB WEND CHECK STATUS AND END STEP * * STEP 21 * SEEK TO CYLINDER 0,THEN SEEK TO CYLINDER 1 AND CHECK STATUS * FOR BUSY * STP21 EQU * LDA D21 JSB COPR CLA STA CYL JSB FSEEK SEEK IN S1 ISZ CYL * * THE FOLLOWING OPERATIONS ARE, *  A SEEK THAT CAUSES POSITIONER MOTION * AND A STATUS OPERATION IMMEDIATELY * FOLLOWING WHICH SHOULD SEE A * POSITIONER BUSY STATUS. * JSB SEEK LDA D5 PBBIT+AEBIT 000005 STA SHTAS WHAT STATUS SHOULD BE JSB STAT GET STATUS WHILE BUSY JSB WCHK CHECK FOR ERRORS CLB FOR WAITS TIME COUNTER STB SHTAS WHAT STATUS NORMALLY IS JSB WAITS WAIT FOR SEEK TO FINISH JSB ENDST * * STEP 22 * SEEK TO CYLINDER 203 AND CHECK STATUS FOR SEEK-CHECK AND ANY * ERROR INDICATIONS. * LDA D22 JSB COPR LDA CYPP LOAD FIRST NON-EXISTANT CYLINDER NUMBER STA CYL JSB SEEK SEEK TO NON-EXISTANT CYLINDER JSB WAITS WAIT FOR SEEK LDA B401 SCBIT+AEBIT 000401 STA SHTAS JSB WEND CHECK STATUS AND END STEP * * STEP 23 * SEEK WHILE A SEEK IS IN PROGRESS,THEN CHECK STATUS FOR SEEK- * CHECK AND ANY ERROR INDICATIONS. * LDA D23 JSB COPR LDA FTR,I GET FIRST CYLINDER THAT STA CYL WE ARE ALLOWED TO WRITE ON. JSB SEEK JSB SEEK SEEK WITHIN A SEEK JSB WAITS ALLOW COMPLETION JSB WEND CHECK STATUS AND END STEP * * STEP 24 * SEEK TO FIRST CYLINDER IN CYLINDER TABLE AND WRITE ONE SECTOR * AT SECTOR ZERO * LDA D24 JSB COPR CLA STA SHTAS STATUS IS NORMALLY ZERO JSB FSEEK SEEK IN S1 LDA D384+SZREF STA WCNT SET WORD COUNT FOR THREE SECTORS JSB DGEN GENERATE NEW BUFFER * * THE FOLLOWING OPERATION DOES THE FIRST * WRITE ON THE DISK ON HEAD ZERO, SECTOR ZERO * LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR JSB WRITE WRITE ON FIRST SECTOR JSB WEND CHECK STATUS AND END STEP * * STEP 25 * WRITE TWO SECTORS AT SECTOR 7. * LDA D25 JSB COPR LDA D7 STA SECTR OPERATION STARTS AT SECTOR 7 JSB SEES LDA BPTR1 = BPTR + 128 STA BUFAD LDA D256+SZREF STA WCNT TWO SECTOR WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WEND CHECK STATUS AND END STEP * * STEP 26 * READ ONE SECTOR AT SECTOR ZERO AND CHECK AGAINST DATA THAT * WAS WRITTEN * LDA D26 JSB COPR CLA STA SECTR NEXT OP STARTS AT SECTOR ZERO JSB SEES LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR LDA BPTR STA BUFAD PUT BUFFER ADDRESS BACK JSB WAIS WAIT FOR SECTOR SWITCHING JSB DEND * * STEP 27 * READ TWO SECTORS AT SECTOR 7 AND CHECK AGAINST DATA THAT WAS * WRITTEN. * LDA D27 JSB COPR LDA D7 STA SECTR OPERATION STARTS AT SECTOR 7 JSB SEES LDA BPTR1 = BPTR + 128 STA BUFAD SET TO SECOND READ/WRITE ADDRESS LDA D256+SZREF TWO SECTOR STA WCNT SET WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB DEND * * STEP 28 * REFINE ONE SECTOR AT SECTOR SEVEN. READ AND VERIFY SECTOR 7. * LDA D28 JSB COPR JSB FSEES ADDRESS RECORD IN S1 JSB RFNE ISSUE REFINE COMMAND JSB WCHK CHECK STATUS JSB FSEES ADDRESS RECORD IN S1 JSB DEND * * STEP 29 * WRITE FOUR SECTORS AT SECTOR 21,CAUSING A TRACK CHANGE. * LDA D29 JSB COPR LDA SCPT-3 STA SECTR SET SECTOR NUMBER JSB SEES LDA D512+SZREF STA WCNT SET FOUR SECTOR WORD COUNT LDA BPTR STA BUFAD JSB DGEN GENERATE BUFFER JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WEND CHECK STATUS AND END STEP * * STEP 30 * PERFORMS A CYCLIC CHECK ON GROUPS OF SECTORS ST ARTING AT HEAD * ZERO,SECTOR ZERO. (ONE SECTOR,THEN 2 SECTORS,THEN 4,8,16,32, * 48 AND 49 SECTORS.) THE LAST ONE RESULTS IN END OF CYLINDER * INDICATION. * LDA D30 JSB COPR CLA STA SECTR SET SECTOR ZERO LDA MM6 CYCLIC CHECK STA WRR 1,2,4,8,16 AND 32 SECTORS LDA D1 STP30 EQU * JSB FCYCK ISSUE CYCLIC CHECK LDA WCNT ALS ISZ WRR DONE? JMP STP30 NO LDA D48 48 SECTORS JSB FCYCK ISSUE CYCLIC CHECK LDA B41 END-OF-CYLINDER AND ANY-ERROR STA SHTAS LDA D49 49 SECTORS JSB FCYCK ISSUE CYCLIC CHECK JSB SEND * * STEP 31 * READ FOUR SECTORS AT SECTOR 21 AND VERIFY THE DATA AGAINST * THAT WHICH WAS WRITTEN. * LDA D31 JSB COPR LDA D512 STA WCNT WORD COUNT = FOUR SECTORS LDA SCPT-3 STA SECTR SET SECTOR JSB FSEES ADDRESS RECORD IN S1 JSB DEND * * STEP 32 * AT SECTOR SEVEN,LOWER TRACK FORCE OVERRUN FOLLOWING WRITE OF * TWO WORDS. * LDA D32 JSB COPR LDA TRPC-1 LOAD LAST TRACK NUMBER STA HEAD LDA D7 STA SECTR SET SECTR TO SEVEN JSB SEEH MOVE TO THE BOTTOM TRACK * * THIS OPERATION OUTPUTS A PAIR OF WORDS TO THE * DATA CHANNEL. ABOUT 50 MICROSECONDS AFTER THE SECOND * IS ACCEPTED, A THIRD WORD IS OUTPUT TO SET OVERRUN FLAG. * LDA BUFAD CLB STB A,I SET TWO WORDS OF ZERO INA STB A,I LDA D2 STA WCNT SET WORD COUNT LDA OVIJS JUMP TO SUBROUTINE STA DMSP SET DMA BREAK LOCATION JSB WAIH WAIT FOR HEAD SWITCHING JSB WRITE JSB ST32I,I * * STEP 33 * WRITE FOUR SECTORS AT SECTOR 21,LOWER TRACK. THE END-OF- * CYLINDER AND ANY ERROR CONDITIONS ARE EXPECTED. * LDA D33 JSB COPR   CLA STA SHTAS LDA SCPT-3 STA SECTR SET SECTOR JSB SEEK LDA D512+SZREF STA WCNT SET WORD COUNT FOR FOUR SECTORS JSB DGEN GENERATE BUFFER JSB WAITS WAIT FOR SEEK TO COMPLETE JSB WRITE JSB DMRFC OK IF TRANSFER IS INCOMPLETE LDA B41 ECBIT+AEBIT 000041 STA SHTAS THIS IS WHAT STATUS SHOULD BE JSB WENDI,I * * STEP 34 * TEST COMMAND BIT 14 * IF MISSING CYCHK BECOMES READC AND END OF CYLINDER WON'T OCCUR * LDA D34 JSB COPR JSB FSEEK SEEK IN S1 LDA D128+SZREF STA WCNT JSB DMR SET UP DMA IN CASE IT IS READ LDB B22 SET UP CURRENT OPERATION LDA B62 CHECK IS FOR 50 JSB DADO SECTORS LDA CYCHK JSB COMMD OUTPUT COMMAND JSB DMAT JSB STAT GET STATUS JSB WENDI,I * * STEP 35 * AT SECTOR SEVEN,LOWER HEAD;READ THIRTY WORDS AND FORCE * OVERRUN. CHECK ZERO FILL AND VERIFY THAT THE WORD CAUSING * THE PREVIOUS OVERRUN WAS NOT WRITTEN ON THE DISC. * LDA D35 JSB COPR CLA STA SHTAS STATUS SHOULD NORMALLY BE ZERO LDA D7 STA SECTR SET SECTR TO SEVEN JSB SEEH RETURN TO BOTTOM TRACK LDA D30 STA WCNT SET WORD COUNT FOR ONE SECTOR LDA OVIJS STA DMSP SET TO INTERRUPT DMA TRANSFER JSB WAIH WAIT FOR HEAD SWITCHING JSB READ JSB ST35I,I * * STEP 36 * READ FOUR SECTORS AT SECTOR 21,LOWER TRACK. THE END-OF- * CYLINDER AND ANY ERROR INDICATIONS ARE EXPECTED. THE THREE * SECTORS READ ARE CHECKED AGAINST THOSE WRITTEN. * LDA D36 JSB COPR LDA SCPT-3 STA SECTR SET SECTOR JSB FSEES LDA D512+SZREF STA WCNT SET WORD COUNT FOR FOUR SECTORS JSB READ READ AND JSB DMRFC OK IF TRANSFER IS INCOMPLETE LDA D384<:6+SZREF STA WCNT SET WORD COUNT FOR THREE SECTORS LDA B41 ECBIT+AEBIT 000041 STA SHTAS THIS IS WHAT STATUS SHOULD BE JSB DCHK CHECK FOR ERRORS AND COMPARE BUFFERS JSB ENDST * * STEP 37 * SEEK TO LAST CYLINDER. READ ONE SECTOR AT CYLINDER 0. ADDRESS * ERROR AND ANY ERROR ARE EXPECTED. FORCES WORST CASE * RECALIBRATE. * LDA D37 JSB COPR LDA D202 STA CYL JSB FSEEK SEEK TO CYL 202 CLA STA CYL JSB FSEES SET CYL TO 0 LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR JSB READ LDA STAUS MASK OUT BITS 10 AND 13 AND N5777 =155777 STA STAUS LDA B21 NFBIT+AEBIT 000021 STA SHTAS WHAT STATUS SHOULD BE JSB WENDI,I * * STEP 38 * SEEK TO CYLINDER 202(OR 0 IF FIRST ENTRY IS 202)AND THEN SEEK * TO FIRST ENTRY IN CYLINDER TABLE. AT HEAD 1,SECTOR 21 READ * ONE SECTOR AND VERIFY CONTENTS. THE READ COMMAND IS ISSUED * BEFORE THE SEEK IS COMPLETE. * LDA D38 JSB COPR CLA STA SHTAS WHAT STATUS SHOULD NORMALLY BE LDB D202 LDA FTR,I IS FIRST ENTRY IN TABLE CPA D202 EQUAL TO 202 CLB YES STB CYL CYL = 202 (OR 0) JSB FSEEK PERFORM FULL SEEK LDA FTR,I STA CYL JSB SEEK JSB DENDI,I JMP SKIPI,I EXIT S1 x^<  12960-18005 1805 S 0122 DIAG-7900/7901              H0101  HED S2 - SECTION 2 * * * SECTION 2 IS ORGANIZED AS FOLLOWS * * CYLINDER ADVANCE * SWITCH 6=0 -- ALL CYLINDERS FROM 0 TO 202 * SWITCH 6=1 -- ALL CYLINDERS IN TRTAB * . * . * . PATTERN GENERATOR * . GENERATE BUFFERS FOR EACH OF THE PATTERNS IN PATTR * . SKIP THIS SECTION IF SWITCH 5=1 * . . * . . TRACK ADVANCE * . . ALL TRACKS FROM 0 TO TRPC-1 * . . . * . . . BLOCK ADVANCE * . . . EACH TRACK IS WRITTEN AS THREE BLOCKS * . . . . * . . . . WRITE DATA BUFFER * . . . . * . . * . . TRACK ADVANCE * . . ALL TRACKS FROM 0 TO TRPC-1 * . . . * . . . BLOCK ADVANCE * . . . EACH TRACK IS READ AS THREE * . . . BLOCKS * . . . . * . . . . READ EACH BLOCK * . . . . * . . . . CHECK DATA READ * . . . . * . . . * . . * . * . * * SVCT EQU GLOB1 USED TO COUNT TOTAL TIME FLAG2 EQU GLOB2 USED WHEN STEP 45 LOOPS SVKC EQU GLOB3 PATT EQU GLOB4 VARIABLE TO SAVE CURRENT PATTERN PTNX EQU GLOB5 COUNTER FOR PATTERN TABLE S2 EQU * CLA STA SVCT ZERO TOTAL TIME IN SEEKS STA SVKC ZERO SEEK COUNT STA CYLX SET ZERO INTO INITIAL CYLINDER STA SHTAS CCA STA FIRST FIRST = -1 S2L EQU * JSB CYLJ TRANSLATE CYLX INTO CYL CLA A _ 0 STA HEAD POSITION FOR HEAD ZERO AND STA SECTR SECTOR ZERO CLA,INA SET UP STA FLAG2 FOR TIMING LDA SVCT MOVE SAVED STA SVCTA COUNTER BACK * * STEP 45 * SELECT CYLINDER ACCORDING TO SWITCH REGISTER BIT 6. PERFORM * SEEK OPERATIOIN * LDA D45 JSB COPR JSB FSEEK LDA FLAG2 HAS THIS STEP BEEN REPEATED? SZA,RSS SKIP IF NO JMP S2A YES CLA DON'T COUNT STA FLAG2 ( DISABLE TIMING ON LOOP ) ISZ FIRST FIRST SEEK LDA SVCTA SAVE CURRENT STA SVCT MILLISECOND COUNT S2A EQU * JSB ENDST LDA SVKC INA COUNT UP SEEK COUNTER STA SVKC CPA D129 HAVE WE DONE 128 FULL SEEKS RSS YES, PRINT OUT SEEK TIMING JMP TNTW NO, CONTINUE ON * JSB SWR LOAD SWITCH REGISTER AND BIT12 SZA SKIP IF BIT 12 CLEAR JSB TTYCK JMP TNTW ABORT PRINOUT LDA SVCT LOAD NUMBER OF MILLISECONDS ADA MM64 AVERAGE ADJUSTMENT JSB MSCV CALL CONVERTER LDA CVT2 TRANSFER STA P053A,I TO LDA CVT3 MESSAGE STA P053B,I H53 LDA B53 AVERAGE MINIMUM SEEK TIME XX.X JSB PRINT PRINT OUT SEEK TIME MESSAGE * TNTW EQU * JSB SWR LOAD SWITCH REGISTER AND BIT5 CHECK FOR SHORT TEST SZA SKIP IF LONG JMP S2H SHORTEN SECTION TWO * * * THE FOLLOWING SECTION OF CODE CYCLES THROUGH * ALL TEN PATTERNS IN THE PATTERN TABLE * * LDA BPTR LOAD BUFFER ADDRESS STA BUFAD SET WRITE AND LDA BPTS STA BUFAE READ BUFFER ADDRESSES LDA MM10 PATTERN TABLE IS TEN ENTRIES LONG STA PTNX SAVE IN COUNTER WORD * WGEN EQU * LDA M256+SZREF 8 SECTOR WORD COUNT / 4 STA TEMP1 SAVE FOR THE FAST FILL LOOP LDB PTNX LOAD THE PATTERN COUNTER ADB PATR ADD ON THE TABLE ADDRESS LDA B,I LOAD THE PATTERN TO A STA PATT SAVE IT FOR THE PCHK ROUTINE LDB BUFAD LOAD THE WRITE ADDRESS WGL EQU * STA B,I INB STA B,I INB STA B,I INB t STA B,I INB ISZ TEMP1 COUNT DOWN COUNTER ( BY FOUR ) JMP WGL CONTINUE ON IF NOT DONE SKP * * STEP 46 * THE FOLLOWING CODE WRITES THE PATTERN IN THE BUFFER * ONTO THE ENTIRE CYLINDER * * TO USE THE MINIMUM TIME FOR EACH TRACK, THE TRACK * IS DIVIDED INTO THIRDS WHICH ARE WRITTEN * IN THE ORDER, FIRST, THIRD, SECOND. * LDA D46 JSB COPR CLB STB HEAD SET HEAD ZERO WNHW EQU * CLA STA SECTR FIRST BLOCK STARTS AT SECTOR ZERO * * THIS SEEK SELECTS A NEW HEAD * JSB SEEH SEEK TO CURRENT HEAD * * THE FOLLOWING WRITE IS FOR THE * FIRST THIRD OF THIS TRACK * LDA WCFT STA WCNT SET WORD COUNT JSB WAIH WAIT FOR HEAD SWITCHING JSB WRITE JSB WCHK CHECK FOR ERRORS * * THIS OPERATION IS A WRITE FOR * THE LAST THIRD OF THIS TRACK * LDA SCLT STA SECTR JSB SEES LDA WCLT STA WCNT SET WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WCHK CHECK FOR ERRORS * * THIS OPERATION IS A WRITE FOR * THE SECOND THIRD OF THIS TRACK * LDA SCST STA SECTR JSB SEES LDA WCFT STA WCNT SET WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WCHK CHECK FOR ERRORS * ISZ HEAD HEAD := HEAD + 1 LDA HEAD CPA TRPC CONTINUE ON IF NOT FINISHED WITH THE CYLINDER CLA,RSS DONE, SKIP OUT JMP WNHW WRITE ON EACH TRACK JSB ENDST SKP * * STEP 47 * THE FOLLOWING SECTION READS BACK THE PATTERNS AND * COMPARES EACH WORD WITH PATT. * LDA D47 JSB COPR CLA STA HEAD SET HEAD ZERO WNHR EQU * CLA STA SECTR START AT SECTOR ZERO JSB FSEEH ADDRESS RECORD IN S2 * * THIS OPERATION IS A READ FOR * THE FIRST THIRD OF THIS TRACK * LDA WCFT STA WCNT SET LENGTH OF FIRST THIRD JSB READ JSB PCHK CHECK FOR BUFFER MISMATCH * * THIS OPERATION IS A READ FOR * THE LAST THIRD OF THIS TRACK * LDA SCLT STA SECTR SET SECTOR NUMBER JSB SEES LDA WCLT LENGTH OF LAST THIRD STA WCNT SET WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB READ JSB PCHK * * THIS OPERATION IS A READ FOR * THE SECOND THIRD OF THIS TRACK * LDA SCST SECTOR WHERE SECOND THIRD STARTS STA SECTR JSB SEES LDA WCFT WORD COUNT FOR FIRST THIRD STA WCNT SET WORD COUNT JSB WAIS WAIT FOR SECTOR SWITCHING JSB READ JSB PCHK CHECK FOR BUFFER ERRORS ISZ HEAD HEAD := HEAD + 1 LDA HEAD CPA TRPC CHECK FOR END OF CYLINDER RSS SKIP OUT IF DONE JMP WNHR CONTINUE FOR ALL TRACKS JSB ENDST ISZ PTNX HAVE ALL PATTERNS BEEN TRIED JMP WGEN NO, GO BACK FOR NEXT SKP S2H EQU * JSB CYLD COUNT UP CYLX AND CHECK FOR DONE JMP S2L LOOP * JMP SKIPI,I EXIT S2 * * OCT 000000 OCT 177777 OCT 125252 OCT 052525 OCT 007417 OCT 170360 OCT 162745 OCT 163346 OCT 155555 OCT 022222 PATTR EQU * HED S3 - SECTION 3 * * * SECTION 3 * * SECTION 3 IS ORGANIZED AS FOLLOWS * * GENERATE RANDOM CYLINDER NUMBERS AND * RANDOM HEAD AND SECTOR NUMBERS * . * . * . GENERATE A RANDOM WORD COUNT * . ( NOT BEYOND END OF CYLINDER ) * . . * . . * . . GENERATE A BUFFER OF RANDOM DATA * z . . STORE A WORD OF ZERO INTO THE * . . FIRST UNUSED WORD * . . * . . * . . WRITE BUFFER TO DISK * . . * . . * . . . * . . . ISSUE SEEK * . . . * . . . * . . . READ BLOCK BACK * . . . READ AND CHECK ONE EXTRA WORD IF * . . . NOT A MULTIPLE OF SECTOR SIZE * . . . * . . . * . . . CHECK DATA READ * . . . * . . . * . . * . . * . * . * SKNT EQU GLOB1 RRPT EQU GLOB2 WSAVE EQU GLOB3 WRPT EQU GLOB4 S3 EQU * JSB SWR SWITCH REGISTER TO A AND BIT5 LDB M1024 COUNT FOR LONG VERSION SZA SKIP IF INDEED LONG TEST LDB MM64 COUNT FOR SHORT TEST STB SKNT S3A EQU * JSB RNCH GET RANDOM CYLINDER,HEAD NUMBER JSB RNSC GET RANDOM SECTOR NUMBER * * STEP 48 * THIS SEEK MOVES THE POSITIONER TO A RANDOM * CYLINDER AND HEAD. * LDA D48 JSB COPR JSB SEEK START SEEK ON ITS WAY * GENERATE A RANDOM WORD COUNT BETWEEN 1 AND * 1023. THE WORD COUNT WILL NOT EXTEND BEYOND * THE END OF CYLINDER. RWCA EQU * JSB RAND GET A RANDOM NUMBER RAR AND B1777 WCNT < 1024 SZA,RSS ZERO IS NOT LEGAL JMP RWCA IF ZERO,TRY AGAIN RWCT EQU * STA WCNT SAVE CHOSEN WORD COUNT LDB HEAD CHECK FOR LAST HEAD IN CYLINDER INB CPB TRPC CHECK FOR LAST HEAD RSS JMP RWCG OK LDB SCPT IS CMB,INB WORD ADB SECTR COUNT ALF,ALF TOO RAL LARGE? AND B77 ADA B SSA JMP RWCG OK LDA WCNT TRY HALF ARS AS 4JMP RWCT MUCH RWCG EQU * LDA BPTR LOAD FIRST BUFFER POINTER STA BUFAD LDA BPTS LOAD SECOND BUFFER POINTER STA BUFAE JSB DGEN GENERATE A RANDOM BUFFER LDA WCNT SAVE LAST STA WSAVE LOCATION+1 ADA BUFAD ADD BASE OF WRITE BUFFER CLB STB A,I SAVE TO CHECK SECTOR ZEROING JSB WAITS WAIT FOR SEEK TO FINISH JSB WENDI,I LDA MM2 TRY TWO WRITE/READ CYCLES STA WRPT * S3RA EQU * * * STEP 49 * THIS WRITE FILLS UP A GIVEN AREA WITH * RANDOM DATA. THE WORD COUNT MAY BE FROM * ONE WORD TO 1023 WORDS. * LDA D49 JSB COPR JSB FSEEH ADDRESS RECORD IN S3 JSB WRITE FILL UP CHOSEN AREA WITH JUNK JSB WENDI,I LDA MM2 TRY TWO READS STA RRPT S3RB EQU * * * STEP 50 * READ IT BACK TWICE FOR EACH OF TWO WRITES (STEP 49) * LDA D50 JSB COPR LDA WCNT CHECK FOR SECTOR BOUNDARY AND B177+SZREF CHECK FOR EVEN SECTOR BOUNDARY SZA SKIP IF EVEN MULTIPLE OF SECTOR ISZ WCNT COUNT UP WORD COUNT * * THIS SEEK RESELECTS THE PROPER HEAD JSB FSEEH ADDRESS RECORD IN S3 * * THIS READ READS BACK THE DATA WRITTEN * BY THE PREVIOUS WRITE. * THE DATA IS COMPARED WITH THAT WRITTEN. * JSB DENDI,I LDA WSAVE STA WCNT ISZ RRPT CHECK FOR ENOUGH TIMES JMP S3RB TRY TO READ AGAIN ISZ WRPT JMP S3RA TRY TO WRITE AGAIN ISZ SKNT ARE WE DONE WITH THIS SECTION JMP S3A NOT DONE, TRY ANOTHER PLACE JMP SKIPI,I EXIT S3 HED CYLD,CYLJ * * * CYLD COUNTS UP CYLX AND CHECKS FOR COMPLETION OF * TEST ON ALL CYLINDERS. IT GIVES A SKIP RETURN WHEN * ALL CYLINDERS HAVE BEEN COVERED * CYLD NOP LD,yB CYLX LOAD CURRENT CYLINDER REFERENCE INB COUNT IT UP BY ONE STB CYLX AND STORE IT BACK CMB MAKE ONES COMPLEMENT JSB SWR4 LOAD EFFECTIVE SWITCH REGISTER AND BIT6 CHECK FOR RESTRICTED CYLINDERS SZA,RSS SKIP IF SHORT TEST REQUESTED JMP CDY FULL TEST ADB D10 THERE ARE TEN TABLE ENTRIES JMP CDZ CDY EQU * ADB CYPP CHECK FOR END OF PACK CDZ EQU * SSB SKIP IF NOT DONE ISZ CYLD COUNT UP RETURN ADDRESS ( DONE ) JMP CYLD,I RETURN * * CYLJ TRANSLATES THE NUMBER IN CYLX TO THE DESIRED * CYLINDER NUMBER IN CYL * CYLJ NOP JSB SWR4 LOAD EFFECTIVE SWITCH REGISTER AND BIT6 CHECK FOR RESTRICTED CYLINDERS SZA,RSS SKIP IF SHORT TEST JMP CJW LDA CYLX CJQ EQU * ADA MM10 CHECK FOR CYLX TOO BIG SSA,RSS SKIP IF OKAY JMP CJQ OTHERWISE, KEEP REDUCING ADA TRT ADD ON THE TABLE ADDRESS LDA A,I LOAD THE WORD FROM THE TABLE STA CYL SET BACK INTO CYLINDER JMP CYLJ,I RETURN * CJW EQU * LDA CYLX STA CYL STRAIGHT COPY JMP CYLJ,I RETURN * * FTRBN EQU * TRACK TABLE BEGIN OCT 0,1,2,4,10,20,40,100,200 ABS LCYL TRTBP EQU * HED S4 - SECTION 4 * * * SECTION 4 IS ORGANIZED AS FOLLOWS * * CYLINDER ADVANCE * SWITCH 6=0 -- ALL CYLINDERS FROM 0 TO 202 * SWITCH 6=1 -- ALL CYLINDERS IN TRTAB * . * . * . RANDOM NUMBER GENERATOR * . GENERATES A NEW BUFFER OF RANDOM DATA * . FOR EACH CYLINDER * . * . TRACK ADVANCE * . ALL TRACKS FROM 0 TO TRPC-1 * . . * . . BLOCK ADVANCE * . . EACH TRACK IS WRITTEN AS THREE * . . BLOCKS * . . THE SCHEME USED IS THE S/AME * . . AS THAT OF THE SECTION * . . 2 PATTERN READ SINCE * . . RCGEN AND PCHK TAKE * . . ABOUT THE SAME AMOUNT * . . OF TIME. * . . . * . . . CHECKSUM BLOCK SO THAT IT IS * . . . UNIQUE AND IDENTIFIABLE. * . . . * . . . WRITE BLOCK TO DISK * . . . * . . * . * . * . * * S4 EQU * JSB SWR LOAD SWITCH REGISTER AND BIT6 SAVE BIT 6 LDB S400 FOR ADB UNIT S4,S5 AND S6 STA B,I CLA,INA A = 1 STA SFLAG CLA STA CYLX SET CYLINDER REFERENCE WORD * S4L EQU * JSB CYLJ TRANSLATE CYLX INTO CYL CLA STA HEAD POSITION FOR HEAD ZERO AND STA SECTR SECTOR ZERO * * STEP 51 * THIS SEEK CAUSES POSITIONER MOTION TO * THE NEXT CYLINDER. * LDA D51 JSB COPR JSB FSEEK SEEK IN S4 JSB ENDST * * STEP 52 * THE FOLLOWING SECTION OF CODE GENERATES THE * CHECKSUMMED RANDOM DATA. * LDA D52 JSB COPR LDA WCFT LENGTH OF FIRST THIRD STA WCNT SET WORD COUNT JSB DGEN GENERATE RANDOM BUFFER CLA STA SHTAS STATUS SHOULD BE ZERO S4RN EQU * CLA STA SECTR THIS OP STARTS AT SECTOR ZERO JSB FSEEH ADDRESS RECORD IN S4 * * THIS OPERATION IS A WRITE FOR * THE FIRST THIRD OF THIS TRACK * * WCNT AND SECTR ARE SET UP JSB RCGEN GENERATE CHECKSUMS JSB WRITE JSB WCHK CHECK FOR ERRORS * * THIS OPERATION IS A WRITE FOR * THE LAST THIRD OF THIS TRACK * LDA SCLT SECTOR WHERE LAST THIRD STARTS STA SECTR JSB SEES LDA WCLT LENGTH OF LAST THIRD STA WCNT SET WORD COUNT JSB RCGEN GENERATE CHECKSUMS JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WCHK CHECK FOR ERRORS * * THIS OPERATION IS A WRITE FOR * THE MIDDLE THIRD OF THIS TRACK * LDA SCST SECTOR WHERE THIS THIRD STARTS STA SECTR JSB SEES LDA WCFT LENGTH OF MIDDLE THIRD STA WCNT SET WORD COUNT JSB RCGEN GENERATE CHECKSUMS JSB WAIS WAIT FOR SECTOR SWITCHING JSB WRITE JSB WCHK CHECK FOR ERRORS ISZ HEAD HEAD := HEAD + 1 LDA HEAD CPA TRPC CHECK TO SEE IF DONE RSS SKIP OUT WHEN DONE JMP S4RN FINISH ENTIRE CYLINDER JSB ENDST JSB CYLD COUNT UP CYLX AND CHECK FOR DONE JMP S4L CONTINUE ON TO NEXT CYLINDER JMP S5A CONTINUE SECTION 4 HED RCGEN,RNCH,RNSC * * * RCGEN * THIS ROUTINE CONSTRUCTS THE CHECKSUMS FOR THE WRITE BUFFER. * 1.) EACH SECTOR IS CHECKSUMMED SEPARATELY * 2.) THE ENTIRE SECTOR SUMS TO ZERO ( TWOS COMPLEMENT ) * 3.) THE FIRST TWO WORDS SUM TO THE CYLINDER NUMBER * 4.) WORDS 2 AND 3 SUM TO THE HEAD/SECTOR NUMBER * RCGEN NOP LDA WCNT ALF,ALF RAL AND B77 LEAVE THE NUMBER OF SECTORS CMA,INA COMPLEMENT FOR ISZ STA TEMP1 LDA HEAD IOR HDON ALF,ALF HEAD NUMBER TO LEFT SIDE IOR SECTR PLUG IN SECTOR NUMBER STA TEMP2 LDB BUFAD LOAD ADDRESS OF FIRST SECTOR * RCGL EQU * LDA MM31+SZREF STA TEMP3 COUNT FOR FOUR UNIT LOOP * LDA B,I GET WORD ZERO CMA,INA MAKE COMPLEMENT ADA CYL THIS SUMS TO THE CYLINDER NUMBER INB COUNT UP BUFFER ADDRESS STA B,I * INB COUNT UP BUFFER POINTER LDA B,I LOAD WORD 2 CMA,INA n' CHECK WORD IS COMPLEMENT ADA TEMP2 ADD HEAD/SECTOR INB COUNT UP TO SLOT FOR WORD STA B,I SAVE SECOND CHECKWORD * LDA CYL ADA TEMP2 ADD ON HEAD/SECTOR NUMBER * SUM TO DATE IN A RCGF EQU * INB COUNT UP BUFFER POINTER ADA B,I ADD ON NEXT WORD OF BUFFER INB ADA B,I INB ADA B,I INB ADA B,I ISZ TEMP3 CHECK FOR DONE JMP RCGF GET ENTIRE BUFFER * CMA,INA CHECK IS NEGATIVE ADA B,I SUBTRACT OUT LAST WORD STA B,I INB COUNT TO BEGINNING OF NEXT SECTOR ISZ TEMP2 COUNT UP SECTOR NUMBER ISZ TEMP1 CHECK FOR DONE WITH ENTIRE WRITE BUFFER JMP RCGL NO, GO DO ANOTHER SECTOR JMP RCGEN,I RETURN * * ROUTINE TO PICK A RANDOM CYLINDER AND HEAD NUMBER * * RNCH NOP RNCA EQU * JSB RAND GET A RANDOM NUMBER ALF,ALF USE LEFT HALF AND B377 CYL < 256 STA CYLX SAVE IN CYLINDER REFERENCE WORD CMA ONES COMPLEMENT ADA CYPP CANNOT BE A NON-EXISTANT CYLINDER SSA SKIP IF OKAY JMP RNCA OTHERWISE, TRY AGAIN JSB CYLJ TRANSLATE CYLX INTO CYL * JSB RAND GET A RANDOM NUMBER RAR,RAR TO ELIMINATE CORRELATION-SECTOR AND B1 HEAD < 2 STA HEAD SET HEAD NUMBER JMP RNCH,I RETURN * * ROUTINE TO PICK A RANDOM SECTOR NUMBER * * RNSC NOP RNSA EQU * JSB RAND CALL RAND THREE TIMES TO JSB RAND GET THREE GOOD BITS ON RIGHT END JSB RAND WANT NO CORRELATION WITH HEAD NUMBER JSB RAND RAR DO NOT USE BIT 0(NOT RANDOM) AND B37 SECTOR < 32 STA SECTR SAVE SECTOR NUMBER CMA ONES COMPLEMENT ADA SCPT TEST FOR LEGAL SECTOR NUMBER SSA SKIP IF OKAY JMP RNSA OoqB@EXPECTED STATUS RETURNED IN END * OF CYL CHECK (TEOC) IS * NORMAL COMPLETE * 1=>EXPECTED STATUS RETURNED IN * END OF CYL CHECK (TEOC) IS END OF CCNT BSS 1 COPRN NOP CSTOR BSS 1 CYL BSS 1 CYLINDER NUMBER CTYPE BSS 1 HOLDS CURRENT TYPE INDEXES FOR DEVICE TYPES PRESENT CTYPT BSS 1 TEMPORARY STORAGE FOR MODIFIED CTYPE D6000 OCT 36000 DCNT BSS 1 DERR OCT 0 USED TO CHECK BUFFERS DERR1 BSS 1 USED TO CHECK BUFFERS DFLT BSS 1 DFRST BSS 1 USED TO CHECK BUFFERS DISCK OCT 0 DISABLE CHECKING IN OPDSN OF CYL,HEAD,SECTOR * IF = 1, DO CHECKING IF = 0 DMAWC BSS 1 DMRF OCT 0 DMA ERROR INDICATOR DSTEP OCT 177777 E7117 ASC 1,NO EFLAG BSS 1 ELOC BSS 1 LAST ERROR NUMBER ERR BSS 1 NUMBER OF ERRORS EXPTS OCT 1 0 => EXPECTED TERM. STATUS NOT PRINTED * 1 => EXPECTED TERM. STATUS PRINTED F2040 ASC 1,T FERR BSS 1 NUMBER OF FATAL ERRORS FFLAG OCT 0 FIFCT BSS 1 STORES NO. TO BE USED IN CHECKING FIFO FIFLK BSS 1 FIFO LOCK FOR DETERMINING IF 16 OR * 3 LEVELS OF FIFI PRESENT FINSH BSS 1 SAVES LAST ADDRESS IN MOVING DATA STRING FOR STATUS FL6 BSS 1 FLMSK BSS 1 FLOOP BSS 1 EQUAL 0 IF NOT FROM BIT 2 LOOP FSAVE BSS 1 GLOB1 BSS 1 GLOB2 BSS 1 GLOB3 BSS 1 GLOB4 BSS 1 GLOB5 BSS 1 GLOB6 BSS 1 H0000 OCT 70000 HEAD BSS 1 BITS 6 - 0 HEAD NUMBER IFRST BSS 1 ISR BSS 1 LCNT BSS 1 LIMIT BSS 1 LONGF OCT 1 0 => LONG FORM OF STATUS NOT GIVEN * 1 => LONG FORM OF STATUS GIVEN LOCAL BSS 1 M32K OCT 0 MASK1 BSS 1 MASK2 BSS 1 MAX DEC 40 NO. OF ERRORS FOR UNIT REMOVAL MCPU OCT 0 <> \h-1 IMPLIES ALLOW REG. TIME IN WAITS * = -1 IMPLIES ALLOW 1 SEC. IN WAITS * = 200B => RESET HOLD BIT IN VERIFY MDFLG BSS 1 SET TO 14B FOR MULTI-DRIVE NBSZE DEC -1024 NI BSS 1 NLOOP BSS 1 NOTLC BSS 1 NOWDS OCT 0 NSECT BSS 1 NUMP DEC 3 OLCYL BSS 1 OPCNT BSS 1 OPSRT BSS 1 PASS BSS 1 PASS NUMBER STORED HERE PMASK OCT 0 PSAVE NOP PTYPE BSS 1 INDEX ASSOC. WITH CURRENT DEVICE TYPE RCYL OCT 0 RHDS OCT 0 RMASK OCT 0 S400 DEF S40 S4BUG BSS 1 SAVA BSS 1 SAVB BSS 1 SCNT BSS 1 SECTR BSS 1 SECTOR WHERE CURRENT OPERATION * WILL START SFLAG BSS 1 SHTAS BSS 1 SHTS2 BSS 1 SOFT BSS 1 0 => SOFT ERRORS NOT PRINTED * 1 => SOFT ERRORS PRINTED SOFTA DEF SOFT SPDVR OCT 0 0 IMPLIES PRINT PCOP * 1 IMPLIES PRINT S,P,D INFO. STAS1 BSS 1 STAS2 BSS 1 STP56 BSS 1 STEPN OCT 0 STOVR BSS 1 SECOND TIME OVERRIDE SVCTA BSS 1 USED TO TIME SEEKS IN S2 AND S4 TCYL OCT 0 TEMP1 BSS 1 TEMP2 BSS 1 TEMP3 BSS 1 TEMPS BSS 1 TMXE OCT 0 TRT BSS 1 ADDRESS OF LAST ENTRY IN CYL. TABLE FOR THIS UNIT TSOFI DEF TSOFT TYPE BSS 1 INDICATES COL. OF TABLE TO USE IN STATUS CONVERSION * FOR OUTPUT * PLUS ONE UNITS DEF UNITA UNITA OCT 0 BSS 7 UNITC OCT 1 UNIT OCT 0 UNSET OCT 0 DETERMINE IF DEFAULT FOR UNIT TABLE * HAS BEEN SET VAL1 BSS 1 VAL2 BSS 1 VALID OCT 0 VALUE BSS 1 WCNT BSS 1 POSITIVE WORD COUNT FOR * CURRENT OPERATION WD0 DEF * WD1 BSS 1 WD2 BSS 1 WD3 BSS 1 WD4 BSS 1 WD5 BSS 1 WD6 BSS 3 WTYPE BSS 1 WWCNT OCT 0 XMCPU OCT 0 => NOT IN MCPU MODE * 1 => IN MCPU MODE XXX1 BSS 1 USED FOR SHORT ;TEMP. STORAGE XXX2 BSS 1 XXX3 BSS 1 XXX4 BSS 1 CVT3 EQU WD1 CVT1 EQU WD2 CVT2 EQU WD3 CVT DEF WD1 SKP D0 DEC 0 B1 DEC 1 D1 EQU B1 BIT0 EQU B1 D2 DEC 2 CRLFL EQU D2 BIT1 EQU D2 D3 DEC 3 B3 EQU D3 D4 DEC 4 BIT2 EQU D4 B4 EQU D4 D5 DEC 5 D6 DEC 6 D7 DEC 7 B7 EQU D7 D8 DEC 8 BIT3 EQU D8 B10 EQU D8 D9 DEC 9 B11 EQU D9 D10 DEC 10 B12 EQU D10 D11 DEC 11 D12 DEC 12 B14 EQU D12 D13 DEC 13 B15 EQU D13 D14 DEC 14 B16 EQU D14 D15 DEC 15 B17 EQU D15 BIT4 DEC 16 B20 EQU BIT4 D16 EQU BIT4 D17 DEC 17 D18 DEC 18 B22 EQU D18 D19 DEC 19 B23 EQU D19 D20 DEC 20 B24 EQU D20 B25 DEC 21 D21 EQU B25 B26 DEC 22 D22 EQU B26 D23 DEC 23 B27 EQU D23 B30 DEC 24 D24 EQU B30 D25 DEC 25 B31 EQU D25 B32 DEC 26 D26 EQU B32 D27 DEC 27 B33 EQU D27 D28 DEC 28 B34 EQU D28 D29 DEC 29 B35 EQU D29 D30 DEC 30 B36 EQU D30 B37 DEC 31 D31 EQU B37 B40 DEC 32 BIT5 EQU B40 D32 EQU B40 B41 DEC 33 D33 EQU B41 D34 DEC 34 B43 DEC 35 D35 EQU B43 B44 DEC 36 D36 EQU B44 B45 DEC 37 D37 EQU B45 B46 DEC 38 D38 EQU B46 B47 DEC 39 D39 EQU B47 D40 DEC 40 B51 DEC 41 D41 EQU B51 B52 DEC 42 D42 EQU B52 B53 DEC 43 D43 EQU B53 B54 DEC 44 D44 EQU B54 B55 DEC 45 D45 EQU B55 B56 DEC 46 D46 EQU B56 B57 DEC 47 D47 EQU B57 B60 DEC 48 D48 EQU B60 B61 DEC 49 B62 DEC 50 B64 DEC 52 B65 DEC 53 B66 DEC 54 B67 DEC 55 D55 EQU B67 B70 DEC 56 D56 EQU B70 B71 DEC 57 D57 EQU B71 D58 DEC 58 B72 EQU D58 D59 DEC 59 B73 EQU D59 D60 DEC 60 B74 EQU D60 D61 DEC 61 B76 OCT 76 B75 EQU D61 D62 EQU B76 B77 OCT 77 D63 EQU B77 B100 DEC 64 BIT6 EQU B100 D64 EQU B100 B101 OCT 101 B104 DEC 68 D68 EQU B104 B105 OCT 105 EE EQU B105 B106 OCT Ln 106 D71 DEC 71 B107 EQU D71 D72 DEC 72 B110 EQU D72 D75 DEC 75 D76 DEC 76 B114 EQU D76 B115 OCT 115 D77 EQU B115 NN OCT 116 B116 EQU NN D78 EQU NN B117 OCT 117 D79 EQU B117 D80 DEC 80 B120 EQU D80 B121 OCT 121 D81 EQU B121 B122 OCT 122 D82 EQU B122 B123 OCT 123 D85 DEC 85 YY OCT 131 D90 DEC 90 B135 OCT 135 B140 OCT 140 B141 OCT 141 B146 OCT 146 B147 OCT 147 D106 DEC 106 B177 OCT 177 BIT7 OCT 200 HOLD EQU BIT7 D128 EQU BIT7 D138 DEC 138 B377 OCT 377 BIT8 OCT 400 D256 EQU BIT8 B400 EQU BIT8 D276 DEC 276 D384 DEC 384 B777 OCT 777 BIT9 OCT 1000 D512 EQU BIT9 D650 DEC 650 A1400 OCT 1400 B1777 OCT 1777 BIT10 OCT 2000 D1024 EQU BIT10 A2400 OCT 2400 A3000 OCT 3000 A3400 OCT 3400 B3777 OCT 3777 BIT11 OCT 4000 D2048 EQU BIT11 A4000 EQU BIT11 A4400 OCT 4400 A5000 OCT 5000 A5400 OCT 5400 A6000 OCT 6000 A6400 OCT 6400 CRLF OCT 6412 A7000 OCT 7000 A7400 OCT 7400 BIT12 OCT 10000 B0000 EQU BIT12 B0400 OCT 10400 B1000 OCT 11000 B2000 OCT 12000 B2400 OCT 12400 B7400 OCT 17400 B7777 OCT 17777 BIT13 OCT 20000 BLNK0 ASC 1, 0 D8192 EQU BIT13 C0000 EQU BIT13 BB OCT 20040 B2060 OCT 20060 C0377 OCT 20377 C1440 OCT 21440 D0400 OCT 30400 D3514 OCT 33514 D4000 OCT 34000 D7777 OCT 37777 BIT14 OCT 40000 F3000 OCT 53000 F6000 OCT 56000 BIT15 OCT 100000 J0000 OCT 110000 JMPI OCT 126000 JSB1 JSB R1,I P7400 OCT 177400 P7600 OCT 177600 P7637 OCT 177637 P7737 OCT 177737 P7700 OCT 177700 P7777 OCT 177777 THLT2 OCT 106002 HLTC OCT 102010 MM1 DEC -1 MM2 DEC -2 MM3 DEC -3 MM4 DEC -4 MM5 OCT -5 MM6 OCT -6 MM7 DEC -7 MM8 DEC -8 P7770 EQU MM8 MM10 DEC -10 MM12 DEC -12 MM13 DEC -13 MM14 DEC -14 MM15 DEC -15 MM16 DEC -16 MM31 DEC -31 MM48 OCT -60 MM56 OCT -70 MM58 OCT -72 MM64 EQU P7700 MM71 DEC -71 MM105 DEC -105 MM124 DEC -124 MM128 EQU P7600 M256 EQU P7400 MM512 DEC -512 MM650 DEC -650 M1024 DEC -1024 M1377 DEC -1377 M7936 DEC -7936 * * ASCD0 ASC 1,.0 ASCZZ ASC 1,00 BPTR DEF BUFB WRITE BUFFER BPTR1 DEF BUFB+128 BPTS DEF 34000B READ BUFFER BASE ADDRESS BPTO DEF 36000B OPDSN BUFFER BASE ADDRESS DMACW OCT 0 SKP * * * BASE PAGE LINKS AND POINTERS * * .E6 DEF E6 ADDOI DEF ADDO ASKI DEF ASK CBLKI DEF CABLK BSEKI DEF BSEEK CLSMI DEF CLSMX CODEE DEF TABLE CODEF DEF LAST+1 COMDI DEF COMD COMI DEF COMMD CNFIG DEF INIT CSTRI DEF CSTR CYCKI DEF CYCK TV19 DEF TVP19 FOR WAKEUP COMMAND SEQUENCE CYLCI DEF CYLCH DCHKI DEF DCHK DDD DEF D0 DENDI DEF DEND DMATI DEF DMAT DMERI DEF DMERQ DSOKI DEF DSOK DUMPT DEF DMPTX EFER DEF FER EFERC DEF FERC ELER DEF LER ENDSI DEF ENSTP ERHTI DEF ERHLT ERRNI DEF ERRAN FATLI DEF FATAL FCYKI DEF FCYCK FLAGI DEF FLAG FTRDI DEF FTRDF FXITI DEF FIXIT HED0I DEF HED0 HELPI DEF HELP H34SI DEF H34S I131A DEF M131A INPTI DEF INPUT LOOPI DEF LOOP MCHKI DEF MWCHK MESGN BSS 1 NORMI DEF NORM OPCTI DEF OPCNT OPD7A DEF OPD7B OPD7I DEF OPD7 OPDNI DEF OPDSN OPNDI DEF OPEND PCK2I DEF PACK2 P013A DEF JP13A P013B DEF JP13B P065E DEF JP65E P146A DEF M146A PATR DEF PATTR PCOPI DEF PCOPR PFMI DEF FMI PRHDI DEF PRTHD PRNI DEF PRNT1 PUNTI DEF PUNT R1 DEF RETRN RJCTI DEF RJECT RNCHI DEF RNCH RPARI DEF RPAIR RQSAI DEF RQSTA RWSTI DEF RWSET RWTBL BSS 1 RWT48 DEF RW48 RWT64 DEF RW64 S23AI DEF ST23A S23BI DEF ST23B S23CI DEF ST23C S23DI DEF ST23D SENDI DEF SEND SKIPI DEF SKIP SLFHI DEF SLFHD SLHDI DEF SLHD SLNHI DEF SLNH STTCI DEF STATC SUNTI DEF SUNIT SW2I DEF SW2 TEOCI DEF TEOC TP1GI DEF TVP1G TV1 DEF TVP1 TV2 DEF TVP2 TV4 DEF TVP4 TV5 DEF TVP5 TV6 DEF TVP6 TV8 DEF TVP8 TV9 DEF TVP9 TV10 DEF TVP10 TV13 DEF TVP13 TV14 DEF TVP14 TV15 DEF TVP15 TV17 DEF TVP17 TV18 DEF TVP18 TV20 DEF TVP20 TV21 DEF TVP21 TV22 DEF TVP22 TV23 DEF TVP23 TV24 DEF TVP24 TV25 DEF TVP25 UHERI DEF UHERE UNXFI DEF UNXF VAL DEF VALUE VARLC BSS 1 WADRI DEF WADRA WAITI DEF WAITS WAXI DEF WAX WENDI DEF WEND WRCLI DEF WRCL * * POINTERS TO TABLES THAT ARE DEVICE DEPENDENT * THEAD DEF DHTB HEADS PRESENT ON GIVEN DEVICE TYPES HDON DEF UHTB HEADS SELECTED ON A GIVEN UNIT UTYPE DEF UTTB DEVICE TYPE OF A GIVEN UNIT ATYPE DEF ATTB ASCII CODE FOR GIVEN DEVICE TYPE TYPTB DEF ITTB MAPPING FROM DEVICE TYPE INTO ENTRIES IN TABLE CYLTB DEF CTTB CYLINDER TABLE POINTERS FOR EACH DEVICE TYPE EUNBA DEF UHCTB UNITS WHOSE HEADS ARE TO CHANGE DDTB DEF DDTBP DEVICE DEPENDENT TABLE POINTER * * VARIABLES THAT ARE DEVICE DEPENDENT * DDTBF DEF *+1 DEVICE DEPENDENT TABLE CYPP BSS 1 NO. OF CYLINDERS / PACK FTR BSS 1 ADDR. OF LOC. CONTAINING FIRST TRACK OF * CYL TABLE FOR THE CURRENT UNIT SCPT DEC 48 NO. OF SECTORS/TRACK TRPC OCT 3 NO. OF TRACKS/CYLINDER MHEAD BSS 1 MINUS NO. OF HEADS LASTC BSS 1 LAST CYLINDER MSC2 BSS 1 RELATED TO NO. OF SECTORS WDPT BSS 1 WORDS /TRACK SVCTV BSS 1 USED TO CALCULATE RANDOM SEEK TIMES * VALUE IS DETERMINED EXPERIMENTALLY * FOR EACH DRIVE TYPE POFST BSS 1 POSITIVE OFFSET FOR CURRENT DRIVE TYPE DHD6 OCT 7 ALL VALID HEADS FOR THIS DRIVE HDONV OCT 3 VALID HEADS FOR THIS UNIT STYPE BSS 1 STORES DRIVE TYPE AS SEEN BY THE CONTROLLER * FOR THE CURRENT UNIT * 2 => 7905 * 1 => 7920 DRIND BSS 1 DRIVE INDEX INTO TABLES DDTBL DEF HDONV * * * THE FOLLOWING WORDS AND EQUATES DETERMINE THOSE * STATUSES, COMMANDS, SIZES, ETC. sHTHAT MIGHT * VARY BECAUSE OF DESIGN CHANGES * * CYCHK EQU A3400 CYCLIC CHECK COMMAND DFTB EQU BIT13 DEFECTIVE TRACK BIT FOR ADDRESSES PALT EQU A6000 ALTERNATE POSITION COMMAND POSIT EQU BIT9 POSITION COMMAND READC EQU A2400 READ COMMAND STATS EQU A1400 STATUS COMMAND WRILB EQU BIT14 WRITE LOCKOUT BIT FOR ADDRESSES WRITA EQU A5400 WRITE ADDRESS COMMAND WRITC EQU BIT11 WRITE COMMAND CLRD EQU D0 COLD LOAD READ RECAL EQU BIT8 RECALIBRATE RSECA EQU BIT10 REQUEST SECTOR ADDRESS RFULS EQU A3000 READ FULL SECTOR WFULS EQU A4400 WRITE FULL SECTOR CLEAR EQU A5000 RQSYN EQU A6400 REQUEST SYNDROME RWOFF EQU A7000 READ WITH OFFSET SFMSK EQU A7400 SET FILE MASK RWOVY EQU B1000 READ WITHOUT VERIFY RQADD EQU B2000 REQUEST DISC ADDRESS DISCT EQU B2400 NOP-DISCONNECT * * STATUS DEFINITION * * WORD 1 (STAS1) * * BIT0-BIT7 UNIT NUMBER * BIT8-BIT12 ENODED STATUS * BIT13 DEFECTIVE TRACK * BIT14 PROTECTED TRACK * BIT15 SPARE TRACK * * ENCODED PART OF WORD 1 * * 00 NORMAL COMPLETION * 01 ILLEGAL OPCODE * 02 UNIT AVAILABLE * 07 CYLINDER COMPARE ERROR * 10 UNCORRECTABLE DATA ERROR * 11 HEAD-SECTOR COMPARE ERROR * 12 I/O PROGRAM ERROR * 14 END OF CYLINDER * 16 OVERRUN * 17 CORRECTABLE DATA ERROR * 20 ILLEGAL ACCESS TO SPARE TRACK * 21 DEFECTIVE TRACK * 22 ACCESS NOT READY DURING DATA OPERATION * 23 STATUS-2 ERROR * 26 ATTEMPT TO WRITE ON PROTECTED OR DEFECTIVE TRACK * 27 UNIT UNAVAILABLE * 37 DRIVE ATTENTION * * WORD 2 (STAS2) * PBBIT EQU BIT0 DRIVE BUSY NRBIT EQU BIT1 DRIVE NOT READY * BIT2 SEEK CHECK FSBIT EQU BIT3 FIRST STATUS FAULT EQU BIT4 FAULT FOBIT EQU BIT5 FORMAT FLBIT EQU BIT6 PRu*<:6OTECTED * BIT7 ATTENTION * BIT8 SECTOR COMPARE * BIT9-BIT14 ADDRESS OF LAST AVAILABLE * SURFACE * BIT15 STATUS-2 ERROR (BIT0 LOR BIT1 * LOR BIT2) * < HED RAND * * * * RANDOM NUMBER GENERATOR * * THIS ROUTINE GENERATES BIT PATTERNS FOR * THE DISC DIAGNOSTIC. NO CLAIM IS MADE FOR * STATISTICAL RANDOMNESS. * * EXITS WITH PATTERN IN A, * B UNCHANGED, * * * RAND NOP LDA BASE LOAD BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF STILL POSITIVE LDA BASE OOPS, BASE NOT BIG ENOUGH CLE,ELA DOUBLE BASE OR REMAINDER STA BASE FOR NEXT TRY JMP RAND,I * PRIME DEC -31069 * THIS PRIME NUMBER LOOPS EVERY * 31068 TIMES IN ITS RECIPROCAL * EXPANSION BASE ABS 034521B HED SEEK,ADDR,SEES,SEEH,STAT,DADO * * * ROUTINES TO DO COMMONLY REQUIRED OPERATIONS. * * SEEK NOP LDA TCYL SAVE STA OLCYL OLD CYLINDER LDA CYL SAVE FOR STA TCYL NEXT OLD CYLINDER LDB B44 CURRENT OPERATION CODE LDA POSIT SEEK COMMAND JSB ADDR PASS ADDRESS TO DISC JMP SEEK,I REJECTED SC10 STC SC START SEEK JMP SEEK,I * ADDR NOP JSB COMDI,I ISSUE COMMAND JSB RJCTI,I CHECK FOR REJECT JMP ADDR,I REJECTED ISZ ADDR LDA CYL PASS CYLINDER JSB DADO TO DISC LDA HEAD PASS HEAD ALF,ALF AND IOR SECTR SECTOR TO DISC SC15 OTA SC,C OUTPUT WORD JMP ADDR,I * SEES NOP LDB B15 LDA PALT JSB ADDR NOP REJECTED-IGNORE JMP SEES,I * SEEH NOP LDB B74 LDA POSIT SEEK COMMAND JSB ADDR PASS ADDRESS TO DISC NOP REJECTED-IGNORE JMP SEEH,I * STAT NOP GET STATUS LDA STATS STATUS COMMAND LDB COPRN JSB COMDI,I ISSUE COMMAND JSB RJCTI,I CHECK FOR REJECT NOP REJECTED-IGNORE SC07 LIA SC,C GET STATUS-1 STA STAS1 JSB FLAGI,I JMP STL2 E12 JSB ERROR NO FLAG GETTING STATUS JSB CBLKI,I CALL ADDO IF OK STL2 EQU * SC09 LIA SC,C GET STATUS-2 STA STAS2 JMP STAT,I * DADO NOP SC03 OTA SC,C OUTPUT WORD JSB FLAGI,I JMP DADO,I SC05 SFS SC JMP E63 E11 JSB ERROR LATE FLAG SC39 CLF SC RSS E63 JSB ERROR NO FLAG JSB CBLKI,I CALL ADDO IF OK JMP DADO,I * HED POLL,STMSK,OSTAT,RESET,OMASK POLL NOP LDB COPRN DON'T CHANGE CURRENT OPERATION LDA DISCT NOP/DISCONNECT COMMAND JSB COMI,I ISSUE COMMAND SC16 OTA SC,C JMP POLL,I * STMSK NOP SET FILE MASK LDB COPRN DON'T CHANGE CURRENT OPERATION LDA SFMSK JSB COMDI,I SC14 STC SC JSB CLSMI,I MAKE UNIT NO. OF STAT-1 * A DONT CARE JMP STMSK,I * OSTAT NOP LDA B35 CURRENT OPERATION IS STATUS STA COPRN JSB STAT GET STATUS JMP OSTAT,I * * RESET * RESET NOP LDB B4 LDA CLEAR CLEAR COMMAND JSB COMI,I ISSUE COMMAND SC23 OTA SC,C JSB CLSMI,I MAKE UNIT NO. OF STAT-1 * A DONT CARE JMP RESET,I * OMASK NOP LDA B60 SET MASK STA COPRN JSB STMSK JMP OMASK,I HED SEEKH,FSEEK * SEEKH * SEEK HOME (RECALIBRATE) * SEEKH NOP LDA TCYL STA OLCYL CLA STA TCYL SAVE FOR NEXT OLD CYLINDER LDB B76 LDA RECAL RECALIBRATE COMMAND JSB COMI,I ISSUE COMMAND SC24 OTA SC,C SC25 STC SC LDA SEEKH MOVE RETURN ADDRESS STA WAITI,I LDA M1377 ALLOW 1377 MS JMP WAXI,I * PERFORM JSB SEEK * JSB WAITS * JSB WCHK * FSEEK sNOP JSB SEEK PERFORM SEEK JSB WAITI,I WAIT FOR SEEK TO COMPLETE FSK1 EQU * LDB B7400 =17400 LDA SHTAS STA FSAVE SAVE STATUS-EXPECTED FOR OTHER STB SHTAS EXPECTED STATUS FOR SEEK IS 0 JSB WCHK CHECK STATUS LDA FSAVE STA SHTAS RESTORE EXPECTED STATUS JMP FSEEK,I HED PCOP,ERROR,B11CK,SWR,PRINT,PRNT1,FPRNT,CNVRT,TTYCK * PCOP NOP ROUTINE TO PRINT COPR LDA COPRN JMP PCOPI,I * * ERROR * REPORT ERROR MESSAGES * USES SIOLO,SWR,B11CK * THE RETURN ADDRESS IS USED TO LOOK UP THE ADDRESS,LENGTH AND * NUMBER OF THE ERROR MESSAGE * ERROR NOP CLF 0 DISABLE INTERRUPTS CCB ADB ERROR LDA EFER,I FIND ERROR NUMBER BASED ON RETRN ER2 EQU * CPB A,I ADDRESS AND TABLE JMP ER1 FOUND IT INA CPA ELER,I JMP 1777B PROGRAM ERROR,PAGE 0 MAY BE * WIPED OUT. JMP ER2 ER1 EQU * ADA EFERC,I ADA MM1 STA ELOC JSB FPRNT PRINT MESSAGE LDB ELOC ADB MM8 -8 SSB SKIP IF ERROR NUMBER GTR THAN 7 JSB ERHTI,I CHECK FOR HALT JMP ERROR,I * * B11CK * IF TTY SUPPRESSED,RETURN * IF TTY NOT SUPPRESSED,SKIP NEXT INSTRUCTION ON RETURN * USES SWR * B11CK NOP JSB SWR AND BIT11 SZA,RSS IS TTY SUPPRESSED? ISZ B11CK NO JMP B11CK,I * * SWR * INPUT SWITCH REGISTER TO A-REGISTER * SWR NOP LIA 1 IOR ISR CAPTURE ALL SWITCHES STA ISR WHICH ARE SET LIA 1 JMP SWR,I * * PRINT * A = ERROR NUMBER * PRINT NOP JSB PRNI,I GET ADDR. AND LENGTH JMP PRINT,I TTY SUPPRESSED JSB SIOLO,I OUTPUT MESSAGE ISZ RMASK JMP PRINT,I * * * FPRNT *  OUTPUT TO FAST DEVICE IF CONFIGURED * FPRNT NOP LDB 113B IS FAST DEVICE SZB CONFIGURED? JMP FPR1 YES JSB PRINT OUTPUT TO SLOW DEVICE JMP FPRNT,I FPR1 EQU * JSB PRNI,I GET MESSAGE AND LENGTH JMP FPRNT,I TTY SUPPRESSED JSB SIOFO,I ISZ RMASK JMP FPRNT,I * * * CNVRT CLEARS E AND CALLS O2ASC * CNVRT NOP CLE JSB O2ASC,I JMP CNVRT,I * * TTYCK * RETURN IF TTY NOT AVAILABLE FOR NON-ERROR MESSAGES * INCREMENT RETURN ADDRESS IF PRINTOUT OK * TTYCK NOP JSB SWR LOAD SWITCH REGISTER AND A6000 SZA,RSS IS TTY AVAILABLE? ISZ TTYCK YES JMP TTYCK,I RETURN HED DECIN,DCIN1,DCIN2,SWR4 * * DECIN * CONVERTS DECIMAL INTEGERS TO ASCII * A=VALUE ON INPUT * CVT1 = MIDDLE TWO DIGITS ON EXIT * CVT2 = LAST TWO DIGITS ON EXIT * CVT3 = FIRST TWO DIGITS ON EXIT * DECIN NOP CLE LDB CVT TEMPORARY STORAGE BUFFER JSB I2ASC,I JMP DECIN,I * * * DCIN1 * STORE ONE WORD OF CONVERTED A AT B * DCIN1 NOP STB LOCAL SAVE POINTER JSB DECIN CONVERT TO ASCII LDA CVT2 STORE STA LOCAL,I INTO MESSAGE JMP DCIN1,I * * DCIN2 * STORE TWO WORDS OF CONVERTED A STARTING AT B * DCIN2 NOP STB LOCAL SAVE POINTER JSB DECIN CONVERT TO ASCII LDA CVT1 STORE LDB LOCAL TWO STA B,I WORDS INB INTO LDA CVT2 MESSAGE STA B,I JMP DCIN2,I * * * SWR4 * INPUT SWITCH REGISTER IF SFLAG = 0 (S1,S2,S3) * USE STORED VERSION IF SFLAG = 1 (S4,S5) * SWR4 NOP LDA SFLAG IS FLAG = O? SZA JMP SWR4A NO JSB SWR YES,USE SWITCH REGISTER JMP SWR4,I SWR4A LDA S400 USE ADA UNIT ( STORED LDA A,I VALUE JMP SWR4,I HED WCHK WCHK NOP TO CHECK FOR ERRORS ON * NON-READ OPERATIONS WRERX EQU * JSB ERRNI,I CALL ERROR COMPARITOR SZA SKIP IF NO ERROR JMP WRERY REPORT ERROR LDA DMRF CHECK FOR DMA NOT FINISHED SZA,RSS SKIP IF ERROR JMP WOUT RETURN IF NO TROUBLE JSB PCOP PRINT CURRENT OPERATION MESSAGE WROUT JSB DMERI,I PRINT DMA ERROR MESSAGE LDA XMCPU SZA,RSS SKIP IF MCPU MODE JSB ADDOI,I WOUT CLA STA STOVR JMP WCHK,I RETURN * * WRERV EQU * JSB ERRNI,I CHECK FOR STATUS ERRORS SZA SKIP IF STATUS OKAY WRERU JSB PRHDI,I PRINT OUT ERROR MESSAGE JMP WROUT WRERY EQU * LDA SPDVR SEE IF SHOULD PRINT OUT S,P,D MESSAGE SZA SKIP IF SHOULD NOT PRINT S,P,D MESSAGE JMP WRERZ JMP TO PRINT S,P,D MESSAGE JSB PCOP PRINT CURRENT OPERATION MESSAGE LDA B64 PRINT STATUS ERROR JMP WRERU WRERZ CLA STA SPDVR RESET S,P,D MESSAGE PROCESSING INDICATOR JSB ICHSI,I LDA B141 JSB PRINT JMP WCHK,I ICHSI DEF ICHS HED DGEN,DMRFC * DGEN * THIS ROUTINE FILLS UP THE BUFFER WITH RAW RANDOM DATA * USES WCNT AS A LENGTH * USES BUFAD FOR ADDRESS * * DGEN NOP LDA WCNT CMA,INA STA TEMP1 NEGATIVE WORD COUNT LDA BUFAD STA TEMP2 DGL EQU * JSB RAND GET RANDOM NUMBER STA TEMP2,I ISZ TEMP2 COUNT UP ADDRESS ISZ TEMP1 COUNT JMP DGL JMP DGEN,I * * DMRFC * REMOVE BIT 15 FROM DMRF * DMRFC NOP LDA DMRF ELA,CLE,ERA CLEAR BIT 15 STA DMRF CLA STA NOWDS DON'T WORRY ABOUT WORD COUNT JMP DMRFC,I HED DMR,DMW,XSFER * * * THESE ROUTINES SET UP DMA AND START THE DATA CHANNEL. * * THE DMR ROUTINE SETS UP A READ INTO THE INPUT * BUFFER ( ADDRESS IN BUFAE, COUNT IN WCNT ) * * THE DMW ROUTINE SETS UP A WRITE FROM THE OUTPUT * BUFFER ( ADDRESS IN BUFAD, COUNT IN WCNT ) * * DMR NOP SET UP DMA READ OPERATION LDA DMACW LOAD DMA COMMAND WORD DM6A OTA DMAD TO DATA CHANNEL DM2A CLC DMAC PREPARE TO LOAD ADDRESS LDA BUFAE IOR BIT15 OR IN DIRECTION BIT DM2B OTA DMAC OUTPUT MEMORY ADDRESS DM2C STC DMAC PREPARE TO LOAD COUNT LDA WCNT LOAD WORD COUNT CMA,INA TWOS COMPLEMENT IS USED BY DMA DM2D OTA DMAC OUTPUT WORD COUNT JMP DMR,I RETURN * * DMW NOP LDA DMACW LOAD DMA COMMAND WORD DM6C OTA DMAD TO DATA CHANNEL DM2E CLC DMAC PREPARE TO LOAD ADDRESS LDA BUFAD AND LDB DMW STB DMR JMP DM2B * XSFER NOP JSB COMI,I OUTPUT COMMAND JSB DMATI,I JSB STAT GET STATUS JMP XSFER,I HED READ,WRITE,RDFUL,WFULL * * * READ AND WRITE * * THESE ROUTINES ARE CALLED TO INITIALIZE ALL * DMA TRANSFERS TO AND FROM THE DISC. * * THEY ASSUME THAT * THE WORD COUNT IS IN WCNT * READ ASSUMES BUFFER ADDRESS IN BUFAE * WRITE ASSUMES BUFFER ADDRESS IN BUFAD * * READ NOP JSB DMR SET UP DMA READ OPERATION LDB B46 SET UP CURRENT OPERATION LDA READC LOAD READ COMMAND JSB XSFER ISSUE COMMAND JMP READ,I RETURN * * * WRITE NOP JSB DMW SET UP DMA WRITE OPERATION LDB B45 SET UP CURRENT OPERATION LDA WRITC LOAD WRITE COMMAND JSB XSFER ISSUE COMMAND JMP WRITE,I * * READ FULL SECTOR * RDFUL NOP JSB DMR START DMA LDB B3 LDA RFULS JSB XSFER ISSUE COMMAND JMP RDFUL,I * * WRITE FULL SECTOR * WFULL NOP JSB DMW START DMA LDB B101 LDA WFULS JSB XSFER ISSUE COMMAND JMP WFULL,I HED CHAR,DCHAR,OCHAR,HIN,H31 * * * CHAR * GET NEXT NON-BLANK CHARACTER * WONT SKIP IF BUFFER EMPTY * CHAR NOP CHAR1 ISZ CCNT DONE? PPT3 RSS NO JMP CHAR,I YES LDA BPTRA,I TTY WORD ISZ IFRST JMP SEC ALF,ALF USE LEFT HALF JMP COUT SEC CCB USE RIGHT HALF STB IFRST ISZ BPTRA BUMP WORD POINTER COUT AND B377 STA CCHAR SAVE IT XOR B40 IS IT BLANK SZA,RSS SKIP IF NO JMP CHAR1 IGNORE BLANKS LDA CCHAR ISZ CHAR JMP CHAR,I * * * DCHAR * GET DECIMAL VALUE * SKIPS ON EXIT IF NOT DONE * DCHAR NOP LDA MM58 UPPER LIMIT LDB VAL POINTS TO VALUE DCHR1 STA VAL2 STB VAL1 LDA MM7 STA DCNT LDA MM1 STA DFLT DFLT = -1 CLA INITIALIZE TO ZERO DCHR2 STA VALUE STORE VALUE JSB CHAR GET NEXT CHARACTER JMP DOUT2 DONE XOR B54 IS CHARACTER SZA,RSS A COMMA JMP DOUT1 YES,DONE LDA VAL2 CHECK ADA CCHAR VALIDITY SSA,RSS OF CHARACTERS JMP CCERR BAD INPUT LDA CCHAR ADA MM48 LOWER LIMIT SSA JMP CCERR STA DFLT DFLT # -1 LDB VALUE OK,BUILD BLF,RBR UP ADB VAL1,I VALUE ADB VAL1,I ADA B ISZ DCNT JMP DCHR2 CONTINUE CCERR JSB H31 LDA STEPN GET CURRENT STEP NO. CPA D90 SEE IF IN OPDSN SECTION JMP OPD1I,I JMP DOUT2 OPD1I DEF OPD1 DOUT1 ISZ DCHAR NORMAL EXIT DOUT2 LDA VALUE ERROR OR END OF READ BUFFER JMP DCHAR,I * * * OCHAR * GET OCTAL VALUE * SKIPS ON EXIT IF NOT DONE * tnOCHAR NOP LDA OCHAR STA DCHAR SET RETURN LDA MM56 UPPER LIMIT LDB DDD POINTS TO D0 JMP DCHR1 * * * HIN * INPUT FROM TTY * HIN NOP LDA D72 CHARACTER COUNT LDB BINA BUFFER ADDRESS JSB 104B,I TTY INPUT DRIVER SZA,RSS WERE ZERO WORDS INPUT? JMP HIN+1 YES,TRY AGAIN CMA STA CCNT SAVE CHARACTER COUNT CCA STA IFRST FLAG = -1 LDA BINA STA BPTRA SET POINTER JMP HIN,I BINA EQU BPTR * * H31 NOP LDA B31 BAD INPUT JSB PRINT JMP H31,I HED MC,NORM,FCYCK,COMD,CYLOK,CUNEN * * * MC NOP MASTER CLEAR DM6E CLC DMAD DM6F STF DMAD KILL DMA TRANSFER SC13 CLC SC SC22 CLF SC JMP MC,I * * * NORM NOP SET UP NORMAL STATUS CLA STA SHTAS CONTROLLER STATUS STA SHTS2 DRIVE STATUS LDA MM1 STA MASK1 CONTROLLER MASK LDA P7737 STA MASK2 DRIVE MASK JMP NORM,I * * FCYCK * PERFORM COMPLETE VERIFY OPERATION,INCLUDING SEEK. * A = NUMBER OF SECTORS ON ENTRY. * FCYCK NOP STA WCNT SAVE NUMBER OF SECTORS JSB FSEEK SEEK LDA WCNT JSB CYCKI,I JSB WCHK CHECK STATUS JMP FCYCK,I RETURN * COMD NOP JSB COMI,I BUILD COMMAND JSB DADO ISSUE IT JMP COMD,I CYLOK NOP LDA VALUE GET CYL. NO. ENTRY SSA SKIP IF CYL. NO. >=0 JMP CYLK1 IF VALUE IS NEG. DO NOT PLACE IN TABLE LDA DDTB GET BASE ADDR. OF TABLE OF POINTERS * TO DEVICE DEPENDENT TABLES ADA WTYPE GET CORRECT POINTER LDA A,I GET ADDR. OF NO. OF CYL. ENTRY FOR * THIS TYPE OF DRIVE LDA A,I GET NO. OF CYLS. FOR THIS TYPE DRIVE CMA,INA ADA 640 VALUE SSA,RSS SKIP IF VALUE IS LEGAL JMP CYLK1 JSB CSTRI,I PLACE CYL. INTO CYL. TABLE JMP CYLOK,I CYLK1 JSB H31 OUTPUT INPUT ERROR MESSAGE JMP CYLOK,I CUNEN NOP LDA OSTAT CPA STTCI RSS ISZ CUNEN LDA UNIT JMP CUNEN,I ORG 1777B DONE NOP ALLOW JUMP FROM ANY PAGE Ȱ6 HED START ORG 2000B * START * INITIALIZES PROGRAM AND STUFFS HALTS INTO LOW CORE * START CLC 0,C TURN EVERYTHING OFF CC21 CLF CC RESET FLAG JSB SET1I,I NO RSTRT JSB TTYCK IS TTY AVAILABLE? JMP AGAIN NO CLA H0 JSB PRINT CARTRIDGE DISC MEMORY DIAGNOSTIC AGAIN EQU * LDA XMCPU SEE IF MCPU MODE SZA SKIP IF NOT MCPU MODE JMP QMCPU LDB D2 TRAP CELL LOCATION LDA THLT2 TRAP CELL HALT OLP STA B,I INB INA CPB B100 TRAP CELL HALTS COMPLETE? RSS YES JMP OLP NO,REPEAT * CLA STA ALLE STA PASS RESTART STA WCNT STA MCPU DONT ALLOW 1 SEC. TIMEOUT IN WAITS, OR HOLD BIT * TO BE CLEARED IN VERIFY STA S4BUG STA BLOCK STA CAUTN STA EFLAG STA PMASK STA FFLAG STA STOVR LDA TSOFT BUILD STA SOFT SOFT PRINT FLAG JSB SET2I,I NO LDA MM5 STA LIMIT NUMBER OF RETRIES ON DATA ERRORS LDA BPTR STA BUFAD INITIALIZE BUFAD BGNB CLA,INA STA NI LDA UNITA STA UNIT UNIT = UNIT TABLE(0) BGN EQU * CLA STA ISR ZERO SWITCH REGISTER SUMMARY STA ERR ZERO NUMBER OF ERRORS STA FERR ZERO NUMBER OF FATAL ERRORS STA CYL STA HEAD STA SECTR STA STEPN STEP NUMBER = 0 JSB CUNTI,I A MUST BE 0 - ZERO UNIT COUNTERS JSB NORMI,I SET UP NORMAL STATUS CLA,INA A _ 1 STA SECTN START WITH SECTION ONE STA ACTAD LDA D3 LDB MDFLG STA MDFLG CPB B14 JMP BGNB CCA STA FIFLK PLACE -1 IN FIFLK SO THAT WILL NOT * CHECK -15 MORE THAN ONCE * FOR A MISS COMPARE LDA MM15 =, STA FIFCT BGND LIA 1 STA GLOB1 LDA E4000 BITS 11 AND 14 OTA 1 JSB RESET ISSUE CLEAR COMMAND LDA GLOB1 OTA 1 RESTORE SWITCH REGISTER LDA ERR SEE IF AN ERROR OCCURRED SZA SKIP IF AN ERROR DID NOT OCCUR JMP E103 JUMP TO OUTPUT MESSASGE * "DISC INTERFACE DOES NOT RESPOND" STA FERR LDA FIFCT LDB A * CHECK -15 ONLY ONCE * ON A MISS COMPARE * * TEST CONTROLLER FIFO * SC36 OTA SC SSA,INA DONE? JMP SC36 NO SC37 LIA SC CPA B JMP BGNA ISZ FIFLK IF NOT 0 THEN IS AN ERROR JMP E127 LDA MM2 STA FIFCT PREPARE TO CHECK 3 LEVEL FIFO JMP BGND E127 JSB ERROR INTERFACE FIFO DOES NOT RESPOND HLT6 HLT 6 JMP START E103 JSB ERROR DISC INTERFACE DOES NOT RESPOND JMP HLT6 BGNA ISZ FIFLK NOP SSB,INB JMP SC37 CLA STA FLMSK ALLOW CYLINDER MODE JSB OMASK SET MASK H35 LDA B35 INITIAL STATUS STA COPRN JSB CNVS CLB STB LOCAL ISZ LOCAL DELAY,ALLOW FOR JMP *-1 SWITCH THREE TO BE SET LDA UNIT SAVE STA GLOB4 UNIT NUMBER INST0 CLA * * CLEAR ATTENTION INITIALLY ON ALL DRIVES THAT ARE ONLINE * STA UNIT INST1 EQU * LDA M1024 SET UP FOR 1024 MSEC DELAY STA LCNT INST3 CLA,INA DELAY 1 MSEC JSB TMR,I ISZ LCNT DONE? RSS NO JMP INST5 YES - GIVE UP JSB OSTAT GET STATUS AND D3 DRIVE BUSY + DRIVE NOT READY CPA PBBIT IS UNIT READY AND BUSY? JMP INST3 YES - WAIT INST5 ISZ UNIT NO - CONTINUE LDA UNIT CPA D8 DONE WITH ALL UNITS? CLA,RSS YES JMP INST1 NO - CONTINUE LDB UNSET DETERMINE IF DEFAULT VALUES HAVE BEEN * ENETERED FOR UNIT TABLE SZB,RSS SKIP IF NOT FIRST TIME THRU STA UNITC ZERO UNIT COUNT IF FIRST TIME THRU * ONLY WANT UNITS THAT ARE CONNECTED TO BE STA CTYPE CLEAR CURRENT TYPE INDICATOR JSB UHERE LDA UNSET SEE IF DEFAULT TABLE HAS BEEN ENTERED SZA,RSS SKIP IF THEY HAVE BEEN JMP HLP9 LDA UNITC OBTAIN COUNT OF NO. OF UNITS IN UNIT TABLE SZA SKIP IF NO UNITS IN UNIT TABLE JMP SCALR LDA B130 PRINT OUT MESSAGE SAYING NO UNITS JSB PRINT ARE CONNECTED HLP8 CLA STA FLOOP IF = 0 THEN DONT BELONG IN BIT 2 LOOP * JUMP TO WHERE ORIG. CAME FROM * WHEN GET DONE WITH UNIT TABLE * THAT WILL PUT YOU BACK HERE JMP PUNTI,I GO TO UNIT TABLE PART OF BIT 2 HLP7 CLA,INA STA FLOOP DISABLE INDICATOR LDA UNSET SEE IF WE JUST RETURNED FROM SETTING * DEFAULTS IN UNIT TABLE SZA JMP INST0 GO TO CHECK UNIJTS AGAIN ISZ UNSET SET UNIT DEFAULT ENTRY INDICATOR JMP SCALR CONTINUE DIAG. PROCESSING HLP9 STA UNITA PLACE ZERO IN UNIT TABLE AS ONLY ENTRY INA STA UNITC INDICATE ONLY ONE ENTRY IN UNIT TABLE JMP HLP8 UHERE NOP CLA HLP2 EQU * STA UNIT SET UP UNIT NUMBER LDA UTYPE GET BASE ADDR. OF UNIT-TYPE TABLE ADA UNIT ADD IN OFFSET FOR THIS UNIT LDB A,I GET CURRENT ENTRY IN UNIT-TYPE TABLE STB LTYPE SAVE CURRENT ENTRY, WILL SEE IF IT CHANGES LATER CCB STB A,I CLEAR ENTRY, WILL BE RESTORED ONLY IF STILL * CON;NECTED WHEN I LOOK * ALL ONES INDICATE NOT CONNECTED JSB OSTAT GET STATUS AND NRBIT IS THIS UNIT READY? SZA SKIP IF YES JMP HLP3 NO LDA STAS2 UNIT IS CONNECTED, DETERMINE TYPE ALF,ALF RAR AND B3 OBTAIN TYPE INFO. FROM STATUS 2 WORD LDB UTYPE GET BASE ADDR. OF UNIT-TYPE TABLE ADB UNIT STA B,I YOU JUST UPDATED UNIT-TYPE TABLE ADA TYPTB ADD BASE ADDR. OF TYPE TABLE LDA A,I GET ACTUAL TYPE CMA,INA NEGATE TYPE NO. CLB,INB TYP1 SZA,RSS SEE IF THIS IS THE TYPE NO. JMP TYP2 JUMP IF IT IS RBL MOVE BIT TO NEXT POSITION FOR NEXT TIME INA INCREASE TYPE NO. INDICATOR JMP TYP1 GO LOOP AGAIN TYP2 LDA CTYPE GET CURRENT TYPES FOUND INDICATOR IOR B INCLUDE THIS TYPE STA CTYPE STORE RESULTS HLP4 JSB SEEK ISSUE SEEK JSB WAITI,I JMP HLP1 HLP3 EQU * JSB SEES CLEAR STATUS BITS THAT LATCH HLP1 LDB INITL DETERMINE IF THIS IS THE FIRST TIME THRU SZB,RSS SKIP IF NOT FIRST TIME THRU JMP HLP5 JUMP IF FIRST TIME THRU LDA UTYPE GET BASE ADDR. OF UNIT-TYPE TABLE ADA UNIT ADD DISPLACEMENT FOR UNIT LDA A,I DETERMINE CURRENT TYPE OF UNIT CPA LTYPE COMPARE WITH TYPE ON LAST PASS JMP HLP5 JUMP IF THEY ARE THE SAME LDA UNIT GET CURRENT UNIT NO. ADA B2060 CONVERT TO ASCII TO PLACE IN MESSAGE STA I131A,I STORE UNIT NO. IN MESSAGE LDA B131 PRINT OUT MESSAGE INDICATING THAT TYPE FOR JSB PRINT GIVEN UNIT CHANGED BETWEEN PASSES HLP5 LDA UNIT INCREMENT INA UNIT NUMBER CPA D8 DONE? RSS YES JMP HLP2 NO,CONTINUE JMP UHERE,I SCALR EQU * SECTION CALLER LDB INITL DETERMINE IF FIRST TIME THRU SZB SKIP IF IT IS FIRST TIME THRU JMP HLP6 ISZ INITL SET INDICATOR SAYING WE HAVE PASSED THRU * THE FIRST TIME ALREADY CLA STA UNIT SET SELECTED UNIT EQUAL TO ZERO HD7 LDA UTYPE GET BASE ADDR. OF UNIT-TYPE TABLE ADA UNIT ADD OFFSET FOR THE UNIT LDA A,I GET TYPE FOR THIS UNIT CPA P7777 IF EQUAL THEN UNIT IS NOT CONNECTED JMP HD10 JUMP IF UNIT NOT CONNECTED HD8 LDB TYPTB GET BASE ADDR. OF TYPE TABLE ADB A ADD OFFSET FOR THIS TYPE LDB B,I OBTAIN NEXT TYPE NO. FROM THE TABLE ADB THEAD GET ADDR. FOR HEAD INFO. FOR THIS TYPE LDA B,I GET VALID HEAD MASK FOR THIS TYPE OF DRIVE CPA D7 IS THIS FOR A 7905 RSS CPA B17 IS THIS FOR 7905B AND D3 IF YES, THEN ONLY WANT HEADS 0,1 LDB HDON GET BASE ADDR. OF HEAD-UNIT TABLE ADB UNIT ADD ON OFFSET FOR THIS UNIT STA B,I STORE DEFAULT VALUE IN HEAD TABLE FOR THIS UNIT HD10 ISZ UNIT GO TO THE NEXT UNIT LDA D8 CPA UNIT HAVE WE LOOKED AT ALL THE UNITS JMP HLP6 JUMP IF WE HAVE LOOKED AT ALL THE UNITS JMP HD7 GO LOOK AT NEXT UNIT HLP6 CLA STA STEPN STEP NUMBER = 0 LDA B35 STA COPRN INITIAL STATUS LOOP LDA FLOOP SZA,RSS IF = 0 THEN RETURN TO OTHER PART OF * PROGRAM THAT CAN CALL UNIT TABLE * PROCESSING JMP HLP7 JSB SW2 LDA B140 * OF BIT 2 OPTIONS JSB PȳRINT OUTPUT BIT 2 MESSAGE ILOOP JSB HIN GET INPUT LINE JSB CHAR GET NEXT CHAR., IT IS RETURNED IN A REG. JMP LOOP JSB INPUT CPA ZE DO YOU WANT TO LEAVE BIT 2 DIALOGUE? JMP OUT LEAVE LDA B31 JSB PRINT JMP ILOOP GET INPUT AGAIN OUT LIA 1 GET SWITCH REG. AND MM5 TURN OFF BIT 2 OTA 1 RESTORE SWITCH REG. WITH BIT 2 OFF JMP LOOP GO SEE IF HE TURNED IT BACK ON INPUT NOP LDB A JSB SW2 SEE IF BIT 2 IS STILL ON LDA B RESTORE INPUT CHAR. TO A REG. CPA ZU DO YOU WANT TO CHANGE UNIT TABLE? JMP PUNTI,I JUMP TO CHANGE UNIT TABLE CPA ZQUES JMP MAX2 JUMP TO CHANGE NO. OF ERRORS? CPA ZH DO YOU WANT TO CHANGE HEAD TABLE? JMP HED0I,I JUMP TO CHANGE HEAD TABLE CPA ZP DO YOU WANT TO CHANGE PATTERN TABLE? JMP HD6 JUMP TO CHANGE PATTERN TABLE CPA ZS DO YOU WANT TO CHANGE PRINT OF SOFT ERRORS? JMP SOFT1 JUMP TO CHANGE PRNTING OF SOFT ERRORS CPA ZC DO YOU WANT TO CHANGE CYLINDER TABLE? JMP CYLCI,I JUMP TO CHANGE CYL. TABLE CPA ZO JMP EXPND CPA ZM DO YOU WANT TO CHANGE MCPU MODE JMP QMCPU JUMP TO CHANGE MCPU MODE JMP INPUT,I ZU EQU D85 ZQUES EQU B77 ZO EQU B117 ZH EQU B110 ZP EQU B120 ZS EQU B123 ZC OCT 103 ZM EQU B115 ZE EQU EE B130 OCT 130 B131 OCT 131 LTYPE BSS 1 DRIVE TYPE OF UNIT ON LAST PASS * IN REGARD TO CYL. TABLE INITL OCT 0 INDICATES WHETHER FIRST TIME THROUGH DIAG. * THRU DIAG. P142A DEF M142A P143A DEF M143A B143 OCT 143 MAX2 LDA MAX SET LDB P023A UP INB m MESSAGE JSB DCIN2 LDA CVT3 STA P023A,I LDA B23 H23 JSB PRINT XXXXXX ERRORS/PASS ALLOWED JSB ASKI,I JMP LOOP GO SEE IF BIT 2 STILL SET MAX1 LDA B32 H32 JSB PRINT ENTER ERRORS/PASS JSB HIN JSB DCHAR RSS ERROR OR DONE? JMP MAX1 MUST BE DONE LDB CCNT SZA MAX MAY NOT BE ZERO SZB SKIP IF DONE JMP MAX1 ERROR SSA JMP MAX1 STA MAX JMP MAX2 HD6 EQU * JSB SLFHI,I SELECT FIRST HEAD PAT1 LDA MM1 TWO LINES WILL BE USED STA PCNTA LDA PATR ADDRESS ADA MM10 OF FIRST STA PLOAD PATTERN LDA P027A ADDRESS STA PSTOR OF MESSAGE PC LDA MM5 FIVE PATTERNS PER LINE STA PCNT PB LDB PSTOR LDA PLOAD,I JSB CNVRT CONVERT TO ASCII ISZ PLOAD LDB PSTOR ADB D3 LDA BB TWO ASCII BLANKS STA B,I INB STB PSTOR ISZ PCNT HAVE WE DONE 5 YET? JMP PB NO ISZ PCNTA YES,HAVE WE DONE TEN? JMP PATT1 YES LDA CRLF 06412 STA PSTOR,I ISZ PSTOR JMP PC PATT1 EQU * H27 LDA B27 PATTERN TABLE CONTENTS JSB PRINT JSB ASKI,I JMP LOOP JUMP TO CONTINUE BIT 2 DIALOGUE H30 LDA MM10 STA CSTOR LDA B30 * SEPARATED BY COMMAS JSB PRINT JSB HIN INPUT FROM KEYBOARD PTS JSB OCHAR GET OCTAL VALUE JMP PTS1 ERROR OR DONE? JSB PSTR STORE IN TABLE JMP PTS CONTINUE PTS1 LDA CCNT SZA,RSS SKIP IF ERROR JSB PSTR DONE JMP PAT1 QMCPU JSB SOFEI,I OCT 146 DEF XMCPU DEF M146A JMP LOOP EXPND JSB SOFEI,I OCT 134 DEF LONGF DEF J134A ʰ JSB SOFEI,I OCT 136 DEF EXPTS DEF J136A JMP LOOP SOFT1 JSB SOFEI,I OCT 126 DEF SOFT P126A DEF J126A JMP LOOP SOFEI DEF SOFEX SW2 NOP JSB SWR AND BIT2 IS BIT 2 SET? SZA BRANCH IF NO JMP SW2,I JSB UPRES SEE IF SELECTED UNIT IS PRESENT LDA XMCPU SEE IF MCPU MODE SET SZA,RSS SKIP IF MCPU MODE JMP SW3 LIA 1 IOR BIT3 TURN BIT3 3 ON FOR MCPU MODE OTA 1 SW3 JSB SWR AND BIT3 SZA IS BIT 3 SET? JMP OPDNI,I YES STA VALID JSB UPRES JMP UD1 UPRES NOP * * CHECK TO SEE UNIT IS PRESENT * CCA A = -1 ADA UNITS ADD BASE ADDR. OF UNIT TABLE ADA NI ADD NO. OF UNITS INITIALIZED INCLUDING THIS ONE LDA A,I GET UNIT NO. JSB UNXFI,I UPDATE UNIT DEPENDENT INFO. JSB OSTAT IS UNIT AND NRBIT PRESENT? SZA,RSS JMP UPRES,I LDA UNIT NO STA GLOB1 ADA B2060 STA P050A,I SET UP FIRST PART OF MESSAGE LDA P050B STA GLOB2 LDA NRBIT STA GLOB3 CLA UD2 EQU * STA UNIT CPA GLOB1 LOOK AT ALL OTHER UNITS JMP UD3 NO - SAME UNIT JSB OSTAT IS THIS AND NRBIT UNIT PRESENT? LDB MM16 SZA,RSS LDB UNIT YES AND GLOB3 STA GLOB3 ADB B2060 B = BLANK,BLANK OR BLANK,UNIT # STB GLOB2,I SET UP LAST PART ISZ GLOB2 OF MESSAGE UD3 EQU * CLA,INA ADA UNIT CPA D8 DONE? RSS YES JMP UD2 CONTINUE LDA GLOB3 LDB BB BLANK,BLANK SZA,RSS LDB C1440 #,BLANK STB GLOB2,I E50 JSB ERROR E50 UNIT X MISSING - PRESENT ... LDA PASS SZA JMP UD4 DON'T HALT IF PASS <$> 0 JMP HLP8 UD4 EQU * LDA GLOB1 JSB UNXFI,I STORE NEW UNIT NO., UPDATE DEVICE RELATED TABLES JMP UPRES,I UD1 EQU * LDA SECTN LOAD SECTION NUMBER ADA SECT ADD ON POINTER JMP A,I CALL SECTION SKIP EQU * LDA HLTC =102010 IOR SECTN SECTION NUMBER STA SHLT HALT BETWEEN SECTIONS JSB SWR CHECK FOR HALT AT END OF SECTION AND BIT9 SZA SHLT NOP CLA STA FLMSK JSB OMASK JSB SWR CHECK FOR TEST REPEAT AND BIT7 SZA SKIP IF NO REPEAT JMP SCALR REPEAT LAST TEST THRU EQU * ENTRY POINT FROM SECTION 5 LDB SECTN COUNT UP SECTION NUMBER INB STB SECTN CPB D6 FIVE SECTIONS CLA,INA,RSS JMP SCALR ADA PASS INCREMENT PASS NUMBER STA PASS CCE START WITH RIGHT BYTE LDB CVT JSB I2ASC,I CONVERT TO ASCII LDB P065A LDA CVT1 AND C0377 =20377 STA B,I BLANK,MOST SIGNIFICANT DIGIT INB LDA CVT2 STA B,I MIDDLE TWO DIGITS INB LDA WD4 AND P7400 IOR B54 STA B,I LEAST SIGNIFICANT DIGIT,COMMA JSB SUNTI,I STUFF UNIT NO. INTO PASS MESSAGE LDA ERR LDB P065B CONVERT NUMBER JSB DCIN2 OF ERRORS LDA FERR CMA,INA ADA ERR LDB P065F CONVERT NUMBER OF JSB DCIN2 NON-FATAL ERRORS LDA MM3 STA TEMP1 LDB LONG LDA ISR AND B142 SZA SKIP IF LONG PASS LDB SHORT STB LOCAL SZA JMP PS3 LDA P065E,I ALF,ALF AND D7 GET UNIT # ADA D3514 ISZ A,I SET UP LONG PASS DUMP PS3 NOP LDB P065A ADB MM3 LPASS EQU * LDA LOCAL,I MOVE STRING STA B,I INTO ADB MMq<:61 MESSAGE ISZ LOCAL ISZ TEMP1 JMP LPASS JSB SHEDI,I SET HEADS INTO MESSAGE LDB P065F CHECK ADB D4 FOR LDA B,I MULTI-DRIVE AND MM16 =177760B IOR MDFLG STA B,I LDA ERR SZA,RSS JMP PS1 JSB SWR AND A2400 CPA A2400 BOTH SET? JMP PS2 YES PS1 EQU * JSB TTYCK JMP ECHOS PS2 EQU * LDA 113B FAST OUTPUT SELECT CODE AND B77 STA LOCAL SZA,RSS ZERO? JMP H65 YES LDA 112B SLOW OUTPUT SELECT CODE AND B77 CPA LOCAL SAME AS FAST? JMP H65 YES LDA B65 NO JSB FPRNT PASS XXXX H65 LDA B65 JSB PRINT PASS XXXX ECHOS JMP BGN RUN TEST OVER PCNT BSS 1 PCNTA BSS 1 PLOAD BSS 1 PSTOR BSS 1 SECTN BSS 1 ADDRS DEF INTPT+1 JE6 JMP .E6,I LONG DEF JP65C SHORT DEF JP65D P023A DEF JP23A P027A DEF JP27A P050A DEF JP50A P050B DEF JP50B P065A DEF JP65A P065B DEF JP65B P065F DEF JP65F SHEDI DEF SHEAD E4000 OCT 044000 SET1I DEF SET1+D SET2I DEF SET2+D TSOFT OCT 1 MASTER COPY OF SOFT CUNTI DEF CUNIT * SECT DEF *,I * DEF S1 * DEF S2 * DEF S3 * DEF S4 * DEF S5 * SKP <* CNVS * CNVS NOP * * CTEST * TEST CHANNEL * CLC 0,C INITIALIZE I/O SYSTEM CH1 CLF CH CLEAR CHANNEL FLAG CH2 SFS CH RSS E2 JSB ERROR CLF OR SFS FAILED ON CHANNEL X CH5 STF CH CH8 SFS CH E5 JSB ERROR SFS FAILED WITH FLAG SET - CH. X * * SCREEN TEST * LDA B10 START AT SELECT CODE 10 C1 STA GLOB3 CPA CH13 SAME AS THIS SELECT CODE? JMP C2 YES - SKIP TEST IOR STF0 NO - SET UP STF X STA C3 CH9 CLF CH CLEAR CH C3 STF CH STF X CH10 SFS CH SKIP CH JMP C2 OK E57 JSB ERROR SCREEN TEST ERROR JSB ERHTI,I HALT? C2 EQU * LDA GLOB3 INA CPA B100 DONE? RSS YES JMP C1 NO * TEST INTERRUPT CAPABILITY * LDA CH13,I STA GLOB1 LDA JSB1 SET UP INTERRUPT TRAP CELL STA CH13,I LDA JE6 CC16 STC CC SET CHANNEL TO REQUEST CC17 STF CC AN INTERRUPT STF0 STF 0 ENABLE INTERRUPTS STC 1 * INTERRUPTS STF 1 SHOULD CLC 1 BE CLF 1 DELAYED JMP *+1,I UNTIL DEF *+1 . JSB *+1,I . DEF *+1 . NOP . INTPT NOP * HERE E6 JSB ERROR NO INTERRUPT ON CHANNEL X JMP CC18 RETRN NOP INTERRUPT SUBROUTINE CLF 0 DISABLE INTERRUPTS LDA GLOB1 TRAP CELL HALT STA CH13,I STF 0 TEST INTERRUPT ACKNOWLEDGE NOP * SHOULD NOT NOP INTERRUPT HERE CLF 0 DISABLE INTERRUPTS LDA RETRN DID INTERRUPT OCCUR AT THE CPA ADDRS CORRECT MEMORY LOCATION RSS E7 JSB ERROR INCORRECT RETURN ADDRESS - CH. X CC18 STC CC SET CONTROL CC19 STF CC CLC 0 SHOULD CLEAR ALL CONTROL BITS STF 0  ENABLE INTERRUPTS NOP ** SHOULD NOT INTERRUPT NOP HERE CLC 0 TURN EVERYTHING OFF LDA GLOB1 STA CH13,I * CLF 0 CC20 CLF CC RESET FLAG JMP CNVS,I YES CH13 OCT 0 HED DGEN1,CSTR,PSTR,FRCAL * * DGEN1 * LIMIT WORD COUNT TO 2048. * DGEN1 NOP STA WRSP STA SHTAS LDA D1024 STA WCNT WCNT = 2048 JSB DGEN FILL WRITE BUFFER WITH RANDOM JMP DGEN1,I DATA * CSTR NOP LDA TRT CSTR1 ADA CSTOR DISPLACEMENT INTO TABLE STA CPONT LDA CSTOR SSA,INA,RSS SKIP IF ENTRY GOES INTO TABLE JMP CSTR,I STA CSTOR LDA VALUE CCB CPB DFLT SEE IF DEFAULT = -1, IF YES, * DO NOT CHANGE ENTRY RSS STA CPONT,I JMP CSTR,I CPONT BSS 1 * PSTR NOP LDA PSTR STA CSTR SET UP RETURN LDA PATR JMP CSTR1 FRCAL NOP LDA FRCAL STA FSEEK JSB SEEKH RECALIBRATE JMP FSK1 CHECK STATUS HED S1 - SECTION 1 * SECTION 1 * THIS SECTION TESTS MOST CONTROLLER FUNCTIONS USING SHORT * READS AND WRITES. * WRSP EQU GLOB1 SPD FIELD WRR EQU GLOB2 TIMER SECNT EQU GLOB3 SECTOR COUNTER SBASE EQU GLOB4 EXTRA EQU GLOB5 SAVE EQU GLOB6 P066A DEF JP66A P067A DEF JP67A P070A DEF JP70A P107A DEF J107A I0003 OCT 100003 I0203 OCT 100203 TCNT BSS 1 UPD ASC 1,U/ LRD ASC 1,L/ ST21I DEF STP21 B142 OCT 142 B1400 OCT 11400 S1 EQU * CLB STB SFLAG STB DMRF NO DMA ERRORS AT START STB CYL STB SECTR JSB NORMI,I SET UP NORMAL STATUS JSB SLFHI,I SELECT FIRST HEAD LDA BPTR STA BUFAD INITIALIZE BUFFER ADDRESS LDA BPTS LOAD READ BUFFER ADDRESS STA BUFAE SET POINTER * * STEP 1 * GET4 AND CHECK STATUS FOR 0 * JSB POLL LDA D1 JSB COPR LDA P7637 STA MASK2 JSB OSTAT JSB MCHKI,I CHECK STATUS JSB ENDSI,I * * STEP 2 * RECALIBRATE * LDA D2 JSB COPR JSB FRCAL RECALIBRATE JSB ENDSI,I * * SKIP TO STEP 21 IF BIT 4 IS CLEAR * JSB SWR AND BIT4 SZA,RSS JMP ST21I,I * * STEP 3 * ASK OPERATOR TO SET FORMAT SWITCH * LDA D3 JSB COPR LDA UNIT CONVERT UNIT ADA B2060 NUMBER TO ASCII STA P066A,I STA P067A,I STA P107A,I STA P070A,I JSB TTYCK IS TTY AVAILABLE? JMP WHLTA NO LDA B66 YES JSB PRINT WHLTA LDA B66 SET OVERRIDE SWITCH PUSH RUN HLT 2 JSB OMASK JSB NORMI,I LDA FOBIT FORMAT SWITCH STA SHTS2 IS SET IOR MASK2 CHECK FORMAT STA MASK2 SWITCH JSB ENDSI,I * * STEP 4 * PLACE PROTECT BIT ON CYLINDER ZERO,READ CYLINDER ZERO * AND CYCLIC CHECK CYLINDER ZERO . * LDA D4 JSB COPR LDA WRILB LOAD WRITE LOCKOUT BIT JSB DGEN1 GENERATE BUFFER JSB SEEH SELECT HEAD LDA WDPT STA WCNT WORD COUNT = 6144 JSB WADRI,I FORMAT TRACK JSB WCHK CHECK STATUS LDA D128+SZREF READ ONE STA WCNT SECTOR JSB SEEH READ JSB READ BACK JSB DCHKI,I AND CHECK LDA SCPT ENTIRE TRACK JSB FCYKI,I ISSUE CYCLIC CHECK JSB SENDI,I * * STEP 5 * PLACE DEFECTIVE CYLINDER BIT ON CYLINDER ONE * ISZ CYL CYL = 1 LDA D5 JSB COPR JSB FTRDI,I FLAG TRACK DEFECTIVE JSB ENDSI,I * * STEP 6 * ASK OPERATOR TO CLEAR FORMAT SWITCH * LDA D6 JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTB NO > LDA B67 YES JSB PRINT WHLTB LDA B67 CLEAR OVERRIDE SWITCH,PUSH RUN HLT 2 JSB STMSK CLA FORMAT SWITCH STA SHTS2 IS CLEAR JSB ENDSI,I * * STEP 7 * READ CYLINDER ONE (CHECKING FOR DEFECTIVE TRACK) * LDA D7 JSB COPR LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR JSB SEEH ADDRESS RECORD IN S0 JSB READ LDA D0400 030400 STA SHTAS WHAT STATUS SHOULD BE JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WENDI,I CHECK STATUS AND END STEP * * STEP 8 * WRITE CYLINDER ZERO (CHECKING FOR ATTEMPT TO WRITE * ON PROTECTED TRACK) * LDA D8 JSB COPR CLA STA CYL SET TO CYLINDER ZERO JSB FSEEK SEEK IN S0 JSB WRITE LDA F3000 053000 STA SHTAS JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WENDI,I CHECK STATUS AND END STEP * * STEP 9 * WRITE ADDRESS ON CYLINDER ZERO (CHECKING FOR STATUS-2 ERROR). * LDA D9 JSB COPR JSB FSEEK SEEK CLA JSB DGEN1 GENERATE BUFFER LDA B1400 11400 STA SHTAS JSB WADRI,I JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WENDI,I CHECK STATUS AND END STEP * * STEP 10 * ASK OPERATOR TO SET FORMAT SWITCH * WRITE CYLINDER ZERO (CHECKING FOR GOOD STATUS * ON PROTECTED TRACK) * JSB TTYCK IS TTY AVAILABLE? JMP WHLTC NO LDA B66 YES JSB PRINT WHLTC LDA B66 SET OVERRIDE SWITCH,PUSH RUN HLT 2 JSB STMSK LDA D10 JSB COPR LDA FOBIT FORMAT SWITCH STA SHTS2 IS SET JSB FSEEK JSB WRITE LDA BIT14 PROTECTED TRACK STA SHTAS JSB WENDI,I CHECK STATUS CLA STA SHTAS * * STEP 11 * INITIALIZE ALL HEADS SELECTED * WRCL EQU * a STA CYL SET NEW CYLINDER NUMBER JSB SLFHI,I SELECT FIRST HEAD WRHD EQU * * * THE FOLLOWING OPERATION IS A SEEK THAT * CAUSES POSITIONER MOTION. * CLA STA SECTR JSB DGEN1 LDA WDPT STA WCNT LDA D11 JSB COPR JSB SEEK JSB WAITI,I WAIT FOR SEEK COMPLETION JSB WADRI,I WRITE AND READ ADDRESSES JSB WENDI,I * * STEP 12 * VERIFY DISC * LDA SCPT STA TCNT LDA D12 JSB COPR ST12A LDA TCNT JSB FCYKI,I CYCLIC CHECK CYLINDER JSB HELPI,I JMP STP12 LDA SCPT ADA MM1 STA XXX1 STORE SECTORS/TRACK -1 TEMPORARILY LDA RHDS AND B377 A=SECTOR CPA XXX1 DONE? JMP ST12D YES ST12C STA SECTR CMA,INA ADA SCPT A=SECTOR COUNT STA TCNT ISZ LIMIT JMP ST12A * FLAG TRACK DEFECTIVE IF BIT 0 SET JSB SWR SLA BIT 0 SET? JSB FTRDI,I FLAG TRACK DEFECTIVE JMP ST12B ST12D CLB CPB SECTR STARTED YET? RSS ASSUME NO JMP ST12C YES ST12B LDA MM1 STA LIMIT STP12 EQU * JSB ENDSI,I ISZ HEAD JSB SLNHI,I NEXT HEAD? JMP WRHD YES CLA,INA INCREMENT CYLINDER ADA CYL COUNT UP TO NEXT CYLINDER CPA CYPP CHECK FOR END OF PACK RSS JMP WRCLI,I NOT DONE, FINISH PACK JSB SLFHI,I SELECT FIRST HEAD JSB FSEEK RESET CONTROLLER ADDRESS JSB NORMI,I SET UP NORMAL STATUS * * STEP 13 * ASK OPERATOR TO UNLOAD DRIVE * LDA D13 JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTE NO H70 LDA B70 YES JSB PRINT WHLTE LDA B70 UNLOAD UNIT X,PUSH RUN HLT 2 JSB STMSK JSB ENDSI,I * * STEP 14 * CHECK FOR NOT-READY AND ATTENTION9X INDICATIONS. ISSUE A WRITE * COMMAND AND CHECK STATUS. ISSUE A SEEK TO CHECK THAT THE * CONTROLLER SETS THE INTERFACE FLAG IMMEDIATELY IF THE DISC * DRIVE IS NOT READY. * THIS STEP REPORTS A STATUS ERROR WHEN LOOPED. * LDA D14 JSB COPR JSB OSTAT LDA I0203 100203 STA SHTS2 JSB MCHKI,I CHECK STATUS JSB POLL SC20 STC SC JSB WAITI,I LDA B1400 11400 STA SHTAS LDA I0003 STA SHTS2 CONTROLLER TURNS OFF ATTENTION LDA D128+SZREF STA WCNT JSB WRITE JSB DMRFC OK IF TRANSFER IS INCOMPLETE JSB WCHK AND CHECK FOR ERRORS JSB SEEK SEEK JSB WAITI,I JSB ENDSI,I * * STEP 15 * ASK OPERATOR TO READY DRIVE. TEST * FIRST STATUS WHEN HEADS LOAD. * LDA D15 JSB COPR NRCB EQU * LDA MM10 PRINT EVERY STA WRR 82 SECONDS JSB TTYCK JMP WHLTF H107 LDA B107 READY UNIT X JSB PRINT WHLTF LDA M7936 STA LCNT SET MILLISECOND COUNTER JSB POLL SC18 STC SC SC33 CLF SC NRCF EQU * CC11 SFS CC SKIP IF READY RSS JMP CC12 FLAG IS SET CLA,INA JSB TMR,I DELAY 1 MSEC ISZ LCNT JMP NRCF ISZ WRR READY TO PRINT? JMP WHLTF NO JMP NRCB YES CC12 CLA,INA STA BLOCK PREVENT INTERRUPT JSB OSTAT CLA STA BLOCK LDA B7400 =17400 STA SHTAS LDA FSBIT FIRST STATUS STA SHTS2 JSB WCHK JSB ENDSI,I * * STEP 16 * ASK OPERATOR TO SET READ ONLY SWITCH * LDB STYPE CPB D2 JMP STP14 JUMP IF 7905A SZB SKIP IF 7905B JMP ST16A STP14 LDB UPD CCA ADA TRPC A REG. = LAST HEAD NO. CPA HEAD IS THE LAST HEAD SELECTED STP15 LDB LRD IF YES, THEN LOAD LOWER DISC MESSAGE STB P142A,I STB P143A,I ST16A JSB COPR JSB TTYCK IS TTY AVAILABLE? JMP WHLTI NO H40 LDA B40 LDB STYPE SZB CPB D2 LDA B142 IF 7905 PRINT DIFFERENT MESSAGE JSB PRINT SET READ ONLY SWITCH,PUSH RUN WHLTI LDA B40 HLT 2 JSB STMSK JSB ENDSI,I * * STEP 17 * PERFORM A SEEK OPERATION * LDA D17 JSB COPR CLA STA CYL LDA FLBIT STA SHTS2 JSB FSEEK JSB ENDSI,I * * STEP 18 * ATTEMPT TO WRITE DATA ON THE DISC AND THEN VERIFY THAT NO * DATA TRANSFER TOOK PLACE. CHECK STATUS. LDA D18 JSB COPR JSB OSTAT JSB DMW INITIATE DMA LDB B45 SET UP CURRENT OPERATION LDA WRITC JSB COMI,I WRITE ON PROTECTED SUBCHANNEL SC19 OTA SC,C DM6I STC DMAD,C LDA D650 JSB TMR,I DELAY 650 MSEC JSB MC TURN OFF DMA DM2L LIA DMAC ADA WCNT AND B7777 CPA D0 SHOULD BE ZERO TRANSFERRED JMP PSTAT IF SO, GO AHEAD AND CHECK STATUS LDB P013A IF NOT, BOMB JSB DCIN2 CLA STA WCNT LDA BIT15 STA DMRF JSB PCOP JSB DMERI,I JSB ADDOI,I PSTAT LDA B1400 011400 STA SHTAS JSB OSTAT JSB WCHK CHECK STATUS ON WRITE JSB SENDI,I * * STEP 19 * ASK OPERATOR TO CLEAR READ ONLY SWITCH * LDA D19 JSB COPR JSB TTYCK JMP WHLTH LDA B41 LDB STYPE SZB CPB D2 LDA B143 IF 7905, PRINT DIFFERENT MESSAGE H41 JSB PRINT CLEAR READ ONLY SWITCH,PUSH RUN WHLTH LDA B41 HLT 2 JSB STMSK JSB ENDSI,I LDB STYPE SZB CPB D2 RSS SKIPS IF 7905 JMP STP20 CCA ADA TRPC A REG. GETS LAST HEAD ADDRESS CPA HEAD XJMP STP19 STA HEAD JSB SLHDI,I SEE IF HEAD IS IN HEAD TABLE JMP SP15I,I STP19 JSB SLFHI,I GET FIRST HEAD IN HEAD TABLE * * STEP 20 * TEST PRESET FUNCTION - ASSUME INTERFACE * STRAP OK * STP20 LDA D20 JSB COPR JSB NORMI,I LDA BIT1 STA FLMSK JSB OMASK SET MASK JSB POLL DISABLE TIMEOUT JSB TTYCK JMP WHLTJ LDA B110 H110 JSB PRINT PRESS PRESET(S),PRESS RUN WHLTJ EQU * LDA B110 HLT 2 SC41 CLF SC JSB TEOCI,I JSB ENDSI,I * * STEP 21 * SEEK TO CYLINDER 0,THEN SEEK TO LAST * CYLINDER AND CHECK STATUS FOR BUSY * STP21 EQU * LDA D21 JSB COPR CLA STA CYL STA SECTR JSB NORMI,I SET UP NORMAL STATUS JSB FSEEK SEEK IN S1 LDA LASTC STA CYL * * THE FOLLOWING OPERATIONS ARE, * A SEEK THAT CAUSES POSITIONER MOTION * AND A STATUS OPERATION IMMEDIATELY * FOLLOWING WHICH SHOULD SEE A * POSITIONER BUSY STATUS. * JSB SEEK LDA I0001 100001 STA SHTS2 LDA D2 DELAY FOR 2MS JSB TMR,I JSB OSTAT GET STATUS WHILE BUSY JSB MCHKI,I CHECK STATUS JSB NORMI,I SET UP NORMAL STATUS JSB POLL SC17 STC SC JSB WAITI,I WAIT FOR SEEK TO FINISH JSB ENDSI,I * * STEP 22 * RECALIBRATE FROM LAST CYLINDER * LDA D22 JSB COPR JSB FRCLI,I JSB ENDSI,I * * STEP 23 * SEEK TO VARIIOUS ILLEGAL CYLINDERS, TO THE HEAD NO. ONE GREATER * THEN THE NO. OF HEADS PRESENT, AND THE SECTOR ONE LARGER * THEN THE LARGEST SECTOR PRESENT. * LDA D23 JSB COPR LDA LASTC CMA AND B777 GET BITS TO CHECK FOR CYL. SEEK CHECK CLB,INB ST23B SLA SEE IF SHOULD OR IN THIS BIT FOR OVER`FLOW JMP S23AI,I JUMP IF YOU SHOULD OR IN THIS BIT ST23D ARS PREPARE TO LOOK AT THE NEXT BIT RBL MOVE BIT TO BE ORED IN SZA SEE IF HAVE LOOKED AT ALL POSSIBILITIES JMP S23BI,I LOOP AGAIN JMP S23CI,I GO DO REST OF STEP ST23A STA SAVA SAVE A AND B REGS. STB SAVB LDA LASTC IOR B GET ILLEGAL CYL. ADDRESS JSB BSEKI,I DO A SEEK TO THIS CYL. LDA SAVA RESTORE A AND B REGS. LDB SAVB JMP S23DI,I ST23C LDA STYPE SZA,RSS IF 7905B SKIP THIS TEST JMP ST23E BY JUMPING TO ST23E LDA TRPC STA HEAD HEAD = LAST HEAD + 1 CLA JSB BSEKI,I ST23E LDA SCPT STA SECTR SECTOR = LAST SECTOR + 1 CLA JSB BSEKI,I JSB ENDSI,I * * STEP 24 * SEEK TO FIRST CYLINDER IN CYLINDER TABLE AND WRITE ONE SECTOR * AT SECTOR ZERO * LDA D24 JSB COPR LDA FTR,I STA CYL JSB FSEEK SEEK IN S1 LDA D384+SZREF STA WCNT SET WORD COUNT FOR THREE SECTORS LDA BASE STA SBASE SAVE FOR LATER USE JSB DGEN GENERATE NEW BUFFER * * THE FOLLOWING OPERATION DOES THE FIRST * WRITE ON THE DISC ON HEAD ZERO, SECTOR ZERO * LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR JSB WRITE WRITE ON FIRST SECTOR JSB WENDI,I CHECK STATUS AND END STEP * * STEP 25 * WRITE TWO SECTORS AT SECTOR 7. USES ADDRESS RECORD * LDA D7 STA SECTR OPERATION STARTS AT SECTOR 7 LDA BPTR1 = BPTR + 128 STA BUFAD LDA D256+SZREF STA WCNT TWO SECTOR WORD COUNT LDA D25 JSB COPR JSB SEES JSB WRITE JSB WENDI,I CHECK STATUS AND END STEP * * STEP 26 * READ ONE SECTOR AT SECTOR ZERO AND CHECK AGAINST DATA THAT * WAS WRITTEN<:6 * LDA D26 JSB COPR CLA STA SECTR NEXT OP STARTS AT SECTOR ZERO JSB SEES LDA D128+SZREF STA WCNT SET WORD COUNT FOR ONE SECTOR LDA BPTR STA BUFAD PUT BUFFER ADDRESS BACK JSB READ JSB SWR SLA,RSS JMP STP26 BIT 0 = 0 LDA STAS1 BIT 0 = 1 AND K0000 =120000B SZA D OR S? JMP STP27 YES STP26 EQU * JSB DCHKI,I JSB ENDSI,I * * STEP 27 * READ TWO SECTORS AT SECTOR 7 AND CHECK AGAINST DATA THAT WAS * WRITTEN. READ WITHOUT VERIFY IS USED * LDA D7 STA SECTR OPERATION STARTS AT SECTOR 7 LDA BPTR1 = BPTR + 128 STA BUFAD SET TO SECOND READ/WRITE ADDRESS LDA D256+SZREF TWO SECTOR STA WCNT SET WORD COUNT LDA D27 JSB COPR JSB SEES JSB RDWOV READ WITHOUT VERIFY STP27 JSB DCHKI,I VERIFY DATA READ JSB ENDSI,I Q<* * STEP 28 * WRITE FOUR SECTORS AT SECTOR 45,CAUSING A TRACK CHANGE. * (ONLY IF BOTH HEADS 0 AND 1 ARE SELECTED.) * LDA SCPT ADA MM3 STA SECTR SET SECTOR NUMBER LDA D512+SZREF STA WCNT SET FOUR SECTOR WORD COUNT LDA BPTR STA BUFAD JSB DGEN GENERATE BUFFER LDA D28 JSB COPR LDA BIT1 STA FLMSK JSB OMASK LDA HDONV AND B3 CPA B3 BOTH HEADS SELECTED? RSS YES JMP STP32 NO JSB SEEH JSB WRITE JSB WENDI,I CHECK STATUS AND END STEP * * STEP 29 * PERFORMS A CYCLIC CHECK ON GROUPS OF SECTORS STARTING AT HEAD * ZERO,SECTOR ZERO. (ONE SECTOR,THEN 2 SECTORS,THEN 4,8,16,32 * 64,128,240 AND 241 SECTORS). THE LAST ONE RESULTS IN THE END * OF CYLINDER INDICATION. * (ONLY IF ALL HEADS ARE SELECTED.) * LDA HDONV AND DHD6 CPA DHD6 ALL HEADS SELECTED? RSS YES JMP STP31 NO CLA STA SECTR SET SECTOR ZERO LDA MM8 CYCLIC CHECK STA WRR 1,2,4,8,16,32,64 AND 128 SECTORS LDA D1 STP30 EQU * STA WCNT LDA D29 JSB COPR JSB OMASK LDA WCNT JSB FCYKI,I ISSUE CYCLIC CHECK JSB ENDSI,I LDA WCNT ALS ISZ WRR DONE? JMP STP30 NO LDA D29 JSB COPR JSB OMASK LDA MHEAD STA XXX1 CLA STP29 ADA SCPT ADD NO. OF SECTORS /TRACK ISZ XXX1 JMP STP29 STA DHS1 DHS1 = HEADS*SECTORS JSB FCYKI,I ISSUE CYCLIC CHECK JSB ENDSI,I LDA A6000 006000 STA SHTAS LDA D29 JSB COPR JSB OMASK LDA DHS1 INA STA DHS2 DHS2 = DHS1 + 1 JSB FCYKI,I ISSUE CYCLIC CHECK JSB SENDI,I * * STEP 30 * READ FOUR SECTORS AT SECTOR 45 AND VERIFYr THE DATA AGAINST * THAT WHICH WAS WRITTEN. * STP31 EQU * LDA D512 STA WCNT WORD COUNT = FOUR SECTORS LDA SCPT ADA MM3 STA SECTR SET SECTOR LDA D30 JSB COPR JSB SEEH JSB DENDI,I * * STEP 31 * AT SECTOR SEVEN,FORCE OVERRUN BY NOT TURNING ON * DMA. CHECK MADE IS BASED ON STEP NUMBER. * STP32 LDA D31 JSB COPR LDA D7 STA SECTR SET SECTR TO SEVEN JSB SEEH MOVE TO THE BOTTOM TRACK JSB WRITE LDA A7000 STA SHTAS JSB WCHK CHECK FOR OVERRUN ERROR JSB SEEH JSB READ JSB WCHK CHECK FOR OVERRUN JSB SENDI,I * * STEP 32 * WRITE FOUR SECTORS AT SECTOR 45,LAST TRACK. THE END-OF- * CYLINDER ERROR CONDITION IS EXPECTED. * (ONLY IF LAST HEAD SELECTED.) * LDA TRPC ADA MM1 STA HEAD JSB SLHDI,I LAST HEAD SELECTED? RSS YES JMP ST35A NO LDA SCPT ADA MM3 STA SECTR SET SECTOR LDA D512+SZREF STA WCNT SET WORD COUNT FOR FOUR SECTORS JSB DGEN GENERATE BUFFER LDA D32 JSB COPR JSB NORMI,I SET UP NORMAL STATUS JSB SEEK JSB WAITI,I WAIT FOR SEEK TO COMPLETE JSB WRITE JSB DMRFC OK IF TRANSFER IS INCOMPLETE LDA A6000 006000 STA SHTAS THIS IS WHAT STATUS SHOULD BE LDA P7637 STA MASK2 JSB WENDI,I * * STEP 33 * TEST ALL ILLEGAL ORDERS * ST35A LDA D33 JSB COPR JSB SLFHI,I SELECT FIRST HEAD LDA B400 =400B STA SHTAS LDA B0000 =10000B STP35 STA WRR LDB B35 JSB COMDI,I ISSUE ORDER JSB WAITI,I GET STATUS JSB MCHKI,I CHECK STATUS LDA WRR ADA B400 =400B CPA B1000 =11000B LDA B3400 =13400B CPA C0000 =20000B RSS 5~ JMP STP35 JSB ENDSI,I * * STEP 34 * READ FOUR SECTORS AT SECTOR 45,LOWER TRACK. THE END-OF- * CYLINDER ERROR INDICATION IS EXPECTED. THE THREE * SECTORS READ ARE CHECKED AGAINST THOSE WRITTEN. * LDA SCPT ADA MM3 STA SECTR SET SECTOR LDA TRPC ADA MM1 STA HEAD LAST HEAD JSB SLHDI,I LAST HEAD SELECTED? RSS YES JMP ST37G NO LDA FTR,I STA CYL USE FIRST CYLINDER IN TABLE LDA D512+SZREF STA WCNT SET WORD COUNT FOR FOUR SECTORS LDA D34 JSB COPR JSB SEEH JSB READ READ AND JSB DMRFC LDA WCNT ADA MM128 STA WCNT SET WORD COUNT FOR THREE SECTORS LDA A6000 006000 STA SHTAS THIS IS WHAT STATUS SHOULD BE JSB DCHKI,I CHECK FOR ERRORS AND COMPARE BUFFERS JSB ENDSI,I * * STEP 35 * CHECK SECTOR ADDRESSES * ST37G LDA D35 JSB COPR JSB NORMI,I SET UP NORMAL STATUS JSB SLFHI,I SELECT FIRST HEAD ST37A JSB FSEEK SEEK (SELECT HEAD) JSB RQSA STA SECNT STARTING SECTOR STA SECTR CURRENT SECTOR ST37F LDA MM16 STA WRR ST37B JSB RQSA CPA SECTR RSS SAME? JMP ST37C NEW ISZ WRR JMP ST37B ST37E JSB PCOP E105 JSB ERROR SECTOR ADDRESS ERROR JSB ADDOI,I JMP ST37D ST37C ISZ SECTR LDB SECTR CPB SCPT CLB STB SECTR CPA SECTR NEXT SECTOR? RSS YES JMP ST37E NO - ERROR CPA SECNT SAME AS BEGINNING RSS YES JMP ST37F NO - CONTINUE ISZ HEAD JSB SLNHI,I SELECT NEXT HEAD - DONE? JMP ST37A NO ST37D JSB ENDSI,I JSB SLFHI,I SELECT FIRST HEAD * * STEP 36 * SEEK TO CYLINDER 822(OR 0 IF FIRST ENTRY IS 822)AND THEN SEEK * TO FIRST ENTRY IN CYLINDER TABLE. AT SECTOR 0 READ * ONE SECTOR AND VERIFY CONTENTS. THE READ COMMAND IS ISSUED * BEFORE THE SEEK IS COMPLETE. * LDA D36 JSB COPR CLA STA SECTR LDB LASTC LDA FTR,I IS FIRST ENTRY IN TABLE CPA LASTC EQUAL TO 822 CLB YES STB CYL CYL = 822 (OR 0) JSB FSEEK PERFORM FULL SEEK LDA FTR,I STA CYL LDA D128 STA WCNT 1 SECTOR LDA SBASE RESTORE RANDOM STA BASE NUMBER BASE JSB DGEN GENERATE BUFFER JSB SEEK JSB DENDI,I * * STEP 37 * TEST WATCHDOG TIMER * LDA D37 JSB COPR JSB OMASK SET FILE MASK TO CYL. MODE LDA D1024 JSB TMR,I WAIT 1.024 SECS. CLA STA CCHK SET INDICATOR SAYING THAT STATUS * CHECK IN TEOC SHOULD BE NORMAL * COMPLETE RATHER THEN END OF CYL JSB TEOCI,I ISZ CCHK SET INDICATOR SAYING TEOC ROUTINE * SHOULD GET AN END OF CYL INDICATION JSB ENDSI,I JSB OMASK SET MASK LDA A5400 JSB TMR,I DELAY 2.8 SECONDS JSB TEOCI,I JSB ENDSI,I JSB OMASK RESET MASK * * STEP 38 * FORCE CYLINDER COMPARE ERROR (IF * FIRST TWO ENTRIES OF CYLINDER TABLE * ARE DIFFERENT , SPD FIELD OF BOTH * ENTRIES IS ZERO AND FORMAT SWITCH IS ON). * LDA D38 JSB COPR JSB NORMI,I SET UP NORMAL STATUS CLA STA SECTR LDA FTR,I FIRST CYLINDER IN TABLE STA CYL LDA D138 STA WCNT WORD COUNT = 138 LDA BUFAD STA BUFAE READ INTO WRITE BUFFER JSB SPDOK CHECK SPD LDA STAS2 AND FOBIT FORMAT SWITCH SET? SZA,RSS SKIP IF YES JMP ST39B NO - EXIT LDA FTR INA LDA A,I Ͽ A=SECOND CYLINDER IN TABLE CPA FTR,I SAME AS FIRST? JMP ST39A YES EXIT STA CYL JSB SPDOK CHECK SPD LDA FTR,I STA CYL SWITCH CYLINDERS JSB FORCE FORCE ERROR LDA A3400 CYLINDER COMPARE ERROR JSB ORITE OVER-WRITE SECTOR ST39A EQU * * * STEP 39 * FORCE HEAD-SECTOR COMPARE ERROR WITH BAD SECTOR. * LDA D39 JSB COPR LDA D1 STA SECTR SECTOR = 1 JSB SPDOK CHECK SPD CLA STA SECTR SECTOR = 0 JSB FORCE FORCE ERROR LDA A4400 HEAD-SECTOR COMPARE ERROR JSB ORITE OVER-WRITE SECTOR * * STEP 40 * FORCE HEAD-SECTOR COMPARE ERROR WITH * BAD HEAD ONLY IF FIRST TWO HEADS ARE SELECTED. * LDA D40 JSB COPR LDA HDONV AND D3 CPA D3 BOTH HEADS SELECTED? RSS YES JMP ST39C NO-EXIT LDA D1 STA HEAD HEAD=1 JSB SPDOK CHECK SPD CLA STA HEAD JSB FORCE FORCE ERROR LDA A4400 HEAD-SECTOR COMPARE ERROR JSB ORITE OVER-WRITE SECTOR ST39C EQU * * * STEP 41 * FORCE A CORRECTABLE DATA ERROR * LDA D41 JSB COPR LDA D276 STA WCNT TWO FULL SECTORS LDA BUFAD STA BUFAE READ INTO WRITE BUFFER JSB SPDOK CHECK SPD LDA BPTS STA BUFAE READ INTO READ BUFFER JSB RAND GET RANDOM NUMBER RAR AND B377 0 <= A <= 255 ADA BUFAD STA WRR CHOOSE RANDOM WORD LDA WRR,I SAVE FIRST STA SECNT WORD JSB FILL DESTROY IT LDA WRR,I SAVE SECOND STA EXTRA WORD JSB FILL DESTROY IT JSB FORCE FORCE ERROR LDA DMAWC RECONSTUCT CPA MM650 NOWDS RSS ISZ NOWDS LDA A7400 CORRECTABLE DATA ERROR STA SHTAS c LDB WRR RESTORE ADB MM1 LDA EXTRA BUFFER STA B,I ADB MM1 LDA SECNT STA B,I LDA D128 STA WCNT WORD COUNT = 128 STA DMAWC LDA BUFAD ADA D3 STA BUFAD START OF DATA JSB FXITI,I PATCH BUFFER JSB DCHKI,I CHECK BUFFER LDA BPTR STA BUFAD RESET WRITE BUFFER POINTER LDA D256 STA WCNT WORD COUNT = 256 LDA ST39E STA ORITE JMP ORIT1 OVER-WRITE SECTORS ST39E DEF *+1 * * STEP 42 * FORCE AN UNCORRECTABLE DATA ERROR * CLB LDA BUFAD ADA D135 CPA WRR WRR = BUFAD+136? LDB MM1 YES - CHANGE POINTER INA CPA WRR WRR = BUFAD+137? LDB MM2 YES - CHANGE POINTER INA CPA WRR LDB MM3 ADB WRR STB WRR LDA MM4 CHANGE FOUR WORDS STA SECNT ST39F JSB FILL DESTROY BUFFER ISZ SECNT DONE? JMP ST39F NO LDA D42 JSB COPR LDA D276 TWO FULL SECTORS STA WCNT WORD COUNT = 276 JSB FORCE FORCE ERROR JSB FXITI,I LDA A4000 UNCORRECTABLE DATA ERROR JSB ORITE JSB NORMI,I SET UP NORMAL STATUS * * STEP 43 * TEST SPARING * SELECT RANDOM TRACK A * SELECT RANDOM TRACK B * ABORT STEP IF A=B * SET FILE MASK TO SURFACE,NO SPARE,NO AUTO SEEK * INITIALIZE TRACK B DEFECTIVE WITH ADDRESS A * INITIALIZE TRACK A SPARE WITH ADDRESS B * VERIFY TRACK B,SHOULD BE DEFECTIVE * VERIFY TRACK A,SHOULD GET ILLEGAL ACCESS * SET FILE MASK TO SURFACE,SPARING,NO AUTO SEEK * WRITE A RANDOM SECTOR THROUGH TRACK B TO A * READ BACK AND CHECK * SET FILE MASK TO SURFACE,NO SPARE,NO AUTO SEEK * INITIALIZE TRACK B * READ FROM TRACK A USING FALSE B ADDRESS AND CHECK DATA * INITIALIZE TRACK A * LDA D43  JSB COPR JSB RNCHI,I SELECT RANDOM TRACK A LDA CYL STA WRR LDA HEAD STA SECNT JSB RNCHI,I SELECT RANDOM TRACK B LDA CYL LDB HEAD CPA WRR RSS JMP ST39P CPB SECNT JMP ST39O ABORT STEP IF EQUAL ST39P STA EXTRA STB SBASE LDA D128 STA WCNT CLA STA SECTR STA FLMSK SURFACE,NO SPARE,NO AUTO SEEK JSB OMASK SET FILE MASK JSB SPDOK CHECK SPD JSB TRCKA JSB SPDOK CHECK SPD JSB TRCKB JSB FSEEK SEEK TO TRACK B JSB TRCKA JSB SEES SET ADDRESS TO TRACK A LDA DFTB SET FOR DEFECTIVE JSB INITT INITIALIZE TRACK JSB FSEEK SEEK TO TRACK A JSB TRCKB JSB SEES SET ADDRESS TO TRACK B LDA BIT15 SET FOR SPARE JSB INITT INITIALIZE TRACK LDA D0400 STA SHTAS DEFECTIVE TRACK LDA SCPT JSB FCYKI,I CYCLIC CHECK TRACK B JSB TRCKA LDA J0000 STA SHTAS ILLEGAL ACCESS TO SPARE TRACK LDA SCPT JSB FCYKI,I CYCLIC CHECK TRACK A LDA D4 STA FLMSK SURFACE,SPARING,NO AUTO SEEK LDA BIT15 STA SHTAS JSB OMASK JSB RNCHI,I SELECT RANDOM SECTOR JSB TRCKB JSB FSEEK SEEK THROUGH TRACK B LDA D128 STA WCNT JSB DGEN GENERATE RANDOM BUFFER JSB WRITE WRITE JSB WCHK JSB FSEEK JSB READ READ BACK JSB DCHKI,I AND CHECK DATA LDA SECTR STA SAVE CLA STA SECTR STA FLMSK SURFACE,NO SPARE,NO AUTO SEEK JSB OMASK SET FILE MASK JSB FSEEK SEEK TO TRACK B CLA JSB INITT INITIALIZE TRACK LDA SAVE STA SECTR JSB TRCKA JSB FSEEK SEEK TO TRACK A JSB TRCKB JSB SEES SET ADDRESS TO TRACK B LDA D128  STA WCNT JSB READ LDA BIT15 S BIT STA SHTAS JSB DCHKI,I CLA STA SECTR JSB TRCKA JSB FSEEK SEEK TO TRACK A CLA JSB INITT INITIALIZE TRACK A ST39O JSB ENDSI,I ST39B EQU * LDA BPTS STA BUFAE LDA UNIT SAVE STA EXTRA ACTUAL UNIT * * STEP 45 * FORCE UNIT UNAVAILABLE STATUS BY ISSUING * SEEK TO UNIT 11 * LDA D45 JSB COPR LDA D11 STA UNIT UNIT = 11 LDB B44 LDA POSIT SEEK COMMAND JSB COMI,I SC45 OTA SC,C LDA EXTRA RESET UNIT NUMBER FOR STATUS STA UNIT JSB WAITI,I WAIT FOR SEEK TO FINISH LDA B3400 UNIT UNAVAILABLE STA SHTAS LDA D11 STA UNIT CLA STA MASK2 JSB WENDI,I CHECK STATUS LDA EXTRA STA UNIT JSB NORMI,I SET UP NORMAL STATUS * * STEP 46 * TEST COLD LOAD READ IF UNIT IS 0 * SC46 CLF SC LDA D46 JSB COPR CLA CPA UNIT UNIT = 0? RSS YES JMP ST39N N0-EXIT JSB RNCHI,I SELECT RANDOM ADDRESS LDA HEAD HEAD MAY AND MM4 SSA,RSS SKIP IF SELECTED HEAD IN HEAD TABLE * TABLE AND IS LESS THEN 4 JMP ST39N STA HEAD >3 LDA CYL SAVE RANDOM STA EXTRA CYLINDER CLA STA CYL CYL=0 LDA BUFAD STA BUFAE READ POINTER POINTS AT WRITE BUFFER LDA D128 STA WCNT WORD COUNT=128 JSB FSEEK JSB READ READ INTO WRITE BUFFER LDA BPTS STA BUFAE RESET POINTER JSB DSOKI,I SZA,RSS OK? JMP ST39N NO LDA EXTRA RESET STA CYL RANDOM CYLINDER JSB FSEEK LDA D2 STA FLMSK JSB OMASK SET FILE MASK TO CYL. MODE * Mx SHOULD BE RESET BY COLD LOAD READ JSB COLDR COLD LOAD READ JSB DCHKI,I CHECK BUFFER CLA STA FLMSK JSB TEOCI,I TEST FOR END OF CYLINDER ST39N EQU * JSB NORMI,I JSB OMASK JSB ENDSI,I * * STEP 47 * ABORT IF CYL TABLE(0) <> CYL TABLE(1)-1 * SET FILE MASK TO SURFACE,NO SPARE,INCREMENT * WRITE TWO SECTORS AT SECTOR 47,CYL TABLE(0) * READ BACK AND VERIFY * READ SECOND SECTOR AND VERIFY * SET FILE MASK TO SURFACE,NO SPARE,DECREMENT * WRITE TWO SECTORS AT SECTOR 47,CYL TABLE(1) * READ BACK AND VERIFY * READ SECOND SECTOR ONLY AND VERIFY * LDA D47 JSB COPR LDA FTR,I STA CYL INA LDB FTR INB CPA B,I CYL TABLE(0)=CYL TABLE(1)-1? RSS YES JMP ST39Q NO - ABORT STEP LDA D1 STA FLMSK SURFACE,NO SPARE,INCREMENT JSB OMASK SET FILE MASK JSB WRRD WRITE AND READ TWO SECTORS ISZ CYL JSB DSOKI,I SZA,RSS OK? JMP ST47A NO JSB FSEEK JSB READ READ SECOND SECTOR JSB DCHKI,I CHECK DATA ST47A LDA BPTR STA BUFAD LDA B11 STA FLMSK SURFACE,NO SPARE,DECREMENT JSB OMASK SET FILE MASK JSB WRRD WRITE AND READ TWO SECTORS LDA FTR,I STA CYL CLA,INA JSB DSOKI,I SZA,RSS OK? JMP ST47B NO JSB FSEEK JSB READ READ SECOND SECTOR JSB DCHKI,I CHECK DATA ST47B LDA BPTR STA BUFAD ST39Q JSB ENDSI,I CLA SURFACE,NO SPARE,NO AUTO SEEK STA FLMSK JSB OMASK * * STEP 48 * CHECK DISC ADDRESS ON A RANDOM SECTOR. * USING READ WITH OFFSET READ A RANDOM SECTOR * WITH CYLINDER OFFSET = +32,-32,CLOCK DELAY * AND CLOCK ADVANCE * LDA D48 JSB COPR LDA D128 STA WCNT v[<:6 JSB RNCHI,I SELECT RANDOM SECTOR JSB FSEEK LDB B123 STB COPRN JSB RQSAI,I GET DISC ADDRESS LDA HEAD ALF,ALF IOR SECTR CCB CPA RHDS HEAD/SECTOR CORRECT? LDB CYL YES CPB RCYL CYLINDER CORRECT? JMP ST21B YES JSB PCOP NO - ERROR E124 JSB ERROR DISC ADDRESS ERROR JSB ADDOI,I ST21B EQU * LDA POFST JSB RWSET JSB WCHK JSB SEES LDA POFST GET POSITIVE OFFSET IOR BIT7 MAKE OFFSET NEGATIVE JSB RWSET JSB WCHK JSB SEES LDA BIT8 JSB RWSET JSB WCHK JSB SEES LDA BIT9 JSB RWSET JSB WENDI,I LDA STAS2 AND FOBIT IOR PASS SZA JMP SKIPI,I LDA B121 H121 JSB PRINT WARNING - FORMAT SWITCH OFF JMP SKIPI,I I0001 OCT 100001 FRCLI DEF FRCAL O0000 OCT 160000 D135 DEC 135 DHS1 BSS 1 SAVE HEADS*SECTORS DHS2 BSS 1 SAVE HEADS*SECTORS+1 B3400 OCT 13400 SP15I DEF STP15 V< HED BSEEK,RQSA,COLDR,RDWOV,SPDOK BSEEK NOP STA CYL LDA I0004 100004 STA SHTS2 JSB FSEEK CLA STA SECTR STA SHTS2 STA CYL JSB SLFHI,I SELECT FIRST HEAD JSB FSEEK SEEK JMP BSEEK,I I0004 OCT 100004 * RQSA NOP REQUEST SECTOR ADDRESS LDA RSECA LDB B104 JSB COMDI,I ISSUE COMMAND JSB RJCTI,I CHECK FOR REJECT NOP SC38 LIA SC,C JMP RQSA,I * COLDR NOP COLD LOAD READ CLA STA CYL JSB DMR SET UP DMA LDB B115 LDA CLRD JSB XSFER ISSUE COMMAND JMP COLDR,I * RDWOV NOP JSB DMR SET UP DMA LDB B117 LDA RWOVY READ WITHOUT VERIFY COMMAND JSB XSFER ISSUE COMMAND JMP RDWOV,I * SPDOK NOP JSB FSEEK JSB RDFUL JSB WCHK LDA BUFAE ADA D2 LDA A,I HEAD-SECTOR WORD AND O0000 =160000 SZA SKIP IF SPD=0 JMP ST39B NO-EXIT JMP SPDOK,I HED FORCE,ORITE,FILL FORCE NOP FORCE ERRORS JSB FSEEK SEEK JSB WFULL WRITE FULL SECTOR JSB WCHK CHECK STATUS LDA WCNT ADDRESS CPA D138 ERROR? ISZ SECTR YES - READ NEXT SECTOR JSB FSEEK SEEK JSB READ READ JSB DMRFC JMP FORCE,I * ORITE NOP OVER-WRITE SECTOR STA SHTAS JSB WCHK CHECK STATUS ORIT1 CLA STA SECTR JSB FSEEK SEEK JSB WRITE OVER-WRITE SECTOR CLA STA SHTAS JSB WENDI,I JMP ORITE,I * FILL NOP LDA WRR,I SAVE STA FILL1 WORD JSB RAND GET RANDOM WORD CPA WRR,I SAME? CMA YES - CHANGE IT STA WRR,I FILL BUFFER LDA BUFAD CALCULATE CMA,INA RELATIVE ADA WRR POSITION OF WOSoRD CPA D0 SYNC WORD? RSS YES CPA D138 SYNC WORD? RSS YES JMP FILL2 NO - EXIT LDA FILL1 CAN'T CHANGE XOR WRR,I BIT 0 CLB SLA SKIP IF OK LDB D1 RESTORE BIT 0 XOR WRR,I IOR BIT15 BIT 15 MUST BE A 1 STA WRR,I FILL2 ISZ WRR JMP FILL,I FILL1 BSS 1 HED TRCKA,TRCKB,INITT,WRRD TRCKA NOP SWITCH TO TRACK A LDA WRR STA CYL LDA SECNT STA HEAD JMP TRCKA,I * TRCKB NOP SWITCH TO TRACK B LDA EXTRA STA CYL LDA SBASE STA HEAD JMP TRCKB,I * INITT NOP INITIALIZE TRACK STA SHTAS A = SPD FIELD STA WRSP JSB OMASK LDA WDPT STA WCNT FULL TRACK INIT1 JSB WADRI,I JSB WCHK LDA STAS2 AND FAULT SZA,RSS SKIP IF FAULT JMP INITT,I NO JSB RPARI,I CLEAR FAULT IF POSSIBLE JSB FSEEK TRY AGAIN JMP INIT1 LOOP BACK * WRRD NOP WRITE AND READ TWO SECTORS LDA SCPT ADA MM1 STA SECTR LDA D256 STA WCNT JSB DGEN GENERATE RANDOM BUFFER JSB FSEEK JSB WRITE WRITE TWO SECTORS JSB WCHK JSB OMASK JSB FSEEK JSB READ READ BACK TWO SECTORS JSB DCHKI,I CHECK DATA CLA STA SECTR LDA D128 STA WCNT LDA BPTR1 STA BUFAD JMP WRRD,I HED MWCHK,TEOC HED SLNH,SLHD,SLFHD SLNH NOP SELECT NEXT HEAD-SKIP IF LAST SLNH1 JSB SLHDI,I CHECK HEAD JMP SLNH,I OK LDA HEAD ISZ HEAD HEAD = HEAD + 1 CPA TRPC DONE? RSS YES JMP SLNH1 NO ISZ SLNH JMP SLNH,I * SLHD NOP CHECK HEAD-SKIP IF NOT SELECTED LDA HEAD CMA,INA A = -HEAD LDB HDONV WSLHD1 SZA,RSS JMP SLHD2 RBR SHIFT HEAD SELECT WORD INA JMP SLHD1 SLHD2 SLB,RSS SKIP IF SELECTED ISZ SLHD JMP SLHD,I * SLFHD NOP SELECT FIRST HEAD CLA STA HEAD JSB SLNHI,I JMP SLFHD,I HED SHEAD SHEAD NOP LDA P765E SET HEADS INTO MESSAGE STA LOCAL STORAGE POINTER LDB UNIT ADB HDON LDB B,I GET HEADS IN HEAD TABLE FOR THIS UNIT LDA BB SLB LDA C0060 BLANK,0 STA LOCAL,I ISZ LOCAL RBR LDA MM4 STA TEMP2 LDA D0462 1,2 SH1 STA TEMP3 SLB,RSS LEFT PART SELECTED? AND C0377 N0 - MASK OUT RBR SLB,RSS RIGHT PART SELECTED? AND P7440 N0 - MASK OUT STA LOCAL,I ISZ LOCAL RBR LDA TEMP3 ADA B1002 ISZ TEMP2 JMP SH1 JMP SHEAD,I B1002 OCT 1002 D0462 OCT 030462 C0060 OCT 020060 P7440 OCT 177440 P765E DEF JP65A+5 HED RWSET,ROTST RWSET NOP READ WITH OFFSET STA OFSET LDB P071A JSB CNVRT JSB DMR LDB B71 LDA RWOFF READ WITH OFFSET COMMAND JSB COMDI,I ISSUE COMMAND LDA OFSET JSB DADO ISSUE OFFSET SC44 CLF SC CLEAR FLAG LDA RWSTC FIX UP STA DMATI,I RETURN JMP IMATB,I ENTER DMAT AND READ RWSTB EQU * JSB STAT JMP RWSET,I OFSET OCT 0 P071A DEF JP71A K0000 OCT 120000 RWSTC DEF RWSTB IMATB DEF DMATB * ROTST NOP READ WITH OFFSET? LDB PTNX PATTERN NO. CPB MM1 #10? RSS YES CPB MM2 #9? RSS YES - SKIP ISZ ROTST NO - READ JMP ROTST,I HED SLUNT SLUNT NOP SELECT UNIT WHICH CLA MADE MOST ERRORS STA UNIT STA TEMP2 LDB PUE LDA PUE,I STA LOCAL UNIT 0 ERRORS LDA MM7 STA TEMP1 UNIT COUNT SLNT1 ISZ TEMP2 UNIT # INB LDA B,I UNIT N ERRORS CMA,INA ADA LOCAL SSA,RSS THIS ONE BIGGER? JMP SLNT2 NO LDA B,I YES - USE THIS ONE STA LOCAL LDA TEMP2 STA UNIT ADJUST UNIT NUMBER SLNT2 ISZ TEMP1 DONE? JMP SLNT1 NO JMP SLUNT,I YES - RETURN PUE DEF *+1 BSS 8 HED S2 - SECTION 2 * * * SECTION 2 IS ORGANIZED AS FOLLOWS * * CYLINDER ADVANCE * SWITCH 6=0 -- ALL CYLINDERS * SWITCH 6=1 -- ALL CYLINDERS IN TRTAB * . * . * . PATTERN GENERATOR * . GENERATE BUFFERS FOR EACH OF THE PATTERNS IN PATTR * . SKIP THIS SECTION IF SWITCH 5=1 * . . * . . TRACK ADVANCE * . . ALL TRACKS FROM 0 TO TRPC-1 * . . . * . . . BLOCK ADVANCE * . . . EACH TRACK IS WRITTEN AS THREE BLOCKS * . . . . * . . . . WRITE DATA BUFFER * . . . . * . . * . . TRACK ADVANCE * . . ALL TRACKS FROM 0 TO TRPC-1 * . . . * . . . BLOCK ADVANCE * . . . EACH TRACK IS READ AS THREE * . . . BLOCKS * . . . . * . . . . READ EACH BLOCK * . . . . * . . . . CHECK DATA READ * . . . . * . . . * . . * . * . * * ORG 6000B SVCT EQU GLOB1 USED TO COUNT TOTAL TIME FLAG2 EQU GLOB2 USED WHEN STEP 55 LOOPS SVKC EQU GLOB3 PATT EQU GLOB4 VARIABLE TO SAVE CURRENT PATTERN PTNX EQU GLOB5 COUNTER FOR PATTERN TABLE SVCTC EQU GLOB6 TIME ACCUMULATOR CYCDI DEF CYCCD PCHKI DEF PCHK P053A DEF JP53A DIRCT BSS 1 DIRECTION fFIRST BSS 1 SECIN BSS 1 TEMP. STORAGE FOR NO. OF SECTOR GROUPS SECTC BSS 1 TEMP. STORAGE FOR CURRENT SECTOR GROUP D3524 OCT 33524 RWTBI DEF RWTAB B170 OCT 170 RTSTI DEF ROTST P625I DEF PT625 CYLX BSS 1 CURRENT CYLINDER REFERENCE S2 EQU * * * * THE FOLLOWING SECTION OF CODE CYCLES THROUGH * ALL TEN PATTERNS IN THE PATTERN TABLE * * LDA BPTR LOAD BUFFER ADDRESS STA BUFAD SET WRITE AND LDA BPTS STA BUFAE READ BUFFER ADDRESSES LDA MM10 PATTERN TABLE IS TEN ENTRIES LONG STA PTNX SAVE IN COUNTER WORD CLA,INA STA DIRCT CLA STA CYLX INITIAL CYLINDER STA SVCT SEEK TIME JSB RWTBI,I GET CORRECT SECTOR TABLE & * RELATED VARIABLES LDA M32K SEE IF ATLEAST 32K OF MEMORY SZA SKIP IF LESS THEN 32K OF MEMORY JMP S2HER LDA SCPT GET NO. OF SECTORS /TRACK ARS,ARS ARS DIVIDE BY 8 TO GET NO. OF * SECTOR GROUPS S2HER STA SECIN NO. OF TIMES TO LOOP * WGEN EQU * LDA WWCNT GET NO. OF WORDS TO XFER CMA,INA NEGATE WORD COUNT ARS,ARS DIVIDE BY 4 STA TEMP1 SAVE FOR THE FAST FILL LOOP LDB PTNX LOAD THE PATTERN COUNTER ADB PATR ADD ON THE TABLE ADDRESS LDA B,I LOAD THE PATTERN TO A STA PATT SAVE IT FOR THE PCHK ROUTINE LDB BUFAD LOAD THE WRITE ADDRESS LDA PTNX CPA MM10 SEE IF FIRST PATTERN JMP WGM JUMP IF YES TO 48 BIT PATTERN LDA PATT WGL STA B,I INB STA B,I INB STA B,I INB STA B,I INB ISZ TEMP1 COUNT DOWN COUNTER ( BY FOUR ) JMP WGL CONTINUE ON IF NOT DONE RSS WGM JSB CYCDI,I USE 48 BIT PATTERN i/CLA STA SVKC ZERO SEEK COUNT JSB NORMI,I SET UP NORMAL STATUS CCA STA FIRST FIRST = -1 S2L EQU * JSB CYLJ TRANSLATE CYLX INTO CYL LDA D8 STA SECTR SECTOR ZERO JSB SLFHI,I SELECT FIRST HEAD CLA,INA SET UP STA FLAG2 FOR TIMING LDA SVCT MOVE SAVED STA SVCTA COUNTER BACK * * STEP 55 * SELECT CYLINDER ACCORDING TO SWITCH REGISTER BIT 6. PERFORM * SEEK OPERATION * LDA D55 JSB COPR JSB FSEEK LDA FLAG2 HAS THIS STEP BEEN REPEATED? SZA,RSS SKIP IF NO JMP S2A YES CLA DON'T COUNT STA FLAG2 ( DISABLE TIMING ON LOOP ) LDB FIRST STA FIRST SZB JMP S2A DON'T COUNT FIRST SEEK LDA SVCTA SAVE CURRENT STA SVCT MILLISECOND COUNT S2A EQU * JSB ENDSI,I ISZ SVKC JSB SWR LOAD SWITCH REGISTER AND BIT5 CHECK FOR SHORT TEST SZA SKIP IF LONG JMP SKIPI,I SHORTEN SECTION TWO SKP * * THE FOLLOWING CODE WRITES THE PATTERN IN THE BUFFER ONTO * THE ENTIRE CYLINDER. * * TO USE THE MINIMUM TIME FOR EACH TRACK, THE TRACK IS DIVIDED * INTO GROUPS OF 8 SECTORS EACH. THE FIRST SECTOR OF EACH OF * THESE GROUPS IS CONTAINED IN THE TABLE RWTB. * WNHW LDA D56 JSB COPR LDA WWCNT NO. OF WORDS TO WRITE STA WCNT WORD COUNT = 1024 LDA M32K SEE IF 32K OF MEMORY SZA SKIP IF < 32K OF MEMORY STA SECIN SET SECIN = 1 * * * STEP 56 * CLA STA SECTC INITIALIZE SECTOR GROUP INDICATOR ST56A LDA RWTBL GET BASE ADDRESS OF SECTOR GROUP TABLE ADA SECTC ADD ON NO. OF CURRENT SECTOR GROUP LDA A,I GET INITIAL SECTOR OF SECTOR GROUP RAR,RAR AND B74 OBTAIN WRITE SECTOR ADDRESS STR^A SECTR SAVE INITIAL SECTOR * NEEDS EXTRA TIME. INSERT AN * EXTRA SEEK JSB SEEH JSB WRITE JSB WENDI,I CHECK FOR ERRORS LDA SECTC SZA IF THIS IS FIRST SECTOR GROUP THEN MUST DO * ADDITIONAL BOOKKEEPING JMP ST56B WAS NOT FIRST SECTOR GROUP LDA HEAD GET CURRENT HEAD ALF,RAR MULTIPLY BY 8 ADA D3524 33524+8*HEAD+UNIT ADA UNIT UNIT TABLE GIVING NO. OF TRACKS CHECKED STA LOCAL LDA PTNX CPA MM10 IS THIS THE FIRST PATTERN? RSS SKIP IF FIRST PATTERN JMP ST56B JUMP IF NOT FIRST PATTERN LDB D3514 GET BASE ADDRESS OF UNIT (LONG * PASSES) TABLE ADB UNIT LDB B,I GET NO. OF LONG PASSES FROM THE TABLE SZB SKIP IF NO LOONG PASSES HAVE BEEN * PERFORMED ON THIS UNIT JMP ST56B LDB CYLX GET CYL. USED CPB D0 WAS IT CYL. 0 STB LOCAL,I IF YES, CLEAR NO. OF TRACKS USED INDICATOR LDA STP56 GET STATUS-1 WORD AND P7770 MASK OFF UNIT CPA D0400 WAS TRACK DEFECTIVE? RSS SKIP IF TRACK WAS DEFECTIVE ISZ LOCAL,I INCREMENT TRACK/UNIT MATRIX ST56B ISZ SECTC INCREMENT NO. OF SECTOR GROUPS LOOKED AT LDA SECIN CPA SECTC HAVE WE LOOKED AT ALL THE SECTOR GROUPS * VALID FOR THIS DRIVE JMP ST56C GO ON TO DO READS JMP ST56A RETURN TO WRITE OTHER SECTORS * * STEP 59 * * THE FOLLOWING SECTION READS BACK THE PATTERNS AND COMPARES * EACH WORD WITH PATT. * ST56C LDA D59 JSB COPR SET STEP INDICATOR TO 59 %LCLA STA SECTC INITIALIZE SECTOR GROUP INDICATOR ST57A LDA RWTBL GET BASE ADDRESS OF SECTOR GROUP TABLE ADA SECTC ADD ON NO. OF CURRENT SECTOR GROUP LDA A,I GET INITIAL SECTOR OF GIVEN SECTOR GROUP JSB RTSTI,I READ WITH OFFSET? ALF,ALF YES,THEREFORE READS DIFFERENT SECTOR AND B17 OBTAIN READ SECTOR ADDRESS RAL,RAL MULTIPLY BY 4 STA SECTR SET UP SECTOR LDB M32K SEE IF ATLEAST 32K OF MEMORY SZB,RSS SKIP IF ATLEAST 32K OF MEMORY JMP ST57F LDB D2 ONLY NEED TO DO 2 READS STB SECIN ALF,ALF RAR SECTOR NO. TIMES 128 LDB SECTC IF FIRST PASS THEN MUST SUBTRACT * FROM WORDS/TRACK SZB SKIP IF FIRST PASS JMP ST57D CMA,INA ADA WWCNT NO. OF WORDS /TRACK JMP ST57E ST57D CLB STB SECTR IF SECOND PASS THEN SECTOR=0 ST57E STA WCNT STORE NO. OF WORDS TO READ ST57F LDA STEPN JSB COPR JSB SEEH LDA LIMIT FIRST CPA MM5 TIME? RSS YES JMP S2SB4 NO LDA PTNX CPA MM2 9TH PATTERN? JMP S2SB1 YES CPA MM1 10TH PATTERN? JMP S2SB2 S2SB4 JSB READ READ S2SB3 LDA PTNX LIB 6 CPA MM10 SEE IF FIRST PATTERN INB,SZB,RSS AND A 2100 JMP S2SB8 JUMP IF IT IS NOT JSB DCHKI,I MUST BE THE FIRST PATTERN AND A 2100 S2SB7 JSB ENDSI,I JMP S2SB9 S2SB8 JSB PCHKI,I S2SB JMP S2SB7 S2SB2 LDA POFST GET POSITIVE OFFSET IOR BIT7 MAKE OFFSET NEGATIVE RSS S2SB1 LDA POFST OFFSET=+32 JSB RWSTI,I JMP S2SB3 S2SB9 ISZ SECTC INCREMENT COUNTER FOR NO. OF GROUPS LOOKED AT * GROUPS LOOKED AT  LDA SECIN CPA SECTC SEE IF WE HAVE LOOKED AT ALL THE SECTOR GROUPS JMP ST57B JMP ST57A ST57B ISZ HEAD JSB SLNHI,I SELECF NEXT HEAD JMP WNHW CONTINUE FOR ALL TRACKS JSB CYLD COUNT UP CYLX AND CHECK FOR DONE JMP S2L LOOP LDA PTNX CPA MM6 HALF DONE? RSS YES JMP S2D NO LDA SVCT ARS STA SVCTC SAVE SVCT/2 CLA STA SVCT S2D EQU * LDA DIRCT CMA,INA STA DIRCT DIRECTION = -DIRECTION JSB CYLD CORRECT FOR OVER-SHOOT ISZ PTNX HAVE ALL PATTERNS BEEN TRIED? JMP WGEN NO,GO BACK FOR NEXT * JSB SWR LOAD SWITCH REGISTER AND BIT12 SZA SKIP IF BIT 12 CLEAR JSB TTYCK JMP TNTW ABORT PRINTOUT JSB SWR AND BIT6 SZA RESTRICT CYLINDERS JMP TNTW YES LDA SVCT LOAD NUMBER OF COUNTS ARS ADA SVCTC ADD IN OTHER HALF * * THE FOLLOWING CODE MAY NEED TO BE CHANGED IF OTHER * DRIVE TYPES ARE ADDED * LDB STYPE SZB CPB D2 ALS IF 7905 THEN USE TOTAL SEEK TIMES, * NOT JUST HALF OF IT STA SVCT TOTAL TIME DIVIDED BY 2 ARS,ARS ARS STA B ARS ADA B ADA SVCT A = 1.1875 * SVCT ADA SVCTV AVERAGE ADJUSTMENT STA SVCT CLB STB FIRST S2B EQU * ARS,ARS ARS,ARS DIVIDE BY 16 JSB P625I,I JSB P625I,I A = (100 * A)/256 LDB P053A JSB DCIN2 LDA FIRST SZA JMP S2C ISZ FIRST LDA P053A,I AND B17 GET INTEGER PART ALF * * THE FOLLOWING CODE MAY NEED TO BE CHANGED IF OTHER * DRIVE TYPES ARE ADDED * LDB STYPE GET DRIVE TYPE SZB  IF 7905 OR 7906 CPB D2 ARS,ARS IF YES MULTIPLY UNITS PART OF ANSWER BY * 4 RATHER THEN 16 CMA,INA ADA SVCT CORRECT ANSWER JMP S2B S2C EQU * LDA P053A,I ALF,ALF AND P7400 IOR B56 STA P053A,I H53 LDA B53 AVERAGE MINIMUM SEEK TIME X.XX JSB FPRNT TNTW EQU * JMP SKIPI,I EXIT S2 HED CYLD,CYLJ * * * CYLD COUNTS UP CYLX AND CHECKS FOR COMPLETION OF * TEST ON ALL CYLINDERS. IT GIVES A SKIP RETURN WHEN * ALL CYLINDERS HAVE BEEN COVERED * CYLD NOP LDB CYLX LOAD CURRENT CYLINDER REFERENCE ADB DIRCT MOVE ALONG DIRECTION STB CYLX AND STORE IT BACK LDA DIRCT FORWARD? SSA JMP CDZ NO CMB MAKE ONES COMPLEMENT JSB SWR4 LOAD EFFECTIVE SWITCH REGISTER AND BIT6 CHECK FOR RESTRICTED CYLINDERS SZA,RSS SKIP IF SHORT TEST REQUESTED JMP CDY FULL TEST ADB D12 THERE ARE TWELVE TABLE ENTRIES JMP CDZ CDY EQU * ADB CYPP CHECK FOR END OF PACK CDZ EQU * SSB SKIP IF NOT DONE ISZ CYLD COUNT UP RETURN ADDRESS ( DONE ) JMP CYLD,I RETURN * * CYLJ TRANSLATES THE NUMBER IN CYLX TO THE DESIRED * CYLINDER NUMBER IN CYL * CYLJ NOP JSB SWR4 LOAD EFFECTIVE SWITCH REGISTER AND BIT6 CHECK FOR RESTRICTED CYLINDERS LDB CYLX SZA,RSS SKIP IF SHORT TEST JMP CJZ CJQ EQU * ADB MM12 CHECK FOR CYLX TOO BIG SSB,RSS SKIP IF OKAY JMP CJQ OTHERWISE, KEEP REDUCING ADB FTR THIS GIVES THE ADDR. OF THE LAST ENTRY + 1 ADB D12 OF THE CYL TABLE FOR THIS TYPE DRIVE LDB B,I LOAD THE WORD FROM THE TABLE * CJZ STB CYL STRAIGHT COPY JMP CYLJ,I RETURN chB@< < 32K ; 1=> >=32K SZA SKIP IF LESS THEN 32K OF MEMORY JMP S4K1 ONLY NEED 1 T5WRITE PER TRACK LDA SCPT NO. OF SECTORS /TRACK ARS,ARS ARS DIVIDE SECTORS/TRACK BY 8 TO GET NO. * OF SECTOR GROUPS S4K1 STA SECIN STORE NO. OF WRITES TO PERFORM S4L JSB CYLJ TRANSLATE CYLX. TO CYL. CLA STA SECTR SET SECTOR = 0 JSB SLFHI,I GET FIRST HEAD LDA D75 JSB COPR CURRENT STEP = 75 JSB FSEEK ISSUE SEEK TO CYLINDER JSB ENDSI,I LDA D128 STA WCNT SET WORD COUNT = 128 JSB DGEN GENERATES 128 RANDOM WORDS JSB CHKSM DETERMINE SECTOR SUM AND * EXPAND TO * REQUIRED NO. OF SECTORS S4RN JSB NORMI,I SET UP NORMAL STATUS CLA STA SECTC SET SECTOR COUNT = 0 ST76A LDA RWTBL BASE ADDRESS OF SECTOR SEQUENCE TABLE ADA SECTC ADD NO. OF CURRENT SECTOR GROUP LDA A,I GET ENTRY FROM TABLE ALF AND B17 RAL,RAL STA SECTR SECTOR WE SHOULD START WITH * THIS TIME JSB RCGEN GENERATE CHECKSUMS FOR SECTORS JSB SEEH ISSUE SEEK LDA WWCNT GET NO. OF WORDS TO WRITE TO DISC STA WCNT JSB WRITE WRITE CHECKSUMMED DATA TO THE DISC JSB WENDI,I CHECK FOR ERRORS ISZ SECTC INCREMENT SECTOR GROUP COUNTER LDA SECIN GET NO. OF WRITES TO PERFORM CPA SECTC SEE IF ALL THE WRITES DONE RSS SKIP IF DONE WITH ALL THE WRITES JMP ST76A GO TO WRITE NEXT SECTOR GROUP LDA D1024 STA WCNT SET WORD COUNT = 1024 WORDS ST76B EQU * * * STEP 79 * * THIS STEP READS SECTOR ZERO WITH OFFSET = +63 * DRIVE MAY NOT FAULT * * IS CYL IN CYLINDER TABLE? LDB FTR LDA L;MM12 STA LOOP4 ST79A LDA B,I CPA CYL JMP ST79B INB ISZ LOOP4 JMP ST79A JMP STP80 ST79B EQU * LDA HEAD CPA D2 HEAD = 2? RSS YES JMP STP80 NO LDA D79 JSB COPR CLA STA SECTR SECTOR = 0 JSB FSEEK JSB FSEEK *******REMOVE******* LDA D128 STA WCNT WORD COUNT = 128 LDA D63 OFFSET = +63 JSB RWSTI,I READ WITH OFFSET CLA STA MASK1 DON'T CHECK FIRST WORD LDA FAULT STA MASK2 CHECK FAULT INDICATION JSB DMRFC DMA DOES NOT HAVE TO COMPLETE JSB WENDI,I * * STEP 80 * * THIS STEP READS SECTOR 33 WITH * OFFSET = -63. DRIVE MAY NOT FAULT. * LDA D80 JSB COPR LDA D33 STA SECTR SECTOR = 33 JSB FSEEK JSB FSEEK *******REMOVE******* LDA B277 OFFSET = -63 JSB RWSTI,I JSB DMRFC DMA DOES NOT HAVE TO COMPLETE JSB WENDI,I JSB NORMI,I JSB FSEEK ******REMOVE****** STP80 EQU * ISZ HEAD JSB SLNHI,I SELECT NEXT HEAD JMP S4RN FINISH ENTIRE CYLINDER JSB CYLD COUNT UP CYLX AND CHECK FOR DONE JMP S4L CONTINUE ON TO NEXT CYLINDER JMP S5A CONTINUE SECTION 4 B277 OCT 277 HED RCGEN * * * RCGEN * THIS ROUTINE CONSTRUCTS THE CHECKSUMS FOR THE WRITE BUFFER. * 1.) EACH SECTOR IS CHECKSUMMED SEPARATELY * 2.) THE ENTIRE SECTOR SUMS TO ZERO ( TWOS COMPLEMENT ) * 3.) THE FIRST TWO WORDS SUM TO THE CYLINDER NUMBER * 4.) WORDS 2 AND 3 SUM TO THE HEAD/SECTOR NUMBER * RCGEN NOP LDA HEAD GET CURRENT HEAD ALF,ALF ROTATE LEFT 1 BYTE ADA SECTR ADD IN CURRENT SECTOR STA TEMP2 STORE HEAD SECTOR WORD LDA NSECT CMA,INA -(NO. OF SECTORS TO CHECKSUM) 1 STA TEMP1 NO. OF SECTOR COUNTER LDB BUFAD START OF WRITE BUFFER RCG1 LDA B,I GET WORD 0 OF BUFFER CMA,INA DETERMINE WORD 1 SO THAT FIRST * 2 WORDS SUM TO CYL. ADA CYL INB STA B,I STORE WORD 1 IN BUFFER INB LDA B,I GET WORD 2 FROM BUFFER CMA,INA DETERMINE WORD 3 SO THAT 3RD & * 4TH WORDS SUM TO HEAD/SECTOR ADA TEMP2 ADD IN HEAD/SECTOR WORD INB STA B,I STORE WORD 3 IN BUFFER ADB D124 POINT TO LAST WORD IN BUFFER LDA CYL GET CYL. ADA TEMP2 ADD HEAD/SECTOR VALUE ADA BCHKS ADD SUM OF SECTOR WORDS 4-126 CMA,INA DETERMINE LAST WORD SO SECTOR SUMS * TO ZERO STA B,I STORE VALUE IN BUFFER INB ISZ TEMP2 INCREMENT SECTOR IN HEAD/SECTOR WORD ISZ TEMP1 SEE IF DONE JMP RCG1 GO DO NEXT SECTOR JMP RCGEN,I D124 DEC 124 BCHKS BSS 1 SUM OF ENTRIES 4-126 HED S4 - SECTION 4 (CONTINUED) HED CHKSM (GET CHECKSUM & EXPAND BUFFER TO DESIRED NO. OF SECTORS) CHKSM NOP LDB MM123 NO. OF WORDS IN SECTOR TO SUM STB TEMP2 CLB LDA BUFAD GET WRITE BUFFER ADDRESS ADA D4 CHK1 ADB A,I GET SUM OF ENTRIES 4-126 INA POINT TO NEXT ENTRY IN SECTOR ISZ TEMP2 HAVE WE ADDED UP ALL THE ENTRIES JMP CHK1 STB BCHKS STORE SUM OF ENTRIES 4-126 LDA TMXE IS COMPUTER MX OR XE SZA,RSS SKIP IF MX OR XE JMP CHK3 LDA D64 STA WCNT LDA NLOOP CMA,INA -(NO. OF TIMES TO LOOP) STA TEMP1 CHK2 LDB WCNT RBL MULTIPLY WORD COUNT BY 2 STB WCNT  ADB BUFAD ADD BASE ADDRESS OF WRITE BUFFER LDA BUFAD GET BASE ADDRESS OF WRITE BUFFER OCT 105777 MOVE WORDS DEF WCNT POINTER TO WORD COUNT OCT 0 ISZ TEMP1 HAVE WE COPIED SUFFICIENT WORDS JMP CHK2 LDA NLOOP CPA D5 IF NLOOP = 5 => 48 SECTOR WRITE RSS XFER REQUIRES 2K MORE XFER JMP CHKSM,I RETURN, BUFFER EXPANDED SUFFICIENTLY LDB D4096 ADB BUFAD ADD 4096 TO BASE ADDRESS OF WRITE BUFFER LDA BUFAD BASE ADDRESS OF WRITE BUFFER OCT 105777 MOVE WORDS DEF WCNT POINTER TO WORD COUNT OCT 0 JMP CHKSM,I RETURN TO CALLING ROUTINE CHK3 LDA WWCNT FOR EXPANSION OF 128 WORD BUFFER CMA,INA NEGATE WORD COUNT ADA D128 TO DESIRED SIZE IN 2100 COMPUTER STA TEMP1 NO. OF WORDS TO COPY LDA BUFAD BASE ADDRESS OF WRITE BUFFER * (SOURCE ADDRESS) LDB A ADB D128 BASE ADDRESS OF WRITE BUFFER +128 * THIS = INITIAL DESTINATION ADDRESS STB TEMP2 CHKLP LDB A,I GET WORD TO COPY STB TEMP2,I STORE IN DESTINATION LOCATION INA INCREMENT SOURCE ADDRESS ISZ TEMP2 INCREMENT DESTINATION ADDRESS ISZ TEMP1 HAVE WE XFERRED ALL THE WORDS JMP CHKLP GO XFER ANOTHER WORD JMP CHKSM,I RETURN TO CALLING ROUTINE MM123 DEC -123 BCHKI DEF BCHKS INDIRECT LINK TO BUFFER CHECKSUM D4096 DEC 4096 * * * SECTION 4 - CONTINUED * * THIS SECTION READS RANDOM SECTORS AND VERIFIES * THAT THEY ACTUALLY ARE THE SECTORS REQUESTED. * * * AT THE END OF EACH SEEK, A READ IS ISSUED FOR THE * NEXT AVAILABLE SECTOR. AS SOON AS THIS READ IS COMPLETED, THE * NEXT SEEK IS STARTED. * * ALNTA EQU GLOB5 LENGTH ACCUMULATOR FLAG4 EQU GLOB2 USED WHEN STEP 81 LOOPS SVCTB EQU GLOB6 TIME ACCUMULATOR ALNT EQU GLOB4 SEEK LENGTH COUNTER P054A DEF JP54A P054B DEF JP54B MSCVI DEF MSCV S5A EQU * CLA STA ALNT ZERO SEEK LENGTH COUNTER STA SVCT ZERO TOTAL TIME IN SEEKS STA SVKC ZERO SEEK COUNT STA ALNTA ZERO LENGTH ACCUMULATOR STA SVCTB ZERO TIME ACCUMULATOR LDA D128+SZREF CHECK ONE SECTOR STA WCNT SET WORD COUNT FOR ONE SECTOR * S5C EQU * JSB RNCHI,I GENERATE CYLINDER AND HEAD NUMBER CLA,INA SET UP STA FLAG4 FOR TIMING LDA SVCT SET UP STA SVCTA CURRENT MILLISECOND COUNT * * STEP 81 * THIS SEEK MOVES TO A * RANDOM CYLINDER AND HEAD. * LDA D81 JSB COPR JSB FSEEK LDA FLAG4 HAS THIS STEP BEEN REPEATED SZA,RSS SKIP IF NO JMP S4A YES CLA STA FLAG4 DISABLE TIMING ON LOOP LDA SVCTA SAVE CURRENT STA SVCT MILLISECOND COUNT S4A EQU * JSB ENDSI,I * * STEP 82 * THIS READ READS IN ONE SECTOR * FROM A RANDOM LOCATION * LDA D82 JSB COPR JSB SEEH JSB READ GO DO READ JSB S6CHK CHECK BUFFER JSB ENDSI,I LDA CYL LOAD CYLINDER NUMBER CMA,INA ADA OLCYL GET SEEK LENGTH SSA SKIP IF NOW POSITIVE CMA,INA ABSOLUTE VALUE ADA ALNT ADD TO TOTAL STA ALNT ISZ SVKC LDA SVKC AND B77 SZA SKIP IF MULTIPLE OF 64 JMP S5TE NOT NOW * LDA SVCT ARS,ARS ARS,ARS DIVIDE BY 16 ADA SVCTB STA SVCTB ACCUMULATE TIME LDA ALNT ARS,ARS ARS,ARS ARS ARS,ARS DIVIDE BY 128 ADA ALNTA STA ALNTA xACCUMULATE LENGTH CLA STA SVCT STA ALNT LDA SVKC CPA D8192 RSS SKIP IF DONE JMP S5TE JSB SWR AND BIT12 ABORT IF SZA,RSS BIT 12 IS CLEAR JMP S5TE ABORT PRINTOUT JSB TTYCK JMP S5TE ABORT PRINTOUT LDA SVCTB ARS,ARS ARS LOAD TOTAL TIME ADA MM64 STA SVCTB ARS,ARS ARS STA B ARS ADA B ADA SVCTB A = 1.1875 * SVCTB LDB P054A JSB MSCVI,I CONVERT TO ASCII LDA ALNTA LOAD TOTAL LENGTH LDB P054B JSB MSCVI,I CONVERT TO ASCII H54 LDA B54 JSB FPRNT AVERAGE RANDOM SEEK TIME XXXX.X. * AVERAGE RANDOM SEEK LENGTH XXXX.X * S5TE EQU * LDB SVKC LOAD SEEK COUNTER JSB SWR SWITCH REGISTER TO A AND BIT5 ADB M256 SHORT TEST SZA,RSS SKIP IF YES ADB M7936 NO SSB SKIP IF DONE JMP S5C DO ANOTHER JMP SKIPI,I EXIT S4 HED BCHK1,RCER1,BCHK * * * BCHK1 * THIS ROUTINE CHECKS THE BUFFERS GENERATED BY RCGEN * IT USES BUFAE FOR A POINTER AND CHECKS ONE SECTOR * SEE RCGEN FOR A DESCRIPTION OF THE SECTOR FORMAT * * BCHK1 STA WCHK JSB DSOKI,I CHECK S AND D BITS SZA,RSS ABORT? JMP WRERX YES LDA NOWDS TRANSFER COMPLETE? SZA JMP WRERX NO STA DERR STA DFRST JSB BCHK CHECK BUFFER JMP BCHK2 BCHK3 JSB FXITI,I LDA DERR STA DERR1 USED BY ADDO ISZ DFRST LDA STAS1 AND B7400 CPA A7400 CORRECTED? RSS YES JMP BCHK4 NO JSB BCHK CHECK BUFFER JMP BCHK2 JSB ISFTI,I IS IT SOFT? JMP WRERX YES LDA B116 LDB DERR SZB JSB FPRNT DATA ERROR CORRECTED BCHK4 JSB ISFTI,I IS IT SOFT? JMP WRERX YES LDA DERR SZA ANY ERRORS? JMP WRERV YES JMP WRERX BCHK2 EQU * ISZ DERR JSB RCER1 JSB FSFTI,I IS IT SOFT AND FIRST TIME? JMP BCHK5 YES JSB PCOP E52 JSB ERROR BUFFER ERROR BCHK5 LDA DFRST FIRST TIME? SZA,RSS JMP BCHK3 YES JSB DDMPI,I NO - DUMP SYNDROME JMP WRERV DDMPI DEF DDUMP ISFTI DEF ISOFT FSFTI DEF FSOFT * * RCER1 * RCER1 NOP LDA TEMP1 LOAD CHECKSUM LDB P052A POINTER-CHECKSUM JSB CNVRT CONVERT TO ASCII LDA TEMP2 LOAD CYLINDER CHECK LDB P052B POINTER-CYLINDER JSB CNVRT CONVERT TO ASCII LDA TEMP3 LOAD HEAD/SECTOR CHECK LDB P052C POINTER-HEAD AND SECTOR JSB CNVRT CONVERT TO ASCII LDA TEMP2 LDB P052D PRINT CYLINDER IN DECIMAL JSB DCIN2 LDA TEMP3 ALF,ALF AND B377 LDB P052E PRINT HEAD IN DECIMAL JSB DCIN1 LDA TEMP3 AND B377 LDB P052F PRINT SECTOR IN DECIMAL JSB DCIN1 JMP RCER1,I P052A DEF JP52A P052B DEF JP52B P052C DEF JP52C P052D DEF JP52D P052E DEF JP52E P052F DEF JP52F RCHKI DEF RCHK1 * * BCHK * BUFFER CHECK * BCHK NOP JSB RCHKI,I SZA SKIP IF OK JMP BCHK,I ERROR LDA TEMP2 CPA CYL IS CYLINDER OK? RSS YES JMP BCHK,I NO-ERROR LDA HEAD ALF,ALF IOR SECTR CPA TEMP3 IS HEAD-SECTOR OK? ISZ BCHK YES JMP BCHK,I HED S5 - SECTION 5 * * * SECTION 5 * THIS SECTION RUNS MULTIPLE UNIT TEST IF AT LEAST TWO UNITS * ARE PRESENT. THE SEEKS OVERLAP. THE READ CHECK IS THE SAME * THAT S4 PERFORMS. * STBLE EQU GLOB1 STBLF EQU GLOB2 STBLG EQU GLOB3 S6TMP EQU GLOB4 S6CNT BSS 1 SA640V6 BSS 1 THRUI DEF THRU P033A DEF JP33A SLCL BSS 1 SCOPR EQU GLOB5 PSERR EQU GLOB6 S5 EQU * LDA UNITC NUMBER OF UNITS CPA D1 IS IT ONLY ONE? JMP S6NO YES,ABORT TEST CPA NI ARE ALL INITIALIZED? JMP S6TST YES ISZ NI JMP THRUI,I DISABLE REPEAT OF SECTION S6TST EQU * LDA B14 STA MDFLG LDA S4BUG TROUBLE? SZA JMP S6NO YES - ABORT STA S6CNT ZERO COUNT STA SHTAS AND STATUS * CHECK FOR RESTRICTED CYLINDER JSB S6SET CLA S6X1 EQU * LDB SAV6,I ADB S400 IOR B,I OR THE SWR'S TOGETHER ISZ SAV6 ISZ FL6 JMP S6X1 STA TEMP1 JSB S6SET LDA TEMP1 S6X2 EQU * LDB SAV6,I ADB S400 STA B,I STORE RESULT BACK ISZ SAV6 ISZ FL6 JMP S6X2 * LDA D128+SZREF STA WCNT WORD COUNT = 128 F6* THIS SECTION IS TIME DEPENDENT AND MAY NOT BE SINGLE CYCLED S6L EQU * LDA PSERR SEE IF POSITION ERROR SZA JSB PSFIX IF YES, ISSUE RECALIBRATE TO EACH UNIT CLA STA PSERR CLEAR POSITION ERROR INDICATOR JSB S6SET S6SL LDA SAV6,I GET NEXT UNIT NO. JSB UNXFI,I UPDATE UNIT DEPENDENT TABLES S6L6 JSB RNCHI,I SELECT RANDOM CYL., HEAD AND SECTOR JSB SWR4 GET EFFECTIVE S AND BIT6 SZA,RSS BIT 6 SET? JMP S6Z NO LDB FTR YES-ALL CYL TABLE SAME? ADB D12 GET ADDR. OF LAST ENTRY + 1 IN CYL. TABLE STB TRT ADB MM12 RESTORE ORIGINAL VALUE LDA FTR,I S6Y CPA B,I SAME AS FIRST CYL? INB,RSS YES JMP S6Z NO - OK CPB TRT DONE? JMP S6NO YES - ALL SAME,EXIT JMP S6Y S6Z EQU * LDA CYL LDB UNIT RBL ADB BPTO GET ENTRY IN TABLE FOR STORING CYL. VALUE CPA B,I SEE IF CYL. THIS TIME = CYL. FROM LAST TIME JMP S6L6 IF YES GO GET A NEW CYL. NO. STA B,I STORE CYL. IN TABLE TO LOOK AT NEXT TIME LDA HEAD ALF,ALF IOR SECTR INB STA B,I STORE HEAD AND SECTOR IN TABLE ALSO ISZ SAV6 ISZ FL6 JMP S6SL * THIS IS USED FOR CHECKING * CHECKSUMMED RESULTS * * STEP 85 * PERFORM MULTI-SEEK AND READ * LDA D85 JSB COPR LDA COPR STA SCOPR SAVE ADDRESS JSB S6SET S6LL LDA SAV6,I GET FIRST UNIT JSB UNXFI,I UPDATE UNIT DEPENDENT TABLES RAL MULTIPLY UNIT NO. BY 2 ADA BPTO ADD ON BASE ADDRESS OF TABLE LDB A,I GET CYL. SELECTED FOR THIS UNIT STB CYL INA GET ADDRESS OF HEAD SECTOR ENTRY LDB A,I r LDA A,I AND B377 GET SECTOR STA SECTR LDA B ALF,ALF AND B377 GET HEAD STA HEAD JSB SEEH SEEK WITHOUT WAIT ISZ SAV6 NEXT UNIT ISZ FL6 DONE? JMP S6LL JSB S6SET LDB BPTO WORK AREA ADB D16 S6L1 EQU * SET UP FOR VALIDITY CHECK LDA SAV6,I STA B,I INB ISZ SAV6 ISZ FL6 JMP S6L1 JSB S6SET STB STBLE SET UP FOR STB STBLF SEEK-STATUS TABLE S6RL EQU * SC31 STC SC LDA B44 SEEK IN S5 STA COPRN LDA MM512 STA LCNT ALLOW 512 MILLISECONDS FOR FLAG S6D EQU * CLA,INA JSB TMR,I DELAY 1 MSEC CC09 SFS CC RSS JMP S6F FLAG IS SET ISZ LCNT JMP S6D JSB PCOP CURRENT OPERATION LDA B10 NO FLAG FOLLOWING SEEK STA ELOC JSB FPRNT JSB S6SET SET UP POINTER SL3 LDA SAV6,I GET NEXT JSB UNXFI,I STORE NEW UNIT NO., UPDATE DEVICE RELATED TABLES LDA STBLE CMA,INA ADA STBLF SZA,RSS JMP S6L4 NO INTERRUPTS OCCURRED INA ARS STA LOCAL = NUMBER OF INTERRUPTS LDA STBLF SET UP STA STBLG POINTER SL1 LDA STBLG,I GET FIRST STATUS WORD AND B377 GET UNIT PART CPB UNIT IS THIS THE ONE? JMP SL2 YES - THIS UNIT IS OK ISZ STBLG NO MOVE ISZ STBLG POINTER TWICE -PAST SECOND STATUS ISZ LOCAL JMP SL1 JMP S6L4 SL2 ISZ SAV6 ISZ FL6 DONE? JMP SL3 NO JMP S6L4 YES - SHOULD NEVER GET HERE EE21 JSB PCOP E21 JSB ERROR INVALID UNIT S6L4 LDA STBLE CALCULATE CMA,INA NUMBER OF ADA STBLF WORDS IN THE STA LOCAL STACK LDB P033A BUFFER ADDRESS S6M3 LDA BB BLANK,BLANK >JSB S6M6 SET UP BUFFER LDA CRLF CR,LF JSB S6M6 SET UP BUFFER JMP S6M3 S6M6 NOP STA TEMP2 ENDING WORD STB TEMP1 BUFFER POINTER LDA STBLF,I GET NEXT WORD FROM TABLE ISZ STBLF JSB CNVRT DEPOSIT RESULT IN OCTAL LDB TEMP1 ADB B3 LDA TEMP2 STA B,I STORE ENDING INB ISZ LOCAL DONE? JMP S6M6,I NO ADB MM1 YES LDA C1440 #,BLANK STA B,I LDA B33 H33 JSB FPRNT SEEK-STATUS TABLE JSB ADDOI,I JMP STP55 S6F CLA,INA STA BLOCK FLAG IS EXPECTED JSB OSTAT CLA STA BLOCK LDA STAS1 STA STBLE,I SAVE SEEK-STATUS STA SLCL ISZ STBLE AND B377 JSB UNXFI,I STORE NEW UNIT NO., UPDATE DEVICE RELATED TABLES JSB OSTAT LDA STAS2 SAVE DEVICE STA STBLE,I STATUS ISZ STBLE LDA UNITC CHECK VALIDITY OF UNIT NUMBER CMA,INA STA S6TMP LDB BPTO ADB D16 S6L3 EQU * LDA B,I CPA UNIT JMP S6OK INB ISZ S6TMP JMP S6L3 JMP EE21 NOT VALID UNIT S6OK STB B,I DON'T ALLOW SAME BIT AGAIN LDA B7400 =17400 STA SHTAS LDA SLCL RESTORE SEEK STA STAS1 STATUS JSB WCHK CHECK STATUS * * READ PART (STEP 85) * LDA D85 JSB COPR CLA STA SHTAS LDB UNIT RBL ADB BPTO GET CYL., HEAD, SECTOR, VALUES FOR UNIT LDA B,I GET OLD CYL. NOS. STA CYL INB LDA B,I GET HEAD , SECTOR AND B377 GET OLD SECTOR STA SECTR LDA B,I ALF,ALF AND B377 GET HEAD STA HEAD JSB SEES JSB READ JSB S6CHK CHECK BUFFER LDA STAS1 AND B7400 CPA A3400 POSITION ERROR? K ISZ PSERR YES JSB ENDSI,I LDA SCOPR STA COPR JSB POLL RESUME POLLING ISZ FL6 DONE? JMP S6RL NO RSS STP55 EQU * JSB ENDSI,I ISZ S6CNT BUMP COUNTER LDB S6CNT JSB SWR AND BIT5 SHORTEN TEST? ADB M256 -256 SZA,RSS SKIP IF YES ADB M7936 -7936 SSB DONE? JMP S6L NO S6NO EQU * CCA ADA UNITS ADA NI GET ADDRESS IN UNIT TABLE OF UNIT TO USE LDA A,I GET UNIT NO. JSB UNXFI,I UPDATE UNIT DEPENDENT TABLES CLA STA S4BUG JMP SKIPI,I * * * * S6CHK * CHECKS BUFFER FOR PROPER POSITION AND DATA * TRANSFER * S6CHK NOP LDA S6CHK JMP BCHK1 * * S6SET NOP LDA UNITC NUMBER OF UNITS CMA,INA TWO'S COMPLEMENT STA FL6 LDA UNITS POINTER FOR STA SAV6 UNIT NUMBERS JMP S6SET,I * PSFIX NOP JSB S6SET PSF1 LDA SAV6,I JSB UNXFI,I STORE NEW UNIT NO., UPDATE DEVICE RELATED TABLES JSB SEEKH RECALIBRATE ISZ SAV6 ISZ FL6 JMP PSF1 JMP PSFIX,I HED S6 - SECTION 6 (OPDSN) * * OPDSN * OPERATOR DESIGN SECTION * THIS SECTION ALLOWS THE OPERATOR TO DESIGN * HIS OWN TEST AND THEN EXECUTE IT. * ORG 10000B TNUMP EQU GLOB3 TLIMT EQU GLOB2 TNUM EQU GLOB4 PLIMT EQU GLOB5 OUTC DEF OTBLE PPT1 JSB TV1,I PPT2 JSB TV2,I PPT4 JSB TV4,I PPT5 JSB TV5,I PPT6 JSB TV6,I PPT7 JMP OPDNI,I PPT8 JSB TV8,I PPT9 JSB TV9,I PPT10 JSB TV10,I PPT13 JSB TV13,I PPT14 JMP TV14,I PPT15 JSB TV15,I PPT17 JSB TV17,I PPT18 JSB TV18,I PPT19 JSB TV19,I PPT20 JSB TV20,I PPT21 JSB TV21,I PPT22 JSB TV22,I PPT23 JSB TV23,I LABEL BSS 1 LABLC BSS 1 LBLP1 OCT 36476 LBLP2 BSS 1 PFLAG BSS 1 B102 OCT 102 B103 OCT 103 P056A DEF JP56A P7437 OCT 177437 CODEC ABS -TABLE P055A DEF M55A REINI DEF REINT TP2I DEF TVP2,I T2STI DEF TV2ST PT5CI DEF PUT5C BILDI DEF BUILD TRCHI DEF TRKCH EXWDS BSS 1 USED TO ADD 2 EXTRA WORDS FOR OPDSN OPDSN EQU * LDA D90 STEP NUMBER JSB COPR LDA BPTR SET STA BUFAD UP LDA BPTS POINTERS STA BUFAE CLA STA SFLAG RESET SO THAT LOOKS AT SWITCH REG. * RATHER THEN STORED VALUE * OF SWITCH RFEG. STA DMRF INA STA SOFT PRINT SOFT ERRORS IN OPDSN LDB VALID CPB D2 STA VALID LDA MM5 STA LIMIT JSB NORMI,I SET UP NORMAL STATUS H55 LDA UNIT ADA BLNK0 STA P055A,I LDA B55 JSB PRINT OPD0 LDA XMCPU SEE IF MCPU MODE SZA,RSS SKIP IF MCPU MODE JMP OPD1 CLA PLACE NULLS IN MESSAGE LDB P146A STA B,I INB STA B,I LDA B146 JSB PRINT OPD1 EQU * JSB HIN INPUT LINE CLA STA DISCK STA PFLAG STA EXWDS ZERO INDICATOR FOR DS OR IS INSTRUCTIONS LDA D128 COMMONLY USED FOR STA WD2 DEFAULT CASE STA ACTAD JSB PCK2I,I GET OP CODE JMP H20 ERROR IN INPUT LDB CODEE OPD2 EQU * SEARCH FOR CPA B,I CODE MATCH JMP OPD3 FOUND IT INB CPB CODEF RSS ERROR - BAD OP CODE JMP OPD2 H20 LDA B20 UNDEFINED INSTRUCTION JSB PRINT JMP OPD1 OPD3 EQU * ADB CODEC STB OPCNT OP CODE LDA OPD9 SET UP RETURN STA OPNDI,I JMP OPD7I,I OPD8 EQU * LDB OPCNT CPB B55 RI? RSS YES CPB B56 AI? JMP OPD4 YES LDA VALID CPA D29 RSS JMP OPD6 OPD5 ADB OUTC LDA B,I PROCESS INSTRUCTION LDB XMCPU SEE IF IN MCPU MODE SZB SKIP IF NOT IN MCPU MODE SSA SKIP IF NOT LEGAL MCPU COMMAND JMP OPD5A JUMP FOR IS A VALID INSTRUCTION LDA B20 JSB PRINT PRINT UNDEFINED INSTRUCTION JMP OPD0 PRINT CURRENTLY IN MCPU MODE OPD5A LDB D2 STB VALID ELA,CLE,ERA CLEAR SIGN BIT OF INSTRUCTION JMP A,I OPD4 LDA VALID CPA D1 PROGRAM VALID? JMP OPD5 YES JMP H20 NO * OPD6 CLA INITIALIZE STA LABLC VARIABLES LDA BPTO STA BILD JMP OPD5 OPD9 DEF OPD8 * * * POUT1 AR,CR,DS,IS,SK * POUT1 LDA PPT1 LDB OPCNT CPB B73 LDA PPT19 STA WD1 STORE TRANSFER VECTOR CLA STB WD4 CPB B54 CR? RSS YES STA WD2 DEFAULT CASE STA WD3 LDA D3 CPB B14 IS RSS CPB D5 DS STA EXWDS JSB PUT1J LOOK FOR COMMA LDB PPT1 STB WD1 JSB PUT1D PROCESS FIRST FIELD,CYLINDER ISZ DFLT STA WD2 LDB OPCNT CPB B54 CR? JMP PUT1K YES JSB PUT1D PROCESS SECOND FIELD,HEAD PUT1L ALF,ALF STA WD3 JSB PUT1D PROCESS THIRD FIELD,SECTOR IOR WD3 STA WD3 LDA PFLAG DONE? SZA,RSS SKIP IF YES JMP PUT1A ERROR JMP PUT5B PUT1B LDA D3 PUT1F JSB BILDI,I LDA OPCNT CPA B71 =71 JMP PUT7I JMP OPD1 EXIT PUT1A JSB H31 BAD INPUT JMP OPD1 PUT1D NOP LDA PFLAG DONE? SZA JMP PUT5B YES JSB DCHAR NO,GET NEXT FIELD RSS JMP PUT1D,I JSB PUT1E DONE OR ERROR? ISZ PFLAG DONE JMP PUT1D,I CONTINUE PUT1E NOP DONE OR ERROR? LDB CCNT COLUMNS REMAINING SZB JMP OPD1 ERROR (ALREADY REPORTED) JMP PUT1E,I PUT1G NOP CHECK COMMA XOR B54 SZA,RSS JMP PUT1G,I OK JMP PUT1A PUT1H NOP JSB CHAR GET NEXT CHARACTER JMP PUT1B DONE JSB PUT1G CHECK FOR COMMA JMP PUT1H,I RETURN PUT1J NOP JSB CHAR GET NEXT CHARACTER JMP PUT5B DONE JSB PUT1G CHECK FOR COMMA JMP PUT1J,I RETURN PUT1K EQU * JSB PUT6D CHECK FOR VALID WORD COUNT JSB PUT1D PROCESS SECOND FIELD , HEAD LDB A AND MM4 =177774 SZA JMP PUT1A ERROR - HEAD > 3 LDA B JMP PUT1L * * * POUT2 CL,DA,F0,F1,F2,F3,F4,F5,F6,FH,NO,RA,RC,RL,RS,ST * V0,V1,V2,V3,V4,V5,V6,VH * PUT20 LDA PPT20 RSS POUT2 EQU * LDA PPT2 STA WD1 STORE TRANSFER VECTOR JSB CHAR RSS SKIP IF DONE JMP PUT1A ERROR JMP PUT3J EXIT * * * POUT3 GO,LB * POUT3 LDA PPT3 AN RSS STA WD1 STORE TRANSFER VECTOR JSB CHAR JMP PUT1A ERROR JSB PUT3K GET LABEL JSB CHAR CHECK NEXT CHARACTER RSS OK-SKIP JMP PUT1A ERROR-TOO MANY CHARACTERS LDA OPCNT OP CODE CPA B106 PR JMP PUT3V CPA B15 LB ? RSS SKIP IF IT IS CPA B102 SB ? RSS SKIP IF IT IS JMP PUT3A MUST BE GO JSB PUT3D SEARCH FOR LABEL JMP PUT3B NOT THERE ISZ LBLP2 FOUND IT LDA LBLP2,I ADDRESS WORD SZA,RSS SKIP IF PREVIOUSLY DEFINED JMP PUT3E H17 LDA B17 DUPLICATE LABEL JSB PRINT JMP OPD1 PUT3B JSB PUT3L CHECK FOR OVERFLOW PUT3E LDA BILD NEXT AVAILABLE LOCATION STA LBLP2,I STORE ADDRESS w LDA OPCNT CPA B15 LB ? JMP PUT3J JUMP IF IT IS CLA STA WD1 PLACE NOP IN PROGRAM FOR SB INSTRUCTION * TO HOLD RETURN ADDRESS LDA PPT3 PLACE RSS INSTRUCTION IN PROGRAM STA WD2 TO SKIP OVER LENGTH AND OPCODE WORD LDA B3 SB INSTRUCTION TAKES 3 WORDS JMP PUT1F PUT3J LDA D2 JMP PUT1F EXIT PUT3A JSB PUT3D GO,SEARCH TABLE JMP PUT3F DID NOT FIND IT ISZ LBLP2 FOUND IT PUT3G LDA LBLP2 LDB OPCNT CPB B103 CA ? JMP PUT3R JUMP IF IT IS CPB B104 LV? LDA A,I GET ADDRESS OF START OF SUBROUTINE AND B3777 IOR JMPI =126000B STA WD1 JMP PUT3J PUT3R AND B3777 SAVE LOWER PART OF ADDRESS IOR JSBI =116000 STA WD1 PLACE JSB ?????,I IN WD1 LDA PPT3 STA WD2 PLACE RSS IN WD2 LDA B3 JMP PUT1F CA INSTRUCTION TAKES 3 WORDS JSBI OCT 116000 PUT3F LDB OPCNT CPB B104 LV? JMP PUT7A LABEL MUST BE DEFINED PREVIOUSLY FOR RS * THEREFORE, ERROR WAS MADE * GO GIVE ERROR MESSAGE JSB PUT3L CHECK FOR OVERFLOW CLA STA LBLP2,I ZERO ADDRESS WORD JMP PUT3G PUT3D NOP SEARCH TABLE LDB LABLC NUMBER OF LABELS PUT3I SZB,RSS JMP PUT3D,I ZERO LABELS LDA LBLP2,I CPA LABEL JMP PUT3H FOUND IT LDA LBLP2 STEP ADA MM2 BACK STA LBLP2 THROUGH CORE ADB MM1 DECREMENT LABEL COUNT JMP PUT3I PUT3H ISZ PUT3D NORMAL JMP PUT3D,I EXIT PUT3K NOP GET LABEL JSB PUT1G CHECK COMMA JSB PCK2I,I JMP PUT1A ERROR STA LABEL SAVE LABEL LDA LBLP1 STA LBLP2 JMP PUT3K,I PUT3L ]NOP CHECK FOR WORK SPACE OVERFLOW JSB PUT3N ISZ LABLC LDA LABEL STA LBLP2,I ISZ LBLP2 JMP PUT3L,I NORMAL EXIT PUT3N NOP LDA LABLC ALS TWO LOCATIONS PER LABEL ADA BILD ADA D6 LDB LBLP1 CMB,INB ADB A SSB,RSS JMP PUT3M OVERFLOW JMP PUT3N,I PUT3M LDA B16 OVERFLOW JSB PRINT JMP OPD1 PUT3V LDA LABEL STA WD3 SAVE SYMBOL TO BE OUTPUT LDA PPT23 STA WD1 OUTPUT TRANSFER VECTOR LDA D4 JMP PUT1F * * * POUT4 RD,RF,RW,VF,WD,WF,SS,SH * POUT4 LDA PPT4 STA WD1 STORE TRANSFER VECTOR LDB D138 LDA OPCNT CPA B36 RF RSS CPA B35 WF STB WD2 WORD COUNT = 138 CLB,INB CPA D2 VF RSS CPA B77 CS? RSS CPA B100 CH? RSS CPA B101 CC? STB WD2 JSB PUT1H LOOK FOR COMMA LDA PFLAG DONE? SZA JMP PUT1B YES JSB PUT1D PROCESS FIELD,WORD COUNT JSB PT5CI,I LDA OPCNT IS IT CPA B16 READ? RSS YES CPA B36 READ FULL SECTOR? RSS CPA B41 READ WITHOUT VERIFY? JSB PUT6D YES,LIMIT WORD COUNT LDA PFLAG DONE? SZA,RSS SKIP IF YES JMP PUT1A ERROR JMP PUT1B EXIT * * * POUT5 CB * POUT5 LDA PPT5 STA WD1 TRANSFER VECTOR CLA,INA STA WD3 DEFAULT NUMBER OF ERROR PRINTS JSB CHAR JMP PUT5B DONE JSB PUT1G CHECK COMMA JSB DCHAR JMP PUT5A DONE OR ERROR? ISZ DFLT SKIP ON DEFAULT JSB PT5CI,I JSB DCHAR RSS JMP PUT1A ERROR JSB PUT1E DONE OR ERROR? ISZ DFLT SKIP ON DEFAULT STA WD3 JM6<:6P PUT5B PUT5A JSB PUT1E ISZ DFLT SKIP ON DEFAULT STA WD2 PUT5B LDA WD2 STA WD5 LDA WD3 STA WD6 LDA D4 ADA EXWDS JMP PUT1F EXIT * * POUT6 DB * POUT6 LDA PPT6 STA WD1 STORE TRANSFER VECTOR JSB PUT1H LOOK FOR COMMA JSB DCHAR JMP PUT6C DONE OR ERROR? JSB PT18B JSB OCHAR JMP PUT6A DONE OR ERROR? JSB PUT6B JSB CHAR JMP PUT1A ERROR XOR B103 C SZA JMP PUT6E LDA BIT15 PUT6F XOR WD2 STA WD2 JSB CHAR JMP PUT5B SHOULD BE DONE JMP PUT1A ERROR PUT6E XOR B12 I? SZA SKIP IF YES JMP PUT1A ERROR LDA BIT14 JMP PUT6F PUT6A JSB PUT1E DONE OR ERROR? JSB PUT6B JMP PUT5B PUT6B NOP ISZ DFLT SKIP IF DEFAULT RSS OK CLA STA WD3 LDA M0000 IOR WD2 STA WD2 JMP PUT6B,I PUT6C JSB PUT1E DONE OR ERROR? JSB PT18B JMP PUT1B EXIT PUT6D NOP CHECK WD2 - MUST NOT BE GREATER LDA WD2 THAN 1024 CMA,INA SSA,RSS MUST BE NON ZERO AND JMP PUT1A POSITIVE ADA BSIZE ADD MAX. BUFFER SIZE SSA JMP PUT1A ERROR JMP PUT6D,I ~<* * POUT7 EN * POUT7 LDA PPT7 PUT7G STA WD1 STORE TRANSFER VECTOR PUT7I LDA BPTO STA OPSRT LDB LABLC NUMBER OF LABELS LDA LBLP1 INA STA LBLP2 PUT7D SZB,RSS SEARCH FOR JMP PUT7B UNDEFINED LABELS LDA LBLP2,I SZA,RSS JMP PUT7C LDA LBLP2 ADA MM2 STA LBLP2 ADB MM1 JMP PUT7D PUT7B LDA OPCNT CPA B71 =71 JMP PUT7H JSB CHAR JMP PUT7F NORMAL START JSB PUT3K JSB CHAR CHECK NEXT CHARACTER RSS OK-SKIP JMP PUT1A ERROR-TOO MANY CHARACTERS JSB PUT3D SEARCH TABLE JMP PUT7A DID NOT FIND IT ISZ LBLP2 FOUND IT LDA LBLP2,I STA OPSRT PUT7F LDA D2 JSB BILDI,I PUT7H EQU * ENTRY FOR RI CLA,INA STA VALID LDA XMCPU SZA,RSS SKIP IF IN MCPU MODE JSB OMASK JSB REINI,I REINITIALIZE VALUES FOR DS,IS AND RT JMP OPSRT,I START EXECUTION PUT7C LDB LBLP2 ADB MM1 LDA B,I PUT7E STA P056A,I H56 LDA B56 UNDEFINED LABEL,XX JSB PRINT JMP OPD1 PUT7A LDA LABEL JMP PUT7E * * * POUT8 SD * POUT8 LDA PPT8 STA WD1 SET UP TRANSFER VECTOR JSB CHAR JMP PUT8C JSB PUT1G CHECK COMMA JSB DCHAR RSS SHOULD BE DONE JMP PUT1A ERROR JSB PUT1E ERROR OR DONE? ISZ DFLT DEFAULT? RSS NO JMP PUT1A YES LDB OPCNT CPB B72 JMP PUT8A =TB CPB B105 =DL JMP PUT8F PUT8B STA WD2 JMP PUT1B EXIT PUT8A CMA,INA NEGATE WORD COUNT SSA,RSS IF ORIGINAL NO. <= 0 THEN ERROR JMP PUT1A ADA BSIZE ADD MAX. BUFFER SIZE SSA IF ORIGINAL NO. > 1024 JMP PUT1A THEN ERROR ADA NBSZE V SUBTRACT MAX. BUFFER SIZE JMP PUT8B PUT8C LDB OPCNT CPB B105 =DL JMP PUT8E CPB B72 RSS JMP PUT1A IF IS NOT TB THEN IS AN ERROR LDA MM128 JMP PUT8B GO TO STORE DEFAULT VALUE OF 128 WORDS PUT8E CLA,INA PUT8F LDB PPT21 STB WD1 JMP PUT8B * * * POUT9 ID * POUT9 LDA PPT9 STA WD1 SET UP TRANSFER VECTOR CCA STA WD2 DEFAULT CASE CLA STA WD3 DEFAULT OPTIONS JSB CHAR JMP PUT5B DONE JSB PUT1G CHECK FOR COMMA JSB DCHAR JMP PUT5A DONE OR ERROR? ISZ DFLT SKIP ON DFLT STA WD2 JSB CHAR NOP CLB CPA B104 D? LDB BIT13 YES CPA B120 P? LDB BIT14 YES CPA B123 S? LDB BIT15 YES CPB D0 NONE (ERROR)? JMP PUT1A YES STB WD3 JSB CHAR JMP PUT5B JMP PUT1A * * * POT10 HT * POT10 LDA PPT13 HT STA WD1 STORE TRANSFER VECTOR CLA PT10A STA WD2 DEFAULT VALUE JSB PUT1H LOOK FOR COMMA JSB OCHAR RSS OK JMP PUT1A ERROR JSB PUT1E DONE OR ERROR? ISZ DFLT SKIP ON DEFAULT STA WD2 STORE VALUE JMP PUT1B EXIT * * * POT11 EE * POT11 LDA BILD (AI ENTERS HERE) CPA BPTO JMP OPD1 NOTHING TO ERASE ADA MM1 LDA A,I STA LOCAL PREVIOUS TRANSFER VECTOR ALF,ALF AND B377 WORD COUNT CMA,INA ADA BILD STA BILD BILD = BILD - WORD COUNT LDA LOCAL AND B377 CPA B15 =LB RSS CPA B102 =SB JMP PT11A IF LB OR SB GO TO PT11A CPA B11 =GO RSS CPA B103 =CA RSS SKIP IF GO OR CA JMP OPD1 OTHERWISE GO TO GET NEXT LI`NE LDA BILD,I AND B1777 GET ADDRESS ADA BPTO BPTO = STARTING ADDRESS OF OPDSN BUFFER. * IT IS ALSO THE BEGINNING OF A * NEW PAGE IN MEMORY STA LOCAL OF REFERENCED LABEL LDA LOCAL,I IS THIS LABEL SZA DEFINED? JMP OPD1 YES,EXIT LDA BILD,I SEARCH FOR OTHER REFERENCES STA TEMP1 MASK USED TO SEARCH FOR OTHER LDA BILD REFERENCES STA TEMP2 POINTER PT11C CPA BPTO JMP PT11B NOT FOUND LDA TEMP2 ADA MM1 GET TRANSFER VECTOR LDA A,I ALF,ALF AND B377 GET WORD COUNT CMA,INA ADA TEMP2 ADDRESS = ADDRESS - WORD COUNT STA TEMP2 LDB TEMP2,I CPB TEMP1 JMP OPD1 ANOTHER REFERENCE WAS FOUND JMP PT11C PT11A LDA LBLP1 SEARCH TABLE FOR LOCATION OF INA THIS LABEL PT11E STA LBLP2 LDA LBLP2,I CPA BILD JMP PT11D FOUND IT LDA LBLP2 ADA MM2 JMP PT11E PT11D STA TEMP2 WORK AREA POINTER LDA LBLP2 STA LOCAL ADDRESS OF LABEL AND B3777 IOR JMPI =126000B STA TEMP1 MASK USED TO SEARCH FOR OTHER CLA REFERENCES STA LOCAL,I ZERO OUT LABEL LDA TEMP2 JMP PT11C PT11B CLA NO REFERENCE FOUND LDB LOCAL ADB MM1 STA B,I LABEL = 0 INA STA LOCAL,I ADDRESS # 0 ,SO IT WILL BE JMP OPD1 DEFINED * * * POT12 EP * POT12 CLA STA VALID JMP OPDSN * * * POT14 LP * POT14 LDA PPT14 TRANSFER VECTOR JMP PUT7G * * POT15 RT * POT15 LDA PPT15 STA WD1 STORE TRANSFER VECTOR JSB CHAR JMP PUT1A ERROR JSB PUT3K GET LABEL JSB PUT3D SEARCH TABLE JMP PUT7A DID NOT FIND IT-ERROR v ISZ LBLP2 FOUND IT LDA LBLP2 AND B3777 IOR JMPI =126000B STA WD4 JSB CHAR JMP PUT1A ERROR JSB PUT1G JSB DCHAR GET NUMBER OF TIMES TO REPEAT RSS OK-SKIP JMP PUT1A ERROR JSB PUT1E DONE OR ERROR? JSB PT5CI,I CLA STA WD3 LDA D5 JMP PUT1F * * * POT16 SC * POT16 LDA PPT10 SC STA WD1 CLA STA WD2 DEFAULT SHTAS STA WD3 DEFAULT SHTS2 LDA MM1 STA WD4 DEFAULT MASK1 LDA P7737 =177737 STA WD5 DEFAULT MASK2 JSB CHAR GET NEXT CHARACTER JMP PT16A DONE JSB PUT1G CHECK FOR COMMA JSB PT16B PROCESS FIELD LDA DFLT CPA MM1 DEFAULT? JMP PT16G YES LDA VAL1 NO STA WD2 LDA VAL2 STA WD4 JSB CHAR GET NEXT CHARACTER JMP PT16A DONE JSB PUT1G CHECK FOR COMMA PT16G JSB PT16B PROCESS FIELD LDA DFLT CPA MM1 DEFAULT? JMP PUT1A YES - ERROR LDA VAL1 NO STA WD3 LDA VAL2 STA WD5 JSB CHAR RSS SKIP IF DONE JMP PUT1A ERROR PT16A LDA D6 JMP PUT1F * PT16B NOP CLA STA VAL1 STA VAL2 LDA MM1 STA DFLT LDA MM16 STA VALUE COUNTER PT16C JSB CHAR JMP PT16H DONE? CPA B54 COMMA? JMP PT16D YES - DONE? CPA ASC0X X? JMP PT16E YES CPA B60 0? RSS YES CPA B61 1? RSS YES JMP PUT1A ERROR LDB D1 ADA MM48 -60 OCTAL PT16F STA DFLT #-1 IOR VAL1 STA VAL1 LDA B IOR VAL2 STA VAL2 ISZ VALUE DONE? RSS NO JMP PT16B,I YES RAL STA VAL2 oLDA VAL1 RAL STA VAL1 JMP PT16C PT16E CLB CLA JMP PT16F PT16D EQU * LDA VALUE CPA MM16 STARTED YET? JMP PT16B,I NO - OK JMP PUT1A YES ERROR PT16H LDA VALUE CPA MM16 STARTED YET? JMP PT16A NO - OK JMP PUT1A YES ERROR * * POT17 SM * POT17 LDA PPT17 STA WD1 LDA BIT1 DEFAULT CASE MASK JMP PT10A * * POT18 RO * POT18 LDA PPT18 STA WD1 CLA STA WD3 DEFAULT OFFSET JSB PUT1J LOOK FOR COMMA JSB DCHAR PROCESS FIRST FIELD,WORD COUNT JMP PT18A DONE OR ERROR? JSB PT18B STORE INTO WD2? JSB CHAR GET NEXT CHARACTER JMP PUT5B DONE CLB CPA B53 PLUS? JMP PT18C YES CPA B55 MINUS? JMP PT18D YES JSB PUT1G CHECK FOR COMMA PT18E JSB CHAR GET NEXT CHARACTER JMP PUT5B DONE CPA B101 A? JMP PT18F YES CPA B104 D? RSS YES JMP PUT1A NO - ERROR LDA BIT8 PT18G ADA WD3 STA WD3 JSB CHAR ANYMORE? JMP PUT5B NO - OK JMP PUT1A YES - ERROR PT18F LDA BIT9 JMP PT18G PT18A JSB PUT1E DONE OR ERROR? JSB PT18B DONE JMP PUT5B EXIT PT18B NOP ISZ DFLT DEFAULT? STA WD2 NO JSB PUT6D CHECK LIMIT JMP PT18B,I PT18D LDB BIT7 PT18C STB WD3 SET SIGN BIT JSB DCHAR GET OFFSET JMP PT18H DONE OR ERROR? JSB PT18I JSB CHAR GET NEXT CHARACTER JMP PUT5B DONE JMP PT18E PT18H JSB PUT1E ERROR? JSB PT18I NO JMP PUT5B PT18I NOP LDB DFLT CPB MM1 JMP PUT1A OFFSET MISSING ADA WD3 STA WD3 JMP PT18I,I * * POT19 EX * POT19 LIA 1 GET S XOR BIT3 TURN BIT 3 OFF OTA 1 RESTORE NEW S(IF POSSIBLE) JMP DONE * * POT20 RI * POT20 JMP PUT7H * * POT21 AI * POT21 JMP POT11 PUT21 LDA PPT22 CW,DR,DW STA WD1 STORE XFER VECTOR JSB CHAR GET FIRST CHAR. JMP PUT1A ERROR JSB PUT1G CHECK FOR COMMA JSB DCHAR GET INITIAL ADDRESS JMP PT21B SEE IF ERROR OR DONE PT21A ISZ DFLT SKIP IF NO ADDRESS ENTERED RSS JMP PUT1A ERROR (ADDR. MUST BE ENTERED) STA WD2 LDA OPCNT CPA B75 =DW RSS CPA B76 =DR JMP PT21F INSTRUCTION ="DR" OR "DW" PT21C JSB OCHAR RSS JMP PUT1A ERROR JSB PUT1E ERROR OR DONE ISZ DFLT RSS JMP PUT1A MAY NOT USE DEFAULT (ERROR) STA WD3 STORE OCTAL WORD TO REPLACE * VALUE IN BUFFER LDA WD2 SEE IF WORD IS IN BUFFER ADA NBSZE SUBTRACT MAX. BUFFER SIZE PT21J SSA,RSS JMP PUT1A ERROR WORD TO BE MODIFIED IS * OUTSIDE OF BUFFER JMP PUT5B PT21F JSB DCHAR GET ENDING ADDRESS RSS JMP PUT1A JSB PUT1E SEE IF EROR OR DONE ISZ DFLT SEE IF DEFAULT RSS LDA WD2 IF DEFAULT START ADDR. = END ADDR. STA WD3 STORE ENDING ADDRESS CMA ADA WD2 JMP PT21J PT21B LDB OPCNT SEE IF CW INSTRUCTION CPB B75 =DW RSS CPB B76 =DR RSS JMP PUT1A ERROR JSB PUT1E SEE IF ERROR OR DONE STA WD2 THERE WAS NO ERROR STA WD3 MAKE STARTING AND STOPPING * ADDDRESSES EQUAL JMP PUT5B SKP TVP1G NOP xCPA PPT10 IS NEXT TRANSFER VECTOR SC JMP TVP1G,I YES CPA PPT20 IS NEXT XFER VECTOR CS,CP,CD JMP TVP1G,I RETURN IF IT IS CPA PPT5 IS NEXT TRANSFER VECTOR CB? JMP TVP1G,I YES LDB B7400 =17400 LDA COPRN CPA B44 SEEK? RSS YES CPA B76 RC? STB SHTAS JSB WCHK CLA STA SHTAS JMP TVP1G,I * TVP2C NOP LDA TNUM JSB FCYKI,I CYCLIC CHECK TRACK JSB HELPI,I TROUBLE? ISZ TVP2C NO LDA OPD7A STA OPNDI,I JMP OPD7I,I OPD7B EQU * CLA,INA ADA CYL LDB TEMPS JMP TVP2C,I * TVP2B JSB SLFHI,I FH - SELECT FIRST HEAD TVP2S JSB TVP2R FORMAT AND VERIFY ISZ HEAD TRY NEXT HEAD JSB SLNHI,I ANYMORE? JMP TVP2S YES JMP TP2I,I NO - DONE TVP2D JSB SLFHI,I VH - SELECT FIRST HEAD TVP2T JSB TVP2U VERIFY ISZ HEAD TRY NEXT HEAD JSB SLNHI,I ANYMORE? JMP TVP2T YES JMP TP2I,I NO - DONE * TVP2R NOP JSB TRCHI,I PLACE NEG. COUNT OF NO. * OF DEFECTIVE * DEFECTIVE TRACKS ALLOWED /SURFACE * IN TLIMT CLA TVP2I EQU * JSB T2STI,I SET UP COUNTERS ETC. JSB FSEEK SEEK TO EACH CYLINDER JSB OPNDI,I LDA WDPT 48 SECTORS STA WCNT CLA STA WRSP JSB WADRI,I FORMAT LDA FOBIT STA SHTS2 LDA MM1 STA MASK2 JSB WCHK CHECK JSB NORMI,I JSB OPNDI,I TV2I2 JSB TVP2C VERIFY JMP TV2I1 TROUBLE TV2I3 CPA CYPP DONE? JMP TVP2R,I YES - RETURN JMP TVP2I NO - CONTINUE TV2I1 EQU * JSB TV2M6 ISZ PLIMT TRY AGAIN? JMP TV2I2 YES JSB SWR SLA BIT 0 SET?  JSB FTRDI,I YES - FLAG IT DEFECTIVE CLA,INA ADA CYL ISZ TLIMT EXCESSIVE BAD TRACKS? JMP TV2I3 NO JMP TV2M4 YES * TVP2U NOP JSB TRCHI,I PLACE NEG. COUNT OF NO. * OF DEFECTIVE * TRACKS ALLOWED/SURFACEIN TLIMT LDA L7777 =137777 (ALL BUT P) STA MASK1 LDA P7437 =177437 (ALL BUT ATTN,PROT,FRMT) STA MASK2 CLA TVP2M EQU * JSB T2STI,I SET UP COUNTERS ETC. TV2M2 JSB TVP2C VERIFY JMP TV2M1 TROUBLE CPB B0400 DEFECTIVE? JMP TV2M5 YES TV2M3 CPA CYPP DONE? RSS YES JMP TVP2M NO - CONTINUE JSB NORMI,I SET UP NORMAL STATUS JMP TVP2U,I TV2M1 EQU * JSB TV2M6 ISZ PLIMT TRY AGAIN? JMP TV2M2 YES CLA,INA ADA CYL TV2M5 ISZ TLIMT EXCESSIVE BAD TRACKS? JMP TV2M3 NO TV2M4 EQU * YES E125 JSB ERROR EXCESSIVE BAD TRACKS JMP OPDSN * TV2M6 NOP LDA SCPT ADA MM1 STA XXX1 LDA RHDS AND B377 A=SECTOR CPA XXX1 STARTED? JMP TV2M7 MAYBE NOT TV2M8 STA SECTR CMA,INA ADA SCPT STA TNUM JMP TV2M6,I TV2M7 CLB CPB SECTR STARTED YET? JMP TV2M6,I ASSUME NO JMP TV2M8 YES L7777 OCT 137777 * TVP2W LDB B123 DA STB COPRN JSB RQSAI,I GET DISC ADDRESS LDA RCYL PLACE LDB BUFAE ADDRESS STA B,I IN LDA RHDS READ INB BUFFER STA B,I JMP TP2I,I TVP2X LDB B122 NO STB COPRN JSB POLL ISSUE NOP COMMAND JMP TP2I,I TVP2Y JSB RQSAD,I RA STA BUFAE,I JMP TP2I,I RQSAD DEF RQSA M0000 OCT 140000 * HED S6 - SECTION 6 (OPDSN) ORG 12000B * TP1MI DEF TVP1M  * * * TVP4 RD,RF,RW,VF,WD,WF * TVP4 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP4,I WD2 STA WCNT ISZ TVP4 LDA TVP4,I WD3 ISZ TVP4 JMP TP1MI,I TVP4G JSB READ TVP4C LDA TVP4,I JSB TP1GI,I CHECK STATUS JMP TVP4,I EXIT TVP4A JSB WRITE JMP TVP4C TVP4B LDA WCNT JSB CYCKI,I ISSUE VERIFY COMMAND JMP TVP4C TVP4D JSB RDFUL JMP TVP4C TVP4E EQU * JSB WFULL WRITE FULL SECTOR JMP TVP4C TVP4F JSB RDWVI,I JMP TVP4C RDWVI DEF RDWOV TVP4H LDA SECTR GET CURRENT SECTR ADA WCNT ADD SECTR COUNT LDB SCPT SUBTRACT NO. OF SECTORS/TRACK CMB,INB TVP4I ADA B SSA,RSS UNTIL SECTOR NO. IS NEG. JMP TVP4I CMB,INB ADD ON NO. OF SECTORS/TRACK ADA B TO OBTAIN SUM MODULO SECTORS/TRACK STA SECTR JMP TVP4,I RETURN TVP4J LDA HEAD GET CURRENT HEAD NO. ADA WCNT ADD AMOUNT OF INCREMENT TO HEAD LDB MHEAD PLACE NEG. OF NO. OF HEADS IN B REG. TVP4K ADA B OBTAIN NEXT HEAD SSA,RSS MODULO # OF HEADS JMP TVP4K FOR CURRENT UNIT CMB,INB ADA B STA HEAD STORE NEW HEAD NO. JMP TVP4,I TVP4L LDA CYL GET CURRENT CYL NO. ADA WCNT ADD AMOUNT OF INCREMENT TO CYL. LDB CYPP LOAD NO. OF CYL PER PACK CMB,INB TVP4M ADA B SSA,RSS IF RESULT IS STILL POSITIVE LOOP * TO SUBTRACT AGAIN JMP TVP4M CMB,INB GET NO. OF CYLS. PER PACK ADA B STA CYL OBTAIN NEW CYL MODULO NO. * OF CYL. ON PACK JMP TVP4,I <:66<* * * TVP6 DB * TVP6 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP6,I WD2 LDB A RBL AND D7777 GET WORD COUNT CMA,INA NEGATE WORD COUNT STA WCNT SAVE WORD COUNT LDA BPTR GET BASE ADDRESS OF WRITE BUFFER STA LOCAL SSB JMP TVP6A SLB JMP TVP6V GO INCREMENT PATTERN TVP6B JSB RAND FILL BUFFER WITH RANDOM DATA JSB TVP6E JMP TVP6B TVP6A SLB =0 => CMA JMP TVP6Y GO FILL BUFFER WITH GIVEN PATTERN LDA A3000 CMA INSTRUCTION STA TVP6H JMP TVP6I TVP6V LDA TVP6J STA TVP6H TVP6I CLB TVP6Y ISZ TVP6 LDA TVP6,I TVP6C JSB TVP6E STORE IN BUFFER,CHECK FOR END SZB,RSS TVP6H NOP ***** CMA OR INA ***** JMP TVP6C TVP6E NOP STA LOCAL,I STORE A IN BUFFER ISZ LOCAL ISZ WCNT DONE? JMP TVP6E,I NO TVP6G ISZ TVP6 YES ISZ TVP6 JMP TVP6,I EXIT TVP6F SSB ISZ TVP6 JMP TVP6G TVP6J OCT 002004 * * * TVP8 SD * TVP8 NOP JSB OPNDI,I CHECK FOR ABORT LDB TVP8,I GET UNIT NO. OR STEP NO. * OR WORD COUNT ISZ TVP8 LDA TVP8,I GET INSTR. LENGTH AND OPCODE ISZ TVP8 AND B377 RETAIN OPCODE CPA B71 SEE IF IT IS LS JMP TP8A JUMP IF IT IS CPA B72 JMP TP8B LDA B PLACE UNIT NO. IN A REG. JSB UNXFI,I UPDATE DEVICE DEPENDENT TABLES JMP TVP8,I TP8A STB DSTEP JMP PT19I,I PT19I DEF POT19 TP8B STB XXX1 STORE NEG. WORD COUNT LDA BPTR GET WRITE BUFFER BASE ADDRESS STA XXX2 LDB BPTS GET READ BUFFER BASE ADDRESS TP8C LDA B,I GET VALUE FROM READ BUFFER STA XXX2,I PLACE IN WRITE BUFFER ISZ XXX2 INCREMENT WRITE BUFFER POINTER INB INCREMENT READ BUFFER POINTER ISZ XXX1 SEE IF HAVE XFERRED ALL THE VALUES JMP TP8C JMP TVP8,I * * * TVP9 ID * TVP9 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP9,I WD2 SSA IF DEFAULT THEN LDA WDPT LOAD WDPT STA WCNT ISZ TVP9 LDA TVP9,I STA WRSP STA SHTAS JSB WADRI,I WRITE ADDRESS LDA FOBIT STA SHTS2 LDA MM1 STA MASK2 TVP9A ISZ TVP9 ISZ TVP9 LDA TVP9,I JSB TP1GI,I CHECK STATUS JSB NORMI,I JMP TVP9,I EXIT * * * TVP10 SC * TVP10 NOP JSB OPNDI,I CHECK FOR ABORT JSB TP10A GET FIRST TWO VALUES STA SHTAS STB SHTS2 JSB TP10A GET NEXT TWO VALUES STA MASK1 STB MASK2 ISZ TVP10 POSITION POINTER JSB WCHK CHECK STATUS JSB NORMI,I SET UP NORMAL STATUS JMP TVP10,I TP10A NOP LDA TVP10,I ISZ TVP10 LDB TVP10,I ISZ TVP10 JMP TP10A,I * * * TVP13 HT * TVP13 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP13,I HALT CODE HLT 2 LDA XMCPU SZA,RSS SKIP IF IN MCPU MODE JSB STMSK ISZ TVP13 ISZ TVP13 JMP TVP13,I * * * TVP14 LP * TVP14 JSB OPNDI,I CHECK FOR ABORT JMP BPTO,I * * TVP15 RT * TVP15 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP15,I NUMBER OF TIMES TO REPEAT ISZ TVP15 CPA TVP15,I DONE? JMP TV15A YES ISZ TVP15,I ISZ TVP15 JMP TVP15,I JUMP TO LABEL TV15A CLA STA TVP15,I RESET COUNT ISZ TVP15 ISZ TVP15 ISZ TVP15 JMP TVP15,I * * TVP17 SM * TVP17 NOP JSB OPNDI,I LDA TVP17,I MASK ISZ TVP17 STA FLMSK JSB OMASK G ISZ TVP17 JMP TVP17,I * * TVP18 RO * TVP18 NOP JSB OPNDI,I LDA TVP18,I STA WCNT WORD COUNT ISZ TVP18 LDA TVP18,I A = OFFSET JSB RWSTI,I READ WITH OFFSET LDA TVP18 STA TVP9 JMP TVP9A TP20A INB PROTECTED TP20B INB DEFECTIVE TP20C LDA B SPARE SZB,RSS ADB D4 RBR,RBR RBR STB MASK1 SET MASK FOR STAT-1 EQUAL TO ALL * DONT CARE EXCEPT S,P,OR D BIT CLB STB MASK2 ALL DONT CARES FOR STAT-2 STB SHTS2 EXPECTED STAT-2 = ALL ZEROES STB SHTAS EXPECTED STAT-1 = ALL ZEROES ADA SPDMP GET S,P,D MESSAGE POINTER LDA A,I LDB MM5 SET COUNTER TO MOVE 10 CHARS. INTO MESSAGE STB XXX2 LDB P141D STB XXX1 PLACE DESTINATION ADDRESS INTO XXX1 TP20D LDB A,I GET CHAR. PAIR TO BE MOVED STB XXX1,I STORE IN MESSAGE ISZ XXX1 UPDATE DESTINATION POINTER INA UPDATE SOURCE POINTER ISZ XXX2 JMP TP20D CLA,INA STA SPDVR SET S,P,D MESSAGE PROCESSING INDICATOR JSB WCHK SEE IF EVERYTHING IS OK CLA STA SPDVR JSB NORMI,I SET UP NORMAL STATUS JMP TV2I,I TV2I DEF TVP2,I ICHS NOP LDA CYL LDB P141A JSB DCIN2 INSERT CYL. NO. INTO MESSAGE LDA HEAD LDB P141C JSB DCIN1 PLACE HEAD NO. INTO MESSAGE LDA UNIT LDB P141E JSB DCIN1 PLACE UNIT NO. INTO MESSAGE JMP ICHS,I P141A DEF M141A P141C DEF M141C P141D DEF M141D P141E DEF M141E CPNT BSS 1 CSAVE BSS 1 EUNCT BSS 1 KUNIT BSS 1 CONTAINS NO. OF THE CONNECTED UNIT * IF ONLY ONE UNIT IS * CONNECTED NUMUN BSS 1 NO. OF UNITS CONNECTED P024A DEF JP24A P024B DEF JP24B P037A DEF JP37A P037B DEF JP37B P072A DEF JP72A P062A DEF JP62A P062B DEF JP62B P062D DEF JP62D P062C DEF JP62C P133A DEF J133A UENTI DEF UNENT PDSNI DEF PNDSN B132 OCT 132 B133 OCT 133 EUNTC BSS 1 FIRSP OCT 0 ABLNK ASC 1,A SPDMP DEF *+1 DEF SPRMS DEF DEFMS DEF PROMS SPRMS ASC 5, SPARE DEFMS ASC 5,DEFECTIVE PROMS ASC 5,PROTECTED TVP22 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP22,I GET INITIAL LOCATION STA XXX1 ISZ TVP22 LDA TVP22,I GET ENDING LOCATION STA XXX2 ISZ TVP22 LDA TVP22,I ISZ TVP22 GET ADDRESS OF NEXT XFER VECTOR LDB BPTR GET WRITE BUFFER ADDRESS AND B177 CPA B74 JMP TP22D CPA B75 =DW JMP TP22K CPA B76 =DR RSS JMP TP22E =TS,CP,TC LDB BPTS REPLACE WITH READ BUFFER ADDRESS IF DR TP22K ADB XXX1 STB XXX3 GET ABS. MEMORY LOC. TO START FROM TP22A LDA XXX1 LDB H147 JSB DCIN2 PLACE DECIMAL ADDRESS OF FIRST * WORD IN BUFFER LDA MM8 STA XXX4 INITIALIZE COUNTER FOR THIS LINE TP22B LDA XXX3,I GET VALUE TO INSERT INTO OUTPUT BUFFER LDB TH147 ADB XXX4 LDB B,I GET ADDR. AT WHICH TO INSERT NO. JSB CNVRT LDA XXX1 CPA XXX2 SEE IF EVERYTHING OUTPUT JMP TP22C OUTPUT THIS LAST LINE ISZ XXX1 INCREMENT INITIAL OFFSET ISZ XXX3 INCREMENT ABS. ADDRESS ISZ XXX4 INCREMENT LINE POINTER JMP TP22B GO INSERT NEXT VALUE LDA B147 JSB PRINT OUTPUT LINE OF VALUES JMP TP22A GO PREPARE ANOTHER WHOLE LINE TP22C LDB TH147 ADB XXX4 INB LDB B,I LDA B43 PLACE # IN MESSAGE STA B,I LDA B147 =y JSB PRINT OUTPUT LAST LINE JMP TVP22,I TP22D ADB XXX1 LDA XXX2 STA B,I JMP TVP22,I TP22E JSB SUR0I,I JMP TVP22,I SUR0I DEF SUR0 H147 DEF M147 DEF H147A DEF H147B DEF H147C DEF H147D DEF H147E DEF H147F DEF H147G DEF H147H DEF H147I TH147 DEF *-1 REINT NOP CCA ADA BILD SET POINTER TO ADDRESS OF LAST OPCODE ENTRY STA LOCNT JMP REIN2 REIN1 LDA LOCNT,I GET LAST OPCODE AND INSTRUCTION LENGTH ALF,ALF AND B377 GET INSTRUCTION LENGTH CMA,INA SUBTRACT FROM CURRENT VALUE TO GET ADA LOCNT PREV. OPCODE INSTRUCTION ADDRESS STA LOCNT REIN2 CMA,INA SEE IF WE HAVE LOOKED AT ALL ADA BPTO THE OPDSN INSTRUCTIONS SSA,RSS JMP REINT,I IF YES RETURN LDA LOCNT,I GET OPCODE AND B377 CPA B14 SEE IF IT IS IS INSTRUCTION RSS CPA D5 SEE IF IT IS A DS INSTRUCTION JMP REIN3 GO TO REINITIALIZE VALUES CPA B106 =PR RSS CPA B30 IS IT AN RT RSS IF IT IS AN RT INSTRUCTION , SKIP JMP REIN1 GO GET NEXT INSTRUCTION CLB LDA LOCNT ADA MM2 STB A,I RESET RETURN COUNTER TO ZERO JMP REIN1 GO LOOK AT NEXT INSTRUCTION REIN3 CCA ADA LOCNT LDB A,I GET INITIAL HEAD/SECTOR VALUE ADA MM3 STB A,I RESTORE HEAD/SECTOR ENTRY ADA D2 LDB A,I GET INITIAL CYL. VALUE ADA MM3 STB A,I RESTORE CYL. VALUE JMP REIN1 LOCNT BSS 1 PUT5C NOP CMA,INA SSA,RSS JMP PT1AI,I ERROR FOR ENTRY WAS NOT .GT. 0 CMA,INA STA WD2 JMP PUT5C,I ILFV ADA HEAD STA EM1A STORE FX OR VX IN ERROR MESSAGE LDA MHEAD CMA ADA BLNK0 S STA EM1B STORE MAX HEAD NO. IN ERROR MESSAGE LDA EM1I STA PTMP JMP EERR CHCHS NOP LDB DISCK SZB JMP CHCHS,I LDA XXX1 CPA B54 IF CR COMMAND DONT CHECK CYL. JMP TVP1P LDA CYL SEE IF CYL NO. IS VALID LDB LASTC JSB CHK TVP1P LDA HEAD SEE IF HEAD NO. IS VALID LDB MHEAD CMB JSB CHK LDA SECTR SEE IF SECTOR NO. IS VALID CCB ADB SCPT JSB CHK LDA XXX1 RESTORE OPCODE JMP CHCHS,I CHK NOP SSA SEE IF NO. IS POSITIVE JMP PEM2 PRINT ERROR MESSAGE IF NOT CMA,INA ADA B SSA SEE IF .LE. MAX. PERMISSABLE VALUE JMP PEM2 PRINT ERROR MESSAGE IF NOT JMP CHK,I PEM2 LDA CODEE GET BASE ADDRESS OF OPDSN ASCII INSTR. CODES ADA XXX1 ADD ON OPCODE NO. LDA A,I GET ASCII INSTRUCTION STA EM2A LDA EM2BI STA PTMPA LDA EM2CI STA PTMPB LDA EM2DI STA PTMPC JSB PCHS PRINT C/H/S USED IN INSTRUCTION LDA LASTC LDB XXX1 CPB B54 LDA D1024 STA CYL LDA MHEAD PLACE MAX. VALUES FOR CYL., HEAD, SECTOR * INTO THE LOCS. CYL,HEAD,SECTR * FOR OUTPUTTING IN ERROR MESSAGE CMA STA HEAD CCA ADA SCPT STA SECTR LDA EM2EI STA PTMPA LDA EM2FI STA PTMPB LDA EM2GI STA PTMPC JSB PCHS LDA EM2I STA PTMP EERR LDA STYPE GET TYPE OF CURRENT ACTIVE UNIT ADA TYPTB ADD BASE ADDRESS OF TYPE INDEX TABLE LDA A,I GET INDEX TO USE IN TABLE LOOK-UP ADA ATYPE GET BASE ADDRESS OF ASCII TABLE LDA A,I GET ASCII CODE FOR DEVICE TYPE STA EM0A STORE IN MESSAGE LDB ABLNK G1ET ASC 1,A SSA IF B TYPE DRIVE ADB BIT8 CHANGE TO ASC 1,B STB EM0A+1 STORE IN MESSAGE LDA UNIT GET CURRENT UNIT NO. ADA BLNK0 CONVERT INTO AN ASCII BLANK ANDUNIT NO. STA EM0B STORE IN MESSAGE CLA STA ACTAD ACTAD = 0 IMPLIES THAT PRINT * ROUTINE IS TO TAKE * CONTENTS OF A REG. AS ACTUAL ADDRESS * OF MESSAGE LDA EM0I JSB PRINT LDA PTMP PRINT ILLEGAL INSTRUCTION JSB PRINT ISZ ACTAD JMP H55I,I PCHS NOP LDA CYL YES,CONVERT CYL. NUM. LDB PTMPA TO ASCII JSB DCIN2 AND STORE IN MESSAGE LDA HEAD CONVERT HEAD NO. TO ASCII LDB PTMPC JSB DCIN1 AND STORE IN MESSAGE LDA PTMPC,I ALF,ALF LDB A AND B377 IOR C7400 /X STA PTMPB,I LDA B AND P7400 IOR B57 X/ LDB PTMPB INB STA B,I LDA SECTR CONVERT SECTOR NUMBER TO ASCII LDB PTMPC JSB DCIN1 AND STORE IN MESSAGE JMP PCHS,I TVP1S ISZ TVP1I,I ISZ TVP1I,I ISZ TVP1I,I JSB CHCHS LDA CYL LDB XXX1 CPB D5 JMP TP1BI,I JMP TP1CI,I TP1BI DEF TVP1B TP1CI DEF TVP1C EM0I DEF EM0 TVP1I DEF TVP1 EM1I DEF EM1 EM2BI DEF EM2B EM2CI DEF EM2C EM2DI DEF EM2D EM2EI DEF EM2E EM2FI DEF EM2F EM2GI DEF EM2G EM2I DEF EM2 PTMP BSS 1 PT1AI DEF PUT1A H55I DEF H55 PTMPA BSS 1 PTMPB BSS 1 PTMPC BSS 1 EM0 ASC 15,EM0:ILLEGAL INSTRUCTION FOR 79 EM0A ASC 5,XXX UNIT EM0B ASC 2,XX# EM1 ASC 2,EM1: EM1A ASC 10,XX ONLY HEAD 0 - EM1B ASC 7,XX ARE VALID# EM2 ASC 2,EM2: EM2A ASC 2,XX EM2B ASC 2,XXXX EM2C ASC 2,/XX/ EM2D ASC 14,XX MAX LEGAL VALUES ARE EM2E ASC 2,XXXX EM2F ASC 2,/XX/ EM2G ASC 2,XX# HED HED0,HDINS HED0 JSB UHERI,I CLA STA UNIT START WITH UNIT 0 STA NUMUN HED1 LDB UNITC GET NO. OF UNITS IN UNIT TABLE CMB STB XXX1 STORE -(NO. OF UNITS IN UNIT TABLE+1) LDB UNITS STB XXX2 STORE BASE ADDRESS OF UNIT TABLE HED1A ISZ XXX1 SKIP IF HAVE LOOKED AT ALL ENTRIES * IN THE UNIT TABLE RSS JMP HED2 GO CHECK OUT NEXT UNIT LDB XXX2,I GET UNIT TABLE ENTRY CPA B SEE IF UNIT SELECTED WAS SAME AS * UNIT IN UNIT TABLE JMP HED1B GO SEE IF UNIT WAS CONNECTED ISZ XXX2 PREPARE TO LOOK AT NEXT UNIT TABLE ENTRY JMP HED1A HED1B ADA UTYPE LDA A,I GET TYPE FOR UNIT OUT OF TABLE CPA P7777 IF TYPE = ALL ONES THIS IMPLIES NOT CONNECTED JMP HED2 JUMP IF NOT CONNECTED ADA TYPTB LDA A,I STA PTYPE STORE PRESENT TYPE JSB HDPRT PRINT OUT UNIT,DRIVE TYPE AND HEADS CONNECTED ISZ NUMUN UPDATE NO. OF UNITS CONNECTED LDA UNIT PLACE UNIT IN KUNIT SO THAT IF ONLY STA KUNIT ONE UNIT IS CONNECTED, KUNIT WILL * CONTAIN IT HED2 ISZ UNIT PREPARE TO LOOK AT THE NEXT UNIT LDA UNIT CPA D8 HAVE WE LOOKED AT ALL THE UNITS JMP HED3 JUMP OUT OF LOOP IF LOOKED AT ALL UNITS JMP HED1 LOOP AGAIN TO LOOK AT NEXT UNIT HED3 JSB ASKI,I ASK IF WE WISH TO CHANGE HEAD TABLE JMP LOOPI,I EXIT IF DO NOT WANT TO CHANGE H132 CLA STA EUNTC CLEAR ENTERED UNIT COUNT FOR HEAD * TABLES TO CHANGE LDA NUMUN CPA D1 IF ONLY 1 UNITS HEAD TABLE TO CHANGE JMP HED8 THEN JUMP LDA B132 JSB PRINT PRINT MESSAGE ASKING FOR HEADS TO CHANGE JSB HIN # GET INPUT LINE HED4 JSB DCHAR GET UNIT NO. JMP HED5 ERROR OR DONE? JSB HDINS ENTERS UNIT INTO A TABLE OF UNITS WHOSE HEAD * TABLES ARE TO CHANGE. RETURNS * WITH EUNTC IN A REG. CPA D8 SEE IF 8 UNITS HAVE BEEN ENTERED YET JMP HED6 IF YES, THEN DO NOT LOOK ANY MORE JMP HED4 LOOP TO GET NEXT UNIT NO. HED5 LDB CCNT IF CCNT = 0 THEN ERROR DID NOT OCCUR SZB,RSS IF ZERO THEN INPUT WAS OK JSB HDINS ENTERS UNIT INTO A TABLE OF UNITS WHOSE HEAD * TABLES ARE TO CHANGE. LDA EUNTC GET COUNT FOR NO. OF UNITS TO CHANGE HEAD TABLES SZA,RSS ARE THERE ANY UNITS WHOSE HEAD TABLES MUST CHANGE JMP H132 MUST HAVE ATLEAST ONE ADA EUNBA STA EUNCT HED6 JSB SW2I,I CHECK TO SEE THAT BIT 2 IS SET LDA EUNTC SZA,RSS HAVE WE LOOKED AT ALL UNITS REQUESTED JMP LOOPI,I LEAVE LOOP IF WE HAVE LOOKED * AT ALL THE UNITS ADA MM1 DECREASE COUNT OF UNITS WHOSE HEAD TABLE NEEDS STA EUNTC TO CHANGE AND STORE RESULT CMA ADA EUNCT LDA A,I GET UNIT WHOSE HEADS ARE TO BE CHANGED HED9 STA UNIT ADA UTYPE ADD IN BASE ADDR. OF UNIT-TYPE TABLE LDB A,I GET DEVICE TYPE FOR GIVEN UNIT CPB P7777 IS THE UNIT CONNECTED? NO, IF TYPE=177777 JMP HED7 GO TO OUTPUT MESSAGE SAYING UNIT IS NOT CONNECTED ADB TYPTB ADD BASE ADDR. OF TYPE TABLE LDA B,I GET TABLE ENTRY ASSOC. WITH THIS TYPE STA PTYPE STORE ENTRY ASSOC. WITH THIS TYPE CLB STB FIRSP * STORE 0 IN FIRST INDICATING * THIS IS THE FIRST TIME THRU JSB HDSUB OUTPUT HEAD UNIT FOR THI[<:6S UNIT AND GET CHANGES JMP HED6 LOOP TO PROCESS NEXT UNIT HED8 LDA KUNIT JMP HED9 HED7 LDA UNIT PLACE UNIT NO. IN THE MESSAGE SAYING THAT IT * WAS NOT CONNECTED. ADA B2060 STA P133A,I H133 LDA B133 JSB PRINT PRINT MESSAGE INDICATING THAT UNIT NOT CONNECTED JMP HED6 GO GET NEXT UNIT HDINS NOP SUBROUTINE TO PLACE UNITS WHOSE HEAD TABLES * ARE TO BE CHANGED INTO A TABLE * A REG = UNIT NO. ON ENTRY SSA SKIP IF THE UNIT NO. IS NOT NEG. JMP HDIN1 DONT ENTER INTO TABLE, UNIT NO. IS ILLEGAL ADA MM8 IS NO. LESS THAN OR EQUAL TO 7 SSA,RSS SKIP IF UNIT NO. IS LEGAL JMP HDIN1 DONT ENTER INTO TABLE, UNIT NO. IS ILLEGAL ADA D8 RESTORE UNIT NO. TO ORIGINAL VALUE LDB EUNBA BASE ADRR. OF THIS UNIT TABLE ADB EUNTC ADD IN NO. OF ENTRIES IN THE TABLE STA B,I PLACE UNIT NO. IN THE TABLE ISZ EUNTC INCREMENT COUNT FOR ENTRIES IN TABLE HDIN1 LDA EUNTC JMP HDINS,I RETURN TO CALLING ROUTINE WITH THE NO. OF dj< HED HDPRT,HDSUB,HSTOR * ENTRIES IN TABLE IN A REG. HDPRT NOP SUBROUTINE TO PRINT OUT UNIT NO. AND HEADS * ASSOC. WITH THAT UNIT LDA UNIT JSB UNXFI,I ADA B2060 PLACE UNIT NO. IN THE MESSAGE STA P062D,I LDA PTYPE GET TYPE TO PLACE IN THE MESSAGE ADA ATYPE ADD BASE ADDR. OF ASCII TYPE TABLE LDA A,I GET ASCII FOR DEVICE TYPE STA P062C,I PLACE IN MESSAGE STRING LDB ABLNK GET ASC 1,A SSA IF B TYPE DRIVE CHANGE ADB BIT8 TO ASC 1,B LDA P062C INA STB A,I STORE IN MESSAGE LDA ASCZZ 0,0 STA P062A,I LDA B2060 BLANK,0 STA GLOB1 LDA P062B STA GLOB2 LDA MM10 HEADS/CYLINDER STA GLOB3 LDB HDONV HD1 LDA BB BLANK,BLANK SLB,RSS SKIP IF 1 JMP HD2 ISZ P062A,I LDA GLOB1 BLANK,N HD2 STA GLOB2,I ISZ GLOB2 ISZ GLOB1 RBR ISZ GLOB3 JMP HD1 LDA PDSNI,I STA GLOB2,I INSERT # INTO MESSAGE STREAM LDA B62 HEAD TABLE ... JSB PRINT JMP HDPRT,I HDSUB NOP LDA NUMUN IF ONLY ONE UNIT IS CONNECTED, THEN WE * JUST GAVE THE HEADS * THAT ARE CONNECTED FOR * THAT DRIVE SO DONT BOTHER * GIVING THEM AGAIN CPA D1 RSS HD5 JSB HDPRT LDA FIRSP SEE IF FIRST TIME THROUGH SZA,RSS IF = 0 THEN IS THE FIRST TIME THROUGH JMP H106 EQUALS 0, SO DO NOT ASK IF WISH TO CHANGE. * GO DIRECTLY TO ASK FOR HEADS JSB ASKI,I ASK IF WE WISH TO CHANGE JMP HDSUB,I RETURN IF NO OR EX >IT WAS ENTERED H106 LDA B106 YES,ENTER HEADS SEPARATED BY * COMMAS JSB PRINT JSB HIN CLA,INA STA FIRSP DISABLE INDICATOR CLA STA GLOB1 HD3 JSB DCHAR GET HEAD JMP HD4 ERROR OR DONE? JSB HSTOR JMP HD3 HD4 LDB CCNT SZB,RSS SKIP IF ERROR JSB HSTOR LDA PTYPE GET OFFSET ASSOC. WITH THIS DEVICE TYPE ADA THEAD ADD BASE ADDR. OF HEAD TABLE LDA A,I GET HEAD TABLE FOR THIS UNIT AND GLOB1 GET OUT VALID HEADS SZA,RSS JMP H106 MUST HAVE AT LEAST ONE LDB UNIT GET CURRENT UNIT NO. ADB HDON ADD BASE ADDR. OF HEAD TABLE STA B,I STORE NEW HEAD SEWLECTIONS IN HEAD TABLE JMP HD5 HSTOR NOP LDB D1 HSTR2 SZA,RSS JMP HSTR1 ADA MM1 RBL JMP HSTR2 HSTR1 LDA B IOR GLOB1 STA GLOB1 JMP HSTOR,I HED PUNIT,H34G PUNIT NOP SUBROUTINE TO OUTPUT UNIT TABLE LDA UNITC GET NO. OF UNITS IN UNIT TABLE LDB P037A JSB DCIN1 DEPOSIT IN MESSAGE LDB P037B LDA UNITC SZA,RSS SKIP IF UNIT TABLE IS NOT EMPTY JMP H36 JUMP IF UNIT TABLE IS EMPTY CMA,INA STA CSAVE LDA UNITS STA CPNT PUNA LDA CPNT,I GET UNIT ADA B2060 BLANK,0 STA B,I STORE IN MESSAGE INB ISZ CPNT ISZ CSAVE DONE? JMP PUNA NO H36 LDA C1440 #,BLANK STA B,I LDA B37 H37 JSB PRINT UNIT TABLE/X DRIVE(S);A,B... JMP PUNIT,I PUNT JSB PUNIT PRINT OUT CONTENTS OF UNIT TABLE JSB ASKI,I WISH TO CHANGE? JMP LOOPI,I GO SEE IF BIT 2 IS STILL SET H34 LDA B34 ENTER UNIT NUMBER(0-7) SEPARATED * BY COMMAS[e JSB PRINT JSB HIN INPUT FROM KEYBOARD JSB UHERI,I CLA STA UNITC NUMBER OF UNITS = 0 STA UENTI,I UNENT = BIT INDICATOR FOR UNITS ENTERED LDA UNITS STA GLOB3 POINTER FOR UNIT NUMBERS H34A JSB OCHAR GET CHARACTER JMP H34B ERROR OR DONE JSB H34G STORE AND CHECK JMP H34A LOOP TO LOOK AT THE NEXT UNIT H34B LDB CCNT WAS THERE AN ERROR OR ARE WE DONE SZB SKIP IF NO ERROR WAS MADE JMP H34 GO TO REQUEST UNIT NOS. AGAIN JSB H34G ENTER UNIT NO. INTO UNIT TABLE LDA UNITC SEE IF ANY UNITS ARE IN UNIT TABLE SZA SKIP IF NO UNITS IN UNIT TABLE JMP H34K JSB PUNIT PRINT OUT UNIT TABLE JMP H34 H34K LDA UNITS STA XXX1 LDB UENTI,I GET UNIT NOS. ENTERED, BIT INDICATOR CLA H34P SLB SKIP IF BIT NOT SET JMP H34N H34R BRS SHIFT TO LOOK AT NEXT BIT INA INCREASE UNIT COUNT BY ONE SZB EXIT IF HAVE LOOKED AT ALL THE BITS * THAT ARE SET JMP H34P GO LOOK AT NEXT BIT LDA UNITA GET FIRST UNIT IN UNIT TABLE STA UNIT JMP PUNT H34N STA XXX1,I STORE NEW NO. IN UNIT TABLE ISZ XXX1 JMP H34R H34G NOP SUBROUTINE TO CHECK THE VALIDITY OF UNIT * NOS. ENTERED AND PLACE THEM * INTO UNIT TABLE IF OK. STA UNIT STORE UNIT NO. ENTERED ADA MM8 SEE IF UNIT NO. LESS THAN 8 SSA SKIP IF NO. NOT LESS THAN 8 JMP H34I JSB H31 OUTPUT ERROR MESSAGE 31 (UNIT X NOT READY) JMP H34G,I RETURN TO CALLING ROUTINE H34I ADA D8 RESTORE UNIT NO. TO A REG. IOR B2060 CONVERT TO ASCII FOR MESSAGE STRIsNG STA P072A,I INSEERT INTO MESSAGE STATC JSB OSTAT GET STATUS AND B3 NOT READY BIT SET? SZA,RSS SKIP IF UNIT NOT READY OR BUSY JMP H34J E72 JSB ERROR OUTPUT ERROR MESSAGE JMP H34G,I RETURN TO CALLING ROUTINE H34S LDA UNIT JMP STATC H34J LDA UNIT GET UNIT NO. ENTERED CLB,INB CMA,INA - UNIT NO. ENTERED H34L SZA,RSS JMP H34M ENTER IN BIT TABLE RBL ROTATE BIT INDICATOR ONE POSITION INA JMP H34L LOOP TO SEE IF NEXT UNIT NO. POSITION H34M LDA UENTI,I AND B SZA,RSS ISZ UNITC LDA UENTI,I IOR B STA UENTI,I JMP H34G,I CYLCH JSB UHERI,I CLB STB WTYPE CLEAR WRITE TYPE LDB CTYPE GET CURRENT TYPE INDICATOR STB CTYPT TYP3 SLB SEE IF THIS TYPE IS PRESENT JMP TYP5 JUMP IF THIS TYPE IS PRESENT TYP4 BRS PREPARE TO LOOK AT NEXT TYPE ISZ WTYPE UPDATE WRITE TYPE INDICATOR SZB HAVE WE LOOKED AT ALL DIFFERENT TYPES JMP TYP3 MORE TYPES TO LOOK AT, LOOP AGAIN JMP LOOPI,I HAVE LOOKED AT ALL TYPES,EXIT FROM LOOP TYP5 STB CTYPT SAVE CURRENT TYPE INDICATORS JSB SW2I,I LDA CYLTB BASE ADDRESS OF CYL. TABLE POINTERS TABLE ADA WTYPE ADD CURRENT TYPE LDA A,I GET BASE ADDR. FOR CYL. TABLE FOR TYPE D STA TRT STORE IN TRACK TABLE JSB CYLT GO ASK IF CYL. TALE FOR THIS TYPE * OF DEVICE SHOULD BE CHANG LDB CTYPT GO SEE IF MORE DEVICE TYPES ARE LEFT JMP TYP4 CYLT NOP CTD EQU * PREPARE CYLINDER TABLE LDA P024A INITIALIZE STA CPNT POINTER KV LDA MM12 -12 STA CSAVE HED CLOOP CLOOP LDA CSAVE ADA TRT CYLINDER TABLE POINTER LDA A,I JSB DECIN CONVERT NUMBER LDA CVT1 USE RIGHT AND B377 CHARACTER ALF,ALF OF LDB A CVT1 LDA CVT2 AND AND P7400 LEFT ALF,ALF CHARACTER IOR B OF CVT2 STA CPNT,I FOR FIRST ISZ CPNT WORD LDA CVT2 USE AND B377 RIGHT ALF,ALF CHARACTER IOR B54 OF CVT2 STA CPNT,I AND ISZ CPNT ASCII COMMA ISZ CSAVE FOR SECOND WORD JMP CLOOP LDB P024A REMOVE ADB D23 LAST LDA B,I COMMA AND P7400 IOR B40 STA B,I LDA ATYPE BASE ADDR. OF ASCII DEVICE TYPE TABLE ADA WTYPE ADD OFFSET FOR THIS TYPE OF DEVICE LDA A,I GET ASCII CODE FOR THIS TYPE OF DEVICE STA P024B,I LDB ABLNK GET ASC 1,A SSA IF B TYPE RIVE CHANGE ADB BIT8 TO ASC 1,B LDA P024B INA STB A,I STORE IN MESSAGE H24 LDA B24 CYLINDER TABLE CONTENTS JSB PRINT JSB ASKI,I WISH TO CHANGE? JMP CYLT,I H26 LDA MM12 STA CSTOR LDA B26 YES,ENTER CYL. NOS. * SEPARATED BY COMMAS JSB PRINT JSB HIN INPUT FROM KEYBOARD CTS JSB DCHAR GET DECIMAL VALUE JMP CTS1 ERROR OR DONE? JSB CYLOK JMP CTS CONTINUE CTS1 LDA CCNT SZA,RSS SKIP IF ERROR JSB CYLOK JMP CTD HED SOFEX SOFEX NOP LDA SOFEX,I GET MESSAGE NO. TO BE OUTPUT STA MESGN SAVE FOR FUTURE REFERENCE ISZ SOFEX LDA SOFEX,I GET ADDRESS OF VARIABLE TO BE UPDATED  STA VARLC ISZ SOFEX LDB SOFEX,I GET LOC. TO INSERT "NOT" INTO IN * MESSAGE IF NECESSARY STB NOTLC ISZ SOFEX SOFE1 LDA VARLC,I GET VALUE OF INDICATOR VARIABLE LDB NOTLC GET LOC. OF "NOT" IN CHAR. STRING SZA,RSS IF INDICATOR = 0 IMPLIES "NOT" JMP SOFE2 CLA INSERT NULLS RATHER THEN "NOT" STA B,I JMP SOFE3 SOFE2 LDA E7117 =NO INSERT NOT INTO MESSAGE STA B,I LDA F2040 =T SOFE3 INB STA B,I H134 EQU * H126 LDA MESGN GET NO. OF MESSAGE TO BE OUTPUT JSB PRINT OUTPUT MESSAGE JSB ASKI,I ASK IF WISH TO CHANGE JMP SOFEX,I LDB VARLC LDA VARLC,I IF VARIABLE WAS TRUE MAKE IT FALSE, XOR D1 IF IT WAS FALSE MAKE IT TRUE STA VARLC,I STORE RESULT CPB SOFTA SEE IF IT WAS THE SOFT FLAG STA TSOFI,I JMP SOFE1 HED ADDO,STMSG * * ROUTINE TO PRINT OUT THE CURRENT DISC ADDRESS * ORG 14000B PTPAI DEF PTMPA PTPBI DEF PTMPB PTPCI DEF PTMPC PCHSI DEF PCHS P051K DEF JP51K ADDO NOP LDA XMCPU SZA SKIP IF NOT MCPU MODE JMP ADDO,I RETURN IF MCPU MODE LDA P051A STA PTPAI,I LDA P051B STA PTPBI,I LDA P051C STA PTPCI,I JSB PCHSI,I LDA WCNT CONVERT WORD COUNT TO ASCII JSB DECIN LDA CVT3 WORD 1 LDB P051G MESSAGE POINTER STA B,I INB LDA CVT1 WORD 2 STA B,I INB LDA CVT2 WORD 3 STA B,I LDA UNIT CONVERT UNIT NUMBER TO ASCII LDB P051H AND STORE JSB DCIN1 IN MESSAGE LDA RSFLG SYNDROME? ADA ABLCK DON'T REQUEST ADDRESS? SZA JMP AD9 YES ISZ ABLCK DON'T REENTER ADDO JSB RQSAI,I NO-GET ADDRESS JSB STMSG STUFF MESSAGE AD9 CLA STA ABLCK STA RSFLG RESET FLAG LDA STAS2 AND FAULT SZA,RSS SKIP IF DRIVE FAULT JMP AD2 JSB FATLI,I POSSIBLY REPORT FATAL ERROR ISZ CAUTN SET CAUTION JMP H51 AD2 LDA LIMIT CPA MM1 LIMIT = -1? JMP AD5 YES JSB ERRA NO - STATUS OK? SZA SKIP IF YES JMP AD6 LDA DERR BUFFER ERRORS? SZA SKIP IF NO AD5 JSB FATLI,I POSSIBLY REPORT FATAL ERROR H51 LDA OLCYL GET PREV. CYL NO. LDB P051K JSB DCIN2 INSERT OLD CYL. INTO MESSAGE LDA B51 JSB FPRNT WORD COUNT XXXX UNIT X JSB ERHTI,I ALLOW HALT CLA STA PMASK STA FFLAG JMP ADDO,I NO AD6 LDA STAS1 AND B7400 CPA A7400 CORRECTABLE DATA ERROR? RSS YES JMP H51 NO LDA COPRN CPA B22 VERIFY? JMP H51 YES LDA DERR SZA DERR = 0? CPA DERR1 NO - DERR=DERR1? JMP H51 YES JMP AD5 NO * P051A DEF JP51A P051B DEF JP51B P051C DEF JP51C P051D DEF JP51D P051E DEF JP51E P051F DEF JP51F P051G DEF JP51G P051H DEF JP51H RSFLG OCT 0 * STMSG NOP STUFF MESSAGE LDA RCYL LAST CYLINDER LDB P051D JSB DCIN2 LDA RHDS ALF,ALF AND B377 LAST HEAD LDB P051F JSB DCIN1 LDA P051F,I ALF,ALF LDB A AND B377 IOR C7400 STA P051E,I LDA B AND P7400 IOR B57 LDB P051E INB STA B,I LDA RHDS AND B377 LAST SECTOR LDB P051F JSB DCIN1 JMP STMSG,I HED PCOPR * PCOPR * PRINT CURRENT OPERATION * PCOPR EQU * LDB PMASK SZB JMP PCOP,I ISZ PMASK JSB PRNI,I GET MESSAGE LƷENGTH AND ADDRESS JMP PCOP,I TELEPRINTER IS SUPPRESSED ARS CONVERT LENGTH CMA,INA FROM CHARACTERS STA LOCAL TO WORDS LDA PCOPC FINAL MESSAGE STA PSAVE ADDRESS JSB PMOVE MOVE FIRST HALF OF MESSAGE LDA STEPN DEPOSIT LDB PCOPE STEP NUMBER IN JSB DCIN1 SECOND HALF OF MESSAGE LDA MM7 LENGTH OF SECOND STA LOCAL HALF IS 7 WORDS LDB PCOPF ADDRESS OF SECOND HALF JSB PMOVE MOVE SECOND HALF OF MESSAGE LDA B61 JSB FPRNT OUTPUT MESSAGE JMP PCOP,I * PMOVE NOP B = ADDRESS OF DATA TO MOVE PMV EQU * PSAVE = WHERE TO MOVE IT LDA B,I LOCAL = NUMBER OF WORDS TO MOVE STA PSAVE,I ISZ B ISZ PSAVE ISZ LOCAL DONE? JMP PMV NO JMP PMOVE,I YES PCOPC DEF *+1 M61 BSS 23 PCOPF DEF *+1 ASC 05, IN STEP PCOPD BSS 1 ASC 01,# PCOPE DEF PCOPD HED ERHLT,ERCRD * * ERHLT * TESTS HALT BIT (BIT14) AFTER ERROR * ERHLT NOP JSB SWR TTY AVAILABLE AND A4400 AND SPACES WANTED? SZA,RSS SKIP IF NO JSB SPACE OUTPUT SPACE JSB ERCRD JSB SWR AND BIT14 SZA HALT? JMP ERHLT,I NO LDA ELOC YES HLT 1 ISZ RMASK JMP ERHLT,I P001A DEF J001A * * RECORD ERROR AND POSSIBLY REMOVE UNIT * ERCRD NOP LDA STEPN CPA D90 OPDSN? JMP ERCRD,I YES - DON'T COUNT ERRORS ISZ ALLE COUNT ALL ERRORS NOP AVOID SKIP ISZ ERR INCREMENT ERROR COUNT NOP AVOID SKIP LDA UNIT AND D7 ADA PUEI,I ISZ A,I INCREMENT UNIT NOP ERROR COUNTER LDA ERR CPA MAX = 20 IN DEFAULT CASE RSS REMOVE UNIT JMP ERCRD,I JSB SLNTI,.I SELECT WORST UNIT LDA UNIT ADA ASCZZ STA P001A,I LDA B1 H1 JSB FPRNT UNIT X REMOVED FROM UNIT TABLE LDA UNITC DECREMENT STA LOCAL NUMBER OF ADA MM1 UNITS STA UNITC IN TABLE SZA ANY LEFT? JMP RCRDA YES RCRDB CLA,INA STA UNITC HLT 5 JMP DONE RCRDA LDA UNITA MOVE UNIT TABLE STA WD1 INTO LDA UNITA+1 TEMPORARY STA WD2 STORAGE LDA UNITA+2 STA WD3 LDA UNITA+3 STA WD4 LDA UNITA+4 STA WD4+1 LDA UNITA+5 STA WD4+2 LDA UNITA+6 STA WD4+3 LDA UNITA+7 STA WD4+4 LDA LOCAL NUMBER OF CMA,INA UNITS IN STA LOCAL TABLE LDB UNITS TO ADDRESS LDA WD0 INA STA GLOB1 FROM ADDRESS CLA STA UNITC REMOVE ALL OCCURANCES OF UNIT RCRDC EQU * LDA GLOB1,I CPA UNIT REMOVE ? JMP RCRDD YES STA B,I NO INB ISZ UNITC RCRDD EQU * ISZ GLOB1 ISZ LOCAL DONE? JMP RCRDC NO LDA UNITC ANY LEFT SZA,RSS JMP RCRDB NO CLC 0,C SC40 CLF SC JMP RCRDE,I RESTART RCRDE DEF RSTRT PUEI DEF PUE SLNTI DEF SLUNT HED COMMD,DCHK,EE47,DCEND,DDUMP,RJECT * COMMD NOP SC01 CLC SC INHIBIT ATTENTION SC02 SFS SC DID ONE SNEAK THROUGH? JMP CL2 NO STA LOCAL YES-SAVE A AND REPORT IT LDA XMCPU SZA SKIP IF NOT MCPU MODE JMP SC50 JUMP IF MCPU MODE * CLEAR UNEXPECTED INTERRUPT BY GETTING STATUS AND ISSUING NOP LDA BLOCK SZA JMP CL3 STILL CLEARING PREVIOUS ATTENTION ISZ BLOCK PREVENT ENDLESS LOOP LDA LOCAL STA COMDA SAVE A STB COMDB SAVE B STB COPRN LDA COMMD  STA COMDC SAVE RETURN ADDRESS LDA COMDI,I SAVE COMD STA COMDF RETURN ADDRESS LDA STAT SAVE STAT STA COMDD RETURN ADDRESS LDA POLL SAVE POLL STA COMDE RETURN ADDRESS JSB STAT GET STATUS LDA STAS1 LDB P042B JSB CNVRT LDA UNIT STA COMDG LDA STAS1 AND B377 JSB UNXFI,I STORE UNIT NO. AND UPDATE TABLES FOR NEW UNIT ADA B2060 STA P042A,I JSB STAT GET NEW STATUS-2 LDB P042C JSB CNVRT STUFF INTO MESSAGE JSB PCOP PRINT CURRENT OPERATION E42 JSB ERROR UNIT XX ATTENTION SET-STATUS IS * YYYYYY AND ZZZZZZ LDA ABLCK OK TO CALL ADDO? SZA,RSS SKIP IF NO JSB ADDOI,I JSB POLL LDA COMDG JSB UNXFI,I STORE UNIT NO. AND UPDATE TABLES FOR NEW UNIT LDA COMDC STA COMMD RESTORE RETURN LDA COMDD RESTORE STAT STA STAT RETURN ADDRESS LDA COMDE RESTORE POLL STA POLL RETURN ADDRESS LDA COMDF RESTORE COMD STA COMDI,I RETURN ADDRESS CLA STA BLOCK UNBLOCK LDA COMDA RESTORE A LDB COMDB RESTORE B SC43 CLC SC RSS CL3 LDA LOCAL CL2 STB COPRN CPA SFMSK IS IT STMSK? JMP CL4 YES CPA CLRD IS IT COLD LOAD READ? JMP CL6 YES IOR UNIT XOR HOLD RSS CL4 IOR FLMSK CL7 STA BXLR JMP COMMD,I CL6 STA BXLR LDA HEAD ALF,RAL RAL IOR SECTR IOR BXLR JMP CL7 * SC50 CLF SC CLEAR UNEXPECTED ATTENTION LDA LOCAL GET CURRENT COMMAND LDB P145A GET ADDRESS AT WHICH TO INSERT INTO MESSAGE JSB O2ASC,I CONVERT TO ASCII LDA B145 JSB PRINT PRINTS MESSAGE JMP CL3 P145A DEF M145A B145vB@< OCT 145 COMDA BSS 1 COMDB BSS 1 COMDC BSS 1 COMDD BSS 1 COMDE BSS 1 COMDF BSS 1 COMDG BSS 1 CL5 DEF *+1 BSS 3 BXLR BSS 1 P042A DEF JP42A P042B DEF JP42B P042C DEF JP42C _B* * * * THE DCHK ROUTINE IS CALLED AFTER A READ. * IT COMPARES THE READ AND WRITE BUFFERS. * * THE WCHK ROUTINE IS CALLED AFTER A WRITE. * IT CHECKS ONLY THE STATUS. * THE WRERX AND WRERZ ENTRIES ARE USED BY THE * OTHER ROUTINES TO DO THEIR STATUS CHECK. * * * THE PCHK ROUTINE IS CALLED AFTER A READ. * IT COMPARES THE READ BUFFER TO A PATTERN WORD. * * THE RCHK ROUTINE IS CALLED AFTER A READ. * IT CHECKS THE CHECKSUMMED SECTOR IN * THE READ BUFFER. * * THEY COMPARE THE CURRENT STATUS ( STAS1 AND STAS2) * WITH THE PREDICTED STATUS(SHTAS AND SHTS2) BY * CALLING THE ERRAN ROUTINE. * * * THE ROUTINES GIVE A NORMAL RETURN IF NO ERRORS ARE * DETECTED. IF AN ERROR OCCURS, THE ROUTINES GENERATE AN * ERROR MESSAGE AND CHECK FOR HALT OR CONTINUE. * * DLCAL BSS 1 DCHK NOP TO CHECK FOR ERRORS IN * READ AND TO COMPARE READ * AND WRITE BUFFERS LDA DCHK LOAD RETURN ADDRESS STA WCHK SAVE FOR POSSIBLE CALL JSB DSOKI,I CHECK D AND S BITS SZA,RSS ABORT? JMP WRERX YES CLA STA DFRST FIRST TIME STA DERR ERROR FLAG DCLB EQU * * * * COMPARES THE BUFAD AND BUFAE BUFFERS USING WCNT * FOR BUFFER LENGTH. * * LDA TNUMP LDB STEPN CPB D90 OPDSN? RSS YES LDA D3 STA NUMP PRINT FIRST THREE ERRORS LDA M32K SEE IF 32K OF MEMORY SZA,RSS SKIP IF 32K OF MEMORY JMP DCLL CLA IS USED FOR 32K OF MEMORY SO LDB S2S7I THAT 48-BIT PATTERN WILL START CPB DCHK ON CORRECT WORD LDA SECTR RAL DCLL ADA BUFAD STA TEMP1 LDA BUFAE LOAD SECOND BUFFER ADDRESS STA TEMP2 LDB NOWDS LDA DMAWC ACTUAL WORDS TRANSFERRED !w SZB,RSS SKIP IF INCOMPLETE TRANSFER LDA WCNT SZA,RSS JMP WRERX STOP IF ZERO STA DLCAL SAVE ACTUAL WORD COUNT CMA,INA STA TEMP3 SET ISZ COUNTER DCM EQU * LDA TEMP1,I CPA TEMP2,I JMP DCL EQUAL COMPARE * LDA TEMP3 ADA DLCAL GENERATE RELATIVE LOCATION JSB EE47 PRINT MESSAGE 47 SZA,RSS JMP DCLA IF 1 LEAVE AT 1 AND EXIT STA NUMP * * DCL EQU * ISZ TEMP1 COUNT UP BUFFER ISZ TEMP2 ADDRESSES AND ISZ TEMP3 CHECK FOR COMPLETION JMP DCM LDA DERR ANY ERRORS? SZA JMP DCLA YES LDA DFRST NO - FIRST TIME? SZA JMP WRERX NO LDA STAS1 YES AND B7400 CPA A7400 JMP DCLA JMP WRERX BUFFERS OKAY, NORMAL STATUS CHECK P047A DEF JP47A P047B DEF JP47B P047C DEF JP47C S2S7I DEF S2SB7 DCLA EQU * JSB DCEND JMP DCLB * * EE47 * FORMAT AND PRINT MESSAGE 47 * EE47 NOP LDB P047A LOAD POINTER JSB DCIN2 CALL CONVERT ROUTINE JSB FSOFT IS IT SOFT AND FIRST TIME? JMP EE47A YES JSB PCOP LDA TEMP1,I LOAD WHAT WORD SHOULD BE LDB P047C LOAD POINTER JSB CNVRT CALL CONVERT AND MOVE ROUTINE LDA TEMP2,I LOAD WHAT WORD ACTUALLY WAS LDB P047B LOAD POINTER JSB CNVRT CONVERT TO ASCII E47 JSB ERROR DATA WORD X IS Y SHOULD BE Z EE47A ISZ DERR LDA NUMP DECREMENT ADA MM1 PRINTOUT COUNT JMP EE47,I * * DCEND * USED BY DCHK AND PCHK * DCEND NOP LDA DFRST SZA JMP DCLC LDA DERR LDB STEPN CPB D41 STEP NUMBER = 41? JMP DCLO YES - EXIT ISZ DFRST STA DERR1 JSB FXITI,I LDA STAS1 AND B7400 CPA A7400 CORRECTED? JMP DCEND,I YES M? JSB ISOFT IS IT SOFT? JMP WRERX YES LDA DERR SZA,RSS JMP WRERX JMP WRERV NO DCLC EQU * LDA DERR CPA DERR1 ANY MORE ERRORS? JMP DCLP NO DCLV JSB PCOP JSB DDUMP DUMP SYNDROME JMP WRERV FINISH REPORT DCLP JSB ISOFT IS IT SOFT? JMP WRERX YES LDA B116 JSB FPRNT DATA ERROR CORRECTED JMP WRERV DCLO SZA ANY ERROR? JMP DCLV YES JMP WRERX NO * * DDUMP * DUMPS SYNDROME * DDUMP NOP LDA STAS1 AND B7400 CPA A7400 JSB B11CK TTY ON? JMP DDUMP,I LDA SYNI STA DCZ3 LDA MM7 STA DCZ4 DCZ1 LDA DCZ3,I LDB CL5 JSB CNVRT LDA D6 LDB CL5 JSB SIOFO,I ISZ DCZ3 ISZ DCZ4 JMP DCZ1 JMP DDUMP,I DCZ3 BSS 1 DCZ4 BSS 1 * * * RJECT NOP SC06 SFC SC REJECT? JMP RJ1 NO-RETURN JSB CUNEN JMP H34SI,I JSB PCOP YES-REPORT IT LDA BXLR LDB P073A JSB CNVRT E73 JSB ERROR COMMAND REJECTED LDA XMCPU SZA SKIP IF NOT MCPU JMP RJ1 JUMP IF MCPU MODE LDA BXLR AND B7400 =17400 CPA STATS LAST COMMAND = STATUS? JMP RJ2 YES - DON'T LOOP LDA RJECT SAVE RETURN STA RJ3 ADDRESS JSB STAT GET STATUS LDA RJ3 RESTORE RETURN STA RJECT ADDRESS RJ2 JSB ERRNI,I CHECK FOR ERRORS SZA JSB PRHDI,I REPORT ERROR JSB CBLKI,I CALL ADDO IF OK JMP RJECT,I RJ1 ISZ RJECT JMP RJECT,I RJ3 BSS 1 P073A DEF JP73A TSATI DEF TSTAT HED ERRAN,ERRA,ISOFT,FSOFT ERRAN NOP JSB ERRA SZA,RSS SKIP IF PROBLEM JMP ERRAN,I LDA SPDVR SZA JMP ERRAN,I JSB TSATI,I SEE IF EXPANDED T;ERM. STATUS WANTED ERR1 LDA P064E ADDRESS TO STOP CONVERSION AT LDB D2 JSB LNGSH SEE IF EXPANDED FORM DESIRED AND SETS * VALUES ACCORDINGLY LDA STAS1 SET LDB P064A UP JSB BINRI,I MESSAGE DEF MM1 64 LDA P064F ADDRESS TO STOP CONVERSION AT LDB D4 JSB LNGSH SEE IF EXPANDED FORM DESIRED AND * SETS VALUES ACCORDINGLY LDA STAS2 LDB P064B JSB BINRI,I DEF MM1 LDA P064G ADDRESS TO STOP CONVERSION AT LDB D2 JSB LNGSH SEE IF EXPANDED FORM DESIRED AND SETS * VALUES ACCORDINGLY LDA SHTAS IOR UNIT LDB P064C JSB BINRI,I DEF MASK1 LDA P064H ADDRESS TO STOP CONVERSION AT LDB D4 JSB LNGSH SEE IF EXPANDED FORM DESIRED AND SETS * VALUES ACCORDINGLY LDA UNIT CPA D11 LDA EXTRA ADA UTYPE ADD TO UNIT NO. BASE ADDR. OF UNIT TYPE TABLE LDA A,I GET TYPE ASSOC. WITH UNIT AND B77 ALF,ALF PLACE IT IN UPPER BYTE RAL IOR SHTS2 OR IN THE REST OF EXPECTED STATUS-2 WORD LDB P064D JSB BINRI,I DEF MASK2 LDA STAS1 AND B7400 CPA A7400 DATA ERROR? RSS CPA A4000 JMP ERR3 YES - POSSIBLY RECORD ERR4 JSB ISOFT IS IT SOFT? JMP ERR2 YES E64 LDA B64 STATUS IS X AND Y STA ELOC SHOULD BE V AND W JMP ERRAN,I A MUST BE NON ZERO ERR3 LDB A SAVE ACTUAL STATUS LDA SHTAS AND B7400 EXPECTED STATUS CPA B THIS EXPECTED? JMP E64 YES - DON'T COUNT AS DATA ERROR JSB RCRDI,I NO - RECORD DATA ERROR LDA STOVR SECOND TIME OVERRIDE? SZA JMP E64 YES JSB ISS7OFT IS IT SOFT? JSB ERCRD YES - RECORD ERROR JMP ERR4 ERR2 EQU * JSB DMRFC INCOMPLETE TRANSFER OK CLA JMP ERRAN,I P064A DEF JP64A P064B DEF JP64B P064C DEF JP64C P064D DEF JP64D P064E DEF JP64E P064F DEF JP64F P064G DEF JP64G P064H DEF JP64H BINRI DEF BINRY RCRDI DEF RECRD+D * ERRA NOP LDA SHTAS EXPECTED STATUS WORD 1 IOR UNIT XOR STAS1 DISC STATUS WORD 1 AND MASK1 SZA JMP ERRA1 PROBLEM LDA UNIT CPA D11 LDA EXTRA ADA UTYPE ADD TO UNIT NO. BASE ADDR. OF UNIT TYPE TABLE LDA A,I GET TYPE ASSOC. WITH TABLE ALF,ALF PLACE IT IN UPPER BYTE RAL IOR SHTS2 OR IN THE REST OF EXPECTED STATUS-2 WORD XOR STAS2 DISC STATUS WORD 2 AND MASK2 JMP ERRA,I ERRA1 JSB DSOKI,I CHECK D AND S BITS JMP ERRA,I * LNGSH NOP STA FINSH SAVE ADDRESS TO STOP STRING TRANSFER AT LDA LONGF SEE IF EXPANDED FORM WANTED SZA,RSS CLB,INB STB TYPE SAVE INDICATOR FOR LONG OR SHORT FORM COLUMN JMP LNGSH,I ISOFT NOP IS IT SOFT? LDA SOFT SUPPRESS SOFT ERRORS? SZA SKIP IF YES JMP ISFT1 NO - PRINT ERROR LDA STAS1 PREDICT SERIOUSNESS AND B7400 LDB MM1 CPB LIMIT LIMIT = -1 JMP ISFT1 YES CPA A7400 CORRECTABLE? JMP ISOFT,I YES CPA A4000 NO - UNCORRECTABLE? RSS YES ISFT1 ISZ ISOFT NO - PRINT ERROR JMP ISOFT,I * FSOFT NOP LDA DFRST FIRST TIME? SZA JMP FSFT1 NO JSB ISOFT IS IT SOFT? JMP FSOFT,I YES FSFT2 ISZ FSOFT JMP FSOFT,I FSFT1 ISZ STOVR SECOND TIME OVERRIDE JMP FSFT2 HED ADDER * ADDER * ADDRESS ERROR * ADDER NOP LDA WCNT SAVE STA AWCNT WCNT uvLDA D138 STA WCNT WORD COUNT = 138 JSB RDFUL READ FULL SECTOR LDB BUFAE FORM INB BUFFER STB BUFPT POINTER LDA B,I GET CYLINDER WORD LDB P075A JSB CNVRT OUTPUT IN OCTAL JSB PRD1I,I NO LDA BUFPT,I JSB PSETI,I NO LDB P075B JSB DCIN2 OUTPUT IN DECIMAL ISZ BUFPT LDA BUFPT,I GET HEAD/SECTOR WORD AND P7400 IOR UNIT JSB PSETI,I NO LDB P075C JSB CNVRT OUTPUT IN OCTAL LDA OLCYL GET OLD CYLINDER LDB P075D JSB DCIN2 OUTPUT IN DECIMAL E75 JSB ERROR PRINT MESSAGE JSB PRD2I,I NO LDA AWCNT RESTORE STA WCNT WORD COUNT LDA STEPN CPA D85 MULTIPLE SEEK SECTION? JMP ADDER,I YES - DON'T FIX YET JSB SEEKH RECALIBRATE JSB FSEEK ISZ NOWDS REPEAT IF WRITE JMP ADDER,I AWCNT BSS 1 BUFPT BSS 1 P075A DEF JP75A P075B DEF JP75B P075C DEF JP75C P075D DEF JP75D PRD1I DEF PRCD1+D PSETI DEF PSET+D PRD2I DEF PRCD2+D HED ENSTP * END STEP * ENSTP NOP CLA STA RSFLG LDA COPRN SAVE STA OLCOP COPRN JSB HELPI,I JMP END4 LDA OLCOP OLD COPRN CPA B36 INITIALIZE DATA? RSS YES CPA B45 WRITE? RSS CPA B46 READ? RSS CPA B22 VERIFY? RSS CPA B71 READ WITH OFFSET? RSS CPA B115 COLD LOAD READ? RSS CPA B3 READ FULL SECTOR? RSS CPA B101 WRITE FULL SECTOR? RSS CPA B117 READ WITHOUT VERIFY? JMP END6 YES-TRY AGAIN END4 EQU * LDA MM5 STA LIMIT LDA EFLAG NEED TO RESTORE PARAMETERS? SZA,RSS SKIP IF YES JMP END7 CLA STA EFLAG CLEAR FLAG LDA ESCTR K! STA SECTR RESTORE SECTOR LDA EWCNT STA WCNT RESTORE WORD COUNT LDA EBUFD STA BUFAD RESTORE WRITE BUFFER POINTER LDA EBUFE STA BUFAE RESTORE READ BUFFER POINTER END7 EQU * JSB SWR GET SWITCH REGISTER SSA,RSS JMP END5 LDA D512 JSB TMR,I WAIT HALF SECOND LIA 1 CLEAR ELA,CLE,ERA BIT OTA 1 15 HLT 4 JSB STMSK END5 JSB SWR GET FRESH COPY OF SWITCH REG. AND BIT1 SZA JMP END1 SKIP JSB SWR AND BIT13 SZA,RSS JMP ENSTP,I JMP COPR,I LOOP IF BIT 13 SET HLT4A HLT 4 EXTRA COPY END1 EQU * JSB NORMI,I SET UP NORMAL STATUS LDA STEPN INCREMENT CPA D75 S4BUG RSS FOR STEPS CPA D76 75 AND RSS 76 AND CPA D77 77 RSS AND CPA D78 78 ISZ S4BUG JMP SKIPI,I END6 ISZ LIMIT RETRY? RSS OK JMP END4 NO LDB TEMPS CPB A7000 OVERRUN? RSS CPB B1000 ACCESS NOT READY? JMP COPR,I YES LDA NOWDS TRANSFER COMPLETE? SZA,RSS SKIP IF NO JMP END11 LDA DMAWC ANY WORDS TRANSFERRED? END12 AND P7600 = 177600 (TRUNCATE) SZA,RSS SKIP IF YES JMP COPR,I NO - RETRY ALF,ALF RAL A = NUMBER OF SECTORS LDB TEMPS CPB A7400 CORRECTED? RSS YES ADA MM1 NO - TRY LAST SECTOR AGAIN SZA,RSS JMP COPR,I LDB EFLAG A = NUMBER OF GOOD SECTORS SZB,RSS FLAG SET? JSB ESAVE NO - SAVE PARAMETERS STA ETEMP ADA SECTR A = NEW SECTOR NUMBER STA SECTR LDA SCPT NO. OF SECTORS / TRACK CMA,INA ADA SECTR SSA nD SKIP IF OVERFLOW JMP END8 OK LDA ETEMP CMA,INA ADA SECTR STA SECTR JMP COPR,I END8 LDA ETEMP FIX BUFFERS ALF,ALF RAR STA B ADA BUFAD STA BUFAD LDA BUFAE ADA B STA BUFAE CMB,INB ADB WCNT STB WCNT JMP COPR,I END11 LDA TEMPS STATUS OK? CPA A7400 JMP END4 YES LDA WCNT NO - NOT DONE JMP END12 ESAVE NOP ISZ EFLAG SET FLAG LDB SECTR STB ESCTR SAVE SECTR LDB WCNT STB EWCNT SAVE WCNT LDB BUFAD STB EBUFD SAVE BUFAD LDB BUFAE STB EBUFE SAVE BUFAE JMP ESAVE,I ESCTR BSS 1 EWCNT BSS 1 EBUFD BSS 1 EBUFE BSS 1 ETEMP BSS 1 OLCOP BSS 1 HED FIXIT,REQSN,SPACE * FIX BUFFER IF REQUIRED * FIXIT NOP LDA STAS1 GET STATUS AND B7400 CPA A7400 CORRECTABLE? RSS YES JMP FIXIT,I NO JSB REQSN LDB SYNI LDA B,I STATUS IOR UNIT STA STAS1 UPDATE STATUS AND B7400 CPA A7400 CORRECTABLE? INB,RSS YES JMP FIXIT,I NOT CORRECTABLE LDA COPRN CPA B22 VF? JMP FIXIT,I YES LDA B,I ACTUAL CYLINDER CPA CYL CORRECT? INB,RSS YES JMP FIXE NO LDA B,I HEAD/SECTOR ALF,ALF AND B377 A = ACTUAL HEAD CPA HEAD SAME? JMP FIXA YES CMA,INA ADA HEAD A = HEAD - ACTUAL HEAD STA LOCAL CLA FIXB ADA SCPT ISZ LOCAL JMP FIXB RSS FIXA CLA STA LOCAL LDA B,I AND B377 A = ACTUAL SECTOR ADA LOCAL STA LOCAL LDA SECTR CMA,INA ADA LOCAL STA LOCAL ALF,RAL RAL,RAL A = DISPLACEMENT IN WORDS ADA BUFAE STA LOCAL INB LDA MM3 INITIALIZE STA COUNT LOOP COUNT LDA B,I DISPLACEMENT STA DISP ADA D5 SSA LESS THAN -5? NOP *****CHANGE TO JMP FIXE ***** ADA MM212 SSA,RSS GREATER THAN 204? JMP FIXE YES LDA DISP ADA LOCAL STA LOCAL FIXD INB LDA DISP SSA SKIP IF POSITIVE JMP FIXC AND BIT7 CPA BIT7 DISPLACEMENT TOO BIG? JMP FIXIT,I YES - DONE LDA LOCAL,I GET SICK WORD XOR B,I FIX IT STA LOCAL,I RESTORE FIXC ISZ LOCAL ADVANCE POINTER ISZ DISP ADVANCE DISPLACEMENT NOP ISZ COUNT DONE? JMP FIXD NO JMP FIXIT,I YES COUNT BSS 1 DISP BSS 1 FIXE EQU * JSB PCOP JSB DDUMP JMP FIXIT,I * REQSN NOP REQUEST SYNDROME LDB COPRN STB TCOPR SAVE COPRN LDB B100 LDA RQSYN REQUEST SYNDROME COMMAND JSB COMI,I SC28 OTA SC,C LDA STAS2 STA SYN JSB WAITI,I LDA SYN STA STAS2 JSB RJCTI,I CHECK FOR REJECT NOP REJECTED - IGNORE LDA TCOPR RESTORE COPRN STA COPRN LDA MM7 STA LOCAL LDB SYNI STB TCOPR SC26 LIA SC,C GET NEXT WORD LDB TCOPR STA B,I SAVE IT ISZ LOCAL RSS JMP REQ1 INB STB TCOPR JSB FLAGI,I JMP SC26 E77 JSB ERROR NO FLAG GETTING SYNDROME JSB ADDOI,I JMP REQSN,I REQ1 EQU * LDA SYN+1 STA RCYL LDA SYN+2 STA RHDS JSB STMSG ISZ RSFLG JMP REQSN,I SYNI DEF SYN SYN BSS 7 TCOPR BSS 1 MM212 OCT -212 SPACE NOP LDA CRLFL OUTPUT LENGTH LDB 113B IS FAST DEVICE SZB CONFIGURED? JMP ERH2 YES LDB CRLFI NO JS<:6B SIOLO,I PRINT BLANK LINE JMP SPACE,I ERH2 EQU * LDB CRLFI JSB SIOFO,I PRINT BLANK LINE JMP SPACE,I CRLFI DEF BB CLSMX NOP JSB WAITI,I LDA MASK1 DONT CARE ON AND P7400 UNIT NO. OF STA MASK1 STATUS-1 WORD FOR FILE MASK JMP CLSMX,I OR CLEAR COMMAND < HED DUMP ROUTINE ORG 16000B DUMP JSB SPACI,I OUTPUT A BLANK LINE CLA STA DFLAG LDB MM13 -(MAX. NO. OF HEADS) STB CNT LDB DFLGP BASE ADDRESS OF COUNTERS FOR HEADS DUMP1 STA B,I ZERO COUNTERS FOR THE DIFFERENT HEADS INB INCREMENT POINTER ISZ CNT JMP DUMP1 LDA MXCYL LARGEST TRACK ON WHICH ERROR OCCURED CMA -(MXCYL + 1) STA DUMPY JSB DCLER CLEAR WRITE BUFFER CLA DUMP4 LDB MENHD LARGEST HEAD ON WHICH ERROR OCCURED CMB -(MENHD+1) STB DUMPZ DUMPZ= -(NO. OF HEADS TO CHECK) CLB STB QFLAG 0=> DON'T PRINT THIS LINE * 1=> PRINT THIS LINE DUMP3 JSB DSCAN SEARCH FOR MATCH WITH A REG. * A REG.= HD/CYL. WORD ADA BIT12 PREPARE TO TEST NEXT HEAD INB INCREMENT HEAD IN B REG. ISZ DUMPZ SEE IF CHECKED ALL THE HEADS JMP DUMP3 RETURN TO DO NEXT HEAD IF NOT DONE STA DTMPA SAVE HD/CYL WORD LDA QFLAG ANY ERRORS? SZA SKIP IF NO ERRORS JSB RPORT REPORT ERRORS LDA DTMPA GET HEAD/CYL WORD AND B3777 GET CYLINDER INA INCREMENT CYLINDER ISZ DUMPY SEE IF ALL CYLINDERS CHECKED JMP DUMP4 IF NOT DONE,RETURN TO CHECK NEXT CYL. LDA DFLAG GET NO. OF DATA ERRORS ADA ALLE ADD NO. OF ALL ERRORS SZA,RSS SKIP IF ANY ERRORS AT ALL JMP DUMP8 NO ERRORS, NEED NOT PRINT ANYTHING CLA STA DUMPX SET HEAD COUNT = 0 LDB MENHD MAX. HEAD ON WHICH ERROR OCCURED CMB -(MENHD+1) STB CNT COUNT FOR NO. OF HEADS TO CHECK LDA DFLGP GET POINTER TO  ERROR TABLE FOR HEADS STA DUMPY SAVE ADDRESS OF ERROR COUNT FOR HEAD 0 DUMP7 LDA DUMPY,I GET ERROR COUNT FOR HEAD 0 JSB SLINE PLACE COUNT IN WRITE BUFFER ISZ DUMPY INCREMENT COUNTER TO NEXT HEAD * ERROR COUNTER ISZ DUMPX INCREMENT HEAD COUNTER ISZ CNT SEE IF HAVE CHECKED ALL THE HEADS JMP DUMP7 IF NOT DONE, GO PLACE ERROR COUNT FOR LDB PM6 GET ADDRESS OF ASCII FOR 'TOTAL' LDA B,I GET 'TO' STA DM2 STORE IN WRITE BUFFER INB LDA B,I GET 'TA' STA DM3 STORE IN WRITE BUFFER INB LDA B,I GET 'L ' STA DM3AA STORE IN WRITE BUFFER LDA MENHD MAX. HEAD ENTRY TO BE PRINTED OUT ALS,ALS ADA MENHD (MAX. HEAD TO USE )*5 ADA D10 (MAX. HEAD TO USE)*5+10=NO. BYTES TO XFER LDB PM2 START OF WRITE BUFFER JSB SIOFO,I WRITE OUT WRITE BUFFER * NEXT HEAD IN WRITE BUFFER DUMP8 JSB SPACI,I OUTPUT A BLANK LINE LDA ALLE GET TOTAL OF ALL ERRORS LDB PM18 GET ADDRESS OF WHERE TO STORE ASCII OF * TOTAL OF ALL ERRORS JSB DCIN2 CONVERT TO ASCII AND STORE IN WRITE BUFFER LDA D2201,I GET OVERFLOW COUNT LDB PM18A ADDRESS OF WHERE TO PLACE OVERFLOW COUNT * IN THE WRITE BUFFER JSB DCIN2 CONVERT COUNT TO ASCII AND STORE LDA D30 NO. OF BYTES IN 'OVERFLOW= ' AND * 'ALL ERRORS= ' MESSAGES LDB PM18B JSB SIOFO,I WRITE OVERFLOW & ERROR MESSAGE JSB SPACI,I OUTPUT A BLANK LINE JSB SDUMP DUMP HEAD/SECTOR ERRORS JSB SPACI,I OUTPUT A BLANK LINE J JSB MDUMP DUMP HEAD/UNIT MATRIX JSB SPACI,I OUTPUT A BLANK LINE LDA D3674 BASE ADDRESS OF POSITION ERROR MATRIX CPA PERR SEE IF ANY POSITION ERRORS RSS SKIP IF NO POSITION ERRORS JSB PPERR PRINT OUT POSITION ERRORS HLT 77B END OF ERROR SUMMARY DUMP JMP DONE GO TO BEGINNING OF DIAG. AND BEGIN CNT BSS 1 MM36 DEC -36 P0000 OCT 170000 D150 DEC 150 MM28 DEC -28 HWDOP BSS 1 HWDPT DEF HWD1 HWD1 BSS 1 HWD2 BSS 1 * EXECUTION OF IT DCLER NOP LDB BB A = 2 ASCII BLANKS LDA MM36 NO. OF WORDS TO FILL WITH BLAN KS STA CNT LDA PM2 ADDRESS OF WRITE BUFFER DCLEI STB A,I PLACE BLANK INTO BUFFER INA ISZ CNT JMP DCLEI JMP DCLER,I * * A REG. = HEAD/CYL WORD * B REG. = HEAD NO. * DSCAN NOP SCAN FOR MATCH WITH HEAD/SECTOR STB DTMPB SAVE B REG. LDB D2200,I GET NO. OF ERROR PAIRS SZB,RSS SKIP IF ERRORS OCCURED JMP DS3 NO ERRORS, GO TO DS3 CMB,INB STB LOCAL SAVE NEG. OF NO. OF ERRORS LDB D2200 DS1 ADB D2 CPA B,I COMPARE ERROR LOC. AGAINST CURRENT VALUES JMP DS2 IF MATCH GO TO DS2 ISZ LOCAL HAVE WE LOOKED AT ALL ERROR PAIRS? JMP DS1 RETURN TO DS1 IF ERROR PAIRS LEFT DS3 LDB DTMPB RESTORE ORIGINAL B REG. JMP DSCAN,I RETURN DS2 STA DTMPA SAVE A REG. = VALUE WE ARE TRYING * TO FIND INB LDA B,I GET NO. OF ERRORS LDB DTMPB GET HEAD NO. STB DUMPX SAVE HEAD NO. ADB DFLGP BASE ADDRESS OF CUMULATIVE HEAD * ERROR COUNT 1 STA LOCAL SAVE NO. OF ERRORS ADA B,I SUM NO. OF ERRORS WITH NO. SO * FAR ON THIS HEAD STA B,I STORE ACCUMULATED ERRORS SO FAR * ON THIS HEAD ISZ QFLAG SET PRINT INDICATOR * <> 0 => PRINT LINE LDA LOCAL GET ERRORS ON THIS CYL. & HEAD JSB SLINE PLACE ASCII VALUES IN WRITE BUFFER JMP DS3 RPORT NOP LDA DFLAG HAS THE TITLE BEEN PRINTED YET? * 0=> NO SZA SKIP IF HAVE NOT PRINTED TITLE JMP RLP TITLE ALREADY PRINTED LDA MENHD LARGEST HEAD ERROR OCCURED ON ALS,ALS ADA MENHD ADA D10 A = HEAD*5+10= NO. OF BYTES TO PRINT LDB PM1 BASE ADDRESS OF LINE TO WRITE JSB SIOFO,I WRITE TITLE LINE ISZ DFLAG SET INDICATOR TO SHOW TITLE HAS * BEEN PRINTED RLP LDA DTMPA OBTAIN CYL. & HEAD NOW CHECKING AND B3777 KEEP ONLY CYL. NO. LDB PM2 GET ADDRESS OF WHERE TO PLACE ASCII * CYL. NO. JSB DCIN2 CONVERT CYL. TO ASCII & PLACE IN BUFFER LDA DUMPX GET LARGEST HEAD FOR WHICH THIS CYL. * HAD AN ERROR ALS,ALS ADA DUMPX ADA D10 A = HEAD*5+10 LDB PM2 BASE ADDRESS OF WRITE BUFFER JSB SIOFO,I OUTPUT LINE JSB DCLER CLEAR WRITE BUFFER JMP RPORT,I DM1 ASC 13,CYL HD0 HD1 HD2 HD3 ASC 15, HD4 HD5 HD6 HD7 HD8 HD9 ASC 7,HD10 HD11 HD12 DM2 BSS 1 DM3 BSS 1 DM3AA BSS 1 DM4 BSS 6 DM32 BSS 2 DM33 BSS 25 DM6 ASC 3,TOTAL DM18B ASC 5, OVERFLOW= DM18A BSS 2 ASC 6,;ALL ERRORS=  DM18 BSS 2 PM1 DEF DM1 PM2 DEF DM2 PM4 DEF DM4 PM6 DEF DM6 PM18 DEF DM18 PM18A DEF DM18A PM18B DEF DM18B DTMPA BSS 1 DTMPB BSS 1 DFLGP DEF DFLG0 DFLG0 BSS 1 DFLG1 BSS 12 DFLAG BSS 1 QFLAG BSS 1 DUMPY BSS 1 DUMPX BSS 1 DUMPZ BSS 1 * * WRITE OUT HEAD SECTOR TABLE * SDUMP NOP JSB DCLER CLEAR WRITE BUFFER JSB ZEROB ZERO BUFFER FOR SECTOR ERROR COUNTS LDA MM13 -(NO. OF WORDS TO MOVE) STA LOCAL LDA PM2 ADDRESS OF DESTINATION STA DTMPA LDB PM30 ADDRESS OF SOURCE DMP3 LDA B,I GET WORD TO MOVE STA DTMPA,I PLACE IN NEW LOCATION INB INCREMENT SOURCE ADDRESS ISZ DTMPA INCREMENT DESTINATION ADDRESS ISZ LOCAL SEE IF ALL WORDS MOVED JMP DMP3 MORE WORDS TO MOVE, GET NEXT WORD CLA HD/SECTOR CURRENTLY LOOKING FOR DMP4 LDB MENHD CMB -(MAX. HEAD + 1ON WHICH AN ERROR * OCCURRED) STB DUMPZ DMP5 LDB MM8 -(MAX. SECTOR/8) STB DUMPY DMP6 CLB STB QFLAG 0=> DON'T PRINT THIS LINE * 1=> PRINT THIS LINE JSB SSCAN SEE IF ANY OF SECTOR GROUP SHOULD * BE PRINTED LDB QFLAG SZB SEE IF THIS LINE SHOULD BE PRINTED JSB SRPOR CALL SECTOR REPORT ROUTINE ADA D8 INCREASE SECTOR BY 8 ISZ DUMPY HAVE WE LOOKED AT ALL THE SECTOR GROUPS JMP DMP6 GO CHECK NEXT SECTOR GROUP AND P0000 SAVE CURRENT HEAD, SET SECTOR = 0 ADA BIT12 INCREASE HEAD BY ONE ISZ DUMPZ HAVE WE CHECKED ALL THE HEADS JMP DMP5 GO CHECK NEXT HEAD LDA D2657,I GET OVERFLOW FOR HEAD/SECTOR TABLE SZA,RSS SEE IF NO TABLE OVERFLOW JMP SDUMP,I IF NO OVERFLOW RETURN. LDB PM18A ADDRESS OF WHERE TO PLACE ASCII STRING JSB DCIN2 CONVERT OVERFLOW TO ASCII AND * PLACE IN BUFFER LDB PM18B GET STARTING ADDRESS OF BUFFER LDA D14 GET NO. OF BYTES TO OUTPUT JSB SIOFO,I PRINT LINE GIVING OVERFLOW COUNT JMP SDUMP,I * * A REG. = HEAD/SECTOR * B REG. DESTROYED ON RETURN * SSCAN NOP STA DTMPA SAVE CURRENT HEAD/SECTOR WORD LDB D2656,I GET NO. OF HEAD/SECTOR PAIRS SZB,RSS IF NO HEAD SECTOR PAIRS JMP SSCAN,I EXIT ROUTINE CMB,INB STB XXX1 -(NO. OF HEAD/SECTOR PAIRS) LDB D2656 BASE ADDRESS OF HEAD/SECTOR TABLE SS1 ADB D2 LDA B,I GET HEAD/SECTOR WORD AND P7770 GET SECTOR AS MULTIPLE OF 8 CPA DTMPA SEE IF FITS IN HEAD SECTOR GROUP * CURRENTLY LOOKING AT JMP SS2 IF YES, GO GET ERROR COUNT SSX ISZ XXX1 HAVE WE LOOKED AT ALL HEAD/SECTOR PAIRS JMP SS1 NO,GO LOOK AT NEXT HEAD/SECTOR PAIR SS3 LDA DTMPA JMP SSCAN,I SS2 XOR B,I GET REMAINDER OF SECTOR/8 ADA D4 THIS IS SO WILL HAVE SAME LOCATIONS * AS HEADS 4/11 STA DUMPX NEEDED BY SLINE TO PLACE NO. IN * CORRECT LOCATION STB DTMPB SAVE CURRENT POINTER AT HEAD/SECTOR TABLE INB LDA B,I GET ERROR COUNT ISZ QFLAG SET INDICATOR TO PRINT THIS LINE JSB SLINE PLACE ERROR COUNT IN OUTPUT BUFFER LDB DTMPB GET POINTER INTO HEAD/SECTOR TABLE JMP SSX * * PLACE ZEROES IN BUFFER FOR SECTOR ERROR * COUNTS, THESE CORRESPOND TO HEADS 4-11 * ZEROB NOP LDA D4 PLACE ZEROES IN LOC. FOR HEAD 4/11  STA DUMPX LDA MM8 GET COUNTER FOR NO. OF TIMES TO GO * THRU LOOP STA XXX1 ZER1 CLA WANT TO PLACE ZERO IN BUFFER JSB SLINE ROUTINE TO PLACE ASCII NO. IN BUFFER ISZ DUMPX INCREMENT HEAD POSITION ISZ XXX1 SKIP IF ALL DONE JMP ZER1 GO PLACE ANOTHER ZERO IN BUFFER JMP ZEROB,I RETYRN TO CALLING ROUTINE SRPOR NOP AND B377 GET LOWER SECTOR GROUP NO. LDB PM32 GET ADDRESS OF WHERE TO PLACE ASCII JSB DCIN1 CONVERT TO ASCII & STORE LDA DTMPA ALF AND B17 GET HEAD NO. LDB PM4 ADDRESS OF WHERE TO PLACE HEAD JSB DCIN1 LDA DTMPA GET HEAD/SECTOR WORD AND B377 SAVE SECTOR ADA D7 GET UPPER SECTOR OF SECTOR GROUP LDB PM33 GET ADDRESS OF WHERE TO PLACE ASCII JSB DCIN1 CONVERT TO ASCII & STORE LDB PM2 GET BASE ADDRESS OF BUFFER LDA D72 GET NO. OF BYTES TO XFER JSB SIOFO,I OUTPUT LINE JSB ZEROB ZERO SECTOR COUNTERS LDA DTMPA RESTORE A-REG. JMP SRPOR,I * * THE FOLLOWING SUBROUTINE TAKES THE VALUE IN THE * A REG. AND CONVERTS IT TO IT'S 4 BYTE ASCII * REPRESENTATION AND PLACES THESE BYTES INTO * WRITE BUFFER * SLINE NOP LDB HWDPT ADDRESS OF WHERE TO PLACE ASCII DIGITS JSB DCIN2 A REG. CONTAINS VALUE TO CONVERT LDA DUMPX GET CURRENT HEAD ALS,ALS MULTIPLY BY 4 ADA DUMPX A = HEAD*5 ADA D6 A = HEAD*5+6 ARS A = (HEAD*5+6)/2 ADA PM2 ADD BASE ADDRESS OF WRITE BUFFER STA HWDOP SAVE LOC. OF WHERE TO PLACE ASCII VALUES LDA DUMPX GET}: CURRENT HEAD SLA SKIP IF EVEN HEAD NO. JMP DS5 GO TO DS5 IF ODD HEAD NO. LDA HWD1 A = ASCII OF UPPER 2 DIGITS STA HWDOP,I STORE ASCII NOS. IN WRITE BUFFER ISZ HWDOP LDA HWD2 STA HWDOP,I STORE OTHER 2 ASCII DIGITS DS4 LDA DTMPA JMP SLINE,I DS5 LDA HWD1 GET UPPER 2 ASCII DIGITS AND P7400 SAVE ONLY UPPER ASCII DIGIT IOR B40 PLACE ASCII BLANK IN WORD ALF,ALF ROTATE SO HAVE BLANK ASCII DIGIT STA HWDOP,I STORE IN WRITE BUFFER ISZ HWDOP LDA HWD1 GET UPPER 2 ASCII DIGITS AND B377 SAVE 2ND ASCII DIGIT STA B LDA HWD2 GET 3RD & 4TH ASCII DIGITS AND P7400 SAVE 3RD ASCII DIGIT IOR B COMBINE 3RD & 2ND ASCII DIGIT ALF,ALF NOW HAVE 2ND 3RD ASCII DIGITS STA HWDOP,I STORE IN WRITE BUFFER ISZ HWDOP LDA HWD2 GET 3RD & 4TH ASCII DIGIT AND B377 KEEP 4TH ASCII DIGIT ALF,ALF IOR B40 4TH ASCII DIGIT ASCII BLANK STA HWDOP,I STORE IN WRITE BUFFER JMP DS4 * * RECORD DATA ERRORS * RECRD NOP LDA RSFLI,I SEE IF HEAD/SECTOR VALUES VALID * OR MUST WE GET NEW VALUES SZA SKIP IF MUST DO REQUEST ADDRESS JMP RECD1 HEAD/SECTOR VALUES SEEM OK JSB RQSAI,I GET NEW HEAD/SECTOR VALUES JSB STMSI,I PLACE VALUES IN H51 MESSAGE ISZ RSFLI,I RECD1 LDA RHDS GET HEAD SECTOR WORD ALF AND P0000 SAVE HEAD IN BITS 12-15 STA AD8 LDA RHDS GET HEAD SECTOR AGAIN AND B377 SAVE SECTOR IOR AD8 OR IN HEAD LDB D2656 BASE ADDRESS OF HEAD SECTOR TABLE STB DTMPA SAVE IN DTMPAf640, USED BY ICYLS JSB ICYLS UPDATE ERROR COUNTER IN HEAD/SECTOR TABLE LDA RHDS GET HEAD/SECTOR WORD ALF,ALF PLACE HEAD IN KOWER BYTE AND B17 SAVE HEAD NO. LDB MENHD GET MAX. HEAD SO FAR CMB,INB -(MAX. HEAD SO FAR) ADB A ADD CURRENT HEAD SSB,RSS IF > 0 => NEW MAX. STA MENHD ALF,RAR MULTIPLY HEAD BY 8 ADA UNIT A = HEAD *8 +UNIT ADA D3334 ADD BASE ADDRESS OF HEAD/UNIT TABLE ISZ A,I INCREMENT COUNTER NOP LDA AD8 HEAD IN BITS 12-15 IOR RCYL OR IN CYL. LDB D2200 BASE ADDRESS OF CYL./HEAD TABLE STB DTMPA JSB ICYLS UPDATE ERROR COUNT FOR CYL./HEAD MATRIX LDA RCYL GET CURRENT CYLINDER LDB MXCYL GET MAX. CYL. SO FAR CMB,INB NEG. MAX. CYL. SO FAR ADB A ADD CURRENT CYL. SO FAR SSB,RSS IF POSITIVE => NEW MXCYL STA MXCYL SAVE NEW MAX. CYLINDER JMP RECRD,I V6* * USED TO UPDATE HD/CYL. TABLE OR HD/SECTOR TABLE * ON ENTRY * A REG. = HEAD IN BITS 12-15 * EITHER CYL. OR SECTOR IN BITS 0-11 * DTMPA = BASE ADDRESS OF TABLE TO USE * ICYLS NOP LDB DTMPA,I GET NO. OF ERROR PAIRS SZB,RSS SKIP IF A PREV. ERROR OCCURED JMP HC1 THIS IS THE FIRST ERROR,GO RECORD IT CMB,INB -(ERROR PAIRS) STB LOCAL LDB DTMPA GET BASE ADDRESS OF ERROR TABLE HC2 ADB D2 INCREMENT TABLE POINTER BY 2 CPA B,I HAS AN ERROR ALREADY OCCURED AT THIS LOC. JMP HC3 YES, GO UPDATE COUNTER FOR THIS LOC. ISZ LOCAL HAVE WE LOOKED AT ALL ERROR PAIRS JMP HC2 NOT DONE, GO GET NEXT ERROR PAIR RSS HC1 LDB DTMPA GET BASE ADDRESS OF ERROR TABLE STA LOCAL SAVE ERROR LOC. LOOKING FOR LDA D150 MAX. NO. OF ERROR PAIRS CPA DTMPA,I IS TABLE FULL JMP HC4 TABLE FULL, GO UPDATE OVERFLOW COUNT LDA LOCAL GET NEW ERROR LOC. ADB D2 POINT TO LOC. AT WHICH TO INSERT NEW * ENTRY INTO TABLE STA B,I STORE NEW ERROR LOC. IN TABLE ISZ DTMPA,I INCREASE ERROR PAIR COUNTERS BY ONE HC3 INB POINT TO ERROR COUNTER ISZ B,I UPDATE ERROR COUNTER JMP ICYLS,I HC4 ISZ DTMPA POINT TO OVERFLOW COUNTER ISZ DTMPA,I INCREMENT OVERFLOW COUNTER NOP JMP ICYLS,I D2200 OCT 32200 D2201 OCT 32201 D2656 OCT 32656 D2657 OCT 32657 D3334 OCT 33334 D3504 OCT 33504 D2524 OCT 33524 D3674 OCT 33674 PPERR NOP STA QFLAG POINTS AT NEXT POSITION ERROR ENTRY LDA D17 NO. OF BYTES TO PRINT LDB PM10 ADDRESS OF WHERE TITLE STARTS JSB SIOFO,I LDA D26 " NO. OF BYTES TO PRINT LDB PM11 ADDRESS OF WHERE TEXT STARTS JSB SIOFO,I PRINT LINE PPR1 LDA QFLAG,I GET OLD CYLINDER LDB PM12 ADDRESS OF WHERE TO PLACE ASCII JSB DCIN2 CONVERT & PLACE IN BUFFER ISZ QFLAG GET DESIRED CYL. LDA QFLAG,I DESIRED CYL. POINTED AT BY QFLAG LDB PM13 ADDRESS OF WHERE TO PLACE ASCII JSB DCIN2 CONVERT TO ASCII & PLACE IN BUFFER ISZ QFLAG POINT AT ACTUAL CYL. LDA QFLAG,I GET ACTUAL CYL. LDB PM14 ADDRESS OF WHERE TO PLACE ASCII JSB DCIN2 CONVERT TO ASCII & PLACE IN BUFFER ISZ QFLAG POINT AT HEAD/UNIT WORD LDA QFLAG,I GET HEAD UNIT WORD ALF,ALF AND B377 SAVE HEAD LDB PM15 ADDRESS OF WHERE TO PLACE ASCII JSB DCIN1 CONVERT TO ASCII & PLACE IN BUFFER LDA QFLAG,I GET HEAD UNIT WORD AGAIN AND D7 IOR B2060 CONVERT UNIT TO ASCII STA DM15A PLACE IN OUTPUT BUFFER ISZ QFLAG INCREMENT POINTER LDA D24 NO. OF BYTES TO OUTPUT LDB PM12 BEGINNING OF WRITE BUFFER JSB SIOFO,I OUTPUT LINE LDA QFLAG GET POINTER INTO POSITION ERROR ARRAY CPA PERR HAVE WE OUTPUT ALL POSITION ERRORS JMP PPERR,I ALL POSITION ERRORS OUTPUT SO RETURN JMP PPR1 GO OUTPUT INFO. ON NEXT POSITION EROR DM10 ASC 09,OLD ACTUAL DM11 ASC 13,CYL CYL CYL HEAD UNIT PM10 DEF DM10+D PM11 DEF DM11+D DM12 BSS 2 ASC 1, DM13 BSS 2 ASC 1, DM14 BSS 2 ASC 1, DM15 BSS 1 ASC 1, DM15A BSS 1 PM12 DEF DM12+D PM13 DEF DM13+D PM14 DEF DM14+D PM15 DEF DM15+D PPASS NOP JSB SPACI,I OUTPUT A BLANK LINE LDA DM16 PA STA DM20 LDA DM16+1 SS STA DM20+1 JMP PPASS,I DM16 ASC 02,PASS MDUMP NOP CLA STA DFLG0 0=>TITLE NOT PRINTED YET * 1=> TITLE ALREAD+Y PRINTED LDA MM28 -(HEADS*2+2) NO. OF HEADS=13 STA DUMPY LDA D3334 STA QFLAG QFLAG= BASE ADDRESS OF TABLE LDA ASCZZ ASC 1,00 STA DM20 ASCII FOR HEAD 0 LDA C6505 ASC 1,-E STA DM20+1 MLP1 CLA STA DFLG1 0=>DO'T PRINT THIS LINE * 1=> PRINT THIS LINE LDA MM8 STA DFLAG -(NUMBER OF UNITS) LDA DPNT STA DTMPA POINTER MLP2 LDA QFLAG,I GET NO. OF ERRORS THIS HD/UNIT PAIR SZA SKIP IF NO ERRORS MADE ISZ DFLG1 PRINT THIS LINE SHOWING ERRORS * DFLG1 <>0 CAUSES PRINTING TO BE * LATER,OTHERWISE LINE NOT PRINTED LDB DTMPA,I ADDRESS OF WHERE TO PLACE ASCII * ERROR COUNT JSB DCIN2 CONVERT TO ASCII & PLACE IN BUFFER ISZ QFLAG INCREMENT POINTER TO ERROR COUNTERS ISZ DTMPA INCREMENT POINTER TO LOC. IN WRITE BUFFER ISZ DFLAG HAVE WE LOOKED AT ALL THE UNITS JMP MLP2 GO LOOK AT NEXT UNIT ERROR COUNT MLP14 LDA DFLG1 SEE IF SHOULD PRINT THIS LINE SZA,RSS JMP MLP3 NEED NOT PRINT LINE LDA DFLG0 HAS TITLE BEEN PRINTED YET SZA 0=> TITLE NOT PRINTED YET * 1=> TITLE ALREADY PRINTED JMP MLP4 NEED NOT PRINT TITLE ISZ DFLG0 INDICATE TITLE PRINTED LDA D60 NO. OF BYTES TO PRINT LDB PM19 START OF LINE TO PRINT JSB SIOFO,I PRINT THE TITLE MLP4 LDA BB STA DM20+2 STORE BLANK IN BUFFER LDA MM15 -(HEADS+2) STA XXX1 STORE RESULT TEMPORARILY LDA DUMPY CPA XXX1 ARE WE GOING TO LOOK AT THE * FATAL ERRORS NEXT JSB SWAP CHANGE BEGINNING OF LINE TO 'FATAL' LDA MM14 -(HEADS+1) STA XXX1 ARE WE GOING T&O LOOK AT NO. * OF PASSES NEXT LDA DUMPY CPA XXX1 PASSES? JSB PPASS PLACE 'PASS' AT BEGINNING OF LINE LDA D58 NO. OF BYTES TO PRINT LDB PM20 STARTING ADDRESS OF BUFFER JSB SIOFO,I MLP3 LDA DUMPY SZA,RSS IF 0 THEN ALL DONE WITH THIS ROUTINE JMP MDUMP,I LDA MM14 -(HEADS+1) STA XXX1 STORE RESULT TEMPORARILY ISZ DM20 LDA DUMPY CPA XXX1 JSB CYLS SET FOR TRACK COUNT ISZ DUMPY DONE? JMP MLP1 NO LDA DM35 ASC 1,OK STA DM20 STORE IN BUFFER LDA DM35+1 ASC 1,? STA DM20+1 STORE IN BUFFER CLA STA DFLG1 DFLG1=0 => NOT NEED TO PRINT LINE * 1=> PRINT LINE STA DFLAG CURRENT UNIT UNDER CHECK LDA DPNT STA DTMPA BASE ADDRESS OF WRITE BUFFER MLP6 LDA D3334 ADA DFLAG ADD CURRENT UNIT NO. STA QFLAG LDA MM13 -(HEADS) STA DUMPY CLB MLP9 ADB QFLAG,I ADD TO TOTAL DATA ERRORS JSB MLP8 MOVE POINTER ISZ DUMPY DONE? JMP MLP9 NO STB DATAE TOTAL DATA ERRORS SZA ANY FATAL ERRORS? JMP DNO YES JSB MLP8 MOVE POINTER ALS STA LONGP ALS,ALS ADA LONGP STA LONGP STORE 10* NO. OF LONG PASSES SZA,RSS JMP UNKNO NO LONG PASSES LDA DFLAG GET CURRENT UNIT NO. JSB UNXFI,I UPDATE DEVICE DEPENDENT INFO. BASED * ON CURRENT UNIT LDA STYPE GET CURRENT DEVICE TYPE CPA MM1 IF = -1 IS NOT CONNECTED JMP UNKNO OUTPUT BLANKS, SINCE NOT CONNECTED,NEITHER * PASSES NOR FAILS ADA TYPTB CONVERT DEVICE TYPE TO INDEX TO USE IN *  LOOKING UP DEVICE DEPENDENT INFO. LDA A,I ADA DUMPT GET BASE ADDRESS OF DUMP ROUTINE LDA A,I INFO. TABLE STA XXX2 ADA D5 LDA A,I GET NO. OF CYLS. WHICH MUST BE GOOD FOR * UNIT TO PASS TEST STA CYLCT LDB MHEAD GET NEG. COUNT FOR NO. OF HEADS FOR THIS UNIT STB DUMPY MLP10 JSB MLP8 GET NO. OF CYLS. TESTED SZA IF NO. = 0 ASSUME SURFACE WAS NOT TESTED ADA CYLCT ADD ON NEG. NO. OF VALID CYLS. MUST HAVE SSA SEE IF A SUFFOCIENT NO. OF CYLS. ARE OK JMP DNO INSUFFICIENT NO. OF GOOD TRACKS * INDICATE FAILURE OF TEST ISZ DUMPY HAVE WE LOOKED AT ALL THE SURFACES * FOR THIS UNIT JMP MLP10 NO, RETURN TO LOOK AT THE NEXT SURFACE LDA MM13 -(HEADS) STA LOCAL CLA LDB HDONV DETERMINE NO. OF SURFACES TESTED MLP13 SLB INA RBR ISZ LOCAL HAVE WE LOOKED AT ALL THE HEADS JMP MLP13 NO,RETURN TO LOOK AT THE OTHERS STA LOCAL A = NO. OF HEADS SELECTED SZA,RSS JMP UNKNO IF NO HEADS SELECTED THEN IS * UNKNOWN WHETHER PASSED OR NOT ARS HEAD/2 ADA XXX2 ADD BASE ADDRESS OF HEAD ERROR/PASS TABLE LDA A,I GET MULTIPLE FOR THIS NO. OF HEADS LDB LOCAL B = # HEADS SLB SKIP IF EVEN NO. OF HEADS ALF,ALF EVEN HEAD => LOWER BYTE * ODD HEAD => UPPER BYTE AND B377 ALF MULTIPLY BY 16 LDB A GET N (160*2**(N-1)) LDA XXX2,I AND B377 CMA,INA DIVJIDE MULTIPLIER BY 2**(N-1) MLP15 INA,SZA,RSS JMP MLP16 BRS DIVIDE B REG. BY 2 JMP MLP15 MLP16 LDA B PLACE MULTIPLIER BACK INTO A REG. LDB MM12 MAX. NO. OF BITS IN MULTIPLIER STB XXX2 CLB CLEAR B BEFORE START MULTIPLICATION MUL10 SLA ADB DATAE ADD NO. OF DATA ERRORS CLE,ERB ERA PLACE LEAST SIGNIFICANT BIT OF ANSWER IN * HIGHEST ORDER BIT OF A REG. ISZ XXX2 JMP MUL10 IF WE HAVENT COMPLETED MULTIPLICATION * RETURN TO CONTINUE ALF ON COMPLETION THE RESULT IS IN THE UPPER BYTE OF A * REG. AND THE ENTIRE B REG. * WE WISH TO DIVIDE THIS RESULT * BY 16 AND B17 STA XXX2 SAVE LOWEST FOUR BITS OF RESULT LDA B AND P4000 IF RESULT <>00 => RESULT >016 BITS SZA THEREFORE OUTPUT NO FOR NOT PASS TEST * WOULD HAVE TO RUN DIAG. FOR * MONTHS FOR THAT NO. OF ERRORS TO * BE OK JMP DNO LDA B ALF IOR XXX2 A = TOTAL NO. OF ERRORS MULTIPLIED BY * APPROPRIATE SCALE FACTOR * DEPENDING ON DRIVE TYPE AND NO. * OF HEADS SELECTED CMA,INA CONVERT TO NEG. NO. ADA LONGP SEE IF SUFFICIENT NO. OF LONG * PASSES WERE DONE SSA IF RESULT >=0 => OK JMP DNO OTHERWISE UNIT DIDNOT PASS TEST LDA DM35 ASC 1,OK MLP11 ISZ DFLG1 INCREMENT TO INDICATE PRINTING OF LINE MLP7 LDB DTMPA,I OUTPUT EITHER OK,NO OR A BLANK STA B,I INB LDA BB PLACE BLANKS IN NEXT WORD IN MESSAGE BUFFER STA B,I ISZ DTMPA ISZ DFLAG INCREMENT UNIT NO. LDA DFLAG CPA D8 JMP MLP14 JMP MLP6 CYLCT BSS 1 P4000 OCT 174000 DMPTX DEF DMPT0 DEF DMPT1 DEF DMPT0 DEF DMPT2 DMPT0 OCT 115001,32517,20050,13433,11025,7421,6416 DEC -406 DMPT1 OCT 116402,33120,20450,13433,11025,7421,6416 DEC -815 DMPT2 OCT 166403,50170,30475,21451,15437,13031,11425 DEC -815 DNO LDA DMNO NO JMP MLP11 UNKNO LDA BB UNKNOWN JMP MLP7 DM35 ASC 2,OK? DATAE BSS 1 LONGP BSS 1 DMNO ASC 1,NO * MLP8 NOP LDA D8 ADA QFLAG STA QFLAG QFLAG = QFLAG +8 LDA QFLAG,I JMP MLP8,I * CYLS NOP JSB SPACI,I OUTPUT A BLANK LINE LDA ASCZZ STA DM20 HEAD LDA C6503 -C STA DM20+1 JMP CYLS,I * DM19 ASC 20,HEAD UNIT 0 UNIT 1 UNIT 2 UNIT 3 UNIT 4 ASC 10,UNIT 5 UNIT 6 UNIT 7 DM20 BSS 1 ASC 2 DM21 BSS 2 0 ASC 1 DM22 BSS 2 1 ASC 2 DM23 BSS 2 2 ASC 1 DM24 BSS 2 3 ASC 2 DM25 BSS 2 4 ASC 1 DM26 BSS 2 5 ASC 2 DM27 BSS 2 6 ASC 1 DM28 BSS 2 7 PM19 DEF DM19+D PM20 DEF DM20+D DPNT DEF PM21+D PM21 DEF DM21+D DEF DM22+D DEF DM23+D DEF DM24+D DEF DM25+D DEF DM26+D DEF DM27+D DEF DM28+D MESS ASC 03,FATAL * SWAP NOP JSB SPACI,I OUTPUT A BLANK LINE LDA MESS =FA STA DM20 LDA MESS+1 =TA STA DM20+1 LDA MESS+2 =L STA DM20+2 JMP SWAP,I * * SET1 * INITIALIZE TABLES FOR BEGINNING * SET1 NOP LDA MM224 NO. OF WORDS TO ZERO IN HEAD/UNIT, * FATAL ERROR, NO. OF PASSES, * TRACKS /HEAD CHECKE)uD TABLES STA TEMP1 CLA LDB D3334 BASE ADDRESS OF TABLES TO ZERO RLP2 STA B,I INB INCREMENT POINTER ISZ TEMP1 HAVE WE ZEROED ALL THE VALUES JMP RLP2 GO ZERO OTHER VALUES LDA D3674 BASE ADDRESS OF POSITION ERROR TABLE STA PERR JMP SET1,I MM224 DEC -224 * * SET2 * INITIALIZE TABLES FOR PASS = 0 * SET2 NOP LDB M604 NO, OF WORDS TO ZERO IN HEAD/CYL * & HEAD/SECTOR ERROR TABLES STB TEMP1 LDB D2200 BASE ADDRESS OF HEAD/CYLINDER TABLE CLA STA MENHD SET MAX. HEAD ON WHICH AN ERROR * OCCURED = 0 STA MXCYL SET MAX. CYL. ON WHICH AN ERROR * OCCURRED = 0 RLOOP STA B,I PLACE 0 IN TABLE ENTRY INB INCREMENT TABLE POINTER ISZ TEMP1 HAVE WE ZEROED ALL TABLE ENTRIES JMP RLOOP GO ZERO ANOTHER ENTRY JMP SET2,I RETURN TO CALLING ROUTINE M604 DEC -604 * * PRCD1 * RECORD POSITION ERRORS * PRCD1 NOP LDA OLCYL GET LAST CYL. WE WERE ON JSB PSET PLACE IN POSITION ERROR TABLE LDA CYL GET CYL. WE SHOULD BE ON JSB PSET PLACE IN POSITION ERROR TABLE JMP PRCD1,I RETURN TO CALLING ROUTINE * * PRCD2 * CHECK POSITION ERROR ARRAY BOUNDS * * NOTE: ONLY RECORDS 68 POSITION ERRORS THEN RESTARTS * AT BEGINNING OF TABLE, THEREFORE ONLY THE LAST * ERRORS AFTER A MULTIPLE OF 68 ARE RECORDED * PRCD2 NOP LDA PERR LOC. OF NEXT ENTRY INTO POSITION * ERROR ARRAY ADA M4000 34000 IS THE LOC. AFTER POSITION * ERROR ARRAY LDB D3674 33674 IS FIRST LOC. IN POSITION * 640 ERROR ARRAY SSA,RSS SKIP IF OK STB PERR RESET POINTER INTO POSITION ERROR * ARRAY TO BEGINNING OF TABLE JMP PRCD2,I RETURN TO CALLING ROUTINE M4000 OCT 144000 (-34000) * * PSET * SET A INTO POSITION ERROR ARRAY * PSET NOP STA PERR,I PLACE ENTRY INTO POSITION ERROR ARRAY ISZ PERR INCREMENT POSITION ERROR ARRAY POINTER JMP PSET,I RETURN TO CALLING ROUTINE DM30 ASC 2,HEAD DM31 ASC 3, ASC 5,SECTORS ASC 3, - PM30 DEF DM30 PM32 DEF DM32 PM33 DEF DM33 SPACI DEF SPACE PERR BSS 1 C6505 ASC 1,-E C6503 ASC 1,-C AD8 BSS 1 RSFLI DEF RSFLG STMSI DEF STMSG MXCYL BSS 1 MENHD BSS 1 HOLDS MAX. HEAD ON WHICH ERROR OCCURED FATAL NOP LDA CAUTN ADA FFLAG SZA CAUTION? JMP FATAL,I YES E120 JSB ERROR FATAL ERROR LDA UNIT AND D7 LIMIT TO 7 ADA D3504 BASE ADDRESS OF FATAL ERROR TABLE ISZ A,I NOP ISZ FERR NOP ISZ FFLAG JMP FATAL,I 6 HED HELP ORG 20000B HELP NOP LDA STAS1 STA STP56 AND B7400 STA TEMPS SAVE STATUS CPA A3400 ADDRESS ERROR? JSB ADDRI,I FIX IT LDA STAS2 AND FAULT STA TMPS2 JSB RPARI,I REPAIR SUBSYSTEM LDA TEMPS CPA A7400 RSS CPA A4000 RSS CPA A7000 JMP HELP1 LDA TMPS2 SZA JMP HELP1 LDA NOWDS SZA HELP1 ISZ HELP JMP HELP,I TMPS2 BSS 1 ADDRI DEF ADDER BINRY NOP STA TEMP5 STORE VALUE TO BE CONVERTED TO BINARY STB TEMP4 STORE ADDR. WHERE STRING IS TO BE INSERTED LDA BINRY,I GET MASK FOR DONT CARE BITS LDA A,I STA BMASK ISZ BINRY UPDATE RETURN ADDRESS CCA STA CONT CONT = -1 STA UPLOW UPLOW = -1 BIN1 ISZ CONT NOP LDA BLANK RESET CHAR. TO INSERT BLANK INTO STRING STA NCHAR LDB CONT BRS,BRS ADB ITABL TAKE CONT DIVIDED BY 4 AND ADD TO INITIAL * TABLE ADDRESS TO DETERMINE IF * NEXT THING OUTPUT SHOULD BE A LDB B,I LDA CONT AND D3 GET CONT MOD 4 ADA JMPSH ADD THIS ONTO JUMP INSTRUCTION STA BIN2 BIN2 JMP * JUMP FOR JUMP TO SELECTED SHIFT INSTRUCTION JMPSH JMP *+1 JMP BIN3 REM=0 BLF REM = 1 BLF REM = 2 BLF REM = 3 BIN3 LDA TYPE AND B SEE IF ENTRY IS A BLANK OR A 0,1 OR D SZA SKIP IF IT IS A BLANK JSB GCHAR GET CHAR., EITHER 0,1 OR D LDA TEMP4,I GET CHAR. PAIR TO BE CHANGED ISZ UPLOW IF UPLOW =-1 BEFORE UPDATE THEN IS UPPER BYTE JMP BIN4 AND B377 SAVE LOWER BYTE ALF,ALF IOR NCHAR PLACE NEW CHAR. IN WORD ALF,ALF STA TEMP4,I PLACE UPDATED CHAR. PAIR BACK INTO STRING V JMP BIN1 BIN4 AND P7400 SAVE UPPER BYTE CHAR. IOR NCHAR PLACE NEW CHAR INTO LOWER BYTE STA TEMP4,I PLACE UPDATED CHAR. PAIR BACK INTO STRING CCA STA UPLOW RESET UPLOW TO INDICATE UPPER BYTE ISZ TEMP4 UPDATE STRING POINTER LDA FINSH CPA TEMP4 SEE IF HAVE INSERTED ALL CHARS. INTO STRING JMP BINRY,I JMP BIN1 LOOP TO INSERT NEXT CHAR. GCHAR NOP LDB TEMP5 GET VALUE OF STATUS WORD RBL SHIFT LEFT ONE BIT STB TEMP5 LDA BMASK GET VALUE OF MASK WORD RAL SHIFT LEFT ONE BIT STA BMASK SLA SKIP IF MASK BIT INDICATES DONT CARE JMP GCHR1 LDA ASC0X JMP GCHR2 GCHR1 LDA ASC00 ASSUME CHAR. IS A ZERO SLB SKIP IF IT IS A ONE LDA ASC01 PLACE ASCII 1 IN A REG. GCHR2 STA NCHAR STORE NEXT ASCII CHAR. JMP GCHAR,I BLANK OCT 40 ASC00 OCT 60 ASC01 OCT 61 ITABL DEF TABL CONT BSS 1 UPLOW BSS 1 NCHAR BSS 1 TEMP5 BSS 1 TEMP4 BSS 1 BMASK BSS 1 TABL OCT 53407,73507,51543 OCT 71543,33441,103 OCT 40004,100 HED BUILD,OPEND * * BUILD * TRANSFERS CODE FROM WD1,WD2,WD3 AND WD4 TO * THE WORK AREA. * ON ENTRY A= NUMBER OF WORDS TO TRANSFER * PT3NI DEF PUT3N BUILD NOP LDB A SAVE COUNT ADB WD0 FORM POINTER TO NEXT WORD STB LOCAL ALF,ALF FORM WORD N ADA OPCTI,I STA B,I STORE INTO TRANSFER AREA JSB PT3NI,I CHECK FOR OVERFLOW LDA WD0 BUL1 INA LDB A,I TRANSFER STB BILD,I TO WORK AREA ISZ BILD CPA LOCAL DONE? JMP BUILD,I YES JMP BUL1 NO * OPEND * CHECKS FOR ABORT (BIT3=0) * OPEND NOP LDA XMCPU SZA,RSS SKIP IF MCPU MODE JSB HELPI,I NOP OPD7 CLA STA FFLAG STA PMASK JSB guSWR SSA SEE IF BIT 15 OF SWR IS SET JMP OPD9A BIT 15 SET , GO TURN IT OFF AND BIT3 SZA SKIP IF BIT 3 = 0 JMP OPEND,I NO,OK LDA D650 JSB TMR,I DELAY 650 MSEC OPD8A JSB SWR GET CURRENT SWITCH REGISTER AND BIT3 SZA SKIP IF BIT 3 = 0 JMP OPDNI,I RESTART OPDSN JMP DONE OPD9A LDA D650 JSB TMR,I WAIT 650 MILLISECS. JSB SWR GET SWITCH REG. CONTENTS ELA,CLE,ERA CLEAR BIT 15 OTA 1 OUTPUT TO SWITCH REG. JMP OPD8A GO SEE IF BIT 3 IS SET HED PACK2,MSCV,RNCH,SWTCH * * * * PACK2 * INPUT TWO CHARACTERS PACKED INTO ONE WORD * SKIPS ON ERROR-FREE EXIT * PACK2 NOP JSB CHAR FIRST CHARACTER JMP PACK2,I ERROR ALF,ALF POSITION TO LEFT CHARACTER STA LOCAL SAVE JSB CHAR SECOND CHARACTER JMP PACK2,I ERROR IOR LOCAL PACK TOGETHER ISZ PACK2 JMP PACK2,I * * THIS ROUTINE TAKES THE NUMBER IN THE A-REG, * DIVIDES BY 064 AND PUTS THE ASCII ( DECIMAL ) * RESULT INTO THE BUFFER AT B. * * MSCV NOP STA TEMP1 LOAD NUMBER OF MILLISECONDS ARS,ARS ARS,ARS ARS,ARS DIVIDE BY 64 JSB DCIN2 CONVERT INTEGER TO DECIMAL ASCII INB STB TEMP2 LDA TEMP1 START ON FRACTION PART AND B77 LEAVE ONLY FRACTION PART CCB B _ -1 ADA MM4 OFFSET TMDL ADA MM6 CLOSE TO 064/10 INB COUNT UP TENTHS PART SSA,RSS SKIP IF TENTHS CALCULATION DONE JMP TMDL ADB ASCD0 MAKE INTO .X STB TEMP2,I STORE JMP MSCV,I RETURN FTR05 OCT 0,1,2,4,10,20,40,100,200,300,400,632 TRT05 EQU * FTR20 DEC 0,1,2,5,8,17,32,65,128,257,512,822 TRT20 EQU * FTR06 OCT 0,1,2,4,10,20,40,100,200,300,400,632 TRT06 EQU * FTR25 D:EC 0,1,2,5,8,17,32,65,128,257,512,822 TRT25 EQU * * * ROUTINE TO PICK A RANDOM CYLINDER AND HEAD NUMBER * * RNCH NOP RNCA EQU * JSB RAND GET A RANDOM NUMBER ALF,ALF ALF,RAL AND B1777 CYL < 1024 STA CYLXI,I SAVE IN CYLINDER REFERENCE WORD CMA ONES COMPLEMENT ADA CYPP CANNOT BE A NON-EXISTANT CYLINDER SSA SKIP IF OKAY JMP RNCA OTHERWISE, TRY AGAIN JSB CYLJI,I TRANSLATE CYLX INTO CYL JSB SWTCH SWITCH RANDOM # BASES * RNCB EQU * JSB RAND GET A RANDOM NUMBER JSB RAND ALF AND B17 HEAD<16 STA HEAD SET HEAD NUMBER JSB SLHDI,I HEAD OK? RSS YES JMP RNCB NO * * ROUTINE TO PICK A RANDOM SECTOR NUMBER * * RNSA EQU * JSB RAND CALL RAND THREE TIMES TO JSB RAND GET THREE GOOD BITS ON RIGHT END JSB RAND WANT NO CORRELATION WITH HEAD NUMBER JSB RAND RAR,RAR DO NOT USE BIT 0(NOT RANDOM) AND MSC2 SECTOR < 64 STA SECTR SAVE SECTOR NUMBER CMA ONES COMPLEMENT ADA SCPT TEST FOR LEGAL SECTOR NUMBER SSA SKIP IF OKAY JMP RNSA OTHERWISE, TRY AGAIN JSB SWTCH SWITCH RANDOM # BASES JMP RNCH,I RETURN * SWTCH NOP REVERSE RANDOM LDA BASE NUMBER BASES LDB TBASE STA TBASE STB BASE JMP SWTCH,I TBASE ABS 034521B CYLJI DEF CYLJ CYLXI DEF CYLX D70 DEC 70 B3000 OCT 13000 S40 BSS 8 HED S3 - SECTION 3 * * * SECTION 3 * * SECTION 3 IS ORGANIZED AS FOLLOWS * * GENERATE RANDOM CYLINDER NUMBERS AND * RANDOM HEAD AND SECTOR NUMBERS * . * . * . GENERATE A RANDOM WORD COUNT * . ( NOT BEYOND END OF CYLINDER ) * . . * . . * . . GENERATE A BUFFER OF RANDOM DATA * . . STORE A WORD OF ZERO INTO THE * . . FIRST UNUSED WORD * . . * . . * . . WRITE BUFFER TO DISC * . . * . . * . . . * . . . ISSUE SEEK * . . . * . . . * . . . READ BLOCK BACK * . . . READ AND CHECK ONE EXTRA WORD IF * . . . NOT A MULTIPLE OF SECTOR SIZE * . . . * . . . * . . . CHECK DATA READ * . . . * . . . * . . * . . * . * . * SKNT EQU GLOB1 S3 EQU * JSB SWR SWITCH REGISTER TO A AND BIT5 LDB M1024 COUNT FOR LONG VERSION SZA SKIP IF INDEED LONG TEST LDB MM64 COUNT FOR SHORT TEST STB SKNT S3A EQU * JSB RNCHI,I GET RANDOM CYLINDER,HEAD NUMBER * * STEP 70 * THIS SEEK MOVES THE POSITIONER TO A RANDOM * CYLINDER AND HEAD. * LDA D70 JSB COPR * GENERATE A RANDOM WORD COUNT BETWEEN 1 AND * 1023. THE WORD COUNT WILL NOT EXTEND BEYOND * THE END OF CYLINDER. RWCA EQU * JSB RAND GET A RANDOM NUMBER RAR AND B1777 WCNT < 1024 SZA,RSS ZERO IS NOT LEGAL JMP RWCA IF ZERO,TRY AGAIN RWCT EQU * STA WCNT SAVE CHOSEN WORD COUNT LDB SCPT IS CMB,INB WORD ADB SECTR COUNT ALF,ALF TOO RAL LARGE? AND B77 ADA B SSA JMP RWCG OK LDA WCNT TRY HALF ARS AS JMP RWCT MUCH RWCG EQU * LDA BPTR LOAD FIRST BUFFER POINTER STA BUFAD LDA BPTS LOAD SECOND BUFFER POINTER STA BUFAE JSB DGEN GENERATE A RANDOM BUFFER LDA WCNT SAVE LAST ADA BUFAD ADD BASE OF WRITE BUFZFER ADA MM1 LDB A,I INA STB A,I SAVE TO CHECK SECTOR ZEROING JSB FSEEK JSB SENDI,I * * STEP 71 * THIS WRITE FILLS UP A GIVEN AREA WITH * RANDOM DATA. THE WORD COUNT MAY BE FROM * ONE WORD TO 1023 WORDS. * LDA D71 JSB COPR JSB SEEH ADDRESS RECORD IN S3 JSB WRITE FILL UP CHOSEN AREA WITH JUNK JSB WENDI,I * * STEP 72 * READ IT BACK * LDA WCNT CHECK FOR SECTOR BOUNDARY AND B177+SZREF CHECK FOR EVEN SECTOR BOUNDARY SZA SKIP IF EVEN MULTIPLE OF SECTOR ISZ WCNT COUNT UP WORD COUNT * LDA D72 JSB COPR * THIS SEEK RESELECTS THE PROPER HEAD JSB SEEH ADDRESS RECORD IN S3 * * THIS READ READS BACK THE DATA WRITTEN * BY THE PREVIOUS WRITE. * THE DATA IS COMPARED WITH THAT WRITTEN. * JSB DENDI,I ISZ SKNT ARE WE DONE WITH THIS SECTION JMP S3A NOT DONE, TRY ANOTHER PLACE JMP SKIPI,I EXIT S3 ********************************************************** * ISSUES WAKEUP COMMAND AND ALLOWS UP TO APPROX. 4 SECS. * TO SEE THAT COMMAND IS RECEIVED. ********************************************************** M2432 DEC -2432 P144A DEF M144A WAKUP NOP WK01 LDA WAKE (WAKE OCT 13000) JSB COMI,I SC47 OTA SC,C LDB M2432 WK05 LDA M256 SC48 SFS SC SEE IF FLAG SET ON THE CONTROLLER RSS JMP SC49 SEE IF COMMAND ACCEPTED INA,SZA JMP SC48 LOOP TO SEE IF FLAG SET AGAIN INB,SZB JMP WK05 LDA UNIT ADA B2060 STA P144A,I LDA B144 ERROR MESSAGE, NEVER GOT FLAG ON COMMAND * AFTER 4 SECS. JSB PRINT JMP TV1I,I EXIT FROM MC MACRO DUE TO ERROR SC49 CLF SC CLEAR OCONTROLLER CHANNEL COMMAND JMP WAKUP,I RETURN TV1I DEF TVP1,I WAKE OCT 13000 B144 OCT 144 TVP19 NOP TVP19 IS THE RANDOM SEEK ENTRY JSB OPNDI,I CHECK FOR ABORT LDA D3 ADA TVP19 STA TV1,I SAVE CORRECT RETURN ADDRESS JSB RNCHI,I GENERATE RANDOM CYL., HEAD,SECTOR TP19A JSB WAKUP ISSUE WAKEUP COMMAND CCA STA MCPU SET MCPU SO WAITS WILL ALLOCATE 1 SEC. FOR * SEEK TO COMPLETE JSB FSEEK ISSUE SEEK CLB STB MCPU RESET MCPU SO OTHER COMMANDS WILL TIMEOUT * BEFORE 1 SEC. IS UP LDA D4 STA FLMSK SET FILE MASK FOR SPARING JSB OMASK JSB SEES DO AN ADDRESS RECORD LDB BIT7 STB MCPU SET SO THAT HOLD BIT IN VERIFY COMMAND WILL * BE RESET CLA,INA STA WCNT ISSUE VERIFY COMMAND FOR 1 SECTOR JSB CYCK JSB WCHK CHECK STATUS LDB B122 STB COPRN JSB POLL ISSUE NOP (POLL) COMMAND JMP TV1I,I HED WADRA,DMAT,DMERQ,PRNT1,PLOOP,FLAG * * WADRA * WADRA NOP JSB DMW START DMA WRITE LDB B36 SET UP CURRENT OPERATION LDA WRITA INITIALIZE DATA COMMAND IOR WRSP SPD FIELD JSB XSFER ISSUE COMMAND JMP WADRA,I EXIT * * * * THIS SECTION SHOULD BE CALLED FOR EACH TRANSFER USING THE * DMA. IT CONTINUOUSLY CHECKS FOR THE FLAG TO BE SET ON THE * COMMAND CHANNEL WHILE MONITORING THE DATA TRANSFER AND * CHECKING FOR OVERTIME. * * * DMAT NOP SC12 OTA SC,C DMATB EQU * LDA STEPN DON'T START CPA D31 DMA FOR STEP 31 RSS DM6B STC DMAD,C LDA MM2 STA LCNT STA DMAWC MUST START <>0 CLA STA NOWDS MUST START = 0 @ HERE INA,SZA,RSS WAIT ATLEAST 500 MILLISECONDS FOR ISZ LCNT READ OR WRITE TO COMPLETE RSS JMP TOUT IF READ NOT COMPLETE SOMETHING WRONG CC04 SFS SC SEE IF READ OR WRITE COMPLETE JMP HERE CLA CC23 CLF CC RESET FLAG DM6G SFC DMAD SKIP IF DMA NOT DONE JMP DMAT,I EVERYTHING IS OK JMP FTCX CALL WORD COUNT CONVERTER TOUT CLA,INA DM6H SFS DMAD CHECK FOR FLAG ON DMA CHANNEL FTCX EQU * IOR BIT15 TRANSFER NOT COMPLETE BIT STA DMRF SAVE FOR LATER CHECK JSB MC TROUBLE. BOMB OUT CARDS DM2K LIA DMAC LOAD CURRENT WORD COUNT SZA,RSS RESIDUE = 0? JMP DMATA YES-DISABLE E13,CHECK FOR E43 ADA WCNT MAKE INTO POSITIVE WORD COUNT AND B7777 MASK OFF UPPER THREE BITS STA DMAWC SAVE WORD COUNT ISZ NOWDS NOT ALL WORDS TRANSFERRED LDB P013A LOAD POINTER FOR ASCII STORE JSB DCIN2 CALL CONVERT ROUTINE JMP DMAT,I RETURN AND WAIT FOR VERDICT DMATA EQU * LDA DMRF SSA XOR JMPI =12DDD0B - BIT 15 OFF,BIT 13 ON STA DMRF JMP DMAT,I DMERQ NOP LDB DMRF CHECK FOR ACTUAL ERROR SZB,RSS SKIP IF ERROR CONDITION EXISTS JMP DMERQ,I EXIT IF NO ERROR SLB,RSS SKIP IF TIME OUT JMP DMER1 E14 JSB ERROR NO FLAG ON TIME OUT JSB FATLI,I DMER1 EQU * LDB DMRF RBL,RBL SSB SKIP IF BIT 13 = 0 E43 JSB ERROR DMA MISSING LDB DMRF CLA STA DMRF CLEAR ERROR INDICATOR SSB,RSS SKIP IF DMA FLAG WAS NOT SET JMP DMERQ,I RETURN * LDA WCNT LOAD THE EXPECTED WORD COUNT LDB P013B LOAD POINTER FOR ASCII STORE JSB DCIN2 CALL CONVERT ROUTINE E13 JSB ERROR XXXX WORDS TRANSFERRED YYYY * EXPECTED LDA STAS1 CHEC640K FOR LEGAL SPD FIELD AND B7400 PROBLEMS BY CHECKING INCODED CPA B3000 PART OF WORD 1 RSS CPA B0000 RSS CPA B0400 JMP DMERQ,I DON'T MASK SPD FIELD LDA STAS1 NO - MASK AND B7777 OFF SPD STA STAS1 FIELD JMP DMERQ,I RETURN * * PRNT1 * EXITS WITH B=MESSAGE ADDRESS * A=MESSAGE LENGTH * PRNT1 NOP STA PSAVE JSB B11CK JMP PRNT1,I ISZ PRNT1 LDB PSAVE LDA ACTAD SZA,RSS SKIP IF CONTENTS OF B REG. = ACTUAL ADDRESS JMP PRNT2 ADB PFMI,I MESSAGE ADDRESS LDB B,I STB PSAVE SAVE ADDRESS PRNT2 CLA STA LOCAL LENGTH COUNTER * * SCAN MESSAGE UNTIL # * PLOOP EQU * LDA B,I NEXT TWO CHARACTERS CPA C1440 21440B = #,BLANK? JMP L1 YES AND B377 NO CPA B43 =#? JMP L2 YES ISZ LOCAL NO ISZ LOCAL ISZ B JMP PLOOP L2 EQU * ISZ LOCAL L1 EQU * LDB PSAVE ADDRESS LDA LOCAL LENGTH JMP PRNT1,I RETURN FLAG NOP LDA MM20K ALLOW ABOUT 150 MILLISECS. LDB COPRN CPB B71 READ WITH OFFSET? CLA,INA FL1 EQU * SC04 SFS SC FOR FLAG TO SET RSS JMP FLAG,I INA,SZA JMP FL1 JSB CUNEN JMP H34SI,I JSB PCOP JSB FATLI,I POSSIBLY FATAL ERROR ISZ FLAG JMP FLAG,I MM20K DEC -20000 * 6 HED ASK,UNXF,CABLK * * ASK * ASK OPERATOR IF HE WISHES TO CHANGE TABLE * ASK NOP JMP H25 H28 LDB FLOOP SZB JSB INPTI,I LDA B31 JSB PRINT JMP H25AA H25 LDA B25 DO YOU WISH TO CHANGE? JSB PRINT H25AA JSB HIN INPUT FROM KEYBOARD LDA BINA,I INPUT BUFFER AND P7400 ALF,ALF CPA NN =116B JMP ASK,I FIRST CHARACTER IS N CPA YY =131B JMP ASK1 FIRST CHARACTER IS Y CPA EE =105B RSS FIRST CHARACTER IS E JMP H28 LIA 1 GET S AND MM5 TURN OFF BIT 2 OTA 1 RESTORE NEW S (IF POSSIBLE) JMP ASK,I ASK1 ISZ ASK JMP ASK,I UNXF NOP SUBROUTINE TO TRANSFER VARIOUS DEVICE * DEPENDENT VALUES INTO BASE PAGE * LOCATIONS STA UNIT STORE CURRENT UNIT NO. ADA UTYPE ADD BASE ADDR. OF UNIT-TYPE TABLE LDA A,I GET TYPE ASSOC. WITH UNIT STA STYPE STORE DEVICE TYPE IN UNIT TABLE ADA TYPTB ADD BASE ADDR. OF TYPE INDEX TABLE LDA A,I GET TABLE ENTRY CORRESPONDING TO GIVEN * DEVICE TYPE STA DRIND ADA DDTB ADD BASE ADDRESS OF DEVICE DEPENDENT TABLE LDA A,I STA UXPT1 FIRST ADDR. OF DEVICE DEPENDENT PARM. TO BE * TRANSFERRED LDA DDTBF FIRST LOC. DEVICE DEPENDENT PARMS. SHOULD * BE TRANSFERRED TO STA UXPT2 UNXF1 LDA UXPT1,I GET DEVICE DEPENDENT PARM. FOR THIS TYPE * OF DEVICE STA UXPT2,I STORE IN BASE PAGE LOC. ISZ UXPT1 UPDATE POINTERS ISZ UXPT2 LDA DDTBL SEE IF HAVE TRANSFERRED ALL THE CPA UXPT2 DEVICE DEPENDENT INFO. JMP UNXp>F2 JUMP IF HAVE TRANSFERRED ALL THE INFO. JMP UNXF1 LOOP AGAIN TO GET THE NEXT PARM. UNXF2 LDA UNIT ADA HDON ADD BASE ADDR. OF HEAD-UNIT TABLE LDA A,I GET HEAD TABLE FOR THIS UNIT STA HDONV STORE HEAD TABLE FOR CURRENT UNIT ON BASE PAGE LDA UNIT JMP UNXF,I CABLK NOP CHECK ADDO BLOCK LDA ABLCK ISZ ABLCK SZA,RSS BLOCKED? JSB ADDOI,I NO JMP CABLK,I HED WEND,SEND,DEND,CYCK * * WEND * JSB WCHK CHECK STATUS * JSB ENDST END STEP * WEND NOP JSB WCHK JSB ENDSI,I JMP WEND,I * * SEND * CLA * STA SHTAS * JSB ENDST * SEND NOP CLA STA SHTAS EXPECTED STATUS = 0 JSB ENDSI,I JMP SEND,I * * DEND * JSB READ * JSB DCHK * JSB ENDST * DEND NOP JSB READ JSB DCHKI,I VERIFY DATA READ JSB ENDSI,I JMP DEND,I CUNIT NOP CLEAR UNIT ERROR COUNTERS LDB MM8 STB LOCAL LDB PUIE,I CUNTA STA B,I INB ISZ LOCAL DONE? JMP CUNTA NO JMP CUNIT,I YES PUIE DEF PUE * * * CYCK * ISSUE CYCLIC CHECK COMMAND * CYCK NOP STA SCNT STORE SECTOR COUNT LDA CYCHK VERIFY COMMAND IOR MCPU SHOULD EITHER = 0 OR BIT7 ON CLB STB NOWDS FOR HELP ROUTINE STB MCPU LDB B22 SET UP CURRENT OPERATION JSB COMDI,I ISSUE COMMAND JSB RJCTI,I CHECK FOR REJECT JMP CYCK,I REJECTED LDA SCNT SC11 OTA SC,C ARS DIVIDE NO. OF SECTORS BY 2 CMA,INA OBTAIN ITS NEG. ADA MM105 ADD -105 TO THIS VALUE LDB CYC1I GET ADDRESS TO USE FOR RETURN FROM WAITS STB WAITI,I PLACE IN RETURN LOC. IN WAITS JMP WAXI,I CYCK1 LDA XMCPU SZA,RSS <SKIP IF IN MCPU MODE JSB FXITI,I JMP CYCK,I RETURN CYC1I DEF CYCK1 HED DSOK,FTRDF,PRTHD,CYCCD,SUNIT * * DSOK * * D AND S BITS OK? * A IS SAME ON EXIT = NO * A IS ZERO ON EXIT = YES * DSOK NOP LDB SPDVR SZB JMP DSOK,I LIB 1 GET S SLB,RSS BIT 0 SET? JMP DSOK,I NO LDB A YES - SAVE A LDA STAS1 AND P7770 WIPE OFF UNIT NUMBER CPA J0000 =110000? RSS YES CPA D0400 =030400? JMP DSOK2 YES LDA B RESTORE A JMP DSOK,I DSOK2 CLA SET A=0 STA DMRF IGNORE DMA ERRORS STA NOWDS IGNORE WORDS TRANSFERRED STB DMAWC JMP DSOK,I FTRDF NOP FLAG TRACK DEFECTIVE CLA STA SECTR JSB FSEEK LDA CYL STA TCYL1 SAVE CYL LDA MM1 STA CYL CYL = -1 LDA DFTB DEFECTIVE TRACK INDICATOR JSB DGENI,I GENERATE BUFFER JSB SEES LDA TCYL1 STA CYL RESTORE CYL LDA WDPT STA WCNT JSB WADRI,I WRITE ONTO DISC JSB WCHK CLA STA SHTAS RESET STATUS LDA STEPN CPA D5 STEP = 5? JMP FTRDF,I YES - DON'T PRINT LDA CYL LDB P114A JSB DCIN2 STUFF CYL INTO MESSAGE LDA HEAD LDB P114B JSB DCIN1 STUFF HEAD INTO MESSAGE H114 LDA B114 CYL X HEAD Y FLAGGED DEFECTIVE JSB FPRNT JMP FTRDF,I PRTHD NOP LDA LONGF SEE IF WANT EXPANDED FORM OF OUTPUT SZA,RSS JMP PRTH1 DONT PRINT HEADING LDA B135 JSB PRINT PRINT HEADING FOR STATUS WORDS PRTH1 LDA B64 JSB FPRNT PRINT STATUSES LDA EXPTS SZA,RSS =1 IMPLIES EXPLAINATION WANTED JMP PRTHD,I RETURNS FOR EXPLAINATION NOT WANTED LDA B137 JSB PRINT JMP PRTHD,I CYCCD NO4P LDB BUFAD GET BASE ADDRESS OF WRITE BUFFER LDA PATT GET PATTERN TO EXPAND STA B,I STORE IN BUFFER INB INCREMENT WRITE BUFFER POINTER RAL ROTATE PATTERN 1 BIT STA B,I STORE IN WRITE BUFFER INB INCREMENT WRITE BUFFER POINTER RAL ROTATE PATTERN 1 BIT AND MM2 SET LSB = 0 STA B,I STORE IN WRITE BUFFER INB LDA BUFAD GET BASE ADDRESS OF WROTE BUFFER STA XXX2 LDA WWCNT CMA,INA -(NO. OF WORDS TO XFER) ADA D3 REDUCE NO. BY 3 FOR WORDS ALREADY * IN BUFFER STA XXX1 SAVE COUNTER CYCD1 LDA XXX2,I GET SOURCE WORD STA B,I PLACE IN DESTINATION LOCATION ISZ XXX2 INB INCREMENT DESTINATION POINTER ISZ XXX1 SEE IF DONE JMP CYCD1 GO TO XFER NEXT WORD JMP CYCCD,I RETURN FOR ALL WORDS XFERRED SUNIT NOP STORE UNIT IN H65 LDA UNIT ADA ASCZZ ALF,ALF AND P7400 =177400 IOR B54 STA P065E,I LEAST SIGNIFICANT DIGIT,COMMA JMP SUNIT,I HED RPAIR,RCHK1,TSTAT,TSOUT,PT625,RQSTA RPAIR NOP REPAIR SUBSYSTEM SZA,RSS JMP RPAR1 JSB RESET JSB STMSK AND FAULT (A=STAS2) STA CAUTN CLB,RSS RPAR1 EQU * LDB RMASK TIMEOUT? CLA STA RMASK SZB SKIP IF NO JSB STMSK SET MASK JMP RPAIR,I * * RCHK1 * FORM BUFFER CHECKSUM * RCHK1 NOP LDB BUFAE LOAD BUFFER POINTER LDA MM124+SZREF STA TEMP1 SET COUNT FOR ADD LOOP LDA B,I LOAD FIRST WORD INB ADA B,I MAKE CYLINDER CHECK INB STA TEMP2 SAVE CYLINDER CHECK LDA B,I INB ADA B,I MAKE HEAD/SECTOR CH8ECK INB STA TEMP3 SAVE HDS CHECK ADA TEMP2 CHECKSUM SO FAR * RCQ EQU * ADA B,I ADD UP ALL WORDS INB ISZ TEMP1 COUNT DOWN COUNTER JMP RCQ STA TEMP1 SAVE CHECKSUM JMP RCHK1,I RETURN TSTAT NOP LDA EXPTS SZA,RSS SEE IF SHOULD EXPLAIN TERM. STATUS JMP TSTAT,I RETURN IF EXPLANATION NOT WANTED LDA STAS1 GET RETURNED STATUS-1 WORD ALF,ALF AND B37 STA XXX1 LDB P137A GET ADDRESS TO INSERT EXPLANATION AT JSB TSOUT INSERT EXPLANATION INTO MESSAGE STRING LDA SHTAS SEE WHAT TERM. STATUS SHOULD BE ALF,ALF AND B37 ONLY SAVE TERM. STATUS STA XXX2 SAVE FOR FUTURE REFERENCE LDB BLNKS PLACE ASCII " S" IN B REG. XOR XXX1 SEE IF TERM. STATUS IS WHAT IT SHOULD BE SZA,RSS SKIP IF IT IS NOT JMP TSTA1 TERM. STATUS IS OK STB P137B,I PLACE ASCII " S" IN MESSAGE STRING LDA XXX2 GET WHAT TERM. STSTUS SHOULD BE LDB P137C GET ADDRESS TO XFER TERM. STATUS EXPLAINATION TO JSB TSOUT XFER TERM. STATUS EXPLANATION TO MESSAGE STRING JMP TSTAT,I RETURN TO CALLING ROUTINE TSTA1 LDB BLKLB PLACE ASCII " #" IN B REG. STB P137B,I PLACE IN MESSAGE STRING JMP TSTAT,I RETURN TO CALLING ROUTINE BLNKS ASC 1, S BLKLB ASC 1, # P137A DEF M137A P137B DEF M137B P137C DEF M137C TSOUT NOP ADA TSTBL ADD BASE ADDRESS OF TERM STATUS EXPLAN. TABLE LDA A,I GET TERM. STATUS EXPLANATION STA TSOT2 STB TSOT3 SAVE DESTINATION ADDRESS LDB MM7 COUNTER TSOT1 LDA TSOT2,I GET FIRST CHAR. PAIR STA TSOT3,I STORE CHAR. PAIR ISZ TSOT2 BUMP POINTER ISZ TSOT3 BUMP POINTER FOR DESTINATION ADDRESS ISZ B SEE IF ALL CHAR. PAIRS HAVE BEEN MOVED B JMP TSOT1 GO GET NEXT CHAR. PAIR JMP TSOUT,I RETURN TO CALLING RUTINE TSTBL DEF TSNUM TSOT2 BSS 1 TSOT3 BSS 1 TS0 ASC 7,UNKNOWN STATUS TS1 ASC 7,NORMAL COMPLET TS2 ASC 7,ILLEGAL OPCODE TS3 ASC 7,UNIT AVAILABLE TS4 ASC 7,CYL CMP ERROR TS5 ASC 7,UNCOR DATA ERR TS6 ASC 7,HD/SEC CMP ERR TS7 ASC 7,END OF CYLNDER TS8 ASC 7,OVERRUN TS9 ASC 7,POSS CORR DATA TS10 ASC 7,SPR TRK ACCESS TS11 ASC 7,DEFECTIVE TRK TS12 ASC 7,ACCSS NR DATOP TS13 ASC 7,STATUS-2 ERROR TS14 ASC 7,WRT PROTEC TRK TS15 ASC 7,UNIT UNAVAIL TS16 ASC 7,DRIVE ATTNTION TSNUM DEF TS1 00 DEF TS2 01 DEF TS3 02 DEF TS0 03 DEF TS0 04 DEF TS0 05 DEF TS0 06 DEF TS4 07 DEF TS5 10 DEF TS6 11 DEF TS0 12 DEF TS0 13 DEF TS7 14 DEF TS0 15 DEF TS8 16 DEF TS9 17 DEF TS10 20 DEF TS11 21 DEF TS12 22 DEF TS13 23 DEF TS0 24 DEF TS0 25 DEF TS14 26 DEF TS15 27 DEF TS0 30 DEF TS0 31 DEF TS0 32 DEF TS0 33 DEF TS0 34 DEF TS0 35 DEF TS0 36 DEF TS16 37 * PT625 NOP A = .625 * A STA TEMP1 ALS,ALS ADA TEMP1 ARS,ARS A = (10*A)/16 ARS JMP PT625,I RQSTA NOP LDA RQADD REQUEST DISC ADDRESS LDB COPRN JSB COMDI,I JSB RJCTI,I NOP SC29 LIA SC,C STA RCYL JSB FLAGI,I JMP RQ2 E102 JSB ERROR NO FLAG GETTING ADDRESS RQ2 EQU * SC30 LIA SC,C STA RHDS JMP RQSTA,I B137 OCT 137 TCYL1 BSS 1 DGENI DEF DGEN1 P114A DEF J114A P114B DEF J114B UNENT BSS 1 UXPT1 BSS  1 UXPT2 BSS 1 PNDSN ASC 1,# HED DRIVE DEPENDENT TABLES ITTB OCT 2 7906 OCT 1 7920 OCT 0 7905 OCT 3 7925 OCT 3 UNUSED OCT 3 UNUSED OCT 3 UNUSED OCT 3 UNUSED DHTB OCT 7 OCT 37 OCT 17 OCT 777 UHTB OCT 3,3,3,3,3,3,3,3 UTTB BSS 8 UHCTB BSS 8 ATTB ASC 1,05 ASC 1,20 ASC 1,06 ASC 1,25 RW48 BSS 6 RW64 BSS 8 CTTB DEF TRT05 DEF TRT20 DEF TRT06 DEF TRT25 DDTBP DEF DDTB0 DEF DDTB1 DEF DDTB2 DEF DDTB3 DDTB0 EQU * DEC 411 CYPP DEF FTR05 LOC. OF FIRST ENTRY IN 7905 CYL. TABLE DEC 48 SCPT DEC 3 TRPC DEC -3 MHEAD DEC 410 LASTC OCT 77 MSC2 DEC 6144 WDPT DEC -2432 SVCTV DEC 14 POSITIVE OFFSET (POFST) OCT 7 DHD6 VALID HEADS FOR 7905 DDTB1 EQU * DEC 823 CYPP DEF FTR20 LOC. OF FIRST ENTRY IN 7920 CYL. TABLE DEC 48 SCPT DEC 5 TRPC DEC -5 MHEAD DEC 822 LASTC OCT 77 MSC2 DEC 6144 WORDS /TRACK (WDPT) DEC -1216 SVCTV DEC 32 POSITIVE OFFSET (POFST) OCT 37 DHD6 VALID HEADS FOR 7920 DDTB2 DEC 411 CYPP DEF FTR06 LOC. OF FIRST ENTRY * IN 7906 CYL. TABLE DEC 48 SCPT DEC 4 TRPC DEC -4 MHEAD DEC 410 LASTC OCT 77 MSC2 DEC 6144 WDPT DEC -2432 SVCTV DEC 14 POSITIVE OFFSET (POFST) OCT 17 DHD6 DDTB3 DEC 823 CYPP DEF FTR25 LOC. OF FIRST ENTRY IN * 7925 CYL. TABLE DEC 64 SCPT DEC 9 TRPC DEC -9 d MHEAD DEC 822 LASTC OCT 77 MSC2 DEC 8192 WORDS/TRACK (WDPT) DEC -1216 SVCTV DEC 32 POSITIVE OFFSET (POFST) OCT 777 DHD6 VALID HEADS FOR 7925 OCT 155555 OCT 177777 OCT 125252 OCT 055555 OCT 007417 OCT 170360 OCT 162745 OCT 0 OCT 163346 OCT 022222 PATTR EQU * HED WAITS,PUT23,TVP24,MWCHK,TEOC,TV2ST * THE WAITS ROUTINE WAITS FOR UP TO 105 MILLISECONDS * FOR THE CHANNEL FLAG. WHEN THE FLAG SETS, * WAITS CALLS STAT FOR THE STATUS * WAITS NOP LDA MM105 LDB MCPU SSB LDA M7936 ALLOW LONGER TIME IF SEEK AND IN MCPU MODE WAX EQU * STA LCNT SET EXTRA CLOCK COUNTER CLA,INA STA STAS2 STARTS BUSY LDA COPRN GET CURRENT OPERATION CPA B44 SEE IF IT IS A SEEK RSS JMP CC05 SC53 STC SC ENALBE FLAGS FROM SEEK COMPLETIONS WASD EQU * CLA,INA JSB TMR,I ONE MSEC TIME DELAY LDA COPRN CPA B44 SEEK? SC34 CLC SC STOP FLAG CC05 SFS CC SKIP IF SEEK DONE RSS NO JMP WASG YES LDB MCPU CPA B44 INB,SZB,RSS JMP WASR NO LDA STAS2 SLA,RSS HAS BEEN BUSY? JMP WASQ NO JSB STAT YES - CHECK IT NOW JSB POLL LDA STAS2 SLA BUSY? JMP WASQ WASF LDA LCNT CALCULATE ADA D106 TIME SPENT BEFORE FLAG SET, ADA SVCTA ADD TO ACCUMULATED AMOUNT STA SVCTA AND SAVE IT LDA STAS2 SLA,RSS DONE? JMP WASQ NO CC22 CLF CC RESET FLAG WASZ LDA COPRN CPA B100 REQUEST SYNDROME? RSS YES - NO STATUS JSB STAT CALL FOR STATUS CLB STB MCPU DONT ALLOW 1 SEC. TIMEOUT FOR OTHER COMMANDS  JMP WAITS,I WASR CPA B44 SEEK? WASQ EQU * SC35 STC SC ISZ LCNT SKIP WHEN TIMED OUT JMP WASD KEEP LOOPING JSB MC WIPE OUT THE CARDS JSB PCOP PRINT CURRENT OPERATION MESSAGE E10 JSB ERROR NO FLAG FOLLOWING OPERATION JSB FATLI,I POSSIBLY FATAL ERROR JSB ADDOI,I JMP WASZ WASG LDA STAS2 SLA,RSS HAS BEEN BUSY? JMP CC22 NO JMP WASF YES PPT24 JSB TV24,I PUT23 LDA OPCNT GET OPCODE ADA MM71 CONVERT TO NOS. FROM 0 TO 5 ADA SRTBL ADD BASE OF SAVE/RESTORE TABLE LDA A,I STA WD2 LDA PPT24 XFER VECTOR STA WD1 LDA D3 3 WORD INSTRUCTIPON JMP PT1FI,I PT1FI DEF PUT1F TVP24 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP24,I SSA JMP TP24B LDB CYL STB A,I SAVE CYLINDER INA LDB HEAD STB A,I SAVE HEAD INA LDB SECTR STB A,I SAVE SECTOR TP24A ISZ TVP24 ISZ TVP24 JMP TVP24,I TP24B ELA,CLE,ERA CLEAR BIT 15 LDB A,I STB CYL RESTORE CYL. VALUE INA LDB A,I STB HEAD RESTORE HEAD VALUE INA LDB A,I STB SECTR RESTORE SECTOR VALUE JMP TP24A SRTBL DEF *+1 DEF SET00 DEF SET01 DEF SET02 DEF SET00,I DEF SET01,I DEF SET02,I SET00 BSS 3 SET01 BSS 3 SET02 BSS 3 * * MWCHK * MASK OFF UNIT PART OF STATUS WORD ONE * AND CHECK STATUS * MWCHK NOP LDA MASK1 AND MM8 =177770 STA MASK1 JSB WCHK LDA MASK1 IOR D7 STA MASK1 JMP MWCHK,I * TEOC NOP TEST FOR END OF CYLINDER LDA HDONV GET HEADS IN HEAD TABLE FOR SELECTED UNIT AND B3 CPA B3 SEE IF HEADS 0 AND 1 IN HEAD TABLE 1<:6RSS JMP TEOC,I RETURN IF THEY ARE NOT CLA SET CURRENT HEAD = 0 STA HEAD LDA D256 STA WCNT WORD COUNT = 256 LDA SCPT ADA MM1 STA SECTR SECTOR = 47 JSB FSEEK SEEK JSB READ READ LDA CCHK SZA LDA A6000 STA SHTAS STATUS IS END OF CYLINDER JSB DMRFC INCOMPLETE TRANSFER OK JSB WCHK CHECK STATUS JMP TEOC,I TV2ST NOP SET UP STA CYL CLA STA SECTR LDA SCPT STA TNUM LDA MM5 STA PLIMT JMP TV2ST,I 3< HED TVP5,SUR0,CPBB,PUT25,TVP25 * * * TVP5 CB * TVP5 NOP JSB OPNDI,I LDA TVP5,I WD2 STA WCNT ISZ TVP5 LDA TVP5,I WD3 STA TNUMP ISZ TVP5 JSB DCHKI,I COMPARE BUFFERS ISZ TVP5 JMP TVP5,I FRMHD BSS 1 TOHD BSS 1 SUR0 NOP LDB XXX2 GET "TO HEAD" STB TOHD STORE FOR FUTURE USE LDB XXX1 GET "FROM HEAD" STB FRMHD STORE AWAY FOR FUTURE USE BLF,BLF CPA B116 OPCODE = 116 => CP JMP CPBB STB HDS1 PLACE IN IS INSTRUCTION CLB STB RTA37 INITIALIZE RETURN COUNTER CPA B117 =TC JMP SURBB STB RTBB STB CYL1 INITIALIZE RETURN TO BB COUNTER AND * INITIAL CYL. NO. SURBB JSB TV1,I IS,Z CYL1 OCT 0 HDS1 OCT 0 OCT 14 CYL2 OCT 0 HDS2 OCT 0 OCT 3414 JSB TV10,I SC,XXX1111100000000,0000000001X00000 OCT 17400,100,17777,177737,3021 JSB SURA0 CA,A0 JSB TV15,I RT,BB,410 RTB1 OCT 632 RTBB OCT 0 JMP SURBB OCT 2430 JMP SUR0,I SURA1 NOP SB,A1 JSB TV2,I RL OCT 1026 JSB TV10,I SC,XXX1111100000000,000000000XX00000 OCT 17400,0,17777,177637,3021 JSB TV4,I RF,828 OCT 1474 OCT 1436 JSB TV10,I SC,0000000000000000,000000000XX00000 OCT 0,0,177777,177637,3021 JMP SURA1,I LV,A1 SURA0 NOP SRA01 JSB SURA1 CA,A1 JSB TV8,I TB,828 OCT 176304 OCT 1472 JSB SURA1 CA,A1 LDA TOHD STA HEAD JSB TV2,I RL OCT 1026 JSB TV17,I SM OCT 2,1440 JSB TV5,I CB,828,3 OCT 1474,3,2001 JSB TV4,I WF,828 OCT 1474 OCT 1435 JSB TV10,I . SC,0000000000000000,000000000XX00000 OCT 0,0,177777,177637,3021 JSB SURA1 CA,A1 JSB TV2,I RL OCT 1026 JSB TV17,I SM OCT 2,1440 JSB TV5,I CB,828,3 OCT 1474,3,2001 JSB TV4,I CS,6 OCT 6,1477 LDA FRMHD STA HEAD JSB TV15,I RT,A3,7 OCT 7 RTA37 OCT 0 JMP SRA01 OCT 2430 JMP SURA0,I CPBB STB HDSP1 CLA STA CYLP1 STA CRTBB STA CRTAA INITIALIZE RETURN COUNTERS CPBB0 JSB TV1,I IS,,Z CYLP1 OCT 0 HDSP1 OCT 0 OCT 14 CYLP2 OCT 0 HDSP2 OCT 0 OCT 3414 JSB CPA0 CA,A0 JSB TV15,I RT,BB,410 OCT 632 CRTBB OCT 0 JMP CPBB0 OCT 2430 JMP SUR0,I CPA0 NOP CPAA JSB TV2,I RL OCT 1026 JSB TV4,I OCT 1474,1436 JSB TV8,I TB,828 OCT 176304 OCT 1472 LDA TOHD STA HEAD HEAD = TOHD JSB TV2,I RL OCT 1026 JSB TV4,I RF,828 OCT 1474,1436 JSB TV5,I CB,828,3 OCT 1474,3,2001 JSB TV4,I CS,6 OCT 6,1477 LDA FRMHD STA HEAD HEAD = "FROM HEAD" JSB TV15,I RT,AA,7 OCT 7 CRTAA OCT 0 JMP CPAA OCT 2430 JMP CPA0,I LV,A0 PUT25 LDA PPT25 TC STA WD1 STORE XFER VECTOR JSB CHAR GET FIRST CHAR. JMP IPT1A,I ERROR JSB PT1GI,I CHECK FOR COMMA JSB DCHAR GET INITIAL ADDRESS JMP IPT1A,I ERROR ISZ DFLT SKIP IF NO CYL. ENTERED RSS JMP IPT1A,I ERROR(CYL. MUST BE ENTERED) STA WD2 JSB DCHAR GET "FROM HEAD" JMP IPT1A,I ERROR ISZ DFLT SKIP IF NO "FROM HEAD" GIVEN RSS JMP IPT1A,I ERROR("FROM HEAD" MUST BE gGIVEN) STA WD3 JSB DCHAR GET "TO HEAD" RSS JMP IPT1A,I ERROR JSB PT1EI,I SEE IF ERROR OR DONE ISZ DFLT SKIP IF NO "TO HEAD" GIVEN RSS JMP IPT1A,I STA WD4 LDA D5 JMP PT1FI,I IPT1A DEF PUT1A PT1GI DEF PUT1G PT1EI DEF PUT1E PPT25 JSB TV25,I TVP25 NOP LDA RTB1 GET LOOP COUNT FOR NOT WANT * TO REPEAT STA RTBB SET SO NOT REPEAT LDA TVP25,I STA CYL1 SET CYL. TO CORRECT VALUE ISZ TVP25 SET POINTER AT "FROM HEAD" LDA TVP25 STA TV22,I SET CORRECT RETURN ADDRESS JMP T22P1,I FOR OTHER ROUTINE T22P1 DEF TVP22+1 CCHSI DEF CHCHS ILFVI DEF ILFV TV2UI DEF TVP2U * * TVP1 AR,CR,DS,IS,SK * TVP1 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP1 STA LOCAL LDA TVP1,I WD2 STA CYL CYLINDER ISZ TVP1 LDA TVP1,I WD3 AND B377 STA SECTR SECTOR LDA TVP1,I ALF,ALF AND B377 STA HEAD HEAD ISZ TVP1 LDA TVP1,I WD4 ISZ TVP1 TVP1M AND B377 OP CODE STA XXX1 STORE OP CODE ADA TPNTI,I LDA A,I JMP A,I TPNTI DEF TPONT TVP1H EQU * JSB CCHSI,I JSB SEES LOAD RAR JMP TVP1,I EXIT TVP1T JSB CCHSI,I TVP1D EQU * JSB SEEK SEEK JSB WAITI,I WAIT FOR SEEK TVP1L LDA TVP1,I NEXT TRANSFER VECTOR JSB TP1GI,I CHECK STATUS JMP TVP1,I EXIT TVP1B SZA,RSS LDA CYPP ADA MM1 DECREMENT CYL TVP1E STA LOCAL,I CHANGE WD2 JMP TVP1D TVP1C JSB CCHSI,I LDA CYL INA INCREMENT CYLINDER CPA CYPP CLA JMP TVP1E TVP1K LDA CYL STA WCNT JSB CCHSI,I JSB COLDI,I PERFORM COLD LOAD READ JMP TVP1L COLDI DEF COLD1R TVP20 NOP LDA TVP20 STA TVP2 RSS * * * TVP2 CL,DA,F0,F1,F2,F3,F4,F5,F6,FH,NO,RA,RC,RL,RS,ST * V0,V1,V2,V3,V4,V5,V6,VH * TVP2 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP2,I WD2 ISZ TVP2 CLB JMP TVP1M TP2HH CLA,INA STA DISCK JMP TVP2,I TP2GG JSB RESET CLEAR TVP2G LDA TVP2,I JSB TP1GI,I CHECK STATUS JMP TVP2,I TVP2A JSB RNCHI,I RS, RANDOM CYLINDER AND HEAD LDA TVP2 STA TVP1 JMP TVP1T TVP2E LDA TVP2 RL STA TVP1 JMP TVP1T TVP2F JSB OSTAT ST JMP TVP2G TP2KK INB F8 TP2LL INB F7 TP2BB INB F6 TP2AA INB F5 TVP2Z INB F4 TVP2V INB F3 TVP2K INB F2 TVP2J INB F1 TVP2H STB HEAD F0 ADB MHEAD LDA FX SSB,RSS JMP ILFVI,I JSB TV2RI,I FORMAT AND VERIFY JMP TVP2,I TP2MM INB V8 TP2NN INB V7 TP2FF INB V6 TP2EE INB V5 TP2DD INB V4 TP2CC INB V3 TVP2Q INB V2 TVP2N INB V1 TVP2L STB HEAD V0 ADB MHEAD LDA VX SSB,RSS JMP ILFVI,I JSB TV2UI,I VERIFY JMP TVP2,I TVP2P JSB SEEKH JMP TVP2G TV2RI DEF TVP2R VX ASC 1,V0 FX ASC 1,F0 TVP21 NOP JSB OPNDI,I CHECK FOR ABORT LDA TVP21,I GET NO. OF MILLISEC. DELAY JSB TMR,I CALL TIMING ROUTINE TO WAIT ISZ TVP21 ISZ TVP21 JMP TVP21,I GO EXECUTE NEXT COMMAND TVP23 NOP JSB OPNDI,I CHECK FOR ABORT ISZ TVP23,I UPDATE COUNTER NOP LDA TVP23,I ISZ TVP23 INCREMENT TO LABEL LDB TVP23,I GET SYMBOL STB MSG01 PLACE IN MESSAGE JSB DECIN CONVERT TO ASCII LDA CVT3 PLACE MSD IN MESSAGE STA MSG02 LDPA CVT1 PLACE MIDDLE DIGITS IN MESSAGE STA MSG03 LDA CVT2 PLACE LSD IN MESSAGE STA MSG04 LDB MSG00 GET ADDRESS OF MESSAGE LDA D10 GET LENGTH OF MESSGE JSB SIOLO,I OUTPUT MESSAGE ISZ TVP23 ISZ TVP23 JMP TVP23,I MSG00 DEF MSG01 MSG01 ASC 2,XX MSG02 ASC 1,XX MSG03 ASC 1,XX MSG04 ASC 2,XX HED TRKCH,RWTAB TRKCH NOP LDA DRIND GET DRIVE INDEX NO. ADA DUMPT ADD BASE ADDRESS OF DUMP TABLE LDA A,I GET START OF TABLE FOR THIS DRIVE TYPE ADA D5 LDA A,I GET NEG. VALUE OF NO. OF TRACKS * THAT MUST BE GOOD ADA CYPP ADD NO. OF CYL. PER PACK CMA,INA NEGATE RESULT STA TLIMT STORE NEG. VALUE OF NO. OF DEFECTIVE * TRACKS ALLOWED JMP TRKCH,I HED PCHK,PCHE * * PCHK ROUTINE. * THIS ROUTINE CHECKS THE ENTIRE READ BUFFER FOR * EQUALITY WITH THE WORD IN PATT. * PCHK NOP * LDA PCHK LOAD RETURN ADDRESS STA WCHK SAVE FOR POSSIBLE CALL JSB DSOKI,I CHECK D AND S BITS SZA,RSS ABORT? JMP WRERX YES CLA STA DERR ERROR FLAG STA DFRST FIRST TIME PCHB EQU * LDA D3 STA NUMP PRINT FIRST THREE ERRORS * LDB NOWDS LDA DMAWC ACTUAL WORDS TRANSFERRED SZB,RSS SKIP IF TRANSFER IS INCOMPLETE LDA WCNT LOAD BUFFER LENGTH STA PWCNT SAVE WORD COUNT STA PWORD SAVE TWO COPIES LDB CTYP SSB,RSS JMP PCHQ NO LIB 6 CPB MM1 JMP PCHM YES PCHQ ARS,ARS DIVIDE BY EIGHT ARS ( FOR EIGHT UNIT LOOP ) SZA,RSS JMP WRERX STOP IF ZERO CMA,INA TWOS COMPLEMENT STA TEMP3 SET COUNTER FOR LOOP LDA PATT LOAD COMPuARISON WORD LDB BUFAE LOAD READ BUFFER ADDRESS * * BEGINNING OF THE LOOP * PCHL EQU * CPA B,I CHECK FOR MATCH WITH BUFFER INB,RSS COUNT UP BUFFER ADDRESS AND SKIP JSB PCHE MIS-COMPARE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE CPA B,I INB,RSS JSB PCHE ISZ TEMP3 COUNT OUT JMP PCHL NOT DONE, CONTINUE CHECKING * PCHZ LDA DERR SZA ANY ERRORS? JMP PCHX YES LDA DFRST NO - FIRST TIME? SZA JMP WRERX NO LDA STAS1 AND B7400 CPA A7400 CORRECTABLE DATA ERROR? JMP PCHX YES JMP WRERX NO BUFFER ERRORS, CHECK STATUS * * PCHE NOP STB TEMP2 POINTER - IS LDA PATTI SET UP STA TEMP1 SHOULD BE PART OF ERROR MESSAGE LDA BUFAE CMA,INA ADA TEMP2 A = WORD NUMBER STA PCHP PCHE1 JSB EE47I,I REPORT ERROR SZA,RSS JMP PCHX DONE STA NUMP LDB TEMP2 INB LDA PATT JMP PCHE,I CONTINUE PCHX JSB DCNDI,I JMP PCHB PATTI DEF GLOB4 EE47I DEF EE47 DCNDI DEF DCEND * PCHM CLB LDA M32K IF 32K OF MEMORY & IS * CALLED FROM SECTION 2 & * IS 48 BIT PATTERN, THEN * OFFSET BUFFER BY AN AMOUNT * SO WILL AGREE ON THE WORD * ON WHICH THE 48 BIT PATTERN * STARTS SZA,RSS SKIP IF 32K OF MEMORY JMP PCHMX LDA S2SBI SEE IF CALLED FROM LOC. IN * SECTION 2 CPA PCHK RSS SKIP IF FROM SECTION 2 JMP PCHMX LDA PTNXI,I SEE IF 48 BIT PATTERN CPA MM10 CPA MM10 RSS JMP PCHMX LDB SECTR RBL ADB BPTR RSS PCHMX ADB BUFAD ADD BASE ADDRESS OF WRITE BUFFER STB SBFAD LDA BUFAE READ BUFFER PCHM1 OCT 105776 ** CMW INSTRUCTION ** DEF PWCNT WORD COUNT OCT 0 RESERVED FOR MICROCODE JMP PCHZ OK - EXIT NOP ERROR EXIT 1 LDB BUFAE READ BUFFER BASE ADDRESS CMB,INB NEGATE BASE ADDRESS ADB A ADD LOCATION IN ERROR STB PCHP NO. OF THE WORD IN ERROR STA TEMP2 ADDRESS OF WORD IN ERROR ADB SBFAD STB TEMP1 SHOULD BE WORD POINTER LDA PCHP A = NO. OF WORD IN ERROR LDB PCH2I STB PCHE STORE RETURN ADDRESS * FOR SUBROUTINE WE ARE GOING * TO JUMP INTO JMP PCHE1 PCH2I DEF PCHM2 PCHM2 ISZ PCHP LDA PCHP CPA PWCNT DONE? JMP PCHZ YES CMA,INA NO ADA PWORD STA PWCNT WORD COUNT LEFT LDB SBFAD ADB PCHP LDA BUFAE ADA PCHP JMP PCHM1 PWCNT BSS 1 PWORD BSS 1 PCHP BSS 1 SBFAD BSS 1 S2SBI DEF S2SB PTNXI DEF PTNX RWTAB NOP LDB RWT48 LDA SCPT SEE HOW MANY SECTORS /TRACK CPA D64 LDB RWT64 IF 64 SECTORS /TRACK USE A * DIFFERENT TABLE STB RWTBL STORE BASE ADDRESS OF TABLE LDA M32K SEE IF 32K OF MEMORY SZA SKIP IF NOT 32K OF MEMORY JMP RWTB1 LOAD DIFFERENT VALUES FOR LARGER * AMOUNT OF MEMORY LDA D1024 STA WWCNT NO. O<F WORDS WRITTEN AT ONE TIME LDA D8 STA NSECT NO. OF SECTORS WRITTEN AT ONE TIME LDA D3 STA NLOOP NO. OF TIMES TO LOOP IN * EXPANSION OF BUFFER JMP RWTAB,I RETURN TO CALLING ROUTINE RWTB1 LDA WDPT GET NO. OF WORDS /TRACK STA WWCNT NO. OF WORDS TO WRITE ON TRACK LDA SCPT STA NSECT NO. OF SECTORS TO WRITE /TRACK LDB D5 CPA D64 SEE IF 64 SECTORS/TRACK INB INCREMENT B IF 64 SECTORS/TRACK STB NLOOP NO. OF TIMES TO LOOP IN * EXPANSION OF BUFFER JMP RWTAB,I RETURN TO CALLING ROUTINE HED OPERATOR DESIGN TABLES * * CODE GENERATOR TRANSFER TABLE * OTBLE DEF POUT1 AR DEF POUT5 CB DEF POUT4 VF DEF POUT2 FH DEF POUT6,I DB DEF POUT1 DS DEF POT11,I EE DEF POUT7,I EN DEF POT12,I EP DEF POUT3,I GO DEF POT10,I HT DEF POUT9 ID DEF POUT1 IS DEF POUT3,I LB DEF POUT4 RD DEF POUT2 CL DEF POUT2 RS DEF POT16 SC DEF POUT8,I SD DEF POUT1 SK DEF POUT4 WD DEF POT14,I LP DEF POUT2 RL DEF POUT2 ST DEF POT15,I RT DEF POUT2 F0 DEF POUT2 F1 DEF POUT2 V0 DEF POUT2 V1 DEF POUT4 WF DEF POUT4 RF DEF POUT2 RC DEF POT17 SM DEF POUT4 RW DEF POUT2 F2 DEF POUT2 V2 DEF POUT2 VH DEF POT18 RO DEF POT19,I EX DEF POUT2 F3 DEF POUT2 DA DEF POUT2 NO DEF POUT2 RA DEF POUT2 F4 DEF POUT1 CR DEF POT20,I RI DEF POT21,I AI DEF POUT2 V3 DEF POUT2 V4 DEF POUT2 o V5 DEF POUT2 V6 DEF POUT2 F5 DEF POUT2 F6 DEF POUT2,I DC DEF PUT20 VS DEF PUT20 VP DEF PUT20 VD DEF POUT8,I LS DEF POUT8,I TB DEF POUT1,I MC DEF PUT21,I CW-74 DEF PUT21,I DW-75 DEF PUT21,I DR-76 DEF POUT4,I CS-77 DEF POUT4,I CH-100 DEF POUT4,I CC-101 DEF POUT3,I SB-102 DEF POUT3,I CA-103 DEF POUT3,I LV-104 DEF POUT8,I DL-105 DEF POUT3,I PR-106 DEF PUT23,I S0-107 DEF PUT23,I S1-110 DEF PUT23,I S2-111 DEF PUT23,I R0-112 DEF PUT23,I R1-113 DEF PUT23,I R2-114 DEF PUT21 TS-115 DEF PUT21 CP-116 DEF PUT25 TC-117 DEF POUT2 V7 - 120 DEF POUT2 V8 - 121 DEF POUT2 F7 - 122 DEF POUT2 F8 - 123 HED OPERATOR DESIGN TABLES * * OP CODES FOR OPDSN * TABLE ASC 1,AR 0 ASC 1,CB 1 ASC 1,VF 2 ASC 1,FH 3 ASC 1,DB 4 ASC 1,DS 5 ASC 1,EE 6 ASC 1,EN 7 ASC 1,EP 10 ASC 1,GO 11 ASC 1,HT 12 ASC 1,ID 13 ASC 1,IS 14 ASC 1,LB 15 ASC 1,RD 16 ASC 1,CL 17 ASC 1,RS 20 ASC 1,SC 21 ASC 1,SD 22 ASC 1,SK 23 ASC 1,WD 24 ASC 1,LP 25 ASC 1,RL 26 ASC 1,ST 27 ASC 1,RT 30 ASC 1,F0 31 ASC 1,F1 32 ASC 1,V0 33 ASC 1,V1 34 ASC 1,WF 35 ASC 1,RF 36 ASC 1,RC 37 ASC 1,SM 40 ASC 1,RW 41 ASC 1,F2 42 ASC 1,V2 43 ASC 1,VH 44 ASC 1,RO 45 ASC 1,EX 46 ASC 1,<:6F3 47 ASC 1,DA 50 ASC 1,NO 51 ASC 1,RA 52 ASC 1,F4 53 ASC 1,CR 54 ASC 1,RI 55 ASC 1,AI 56 ASC 1,V3 57 ASC 1,V4 60 ASC 1,V5 61 ASC 1,V6 62 ASC 1,F5 63 ASC 1,F6 64 ASC 1,DC 65 ASC 1,VS 66 ASC 1,VP 67 ASC 1,VD 70 ASC 1,LS 71 ASC 1,TB 72 ASC 1,MC 73 ASC 1,CW 74 ASC 1,DW 75 ASC 1,DR 76 ASC 1,CS 77 ASC 1,CH 100 ASC 1,CC 101 ASC 1,SB 102 ASC 1,CA 103 ASC 1,LV 104 ASC 1,DL 105 ASC 1,PR 106 ASC 1,S0 107 ASC 1,S1 110 ASC 1,S2 ASC 1,R0 112 ASC 1,R1 113 ASC 1,R2 114 ASC 1,TS 115 ASC 1,CP 116 ASC 1,TC 117 ASC 1,V7 120 ASC 1,V8 121 ASC 1,F7 122 LAST ASC 1,F8 123 -)< HED OPDSN JUMP TABLE TPONT DEF *+1 DEF TVP1H AR - 0 NOP DEF TVP4B VF - 2 DEF TVP2B FH - 3 BSS 1 DEF TVP1S DS-5 BSS 6 DEF TVP1S IS-14 BSS 1 DEF TVP4G RD - 16 DEF TP2GG CL - 17 DEF TVP2A RS - 20 NOP NOP DEF TVP1T SK - 23 DEF TVP4A WD - 24 NOP DEF TVP2E RL - 26 DEF TVP2F ST - 27 NOP DEF TVP2H F0 - 31 DEF TVP2J F1 - 32 DEF TVP2L V0 - 33 DEF TVP2N V1 - 34 DEF TVP4E WF - 35 DEF TVP4D RF - 36 DEF TVP2P RC - 37 NOP DEF TVP4F RW - 41 DEF TVP2K F2 - 42 DEF TVP2Q V2 - 43 DEF TVP2D VH - 44 NOP NOP DEF TVP2V F3 - 47 DEF TVP2W DA - 50 DEF TVP2X NO - 51 DEF TVP2Y RA - 52 DEF TVP2Z F4 - 53 DEF TVP1K CR - 54 NOP NOP DEF TP2CC V3 - 57 DEF TP2DD V4 - 60 DEF TP2EE V5 - 61 DEF TP2FF V6 - 62 DEF TP2AA F5 - 63 DEF TP2BB F6 - 64 DEF TP2HH DC-65 DEF TP20C VS DEF TP20A VP DEF TP20B VD NOP NOP TB-72 DEF TP19A MC DEF TVP22 CW DEF TVP22 DW DEF TVP22 DR DEF TVP4H CS DEF TVP4J CH DEF TVP4L CC BSS 14 DEF TP2NN DEF TP2MM DEF TP2LL DEF TP2KK HED MESSAGE POINTERS FMI DEF *+1 MESSAGE ADDRESS TABLE DEF M0 DEF M1 DEF M2 DEF M3 DEF M4 DEF M5 DEF M6 DEF M7 DEF M10 DEF M11 DEF M12 DEF M13 DEF M14 DEF M15 DEF M16 DEF M17 DEF M20 DEF M21 DEF kM22 DEF M23 DEF M24 DEF M25 DEF M26 DEF M27 DEF M30 DEF M31 DEF M32 DEF M33 DEF M34 DEF M35 DEF M36 DEF M37 DEF M40 DEF M41 DEF M42 DEF M43 DEF M44 DEF M45 DEF M46 DEF M47 DEF M50 DEF M51 DEF M52 DEF M53 DEF M54 DEF M55 DEF M56 DEF M57 DEF M60 DEF M61 DEF M62 DEF M63 DEF M64 DEF M65 DEF M66 DEF M67 DEF M70 DEF M71 DEF M72 DEF M73 DEF M74 DEF M75 DEF M76 DEF M77 DEF M100 DEF M101 DEF M102 DEF M103 DEF M104 DEF M105 DEF M106 DEF M107 DEF M110 NOP M111 NOT USED NOP M112 NOT USED NOP M113 NOT USED DEF M114 DEF M115 DEF M116 DEF M117 DEF M120 DEF M121 DEF M122 DEF M123 DEF M124 DEF M125 DEF M126 DEF M127 DEF M130 DEF M131 DEF M132 DEF M133 DEF M134 DEF M135 DEF M136 DEF M137 DEF M140 DEF M141 DEF M142 DEF M143 DEF M144 DEF M145 DEF M146 DEF M147 HED MESSAGE POINTERS FERC ABS -FER FER DEF *+1 DEF H0 MESSAGE NUMBER TABLE DEF H1 DEF E2 NOP (H3) NOP (H4) DEF E5 DEF E6 DEF E7 DEF E10 DEF E11 DEF E12 DEF E13 DEF E14 NOP (H15) NOP (H16) DEF H17 DEF H20 DEF E21 NOP (H22) DEF H23 DEF H24 DEF H25 DEF H26 DEF H27 DEF H30 DEF H31 DEF H32 DEF H33 %SDEF H34 DEF H35 NOP H36 DEF H37 DEF H40 DEF H41 DEF E42 DEF E43 NOP (H44) NOP H45 NOP H46 DEF E47 DEF E50 DEF H51 DEF E52 DEF H53 DEF H54 DEF H55 DEF H56 DEF E57 NOP H60 NOP USED BY PCOPR NOP H62 DEF E63 DEF E64 DEF H65 NOP H66 NOP H67 DEF H70 NOP (H71) DEF E72 DEF E73 NOP (H74) DEF E75 NOP (H76) DEF E77 NOP (H100) NOP (H101) DEF E102 DEF E103 NOP (H104) DEF E105 DEF H106 DEF H107 DEF H110 NOP (NOT USED) NOP (NOT USED) NOP (NOT USED) DEF H114 NOP (H115) NOP (H116) NOP (H117) DEF E120 DEF H121 NOP (H122) NOP (H123) DEF E124 DEF E125 DEF H126 DEF E127 LER DEF * HED MESSAGES * M0 OCT 06412 ASC 14,H0 79XX/13037 DISC MEMORY DI ASC 05,AGNOSTIC# M1 ASC 04,H1 UNIT J001A BSS 1 ASC 13, REMOVED FROM UNIT TABLE# M2 ASC 11,E2 CLF OR SFS FAILED# M3 ASC 11,H3 READ FULL SECTOR # M4 ASC 05,H4 CLEAR# M5 ASC 14,E5 SFS FAILED WITH FLAG SET# M6 ASC 08,E6 NO INTERRUPT# M7 ASC 12,E7 WRONG RETURN ADDRESS# M10 ASC 16,E10 NO FLAG FOLLOWING OPERATION# M11 ASC 07,E11 LATE FLAG# M12 ASC 14,E12 NO FLAG(GETTING STATUS)# M13 ASC 02,E13 JP13A BSS 2 ASC 10, WORDS TRANSFERRED JP13B BSS 2 ASC 05, EXPECTED# M14 ASC 12,E14 NO FLAG(USING DMA)# M15 ASC 10,H15 ADDRESS RECORD# M16 ASC 07,H16 OVERFLOW# M17 ASC 10,H17 DUPLICATE LABEL# M20 ASC 13,H20 UNDEFINED INSTR/=UCTION# M21 ASC 09,E21 INVALID UNIT# M22 ASC 06,H22 VERIFY# M23 ASC 02,H23 JP23A BSS 3 ASC 11, ERRORS/PASS ALLOWED# M24 ASC 17,H24 CYLINDER TABLE FOR DRIVE TYPE ASC 1,79 JP24B ASC 2,XXX OCT 06412 JP24A BSS 24 ASC 01,# M25 ASC 10,H25 WISH TO CHANGE?# M26 ASC 19,H26 ENTER CYLINDERS SEPARATED BY COMMA ASC 01,S# M27 ASC 09,H27 PATTERN TABLE OCT 06412 JP27A BSS 41 ASC 01,# M30 ASC 20,H30 ENTER PATTERNS SEPARATED BY COMMAS# M31 ASC 08,H31 INPUT ERROR# M32 ASC 11,H32 ENTER ERRORS/PASS# M33 ASC 08,H33 SEEK-STATUS OCT 6412 JP33A BSS 64 M34 ASC 20,H34 ENTER UNIT NUMBERS(0-7)SEPARATED BY ASC 04,COMMAS# M35 ASC 06,H35 STATUS# M36 ASC 11,H36 INITIALIZE DATA # M37 ASC 8,H37 UNIT TABLE: JP37A BSS 1 ASC 05, DRIVE(S); JP37B BSS 9 M40 ASC 17,H40 SET READ ONLY SWITCH,PUSH RUN# M41 ASC 18,H41 CLEAR READ ONLY SWITCH,PUSH RUN# M42 ASC 05,E42 UNIT JP42A BSS 1 ASC 13, ATTENTION SET-STATUS IS JP42B BSS 3 ASC 03, AND JP42C BSS 3 OCT 6412 ASC 01,# M43 ASC 08,E43 DMA MISSING# M44 ASC 05,H44 SEEK# M45 ASC 06,H45 WRITE # M46 ASC 05,H46 READ# M47 ASC 07,E47 DATA WORD JP47A BSS 2 ASC 02, IS JP47B BSS 3 ASC 06, SHOULD BE JP47C BSS 3 ASC 01,# M50 ASC 04,E50 UNIT JP50A BSS 1 ASC 08, MISSING-PRESENT JP50B BSS 7 ASC 04, NONE# M51 ASC 3,START JP51A BSS 2 JP51B ASC 02,/XX/ JP51C BSS 1 ASC 03,-LAST JP51D ASC 02,0000 JP51E ASC 02,/00/ JP51F ASC 01,00 ASC 06, WORD COUNT JP51G BSS 3 ASC 5,,OLD CYL JP51K BSS 2 ASC 3,,UNIT JP51H BSS 1 ASC 1,# M52 ASC 10,E52 BUFFER CHECKSUM JP52A BSS 3 ASC 03, CYL JP52B BSS 3 ASC 01, ( JP52D BSS 2 ASC 03,)HD/S JP52C BSS 3 ASC 02, (H= JP52E BSS 1 ASC 02, S= JP52F BSS 1 ASC 01,)# M53 ASC 19,H53 AVERAGE SINGLE CYLINDER SEEK TIME JP53A BSS 2  ASC 01,# M54 ASC 15,H54 AVERAGE RANDOM SEEK TIME JP54A BSS 3 ASC 04,,LENGTH JP54B BSS 3 ASC 01,# M55 ASC 19,H55 ENTER INSTRUCTIONS (CURRENT UNIT = M55A ASC 2,XX)# M56 ASC 10,H56 UNDEFINED LABEL JP56A BSS 1 ASC 01,# M57 ASC 11,E57 SCREEN TEST ERROR# M60 ASC 10,H60 SET FILE MASK # M62 ASC 08,H62 HEAD TABLE; ASC 3, UNIT JP62D BSS 1 ASC 2, 79 JP62C ASC 3,XXX , JP62A BSS 1 ASC 04, HEAD(S) JP62B BSS 10 *** GOOD FOR UP TO 10 HEADS *** ASC 1,# M63 ASC 06,E63 NO FLAG# M64 ASC 07,E64 STATUS IS JP64A BSS 11 JP64E ASC 1,/ JP64B BSS 15 JP64F OCT 6412 ASC 07, SHOULD BE JP64C BSS 11 JP64G ASC 1,/ JP64D BSS 15 JP64H ASC 1,# M65 ASC 07,H65 XXXXX PASS JP65A BSS 3 ASC 10,HEAD 012345678,UNIT JP65E BSS 1 JP65B BSS 2 ASC 04, ERRORS- JP65F BSS 2 ASC 09, SOFT,MULTI-UNIT# JP65C ASC 03, NGLO (LONG ) JP65D ASC 03,T ORSH (SHORT ) M66 ASC 15,H66 SET FORMAT SWITCH ON UNIT JP66A BSS 1 ASC 05,,PUSH RUN# M67 ASC 16,H67 CLEAR FORMAT SWITCH ON UNIT JP67A BSS 1 ASC 05,,PUSH RUN# M70 ASC 08,H70 UNLOAD UNIT JP70A BSS 1 ASC 05,,PUSH RUN# M71 ASC 11,H71 READ WITH OFFSET= JP71A BSS 3 ASC 01,# M72 ASC 04,E72 UNIT JP72A BSS 1 ASC 06, NOT READY# M73 ASC 11,E73 COMMAND REJECTED= JP73A BSS 3 ASC 1,# M74 ASC 11,H74SEEK WITHOUT WAIT# M75 ASC 08,E75 ADDRESS IS JP75A BSS 3 ASC 01, ( JP75B BSS 2 ASC 03,) AND JP75C BSS 3 ASC 05, OLD CYL = JP75D BSS 2 OCT 6412 ASC 01,# M76 ASC 09,H76 RECALIBRATE # M77 ASC 15,E77 NO FLAG GETTING SYNDROME# M100 ASC 12,H100 REQUEST SYNDROME # M101 ASC 12,H101 WRITE FULL SECTOR# M102 ASC 15,E102 NO FLAG GETTING ADDRESS# M103 ASC 14,E103 DISC SUBSYSTEM DOES NOT ASC 9, RESPOND (S.C. = M103A ASC 2,XX)# M104 ASC 15,H104 REQUEST SECTOR ADDRESS # M105 ASC 13,E105 SECTOR ADDRESS ERROR# M106 AS(C 19,H106 ENTER HEADS SEPARATED BY COMMAS# M107 ASC 08,H107 READY UNIT J107A BSS 1 ASC 01,# M110 ASC 16,H110 PRESS PRESET(S),PRESS RUN# M114 ASC 07,H114 CYLINDER J114A BSS 2 ASC 03, HEAD J114B BSS 1 ASC 10, FLAGGED DEFECTIVE# M115 ASC 11,H115 COLD LOAD READ # M116 ASC 13,H116 DATA ERROR CORRECTED# M117 ASC 13,H117 READ WITHOUT VERIFY# M120 ASC 09,E120 FATAL ERROR# M121 ASC 16,H121 WARNING-FORMAT SWITCH OFF# M122 ASC 05,H122 END# M123 ASC 14,H123 REQUEST DISC ADDRESS # M124 ASC 13,E124 DISC ADDRESS ERROR # M125 ASC 13,E125 EXCESSIVE BAD TRACKS# M126 ASC 11,H126 SOFT ERRORS WILL J126A ASC 08,XXX BE PRINTED# M127 ASC 17,E127 INTERFACE FIFO MALFUNCTION# M130 ASC 23,H130 NO UNITS IN THE UNIT TABLE ARE CONNECTED# M131 ASC 17,H131 WARNING : DRIVE TYPE OF UNIT M131A ASC 8, HAS CHANGED # M132 ASC 28,H132 TYPE UNITS YOU WISH TO CHANGE SEPERATED BY COMMAS# M133 ASC 5,H133 UNIT J133A ASC 10,XX IS NOT CONNECTED# M134 ASC 11,H134 EXPANDED OUTPUT J134A ASC 11,XXX USED FOR STATUS # M135 ASC 13,H135 S P D TSTAT ASC 14,XXXX UNIT / E DRTYPE X A P F ASC 8, DF FS SC NR B# M136 ASC 15,H136 TERMINATION STATUS WILL J136A ASC 8,XXX BE PRINTED# M137 ASC 14,H137 TERMINATION STATUS IS " M137A BSS 7 ASC 1," M137B ASC 6, XHOULD BE " M137C BSS 7 ASC 1,"# M140 ASC 19,ENTER:(U)NIT,(?) ERRS,(H)EAD,(O)UTPUT, ASC 17,(P)ATT,(S)OFT,(C)YL,(M)CPU,(E)XIT# M141 ASC 6,H141 CYL = M141A BSS 2 M141B ASC 3, HD = M141C BSS 1 HEAD NO. ASC 4, UNIT = M141E BSS 1 ASC 1, M141D BSS 5 ASC 1,# M142 ASC 7,H142 PROTECT M142A BSS 1 ASC 6,D,PUSH RUN# M143 ASC 6,H143 CLEAR M143A BSS 1 ASC 10,D PROTECT,PUSH RUN# M144 ASC 19,H144 NEVER GOT A FLAG ON WAKEUP UNIT = M144A ASC 2,XX# M145 ASC 24,H145 UNEXPECTED INTERRUPT WHEN TRYING M145A ASC 8, XXXXXX COMMAND# M146 ASC 8,H146 CURRENTLY M146A ASC 9,XXX IN MCPU MODE# M147 $'BSS 2 ASC 1,: H147A BSS 3 ASC 1, H147B BSS 3 ASC 1, H147C BSS 3 ASC 1, H147D BSS 3 ASC 1, H147E BSS 3 ASC 1, H147F BSS 3 ASC 1, H147G BSS 3 ASC 1, H147H BSS 3 H147I ASC 1,# BUFB EQU * WRITE BUFER HED INIT * INIT JSB SWR STA CNFSW SAVE CONFIGURATOR SWITCH REG. AND B77 STA LOCAL SAVE SELECT CODE OF CONTROLLER * INTERFACE ADA MM8 SSA SEE THAT SELECT CODE >=10(OCTAL) HLT 73B INVALID SELECT CODE CLA STA M32K CLEAR INDICATOR TELLING IF 32K * OF MEMORY OR NOT LDA LWAM GET LAST WORD OF AVAIL. MEMORY CMA,INA NEGATE IT ADA H0000 IF > 70000 THEN MUST HAVE ATLEAST * 32K OF MEMORY SSA,RSS IF >= 0 => NOT 32K OF MEMORY JMP LA NOT 32K OF MEMORY, THEREFORE * BUFFER ADDRESSES NEED NOT CHANGE CLA,INA STA M32K INDICATE 32K OF MEMORY PRESENT LDA BIT13 A = 8K STA BSIZE STORE FOR MAX. BUFFER SIZE CMA,INA NEGATE STA NBSZE -(MAX. BUFFER SIZE) LDA MM2 ADA D6000 A = 35777 STA LBLPI,I LAST ADDRESS IN OPDSN BUFFER ADA D2 STA BPTS BASE ADDRESS OF READ BUFFER LDA F6000 STA BPTR BASE ADDRESS OF WRITE BUFFER ADA D128 STA BPTR1 ONE SECTOR DISPLACEMENT INTO * WRITE BUFFER LDA D4000 STA BPTO BASE ADDRESS OF OPDSN BUFFER JMP LH LA LDA LWAM GET LAST WORD AVAIL. MEMORY CMA,INA NEGATE IT ADA BIT14 ADD 40000 SSA,RSS IF A > 0 => 16K OF MEMORY * IF A < 0 => > 16K OF MEMORY JMP LH ONLY 16K, VALUES \NEED NOT CHANGE LDA MM2 ADA BIT14 A = 37777 STA LBLPI,I LAST ADDRESS IN OPDSN BUFFER ADA D2 STA BPTR BASE ADDRESS OF WRITE BUFFER = 40000 ADA D128 STA BPTR1 ONE SECTOR DISPLACEMENT INTO * WRITE BUFFER LH LDB FRSTB STB GLOB2 SAVE LAST POINTER LDB LASTB STB GLOB1 SAVE LAST POINTER LB LDB GLOB2,I LOAD POINTER LDA B,I LOAD WORD AND P7700 MASK OUT SELECT CODE IOR LOCAL STUFF IN NEW SELECT CODE STA B,I STORE BACK CPB GLOB1,I DONE? JMP LC YES ISZ GLOB2 NO JMP LB LC EQU * LDA LOCAL GET CURRENT SELECT CODE AND D7 LDB A XOR LOCAL ALF,RAL ADA ASK00 ADA B STA L103A,I * * SET UP DMA * LDA CNFSW LOAD CONFIGURATION SWITCH REG AND BIT14 SZA SKIP FOR DMA 6 CLA,INA THIS IS DMA 7 STA LOCAL LDB FRSTD STB GLOB2 SET UP POINTER LD LDB GLOB2,I LOAD ADDRESS FROM TABLE LDA B,I LOAD VALUE FROM CORE AND MM2 MASK OFF BIT 0 IOR LOCAL ADD DMA CHANNEL BIT STA B,I RESTORE CORE CPB LASTD,I DONE? JMP LE YES ISZ GLOB2 NO,CONTINUE JMP LD LE LDA CTYP DETERMINE COMPUTER TYPE ALF AND B17 ADA MM7 0=>2100,1=>21MX,2=>21MX-E STA TMXE STORE INDICATOR AS TO COMPUTER TYPE LDB M32K GET AMOUNT OF MEMORY INDICATOR SZB IF 0=> <32K OF MEMORY ADA D3 IF 32K USE SECOND SET OF TABLES ADA CTTBL ADD BASE ADDRESS OF TABLES LDA A,I GET POINTER TO SET OF TABLES TO USE STA GLOB1 LDB MM14 STB LOCAL LDB RWTTB GET ADDRESS OF WHERE TABLE IS * TO BE MOVED TO LF LDA G/LOB1,I STA B,I MOVE ENTRY FROM ONE TABLE TO THE OTHER ISZ GLOB1 INB INCREMENT POINTERS ISZ LOCAL JMP LF RETURN TO GET NEXT VALUE IF NOT DONE HLT 74B JMP DONE ASK00 ASC 1,00 L103A DEF M103A RWTTB DEF RW48 CTTBL DEF *+1 DEF T2100 DEF T21MX DEF T21XE DEF M2100 DEF M21MX DEF M21XE M2100 OCT 1407,1407 BSS 4 OCT 3003,3003 T2100 OCT 1240,42050,103144,24002 OCT 65112,120206 OCT 3106,41216,107310,145000 OCT 24152,62242,120354,166044 M21MX OCT 4002,4002 BSS 4 OCT 1410,1410 T21MX OCT 1240,40050,105144,24002 OCT 63112,122206 OCT 1340,46050,103142,140252 OCT 25004,62114,127206,164316 M21XE OCT 2403,2403 BSS 4 OCT 3004,3004 T21XE OCT 1240,40046,105142,24010 OCT 63104,122212 OCT 1340,46046,103154,140242 OCT 25010,62116,127204,164312 CNFSW BSS 1 LBLPI DEF LBLP1 FRSTB DEF *+1 DEF DMACW DEF CC04 DEF CC05 DEF CC09 DEF CC11 DEF CC16 DEF CC17 DEF CC18 DEF CC19 DEF CC20 DEF CC21 DEF CC22 DEF CC23 DEF SC01 DEF SC02 DEF SC03 DEF SC04 DEF SC05 DEF SC06 DEF SC07 DEF SC09 DEF SC10 DEF SC11 DEF SC12 DEF SC13 DEF SC14 DEF SC15 DEF SC16 DEF SC17 DEF SC18 DEF SC19 DEF SC20 DEF SC22 DEF SC23 DEF SC24 DEF SC25 DEF SC26 DEF SC28 DEF SC29 DEF SC30 DEF SC31 DEF SC33 DEF SC34 DEF SC35 DEF SC36 DEF SC37 DEF SC38 DEF SC39 DEF SC40 DEF SC41 DEF SC43 DEF SC44 DEF SC45 DEF SC46 DEF SC47 DEF SC48 DEF SC49 DEF SC50 DEF SC53 DEF CH1 DEF CHE><:62 DEF CH5 DEF CH8 DEF CH9 DEF CH10 DEF CH13 LASTB DEF *-1 FRSTD DEF *+1 DEF DM2A DEF DM2B DEF DM2C DEF DM2D DEF DM2E DEF DM2K DEF DM2L DEF DM6A DEF DM6B DEF DM6C DEF DM6E DEF DM6F DEF DM6G DEF DM6H DEF DM6I LASTD DEF *-1 PEND EQU * END J <  12965-18001 1451 S 0122 01DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 I ASMBAB̬ HDHP00ADSàŠ(3DAGNS G00B MPNGɠNGUŠPGAM DAGNSàҠDSà SANGADDSS00B SHGSҠDUNGNGUAN BS0-5SԠDŠҠHŠɯϠHANN̠NANNGH YP BS6-SԠDŠҠHŠɯϠHANN̠NANNGH DAANAŠҠHŠDS (HŠMMANDHANN̠NAŠBADSHŠN HGҠSԠDũ BS-3SPAS BԠSԠϠZϠҠDMAHANN̠6. SԠϠNŠҠDMAHANN̠.(MAYNԠSԩ BԠ5SPA SHGSҠDUNGUN BԠ0SԠϠMNAŠS3HUS5MSNG BԠUŠŠADDSSS(S0 ANDPNԠMNGMSSAGSNSANDS5 (56AND00NY BԠƠSԠϠNŬAҠYNDҠABŠAND PANAB BԠ3ƠSԠϠNŬUŠPAҠDSGNPGAM BԠƠSԠϠNŬSԠUNԠNŠA BGNNNGƠS BԠ5ƠSԠϠNŬSHNSԠNSS3SANDS5 BԠ6ƠSԠϠNŬSԠYNDҠSN BԠƠSԠϠNŬPAԠASԠSN BԠƠSԠϠNŬMUPŠDVSAŠϠBŠSD BԠ9ƠSԠϠNŬHAԠAҠAHSNƠH PGAM BԠ0ƠSԠϠNŬA̠NN-ҠMSSAGSҠH YPŠ̠BŠSUPPSSDPԠUN PANMSSAGSANDH5 BԠƠSԠϠNŬA̠MSSAGSҠHŠYPŠ BŠSUPPSSD BԠƠSԠϠNŬHAԠAԠNDƠPASS BԠ3ƠSԠϠNŬPNASԠ=8PAN BԠƠSԠϠZϬPGAMHASAҠAH BԠ5ƠSԠϠNŬHAԠAҠNԠPAN SKP G05BNDNGADDSSҠPNA̠DUMP DƠPNDNDNGANƠPGAM G6BDAGNSàSA̠ Ԡ00 G30B MPSADɠBGNMANDAGNS NDƠHϬɠUNPN(ASUSD NUPԩ AU0AGSҠADDSS BUBGSҠADDSS àU0HSSYMB̠SUSDAԠA̠PAS HŠHŠMMANDHANN̠NUMB SSD HU0HSSYMB̠SUSDAԠA PASHŠHŠYP HANN̠NUMBҠSSD DàU0HSSYMB̠SUSDAԠA PASHŠHŠDAAHANN NUMBҠSSD DMAàUDMAN̠HANN̠(Ҡ3 DMADUDMA+DMANUPԠHANN̠(6Ҡ SϠU0BNYADDSSҠSϠSԠUPU SZƠU0APPASHŠANŠDPNDS NHŠSҠSZ. SKP SAGŠAA BDBSS BPABSS BUADBSSPMAYBUҠADDSS BUAŠBSSSNDAYBUҠADDSS ÷Ԡ0 HAҠBSS NԠBSS H3NP HԠ0 ADBSS NSנBSS PNNP PNԠBSS PNԠBSS SAVŠBSS SҠBSS VԱBSS VԲBSS V3BSS Y̠BSSYNDҠNUMB YؠBSS DñԠ0 DԠBSS DMƠBSSDMAҠNDA àBSSASԠҠNUMB SԠBSSUSDNS5 AGBSS SAVŠBSS GBBSS GBBSS GB3BSS GBBSS GB5BSS GB6BSS HADBSSBS6-0]HADNUMB SԠBSS KMSDà-000 KSàDà-0 AB̠BSS ABàԠ0 BPBSS BPBSS NԠBSS A̠BSS AMBSSASԠDƠAVAABŠMMY MNԠBSSMSNDUN MNҠBSSYSHNMSND NɠBSS NUMPDà PNԠBSS PSԠBSS PASSBSSPASSNUMBҠSDH PNԠBSS PNABSS PAGBSS PADBSS PSAVŠNP PSҠBSS S00DƠS0 S0BSS S6NԠBSS SNԠBSSSҠUN SNҠBSSYSNϠS SNBSSUNԠSNNUMB SҠBSSSҠHŠUNԠPAN ̠SA SAGBSS SHGNP SHASBSS SAUSBSSDVŠSAUSSDH SƠBSSҠPNҠƠNԠZ SUPPԠ MPBSS MPBSS MP3BSS MPBSS MP5BSS MP6BSS UNԠԠ0 VA̱BSS VA̲BSS VAUŠBSS NԠBSSPSVŠDUNԠ UNԠPAN D0DƠ DBSS DBSS D3BSS DBSS SKP NSANSAA D0Dà0 BDà B0UB DUB DDà ̠UD BԱUD BUD D3Dà3 B3UD3 DDà BԲUD BUD D5Dà5 D6Dà6 DDà DDà B3UD D9Dà9 BUD9 D0Dà0 DDà DDà D3Dà3 B5UD3 DDà B6UD D5Dà5 BUD5 BԴDà6 B0UBԴ D6UBԴ DDà BUD DDà BUD D9Dà9 B3UD9 D0Dà0 BUD0 B5Dà B6Dà D3Dà3 BUD3 B30Dà D5Dà5 B3UD5 B3Dà6 B33Dà DDà B3UD D9Dà9 B35UD9 D30Dà30 B36UD30 B3Dà3 D3UB3 B0Dà3 B5UB0 BDà33 D33UB BDà3 B3Dà35 D35UB3 BDà36 B5Dà3 B6Dà3 BDà39 D39UB B50Dà0 B5Dà B5Dà B53Dà3 B5Dà B55Dà5 D6Dà6 B56UD6 B5Dà B60Dà B6Dà9 B6Dà5 B65Dà53 B66Dà5 B6Dà55 B0Dà56 BDà5 BԠ BԠ D63Dà63 B00Dà6 B6UB00 B03Dà6 B0Dà6 DDà D3Dà3 DDà D0Dà0 BԷԠ00 BԸԠ00 B9Ԡ000 BԱ0Ԡ000 D0UBԱ0 BԱԠ000 BԱԠ0000 BԱ3Ԡ0000 BԱԠ0000 BԱ5Ԡ00000 BԠ BBԠ000 ƠԠ6 DԠ3 MMԠ0000 HԠ NBԱ5UH NB3Ԡ MPɠԠ6000 SBSBұ P00Ԡ00 P5Ԡ5 P00Ԡ00 P6Ԡ6 HԲԠ0600 HàԠ000 BԠ BԠ B3Ԡ3 BԠ BԠ B3Ԡ3 B30Ԡ0030 D00Dà00 DUBԷ D9Dà9 D0Dà0 D03Dà03 D56UBԸ D3Dà3 D5UB9 D96Dà96 B6000Ԡ6000 D000Dà000 D330Dà330 PAGŸԠ6000 MMDà- MMUP6 MM3Dà-3 MMDà- MM5Ԡ-5 MMDà- MM0Dà-0 MM3Dà-3 MM6Dà-6 MM3Dà-3 MM3Dà-3 MMԠ-60 MM56Ԡ-0 MM5Ԡ- MM6UP00 MM00Dà-00 MDà- M5Dà-5 M56UP00 M550Dà-550 M000Dà-000 M0Dà-0 M936Dà-936 ASD0ASà.0 ASZZASà00 BASUD0NUMBҠƠMAHNŠYSBN HŠASԠPSSBŠASSϠAS ANDHŠMŠHNSNԠ̠SH HŠNԠS. BPҠDƠBUBBU BPSDƠBUB+0ADBU BPSDƠBUB+05 BPϠUPAGŸSAԠƠPDSNKAA DMAנABS0000B+D AS0ASàS0 ASASàS ASASàS AS3ASàS3 ASASàS AS5ASàS5 AS6ASàS6 SKP BASŠPAGŠNKSANDPNS ADDɠDƠADD ADDSDƠNP+ YɠDƠY NGDƠN NVPDƠNV NPDƠN AKɠDƠAK ɠDƠ DDDDƠD0 DNŠDƠAGANԠMPDSN HϠDƠHS ҠDƠ àDƠ ҠDƠ AKŠDƠAKŠUSDNHK ҠDƠBN PDNɠDƠPDSN P00ADƠ00A P003ADƠ003A P00ADƠ00A P005ADƠ005A P006ADƠ006A P00ADƠ00A P03ADƠP3A P03BDƠP3B P05ADƠP5A P0ADƠPA P0BDƠPB P0ADƠPA P03ADƠP3A P0ADƠPA P0ADƠPA P036ADƠP36A P03ADƠP3A P00ADƠP0A P03ADƠP3A P0ADƠPA P05ADƠP5A P06ADƠP6A P0ADƠPA P0BDƠPB P0àDƠP P05ADƠP5A P05BDƠP5B P05àDƠP5 P05DDƠP5D P05ŠDƠP5 P05ADƠP5A P05BDƠP5B P05àDƠP5 P05DDƠP5D P05ŠDƠP5 P05ƠDƠP5 P053ADƠP53A P053BDƠP53B P05ADƠP5A P05BDƠP5B P056ADƠP56A P060ADƠP60A P06ADƠP6A P06ADƠP6A P06BDƠP6B P065ADƠP65A P066ADƠP66A P06ADƠP6A P00ADƠP0A PAҠDƠPAP PAɠDƠGBUSDNPHK PHKɠDƠPHK PMɠDƠM PM̠DƠM PMàDƠM PNSàDƠNS PVʠDƠV PPԱSBV PPԲSBV PPԴSBV PP5SBV5 PP6SBV6 PPԷMPDNŬ PPԸSBV PP9SBV9 PPԱ0SBV0 PPԱ3SBV3 PPԱMPV PPԱ5SBV5 P3NɠDƠPU3N ұDƠN AKɠDƠAK NHɠDƠNH NSɠDƠNS SADDƠSA SHԠDƠSPASS ԠDƠBP VDƠVP VHoDƠVP VDƠVP V5DƠVP5 V6DƠVP6 VDƠVP V9DƠVP9 V0DƠVP0 V3DƠVP3 VDƠVP V5DƠVP5 VA̠DƠVAU ADɠDƠADA AɠDƠAP SԠDƠɠSN DƠSPNS DƠS DƠS3 DƠS DƠS5 SKP HŠNGDSANDUASDMNŠHS SAUSSMMANDSSZS.HAԠMGH VAYBAUSŠƠDSGNHANGSAND. ADSKԠ0000ADDSSSKPMMAND YHKUBԱ5YàHKMMAND YPPUD03NUMBҠƠYNDSPҠPAK DBUBԱ5DVŠAKBԠҠADDSSS Y̠U0ASԠYND PAԠԠ30000ANAŠPSNMMAND PSԠԠ030000PSNMMAND ADAԠ060000ADADDSSMMAND ADàUBԱADMMAND A̠UBԱ3ABAŠMMAND SPԠUD3NUMBҠƠSSPҠAK SASUBԱSAUSMMAND PàUD0NUMBҠƠAKSPҠYND BUBԱ5ŠKUԠBԠҠADDSSS AԠ00000ŠADDSSMMAND àԠ050000ŠMMAND ABԠUB0ANYҠB DBԠUBԱDAAҠB PBBԠUBԲDVŠBUSYB BԠUB3AGGDYNDҠB NBԠUBԴADDSSҠB BԠUB5NDƠYNDҠB NBԠUB6NԠADYB BԷDVŠDNAN SBԠUPBBԠSKHKB SBԠUPBBԠSKNMPŠB VBԠUDBԠVҠUN SSԠUDSҠHŠSNDHDSAS SԠUD6SҠHŠASԠHDSAS ԠUD0+SZƠDUNԠҠSԠHD ԠUD96+SZƠDUNԠҠASԠHD HDK KUN HSUNŠSADHAUNԠƠMAHN YSUSDNHŠBGS. ԠUPDASHŠMSNDUN KNP KU ADBD9ADDNMAHNŠYSUSDH DABPYϠBHGSS ADBSNҠKNSҠUN SBSN ADBKSàSUBAԠVנUN SSB MPNSVSҠUNҠNԠVD ADADA̠UN ADBD SBSN DBSNԠUPDAŠSҠUN PBSP-HKҠNDؠPN BSSUA̠Ϡ3...BAKAԠND NB SBSNԠNנS NSVU BAҠҠSUBSUNԠAS ADAMNҠKNMSNDUN SAMN ADAKMSHKMSNDUNԠV SSA MPK ADAD9ADUSԠҠHSSN SAMN ANA ADAMNԠADUSԠMSàUN SAMN DASN ADAD9ADUSԠSҠUNҠ SASN DAN NAADUSԠAMSNDUN SAN MPK HDAND ANDMNUMBҠGNA HSUNŠGNASBԠPANS HŠDSKDAGNS.NϠAMSMADŠ SASA̠ANDMNSS. SHPANNA BUNHANGD UNŠUSS6MAHNŠYS ANDNP DABASŠADBAS ADAPMŠSUBAԠHŠPM SSASKPƠS̠PSV DABASŠPSBASŠNԠBGNUGH ŬADUBŠBASŠҠMAND SABASŠҠNԠY MPAND PMŠDà-3069 HSPMŠNUMBҠPSVY 306MSNSPA PANSN BASŠABS035B HDSKSSSHSAԬMMDDADϬAD R0.**0   12965-18002 1451 S 0122 02DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 J UNSϠDϠMMNYUDPANS. AHUNŠSAҠADDNGϠBHŠNUMB ƠMAHNŠYSUSD. SHU SKNP DAY̠PUԠYNDҠNUMBҠUԠB SBDADϠGVNGHŠMMAND DAPSԠADMMANDҠPSN SKSBMMDSSUŠMMAND SBAD DAHAD AƬAƠHADNUMBҠϠԠHA ҠSҠPUGNSҠNUMB SBDADϠUPUԠHAD-S SBAD ADBDADDNYSUSDAY MPSK SSNP DAY̠ADYNDҠNUMB SBDADϠPUԠUԠNDAAHANN DASS SASK ADBDADDNYSUSDAY DAPAԠADANAŠPSNMMAND MPSK SAԠNPSAUSHKUN DASUPPA SZASSSUPPSSN MPSAԬɠƠSAUSHK DASASADHŠDUSAUSMMAND Dò3SàDìàSԠUPDAAHANN̠ҠNPU SBMMDUPUԠMMAND NPAנAM DñSàDàSAUSSHUDBŠBAK MPSABKAҠUҠYS SBPPPNԠUNԠPANMSSAG űSBҠNϠDàAGHŠHKNGSAUS SBHԠHKҠHA AUԠKAY SABKU D0AD SASAUSSAVŠSAUS ADBD3ADDNYSUSDAY MPSAԬɠUNSAUSNA MMDNP ҠUNԠPUGNUNԠNUMB 0ààMAKŠSUŠNDŠSZ 0A 03SàìàNנSԠND ADBD5ADDNYSUSDAY MPMMD DADϠNP D0AD D03SàDì ADBDADDNYSUSDAY MPDADϬ ADNPAԠNDAAHANN DAMM6AנASHatUN ADBDADDNYSUSDAY APU D0SàD MPAD ADBDADDNYSUSDAY SSANA MPAP SZZSBPP(NYPNԠҠSZ Dñ3SSDàHKҠAGN MP63 űSBҠAŠDàAG MP+ 63SBҠNϠDàAG SBADDɬ MPAD HDASAHA HŠASUNŠASҠUPϠ550MSNDS ҠHŠMMANDHANN̠AG.HNHŠAGSS ASASSAԠҠHŠSAUS HSUNŠASϠUSSHŠSAMŠMŠϠAԠҠA ABAŠϠUҠҠHADSϠNSHSHNG. AҠU AHU ASNP DAM550MUSԠASϠAנҠYàHK Ơ60SS SANԠSԠAKUN ADBD3MAKŠUPҠNYYS ASDU SBK ADBDYSNHŠP 05SSàSKPƠSKDN MPAS SBSAԠA̠ҠSAUS SBK MPAS ASѠU DANԠHKK SSASKPHNMDU MPASDKPPNG SBPMìɠPŠUԠHŠADS SBPPPNԠUNԠPANMSSAG ű0SBҠNϠàAG SBADDɬ MPASɠUN HDSKSHPP SKSH PMSBSK SBAS SBHK HPDSAUS0 SHU SKNP SBSKPMSK DASHAS SASAVŠSAVŠSAUS-PDҠH APAN SASHASPDSAUSҠSKS0 SBASAԠҠSKϠMP SBHKHKSAUS DASAV SASHASSŠPD-SAUS MPSK PNԠUNԠPAN PPNP UNŠϠPNԠP DAPN SBPNԠUPUԠMSSAG DAPNADHAԠD MPPP HDҬBK PԠҠMSSAGS USSSϬSҬBK HŠUNADDSSSUSDϠKUPHŠADDSSNGHAND NUMBҠƠHŠҠMSSAG ҠNP Ơ0DSABŠNUPS B ADB DAҬɠNDҠNUMBҠBASDNN ҲU PBAɠADDSSANDAB MPұUND NA PAҬ MP00BPGAMҬPAGŠ0MAYB PDU. MPҲ ұU ADAì ADAMM SA SBPNԠPNԠMSSAG DB ADBMM- SSBSKPƠҠNUMBҠGҠHAN SBHԠHKҠHA MPҬ BK ƠYSUPSSDUN ƠYNԠSUPSSDSKPNԠNSUNNUN USSS BKNP A ANDBԱ SZASYSUPSSD MPBKɠYS DABKN NA MPA HDPNԬYK PN AҠNUMB PNԠNP SAPSAV SBBK MPPNԬ DAPSAV DBA ADBPMɬɠMSSAGŠADDSS DBB ADAPM̬ɠMSSAGŠNGH DAA SBSϬɠUPUԠMSSAG MPPNԬ YK UNƠYNԠAVAABŠҠNN-ҠMSSAGS NMNԠUNADDSSƠPNUԠK YKNP DBYK NB AADSנG ANDB6000 SZASYAVAAB MPYKɠNϬABԠPNU MPBɠYS HDH H SSHAԠBԠ(BԱAҠ USSS Y HԠNP SBBKYAVAAB? MPHN DA̠YS DB SBSϬɠPNԠBANKN HU A ANDBԱ SZAHA? MPHԬɠN DAàYS HԠ MPHԬ HDDN DN NVSDMA̠NGSϠAS AVAUŠNNPU NVԱSԠϠDGSN NVԲSNDϠDGSN DNNP BB- DPADAM000ASSUMŠNGҠSSHAN0000 NBUNԠUPHUSANDSPA SSASSSKPHNBGS MPDP ADAD000S BƬB ADBMM DPADAMM00 NBUNԠUPHUNDDSPA SSASSSKPHNBGS MPDP ADAD00S ADBASZZ SBVԱ BB- DP3ADAMM0 NBUNԠUPNSPA SSASSSKPHNBGS MPDP3 ADAD0S BƬB ҠB ҠASZZ SAVԲ MPDN HDDNDN DN SŠNŠDƠNVDAAԠB DNNP SBA̠SAVŠPN SBDNNVԠϠAS DAVԲS SAA̬ɠNϠMSSAG MPDN DN SŠϠDSƠNVDASANGAԠB DNNP SBA̠SAVŠPN SBDNNVԠϠAS DAVԱS DBA̠ SABɠDS NBN DAVԲMSSAG SAB MPDN HDDHKHK HŠDHKUNŠSADAҠAAD. ԠMPASHŠADANDŠBUS. HŠHKUNŠSADAҠA. ԠHKSNYHŠSAUCS. HŠؠANDZNSAŠUSDBYH HҠUNSϠDϠHҠSAUSHK. HŠPHKUNŠSADAҠAAD. ԠMPASHŠADBUҠϠAPAND. HŠHKUNŠSADAҠAAD. ԠHKSHŠHKSUMMDSҠN HŠADBU. HYMPAŠHŠUNԠSAUS(SAUSHH PDDSAUS(SHASBYANGHŠANUN. HŠUNSGVŠANMA̠UNƠNϠSA DD.ƠANҠUSHŠUNSGNAŠAN ҠMSSAGŠANDHKҠHAԠҠNNU. DHKNPϠHKҠSN ADANDϠMPAŠAD ANDŠBUS DADHKADUNADDSS SAHKSAVŠҠPSSBŠA MPASHŠBUADANDBUAŠBUSUSNGN ҠBUҠNGH. DABUADADSԠBUҠADDSS SAMP DABUAŠADSNDBUҠADDSS SAMP DAN MANA SAMP3SԠSZUN DMU DAMP PAMP MPD̠UA̠MPA DAMP3 ADANԠGNAŠAVŠAN ű0DBP0AADPN SBDNA̠NVԠUN DAMPɠADHAԠDSHUDB DBP0àADPN SBNPɠA̠NVԠANDMVŠUN DAMPɠADHAԠDAUAYAS DBP0BADPN SBNPɠNVԠϠAS DANUMPDMN ADAMMPNUԠUN SZASS MPDAƠAVŠAԠAND SANUMP ŴSBҠDAADؠSYYYYYYSHUD BŠZZZZZZ MPD DAU DBBDAADؠSYYYYYYSHUD BŠZZZZZZ SBàSAVŠҠH SBS MPZGϠANAYZŠS D̠U SZMPUNԠUPBU SZMPADDSSSAND SZMP3HKҠMPN MPDM DBNԠB9N BƬB ADBN BS ADBN ADBD6363YS SBK MPؠBUSKAYNMA̠SAUSHK SKP ŠHKUN HKNPϠHKҠSN NN-ADPANS DBD35YSUSDAY SBK ؠU SBANA̠ҠMPA SZASKPƠNϠ MPZPԠ DADMƠHKҠDMANԠNSHD SZASSSKPƠ MPUԠUNƠNϠUB SBPPPNԠUNԠPANMSSAG SBDMѠPNԠDMAҠMSSAG UԠSBADDɬ UԠU HŠPUNŠSADϠSŠ HŠSNUNYNUNSϠBŠSADV ҠSϠNNUŠN. DBDYSUSDAY ANPUԠSנG SSA HԠHAԠƠBԠ5S ANDBԱ3HKҠPAԠPAN SZASSSKPҠP MPHKɠNϬNNU MPPҬɠPBAK ZU SBPPPNԠUNԠPANMSSAG SBDMѠHKҠDMA SBANHKҠSAUSS SZASKPƠSAUSKAY SBPNԠPNԠUԠҠMSSAG DASƠHKҠBUҠS SZASKPƠNϠSUHS SBPN B SBSƠAҠUԠPNҠD MPU HDAN ҠANAYSSUN ANNPUNŠϠPMҠANA. DASUPPA KXSZASSSUPPSSN MPANɠƠSAUSHK DASHASA ANDP5B DBUNԠSVN SZBHϠBAKUN ҠBԷNUMB SASHASNSAUS ҠSAUSSA̠ASSHUDB? SZASS MPANɠVYHNGSN DASAUSADUNԠSAUS DBP06AANDADDSSҠAS SBNPɠNVԠϠA̠ANDMV DASHASADHAԠSAUSSHUDB DBP06BANDADDSSҠAS SBNPɠNVԠϠA̠ANDMV AMUSԠBŠNN-ZϠAԠHSPN 6DAB6SAUSSؠSHUDBŠ SAàSAVŠҠH MPANɠUN HDDGN DGN HSGDYSUPHŠBUҠHAנANDMDAA USSNԠASANGH USSBUADҠADDSS DGNNP DAN MANA SAMPNGAVŠDUN DABUAD SAMP DG̠U SBANDGԠANDMNUMB SAMP SZMPUNԠUPADDSS SZMPUN MPDG DBN BS ADBN BSBS ADBN BS ADBNԠN ADBD9YSUSDUSDŠP SBK MPDGN HDDMҬDM HSŠUNSSԠUPDMAANDSAԠHŠDAAHANN. HŠDMҠUNŠSSUPAADNϠHŠNPU BUҠ(ADDSSNBUAŬUNԠNNԠ HŠDMנUNŠSSUPAŠMHŠUPU BUҠ(ADDSSNBUADUNԠNNԠ DMҠNPSԠUPDMAADPAN DADMAנADDMAMMANDD DM6AADMADϠDAAHANN DMAàDMAàPPAŠϠADADDSS DABUA ҠBԱ5ҠNDNB DMBADMAàUPUԠMMYADDSS DMàSàDMAàPPAŠϠADUN DANԠADDUN MANASMPMNԠSUSDBYDMA DMDADMAàUPUԠDUN D05SàDì DM6BSàDMADàSAԠDMAHANN MPDMҬɠUN DMנNP DADMAנADDMAMMANDD DM6àADMADϠDAAHANN DMŠàDMAàPPAŠϠADADDSS DABUADAND DMƠADMAàUPUԠMMYADDSS DMGSàDMAàPPAŠϠADUN DANԠAND MANAUPUԠSMPMNԠ DMHADMAàDUN D06SƠDàMAKŠSUŠSѠSHGH DM6DSàDMADàSAԠDMAHANN MPDM׬ɠUN HDAD ADAND HSŠUNSAŠADϠNAZŠA DMAANSSϠANDMHŠDSK. HYASSUMŠHA HŠDUNԠSNN ADASSUMSBUҠADDSSNBUA ŠASSUMSBUҠADDSSNBUAD ADNP SAPN(UNԠPAN SBDMҠSԠUPDMAADPAN DAADàADADMMAND SBMMDUPUԠMMAND SBDMA SBSAԠGԠSAUS MPADɠUN ŠNP SAPN(UNԠPAN SBDMנSԠUPDMAŠPAN DAàADŠMMAND SBMMDUPUԠMMAND SBDMA SBSAԠGԠSAUS MPŬ HDDMAԬHK HSSNSHUDBŠADҠAHANSҠUSNGH DMA.ԠNNUUSYHKSҠHŠAGϠBŠSԠNH MMANDHANN̠HŠMNNGHŠDAAANSҠAND HKNGҠVM. DMAԠNP DAM5Aנ5MSNDS (0ҠANY0ҠAD0 ҠANY(ƠHADSHS t0ҠADAND5ҠSP SANԠSԠAK DMɠADMAàADUNԠDUN SAMPANDSAVŠԠҠMPASN DBD DMB̠U ADBD SBHKA̠AGHK DMʠADMAàADUNԠDUN PAMPHKҠSAԠƠPAN MPDMB̠ƠPANHASNԠSADDAA ANSҬP DASҠADUNԠSҠNUMB SASN B SBSNҠSԠYŠUNҠϠZ DBNԠADDUNԠAND ADBD HSANSUSDBYUNSHA MUSԠNUPԠHŠDMAANS. DMSPNP DMS̠U ADBD SBHKNNUŠϠHKAG MPDMS AGHKUN HKNPUNSAUNDHKNGҠND ƠPANAG. MSUԠHNNԠGSPSV ADBD3 SBK DANԠHKҠMU SSASS MPUԠMŠU 0SS MPHKɠNϠAGY.USԠUN DM6GSàDMADSKPƠDMANԠDN MPDNVYHNGSAGH DABԱ5ANSҠNԠMPŠB MPؠA̠DUNԠNV DNU DBD6ADDNYSUSDAY SBK MPDMAԬɠUN UԠU ANA DM6HSSDMADHKҠAGNDMAHANN ҠBԱ5ANSҠNԠMPŠB ؠU SADMƠSAVŠҠAҠHK SBPMìɠUB.BMBUԠADS DMKADMAàADUNԠDUN ADANԠMAKŠNϠPSVŠDUN ANDBMASKƠUPPҠHŠBS DBP03AADPNҠҠASɠS SBDNA̠NVԠUN MPDMAԬɠU <:6NANDAԠҠVD HDDM <  12965-18003 1451 S 0122 03DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 K DMAҠHKUN DMѠNP SBYK MPDMѬ DBDMƠHKҠAUA̠ SZBSSSKPƠҠNDNSS MPDMѬɠԠƠNϠ SBSKPƠNԠMŠU űSBҠNϠMMANDAGNDMAPAN DBDM A SADMƠAҠҠNDA SSBSSSKPƠDMAAGASNԠS MPDMѬɠUN DANԠADHŠPDDUN DBP03BADPNҠҠASɠS SBDNA̠NVԠUN ű3SBҠؠDSANSDYYYY PD MPDMѬɠUN HDHA HA GԠNԠNN-BANKHAA NԠSKPƠBUҠMPY HAҠNP HAұSZNԠDN? PP3SSN MPHAҬɠYS DABPAɠYD SZS MPS AƬAƠUSŠԠHA MPU SàBUSŠGHԠHA SBS SZBPABUMPDPN UԠANDB3 SAHAҠSAVŠ ҠB0SԠBANK SZASSSKPƠN MPHAұGNŠBANKS DAHA SZHA MPHAҬ HDDHA DHA GԠDMA̠VAU SKPSNԠƠNԠDN DHAҠNP DAMM5UPPҠM DBVA̠PNSϠVAU DHұSAVA̲ SBVA̱ DAMM SADԠDԠ- ANAZŠϠZ DHҲSAVAUŠSŠVAU SBHAҠGԠNԠHAA MPDUԲDN ҠB5SHAA SZASSAMMA MPDUԱYSDN DAVA̲HK SBKVADYƠHAA MPDUԲBAD SADԠDԠ- DBVAUŠKBUD BƬBҠUP SADBVA̱ɠVAU ADBVA̱ ADAB MPDHҲNNU DUԱSZDHAҠNMA̠ DUԲDAVAUŠҠҠNDƠADBU MPDHAҬ HDHAҬKHN HA GԠA̠VAU SKPSNԠƠNԠDN HAҠNP DAHA SADHAҠSԠUN DAMM56UPPҠM DBDDDPNSϠD0 MPDHұ HAAҠHKUN KNPHK ADAHAҠVADY SSA MP+3HAA ҠSBH3BADNPU MPK DAHA ADAMMҠM SSA MP SZK MPK HN NPUԠMY HNNP DADHAAҠUN DBBNABUҠADDSS SB0BɠYNPUԠDV SZASSŠZϠDSNPU? MPHN+YSYAGAN MA SANԠSAVŠHAAҠUN A SASԠAG- DABNA SABPASԠPN MPHNɠ BNADƠBUB HDH3SUƬP PNSBADNPUԠMSSAG H3NP DAB3BADNPU SBPN MPH3 SU SԠUPUNԠSN SUƠNP SAP05AɠA SAP0Aɠ SAP03AɠDHK SAP036AɠA SAP03AɠDADDSS SAP0AɠS SAP05AɠD SAP06AɠD SAP060AɠAS SAP06Aɠ MPSUƬ UNԠPAN PҠNPAPU SAPNUN MPPҬɠADDSS HDSA SA NAZSPGAMANDPUԠHASNנ G000B SAԠà0àUNVYHNG DA06BASԠDƠAVAABŠMMY ADABԸBנNGUAҠDVSAND ADAB00SŠԠNAM SAAM(VAYSUYUNS AGANU DBBAP̠AN DAHԲAP̠HA PSAB NB NA PBB00AP̠HASMP? SSYS MPPNϬPA A SADMSPSԠDϠN-P SAMN SAMN SASN SASN SAPASSSA SAN DABP SABUADNAZŠBUAD ANA SAN SASUPP A ANDBԴ BUNԠ0 SZASKPƠBԠ0 NBUNԠ SBUN BGNU ANAA_ SASNSAԠHSNN H35DAB35NA̠SAUS SBP DAHYP SBNVSNVԠANDS DADñDAAHANN SBNVS DA÷MMANDHANN SBNVS B SBA SZA̠DAYAנ MP-SHHŠϠBŠS SAҠUSNA A ANDBԲSBԲS? SZAN SBYKYSSKPƠYAVAAB MPSSNϠABԠHK DSBYɬ HDABYNDҠABŠNNS SBPN SBASKSHϠHANG? MPPAԠN H6DAB6YSNҠYNDҠNUMBS SPAADBYMMAS SBPN SBHNNPUԠMKYBAD SSBDHAҠGԠDMA̠VAU MPSҠҠDN? SBSҠSŠNAB MPSNNU SDAN SZASSSKPƠ SBSҠDN MPD PAԠSBPAԱPPAŠPANAB HDABPANABŠNNS SBPN $ SBASKSHϠHANG? MPH3N H30DAB30YSNҠPANNUMBS SPAADBYMMAS SBPN SBHNNPUԠMKYBAD PSSBHAҠGԠA̠VAU MPPSҠҠDN? SBPSҠSŠNAB MPPSNNU PSDAN SZASSSKPƠ SBPSҠDN MPPA H3DAB3 SBPNԠSԠSH DAB3 HԠ A ANDBԲ SZA MPH3 SSNϠU A ANDB3 SZASBԠ3S? MPPDNɬɠYS DASNADSNNUMB ADASԠADDNPN SBAɠA̠SN SHDAHà000 ҠSNSNNUMB SASHԠHAԠBNSNS AHKҠHAԠAԠNDƠSN ANDB9 SZA SHԠNPSԠUPNADVAN AHKҠSԠPA ANDBԷ SZASKPƠNϠPA MPSAҠPAԠASԠS ASԠPNSN SAGB6SؠAG DBSNUNԠUPSNNUMB NB SBSN ASԠSPA ANDB0SNGSUN? SZASS MPSHSN SBSHԬɠPԠSHNNDSNG ADBMM3YS.SUN SSBSN3Ҡ5? MPSHSN ADBMM3YS.S SSBSN6? MPSHN.SKPUN SHSDBSNYS PBD6SؠSNS ANASS MPSA ADAPASSNMNԠPASSNUMB SAPASS SBYK MPHHH DASHG SZASSSHԠSNG? MPHHN DABYSPN HSBPNԠ"SHԠ:PASS" HHU DAPASS DBP065ANVԠPASS SBDNNUMB DAB65 H65SBPNԠPASS HHHAHKҠHAԠAԠNDƠPASS ANDBԱ SZA HԠB AA SASHGPASSAG MPN HSMPBGNUNSԠV SKP ɯϠHANN̠ABŠҠNVS SADƠ+ DƠH DƠH DƠH3 DƠH DƠH5 DƠH6 DƠH DƠH DƠH9 DƠH0 DƠH DƠH DƠH3 DƠH5 DƠH DƠH0 ASADƠ- S0Ԡ000SԠAGHANN̠ SKP NVS NVԠHANN̠NUMBҠϠASɠANDSŠN MSSAGSMHUGHM.NAZŠH HUGHH3ϠHANN̠SԠD NVSNP SAA̠SAVŠSԠD SBNVPɠNV DAV3ASԠSGNANԠDGS SAP00AɠS SAP003AɠN SAP00AɠMSSAGS SAP005A SAP006A SAP00A DBSA SBGBSAVŠSԠPN BDBGBɠADPN DABɠADD ANDP00MASKUԠSԠD ҠA̠SUƠNNנSԠD SABɠSŠBAK PBASAɠDN? MPSԠYS SZGB MPB S SԠHANN SԠU à0àNAZŠɯϠSYSM DAM0PUԠGA̠DS H5AHMMANDNA HƠHAҠHANN̠AG HSSH SS ŲSBҠƠҠSSADNHANN̠ H3ƠHYAGAN HSàH 3SBҠSàADHAGA-H. H5SƠH H6SàH SS ŴSBҠSƠҠSàADNHANN̠ HSƠHYAGAN HSSH 5SBҠSSADHAGSԠ-H. DAH3 SAGB DASBSԠUPNUPԠAP SAH3 H9SàHSԠHANN̠ϠUS H0SƠHANNUP SƠ0NABŠNUPS SàNUPS SƠSHUD àB ƠDAYD MP+ɠUN DƠ+. SB+ɠ. DƠ+. NP. NPԠNPH 6SBҠNϠNUPԠNHANN̠ MPH NNPNUPԠSUBUN Ơ0DSABŠNUPS DAGBAP̠HA SAH3 SƠ0SԠNUPԠAKNDG NPSHUDN NPNUPԠH Ơ0DSABŠNUPS DANDDNUPԠUҠAԠH PAADDSԠMMYAN SS ŷSBҠNԠUNADDSS-H. DAD0SAԠSNSԠAԠSà0 ñSAMP6SAVŠ PAA̠SԠSԠS? MPòYSSKP ҠS0NϬSԠUPSƠ SAH6PAŠ HƠHAҠAGS H6NPUŠSƠNSUN H0SSHAGSԠNS? SSNϬK ŷ3SBҠYSŷ3 òDAMP6MVŠ NANԠS PAB00DN? SSYSSKP MPñNϬNNU HSàHSԠN HSƠH à0SHUDAҠA̠N̠BS SƠ0NABŠNUPS NPSHUDNԠNUP NPH à0UNVYHNG DAGB SAH3 Ơ0 MPNVSɠYS HDS0-SN0(AD UNŠϠŠADDSSSNHŠDSKAND HKUԠA̠HŠPANSHAԠHAVŠϠDϠH PAKADDSSNG. UNŠASKSҠVDŠSHϠBŠSԠNHŠDU. 0060Ԡ0060 ADNPNYҠŠADDSSUN DAAS0 SBSUƠUNԠSN DAD6+SZƠ3SS SANԠDUNԠҠNŠAK DABP SABUADNAZŠBUҠADDSS DABPSADADBUҠADDSS SABUAŠSԠPN DAUNԠNV ADA0060UNԠNUMB SAP00AɠϠAS SAP066A SAP06A SAP00A SAP03A SBYKSYAVAAB? MPHAN DAB66YS SBPN HADAB66SԠVDŠSHPUSHUN HԠ PAŠŠKUԠBSNYNDҠZ PAŠDVŠYNDҠBSNYNDҠN AԠYNDҠZϠHNND. DABADŠKUԠB SAY̠SԠҠAP SBAPGNAŠADDSSD SBADҠŠADDSSSNϠDSK A SAY̠SԠY̠ϠAA̠Z ANAUSŠHAD SAHADN DABSKNS0 SBP SBSHPMU̠SH DADBADDVŠAKNDA NAAGHŠAK(AUSSH SAY̠AKϠBŠDVũ SBAPGNAŠADDSSD SBADҠŠNϠDSK A SAY SAHAD SASHASPDSAUS0 DAD+SZ SANԠNŠS DABSKNS0 SBP SBSHPMU̠SH DAB SBŠŠPD-SHN SBHKHKSAUS DABSKNS0 SBP SBSHPMU̠SH ADAB3 SBADADPD-SHN SBHKHKSAUS DAB ҠNB ҠAB SASHASPDSAUS3 ANA SAHADSHϠHADN DABSKNS0 SBP SBSHPMU̠SH DAB33 SBŠŠDVŠ-SHN SBPŠHKSAUSAנNϠANS DABSKNS0 SBP SBSHPMU̠SH DAB SBADADDVŠ-SHN SBPŠHKSAUSAנNϠANS SBYKSYAVAAB? MPHBN DAB6YS SBPN HBDAB6AҠVDŠSHPUSHUN HԠ DABSKNS0 SBP SBSHPMU̠SH DAB33 SBŠŠDVŠ-SH SBPŠHKSAUSAנNϠANS DABSKNS0 SBP SBSHPMU̠SH DAB SBADADDVŠ-SH SBPŠHKSAUSAנNϠANS A SAHADSHϠHADZ DAB ҠAB SASHASPDSAUS DABSKNS0 SBP SBSHPMU̠SH DAB SBŠŠPD-SH SBPŠHKSAUSAנNϠANS DAD6+SZ SAN DABSKNS0 SBP SBSHPMU̠SH SBAPGNAŠADDSSD SBADAŠADDSS-SH SBPŠHKSAUSAנNϠANS DAD+SZ SAN A SASHASPDSAUS0 DABSKNS0 SBP SBSHPMU̠SH DAB3 JSBADADPD-SH SBHKHKSAUS DAD6+SZ SAN SBYKSYAVAAB? MPHàN DAB66YS SBPN HàDAB66SԠVDŠSHPUSHUN HԠ A ̠U SAY̠SԠNנYNDҠNUMB A H̠U SAHADSԠNנHADNUMB HŠNGPANSASKHA AUSSPSNҠMN. DABSKNS0 SBP SBSK SBAPGNAŠADDSSD SBASAԠҠSKMPN SBHK SBADҠŠANDADADDSSS DAHADUNԠUPHADNUMB NA PAPàHKҠNDƠYND ANASS MPH̠NԠDNŬNSHHSYND ADAY̠UNԠUPϠNԠYND PAYPPHKҠNDƠPAK SS MP̠NԠDNŬNSHPAK SBYKSYAVAAB? MPHDN DAB6YS SBPN HDDAB6AҠVDŠSHPUSHUN HԠ SBYKSYAVAAB? MPHŠN H0DAB0YS SBPN HŠDAB0UNKUNԠجPUSHUN HԠ H3DAB3UNԠؠNԠADYHKNS0 SBP SBSA DANBԠNԠADY ҠAB SASHASSԠHAԠSAUSSHUDB SBHK DAB5 SBŠŠNS0 SBP A SASHASHAԠSAUSSHUDB NBU SBYK MPH H0DAB0ADYUNԠ SBPN HƠDAM936 SANԠSԠMSNDUN NƠU SBSAԠGԠSAUS ADBD SBK DANԠHKҠMŠϠPNԠMSSAG SSASS <:6MPNB DASAUSADSAUS ANDNBԠAVŠNԠADYB SZASKPƠADY MPN A SAY SAHAD SAS DAB SBPҠSKNS0 SBSK SZY̠HANGŠYNDҠNUMB DAB5 SBP SBSSADDSSDNS0 DAD+SZ SAN r<  12965-18004 1451 S 0122 04DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 L HŠAҠNנDSMHŠPSN. AAD̠SHנASAUSƠB DAB6 SBADADNS0 DANB ҠAB SASHAS SBPŠVYSAUSAנNϠANS SBYK MPHG DAB HSBPNԠHPSSPSԠHNPSSUN HGDAB HԠ SBSA A SASHAS HŠNGSԠVSHŠPPϠN SBHK MPADɠUN APNPGNASADDSSDS A PU SASҠSŠNנSҠNUMB DAY̠ADYNDҠNUMB SABUADɠPUԠNϠBU SZBUADUNԠUPBUҠADDSS DAHAD AƬAƠHADϠԠBY ҠSҠҠNSҠNUMB SABUAD SZBUADUNԠUPBUҠADDSS DASҠAHSҠNUMB NA PASPԠHKҠMPN ASS MPPNԠDNŬNSHNŠAKSH SASҠBAKϠSҠZ DABPҠSԠBU SABUADADDSS MPAPɠUN UNŠSADDSSSNϠDSKAND ADSHMBAKϠHK. ASDMAԠҠDMAPANS ADҠNP SBADA SBHKHKҠS SBAD MPADҬɠUN ADANP H36DAB36ŠADDSSNS0 SAPN SBDMנSԠUPDMAŠPAN DAAADŠADDSSMMAND SBMMD SBDMA SBSAԠGԠSAUS AA SASҠSҠNUMB MPADA ADҠNP DAB3ADADDSSNS0 SAPN DADS SANԠDUNԠϠ ADBAKADDSSSANDMPA 0DU SZBUAŠMV SZBUAŠPN ZSBDMҠSԠUPDMAADPAN DAADAADADADDSSMMAND SBMMD SBDMA SBSAԠGԠSAUS SBHKHKNUMBҠƠDSAD SZSҠNMNԠS DAS PASPԠDN? SSYS MP0DN DBBPSSNŠSҠNŠASSԠAD DABUAŬɠSҠZϠASASԠAD.MV SABɠASԠϠDSAD NBPƠBU SZBUA DABUAŬ SAB DABPSS SABUAŠADBU AA SASҠS SBDHKHKҠSMPAŠBUS DAD6+SZƠS SANԠDUN MPADҬ HDS-SN SN HSSNNSSS AABA ADSADƠUSD. AABA AADADDSS YNDҠADVAN A̠YNDS .ASK .ASAUSKNGҠPSNҠBUSY. .HADADVAN ..ASKϠSԠANנHAD ..AADADDSS .. . AԠHŠNDƠHŠPAKASKSSSUD GϠϠHŠNԠ(NN-SANԠYNDҬ ANDSAUSSHKD. HŠNGPANSA PMDNHŠSԠYNDҠN HŠYNDҠAB. ANŠSҠŠSANGAԠAKZϬSҠZ AϠSҠŠSANGAԠAKZϬSҠSVN AADANDHKƠHŠDAA AUҠSҠŠSANGNAKZ APSNPANϠUNϠAKZ AϠSҠYàHKƠAKZϬSҠSVN AADANDHKƠHŠUҠSS APSNPd2ANϠMVŠϠAK9 AϠDŠHAԠGNASANVUN AUҠSҠŠSANGAԠSҠ0 APSNPANϠUNϠAK9 AADϠHKҠZϠ AADANDHKƠHŠSS GUGB5 àUGB6 SZɠDƠSZ SNP DAAS SBSUƠUNԠSN B SBSAG SBSHASHAԠSAUSSHUDB SBDMƠNϠDMASAԠSA SBSƠNϠNA̠S SBY SBHAD SBSҠHSPSASAԠSҠZ DAB6ABAŠNS SBP DAA̠ADMMAND SBMMDSSUŠMMAND SBAҠAԠҠHŠABA SBHKHKҠS AADSנG ANDBԱ SZASKPƠBԱ0 SBADA̠ŠADDSSUN DAAS SBSUƠUNԠSN A SAY SAHAD SAS SASHASHAԠSAUSSHUDB DAB6ABAŠNS SBP BMŠUSDSZ DAA SBMMDSSUŠABA SBAҠAԠҠHŠABA SBHK SBAKɬɠADADDSSANDHK A SAGSԠGҠSԠSK A SKàU SAY̠SAVŠYNDҠNUMB HŠNGPANSAŬ ASKHAԠAUSSPSNҠMN ANDASAUSPANMMDAY NGHHSHUDSŠA PSNҠBUSYSAUS. DABSKNS SBP B SBSK DAPBB SZGSKPƠNϠMN SASHASHAԠSAUSSHUDB SBSAԠGԠSAUSHŠBUSY SBHKHK҆0S BҠASMŠUN SBSHASHAԠSAUSNMAYS DAGDN' SZASSHKAGN MPSKHAYMPN SBASAԠҠSKϠNSH SBHK A SKHU SAHADSAVŠHADNUMB HŠNGPANSAŬ ASKHAԠAUSSNYHADSHNGAND AADADDSSANDMPAŠHSKADDSS DABSKNS SBP SBSHPMU̠SH SBAKɬɠADADDSSANDHK DAHAD NAUNԠUPϠNԠHAD PAPàHKҠPASԠASԠHAD ANASSSKPUԠƠS MPSKHYNԠHAD ADAY̠ADVANŠYNDҠNUMB PAYPPHKҠPASԠNDƠPAK SSSKPUԠƠDN MPSKàYNԠYND SAY HŠNGPANSASKHA AMPSϠMVŠHŠPSNҠBYND SMS. HŠSKNMPŠSAUSSHKD. DABSKNS SBP SBSKSKϠNN-SANԠYND SBASAԠҠSK DASBԠSKHK ҠABԠANY SASHAS SBHKHKҠS A SAHAD SAS SASHASSAUSSNMAYZ DAҬɠGԠSԠYNDҠHA SAY̠ŠAŠADϠŠN. DAB6ABAŠNS SBP DAA̠ADABAŠMMAND SBMMDSSUŠMMAND SBAҠAԠҠMPN SBSAԠGԠSAUS SBHKHKҠS HSSKUNSϠY̠0HAD0NDAUԠAS DABSKNS SBP SBSKPMU̠SK DABP SABUAD DAD3+SZ SANԠSԠDUNԠҠHŠSS SBDGNGNAŠNנBU HŠNGPANDSHŠS ŠNHŠDSKNHADZϬSҠZ DAD+SZ SANԠSԠDUNԠҠNŠS B DAB5ŠNS SBŠŠNSԠS SBHKHKҠS HŠNGPANSAϠSҠNG ŠSANGAԠHADZϬSҠSVN DAD SASҠPANSASAԠSҠ DAB5ADDSSDNS SBP SBSS DAD+SZ ADABPҠNנBUҠADDSS SABUAD DAD56+SZ SANԠϠSҠDUN DAB5ŠNS SB SBHKHKҠS HŠNGPANSAAD ADBAKHŠNMANN NSҠZ. HŠDAASMPADHHAԠN. A SASҠNԠPSASAԠSҠZ DAB5ADDSSDNS SBP SBSS DAD+SZ SANԠSԠDUNԠҠNŠS DABP SABUADPUԠBUҠADDSSBAK DABPS SABUAŠSԠADADDSS DAB6ADNS SBADA̠ADUN SBDHKHKҠSMPAŠBUS HŠNGPANADSBAKH NMANNNSSSVNAND GH HŠDAASMPADHHAԠN. DAD SASҠPANSASAԠSҠ DAB5ADDSSDNS SBP SBSS DaAD+SZ ADABP SABUADSԠϠSNDADŠADDSS DAD+SZƠADDUN ADABPS SABUA DAD56+SZƠϠS SANԠSԠDUN DAB6ADNS SBAD SBDHKHKҠSMPAŠBUS HŠNGPANSAŠHA SASNAҠHŠNDƠAKZϠAND NNUSNϠHŠNԠAK DASP-3 SASҠSԠSҠNUMB DAB5ADDSSDNS SBP SBSS DAD5+SZ SANԠSԠUҠSҠDUN DABP SABUAD DABPS SABUA SBDGNGNAŠBU DAB5ŠNS SB SBHKHKҠS DAD SASҠSԠSҠSVN HSPANSKSBAKϠHADZ DABSKNS SBP SBSHPMU̠SH HSPANDSAYàHKN SSSVNANDGH DABYàHKNS SAPN DADHKSҠϠSS SBDADϠSҠUN DAYHKADYàHKMMAND SBMMDSSUŠMMAND SBASAԠҠMPN SBHKHKSAUS DASP-3 SASҠSԠS DAB5ADDSSDNS SBP SBSS HŠNGPANADSBAK HŠDAANBYHŠPVUS HŠDAASMPADHHAԠN. DAB6ADNS SBAD SBDHKHKҠSMPAŠBUS PSNϠMVŠϠHŠBMAK DAP-ADASԠAKNUMB SAHAD DAD+0 SASҠSԠSҠN HŠNGSKMVSϠHŠBM AKƠHŠYND DABSKNS SBP SBSHMVŠϠHŠBMAK HSPANUPUSAPAҠƠDSϠH DAAHANN.ABUԠ50MSNDSAҠHŠSND SAPDAHDDSUPUԠϠSԠVUNAG. DABUAD B SBAɠSԠϠDSϠZ NA SBA DAD SANԠSԠDUN DAVSUMPϠSUBUN SADMSPSԠDMABAKAN SBAHAԠҠHADSHNG A SASHAS SBHKSKSHUDHAVŠZϠSAUS H50DAB50VUNNS SB SBHKHKҠVUN A SASHASHAԠSAUSNMAYS DASP-3 SASҠSԠS DAB5ADDSSDNS SBP SBSS DAD5+SZ SANԠSԠDUNԠҠUҠSS SBDGNGNAŠBU HŠNGŠSASNAҠH NDƠHŠYNDҠANDNNUS UN̠HŠNDƠYNDҠҠUS DAB5ŠNS SB MAKŠSUŠHAԠNDƠYNDҠҠUS DAD3+SZ SANԠSԠDUNԠҠHŠSS DABԠADNDƠYNDҠB ҠABԠҠNANYҠB SASHASHSSHAԠSAUSSHUDB SBPŠHKSAUSAנNϠANS A SASHASSAUSSHUDNMAYBŠZ DAD0 SASҠSԠSҠN HSSKUNSϠHŠBMAK DABSKNS SBP SBSHUNϠBMAK HSPANɚSAADANDHKƠHŠS HAԠSHUDHAVŠBNZϠD. HŠPANHKSHAԠHŠDAUSNGH VUNASNԠNNϠHŠS. DAD30 SANԠSԠDUNԠҠNŠS DAVS SADMSPSԠϠNUPԠDMAANS SBAHAԠҠHADSHNG A SASHAS SBHKSKSHUDHAVŠZϠSAUS H5DAB5VUNHKNS SBAD A SAPAԠSԠPAND SBPHKɬ HŠNGADADSBAKHŠDAA NBYHŠPVUS. HŠDAASMPADHHAԠN. DASP-3 SASҠSԠS DAB5ADDSSDNS SBP SBSS DAD5+SZ SANԠSԠDUNԠҠUҠSS DAB6ADNS SBADADAND MAKŠSUŠHAԠNDƠYNDҠҠUS DAH ANDDMƠANNMPŠDMAANSҠSK SADM DAD3+SZ SANԠSԠDUNԠҠHŠSS DABԠADNDƠYNDҠB ҠABԠҠNANYҠB SASHASHSSHAԠSAUSSHUDB SBDHKHKҠSMPAŠBUS A SASHASSAUSSHUDNMAYBŠZ PANϠMAKŠADDSSGSҠDN MAUA̠PSN. SAY̠YND SAHADHAD SASҠANDS DABSKNS SBP SBSKPMU̠SK DAD0HANG SAY̠YND DAB5ADDSSDNS SBP SBSS AS SAY̠YNDҠNUMB PANHKSҠNԠUND DAD5+SZ SANԠSԠDUNԠҠNŠS DAB6ADNS SBAD DANBԠNԠUND ҠABԠANY SASHASHAԠSAUSSHUDB SBPŠHKSAUSAנNϠANS A SASHASHAԠSAUSSHUDNMAYB SKϠYNDҠ0ANDHNSKϠSԠYND NYNDҠAB.AԠHAD9SҠNYADN SҠANDVYNNS.HŠADMMANDSSSUD BŠHŠSKSMP. DBD0 DAҬɠSSԠNYNAB PAD0UA̠Ϡ0 BYS SBY̠Y̠0Ҡ0 B DABSKNS SBP SBSKPMU̠SK DAҬɠSԠYNDҠNAB SAY DAP-AK9 SAHAD DASP-3SҠ0 SAS DABSKNS SBP SBSK DAB6ADNS SBAD SBDHKHKSAUSANDMPAŠBUS ADADDSSSUN̠SҠ9SUNDSSU ADDSSSKPMMANDANDVYDAAAD DAMM3 SAàDϠNY3ADS SPU SBAKɬɠADADDSSANDHK DABPS ANDB3ASҠNUMB PAD9 MPSKUND SZàSKPƠԠSNԠH MPSP SBPPUNԠPAN 6SBҠSҠMSSNGNS SBADDɬɠPNԠAN SKU DAD+SZ SANԠDUN DAB60ADDSSSKPNS SBP SBDMҠSԠUPDMAAD DAADSKADDSSSKPMMAND SBMMDSSUŠMMAND SBDMAԠAԠҠDMAϠNSH SBSAԠGԠSAUS SBDHKHKSAUSANDMPAŠBUS SK<:6ϠHAD0HKҠNDƠYND NDANNA DAD0 SAHADHAD0 DAB SBP SBSKSKNS DAB5 SBŠŠNS DAB SASHASPDSAUS5B DASAUSMASK ANDNB3AGGDAKAND SASAUSNϠDUND SBPŠHKSAUSAנNϠANS SKϠSҠ3ANDHKҠNϠD UNDNAAD A SASHAS SAHAD DAD3 SASҠSҠ3 DAB SBP SBSKSKNS DAB6 SBADADNS DAB SASHASPDSAUSB SBPŠHKSAUSAנNϠANS A SASHAS HKNҠAGMNGBYSKNG3MS BNYNDS0AND0HGHԠD. DAMM3 SAàPAԠPAN3MS SAA SBSZɬɠDϠGHԠSK DAD0 SBSZɬɠDϠGHԠSK SZàDN? MPSAN MPS HDVS m<  12965-18005 1451 S 0122 05DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 M DMABAKUN VSSBPVʬ VʠNP A SADMSPSԠBAKϠN-P ADBDKPMNGAUA DAM56AנASHԠAԠҠHŠAG VҠU SSANASSDN'ԠHANGV MPVؠPNDAGS ADBDADDNYSUSDNP DM6ɠSSDMADSKPHNDMADN MPVҠBAKƠNԠDN SBKAԠҠNԠUSԠϠMŠUP DAVBԠVUNB ҠABԠANY SASHASHAԠSAUSSHUDB SBDADϠUPUԠNŠAD...A VؠU MPVʬɠUNϠDMA HDPŬS HSUNŠASҠNMPŠDMA ANSSHNASHK. PŠNP DANBԱ5 ANDDM SADMƠMASKƠBԱ5 SBHKHKSAUS MPPŬ HANGŠYNDҠABŠUN SҠNPMV DA SұSAPNԠSԠPN DAPNԬ ADAMM SAADYND NAAB SASҠNY MVŠDAADɠDN SASҬɠN DAADAND SASҠPA ADAMMVAU SAADA ADAD PAPNԬ BSSP MPMV DAVAU SASҬ SBVAU MPSҬ HDPA PA PPAŠPANAB PAԱNP DAMMϠNS̠BŠUSD SAPNA DAPAҠADDSS ADAMM0ƠS SAPADPAN DAP0AADDSS SAPSҠƠMSSAG PàDAMM5VŠPANSPҠN SAPN PBDBPS DAPAD SBNPɠNVԠϠAS SZPAD DBPS ADBD3 DABBϠASɠBANKS SAB NB SBPS SZPNԠHAVŠŠDNŠVŠY MPPBN SZPNAYSHAVŠŠDNŠNY MPPAԱɠYS DAƠ06 SAPSҬ SZPS MPP HDPSҬASK HANGŠPANABŠUN PSҠNPADD DAPS SASҠSԠUPUN DAPA MPSұ ASK ASKPAҠƠHŠSHSϠHANGŠAB ASKNP H5DAB5DϠYUSHϠHANGŠAB? SBPN SBHNNPUԠMKYBAD DABNAɠNPUԠBU ANDP00 ҠNN000BSSԠHAAҠN? SZASSSKPƠN MPASK ҠYY300BSSԠHAAҠY? SZA MPH5YAGAN SZASK MPASK NNԠ000 YYԠ300 HDS-SN SNSGANZDASS YNDҠADVAN SH60--A̠YNDSM0Ϡ0 SH6--A̠YNDSNAB . . .PANGNA .GNAŠBUSҠAHƠHŠPANSNPA .SKPHSSNƠSH5 .. ..AKADVAN ..A̠AKSM0ϠP- ... ...BKADVAN ...AHAKSNASHŠBKS .... ....ŠDAABU .... .. ..AKADVAN ..A̠AKSM0ϠP- ... ...BKADVAN ...AHAKSADASH ...BKS .... ....ADAHBK . ... ....HKDAAAD .... ... .. . . G000B SVԠUGBUSDϠUNԠA̠M SVҠUGB SVKàUGB3 PAԠUGBVAABŠϠSAVŠUNԠPAN PNؠUGB5UNҠҠPANAB SNP DAAS SBSUƠUNԠSN A SASVԠZϠA̠MŠNSKS SASV SASVKàZϠSKUN SAYؠSԠZϠNϠNA̠YND S̠U SBYʠANSAŠYؠNϠY AA_0 SAHADPSNҠHADZϠAND SASҠSҠZ DASVԠMVŠSAVDUNSBAK SAMN DASV SAMN HSSKMVSHŠPSNҠNŠYND. HSŠSKSAŠMDANDHŠSUSPND. B DABSKNS SBP SBSK SBAS DAMN SASVԠSAVŠUNԠMSNDUN DAMN SASV SBHKHKҠS DASVK NAUNԠUPSKUN SASVK PAD9HAVŠŠDNŠU̠SKS SSYSPNԠUԠSKMNG MPNנNϬNNUŠN AADSנG ANDBԱSKPƠBԱ SZASA SBYK MPNנABԠPNU DA5BPNԠMNGMSSAG SSASSNYҠ MPNנ56AND00 HUDASVԠADN.ƠMSNDS SBMSVA̠NV DAVԲANS SAP053Aɠ DAV3MSSAG SAP053B H53DAB53AVAGŠMNMUMSKMŠ. SBPNԠPNԠUԠSKMŠMSSAG NנU AADSנG ANDB5HKҠSHԠS SZA SBSHԬɠPԠSHNDSNG SZASKPƠNG MPSHSHNSN HŠNGSNƠDŠYSHUGH A̠NPANSNHŠPANAB DABPҠADBUҠADDSS SABUADSԠŠAND SABUAŠADBUҠADDSSS DAMM0PANABŠSNNSNG SAPNؠSAVŠNUNҠD GNU DAM56+SZƠSҠDUNԠ SAMPSAVŠҠHŠASԠ̠P DBPNؠADHŠPANUN ADBPAPADDNHŠABŠADDSS DABɠADHŠPANϠA SAPAԠSAVŠԠҠHŠPHKUN DBBUADADHŠŠADDSS G̠U SAB NB SAB NB SAB NB SAB NB SZMPUNԠDNUNҠ(BYUҠ MPG̠NNUŠNƠNԠDN HŠNGDŠSHŠPANNHŠBU NϠHŠNŠYND ϠUSŠHŠMNMUMMŠҠAHAKHŠAK SDVDDNϠHDSHHAŠN NHŠDҬSԬHDSND. B SBHADSԠHADϠZ SBSHASSԠSҠϠZ NHנU A SASҠSԠBKSASAԠSҠZ HSSKSSANנHAD DABSKNS SBP SBSHSKϠUNԠHAD HŠNGŠSҠH SԠHDƠHSAK DA SANԠSԠDUN SBAHAԠҠHADSHNG SBHKHKSAUS DAB5ŠNS SB SBHKHKҠS HSPANSAŠ HŠASԠHDƠHSAK DAS SAS DAB5ADDSSDNS SBP SBSS DA SANԠSԠDUN DAB5ŠNS SB SBHKHKҠS HSPANSAŠ HŠSNDHDƠHSAK DASS SAS DABSKNS SBP SBSH DA SANԠSԠDUN SBAH SBHKHKSAUS DAB5ŠNS SB SBHKHKҠS DAHAD NAUNԠUPHADNUMB SAHADAND PAPàNNUŠNƠNԠNSHDHHŠYND ASSDNŬSKPU MPNHנŠNAHAK HŠNGSNADSBAKHŠPANSAND MPASAHDHPA. ANGHԠSҠADSANGAԠSҠZ SҠMSAŠAVAABŠϠHKDAA ASVNSҠADSANGAԠSҠSN SҠMSAŠAVAABŠϠHKDAA ANGHԠSҠADSANGAԠSҠGH SҠMSAŠAVAABŠϠHKDAA HŠADANDHKSNSHDNVUNS SAHADSԠHADZ NHҠU A SASҠSAԠAԠSҠZ DABSKNS SBP SBSHPMU̠SH HSPANSAAD HŠSԠHDƠHSAK DA SANԠSԠNGHƠSԠHD DAB6ADNS SBAD SBPHKHKҠBUҠMSMAH HSPANSAAD HŠASԠHDƠHSAK DAS" SASҠSԠSҠNUMB DAB5ADDSSDNS SBP SBSS DAԠNGHƠASԠHD SANԠSԠDUN DAB6ADNS SBAD SBPHK HSPANSAAD HŠSNDHDƠHSAK DASSԠSҠHŠSNDHDSAS SAS DABSKNS SBP SBSH DAԠDUNԠҠSԠHD SANԠSԠDUN SBAHAԠҠHADSHNG SBHK DAB6ADNS SBAD SBPHKHKҠBUҠS DAHAD NA SAHADUNԠUPHADNUMBҠAND PAPàHKҠNDƠYND SSSKPUԠƠDN MPNHҠNNUŠҠA̠AKS SZPNؠHAVŠA̠PANSBND MPGNNϬGϠBAKҠN SHU SBYDUNԠUPYؠANDHKҠDN MPS̠P MPSɠUN HDPANAB PANAB Ԡ000000 Ԡ Ԡ55 Ԡ0555 Ԡ00 Ԡ0360 Ԡ65 Ԡ6336 Ԡ55555 Ԡ0 PAҠU PAPDƠPA HDS3-SN3 SN3 SN3SGANZDASS GNAŠANDMYNDҠNUMBSAND ANDMHADANDSҠNUMBS . . .GNAŠAANDMDUN .(NԠBYNDNDƠYNDҠ .. .. ..GNAŠABUҠƠANDMDAA ..SŠADƠZϠNϠH ..SԠUNUSDD .. .. ..ŠBUҠϠDSK .. .. +... ...SSUŠSK ... ... ...ADBKBAK ...ADANDHKNŠAD ...NԠAMUPŠƠSҠSZ ... ... ...HKDAAAD ... ... .. .. . . SKNԠUGB PԠUGB SAVŠUGB3 S3NP DAAS3 SBSUƠUNԠSN ASHGSҠϠA ANDB5 DBM0UNԠҠNGVSN SZA SBSHԬɠPԠSHNDSNG SZASKPƠNDDNGS DBMM6UNԠҠSHԠS SBSKN S3AU SBNHGԠANDMYNDҬHADNUMB SBNSàGԠANDMSҠNUMB HSSKMVSHŠPSNҠϠAANDM YNDҠANDHAD. DABSKNS3 SBP SBSKSAԠSKNSAY SBGGԠANDMDUN DABPҠADSԠBUҠPN SABUAD DABPSADSNDBUҠPN SABUA SBDGNGNAŠAANDMBU DANԠSAVŠAS SASAVŠAN+ ADABUADADDBASŠƠŠBU B SBAɠSAVŠϠHKSҠZNG SBASAԠҠSKϠNSH SBHKHKҠS DAMMYUҠADS SAP S3AU HSŠSUPAGVNAAH ANDMDAA.HŠDUNԠMAYBŠM NŠDϠ03DS. DABSKNS3 SBP SBSHPMU̠SH DAB5ŠNS3 SBŠ̠UPHSNAAHUNK SBHK6HKҠS DANԠHKҠSҠBUNDAY ANDB+SZƠHKҠVNSҠBUNDAY SZASKPƠVNMUPŠƠS SZNԠUNԠUPDUN HSSKSSHŠPPҠHAD DABSKNS3 SBP SBSHPMU̠SH HSADADSBAKHŠDAAN BYHŠPVUS. HŠDAASMPADHHAԠN. DAB6ADNS3 SBADADBAKUNK SBDHKHKҠS DASAV SAN SZPԠHKҠNUGHMS MPS3AYSMŠMŠADS SZSKNԠAŠŠDNŠHHSSN MPS3ANԠDNŬYANHҠPA MPS3ɠUN HDG HSUNŠGNASAANDMDUNԠBN AND03.HŠDUNԠ̠NԠND BYNDHŠNDƠYND. GNP AU SBANDGԠAANDMNUMB A ANDBNԠ<0 SZASSZϠSNԠGA MPAƠZϬYAGAN ԠU SANԠSAVŠHSNDUN DBHADHKҠASԠHADNYND NB PBPàHKҠASԠHAD SSASԠHADMAYBŠUB MPGɠNԠNASԠAKNϠSA DBSPԠADNUMBҠƠSSPҠAK MBNBNGAV ADBSҠAנҠHŠŠAŠN AƬAƠNVԠNԠϠSҠUN A ANDB+SZƠHPƠA ADAB SSASKPƠϠNG MPGɠNGAVŠAMANSKAY DANԠADHSNDUNԠAND ASHAVŠ MPԠANDSϠN HDYDY YDUNSUPYؠANDHKSҠMPN SԠNAC640̠YNDS.ԠGVSASKPUNHN A̠YNDSHAVŠBNVD YDNP DBYؠADUNԠYNDҠN NBUNԠԠUPBYN SBYؠANDSŠԠBAK MBMAKŠNSMPMN SBSҴADVŠSHGS ANDB6HKҠSDYNDS SZASSSKPƠSHԠSԠUSD MPDYU̠S ADBD0HŠAŠNABŠNS MPDZ DYU ADBYPPHKҠNDƠPAK DZU SSBSKPƠNԠDN SZYDUNԠUPUNADDSS(DNŠ MPYDɠUN YʠANSASHŠNUMBҠNYؠϠHŠDSD YNDҠNUMBҠNY YʠNP SBSҴADVŠSHGS ANDB6HKҠSDYNDS SZASSSKPƠSHԠS MP DAY DBD39 ѠU ADAMM0HKҠYؠϠBG ADBD SSASSSKPƠKAY MPѠHSŬKPDUNG ADABPADDNABŠADDSS DAAɠADHŠDMHŠAB SAY̠SԠBAKNϠYND MP נU DAY SAY̠SAGHԠPY DBD35 ؠSBK MPYʬɠUN HDAKABŬSҴ it6   12965-18006 1451 S 0122 06DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 N AKAB BNUAKABŠBGN Ԡ00000000 ABSY BPDƠ SҴ NPUԠSHGSҠƠSAG0(SSS3 USŠSDVSNƠSAG(SS5S6 SҴNP DASAGSAG? SZA MPSҴAN AYSUSŠSנG MPSҴ SҴADAS00US ADAUNԠSD DAAɠVAU MPSҴ HDS-SN SNSGANZDASS YNDҠADVAN SH60--A̠YNDSM0Ϡ0 SH6--A̠YNDSNAB . . .ANDMNUMBҠGNA .GNASANנBUҠƠANDMDAA .ҠAHYND . .AKADVAN .A̠AKSM0ϠP- .. ..BKADVAN ..AHAKSNASH ...BKS ..HŠSHMŠUSDSHŠSAM ..ASHAԠƠHŠSN ..PANADSN ..GNANDPHKAK ..ABUԠHŠSAMŠAMUN ..ƠM. ... ...HKSUMBKSϠHAԠԠS ...UNUŠANDDNAB. ... ...ŠBKϠDSK ... .. . . . HSSNHNADSANDMSSAND VSHAԠHYAUAYAŠHŠSS USD.AԠHŠNDƠAHSKAADS SSUDҠHŠNԠAVAABŠS.ASSN ASHSADSMPDHŠNԠSKS SAD.HŠDAADSHKDASSNAS HŠSKSNAD. SNP DAAS SBSUƠUNԠSN AADSנG ANDB6SAVŠBԠ6 SZA SBSHԬɠPԠSHNDSNG DBS00 ADBUNԠSANDS5 SAB ANAA SASAG A SAYؠSԠYNDҠNŠD S̠U SBYʠANSAŠYؠNϠY A SAHADPSNҠHADZϠAND SASҠSҠZ B HSSKAUSSPSNҠMN HŠNԠYND. DABSKNS SBP SBSKPMU̠SK HŠNGSNƠDŠGNASH HKSUMMDANDMDAA. DAԠNGHƠSԠHD SANԠSԠDUN SBDGNGNAŠANDUMBU A SASHASSAUSSHUDBŠZ SNU A SASҠHSPSASAԠSҠZ DABSKNS SBP SBSHPMU̠SH HSPANSAŠ HŠSԠHDƠHSAK NԠANDSҠAŠSԠUP SBGNGNAŠHKSUMS DAB5ŠNS SB SBHKHKҠS HSPANSAŠ HŠASԠHDƠHSAK DASԠSҠHŠASԠHDSAS SAS DAB5ADDSSDNS SBP SBSS DAԠNGHƠASԠHD SANԠSԠDUN SBGNGNAŠHKSUMS DAB5ŠNS SB SBHKHKҠS HSPANSAŠ HŠMDDŠHDƠHSAK DASSԠSҠHŠHSHDSAS SAS DABSKNS SBP SBSH DAԠNGHƠMDDŠHD SANԠSԠDUN SBGNGNAŠHKSUMS SBAHAԠҠHADSHNG SBHK DAB5ŠNS SB SBHKHKҠS DAHAD NAUNԠUPAKNUMB SAHAD PAPàHKϠSŠƠDN SSSKPUԠHNDN MPSNNSHNŠYND SBYDUNԠUPYؠANDHKҠDN MPS̠NNUŠNϠNԠYND ASKϠHŠSԠNYNHŠYNDҠABŠPDSAH YàHKƠ63656AND0SS.H NNZ0SҠUNS̠SUԠNANDƠYNDҠSAUS SHUDANYBԠƠHŠSҠUNҠA̠ϠS.HŠZ SҠUNԠ̠A̠ϠSUԠNANDƠYNDҠSAUS SHUDANYBԠƠHŠSҠUNҠA̠ϠA. A SAHAD SAS DAҬ SAY DAB0D SBDHK DABԱD56 SBDHK DABԲD5 SBDHK DAB3D0 SBDHK DABԴD0 SBDHK DAB5D096 SBDHK DAB6D9 SBDHK DABԷD63 SBDHK DABԸD36 SBDHK DAB ҠAB SASHASPDSAUS AD0 SBDHK MPS5NNUŠHŠSN HDDHK YàHKUN DHKNP SANԠSAVŠNUMBҠƠSS DABSKNS SBP SBSKPMU̠SK DABYàHKNS SAPN DANԠNUMBҠƠSS SB_DAD DAYHK SBMMDUPUԠYàHKMMAND SBASAԠҠMPN SBHKHKSAUS MPDHK HDGN GN HSUNŠNSUSHŠHKSUMSҠHŠŠBU. .AHSҠSHKSUMMDSPAAY .HŠNŠSҠSUMSϠZϠ(SMPMNԠ 3.HŠSԠϠDSSUMϠHŠYNDҠNUMB .DSAND3SUMϠHŠHADSҠNUMB GNNP DAN AƬA A ANDBAVŠHŠNUMBҠƠSS MANAMPMNԠҠSZ SAMP DAHAD AƬAƠHADNUMBҠϠԠSD ҠSҠPUGNSҠNUMB SAMP DBBUADADADDSSƠSԠS G̠U DAMM3+SZ SAMP3UNԠҠUҠUNԠP DABɠGԠDZ MANAMAKŠMPMN ADAY̠HSSUMSϠHŠYNDҠNUMB NBUNԠUPBUҠADDSS SAB NBUNԠUPBUҠPN DABɠADD MANAHKDSMPMN ADAMPADDHADS NBUNԠUPϠSԠҠD SABɠSAVŠSNDHKD DAY ADAMPADDNHADSҠNUMB SUMϠDAŠNA GƠU NBUNԠUPBUҠPN ADABɠADDNNԠDƠBU NB ADAB NB ADAB NB ADAB SZMP3HKҠDN MPGƠGԠNŠBU MANAHKSNGAV ADABɠSUBAԠUԠASԠD SAB NBUNԠϠBGNNNGƠNԠS SZMPUNԠUPSҠNUMB SZMPHKҠDNŠHNŠŠBU MPG̠NϬGϠDϠANHҠS B MPGNɠUN HDNHNS UNŠϠPKAANDMYNDҠANDHADNUMB AVSϠMAHNŠYSUNUND. NHNP NAU DBD33 SBK SBANDGԠAANDMNUMB AƬAƠUSŠԠHA ANDB3Y̠<56 SAYؠSAVŠNYNDҠNŠD MANSMPMN ADAYPPANNԠBŠANN-SANԠYND SSASKPƠKAY MPNAHSŬYAGAN SBYʠANSAŠYؠNϠY NDU DBD3 SBK SBANDGԠAANDMNUMB AҬAҠϠMNAŠAN-S ANDB3HAD<3 SAHADSԠHADNUMB MANSMPMN ADAPàSԠҠGA̠HADNUMB SSASKPƠKAY MPNDHSŬYAGAN MPNHɠUN UNŠϠPKAANDMSҠNUMB NSàNP NSAU SBANDA̠ANDHŠMS SBANDGԠHŠGDBSNGHԠND SBANDϠMNAŠAN-HAD SBAND AҠDϠNԠUSŠBԠ0(NԠANDM ANDB3SҠ<3 SASҠSAVŠSҠNUMB MANSMPMN ADASPԠSԠҠGA̠SҠNUMB SSASKPƠKAY MPNSAHSŬYAGAN MPNSìɠUN HDS-SN(ND NNUŠSN ANԠUGBSKNGHUN ZY̠UGB5HDSPVUSYNDҠNUMB ZHDSUGB6HDSPVUSHADS S5A SAANԠZϠSKNGHUN SASVԠZϠA̠MŠNSKS SASV SASVKàZϠSKUN SASHASHAԠSAUSSHUDB A- SAS DAD+SZƠHKNŠS SANԠSԠDUNԠҠNŠS S5àU DAY̠ADPVUSYNDҠNUMB SAZY̠ANDSAVŠԠҠHK DAHADADPVUSHADNUMB AƬAƠMVŠϠԠHA ҠSҠPUGNSҠNUMB SAZHDSANDSAVŠҠHK AKŠUUSDNHK SBNHGNAŠYNDҠANDHADNUMB SBPNSìɠGNAŠNנSҠNUMB DASVԠMVŠHŠUNS SAMN DASV SAMN HSSKMVSϠA ANDMYNDҠANDHAD. DABSKNS SBP DBD3 SBSKSAԠSK SBKAKŠAŠƠUN SZSԠSKPƠSԠM SBHKYSNԠSԠMŠHUGH SBASAԠҠSKMPN DAMNԠMVŠUNSBAK SASV DAMN SASV SBHK HSADADSNNŠS MANDMAN DAB6ADNS5 SBADGϠDϠAD A SASԠPPAŠҠP SBHK A SASԠS DAY̠ADYNDҠNUMB MANA ADAZY̠GԠSKNGH SSASKPƠNנPSV MANAABSUŠVAU ADAANԠADDϠA SAAN DASVK NAUNԠUPSKUN SASVK PADSKPƠNϠPN SSH.PNԠUԠMNG MPS5ŠNԠN DA5BPNԠMNGMSSAG SSANYҠ5 MPS5Š6AND00 A ANDBԱABԠ SZABԱSA SBYK MPS5ŠABԠPNU DASVԠADA̠M SBMSVNVԠϠAS DBP05A DAVԱANS SABɠ NB DAVԲMSSAG SAB NB DAV3 SAB DAANԠADA̠NGH SBMSVNVԠϠAS DBP05B DAVԲANS SABɠ NB DAV3MSSAG SAB H5DAB5 SBPNԠAVAGŠANDMSKMŠ.. AVAGŠANDMSKNGH. S5ŠU DBSVKàADSKUN ASנGϠA ANDB5 ADBM56SHԠS SZASSSKPƠYS ADBM936 SZA SBSHԬɠPԠSHNDSNG SSBSKPƠDN MPS5àDϠANH MPS HDHK HK HSUNŠHKSHŠBUSGNADBYGN ԠUSSBUAŠҠAPNҠANDHKSNŠS SŠGNҠADSPNƠHŠSҠMA HKNP DAHKSAVŠUNADDSSҠ SBHKMBUҠHKSUM SZASKPƠHKSUMK MPҠHKSUM DAMPGԠYNDҠHKBAK PAZY̠HKҠPPҠYND SS MPҠNGYND DAMP3GԠHADSҠBAK PAZHDS MPؠNϠBUҠSHKSAUS ҠU SBASPAUN DAZY̠S SAY̠Y DAZHDS AƬA ANDB3 SAHADHAD DAZHDS ANDB3 SASҠANDS A- SASԠSԠSԠAG DAB3ADHKNS5 SAPN DAAKŠS SAHKUN ұU DAMPADHKSUM DBP05APN-HKSUM 0.*SBNPɠNVԠϠAS DAMPADYNDҠHK DBP05BPN-YND SBNP DAMP3ADHADSҠHK DBP05àPN-HADANDS SBNPɠNVԠϠAS DAMP DBP05DPNԠYNDҠNDMA SBDN DAMP3 AƬA ANDB3 DBP05ŠPNԠHADNDMA SBDN DAMP3 ANDB3 DBP05ƠPNԠSҠNDMA SBDN 5DBB5BUҠHKSUMؠY YYYYYYHDSZZZZZZ SBSƠSԠҠMSSAGŠPN SBàSAVŠҠH MPZGϠANAYZŠS HDHK HK MBUҠHKSUM HKNP SAHK ADBD330 SBK SBA DBBUAŠADBUҠPN DAM+SZ SAMPSԠUNԠҠADDP DABɠADSԠD NB ADABɠMAKŠYNDҠHK NB SAMPSAVŠYNDҠHK DAB NB ADABɠMAKŠHADSҠHK NB SAMP3SAVŠHDSHK ADAMPHKSUMSϠA ѠU ADABɠADDUPA̠DS NB SZMPUNԠDNUN MP SAMPSAVŠHKSUM DBA MPHKɠUN HDS5-SN5 4S0   12965-18007 1451 S 0122 07DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 O SN5 HSSNUNSMUPŠUNԠSԠƠϠUNS AŠPSN.HŠSKSVAP.HŠADHKSHŠSAM HAԠS5PMS. DHANGUGB5 S5NP DAAS5 SBSUƠUNԠSN A ANDBԸ SZASSSKPƠBԠS MPS5ɠAB SZGB6 MPS6S SZN DAN PAD3AŠBHDVSNAZD MPS6SԠYS DAUNԠNϬNAZ ҠDH SAUNԠUN MPS5 S6SԠU DABSKNS5 SBP A SASHASPDSAUS0 SAUNԠUNԠ0 SAY̠Y̠0 SAHADHAD0 SASҠSҠ0 SBSKSKNS5 DABSKNS5 SBP ANA SAUNԠUNԠ SAY̠Y̠ SBSK DABYàHKNS5 SBP A SAUNԠUNԠ0 ANAHKSҠNŠS SBDAD DAYHKYàHKMMAND SBMMD SBAS DAB SASHASPDSAUS SBHK A SASHASPDSAUS0 DAD+SZ SANԠNŠS DAS0MAK ҠS0+BH SAS0SNDAS SAS0+HŠSAM A SAS6NԠNUMBҠƠDUBŠSKS S6̠U SBNHANDMYNDҠANDHAD SBNSàANDMS DAMM SAGB6 DABSKNS5 SBP A SAUN SBSKSKNUNԠ0 SZUN SBSKSKNUNԠ SBASAԠҠAG DASAUSSAUSNUNԠ ANDPBB SZASKPƠUNԠNSHD MPS6ԱUNԠ0MPDS S6ԲU SBHKHKSAUSNSK DAB6ADNS6 SBAD SBHKHKSAUS SBS6HKHKBU SZGB6 SS MPS63DN DAUNԠS ҠDH SAUNԠUN S6ԴDAB SBPҠSKNS5 A SADHANGDN'ԠAנHANG S65SBSA ANDPBB SZASSSKPƠBUSY MPS66NNU SZDHANG MPS65YAGAN SBHKPUN S66U SBSHADA SBAHANDSԠԠHAD MPS6Բ S6ԱA SAUN MPS6Դ S63U SZS6NԠBUMPUN DBS6N A ANDB5SHNS? ADBM56-56 SZASSSKPƠYS ADBM936 SZA SBSHԬɠPԠSHNDSNG SSBDN? MPS6̠N A BUNԠ0 ANDBԴ SZASKPƠBԠ0 NBUNԠ SBUN ANA SANɠNɠ SAGB6AנSNϠBŠPD MPS5 HDS6HK S6HK HKSBUҠҠPPҠPSNANDDAA ANS S6HKNP DAS6HK SBHKMBUҠHKSUM SZASKPƠK MPSҠ DAMP PAY̠SYNDҠK? SSYS MPSҠNϬ DAMP3 AƬA ANDB3 DBA DAHAD PABSHADK? SSYS MPSҠNϬ DAMP3 ANDB3 PASҠSSҠK? MPؠYS SҠU H3DAB3 SAPNADHKNS6 MPұ HDPHK PHKUN. HSUNŠHKSHŠNŠADBUҠ UAYHHŠDNPA. PHKNP DAPHKADUNADDSS SAHKSAVŠҠPSSBŠA DANԠADBUҠNGH ASASDVDŠBYGH AS(ҠGHԠUNԠP MANASMPMN SAMPSԠUNҠҠP DAPAԠADMPASND DBBUAŠADADBUҠADDSS PH̠U SAMP6HKҠMAHHBU DAMMUNԠUPBUҠADDSSAND SAMPSKPMS-MPA DAMP6 NԠPAB NBSS MPPH SZMP MPN SZMPUNԠU MPPH̠NԠDNŬNNUŠHKNG MPؠNϠBUҠSHKSAUS PHŠSBMPPNҠ-S DAPAɠSԠUP SAMPSHUDBŠPAԠƠҠMSSAG DABUA MANA ADAMPADNUMB MPű0 MPBSS HDMSV HSUNŠAKSHŠNUMBҠNHŠA-G DVDSBYANDPUSHŠASɠ(DMA̠ SUԠNϠVԱVԲANDV3(.ة MSVNP SAMPADNUMBҠƠMSNDS AƬA A̠DVDŠBY ANDB3NGA̠NUMBҠƠMSNDS SBDNNVԠNGҠϠDMA̠AS DAMPSAԠNANPA ANDBAVŠNYANPA BB_- MD̠ADAMM3SŠϠ0 NBUNԠUPNHSPA SSASSSKPƠNHSAUANDN MPMD ADBASD0MAKŠNϠ. SBV3S MPMSVɠUN HDADDϬN UNŠϠPNԠUԠHŠUNԠDSKADDSS ADDϠNP SBBKSYAVAAB? MPAUԠN DAY̠YSNVԠYNDҠNUMB ANDH DBP05AϠAS SBDNANDSŠNMSSAG DAHADNVԠHADNUMB DBP05BϠAS SBDNANDSŠNMSSAG DASҠNVԠSҠNUMB DBP05àϠAS SBDNANDSŠNMSSAG DANԠNVԠDUN DBP05DϠAS SBDNANDSŠNMSSAG DAUNԠNVԠUNԠNUMBҠϠAS ADAASZZ030060BANDSŠNMSSAG SAP05Ŭ H5DAB5Y̬HADS SBPNԠDUNԠؠUNԠ AUԠSBHԠAנHAS MPADDϬ HŠNԠUNŠUSSNVԠϠNVԠHŠDN HŠAGϠA̠ANDMVSHŠHŠASɠDS HŠANSPDBYHŠBG. NԠNP SBMPSAVŠADDSSҠA̠DS SBNVԠNVԠAUA̠DϠA DAVԱADSԠD SAMP SZMPUNԠUPADDSS DAVԲ SAMP SZMP DAV3 SAMP MPNԬ HDNV HŠNVԠUNŠNVSHŠSNGŠDNHŠA G.ϠHŠASɠDS(A̠NVԱVԲANDV3. NVԠNP SAMP5SAVŠD DBADϠBAS A ANDD SSB ҠBԸNŠҠԠA̠DG ҠASZZ SAVԱ DAMP5GԠDBAK AƬA A̬A ANDBAVŠϠDGS DBASAVŠҠAH AƬA̠MSԠϠPSN ҠBҠHŠϠGH ANDB30 ҠASZZ SAVԲ DAMP5GԠDBAK ANDBAVŠASԠϠDGS DBA AƬA Ҡ#B ANDB30 ҠASZZ SAV3SAVŠGHMSԠDGS MPNVԬɠUN HDMSSAGŠABS MSSAGŠNUMBҠAB àABS- ҠDƠ+ DƠH0 DƠH DƠŲ DƠ3 DƠŴ DƠ5 DƠ6 DƠŷ DƠű0 DƠű DƠű DƠű3 DƠű NPH5 NPH6 DƠH DƠH0 NPŲ NPH DƠH3 DƠH DƠH5 DƠH6 DƠH DƠH30 DƠH3 NPH3 NPH33 NPH3 DƠH35 DƠH36 NPH3 DƠH0 NPH NPH DƠH3 NPH NPH5 NPH6 DƠŴ DƠH50 DƠH5 DƠ5 DƠH53 DƠH5 DƠH55 DƠH56 DƠH5 NPH60 NPH6 DƠ6 DƠ63 DƠ6 DƠH65 NPH66 NPH6 DƠH0 DƠH DƠH DƠŷ3 DƠH ҠDƠ HDAK UNŠϠADANADDSSANDHK YNDҠANDHADMAH. AKNP DAB3ADADDSSNS SBP DAAKADUNADDSS SAHKSAVŠҠA DABPSADBUҠPN SABUAŠҠNPUԠPAN DADDUNԠҠADADDSS SAN SBDMҠSԠUPDMAAD DAADAADADADDSSMMAND SBMMDSSUŠMMAND SBDMAԠAԠҠDMAPANϠNSH SBSAԠA̠ҠSAUS AKDABUAŬɠADSԠDAD PAY̠MPAŠҠYN DҠNUMB SS MPNMNϠMPAŬ DABPSɠADSNDDAD AƬAƠGHԠUSYHADNUMB ANDB3AVŠNYHADNUMB PAHADSHUDMAHHAD MPؠADDSSKHKHҠS NMU DABPSɠADSԠDADN DBP0A SBNPɠNVԠϠA̠ANDS DABPSɠADSNDDNBU DBP0B SBNPɠNVԠANDS DBBADDSSADASؠYYYYYY SBSƠSԠҠPN MPZGϠANAYZŠS HDS6-SN6(PDSN PDSN PAҠDSGNSN HSSNASHŠPAҠϠDSGN HSNSԠANDHNUŠ. G6000B PDSNDAAS6 SBSUƠUNԠSN DABPϠSAԠƠKAA SABDSAGŠPN SAPS DAB ANDMMDMN PABԱMMYSZ SSANDM MP+3PDSNϠK DAAM MP+3 DABPDSNϠK ADAMM SAAM SABP DABPҠS SABUADUP DABPSPNS SABUA A SAAB SASHASZϠPDSAUS SAS SADM H55DAB55NҠNSUNS SBPN PDU SBHNNPUԠN A SAPAG DADMMNYUSD SADDAUԠAS SBPAKGԠPD MPH0ҠNNPU DBD PDUSAH PABɠDŠMAH MPPD3UND NB PBD SSҠ-BADPD MPPD H0DAB0UNDNDNSUN SBPN MPPD PD3U >,ADBD SBPNԠPD ADBU SBPNDHKҠAB DABɠPSSNSUN MPA SKP PUԱAҬDSSSҬ PUԱDAPPԱ SADSŠANSҠV A SADDAUԠAS SAD3 SBHAҠGԠNԠHAA MPPU5BDN SBPUԱGHKҠMMA SBPUԱDPSSSԠDYND SAD SBPUԱDPSSSNDDHAD AƬA SAD3 SBPUԱDPSSHDDS ҠD3 SAD3 DAPAGDN? SZASSSKPƠYS MPPUԱA MPPU5B PUԱBDAD3 PUԱƠSBBUD MPPD PUԱASBH3BADNPU MPPD PUԱDNP DAPAGDN? SZA MPPU5BYS SBPUԱؠNϬGԠNԠD MPPUԱD PUԱؠNP SBDHAҠGԠNԠD SS MPPUԱج SBPUԱŠDNŠҠ? SZPAGDN MPPUԱجɠNNU PUԱŠNPDNŠҠ? DBNԠUMNSMANNG SZB MPPDҠ(AADYPD MPPUԱŬ PUԱGNPHKMMA ҠB5 SZASS MPPUԱGɠK MPPUԱA PUԱHNP SBHAҠGԠNԠHAA MPPUԱBDN SBPUԱGHKҠMMA MPPUԱHɠUN SKP PUԲASŬì̬SSSSԬAA PUԲNP DAPPԲ SADSŠANSҠV SBHA SSSKPƠDN MPPUԱA MPPU3ʠ SKP 0.**0   12965-18008 1451 S 0122 08DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 P PU3GϬB PU3DAPP3ANSS SADSŠANSҠV SBHA MPPUԱA SBPU3KGԠAB SBHAҠHKNԠHAA SSK-SKP MPPUԱA-ϠMANYHAAS DAPNԠPD MANA ADAB5SԠB? SZASKPƠYS MPPU3AMUSԠBŠG SBPU3DSAHҠAB MPPU3BNԠH SZBPUND DABPɠADDSSD SZASSSKPƠPVUSYDND MPPU3 HDABDUPAŠAB SBPN MPPD PU3BSBPU3̠HKҠV PU3ŠDABDNԠAVAABŠAN SABPɠSŠADDSS PU3ʠDAD MPPUԱƠ PU3ASBPU3DGϬSAHAB MPPU3ƠDDNԠND SZBPUND PU3GDABP ANDB3 ҠMPɠ6000B SAD MPPU3 PU3ƠSBPU3̠HKҠV A SABPɠZϠADDSSD MPPU3G PU3DNPSAHAB DBABàNUMBҠƠABS PU3ɠSZBSS MPPU3DɠZϠABS DABP PAAB MPPU3HUND DABPSP ADAMMBAK SABPHUGH ADBMMDMNԠAB̠UN MPPU3 PU3HSZPU3DNMA MPPU3Dɠ PU3KNPGԠAB SBPUԱGHKMMA SBPAK MPPUԱA SAAB̠SAVŠAB DABP SABP MPPU3K PU3̠NPHKҠKSPAŠV SBPU3N SZAB DAAB SABP SZBP MPPU3̬ɠNMA̠ PU3NNP DAAB ASϠANSPҠkAB ADABD ADAD DBBP MBNB ADBA SSBSS MPPU3MV MPPU3N PU3MDAB6V SBPN MPPD SKP PUԴDDD PUԴDAPPԴ SADSŠANSҠV SBPUԱHKҠMMA SBPUԱؠNϬGԠNԠD SAD DAPNԠS ҠB6 SZASSAD? SBPU6DYSMԠDUN DAPAGDN? SZASSSKPƠYS MPPUԱA MPPUԱB PU5B PU5DAPP5 SADANSҠV ANA SAD3DAUԠNUMBҠƠҠPNS SBHA MPPU5BDN SBPUԱGHKMMA SBDHA MPPU5ADNŠҠ? SZDԠSKPNDAU SAD SBDHA SS MPPUԱA SBPUԱŠDNŠҠ? SZDԠSKPNDAU SAD3 MPPU5B PU5ASBPUԱ SZDԠSKPNDAU SAD PU5BDAD MPPUԱƠ SKP PU6DB PU6DAPP6 SADSŠANSҠV SBPUԱHKҠMMA SBDHA MPPU6àDNŠҠ? SZDԠSKPNDAU SAD SBPU6D SBHA MPPU6ADNŠҠ? SBPU6B SBHA MPPUԱA ҠB03 SZA MPPUԱA DAD ҠBԱ SAD SBHA MPPU5BSHUDBŠDN MPPUԱA PU6ASBPUԱŠDNŠҠ? SBPU6B MPPU5B PU6BNP SZDԠSKPƠDAU SSK MPPUԱA SAD3 D]ABԱ5 ҠD SAD MPPU6B PU6àSBPUԱŠDNŠҠ? SZDԠSKPƠDAU SAD SBPU6D MPPUԱB PU6DNPHKD-MUSԠNԠBŠGA DADHAN0 SSAMUSԠB MPPUԱAPSV MANA ADAD0 SSA MPPUԱA MPPU6D SKP PUԷN PUԷDAPPԷ PUԷGSADSŠANSҠV DBABàNUMBҠƠABS DABP NA SABP PUԷDSZBSSSAH MPPUԷBUNDNDABS DABP SZASS MPPUԷ DABP ADAMM SABP ADBMM MPPUԷD PUԷBSBHA MPPUԷƠNMA̠SA SBPU3K SBHAҠHKNԠHAA SSK-SKP MPPUԱA-ϠMANYHAAS SBPU3DSAHAB MPPUԷADDNԠND SZBPUND DABP SAPS PUԷƠDAD SBBUD MPPSԬɠSAԠUN PUԷàDBBP ADBMM DAB PUԷŠSAP056A H56DAB56UNDNDAB̬ SBPN MPPD PUԷADAAB MPPUԷ SKP PUԸSD PUԸDAPPԸ SADSԠUPANSҠV SBHA MPPUԱA SBPUԱGHKMMA SBDHA SSSHUDBŠDN MPPUԱA SBPUԱŠҠҠDN? SZDԠDAU? SSN MPPUԱAYS SAD MPPUԱB PU9A PU9DAPP9 SADSԠUPANSҠV A SADDAUԠAS SBPUԱHKҠMMA SBHA NP E7ҠB0SԠAD? SZASKPƠYS MPPU9AN DABԱDVŠNDA PU9BSAD SBHA SS MPPUԱA MPPUԱB PU9AҠBSԠAP? SZASKPƠYS MPPUԱANϬ DABԱ5PVŠNDA MPPU9B SKP PԱ0SìH PԱ0DAPPԱ0S DBPN ADBMM0-0 SZBSSSKPƠS DAPPԱ3H SADSŠANSҠV A SADDAUԠVAU SBPUԱHKҠMMA SBHA SSK MPPUԱA SBPUԱŠDNŠҠ? SZDԠSKPNDAU SADSŠVAU MPPUԱB SKP PԱ PԱSBHA SSSKPƠDN MPPUԱA DABD PABP MPPDNHNGϠAS ADAMM DAA SAA̠PVUSANSҠV AƬA ANDB3DUN MANA ADABD SABDBDBD-DUN DAA ANDB3 ҠB5SԠB SZASS MPPԱAYSB ҠB SZASKPƠG MPPD DABD ANDBGԠADDSS ADAPAGŸ6000B SAA̠ƠNDAB DAA̬ɠSHSAB SZADND? MPPDYS DABDɠSAHҠHҠNS SAMPMASKUSDϠSAHҠH DABDNS SAMPPN PԱàPABP MPPԱBNԠUND DAMP ADAMMGԠANSҠV DAA AƬA ANDB3GԠDUN MANA ADAMPADDҊSSADDSS-DUN SAMP DBMP PBMP MPPDANHҠNŠASUND MPPԱ PԱADABPSAHABŠҠAN NAHSAB PԱŠSABP DABP PABD MPPԱDUND DABP ADAMM MPPԱ PԱDSAMPKAAPN DABP SAA̠ADDSSƠAB ANDB3 ҠMPɠ6000B SAMPMASKUSDϠSAHҠH ANS SAA̬ɠZϠUԠAB DAMP MPPԱ PԱBANϠNŠUND DBA ADBMM SABɠAB̠0 NA SAA̬ɠADDSS0SϠԠ̠B MPPDDND SKP PԱP PԱUPDSN PԱP PԱDAPPԱANSҠV MPPUԷG PԱ5 PԱ5DAPPԱ5 SADSŠANSҠV SBHA MPPUԱA SBPU3KGԠAB SBPU3DSAHAB MPPUԷADDNԠND- SZBPUND DABP ANDB3 ҠMPɠ6000B SAD SBHA MPPUԱA SBPUԱG SBDHAҠGԠNUMBҠƠMSϠPA SSK-SKP MPPUԱA SBPUԱŠDNŠҠ? SAD A SAD3 DAD5 SBBUD MPPD SKP VPAҬDSSSҬ VPNP SBPNDHKҠAB DBVPɠD DAVP SAA SBY̠YND SZVP DAVP ANDB3 SASҠS DAVP AƬA ANDB3 SAHADHAD SZVP DlAVPɠD SZVP ANDB3PD SZA MPVPA DAB5A SBP SBSS MPVP VPAҠB3 SZA MPVPB VPDDABS SBP B SBSKSK SBASAԠҠSK DAVPɠNԠANSҠV SBVPGHKSAUS MPVPɠ VPBҠB6 SZA MPVP SZBSSDS DBD03 ADBMMDMNԠY VPŠSBA̬ɠHANGŠD MPVPD VPàҠB SZA MPVP NBS PBD03 B MPVP VPGNP PAPPԱ0SNԠANSҠVҠS MPVPGɠYS SBHKN MPVPG VPԠDAHAD NANMNԠHAD PAD0DϠNԠDŠNUMBҠ9 MPVPנNMNԠY̠ANDAҠHAD VPؠAƬA SZA SAA̬ɠSŠHAD-S A SAS MPVPD VPנDAY NANMNԠY PAD03DϠNԠDŠNUMBҠ0 A SAA̬ɠSŠY AAҠHAD MPVP SKP VPASŬì̬SSSSԬAA VPNP SBPNDHKҠAB DAVPɠD SZVP ANDB3PD ҠB SZA MPVPA DAD+SZƠAS SAN DAB60ADDSSSKPNS SBP SBDMҠSAԠDMA DAADSKADDSSSKPMMAND SBMMDSSUŠMMAND SBDMAԠAԠҠDMAϠNSH SBSA VPZDAVP SBVPGHKSAUS MPVP VPAҠB3 SZA MPVP SBNHɬɠSANDMYNDҠANDHAD SBNSɬɠANDMS DAVP *hSAVP MPVPD VPŠҠD6 SZA MPVPB DAVP SAVP MPVPD VPBҠB5 SZA MPVP SASҠ VPàA ANDB3 PAB3 MPVPɠSҠ3DN ANDB SZASS MPVPD DAD9SҠY̽HAD9 SAHAD DAD MPVP VPDSAHADSҠ0Y̽3HAD0 DAD3 VPؠSAY DAB SBP B SBSKSKD SBASAԠҠSK SBHK MPVPàY VPƠҠB33 SZA MPVPH DAB6 SBP B DAA̠ABAŠMMAND SBMMDSSUŠABA SBAҠAԠҠABAŠϠNSH VPʠSBSA MPVPZ VPHҠD SZA MPVP SASUPPSS MPVP VPɠҠD3 SZA MPVP NAS SASUPP MPVP VPנҠB5 SZA MPVPY DAD+SZƠA SAN DAB3 SBP SBDMҠSԠUPDMA DAADAADADDSSMMAND SBMMDSSUŠMMAND SBDMAԠAԠҠDMAϠMP SBSA MPVPZ VPYDAVPASԠUP SAHKUNADDSS MPAKɬ SKP VPDDD VPNP SBPNDHKҠAB DAVPɠD SAN SZVP DAVPɠD3 SZVP ANDB3PD ҠB6 SZA MPVPA DAB6D SBAD VPàDAVP SBVPGHKSAUS MPVPɠ VPAҠB3 SZA MPVPB DAB5D SB MPVP VPBDABD SԈ0.*APN B DAN AƬA A ANDBSҠUN SAN SBDAD DAYHKYàHKMMAND SBMMD SBAS MPVP SKP ]0   12965-18009 1451 S 0122 09DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 Q VP5B VP5NP SBPNDHKҠAB DAVP5ɠD SAN SZVP5 DAVP5ɠD3 SANUMP SZVP5 SBDHKMPAŠBUS SZVP5 DAD SANUMP MPVP5 SKP VP6DB VP6NP SBPNDHKҠAB DAVP6ɠD DBA ANDD3 SAN SZASS MPVP6ƠDUNԠ0 DAN MANA SANԠNԠ-N DABP SAA SSB MPVP6Aƽ VP6BSBANDƽ0 SBVP6ŠSŠNBUҬHKҠND MPVP6B VP6AB SSB Bý0ƽ SZVP6ýƽ DAVP6 VP6àSBVP6ŠSŠNBUҬHKҠND SZBSS MA MPVP6 VP6ŠNP SAA̬ɠSŠANBU SZA SZNԠDN? MPVP6ŬɠN VP6GSZVP6YS SZVP6 MPVP6ɠ VP6ƠSSBSԠ SZVP6DB0 MPVP6G SKP VPSD VPNP SBPNDHKҠAB DAVPɠD SZVP SAUNԠSŠUNԠNUMB SZVP MPVPɠ VP9A VP9NP SBPNDHKҠAB DBVP9 DAD6+SZ SAN A SSB DABPVŠAKNDA B SSBSS MPVP9A B DAY̠HANGŠYNDҠNUMB PAD0 SBY SZY DADB VP9AҠY SAY SBAɬ SBADɬɠŠADDSS SZVP9 SZVP9 DAVP9 SBVPGHKSAUS MPVP9ɠ VP 0S VP0NP SBPNDHKҠAB DAVP0ɠD SASHASPDSAUS SZVP0 SZVP0 SBHK A SASHASSԠPDSAUS MPVP0 SKP VP3H VP3NP SBPNDHKҠAB DAVP3ɠHAԠD HԠ SZVP3 SZVP3 MPVP3 VPP VPSBPNDHKҠAB MPBPϬ VP5 VP5NP SBPNDHKҠAB DAVP5ɠNUMBҠƠMSϠPA SZVP5 PAVP5ɠDN? MPV5AYS SZVP5 SZVP5 MPVP5ɠUMPϠAB V5AA SAVP5ɠSԠUN SZVP5 SZVP5 SZVP5 MPVP5 SKP ANSҠVS PNSUSDBYANSҠVS DàABS-- DŠDƠ+ ASàAҠ0 ASàB ASàD ASàŠ3 ASàDB ASàDS5 ASàŠ6 ASàN ASàP0 ASàGϠ ASàHԠ ASàA3 ASàS ASàB5 ASàD6 ASàAS ASàS0 ASàSà ASàSD ASàSҠ3 ASàD ASàP5 ASà̠6 ASàA ASàà30 ASàSS3 ASàSԠ3 ASàԠ33 ASàA3 ASàԠ35 DƠDƠ SKP ABŠƠPDS DŠGNAҠANSҠAB UàDƠ+ DƠPUԱA DƠPU5B DƠPUԴD DƠPUԲ DƠPU6DBU DƠPUԱDS DƠPԱ DƠPUԷN DƠPԱP DƠPU3G DƠPԱ0H DƠPU9A DƠPUԱS DƠPU3B DƠPUԴD DƠPUԲAS DƠPUԲS DƠPԱ0S DƠPUԸSD DƠPUԱS DƠPUԴD DƠPԱP DƠPUԲ DƠPUԲA DƠPUԲ DƠPUԲSS DƠPUԲS DƠPUԱ DƠPUԲA DƠPԱ5 HDPAK PAK NPUԠϠHAASPAKDNϠNŠD SKPSN-Š PAKNP SBHAҠSԠHAA MPPAKɠ AƬAƠPSNϠԠHAA SAA̠SAV SBHAҠSNDHAA MPPAKɠ ҠA̠PAKGH SZPAK MPPAK HDBUDPND BUD ANSSDŠMDDD3ANDD HŠKAA. NNYANUMBҠƠDSϠANS BUDNP DBASAVŠUN ADBD0MPNҠϠNԠD SBA AƬAƠMDN ADAPN SABɠSŠNϠANSҠAA SBP3NɬɠHKҠV DAD0 BU̱NA DBAɠANS SBBDɠϠKAA SZBD PAA̠DN? MPBUDɠYS MPBU̱N PND HKSҠABԠ(B30 PNDNP A ANDB3 SZASSSB30? MPDNŬɠYSAB MPPNDɠNϬK HDMSSAGŠABS(NNUD MSSAGŠADDSSAB MɠDƠ+ DƠM0 DƠM DƠM DƠM3 DƠM DƠM5 DƠM6 DƠM DƠM0 LDƠM DƠM DƠM3 DƠM DƠM5 DƠM6 DƠM DƠM0 DƠM DƠM DƠM3 DƠM DƠM5 DƠM6 DƠM DƠM30 DƠM3 DƠM3 DƠM33 DƠM3 DƠM35 DƠM36 DƠM3 DƠM0 DƠM DƠM DƠM3 DƠM DƠM5 DƠM6 DƠM DƠM50 DƠM5 DƠM5 DƠM53 DƠM5 DƠM55 DƠM56 DƠM5 DƠM60 DƠM6 DƠM6 DƠM63 DƠM6 DƠM65 DƠM66 DƠM6 DƠM0 DƠM DƠM DƠM3 DƠM SKP MSSAGŠNGHAB M̠DƠ+ DƠ0 DƠ̱ DƠ̲ DƠ3 DƠ̴ DƠ5 DƠ6 DƠ̷ DƠ̱0 DƠ̱ DƠ̱ DƠ̱3 DƠ̱ DƠ̱5 DƠ̱6 DƠ̱ DƠ̲0 DƠ̲ DƠ̲ DƠ̲3 DƠ̲ DƠ̲5 DƠ̲6 DƠ̲ DƠ30 DƠ3 DƠ3 DƠ33 DƠ3 DƠ35 DƠ36 DƠ3 DƠ̴0 DƠ̴ DƠ̴ DƠ̴3 DƠ̴ DƠ̴5 DƠ̴6 DƠ̴ DƠ50 DƠ5 DƠ5 DƠ53 DƠ5 DƠ55 DƠ56 DƠ5 DƠ60 DƠ6 DƠ6 DƠ63 DƠ6 DƠ65 DƠ66 DƠ6 DƠ̷0 DƠ̷ DƠ̷ DƠ̷3 DƠ̷ HDMSSAGS E   12965-18010 1451 S 0122 10DIAG 2883A/2884A DISC AND 12565A INTFC             H0101 I MSSAGS SUP MASà5ŲƠҠSSAD-HANN 00ABSS ̲U+-M-M M3ASà93SàADHAGA-HANN 003ABSS 3U+-M3-M3 MASà5ŴSƠҠSàAD-HANN 00ABSS ̴U+-M-M M5ASà5SSADHAGS-HANN 005ABSS 5U+-M5-M5 M6ASà6NϠNUPԠNHANN 006ABSS 6U+-M6-M6 MASà6ŷNGUNADDSS-HANN 00ABSS ̷U+-M-M M0ASà0ű0NϠMMANDAG ̱0U+-M0-M0 MASà09űAŠDAAAG ̱U+-M-M MASà6űNϠDAAAG(GNGSAUS ̱U+-M-M M3ASà0ű3 P3ABSS ASà0DSANSD P3BBSS ASà05PD ̱3U+-M3-M3 MASà5űNϠMMANDAG(USNGDMA ̱U+-M-M M5ASàH5ADDSSDN P5ABSS ̱5U+-M5-M5 M6ASà06H6V ̱6U+-M6-M6 MASà0HDUPAŠAB ̱U+-M-M M0ASà3H0UNDNDNSUN ̲0U+-M0-M0 MASàŲADDSSADAS PABSS3 ASà03AND PBBSS3 ̲U+-M-M MASà0HYàHKN PABSS ̲U+-M-M M3ASà09H3ADHKN P3ABSS ̲3U+-M3-M3 MASà09HYNDҠAB Ԡ06 PABSS0 ̲U+-M-M M5ASàH5SHϠAҠAB? ̲5U+-M5-M5 M6ASà0H6NҠYNDSSPAADBYMMAS ̲6U+-M6-M6 MASà09HPANAB Ԡ06 PABSS ̲U+-M-M M30ASà9H30NҠPANSSPAADBYMMAS 30U+-M30-M30 M3ASà0H3NPUԠ 3U+-M3-M3 M3ASà09H3SԠSH 3U+-M3-M3 M33ASà6H33ŠDVŠAKNS0 33U+-M33-M33 M3ASà5H3ADPDAKNSW0 3U+-M3-M3 M35ASà09H35NA̠SAUS 35U+-M35-M35 M36ASàH36ŠADDSSN P36ABSS 36U+-M36-M36 M3ASà0H3ADADDSSN P3ABSS 3U+-M3-M3 M0ASà0H0NABŠUN P0ABSS ̴0U+-M0-M0 MASà5HADDVŠAKNS0 ̴U+-M-M MASà6HŠPDAKNS0 ̴U+-M-M M3ASà05H3UN P3ABSS ASàNԠADYHKNS0 ̴3U+-M3-M3 MASà06HSKN PABSS ̴U+-M-M M5ASà0H5ŠN P5ABSS ̴5U+-M5-M5 M6ASà06H6ADN P6ABSS ̴6U+-M6-M6 MASà0ŴDAAD PABSS ASà0S PBBSS3 ASà06SHUDB PàBSS3 ̴U+-M-M M50ASà09H50VUNNS 50U+-M50-M50 M5ASà0H5Y P5ABSS ASà03HAD P5BBSS ASà0S P5àBSS ASà06DUN P5DBSS ASà03UN P5ŠBSS 5U+-M5-M5 M5ASà05BUҠHKSUM P5ABSS3 ASà03Y P5BBSS3 ASà0( P5DBSS ASà03HDS P5àBSS3 ASà0(H P5ŠBSS ASà0S P5ƠBSS ASà0 5U+-M5-M5 M53ASà5H53AVAGŠMNMUMSKM P53ABSS P53BBSS 53U+-M53-M53 M5ASà5H5AVAGŠANDMSKM P5ABSS3 ASà0NGH P5BBSS 5U+-M5-M5 M55ASàH55NҠNSUNS 55U+-M55-M55 M56ASà0H56UNDNDAB P56ABSS 56U+-M56-M56 M5ASàH5VUNHKNS 5U+-M5-M5 M60ASà0H60ADDSSSKPN P60ABSS 60U+-M60-M60 M6ASà0H6ABAŠN P6ABSS 6U+-M6-M6 M6ASà6SҠMSSNGNS 6U+-M6-M6 M63ASà063NϠDAAAG 632U+-M63-M63 M6ASà06SAUSS P6ABSS3 ASà06SHUDB P6BBSS3 6U+-M6-M6 M65ASà05H65PASS P65ABSS 65U+-M65-M65 M66ASà5H66SԠMAԠSHNUN P66ABSS ASà05PUSHUN 66U+-M66-M66 M6ASà6H6AҠMAԠSHNUN P6ABSS ASà05PUSHUN 6U+-M6-M6 M0ASà09H0DSABŠUN P0ABSS ASà05PUSHUN ̷0U+-M0-M0 MASà6HPSSPSԠHNPSSUN ̷U+-M-M M3ASàŷ3SNSԠAU ̷3U+-M3-M3 MASà0HSHԠPASS ̷U+-M-M HDY Y NVԠYNDҠABŠϠASɠANDSŠNMSSAG YԠNP DAP0ANAZ SAPNԠPN DAMM0- SASAV PADAԬɠYNDҠABŠPN DAA SBDNNVԠNUMB DAVԱUSŠGH ANDB3HAA AƬAƠ DBAVԱ DAVԲAND ANDP00 AƬAƠHAA ҠBƠVԲ SAPNԬɠҠS SZPNԠD DAVԲUS ANDB3GH AƬAƠHAA ҠB5ƠVԲ SAPNԬɠAND SZPNԠASɠMMA SZSAVŠҠSND DASAVŠD SSA MPP DBP0AMV ADBD9AS DABɠMMA ANDP00 ҠB0 SAB MPYԬ HDSZMìSPASS PMSKUNDҠGHԠDŠNDNS SZNP SAY̠SAVŠYNDҠNUMB SBDADϠUPUԠYNDҠNUMB DAPSԠSKMMAND ҠUNԠUNԠNUMB øA øààMAKŠSUŠNDŠSZ B SBA ø3SàìàSԠND DøSSDàHKDAAHANN̠AGN MPDøN DøBDàUPU Dø3SàDìàHAD-S MPSZB DøSSDàHKAGANN MPSZAN Dø5BDàUPU Dø6SàDìàHAD-S SZBSBADAԠҠDAAHANN SBASAԠҠMMANDHANN MPSZ SZASZA̠AVD MPDøNDSSP DASZUS SAADADUN MPSZZϠPԠ ABԠDMAUN MàNP DM6ŠàDMAD DM6ƠSƠDMAD 06à DñàD DòSƠD MPMì SHNDSNGUN SPASSNP SBMP6 BSԠAG SBSHGϠP DBMP6SHԠSNG MPSPASS HDNSìBGNBUS AUASNԠAVAABŠS NSàNP DBSNҠADYŠUN ADBBASADDNAAN ADBKSàHKҠNDƠS DASNԠADUNԠSҠNUMB SSBSSDN'ԠSKPƠϠS NAUNԠUPƠS PASPԠHKҠND ABAKϠSҠZ SASҠSAVŠ MPNSì BUBDƠ HDN G000B N NGUSAHƠHŠHANNS G000B NԠNP A H0SBPNԠ"HP00SSDSà(3 DAGNS" DAB HSBPNԠ"NҠSԠDSDMAHANN NSHGSҬPSSUN" Ԡ000 A SANSנSAVŠNGUANSHG ANDB SAHSAVŠYPŠSԠD ADAMM5 SSA HԠB DANSנkADNGUANSHG AƬAƠSHԠGH A̬A̠SؠANS ANDB SAA̠SAVŠDAAHANN̠SԠD ADAMM5 SSA HԠB DBSB SBGBSAVŠSԠPN A SAAGAG- DBASB ASBGBSAVŠASԠPN BDBGBɠADPN DABɠADD ANDP00MASKUԠSԠD ҠA̠SUƠNNנSԠD SABɠSŠBAK PBGBɠDN? MPàYS SZGBN MPB àU SZAGSKPƠNԠDN MPUԠDN SZA̠NMNԠSԠD DBS SBGBSAVŠSԠPN DBASàADASԠPN MPA UԠU DANSנADNGUANSHG ANDBԱ SZASKPҠDMA6 ANAHSSDMA SAA DBSD SBGBSԠUPPN DDBGBɠADADDSSMAB DABɠADVAUŠM ANDP6MASKƠBԠ0 ҠA̠ADDDMAHANN̠B SABɠSŠ PBASDɠDN? MPŠYS SZGBNϬNNU MPD ŠU DANNSԠHANGŠSANGNSUN SANGDUMPUN ANA HSBPNԠ"NҠPGAMPNSNSH GSҬPSSUN" Ԡ00AנҠPNA̠DUMP MP30B NNSԠDƠ+ A SBPNԠ"HP00SSDSà(3 DAGNS" MP SKP MSSAGSUSDNNGUAN M0Ԡ6 ASà9H0HP00SSDSà(3DAG ASà03NS 0U+-M0-M0 MԠ6 $"ASà9HNҠPGAMPNSNSHG ASà0SҬPSSUN ̱U+-M-M MԠ6 ASà9HNҠSԠDSDMAHANN̠N ASà3SHGSҬPSSUN ̷U+-M-M SKP DAAHANN̠ɯϠNSUNS SBDƠ+ DƠDMA DƠD0 DƠD0 DƠD03 DƠD0 DƠD05 DƠD06 DƠDñ DƠDñ DƠDñ3 DƠDñ DƠDò DƠDò3 DƠDø DƠDø DƠDø3 DƠDø DƠDø5 DƠDø6 ASBDƠ- MMANDHANN̠ɯϠNSUNS SàDƠ+ DƠ0 DƠ0 DƠ03 DƠ0 DƠ05 DƠ06 DƠ÷ DƠø DƠø DƠø3 ASàDƠ- SKP DMAHANN̠NSUNS SDDƠ+ DƠDMA DƠDMB DƠDM DƠDMD DƠDM DƠDM DƠDMG DƠDMH DƠDM DƠDM DƠDMK DƠDM6A DƠDM6B DƠDM6 DƠDM6D DƠDM6 DƠDM6 DƠDM6G DƠDM6H DƠDM6 ASDDƠ- PNDU ND |$   12966-18001 1519 S 0122 BUFFRD ASYNC COMMUN INTF DIAGN SOURCE             H0101 ASMB,L,A,B,C HED BUFFERED ASYNC COMMUNICATION INTERFACE DIAGNOSTIC ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED (FOR INTERNAL USE - SUB-TEST HALT) * * 106077 TRAP CELL HALT * * * pHED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC OCT 0 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA  GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB ESWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 CLDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? 5 ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * Q * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG 640ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 6   12966-18002 1519 S 0122 BUFFRD ASYNC COMMUN INTF DIAGN SOURCE             H0101  CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 O{SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF (ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED BUFFERED ASYNC COMMUNICATION INTERFACE DIAGNOSTIC * * * * ORG 126B DSN OCT 103017 DIAGNOSTIC SERIAL NO. ORG 140B IOIP DEF IOID POINTER TO I-O INSTRUCTIONS TSTP DEF TSTD POINTER TO TEST DEF TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 007777 STANDARD TESTS STDB OCT 000000 STANDARD TESTS ORG 150B IOCLR EQU 0 SARI EQU 12B NULL EQU 0 WRD0 EQU 00000B WRD1 EQU 10000B WRD2 EQU 20000B WRD3 EQU 30000B WRD4 EQU 40000B WRD5 EQU 50000B WRD6 EQU 60000B SCFE EQU 1 CFE EQU 2 CEE EQU 4 CCE EQU 10B CBE EQU 20B ENCHM EQU 40B SCFR EQU 1 CFR EQU 2 CER EQU 4 CCR EQU 10B CBR EQU 20B DIAGC EQU 40B PASNS EQU 4 PAR EQU 10B ECHO EQU 20B STB EQU 40B DMA EQU 20B SCA EQU 40B CD EQU 100B CA EQU 200B XMIT EQU 400B CLPE EQU 1 CLBRK EQU 2 CBEF EQU 4 CBF EQU 10B CBH EQU 20B CSPEC EQU 40B SPCHD EQU 400B SCF EQU 1 CF EQU 2 CE EQU 4 CC EQU 10B CB EQU 20B PARR EQU 40B BRK EQU 100B BEF EQU 200B BFF EQU 400B BFHF EQU 1000B TEST EQU 4000B RSPAR EQU 10000B SPCHR EQU 40000B DEVI EQU 40000B SCM EQU 40000B VALDA EQU 40000B B0 EQU 1 B1 EQU 2 B2 EQU 4 B3 EQU 10B B4 EQU 20B B5 EQU 40B B6 EQU 100B B7 EQU 200B SDMAL EQU 2 LOWER SELECT CODE DMA SDMAH EQU 6 UPPER SELECT CODE DMA IRTN DEF *-* BUFFA BSS 1 BUFFB BSS 1 BXMIT DEF XBUF POINTER TO TRANSMIT BUFFER BRCV DEF RBUF POINTER TO RECIEVE BUFFER SKP TRJSB DEF ZTCJI POINTER D1 EQU * SW0 OCT 1 D2 EQU * SW1 OCT 2 .7 OCT 7 SW2 EQU * D4 DEC 4 MD1 DEC -1 MD8 DEC -8 MD38 DEC -38 MD9 DEC -9 MD15 DEC -15 MD16 DEC -16 MD64 DEC -64 MD128 DEC -128 BCNTR BSS 1 MSK3 OCT 3 SKP GUPLO DEF *-* RETURN ADDRESS CLE,ERB LDA B,I GET CHARACTER SEZ,RSS ALF,ALF AND LOHWD ELB JMP GUPLO,I RETURN SPC 3 PUPLO DEF *-* RETURN ADDRESS CLE,ERB AND LOHWD STA PCH LDA B,I SEZ,RSS ALF,ALF AND UPHWD IOR PCH SEZ,RSS ALF,ALF STA B,I ELB JMP PUPLO,I RETURN PCH BSS 1 UPHWD OCT 177400 MASK FOR UPPER HALF WORD LOHWD OCT 000377 MASD FOR LOWER HALF WORD SKP * SWITCH REGISTER BIT 0 HAS * THE MEANING LOOP ON SUB-TEST AND * SWITCH REGISTER BIT 1 MEANS HALT * AT THE END OF THE CURRENT SUB-TEST. * THIS HALT IS 102070 (OCTAL). * THE SUB-TEST LOOP * WILL CAUSE LOOPING ON A SMALL * PROGRAM SEGMENT. SPC 2 SUBT DEF *-* RETURN ADDRESS LDA USSC GET CONFIG INFO SSA,RSS IS SUB-TEST CAPABILITY * ENABLED? JMP SUBC1 CONTINUE - NO LDB SW1 MASK FOR SWITCH 1 JSB SWRT,I CHECK SWITCH 1 - SUB-TEST HALT RSS JMP SUBT1 CONINUE LDA TSTN GET TEST NO. LDB SUBT. GET SUB-TEST NO. HLT 70B HALT SUBT1 LDB SW0 MASK FOR SWITCH 0 JSB SWRT,I CHECK SWITCH 0 - SUB-TEST LOOP JMP SUBT,I RETURN SUBC1 ISZ SUBT JMP SUBT,I RETURN SPC 1 SUBTH DEF *-* RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT NOP BYPASS LOOP JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTH,I RETURN SPC 1 SUBTT DEF *-* RETURN ADDERESS JSB SUBT CHECK SUB-TEST HALT,LOOP JMP SUBLL LOOP ON THIS SUB-TEST JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTT,I RETURN SPC 1 STSUB DEF *-* RETURN ADDRESS LDA STSUB SAVE LOOP ADDRESS INA STA SUBLP LDA STSUB,I GET SUB-TEST NO. STA SUBT. SAVE STA SUBLN SAVE FOR USE WHEN LOOPING ISZ STSUB UPDATE RETURN JMP STSUB,I RETURN SPC 1 SHUTA DEF *-* RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT, LOOP JMP SUBLL LOOP JSB SUBUP UPDATE SUB-TEST NO. LDA SHUTA GET LOOP ADDRESS STA SUBLP SAVE LDA SUBT. GET SUB-TST NO. STA SUBLN SAVE FOR FUTURE LOOPING JMP SHUTA,I RETURN SPC 1 SUBLL LDA SUBLN GET SUB-TEST NO. STA SUBT. SAVE JMP SUBLP,I GO LOOP SPC 1 SUBUP DEF *-* RETURN ADDRESS LDA SUBT. GET SUB-TEST NO. INA AND .77 MASK CPA .70 CHECK FOR OCT X70 JMP SUBT3 CONTINUE ISZ SUBT. OK UPDATE SUBT. JMP SUBUP,I RETURN SUBT3 LDA SUBT. GET SUB-TEST NO. AND .300 MASK X00 ADA .100 UPDATE SUB-TEST NO. STA SUBT. SAVE JMP SUBUP,I RETURN .300 OCT 300 .70 OCT 70 .77 OCT 77 SUBLP DEF *-* LOOP ADDRESS SUBLN BSS 1 LOOP SUB-TEST NO. SUBT. BSS 1 SUB-TEST NUMBER .100 OCT 100 SKP ERNO DEF *-* RETURN ADDRESS LDB ERNO,I GET BUFFER POINTER BLS CONVERT TO BYTE ADDRESS INB LDA SUBT. GET SUB-TEEST NO. AND E NO. ALF,ALF RAL,RAL AND LOHWD MASK ADA ASC0 CONVERT TO ASCII NO JSB PUPLO PLACE IN MESSAGE INB LDA SUBT. RAR,RAR RAR AND .7 ADA ASC0 CONVERT TO ASCII JSB PUPLO PLACE IN MESSAGE INB LDA SUBT.  AND .7 MASK ADA ASC0 CONVERT TO ASCII NO JSB PUPLO PLACE IN MESSAGE ISZ ERNO UPDATE RETURN JMP ERNO,I RETURN ASC0 OCT 60 ASCII ZERO SKP CMNDD DEF *-* RETURN ADDRESS LDA CMNDD,I GET OPTIONS IN COMMAND FNIO1 OTA SARI GIVE COMMAND ISZ CMNDD UPDATE RETURN ADDRESS LDA D4 WAIT 4 MS JSB TMRR,I JMP CMNDD,I RETURN SPC 2 RSTUS DEF *-* RETURN ADDRESS FNIO2 CLC SARI SELECT STATUS STIO1 LIA SARI READ STATUS JMP RSTUS,I RETURN SPC 2 RDDTA DEF *-* RETURN ADDRESS FNIO6 STC SARI SET CONTROL = DATA IOIN6 LIA SARI INPUT DATA JMP RDDTA,I RETURN SPC 2 MRST DEF *-* RETURN ADDRESS LDA MRSTC GET MASTER RESET COMMAND FNIO0 OTA SARI GIVE COMMAND LDA D2 JSB TMRR,I WAIT 2 MS JMP MRST,I RETURN MRSTC ABS 100000B+WRD5+CLPE+CLBRK+CBF+CBEF+CBH+CSPEC SPC 2 CLF DEF *-* RETURN ADDRESS CNIO1 CLF SARI CLEAR INTERFACE FLAG JMP CLF,I RETURN SPC 2 SFS DEF *-* RETURN ADDRESS CNIO2 SFS SARI SKIP ON FLAG SET JMP SFS,I RETURN - FLAG CLEAR ISZ SFS UPDATE RETURN ADDRESS JMP SFS,I RETURN SPC 2 STC DEF *-* RETURN ADDRESS CNIO3 STC SARI SET INTERFACE CONTROL FF JMP STC,I RETURN SPC 2 CLC DEF *-* RETURN ADDRESS CNIO4 CLC SARI CLEAR INTERFACE CONTROL FF JMP CLC,I RETURN SPC 2 CLK16 DEF *-* RETURN ADDRESS LDA MD16 STA CLKNT CLKC1 LDA CLKON RISING EDGE OF 16 X BAUD RATE CLOCK CLK01 OTA SARI OUTPUT LDA CLKOF FALLING EDGE OF 16 X BAUD RATE CLOCK CLK00 OTA SARI OUTPUT ISZ CLKNT JMP CLKC1 JMP CLK16,I RETURN SPC 1 CLKON ABS WRD2+DIAGC CLKOF ABS WRD2+NULL CLKNT BSS 1 SPC 2 RARI DEF *-* RETURN LDA BRCV INITIALIZE BUFFER POINTER STA BUFFA LDA MD128 INITIALIZE COUNTER STA BCNTR JSB CMND SELECT RECEIVE MODE ABS WRD4 RAC01 JSB RDDTA READ DATA STA BUFFA,I PLACE IN BUFFER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPADTE COUNTER JMP RAC01 CONTINUE - MORE CHARACTERS JMP RARI,I RETURN SPC 2 XARI DEF *-* RETURN ADDRESS JSB CMND SELECT TRANSMIT MODE ABS WRD4+XMIT LDA MD128 INITIALIZE COUNTER STA XACNT LDB BXMIT INITIALIZE BUFFER POINTER STB BUFFA XAC01 LDA BUFFA,I GET DATA AND LOHWD MASK STA XAPO1 SAVE JSB CMND OUTPUT CHARACTER XAPO1 BSS 1 CHARACTER ISZ BUFFA UPDATE BUFFER POINTER ISZ XACNT UPDATE COUNTER JMP XAC01 CONTINUE - MORE CHARACTERS JMP XARI,I RETURN SPC 1 XACNT BSS 1 SPC 2 SDIN DEF *-* RETURN ADDRESS LDA SDIN,I GET PARAMETERS STA SDTYP SAVE LDA MD128 INITIALIZE COUNTER STA BCNTR LDA BRCV INITIALIZE BUFFER POINTER STA BUFFA SDC03 LDA SDTYP LDB MD9 AND MSK3 BITS / CHAR CMA,INA ADB A LDA SDTYP AND SDP PARITY BIT SZA,RSS INB LDA SDTYP AND SDST NO OF STOP BITS SZA,RSS INB LDA SDTYP GET TYPE AND SDSTX CPA SDST INB SPECIAL FOR 5 BIT 2 STOPS STB SDCNT SAVE NO BITS / CHAR STB SDDTC CLA STA BUFFA,I PLACE IN BUFFER SDC01 JSB CLK16 SUPPLY CLOCKS TO INTERFACE JSB RSTUS READ STATUS AND SDBA ISOLATE SIGNAL BA LDB BUFFA,I GET PARTIAL DATA RBR ADD THIS BIT TO DATA SZA INB STB BUFFA,I PLACE DATA IN BUFFER ISZ SDCNT UPDATE BIT COUNTER JMP SDC01 LDA SDTYP GET TYPE AND SD^c640STX CPA SDST JMP SDC06 CONTINUE - 5 BIT AND 2 STOPS SDC05 LDA SDDTC INA SDC02 RBL PREPARE CHARACTER INA,SZA JMP SDC02 STB BUFFA,I PLACE ASSEMBLED CHARACTER IN BUFFER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE COUNTER JMP SDC03 CONTINUE - MORE CHARACTERS JSB CLK16 SUPPLY 16 CLOCKS TO INTFC JMP SDIN,I RETURN SDC06 LDB MD8 STB SDCNT SDC04 JSB CMND ABS WRD2+DIAGC JSB CMND ABS WRD2+NULL ISZ SDCNT JMP SDC04 JSB RSTUS GET BA AND SDBA LDB BUFFA,I RBR SZA INB )A6   12966-18003 1519 S 0122 BUFFRD ASYNC COMMUN INTF DIAGN SOURCE             H0101  STB BUFFA,I LDA SDDTC ADA MD1 STA SDDTC JMP SDC05 SPC 2 SDDTC BSS 1 SDCNT BSS 1 SDTYP BSS 1 SDBA ABS RSPAR SDP ABS PAR SDST ABS STB SDSTX ABS STB+3 SPC 2 SDOUT DEF *-* RETURN ADDRESS LDA SDOUT,I GET PARAMETER ISZ SDOUT UPDATE RETURN ADDRESS STA SDOP1 SAVE LDA BXMIT INITIALIZE BUFFER POINTER STA BUFFA LDA MD128 INITIALIZE COUNTER STA BCNTR LDA SDWD4 GET WORD 4 COMMAND STA SDOP3 SAVE SDOC1 LDA SDOP1 GET PARAMETER AND MSK3 STA B LDA SDOP1 AND SDST SZA INB LDA SDOP1 AND SDP SZA INB ADB D6 CMB,INB STB SDOCN COUNTER - BITS / CHARACTER JSB CMND PREPARE FOR RECEIVE SDOP3 BSS 1 WORD 4 COMMAND JSB CLK16 START BIT SDOC2 LDA BUFFA,I GET DATA CMA AND MSK1 ALF,ALF RAR,RAR ADA SDWD4 STA SDOP2 LDA BUFFA,I RAR STA BUFFA,I JSB CMND SDOP2 BSS 1 JSB CLK16 SUPPLY 16 CLICKS ISZ SDOCN UPDATE BIT COUNTER JMP SDOC2 CONTINUE WITH THIS CHARACTER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPADTE COUNTER JMP SDOC1 CONTINUE - MORE CHARACTERS JSB CLK16 JMP SDOUT,I RETURN SPC 2 MSK1 EQU D1 SDOCN BSS 1 SDOP1 BSS 1 D6 DEC 6 SDWD4 BSS 1 SPC 2 LINBF DEF *-* RETURN ADDRESS LDA MD128 INITIALIZE COUNTER STA BCNTR LDB BRCV INITIALIZE BUFFER POINTER STB BUFFB LDB BXMIT INITIALIZE BUFFER POINTER STB BUFFA LIC01 LDA BUFFB,I PREPARE DATA AND LOHWD STA BUFFB,I REPLACE IN BUFFER LDA BUFFA,I AND MSKCZ STA BUFFA,I REPLACE IN BUFFER ISZ BUFFB UPDATE BUFFER POINTER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR kUPDATE COUNTER JMP LIC01 CONTINUE JMP LINBF,I RETURN SPC 2 FIXDA DEF *-* RETURN ADDRESS LDA FIXDA,I GET DATA FORMAT STA FXDAT SAVE ISZ FIXDA UPDATE RETURN ADDRESS LDB BXMIT GET BUFFER POINTER STB BUFFA SAVE LDB MD128 INITIALIZE COUNTER STB BCNTR FXC07 LDA FXDAT AND MSK3 LDB MSK37 FXC09 SZA,RSS JMP FXC08-1 RBL INB ADA MD1 JMP FXC09 STB MSKCZ SAVE MASK FXC08 LDA BUFFA,I AND B STA BUFFA,I LDA FXDAT AND SDP IS PARITY USED SZA,RSS JMP FXC01 NO- DO START AND STOP(S) LDA FXDAT AND .B2 YES - WHAT TYPE SZA,RSS CCB,RSS CLB LDA BUFFA,I GET DATA JSB PTYGN GENERATE PARITY STA BUFFA,I SAVE AND .B8 STA B SAVE PARITY BIT RBR,RBR RBR LDA FXDAT AND MSK3 NO BITS / CHAR FXC03 SZA,RSS JMP FXC02 CONTINUE RBL ADA MD1 JMP FXC03 CONTINUE FXC02 LDA BUFFA,I AND B0TB7 IOR B RSS FXC01 LDA BUFFA,I GET DATA RAL INSERT START BIT AND NB0 MASK STA BUFFA,I SAVE LDB .B6 LDA FXDAT AND SDST CHECK NO STOP BITS SZA ADB .B7 USE 2 LDA FXDAT AND MSK3 GET NO OF BITS / CHAR FXC06 SZA,RSS JMP FXC05 CONTINUE RBL PUT STOP BITS IN CORRECT POSITION ADA MD1 JMP FXC06 FXC05 LDA FXDAT AND SDP SZA IS PARITY USED RBL POSITION STOP BIT(S) LDA BUFFA,I GET DATA IOR B STA B STB BUFFA,I SAVE COMPLETE DATA ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE BUFFER COUNTER JMP FXC07 JMP FIXDA,I RETURN SPC 2 FXDAT BSS 1 MSKCZ BSS 1 .B2 OCT 4 .B6 OC0T 100 .B7 OCT 200 NB0 OCT 7776 SPC 2 PTYGN DEF *-* RETURN ADDRESS STB PYTYP SAVE PARITY TYPE LDB MD8 STB PYCNT CCB AND B0TB7 MASK PYC01 SLA GENERATE PARITY CMB RAR ISZ PYCNT JMP PYC01 ALF,ALF SZB IOR .B8 LDB PYTYP GIVE CORRECT SSB,RSS PARITY TO XOR .B8 DATA JMP PTYGN,I RETURN PYCNT BSS 1 COUNTER MSK37 OCT 37 PYTYP BSS 1 PARITY TYPE .B8 OCT 400 B0TB7 ABS B0+B1+B2+B3+B4+B5+B6+B7 SPC 2 CMND DEF *-* RETURN ADDRESS LDA CMND,I GET DATA ISZ CMND UPDATE RETURN OTIO1 OTA SARI OUTPUT JMP CMND,I RETURN SPC 2 PTG DEF *-* RETURN ADDRESS LDA PTG,I GET ADDRESS OF STA PTGI INTERRUPT ROUTINE ISZ PTG LDA PTG,I GET ADDRESS OF STA IRTN INTERRUPT RETURN JSB TRJSB,I FILL TRAP CELL PTGI DEF *-* ISZ PTG UPDATE RETURN JMP PTG,I RETURN SPC 2 CBUFS DEF *-* RETURN CLA STA NOERS INITIALIZE ERROR FLAG LDA CBUFS,I GET ERROR POINTER STA CBERR LDA MD128 INITIALIZE COUNT STA CBCNT LDA BXMIT INITIALIZE POINTERS STA BUFFA LDA BRCV STA BUFFB CBC02 LDA CBC1A STA CDATA LDA BUFFA,I ISZ BUFFA STA CEXPD SAVE LDA BUFFB,I ISZ BUFFB LDB A JMP CDAC1 CHECK DATA CEXPD BSS 1 EXPECTED DATA CBERR DEF *-* ERROR MESSAGE POINTER ISZ NOERS CHECK FOR ERRORS RSS CONTINUE JMP CBC03 DO NOT REPORT ANY NORE ERRORS ISZ CBCNT DONE? JMP CBC02 CONTINUE CBC03 ISZ CBUFS UPDATE RETURN JMP CBUFS,I RETURN CBCNT BSS 1 CBC1A DEF CEXPD SPC 2 DMAON DEF *-* RETURN ADDRESS LDA DMACF PLACE STA SDMAH CLF IN TRAP CELL LDA CW1 GET COMMAND WORD 1 OTA SDMAH OUTPUT TO DMA CLC SDMAL PREPARE FOR CW2 LDA DMAON,I INPUT OR OUTPUT + OTA SDMAL ADDRESS TO DMA STC SDMAL PREPARE FOR CW3 LDA CW3 GET CONTROL WORD 3 OTA SDMAL OUTPUT TO DAM FNIO5 STC SARI,C START ARI STC SDMAH,C START DMA ISZ DMAON UPDATE RETURN JMP DMAON,I RETURN SPC 1 CW1 ABS SARI CONTROL WORD 1 FOR DMA CW3 EQU MD128 SPC 2 DMAOF DEF *-* RETURN ADDRESS DMACF CLF SDMAH TRUN OFF DMA LIA SDMAL GET COUNT SZA,RSS CHECK COUNT = 0 JMP DMAOF,I RETURN CLF INTP CLEAR INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM154 JMP DMAOF,I RETURN SPC 2 CLBFR DEF *-* RETURN ADDRESS LDB MD128 INITIALIZE COUNTER CLA CLEAR STB CLCNT LDB BRCV BUFFER POINTER CLC01 STA B,I CLEAR BUFFER INB UPDATE POINTER ISZ CLCNT UPDATE COUNT JMP CLC01 CONTINUE JMP CLBFR,I RETURN CLCNT BSS 1 COUNTER SPC 2 PTGNR DEF *-* RETURN ADDRESS LDA PTGNR,I GET START PATTERN STA PTGTY SAVE LDB MD128 INITIALIZE COUNTER STB PTNCT SAVE LDB BXMIT GET BUFFER POINTER PTGC1 STA B,I PLACE DATA IN BUFFER INB UPDATE BUFFER POINTER LDA PTGTY GET DATA SZA,RSS RSS SSA RSS INA STA PTGTY SAVE NEXT DATA ISZ PTNCT UPDATE COUNTER JMP PTGC1 CONTINUE ISZ PTGNR UPDATE RETURN ADDRESS JMP PTGNR,I RETURN SPC 2 PTGTY BSS 1 DATA PTNCT BSS 1 SKP CSTUS DEF *-* RETURN ADDRESS JSB RSTUS GET INTERFACE STATUS CSC01 STA STAT SAVE ACTUAL STATUS LDA CSTUS,I GET EXPECTED STATUS ISZ CSTUS UPDATE RETURN CPA ST])AT CHECK STATUS JMP CSXIT CONTINUE STA EXSTS SAVE EXPECTED STSTUS LDA CSTUS,I GET ERROR MESSAGE STA CSFRM SAVE LDA EMCS3 STA CSTO JSB MOVE CSTO DEF *-* CSFRM DEF *-* LDA EXSTS GET EXPECTED STATUS CLE LDB EMCS2 JSB O2AS,I LDA STAT GET ACTUAL STATUS CLE LDB EMCS1 JSB O2AS,I JSB ERNO GET SUB-TEST NO. DEF EMCS LDA STAT GET ACTUAL STATUS LDB EXSTS GET EXPECTED STATUS JSB ERMS,I OUTPUT ERROR DEF EMCS CSXIT ISZ CSTUS JMP CSTUS,I RETURN EMCS ASC 8,EXXX STATUS IS EMS1 ASC 6,XXXXXX EXP EMS2 ASC 4,YYYYYY ( EMS3 ASC 14, EMCS1 DEF EMS1 EMCS2 DEF EMS2 EMCS3 DEF EMS3 STAT BSS 1 ACTUAL STATUS EXSTS BSS 1 SPC 2 MSTUS DEF *-* RETURN ADDRESS JSB RSTUS READ STATUS AND MSTUS,I MASK THE STATUS ISZ MSTUS UPDATE RETURN ADDRESS LDB MSTUS GET RETURN ADDRESS STB CSTUS SAVE JMP CSC01 CONTINUE SPC 2 MOVE DEF *-* RETURN ADDRESS LDB MOVE,I GET TO ISZ MOVE LDA .M14 STA MVCNT LDA MOVE,I GET FROM STA MVFRM MVC01 LDA MVFRM,I GET DATA STA B,I PUT DATA INB ISZ MVFRM ISZ MVCNT JMP MVC01 ISZ MOVE JMP MOVE,I RETURN MVCNT BSS 1 .M14 DEC -14 MVFRM DEF *-* SPC 2 ESTUS DEF *-* RETURN ADDRESS JSB RSTUS READ STATUS AND MSKXS MASK LDB ESTUS GET RETURN ADDRES STB CSTUS SAVE JMP CSC01 CONTINUE SPC 2 MSKXS ABS CC+CF+SCF+CB+CE+DEVI+DEVI SKP CDATA DEF *-* RETURN ADDRESS JSB RDDTA GET DATA FROM INTERFACE CDAC1 STA DATA SAVE ACTUAL DATA LDA CDATA,I GET EXPECTED DATA ISZ CDATA UPDATE RETURN CPA DATA CHECK DATA JMP CDXIT CONTINUE STA ?EXDAT SAVE EXPECTED DATA LDA CDATA,I GET MESSAGE POINTER STA CDFRM LDA EMCD3 STA CDTO JSB MOVE CDTO DEF *-* CDFRM DEF *-* LDA EXDAT GET EXPECTED DATA CLE LDB EMCD2 JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA CLE LDB EMCD1 JSB O2AS,I CONVERT TO ASCII JSB ERNO PLACE E NO. DEF EMCD LDA DATA GET ACTUAL DATA LDB EXDAT GET EXPECTED DATA JSB ERMS,I REPORT ERROR DEF EMCD JSB ALLER CHECK - ALL ERRORS DESIRED CDXIT ISZ CDATA UPDATE RETURN JMP CDATA,I RETURN SPC 2 EMCD ASC 7,EXXX DATA IS EMD1 ASC 6,XXXXXX EXP EMD2 ASC 4,YYYYYY ( EMD3 ASC 14, EMD4 ASC 4, STOP, EMD5 ASC 6, PARITY, EMD6 ASC 9, BITS PER CHAR)/ EMCD1 DEF EMD1 EMCD2 DEF EMD2 EMCD3 DEF EMD3 DATA BSS 1 ACTUAL DATA EXDAT BSS 1 EXPECTED DATA SPC 2 MDATA DEF *-* RETURN ADDRESS JSB RDDTA READ DATA AND MDATA,I MASK THE DATA ISZ MDATA UPDATE RETURN ADDRESS LDB MDATA GET RETURN ADDRESS STB CDATA SAVE JMP CDAC1 CONTINUE SPC 2 CBURT DEF *-* RETURN ADDRESS LDA CBURT,I GET WORD 3 COMMAND STA CBWD3 SAVE ISZ CBURT UPDATE RETURN ADDRESS LDA CBURT,I GET ERROR MSG POINTER STA CBMSG SAVE ISZ CBURT UPDATE RETURN ADDRESS LDA MD128 INITIALIZE COUNTER STA BCNTR LDA BXMIT GET BUFFER POINTER STA BUFFA SAVE LDA BRCV GET BUFFER POINTER STA BUFFB SAVE CLA INITIALIZE ERROR FLAG STA NOERS CBUC2 LDB BUFFA,I GET EXPECTED DATA LDA BUFFB,I GET ACTUAL DATA CPA B CHECK DATA JMP CBUC1 CONTINUE STB EXDAT SAVE EXPECTED DATA STA DATA SAVE ACTUAL DATA JSB MOVE MOVE MSG DEF EMD3 CBMSG DEF *-*  MSG POINTER JSB ERNO GENERATE ENNN DEF EMCD POINTER TO MSG LDA CBWD3 GET WORD 3 COMMAND AND MSK3 ISOLATE BITS / CHAR ADA ASCI5 CONVERT TO ASCII STA EMD6 PLACE IN MSG LDA CBWD3 GET WORD 3 COMMAND AND .B5 ISOLATE STOP LDB ASCI1 1 STOP BIT SZA LDB ASCI2 2 STOP BITS STB EMD4 PLACE IN MSG LDA CBWD3 GET WORD 3 COMMAND RAR,RAR POSITION AND MSK3 ISOLATE PARITY TYPE SZA,RSS WAS PARITY USED JMP CBNOP CONTINUE - NO PARITY USED SLA,RSS EVEN OR ODD? JMP CBODD CONTINUE - ODD PARITY USED LDA CBM1E EVEN PARITY USED LDB CBM2E GET ASCII "EVN" JMP CBEC1 CONTINUE CBODD LDA CBM1O GET ASCII "ODD" LDB CBM2O JMP CBEC1 CONTINUE CBNOP LDA CBM1N GET ASCII "NO" LDB CBM2N CBEC1 STA EMD5 PLACE IN MSG STB EMD5+1 LDA EXDAT GET EXPECTED DATA CLE LDB EMCD2 GET POINTER JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA CLE LDB EMCD1 GET POINTER JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA LDB EXDAT GET EXPECTED DATA JSB ERMS,I REPORT ERROR DEF EMCD POINTER TO MSG JSB ALLER CHECK - ALL ERRORS DESIRED LDB SW14 MASK FOR SE 14 SWJSB JSB SWRT,I CHECK SW REG JMP CBEC2 CONTINUE LDA SUBT. GET SUB-TEST NO (ENNN) AND .77 IOR CBHTI GENERATE HALT INSTRUCTION STA CBHLT PLACE HALT INSTRUCTION IN PROGRAM LDB 112B IS THERE A TELEPRINTER? LDA CBWD3 GET WORD 3 COMMAND FOR DISPLAY SZB,RSS CBHLT NOP NOP REPLACED WITH HALT 1030XX CBEC2 ISZ NOERS CHECK - ALL ERRORS DESIRED RSS JMP CBURT,I NO - RETURN CBUC1 ISZ BUFFA UPDATE BUFFER POINTER ISZ BUFFB UPDATE BUFFER POINTER ISZ BCNTR UPDATE COUNTER JMP CBUC2 CONTINUE JMP CBURT,I RETURN SPC 1 CBHTI OCT 103000 HALT INSTRUCTION SW14 OCT 40000 MASK FOR SE REG BIT 14 CBM1N ASC 1, N CBM2N ASC 1,O CBM1O ASC 1, O CBM2O ASC 1,DD CBM1E ASC 1, E CBM2E ASC 1,VN ASCI5 ASC 1, 5 ASCI1 ASC 1, 1 ASCI2 ASC 1, 2 CBWD3 BSS 1 WORD 3 COMMAND .B5 ABS B5 SPC 1 ALLER DEF *-* RETURN ADDRESS LDB SW2 MASK FOR SWITCH 2 JSB SWRT,I CHECK SWITCH REGISTER CLA,RSS CLEAR ERROR FLAG CCA SET ERROR FLAG STA NOERS SAVE FLAG JMP ALLER,I RETURN SPC 1 NOERS BSS 1 ERROR FLAG SPC 2 SPCHC DEF *-* RETRUN ADDRESS LDA SPCHX GET COMMAND STA SPCP1 SAVE JSB CMND PLACE IN TRANSMIT MODE ABS WRD4+XMIT SPCC1 JSB CMND OUTPUT WORD 6 COMMAND SPCP1 BSS 1 LDA SPCP1 UPDATE COMMAND INA STA SPCP1 AND LOHWD SZA JMP SPCC1 CONTINUE JSB CMND PLACE IN RECEIVE MODE ABS WRD4 JMP SPCHC,I RETURN SPC 2 SPCHX ABS WRD6 SKP ORG ZCEND IOID EQU * DEF FNIO0 DEF FNIO1 DEF CNIO1 DEF CNIO2 DEF CNIO3 DEF CNIO4 DEF OTIO1 DEF FNIO2 DEF FNIO5 DEF STIO1 DEF FNIO6 DEF IOIN6 DEF CW1 DEF CLK00 DEF CLK01 DEC -1 TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEF TST12 DEF TST13 DEC -1 SKP TST01 EQU * MRTST DEF *-* RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 30 SUB-TEST NO. JSB CLF CLEAR INTERFACE FLAG CLC IOCLR I/O MASTER RESET JSB SFS CHECK INTERFACE FLAG FF RSS $7 JMP MRC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM030 ERROR MESSAGE POINTER MRC01 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR1 WHERE TO GO IF INTERRUPT STF INTP ENABLE INTERRUPT SYTTEM CLC IOCLR I/O MASTER RESET NOP ALLOW TIME FOR INTERRUPT NOP INTERRUPT SHOULD NOT OCCUR CLF INTP TURN OFF THE INTERRUPT SYSEM JMP MRC02 CONTINUE MRIR1 DEF *-* RETURN ADDRESS CLF INTP TURN OFF INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM031 POINTER TO MESSAGE MRC02 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG FF JSB STC SET CONTROL FF JSB MRST GIVE INTERFACE A MASTER RESET COMMAND JSB SFS CHECK INTERFACE FLAG FF RSS JMP MRC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM032 POINTER TO MESSAGE MRC03 JSB SUBTH CHECK SUB-TEST HALT JSB CLF CLEAR INTERFACE FLAG FF JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR2 WHERE TO GO IF INTERRUPT STF INTP TURN ON INTERRUPT SYSTEM NOP ALLOW TIME FOR AN INTERRUPT TO TAKE NOP PLACE JSB SUBTH UPDATE SUB-TEST NO. JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR3 WHERE TO GO IF INTERRUPTED JSB MRST GIVE INTERFACE A MASTER RESET COMMAND NOP GIVE THE INTERFACE TIME TO INTERRUPT NOP THERE SHOULD BE NO INTERRUPT CLF INTP TURN OFF THE INTERRUPT SYSTEM MRC04 JSB SUBTT CHECK SUB-TEST HALT,LOOP JMP MRTST,I RETURN SPC 2 MRIR2 DEF *-* RETURN ADDRESS CLF INTP TURN OFF THE INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM033 r<:6POINTER TO MESSAGE JMP MRC04 CONTINUE MRIR3 DEF *-* RETURN ADDRESS CLF INTP TURN INTERRUPT SYSTEM OFF JSB ERMS,I REPORT ERROR DEF EM034 POINTER TO MESSAGE JMP MRC04 CONTINUE SKP TST02 EQU * MSTST DEF *-* RETURN ADDREEES JSB STSUB SAVE SUB-TEST NO OCT 35 JSB MRST MASTER RESET JSB MSS1 TEST SBA,SBB ABS WRD4+SCA ABS SCF+CF EXPECTED STATUS DEF EM035 JSB SHUTA UPDATE SUB-TEST NO. JSB MSS1 TEST CD, CC, CE ABS WRD4+CA ABS CC+CE DEF EM036 JSB SHUTA UPDATE SUB-TEST NO. JSB MSS1 TEST CA, CB, CF ABS WRD4+CD ABS CB DEF EM037 JSB SHUTA UPDATE SUB-TEST NO. JSB CMNDD INITIALIZE INTERFACE ABS WRD4+CD+CA JSB RSTUS READ STATUS (CLC CH) AND MSTT1 MASK CPA MSTT1 CHECK STATUS JMP MSC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM040 MSC01 JSB SUBTH UPDATE SUB-TEST NO. JSB RDDTA READ DATA - SET CONTROL FF AND MSTT1 MASK CPA MSTT1 CHECK NOT EQUAL RSS STATUS JMP MSC02 CONTINUE JSB ERMS,I REPORT ERROR DEF EM041 <  12966-18004 1519 S 0122 BUFFRD ASYNC COMMUN INTF DIAGN SOURCE             H0101 MSC02 JSB SHUTA UPDATE SUB-TEST NO. JSB CMNDD ABS WRD4+CD+CA+SCA JSB MRST MASTER RESET JSB ESTUS ABS NULL DEF EM042 JSB SUBTT JMP MSTST,I RETURN SPC 2 MSTT1 ABS CC+CE+CB SPC 2 MSS1 DEF *-* RETURN ADDRESS LDA MSS1,I GET PARAMETERS STA MSP1 ISZ MSS1 LDA MSS1,I STA MSP2 ISZ MSS1 LDA MSS1,I STA MSP3 STA MSP4 ISZ MSS1 UPDATE RETURN ADDRESS JSB CMNDD OUTPUT COMMAND MSP1 BSS 1 WORD 4 COMMAND JSB ESTUS CHECK STATUS MSP2 BSS 1 EXPECTED STATUS MSP3 DEF *-* ERROR MESSAGE JSB CMNDD OUTPUT COMMAND ABS WRD4+NULL JSB ESTUS CHECK STATUS ABS NULL EXPECTED STATUS MSP4 DEF *-* ERROR MESSAGE JMP MSS1,I RETURN SKP EM030 ASC 14,E030 FLAG NOT SET BY CLC 0/ EM031 ASC 16,E031 CONTROL NOT RESET BY CLC 0/ EM032 ASC 16,E032 FLAG NOT SET BY MR COMMAND/ EM034 ASC 13,E034 CONTROL NOT RESET BY ASC 6, MR COMMAND/ EM033 ASC 18,E033 FLAG SET - STATUS RESET FAILED/ EM035 ASC 11,SBA-SCA, SBB-SCF, CF)/ EM036 ASC 6,CA, CC, CE)/ EM037 ASC 4,CD, CB)/ EM040 ASC 12,E040 STATUS NOT RECVD ON ASC 10, INPUT AFTER CLC CH/ EM041 ASC 10,E041 STATUS RECVD ON ASC 10, INPUT AFTER STC CH/ EM042 ASC 2,MR)/ EM043 ASC 6,EN SBB-SCF)/ EM044 ASC 4,EN CF)/ EM045 ASC 4,EN CE)/ EM046 ASC 4,EN CC)/ EM047 ASC 4,EN CB)/ EM050 ASC 7,REF SBB-SCF)/ EM051 ASC 4,REF CF)/ EM052 ASC 4,REF CE)/ EM053 ASC 4,REF CC)/ EM054 ASC 4,REF CB)/ EM055 ASC 4,EN MR)/ EM056 ASC 4,REF MR)/ EM057 ASC 17,E057 FLAG SET - LOCK INOPERATIVE/ EM060 ASC 14,E060 FLAG NOT SET - DEVINT/ EM110 ASC 4,CA INH)/ EM111 ASC 3,SPCH)/ EM112 ASC 3,SPCH)/ EM113 ASC 11,E113 BA = 0 AFTER MR/ EM114 ASC 10,UART CHAR CTR DOWN)/ EM115 ASC 14,E115 BA = 1 (NO START BIT)/ EM116 ASC 11,UART XMIT OCT 6412 ASC 2, EM117 ASC 5,TEST, BB)/ EM120 ASC 11,U,ART RCVE OCT 6412 ASC 2, EM122 ASC 9,E122 PARITY ERROR/ EM126 ASC 5,SPCHFLG)/ EM127 ASC 15,E127 FLAG NOT SET BY SPCHFLG/ EM130 ASC 8,SPCHFLG RESET)/ EM131 ASC 6,BREAK FLAG)/ EM132 ASC 14,E132 FLAG NOT SET BY BREAK/ EM133 ASC 7,BREAK RESET)/ EM134 ASC 3,ECHO)/ EM137 ASC 5,OVER-RUN)/ EM140 ASC 15,E140 FLAG NOT SET BY OVPEFLG/ EM141 ASC 8,OVPEFLG RESET)/ EM142 ASC 11,E142 NO PARITY ERROR ( PEMS2 ASC 4,XXXXXX)/ EM143 ASC 18,E143 OVPEFLG NOT RESET (WORD5&CLPE)/ EM144 ASC 20,E144 FLAG SET BY BUFFER FLAGS (DCPC=1)/ EM145 ASC 17,E145 FLAG SET BY DEVINT WITH SRQ/ EM146 ASC 19,E146 FLAG NOT SET AFTER CLF CH (SRQ)/ EM147 ASC 14,E147 SRQ SET WHILE LOCK = 1/ HM150 ASC 20,H150 DCPC DATA TRANSFER OMITTED-NO DCPC/ EM151 ASC 8,DCPC TRANSMIT)/ EM152 ASC 14,STATUS ERROR IN DCPC TEST)/ EM153 ASC 7,DCPC RECEIVE)/ EM154 ASC 15,E154 DCPC ABNORMAL COMPLETION/ HDMS ASC 16,BUFFERED ASYNC COMM INTFC DIAG/ SKP TST03 EQU * RMTST DEF *-* RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO OCT 43 JSB MRST MASTER RESET INTERFACE JSB CMNDD INITIALIZE INTERFACE ABS WRD4+CD+CA+SCA LDA MD5 COUNT STA RMCNT LDA RMCM1 INITIAL COMMAND STA RMP02 SAVE LDA AEM43 GET ERROR POINTER STA RMEPT RMC01 LDA RMEPT,I GET POINTER TO ERROR MSG STA RMP03 SAVE STA RMP04 JSB CMND GIVE COMMAND RMP02 BSS 1 COMMAND (ENABLE) JSB CSTUS CHECK STATUS ABS DEVI+DEVI+CC+CB+CE+CF+SCF+RSPAR RMP03 DEF *-* POINTER TO ERROR MSG JSB CMND GIVE COMMAND (RESET ENABLE) ABS WRD1+NULL JSB CSTUS CHECK STATUS ABS CC+CB+CE+CF+SCF+RSPAR RMP04 DEF *-* POINTER TO ERROR MSG ISZ RMCNT UPDATE COUNT RSS JMP RMC02 CONTINUE ISZ RMEPT LDA RMP02 GET LAST COMMAND SLA AND MSK37 MASK IOR WRDD1 STA RMP02 SAVE NEW COMMAND JSB SUBUP D UPDATE SUB-TEST NO JMP RMC01 CONTINUE SPC 2 RMC02 JSB SHUTA JSB MRST MASTER RESET JSB RMS01 TEST REFERANCE COMMAND ABS WRD1+SCFE ABS WRD2+SCFR DEF EM050 JSB SHUTA JSB RMS01 TEST REFERANCE COMMAND ABS WRD1+CFE ABS WRD2+CFR DEF EM051 JSB SHUTA UPDATE SUB-TEST NO JSB RMS01 TEST REFERANCE COMMAND ABS WRD1+CEE ABS WRD2+CER DEF EM052 JSB SHUTA UPDATE SUB-TEST NO JSB RMS01 TEST REFERANCE COMMAND ABS WRD1+CCE ABS WRD2+CCR DEF EM053 JSB SHUTA UPDATE SUB-TEST NO JSB RMS01 TEST REFERANCE COMMAND ABS WRD1+CBE ABS WRD2+CBR DEF EM054 JSB SHUTA UPDATE SUB-TEST NO JSB CMND ENABLE TO ONES ABS WRD1+CCE+CBE+CFE+SCFE+CEE JSB MRST MASTER RESET JSB CMNDD CREATE CONDITIONS THAT ABS WRD4+CA+CD+SCA JSB CMND WOULD OTHERWISE PRODUCE AN INTERRUPT ABS WRD2+NULL JSB ESTUS CHECK STATUS ABS CC+CF+SCF+CB+CE DEF EM055 JSB SHUTA UPDATE SUB-TEST NO JSB CMND SET REF TO ONES ABS WRD2+CCR+CER+CFR+SCFR+CBR JSB MRST MASTER RESET JSB CMND ENABLE ABS WRD1+CCE+CEE+CFE+SCFE+CBE JSB CMNDD ABS WRD4 JSB ESTUS CHECK STATUS ABS NULL DEF EM056 JSB SHUTA UPDATE SUB-TEST NO JSB MRST MASTER RESET JSB CLF CLEAR FLAG FF JSB CMND GENERATE DEVICE INTERRUPT ABS WRD1+CCE+CEE+CBE JSB CMND ABS WRD2+CCR+CER+CBR JSB SFS JMP RMC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM057 RMC03 JSB SUBUP UPDATE SUB-TEST NO JSB STC SET CONTROL AND CLEAR LOCK JSB SFS RSS JMP RMC04 CONTINUE JSB ERMS,I REPORT ERROR DEF EM060 RMC04 JMP RMTST,I RETURN SPC 2 RMS0L1 DEF *-* RETURN ADDRESS LDA RMS01,I GET ARM COMMAND STA RMP05 SAVE ISZ RMS01 LDA RMS01,I GET REFERANCE COMMAND STA RMP06 SAVE ISZ RMS01 LDA RMS01,I GET ERROR POINTER STA RMP07 SAVE STA RMP08 STA RMP09 STA RMP10 ISZ RMS01 UPDATE RETURN ADDRESS JSB CMND OUTPUT ARM COMMAND RMP05 BSS 1 JSB CMNDD OUTPUT CONTROL COMMAND ABS WRD4+NULL JSB CMND OUTPUT REFERANCE COMMAND RMP06 BSS 1 JSB ESTUS CHECK STATUS ABS DEVI+DEVI RMP07 DEF *-* ERROR POINTER JSB CMNDD OUTPUT CONTROL COMMAND ABS WRD4+CD+CA+SCA JSB ESTUS CHECK STATUS ABS CC+CB+CE+CF+SCF RMP08 DEF *-* ERROR POINTER JSB CMND OUTPUT REFERANCE COMMAND ABS WRD2+NULL JSB ESTUS CHECK STATUS ABS DEVI+DEVI+CC+CE+CF+SCF+CB RMP09 DEF *-* ERROR POINTER JSB CMNDD OUTPUT CONTROL COMMAND ABS WRD4+NULL JSB ESTUS CHECK STATUS ABS NULL RMP10 DEF *-* ERROR POINTERS JMP RMS01,I RETURN SPC 1 MD5 DEC -5 RMCM1 ABS WRD1+SCFE WRDD1 ABS WRD1 RMEPT DEF *-* POINTER TO ERROR MSG RMCNT BSS 1 COUNTER AEM43 DEF RMETB RMETB DEF EM043 DEF EM044 DEF EM045 DEF EM046 DEF EM047 SKP TST04 EQU * FIFO NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO OCT 61 JSB PTGNR GENERATE FIRST DATA PATTERN ABS 0 ALL ZEROS JSB XMT TRANSMIT,RECEIVE,COMPARE DATA JSB PTGNR GENERATE 2ND DATA PATTERN ABS -1 ALL ONES JSB XMT TRANSMIT,RECEIVE,COMPARE DATA JSB PTGNR GENERATE 3RD DATA PATTERN ABS 1 ASCENDING JSB XMT TRANSMIT,RECEIVE,COMPARE DATA JSB SHUTA UPDATE SUB-TEST NO JSB CHECK GO TO MASTER RESET ROUTINE JSB SHUTA UPDATE SUB-TgsEST NO JSB PTGNR CREATE 128 CHAR PATTERN ABS 1 ASCENDING JSB VALID GO TO VALIDITY TEST JSB SUBTT JMP FIFO,I RETURN XMT NOP TRANSMIT,RECEIVE AND COMPARE JSB MRST MASTER RESET CLA STA NOERS CLEAR ERROR FLAG JSB CMND START TRANSMIT MODE ABS WRD4+XMIT JSB CMND SEND BLANK CHAR TO ABS WRD0 CLEAR UART JSB XARI OUTPUT WORD 0 DATA LDB MD128 LOAD CHAR COUNT STB BCNTR JSB CMND SELECT RECEIVE MODE ABS WRD4 LDA BXMIT LOAD STARTING ADDRESS STA BUFFA OF BUFFER NOP RLOOP LDA BUFFA,I GET EXPECTED DATA CHAR AND LOHWD MASK STA RXXDA SAVE JSB MDATA GET AND CHECK REVD CHAR OCT 377 MASK RXXDA BSS 1 EXPECTED CHAR DEF EM061 POINTER TO ERROR MSG ISZ NOERS CHECK FOR ERRORS RSS JMP RXXXT BYPASS ERRORS ISZ BUFFA INC TO NEXT CHAR ISZ BCNTR INC CHAR CTR AND SKIP IF =128 JMP RLOOP GET NEXT CHAR LDA BXMIT RESTORE TO START RXXXT STA BUFFA ADDRESS OF BUFF JMP XMT,I RETURN SPC 2 CHECK NOP RETURN ADDRESS JSB PTGNR GENERATE A TEST PATTERN ABS -1 JSB XARI OUTPUT TEST DATA JSB MRST JSB PTGNR GENERATE EXPECTED DATA PATTERN ABS 0 JSB RARI RECEIVE THE DATA FROM FIFO JSB CBUFS CHECK THE RECEIVED DATA DEF EM062 POINTER TO ERROR MSG JMP CHECK,I RETURN SPC 2 VALID NOP VALIDITY TEST LDA VEC STA RLOOP-1 INSERT JMP CND IN XMT LOOP JMP XMT+1 GO TO XMT LOOP I046 JSB CMND SEND CHAR MODE ENABLE CMND ABS WRD1+ENCHM CLA STA NOERS CLEAR ERROR FLAG STA RLOOP-1 RESTORE NOP IN XMT LOOP LDA MD128 INITIALIZE COUNTER STA BCNTR VFLAG JSB RDDTA READ DATA STA VSAVE CLA,INA DELAY PROCESSING FOR 1MS JSB TMRR,I LDA VSAVE RESTORE A REG TO PREVIOUS SSA,RSS CHECK BIT 15 FOR 1 (VALDA) JSB ERR15 ERROR,BIT15 NOT A 1 JSB SFS CHECK FOR FLAG SET (CHAR ENABLE MODE) JSB VERR ERROR,FLAG NOT SET JSB CLF JSB STC ISZ NOERS CHECK FOR ERRORS RSS JMP VALID,I BYPASS ERRORS - RETURN ISZ BCNTR INC TO NEXT CHAR JMP VFLAG GET NEXT CHAR JMP VALID,I RETURN VERR NOP CHAR ENABLE MODE ERROR JSB ERMS,I GO TO ERROR ROUTINE DEF EM064 JSB ALLER CHECK FOR ERROR REPORTS JMP VERR,I ERR15 NOP VALIDITY ERROR ROUTINE JSB ERMS,I DEF EM063 JSB ALLER CHECK FOR ERROR REPORTS JMP ERR15,I SPC 2 VEC JMP I046 VSAVE BSS 1 EM061 ASC 3,FIFO)/ EM062 ASC 5,FIFO MR)/ EM063 ASC 14,E063 VALID DATA BIT NOT SET/ EM064 ASC 11,E064 FLAG DID NOT SET, ASC 10, CHAR MODE ENABLED./ EM065 ASC 9,E065 INC CHAR CTR ASC 12,CNT=XXXXXX EXP YYYYYY/ EM066 ASC 8,BHFLG NOT SET)/ EM067 ASC 9,E067 FLAG NOT SET ASC 5,BY BHFLG./ EM100 ASC 6,WORD5&CBH)/ EM101 ASC 8,BFFLG NOT SET)/ EM102 ASC 9,E102 FLAG NOT SET ASC 5,BY BFFLG./ EM103 ASC 6,WORD5&CBF)/ EM104 ASC 8,BEFLG NOT SET)/ EM105 ASC 9,E105 FLAG NOT SET ASC 5,BY BEFLG./ EM106 ASC 6,WORD5&CBE)/ EM107 ASC 10,E107 FIFO MR DID NOT ASC 8, RESET CHAR CTR/ SKP ORG 6000B TST05 EQU * CHAR CTR AND BUFFER FLAG TEST FLAGS NOP RETURN ADDRESS JSB STSUB SAVE TEST NO OCT 65 JSB MRST MASTER RESET CLA STA NOERS CLEAR ERROR FLAG JSB PTGNR GENERATE 128 CHAR DATA PATTERN ABS 1 JSB CMND SEND XMIT COMMAND ABS WRD4+XMIT LDB MD128 SET UP 128 COUNTER FOR CHAR STB BCNTR COUNT LDA BXMIT GET BUFFER START ADDkyRESS STA BUFFA FOR XMIT CLB FLOOP LDA BUFFA,I LOAD NEXT CHAR TO STA F5DA JSB CMND FIFO F5DA BSS 1 INB INC COUNT ISZ BUFFA UPDATE BUFFER ADDRESS JSB RDDTA GET CHAR COUNT AND CCMSK MASK COUNT AND ALF,ALF POSITION CPA B CHECK FOR VALID COUNT RSS COUNT IS EQUAL JSB CTNER ERROR,COUNT NOT SAME ISZ BCNTR INC CHAR CTR AND CPB .77 TEST FOR FULL CTN RSS FULL COUNT JMP FLOOP COUNT NOT FULL,LOOP JSB SUBTH UPDATE SUB-TEST NUMBER CLA STA NOERS CLEAR ERROR FLAG F503 LDA BUFFA,I LOAD AND SEND NEXT STA F5DA3 JSB CMND CHAR TO INTERFACE F5DA3 BSS 1 LDB BCNTR UPDATE CHAR CTR. INB,SZB,RSS CHECK FOR BUFF FULL JMP FULL BUFFER IS FULL STB BCNTR ISZ BUFFA INC TO NEXT BUF CHAR CPB HFULL CHECK FOR BUFF HALF FULL RSS BUFFER IS HALF FULL JMP F503 LOOP JSB MSTUS CHECK FOR BUFFER ABS BFHF+BFF+BEF HALF FULL FLAG ABS BFHF SET DEF EM066 POINTER TO ERROR MSG JSB SUBTH UPDATE SUB-TEST NUMBER JSB SFS CHECK FOR FLAG SET JSB FERR FLAG NOT SET,GO TO ERR RTN JSB SUBTH UPDATE SUB-TEST NUMBER JSB CMND RESET BUFFER HALF FULL ABS WRD5+77B WITH WORD 5 COMMAND JSB MSTUS GET AND CHECK STATUS ABS BFHF+BFF+BEF FOR BUFFER HALF FULL ABS NULL RESET DEF EM100 POINTER TO ERROR MSG JSB CLF JSB STC CLEAR FLAG,REARM FOR NEXT CK JSB SUBTH UPDATE SUB-TEST NUMBER JMP F503 RETURN TO NORMAL LOOP FERR DEF *-* FLAG NOT SET,BUF HALF FULL JSB ERMS,I GO TO ERROR MSG ROUTINE DEF EM067 JMP FERR,I RETURN FCTR BSS 1 FCTR1 BSS 1 SPC 2 CTNER NOP COUNT ERROR ROUTINE 0^ STA FCTR1 SAVE ACTUAL COUNT STB FCTR STORE CONTENTS OF REG LDB ME65A LOAD ADDRESS CLE JSB O2AS,I GO TO ASCII CONVERT RTN LDA FCTR LOAD EXPECT COUNT LDB ME65B LOAD MSG ADDRESS CLE JSB O2AS,I GO TO ASCII CONVERT RTN LDA NOERS GET ERROR FLAG INA,SZA JMP CTNC1 NO MORE ERRORS TO REPORT LDB FCTR GET EXPECT COUNT LDA FCTR1 GET ACTUAL COUNT JSB ERMS,I GO TO ERROR MSG ROUTINE DEF EM065 JSB ALLER WANT ANY MORE ERRORS REPORTED CTNC1 LDB FCTR JMP CTNER,I RETURN SPC 1 ME65A DEF EM065+11 ME65B DEF EM065+17 SPC 2 FULL JSB MSTUS GET AND CHECK STATUS ABS BFHF+BFF+BEF FOR BUFFER FULL FLAG ABS BFF SET DEF EM101 POINTER TO ERROR MSG JSB SUBTH UPDATE SUB-TEST NUMBER JSB SFS CHECK IF FLAG SET JSB FERR2 FLAG NOT SET,GO TO ERR RTN JSB SUBTH UPDATE SUB-TEST NUMBER JSB CMND SEND COMMAND 5 ABS WRD5+77B CLEAR BUFF FULL JSB MSTUS GET AND CHECK STATUS ABS BFHF+BFF+BEF ABS NULL RESET DEF EM103 POINTER TO ERROR MSG JSB SUBTH UPDATE SUB-TEST NO. JSB CMND ABS WRD4 LDB MD128 SET COUNTER TO STB BCNTR 128 F5R JSB RDDTA GO TO RECEIVE ROUTINE ISZ BCNTR ROUTINE JMP F5R LOOP FOR 128 CHARS JSB CMND ABS WRD4+XMIT LDA MD16 STA BCNTR F5RR JSB CLK16 ISZ BCNTR JMP F5RR JSB MSTUS GET AND CHECK STATUS ABS BFHF+BFF+BEF FOR BUFFER EMPTY FLAG ABS BEF SET DEF EM104 POINTER TO ERROR MSG JSB SUBTH UPDATE SUB-TEST NUMBER JSB SFS CHECK IF FLAG SET JSB FERR4 FLAG NOT SET,GO TO ERR RTN JSB SHUTA UPDATE SUBTEST NUMBER JSB CMND SEND COMMAND 5,TO CLEAR ABS WRD5+77B STATUS  JSB MSTUS GET AND CHECK STATUS ABS BFHF+BFF+BEF FOR BUFFER EMPTY FLAG ABS NULL RESET DEF EM106 POINTER TO ERROR MSG JSB SHUTA UPDATE SUB-TEST NO. JSB MRST MASTER RESET JSB XARI FILL THE FIFO BUFFER JSB MRST MASTER RESET JSB RDDTA GET DATA WORD AND CCMSK SZA CHECK FOR ZERO CTR JSB FERR6 CTR NOT ZERO,GO TO ERR JSB SHUTA UPDATE SUB-TEST NO. JSB MRST MASTER RESET JSB PTGNR GENERATE A TEST PATTERN ABS 1 JSB XARI FILL FIFO - CCNT7 NOT JSB CMND ATTEMPT TO RAISE LINE CA ABS WRD4+CA JSB MSTUS CHECK CC AND CE ABS CC+CE ABS NULL DEF EM110 POINTER ERROR MSG JSB SHUTA UPDATE SUB-TEST NO. JMP FLAGS,I RETURN TO START OF TEST SPC 1 FERR2 DEF *-* FLAG NOT SET,BUF FULL JSB ERMS,I GO TO ERROR ROUTINE DEF EM102 JMP FERR2,I RETURN SPC 1 FERR4 DEF *-* FLAG NOT SET,BUF EMPTY JSB ERMS,I DEF EM105 JMP FERR4,I SPC 1 FERR6 DEF *-* MASTER CLEAR ERROR JSB ERMS,I GO TO ERROR ROUTINE DEF EM107 JMP FERR6,I SPC 1 CCMSK OCT 37400 FMASK ABS BFHF+BFF+BEF HFULL EQU MD64 SKP TST06 EQU * SCTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO OCT 111 JSB MRST MASTER RESET INTERFACE JSB CMND GO TO XMIT MODE ABS WRD4+XMIT JSB CMND OUTPUT DUMMY ABS WRD0+NULL CLA STA SCSSX JSB SCS02 INTIALIZE SPCH RAM ABS WRD6 JSB SCS01 CHECK DATA AND SC ABS SCALL RAM = ALL ZEROS DEF EM111 POINTER ERROR MSG CLA STA SCSSX JSB SCS02 INITIALIZE SPCH RAM ABS WRD6+SPCHD JSB SCS01 CHECK RAM DATA = ALL ONES ABS SCALL+SCCMP+SCCMP DEF EM111 POINTER TO E oRROR MSG JSB SHUTA UPDATE SUB-TEST NO LDA SCSCM STA SCSSX JSB SCS02 INITIALIZE SPCH RAM ABS WRD6 JSB SCS01 CHECK RAM DATA ABS SCCHX DEF EM112 POINTER TO ERROR MSG LDA SCSCM STA SCSSX JSB SCS02 INITIALIZE SPCH RAM ABS WRD6+SPCHD JSB SCS01 CHECK RAM DATA ABS SCCHX+SCCMP+SCCMP DEF EM112 POINTER TO ERROR MSG JSB SHUTA UPDATE SUB-TEST NO. JMP SCTST,I RETURN SKP SCS01 NOP RETURN ADDRESS CLA STA NOERS CLEAR ERROR FLAG LDA SCS01,I GET PARAMETERS STA SCTYP SAVE PATTERN TYPE ISZ SCS01 LDA SCS01,I STA SCPE1 CLA STA SCCHR INITIALIZE CHARACTER ADA SCWD0 WORD 0 COMMAND STA SCPS1 SAVE SCSC5 JSB CMND OUTPUT WORD 4 COMMAND ABS WRD4+XMIT JSB CMND OUTPUT WORD 0 COMMAND SCPS1 BSS 1 JSB CMND SET INTERFACE TO RECEIVE ABS WRD4+NULL LDB SCTYP GET TYPE OF PATTERN RBL RBL,SLB JMP SCSC1 ALL RBL,SLB JMP SCSC2 CHECKS LDA SCTYP AND LOHWD STA B LDA SCPS1 GET DATA AND LOHWD LOWER HALF WORD CPA B JMP SCSC1 LDA SCMX JMP SCSC3 CONTINUE SCSC1 LDA SCSCN JMP SCSC3 CONTINUE SCSC2 LDA SCPS1 SLA JMP SCSC4 LDA SCSCN RSS SCSC4 LDA SCMX SCSC3 LDB SCTYP SSB XOR SCMX STA B LDA SCPS1 SAVE AND LOHWD IOR B IOR SCMYY CONSTRUCT EXPECTED DATA STA SCPS2 JSB CDATA CHECK DATA SCPS2 BSS 1 SCPE1 DEF *-* POINTER TO ERROR MSG ISZ NOERS CHECK ERROR FLAG RSS CONTINUE JMP SCSC6 NO MORE ERROR REPORTS LDA SCPS1 INA UPDATE TEST DATA STA SCPS1 AND LOHWD SZA JMP SCSC5 CO9B@ HED GLASS TELETYPE DRIVER IFZ ## NAM DVT05,0 12966-16003 1944 791105 (MODEM) XIF ## IFN HARDWIRED VERSION NAM DVT05,0 12966-16002 1944 791105 (HARDWIRED) XIF * ENT IT05,CT05 EXT $LIST,.SBT,.LBT,$OPSY IFZ ## EXT $UPIO XIF ## * ****************************************** * * * NOTE: * * MODEM VERSION FEATURES ARE ENABLED * * USING THE "Z" ASSEMBLY OPTION. * * SUCH ITEMS ARE FLAGGED BY ##. * * THE HARDWIRED VERSION IS A SUBSET OF * * THE MODEM VERSION, AND IS ASSEMBLED * * USING THE "N" ASSEMBLY OPTION. * ****************************************** * SOURCE: HP RTE DVT05 12966-18006 (HARDWIRED) * RELOC.: HP RTE DVT05 12966-16002 (HARDWIRED) * MINI-CARTRIDGE: 12966-13301 (HARDWIRED) * * ##SOURCE: HP RTE DVT05 12966-18007 (MODEM) * ##RELOC.: HP RTE DVT05 12966-16003 (MODEM) * ##MINI-CARTRIDGE: 12966-13302 (MODEM) * MANUAL: HP RTE DVT05 12966-94010 (BOTH VERSIONS) * ##SUPPLEMENT: 12966-94015 (MODEM) * PRODUCT: 12966A-A04 OR A05 (HARDWIRED) * ## OR 12966A-A08 (MODEM) * * PRMR: B.B.,ARS * * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * ***************************************************************** SKP *2.1 INPUT/OUTPUT INTERFACE * * DVT05 WILL COMMUNICATE * VIA THE 12966A BUFFERED ASYNCHRONOUS DATA COMMUNICATION * INTERFACE CARD OVER A HARDWIRED LINE * OR A MODEM. ## * *2.2 MAJOR FUNCTIONS * * DVT0b5 PROVIDES THE FOLLOWING MAJOR FUNCTIONS: * 1. I/O CONTROL OF A CRT. * 2. READ OR WRITE REQUEST TO KEYBOARD AND DISPLAY. * 3. CONSOLE OR TERMINAL USE. *2.2.1 CRT CONTROL REQUEST * *ICNWD * 01-SET OPERATIONAL MODE, TIMEOUT HANDLING, AND * LINE TERMINATION MODE. * * BIT(S) FUNCTION * 15 1 = DO NOT DOWN DEVICE ON TIMEOUT * 0 = LET SYSTEM PROCESS TIMEOUT * 14 1 = ISSUE A PROMPT AT THE BEGINNING * OF EACH READ OPERATION. * 0 = PERFORM A NORMAL READ. * 13-9 DELAY IN STALL CHARACTERS (0 TO 31). * 8-4 DELAY IN STALL CHARACTERS (0 TO 31). * 3-0 NOT USED. * * 11-SPACE "IPRM" LINES (IPRM=1 TO 255) * 20-ENABLE TERMINAL. ALLOWS TERMINAL TO SCHEDULE PROGRAM WHEN KEY IS * STRUCK. * 21-DISABLE TERMINAL. INHIBIT SCHEDULING OF TERMINAL'S PROGRAM. * 22-SET NEW TIME OUT (IN OPTIONAL PARAMETER) * 23-CLEAR THE OUTPUT QUEUE (BUFFER FLUSH). * ALL BUFFERED REQUESTS IN THE QUEUE WILL * BE IGNORED UNTIL EITHER A READ REQUEST * OR A CONTROL 24 REQUEST IS RECEIVED. * 24-RESTORE OUTPUT PROCESSING. REQUIRED ONLY IF SOME OF BUFFER IS * TO BE SAVED. * 30-SET COMMUNICATION LINE PARAMETERS. * BITS FUNCTION * 15-9 NOT USED. * 8 1=MODEM ## * 0=HARDWIRED * 7-6 NOT USED. * 5 1=PARITY ON (GENERATES 7 BIT + PARITY CHAR. SIZE) * 0=PARITY OFF (GENERATES 8 BIT CHAR. SIZE) * 4 1=PARITY EVEN * 0=PARITY ODD * 3210 BAUD RATE * 0000 ==> EXTERNAL * 0001 ==> 50 * 0010 ==> 75 * 0011 ==> 110 * 0100 ==> 134.5 * 0101 ==> 150 * 0110 ==> 300 * 0111 ==> 600 * 1000 ==> 900 * 1001 ==> 1200 * 1010 ==> 1800 * 1011 ==> 2400 * 1100 ==> 3600 * 1101 ==> 4800 * 1110C ==> 7200 * 1111 ==> 9600 * * -ANY CONTROL REQUEST, VALID OR INVALID, WILL RESULT IN ENABLING * INTERRUPT ON A TERMINAL IF THE TERMINAL HAS BEEN ENABLED. SKP *2.2.2 COMMUNICATION LINE CONTROL * *ICNWD * 0-CLEAR OPERATION. * 31-LINE OPEN/CLOSE (MODEM OPERATION ONLY). ## * OPTIONAL PARAMETER NON-ZERO => LINE OPEN * OPTIONAL PARAMETER = 0 => LINE CLOSE. * SETS MODEM CONTROL LINES FOR COMMUNICATION * OVER A MODEM LINK, OR CAUSES THE TELEPHONE TO * DISCONNECT. * 32-AUTO ANSWER (MODEM OPERATION ONLY). ## * ALLOWS THE COMPUTER TO ANSWER INCOMING * TELEPHONE CALLS, IF THE MODEM IS SO EQUIPPED. * * *2.2.3 DATA OUT TO DISPLAY * * -FUNCTION BIT DEFINITIONS * BIT 6 = 1 BINARY OUTPUT MODE * BIT 10 = 1 HONEST OUTPUT MODE * IN THIS DRIVER, HONEST * OR BINARY MODES ARE * IDENTICAL. * * -ASCII OUTPUT IS A STRING OF CHARACTERS, THE NUMBER OF WHICH IS * DESIGNATED BY THE BUFFER LENGTH. THE STRING IS TERMINATED BY A * CARRIAGE RETURN AND LINE FEED (BOTH SUPPLIED BY DRIVER). * -IF AN UNDERSCORE (ASCII 137) IS THE LAST CHARACTER IN THE NEW * BUFFER, THE CARRIAGE RETURN, LINE FEED AND UNDERSCORE CODES ARE * NOT OUTPUT TO THE CRT. * -THE CURSOR WILL REMAIN IN COLUMN 80 IF CURSOR END-OF-LINE WRAP * AROUND STRAP IS NOT IN. OTHERWISE AN AUTOMATIC CR LF ARE GENERATED. * -HONEST MODE WRITE THE CR AND LF ARE NOT OUTPUT AUTOMATICALLY. * ANYTHING IN THE BUFFER IN HONEST MODE IS SENT TO THE TERMINAL. SKP *2.2.4 DATA INPUT FROM KEYBOARD CHARACTER MODE * * -FUNCTION BIT DEFINITIONS * BIT 6 = 0 ASCII INPUT MODE * BIT 6 = 1 BINARY INPUT MODE * BIT 8 = 1 ECHO INPUT TO THE TERMINAL * BIT 8 = 0 NOTHING ECHOS TO THE TERMINAL. * BIT 10 = 1 HONEST INPUT MODE * * IN CHARACTER MODE TH8E TERMINAL TRANSMITS A CHARACTER AT A TIME AS * THE KEY IS DEPRESSED. THE RECORD TERMINATION IS A CR. THE * DRIVER ECHOS A , IF ECHO IS ENABLED, OTHERWISE NO * TERMINATION CHARACTER IS ECHOED. * A RECORD TERMINATOR MUST BE ENTERED TO COMPLETE REQUEST, EVEN IF THE * USERS BUFFER IS FULL. TRANSMISSION LOG IS RETURNED IN B REG. * THERE ARE THREE TYPES OF CHARACTER MODE PROCESSING: HONEST, * ASCII NON-HONEST, AND BINARY. * A. HONEST ASCII, AND/OR BINARY * ALL CHARACTERS ARE SENT TO USERS BUFFER. IF AN ODD NUMBER OF * BYTES IS REQUESTED, THE LAST BYTE IN THE WORD IS STUFFED WITH * A SPACE (40B) IF ASCII, OR A NULL IF BINARY. THIS MAY RESULT IN * WRITING ONE BYTE PAST THE END OF THE REQUESTED BUFFER. * B. NON-HONEST ASCII * THE DRIVER WILL PROCESS THE BELOW SPECIAL CHARACTERS: * *DEL (RUBOUT) ASCII 177 * ENTERING DEL WILL DELETE THE CURRENT RECORD AND CAUSE (\, * CRLF)TO BE OUTPUT. THIS IS USED TO DELETE THE CURRENT LINE * AND START A NEW LINE. * *BACKSPACE ASCII 10 * ENTERING BACKSPACE WILL DELETE THE LAST CHARACTER. THE * TERMINAL WILL LOCALLY MOVE THE CURSOR BACK ONE POSITION. * *LINEFEED ASCII 12 * THIS WILL NOT BE SENT TO USER'S BUFFER. * *CNTROL D ASCII 4 * ENTERING CONTROL D WILL CAUSE BIT 5 TO BE SET IN TERMINAL * STATUS WORD AND TRANSMISSION TERMINATED WITH B REG. = 0. THIS * BIT WILL BE CLEARED UPON NEXT ENTRY. * *CARRIAGE RETURN ASCII 15 * ENTERING A TERMINATES THE LINE, AND CAUSES A * TO BE ECHOED TO THE TERMINAL IF THE ECHO BIT IS SET. SKP *2.2.5 CRT STATUS REQUEST (RETURNED IN EQT5) * * BIT * 1 -TERMINAL ENABLED. IF THE STATUS WORD IS FOR A TERMINAL (NOT A * SYSTEM CONSOLE) TYPING ANY KEY WILL SCHEDULE THE TERMINAL'S * PROGRAM (IF IT HAS ONE). * 2 -TIME OUT. THE LAST OPERATION RESULTED IN A TIME OUT. THE * DEVICEJ IS SET DOWN IF EQT18 BIT 15 IS ZERO. * 3 -PARITY ERROR. A PARITY ERROR WAS ENCOUNTERED ON THE LAST READ, * SO THE OPERATION WAS RETRIED. (A PARITY ERROR IS TREATED LIKE * A RUBOUT.) * 4 -MODEM LINE ERROR. ## INDICATES THAT THE LINE IS * CURRENTLY DOWN. * 5 -CONTROL D ENTERED. THE USER HAS HIT THIS KEY. * 6 -BREAK KEY HIT. THE DRIVER SCHEDULES THE TERMINAL * PROGRAM OR SETS OPERATOR ATTENTION, AND COMPLETES * IF THE BREAK KEY IS STRUCK * DURING AN OUTPUT OPERATION. A BREAK DURING INPUT IS * TREATED AS A RUBOUT, AND WILL DELETE THE CURRENT INPUT * LINE IN ALL MODES. IF ECHO IS ENABLED, A SLASH,(/), * IS OUTPUT TO THE TERMINAL. * AN UNEXPECTED BREAK CAUSES ANY ENABLED TERMINAL PROGRAM * TO BE SCHEDULED. * 7 -BUFFER FLUSH IN PROGRESS * THIS IS SET BY A CONTROL 23 CALL, AND STAYS SET UNTIL * A) A READ OPERATION IS ENCOUNTERED, * B) A CONTROL 24 (BUFFER UNFLUSH) CALL IS ENCOUNTERED, OR * C) THE QUEUE IS EMPTY. * * *2.2.6 CONSOLE OR TERMINAL USAGE. * * IF AT GENERATAION THE CRT IS IDENTIFIED AS A TERMINAL (VIA THE * INTERRUPT TABLE) THEN STRIKING A KEY WILL SCHEDULE THE PROGRAM * ASSOCIATED WITH THAT TERMINAL IF THE TERMINAL HAS BEEN ENABLED * VIA A CONTROL REQUEST. * STRIKING THE BREAK KEY DURING OUTPUT WILL DO THE SAME, * BUT WILL ALSO SET THE BREAK BIT IN EQT5. * A BREAK DURING INPUT WILL BE TREATED AS A RUBOUT. * IF THE CRT IS A CONSOLE THEN STRIKING A KEY WILL GET THE SYSTEM'S * ATTENTION AND A "*" PROMPT WILL BE WRITTEN. *2.2.7 GENERATION INTO THE SYSTEM. * * THE EQT SETUP MUST BE AS FOLLOWS: * SC,DVT05,X=6[,B][,T=XXXXX] * WHERE SC IS THE SELECT CODE, XXXXX IS THE * DESIRED TIME OUT VALUE [OPTIONAL], AND * B SPECIFIES BUFFERING [OPTIONAL]. HED ****************************************** * SUBROUTINE IS ALWAYS ENTERED JTO * * INITIALIZE A SYSTEM OR USER REQUEST TO * * ANY CRT SUBSYSTEM. * ****************************************** IT05 NOP STA SCH SAVE SELECT CODE CLB STB INITF SET IT05 CT05 POINTER IFZ ## STB EQT19,I ## CLEAR $UPIO FLAG XIF ## LDA EQT5,I GET EQT5 AND NB620 CLEAR EOT,BRK,TO BITS STA EQT5,I PUT IT BACK JSB SETIO CONFIGURE IO SFS01 SFS CARD IF FLAG SET THEN POWER FAIL JMP IT051 FLAG NOT SET JSB XMIT4 LDA CW6 CLR ALL CARD INTERRUPTS IT053 JSB OUT2 (0-377) CPA LWRD6 IS THIS ALL? JMP IT051 YES! FINISHED INA JMP IT053 DO IT AGAIN IT051 EQU * JSB CDINT INITIALIZE CARD LDA REQTP GET REQUEST TYPE CPA B3 JMP IT05C THIS IS A CONTROL REQUEST. IFZ ## JSB LINCK ## CHECK THE MODEM LINES LDA REQTP ## GET BACK THE REQUEST XIF ## SLA JMP IT05R THIS IS A READ REQUEST JMP IT05W THIS IS A WRITE REQUEST SKP **************************************************** * TERMINAL STATUS * * BIT STATUS * * 1 TERMINAL ENABLED * * 2 TIME OUT * * 3 PARITY ERROR * * 4 LINE ERROR (MODEM) ## * * 5 "CONTROL D" ENTERED * * 6 BREAK FLAG SET * * 7 BUFFER FLUSH ENABLED * **************************************************** * **************************************************** * CRT CONTROL * * EXEC CODE CRT CONTROL REQUEST * * 01 SET DATA PARAMETERS * * OPTIONAL PARAMETER: *n * BIT(S) FUNCTION * * 15 1 = DO NOT SET DOWN ON TIMEOUT * * 0 = LET SYSTEM PROCESS TIMEOUT * * 14 SEND A TO THE TERMINAL * * AT THE START OF A READ * * (LINE OR PROMPT MODE). * * TO TRIGGER THE TERMINAL. * * 13-9 DELAY IN STALL CHARACTERS * * (NUMBER OF NULLS TO OUTPUT * * AFTER A CARRIAGE RETURN.) * * 8-4 DELAY IN STALL CHARACTERS * * (NUMBER OF NULLS TO OUTPUT * * AFTER A LINE FEED.) * * 3-0 NOT USED. * * 11 SPACE LINES * * 20 ENABLE TERMINAL * * 21 DISABLE TERMINAL * * 22 SET TIME OUT * * 23 SET BUFFER FLUSH * * 24 REMOVE BUFFER FLUSH * * 30 SET UP LINE PARAMETERS * * BIT(S) FUNCTION * * 15-9 NOT USED * * 8 1=MODEM ## * * 0=HARD WIRED * * 7-6 NOT USED * * 5 1=PARITY ON (7 BIT CHAR. SIZE) * * 0=PARITY OFF (8 BIT CHAR. SIZE)* * 4 1=PARITY EVEN * * 0=PARITY ODD * * 3210 BAUD RATE * * 0000 EXTERNAL * * 0001 50 * * 0010 75 * * 0011 110 * * 0100 134.5 * * 0101 150 * * 0110 300  * * 0111 600 * * 1000 900 * * 1001 1200 * * 1010 1800 * * 1011 2400 * * 1100 3600 * * 1101 4800 * * 1110 7200 * * 1111 9600 * * 31 OPEN/CLOSE LINE (MODEM) ## * * OPTIONAL PARAMETER INDICATES * * OPEN IF NON-ZERO, CLOSE IF = 0.* * 32 AUTO ANSWER (MODEM) ## * **************************************************** HED **************************************************** * DOES CONTROL REQUEST PROCESSING FOR THE * * KEYBOARD/DISPLAY. * **************************************************** IT05C LDA FUNCT GET CONTROL WORD LDB EQT7,I GET OPTIONAL PARAMETER CPA B1 CHECK OPTIONAL PARAMETER JMP CN01 SET UP FUNCTIONAL MODE CPA B11 JMP CN11 GO SPACE LINES CPA B20 JMP CN20 GO ENABLE TERMINAL CPA B21 JMP CN21 GO DISABLE TERMINAL CPA B22 JMP CN22 GO SET TIME OUT CPA B23 JMP CN23 GO SET BUFFER FLUSH CPA B24 JMP CN24 GO REMOVE BUFFER FLUSH CPA B30 JMP CN30 GO SET LINE PARAMETERS IFZ ## CPA B31 MODEM LINE OPEN ## JMP CN31 RESERVED FOR MODEM ## CPA B32 MODEM LINE OPEN - AUTO ANSWER ## JMP CN32 RESERVED FOR MODEM ## XIF ## SZA CHECK FOR CLEAR REQUEST JMP REJ2 ILLEGAL CONTROL REQUEST * CN00 EQU * PROCESS CLEAR REQUEST JSB CLRCD CLEAN OFF CARD LDA EQT20,I GET LAST COMMAND RAR SLA,RSS IF WRITE OR |#CONTROL, SEND NULL JMP REJ2A KEEP INTERRUPTS ON IF MODEM CLB SEND A NULL JSB OUT1 JMP EOOP1 TO ALLOW CHAR. OUT OF UART * * SET FUNCTIONAL MODE * CN01 EQU * STB EQT18,I SAVE OPTIONAL PARAMETER JMP REJ2 EXIT * **SPACE LINES***** **MAX NO. IS 255** * CN11 EQU * IFZ ## JSB LINCK ## THIS CONT. REQ. NEEDS LINCK XIF ## LDA EQT7,I GET OPTIONAL PARAMETER SSA CHECK FOR NEG. VALUE CMA,INA INVERT IF NEGATIVE AND B377 LIMIT TO < 256 CMA,INA,SZA,RSS IF ZERO USE 1 CCA SET TO -1 STA EQT7,I PUT IT BACK CN11L JSB EORP OUTPUT (CR,LF) ISZ EQT7,I JMP CN11L CLA STA EQT19,I SET A REG. EXIT JMP EOOP4 * **GO ENABLE TERMINAL(BIT 1 OF EQT5)** * CN20 LDA EQT17,I IF -1 THEN NO PROG. TO SCHED. INA,SZA OR "0" INTO EQT5 IF NO PROG. LDA B2 SET BIT 1 (TERM. ENABLED) IOR5 IOR EQT5,I CONSTRUCT NEW STATUS WORD ST5 STA EQT5,I RESTORE EQT5 JMP REJ2 GO EXIT A=2 SKP * **GO DISABLE TERMINAL** * CN21 LDA B.3 AND5 AND EQT5,I REMOVE BIT 1 JMP ST5 * **GO SET NEW TIME OUT** * CN22 EQU * T.O. VALUE IN B SSB,RSS ONLY ZERO AND POSITIVE LEGAL CMB,INB NEGATE IT STB EQT14,I STORE NEW TIME OUT. JMP REJ2 * **GO SET BUFFER FLUSH (BIT 7 OF EQT5)** * CN23 LDA B200 SET BIT7 IN EQT5 JMP IOR5 * **GO REMOVE BUFFER FLUSH** * CN24 LDA NBIT7 REMOVE BIT 7 JMP AND5 * **GO SET LINE PARAMETERS** * CN30 BLF,BLS SHIFT LEFT 5 BITS LDA EQT21,I GET OLD INFO. AND BN67 CLEAR PART OF IT IOR B PUT IN THE NEW STA EQT21,I SAVE IT JMP REJ2 EXIT * **PERFORM OPEN LINE FUNCTION (MODEM) ## ** IFZ ## * CN31 EQU * ## SZB CHECK FOR OPEN OR CLOSE ## CN31C LDB B114K LINE OPEN (114000) CA & CD ## LDA EQT21,I AND OPEN FLAG (SIGN BIT) ## AND BN14K CLEAR OUT BITS 11,12,15 ## IOR B MAYBE PUT THEM BACK ## STA EQT21,I ## SZB ## LDB B32 SET LINE CONTROL REF. IN ## STB EQT10,I EQT10 ## JSB SETIO FIX UP CW4 ## JSB CDSET SET UP CARD ## CN31A LDB DM200 2 SECOND TIMEOUT ## JSB EXIT0 EXIT WITH SPECIFIED TIMEOUT## * CN31B JSB CHRIN GET MODEM LINE STATUS ## LDB EQT7,I CHECK FOR LINE CLOSE ## LDA BSTAT GET BOARD STATUS ## SZB,RSS IF LINE CLOSE MASK CC FOR 202T MODEM ## AND NBIT3 ## AND B32 IF OPEN LOOK FOR CB,CC,CF ## CPA EQT10,I IF CLOSE, SHOULD BE ALL ZEROS ## CLA,RSS EXIT ## JMP CN31A LINE STATUS INAPPROPRIATE - TRY AGAIN ## JMP CT05,I LINE EXIT ## * **PERFORM AUTO ANSWER FUNCTION (MODEM) ## ** * CN32 EQU * AUTO ANSWER ## LDA CW2 SET CE REF. = 0 ## JSB OUT2 ## LDA ENCE ENABLE CE INTERRUPT (RING) ## JSB OUT2 ## STA EQT7,I NON-ZERO FOR LINE OPEN ## CLB CLEAR TIME OUT ## JSB EXIT0 WAIT FOR RING INTERRUPT ## * JMP CN31C GO DO LINE OPEN ## XIF ## HED ********************************************** * EQT6 FOR READ\WRITE * * EQT6 FOR READ\WRITE OPERATIONS IS: * * BIT MEANING * * 6 0\1 IS ASCII\BINARY * * 8 0\1 IS OFF\ON ECHO * * 10 0\1 OFF\ON HONEST MODE * ********************************************** IT05W CLB,RSS SETUP EQT9(RUNNING CHAR. ADD.) AND I05W1 NOP EQT 10 (LAST CHAR. ADD.) LDA EQT7,I GET BUFFER STARTING ADDRESS RAL,CLE MULTIPLY S.A. BY TWO STA EQT9,I STORE AT EQT9 LDA EQT8,I GET BUtFFER LENGTH CMA,SSA,INA,RSS COMPLEMENT,ARE THEY CHAR.? JMP ITW1 YES! CMA,INA MAKE POS AGAIN RAL MULTIPLY WORDS X 2 AND ITW1 ADA EQT9,I STA EQT10,I STORE LAST CHAR. ADD. AT EQT10,I CMA,INA MAKE LAST CHAR. ADD. NEG. ADA EQT9,I - NO. OF CHAR. ARE NOW IN A REG. SZB JMP I05W1,I SZA,RSS IS IT 0 ? JMP ITW31 YES! IT IS ZERO JSB TRAN1 GO TO OUTPUT SUBROUTINE ITW30 JSB EXIT1 WAIT B.E. INTERRUPT LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA,RSS JMP ITW30 NOT BUFFER EMPTY - WAIT ITW31 LDA HONST IS THIS HONEST MODE? SZA,RSS NO - SKIP CRLF 1909 JSB EORP THIS IS ASCII JMP EOOP2 DONE WITH OUTPUT. HED *************************************************** * DOES KEYBOARD READ. * * THE DRIVER ASSUMES A CHARACTER TRANSFER IF * * HONEST MODE IS SET. * *************************************************** IT05R CLB,INB JSB I05W1 GO SETUP EQT9 AND EQT10 LDA FUNCT CHECK IF ECHO SET JSB ECHO SET/CLR = 20/0 ECHO LDB HONST SEE IF HONEST MODE SZB JMP IT05H SET UP FOR HONEST MODE LDB BN1 SET RUBOUT INTERRUPT & XMIT JSB CDSET SETS UP BOARD TO ACCEPT SPEC. CHAR. LDA C6404 60404 CNTL-D INTERRUPT JSB OUT2 LDA C6410 60410 BACKSPACE INTERRUPT JSB OUT2 LDA C6415 60415 CR INTERRUPT JSB OUT2 IT05H LDA EQT18,I CHECK EQT18 RAL FOR BIT 14 SET SSA,RSS IF SO, SEND JMP IT05I NOT NEEDED LDA B21 JSB OUT2 SEND IT LDA N64 JSB TIMER WAIT AT LEAST 150 USEC. LDB B4 FOR CHAR. TO CLEAR UART ADB HONST RSS RSS IT05I LDB HONST GET HONEST FLAG JSB CDSET { SET CARD FOR RECEIVE (BIT 0=1 FOR HONEST) JMP C05R8 * P.ERR NOP PROCESS PARITY ERRORS LDA EQT5,I IOR B10 SET PARITY ERROR BIT 3 STA EQT5,I JMP P.ERR,I RETURN * * TIMER NOP 2.5 USEC TIMER (XE) PER LOOP SSA,INA,RSS JMP TIMER,I JMP *-2 * HED ****************************************************************** * SUBROUTINE INITIALIZES THE COMPLETION SECTION * * FOR ALL COMPLETION INTERRUPTS. * ****************************************************************** CT05 NOP STA SCH SAVE SC LDB RSS SET CONT. FLAG STB INITF TO RSS JSB SETIO CONFIGURE IO IFZ ## LDA EQT19,I ## CHECK FOR $UPIO ENTRY SSA ## SET NEGATIVE BY LINCK - TRY AGAIN JMP $UPIO ## XIF ## JSB CDSTT GET CARD STATUS AND B40 CHECK FOR BUFFER OVERFLOW SZA,RSS HAS IT OVER FLOWED? JMP CT5A2 NO IFZ ## SWH01 NOP ## NOP/RSS HARD/MODEM XIF ## JMP EOOP9 YES,ERROR EXIT (B=3,XMISSON ERROR) CT5A2 LDA BSTAT GET BOARD STATUS BACK AND B100 MASK FOR BREAK SZA,RSS JMP CT5A0 IOR EQT5,I PUT IT INTO EQT5 STA EQT5,I CT5A0 LDA CW577 CLEAR ALL INTERRUPTS JSB OUT2 LDB EQT1,I GET QUE WORD SZB IS A REQUEST IN PROCESS? JMP CT5A1 YES! JSB SCHED NO REQUEST IN PROCESS.FIND OUT JMP EXIT5 WHAT HAPPENED AND EXIT CT5A1 EQU * LDA EQT4,I AND B4000 CHECK FOR TIME OUT ENTRY SZA IS THIS TIME OUT (BIT 11)? JMP TIMOT YES! LDB EQT11,I GET INTERRUPT ADDRESS JMP B,I GOTO IT HED CONSTANTS AND VARIABLES ***************************************************** * "B.X" IS NEG. BINARY NO., "D.X" IS NEG. DECIMAaL NO* * "BN" IS SOME BINARY NO. * * SEE BELOW. * ***************************************************** * NB620 OCT 177602 LWRD6 OCT 60377 LAST SPECIAL CHARACTER CODE B11 OCT 11 CW6 OCT 60000 B20 OCT 20 B21 OCT 21 B22 OCT 22 B23 OCT 23 B24 OCT 24 B30 OCT 30 IFZ ## B31 OCT 31 ## B32 OCT 32 ## DM200 DEC -200 ## ENCE OCT 10004 ## B114K OCT 114000 ## BN14K OCT 63777 ## NBIT3 OCT 177767 ## CW2 OCT 20000 ## XIF ## BN67 OCT 54037 RETAIN BITS 14,12,11,4-0 B1 OCT 1 B2 OCT 2 B.3 OCT 177775 B100 OCT 100 B200 OCT 200 NBIT7 OCT 177577 C6404 OCT 60404 CONTROL-D INTERRUPT SET C6410 OCT 60410 BACKSPACE INTERRUPT SET C6415 OCT 60415 CR INTERRUPT SET B377 OCT 377 BN1 OCT 57712 B40 OCT 40 B10 OCT 10 BN6 OCT 120004 CW604 OCT 60004 CW610 OCT 60010 CW615 OCT 60015 CW677 OCT 60177 N64 DEC -64 B3 OCT 3 B4000 OCT 4000 FUNCT NOP CONTROL FUNCTION (EQT6 BITS 6-10) HONST NOP HONEST\ASCII (1\0) REQTP NOP REQUEST TYPE (1-3) BSTAT NOP CARD STATUS CDATA NOP COMPLETE DATA WORD ON CARD HED *************************************************** * SUBROUTINE INITIALIZES 12966 * * IO CARD. * * BELOW ARE THE INITIAL CONDITIONS FOR CONTROL: * * WORD 0 DO NOT SEND * * WORD 1 DO NOT SEND * * WORD 2 CE=1 STATUS REF. AND MASTER RESET * * WORD 3 CHARACTER FRAME CONTROL * * CHAR. SIZE=8 BITS * * NO PARITY * * ECHO PER EQT6 BIT 8 * * STOP BIT PER BAUD RATE * * * * WORD 4 INTERFACE CONTROL * * BAUD RATE PER SETUP CALL * * DMA CONTROL OFF * * SBA/SCA ON * * CD (DATA TERM. READY) OFF * * CA (REQUEST TO SEND) OFF * * TRANSMIT MODE ON * * * * WORD 5 CLEAR CARD INTERRUPTS * * * * WORD 6 SPECIAL CHARACTER * * ALL USED SPECIAL CHARACTERS * * ARE CLEARED. * *************************************************** CDINT NOP LDA BN6 JSB OUT2 SEND WORD 120004 LDA FUNCT GET ECHO BIT JSB ECHO (BIT 4) JSB XMIT4 PUT INTO XMIT LDA CW577 SEND WORD 50077 JSB OUT2 LDA CW604 SET A REG. = 60004 JSB OUT2 CLEAR CNTL-D INTERRUPT LDA CW610 CLEAR BACKSPACE INTERRUPT JSB OUT2 LDA CW615 CLEAR CR INTERRUPT 1909 JSB OUT2 1909 LDA CW677 CLEAR RUBOUT INTERRUPT JSB OUT2 JMP CDINT,I RETURN HED ****************************************************** * SUBROUTINE SETS UP THE IO CARD PER B REG. * * 1/0 IS CHARACTER/BLOCK * * 1/0 IS TRANSMIT/RECEIVE * * 1/0 IS CLEAR/NOT CLEAR INTERUPT FLAGS * * 1/0 SPECIAL CHARACTER IS/IS NOT TO BE * * ADDED OR DELETED.SPECIAL CHARACTER IS IN POSITION * * . 1/0 IS ADD/DELETE * * SPECIAL CHARACTER. * ****************************************************** CDSET NOP LDA BIT12 SET WORD1 IN A REG. SLB,BRS IOR B40 "OR" CHARACTER MODE BIT JSB OUT2 LDA CW4 SET WORD 4 IN A SLB,BRS IOR B400 SET XMIT JSB OUT2 LDA CW577 SET WORD 5 IN A REG. SLB,BRS JSB OUT2 MAY NOT GET SENT LDA CW6 SET WORD 6 IN A REG. SLB,RSS JMP CDSET,I RETURN BRS,BRS BRS IOR B "OR" SPECIAL CHARACTER JSB OUT2 JMP CDSET,I * CDSTT EQU * GET CARD STATUS AND PUT IT IN BSTAT NOP ENTRY POINT CLC01 CLC CARD LIA01 LIA CARD STA BSTAT JMP CDSTT,I RETURN WITH STATUS IN A REG. HED ********************************************** * PROCESSES DATA ON KEYBOARD * * READ REQUESTS. "CCNT" COUNTS THE NUMBER * * OF CHARACTERS WE HAVE PROCESSED AND IS USED* * TO LIMIT THE TIME WE ARE IN THE DRIVER. * * FOR ASCII READS THE EOR IS DETECTED BY * * LOOKING FOR THE SPECIAL CHAR. BIT SET ON * * THE 12966 CARD. * ********************************************** C05R8 JSB EXIT1 WAIT FOR INTERRUPT LDA BSTAT CHECK FOR PARITY ERROR AND B40 BIT 5 STA B SAVE IT SZA JSB P.ERR SET UP EQT5 TO INDICATE P.E. * * NOTES ON PARITY ERROR HANDLING: * CURRENTLY THE FACT THAT A PARITY ERROR OCCURRED IS NOTED * IN EQT5, AND THE OPERATION IS RESTARTED. IT IS POSSIBLE * THAT SOME USERS MAY PREFER THAT THE OPERATION COMPLETE * OR DOWN THE DEVICE. THESE ARE A MATTER OF PERSONAL PREFERENCE. * LDA BSTAT CHECK FOR BREAK AND B100 IOR B OR PARITY ERROR SZA JMP RUBOT TREAT IT LIKE A RUBOUT CHPRC LDA N64 SET CHARACTER PROCESS. COUNT TO -64 STA CCNT CHPCC JSB CHRIN GET CHARACTER LDA CDATA CONTROL IF VALID DATA SSA,RSS SKIP IF GOOD JMP C05R8 EXIT AND WAIT NEXT INTERRUPT LDB HONST SZB IS THIS HONEST? JMP CHPR9 YES,THIS IS HONEST LDA DATA THIS IS ASCII LDB CDATA GET DATA WORD RBL ISOLATE SPEC. CHAR. BIT SSB IS IT SPECIAL? JMP SPCHK YES - SEE WHAT IT IS CPA LF IS IT A LINE FEED? JMP CHPCC YES - IGNORE IT JMP CHPR9 PROCESS A NORMAL CHARACTER * SPCHK EQU * PROCESS SPECIAL CHARS. CPA B177 IS IT A RUBOUT? JMP RUBOT YES! GO PROCESS RUBOUT CPA B4 IS IT A CONTROL "D" (SET EOT) JMP CNTLD YES! GO SET EOT CPA B10 CHECK FOR BACKSPACE JMP BS1 IF IT FALLS THROUGH, IT WAS A LDB EQT9,I PROCESS ASCII END OF RECORD CHPR5 LDA FUNCT SEE IF ASCII OR NOT SLA BIT 0 = 0 =>ASCII CLA,RSS BIT 0 = 1 =>BINARY LDA B40 ASCII FILL CHARACTER (SPACE) SLB IF NEXT BYTE ODD, JSB .SBT THEN STUFF IT JSB CLRCD GET EXCESS CHARS. OFF THE BOARD LDA HONST IF HONEST, NO ECHO SZA,RSS LDA FUNCT GET FUNCTION BITS IF NOT HONEST RAR,RAR PUT ECHO OR 0 IN BIT 0 SLA CHECK FOR ECHO JSB EORP SEND IF ECHO IS ENABLED. JMP EOOP2 THEN EXIT. SKP CHPR9 LDB EQT9,I GET CURRENT CHAR. ADD. CPB EQT10,I IS BUFFER FULL? JMP CHPR5 YES BUFFER FULL LDA DATA GET CHARACTER JSB .SBT STORE IT 1909 STB EQT9,I STORE INCREMENTED ADDRESS CPB EQT10,I IS BUFFER FULL? JMP CHPR5 YES IT IS CHPR6 EQU * LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA IS BUFFER EMPTY? JMP C05R8 ISZ CCNT INCREMENT BUFFER COUNT JMP CHPCC IF NOT ZERO GET ANOTHER CHAR. LDB CHPC2 SETUP INTERRUPT RETURN STB EQT11,I STF01 STF CARD SET FLAG FOR IMMEDIATE INTERRUPT JMP EXIT4 THIS IS ALL WE CAN PROCESS,EXIT * CHPC2 DEF CHPRC RETURN POINTER * BS1 LDA EQT7,I GET STARTING ADDRESS OF BUFFER RAL MULTIPLY B6Y 2 CPA EQT9,I ARE WE AT STARTING ADDRESS? JMP RUBOT YES! PROCESS AS RUBOUT CCB ADB EQT9,I DECREMENT CURRENT ADDRESS STB EQT9,I JMP CHPR6 GO GET NEXT CHARACTER HED **************************************************** * SUBROUTINE READS 1 CHARACTER FROM IO CARD* * AND PLACES IT IN A REG. * * BOARD STATUS IS ALSO READ * * DATA = ASCII INPUT CHARACTER * * BSTAT=BOARD STATUS * **************************************************** CHRIN NOP STC02 STC CARD,C PUT CARD IN DATA MODE LIA02 LIA CARD GET DATA WORD STA CDATA STORE COMPLETE DATA WORD AT CDATA JSB CDSTT GET CARD STATUS LDA CDATA GET BACK COMPLETE DATA WORD AND B377 ISOLATE DATA CHAR.(0-7) STA DATA STORE IT STC03 STC CARD,C THIS IS NECESSARY JMP CHRIN,I INTERRUPT * *********************************************** * SUBROUTINE GETS DATA OFF CARD UNTIL * * BUFFER EMPTY. * *********************************************** CLRCD NOP LDB B4 SET CARD TO RECEIVE AND CLR. INT. JSB CDSET CLRC1 JSB CHRIN GET CHARACTER LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF CMA,SSA MAKE SIGN 0 IF EMPTY LDA CDATA COMES HERE IF NOT EMPTY SSA A POSITIVE IF BUFFER EMPTY JMP CLRC1 NEG. FOR VALID CHAR. - YES IT IS JMP CLRCD,I RETURN - BUFFER EMPTY OR INVAL.CHAR. * CNTLD LDA B40 SET BIT 5 (EOT) IOR EQT5,I IN TERMINAL STATUS STA EQT5,I CLA STA EQT19,I SET AREG. EXIT JMP EOOP4 GO SET B REG. TO 0 AND EXIT * ECHO NOP SET ECHO ON CARD PER A REG. RAL,RAL MOVE BIT 2 TO BIT 4 AND B20 MASK FOR ECHO BIT IOR CW3 A =20/0 IS ECHO ON\OFF MJSB OUT2 JMP ECHO,I HED ********************************************************* * AND ARE ENTRIES FOR COMPLETION (P+1) * * EXITS. * ********************************************************* EOOP8 LDB CCNT THIS EXIT IS USED IF UNDERSCORE CPB N128 IS ONLY CHAR. 1909 RSS EOOP1 JSB EXIT1 EOOP2 CLA STA EQT19,I SET A REG. EXIT JMP EOOP3 * EOOP9 LDB B3 SET B=3 FOR XMISSION ERROR STB EQT19,I A REG. EXIT *********************************************************** * IS ENTRY FOR B=0 (TRANS. LOG =0) EXIT. * *********************************************************** EOOP4 CLA STA EQT8,I SET UP FOR B REG. =0 EXIT ********************************************************** * SETS IO CARD FOR NEXT INTERRUPT * * OR REQUEST. * * IT ALSO SETS THE TRANSMISSION LOG IN B REG. (+CHAR. OR * * + WORDS). IF EQT8 =0 (VIA EOOP4) THEN B=0. * ********************************************************** EOOP3 EQU * CLA,INA 1 CPA REQTP IF READ, DON'T BOTHER CHECKING JMP EOP3B LDA EQT5,I CHECK FOR BREAK AND B100 IS IT SET? SZA JSB SCHED IF SO, SCHEDULE A PROGRAM EOP3B JSB CDINT CLR SPECIAL INTERRUPTS IFZ ## JSB LINCK ## SEE IF OPERATION COMPLETED XIF ## JSB CLRCD GET ALL DATA OFF CARD JSB SETEM LDB EQT9,I GET 2X LAST CHAR. ADDRESS CMB,INB MAKE NEG. ADB EQT7,I SUBTRACT TWO TIMES STARTING ADD. ADB EQT7,I CMB,INB LDA EQT8,I IF WORDS THEN DIV. BY 2 SSA JMP EOP3A THESE ARE CHARACTERS INB INCREMENT SO EVEN FOR DIVIDE BRS DIVIDE TO CONVERT TO WORDS EOP3A SZA,RSS IF EQT8 IS 0 THEN CLEA]XR B REG. CLB LDA INITF SEE IF WE EVER LEFT SZA,RSS IF A NOT=0, WE'RE OK JMP IMCOM IMMED. COMPLETION LDA EQT19,I SET A REG. EXIT JMP CT05,I HED ********************************************************* * DOES ASCII WRITE EOR PROCESSING * ********************************************************* EORP NOP LDA EORP SAVE RETURN ADDRESS STA EQT16,I LDB CR OUTPUT A JSB OUT1 LDA EQT18,I GET STALL COUNT RRR 9 MOVE BITS 13-9 TO LOW BITS AND B37 MASK IT CMA,INA,SZA,RSS CHECK FOR ZERO JMP EORP2 NO STALLS REQUIRED STA EORP STORE COUNTER CLA GENERATE THE NULL EORP1 JSB OUT2 SEND IT ISZ EORP COUNT IT JMP EORP1 GO DO IT AGAIN EORP2 LDA LF OUTPUT A JSB OUT2 LSR 11 MOVE LF COUNT TO BITS 0-4 IN B CMB,INB,SZB,RSS CHECK FOR ZERO JMP EORP4 WE ARE DONE CLA MAKE A NULL EORP3 JSB OUT2 SEND IT INB,SZB LOOP UNTIL DONE JMP EORP3 EORP4 JSB EXIT1 WAIT B.E. INTERRUPT LDA BSTAT SEE IF BUFFER EMPTY ALF,ALF SSA,RSS JMP EORP4 NO - TRY AGAIN LDA EQT16,I JMP A,I HED **************************************************** * IS USED FOR CONTINUATION EXITS WITH THE * * TIMEOUT VALUE SET IN THE B REGISTER. ## * * IS USED FOR INITIATOR OPERATION WITH * * INITIATED EXITS (A=0), AND COMPLETION * * CONTINUATION EXITS (P+2). "INITF" INDICATES * * WHICH EXIT TO TAKE. * **************************************************** IFZ ## EXIT0 NOP ## LDA EXIT0 SAVE RETURN ADDRESS ## STA EQT11,I FOR INTERRUPT ## JMP EXIT3 ## XIF ## * EXIT1 NOP LDB EXIT1  GET CALLING PROGRAMS ADDRESS+1 STB EQT11,I STORE AT EQT11,I FOR INTERRUPT LDA REQTP GET REQUEST TYPE LDB EQT14,I GET NORMAL TIMEOUT ARS,SLA,RAL CHECK FOR WRITE OR CONTROL LDB TO30 APPROX. > 30 SECONDS EXIT3 STB EQT15,I NORMAL OR DEFAULT TIMEOUT XOR CW577 IF WRITE, WILL BE 50075 JSB OUT2 CLEAR ALL BUT BREAK INTERRUPTS EXIT5 EQU * STC04 STC CARD,C RE-INITIALIZE CARD FOR INTERRUPT EXIT4 CLA INITF NOP INITIATION\COMPL. FLAG NOP\RSS JMP IT05,I INITIATION RETURN ISZ CT05 RETURN JMP CT05,I COMPLETION RETURN HED ***************************************************** * "B.X" IS NEG. BINARY NO., "D.X" IS NEG. DECIMAL NO* * "BN" IS SOME BINARY NO. * * SEE BELOW. * ***************************************************** * B.6 OCT 177772 BIT12 OCT 10000 LF OCT 12 B37 OCT 37 B17 OCT 17 B137 OCT 137 B317 OCT 317 CR OCT 15 B177 OCT 177 B4 OCT 4 B134 OCT 134 B5 OCT 5 CW577 OCT 50077 B400 OCT 400 CW3A OCT 30002 CW3 OCT 30003 THIS ONE GETS CHANGED FOR PARITY CW4 OCT 40440 CONTROL WORD 4 (DYNAMICALLY ALTERED) CW440 OCT 40040 CONTROL WORD 4 (BASE SITUATION) STF0 STF 0 N128 DEC -128 B1100 OCT 1100 B14 OCT 14 TO30 DEC -3000 B600 OCT 600 B500 OCT 500 EQT16 NOP EQT17 NOP EQT18 NOP EQT19 NOP EQT20 NOP EQT21 NOP DATA NOP ASCII DATA WORD IFZ ## CW132 OCT 10032 ## BIT15 OCT 100000 ## HED * LINCK NOP ## CHECK MODEM STATUS LINES SWH02 NOP ## HARD/MODEM NOP/RSS JMP LINCK,I ## HARD WIRED - DON'T BOTHER * LDB EQT1 ## CHECK FOR SYSTEM CONSOLE CPB SYSTY ## IF SO, DON'T DOWN IT JMP LINCK,I ## JSB CHRIN ## GET LINE STATUS LDA BSTAT ## AND B32 ## CHECK FOR CLR TO SEND'N (CB), CARRIER (CF), CPA B32 ## AND DATA SET READY (CC) JMP LINCK,I ## GO DO IT * IOR CW2 ## STUFF STATUS INTO CONWD 2 JSB OUT2 ## SET STATUS REFERENCE LDA CW132 ## ENABLE LINE CHANGE INTERRUPT JSB OUT2 ## LDA EQT19,I ## SET $UPIO FLAG IOR BIT15 ## INTO THE SIGN BIT STA EQT19,I ## LDA B20 ## SET "BAD LINE# STATUS IOR EQT5,I ## STA EQT5,I ## INTO EQT5. LDA B3 ## TRANSMISSION ERROR LDB INITF ## SEE IF WE EVER LEFT SZB ## CLA,INA,RSS ## CONTINUATOR EXIT JMP IT05,I ## RETURN JMP CT05,I ## NOT READY RETURN XIF ## HED *************************************************** * FOR ALL WRITE AND CONTROL REQUESTS * * THE BUFFER FLUSH BIT IS EXAMINED. * * IS CALLED BY ALL WRITE AND CONTROL * * REQUESTS IF THE BUFFER FLUSH BIT IS SET. * ************************************************** NXQU NOP IF LAST REQUEST IN QUE THEN STOP FLUSH LDA $OPSY GET SYSTEM TYPE RAR,SLA CHECK FOR DMS SYSTEM JMP GTDMS THIS IS A DMS SYSTEM OLDSY LDA EQT1,I CLEAR THE BUFFER FLUSH BIT7 SO LDA A,I THAT NEXT REQUEST WILL BE DONE. CHECK SZA IF NOT LAST REQUEST DO NOT CLR BIT7. JMP NXQU,I THIS IS NOT THE LAST REQUEST. LDA EQT5,I LAST REQUEST AND NBIT7 REMOVE BIT7 STA EQT5,I RESTORE EQT5 JMP NXQU,I AND RETURN * GTDMS RSA CHECK MAP. IF SYSTEM, NO CROSS LOAD ALF,SLA BIT12 = 0/1 FOR SYSTEM/USER RSS JMP OLDSY SYSTEM MAP XLA EQT1,I USER MAP CROSS LOAD XLA A,I JMP CHECK ************************************************* * SUBROUTINE IS GENERAL OUTPUT ROUTINE * * TO TERMINAL. CHAR. IS IN B REG. * ****************>********************************** OUT1 NOP GENERAL PURPOSE CHARACTER OUTPUT ROUTINE JSB XMIT4 SET CARD TO TRANSMIT LDA B GET DATA JSB OUT2 SEND TO TERMINAL JMP OUT1,I RETURN * OUT2 NOP GENERAL PURPOSE OUTPUT ROUTINE OTA10 OTA CARD FOR CARD COMMUNICATION JMP OUT2,I * RECIV NOP LDB B5 SET CARD UP FOR RECEIVE,CHAR. JSB CDSET CLA JSB ECHO TURN OFF ECHO STC05 STC CARD,C ENABLE INTERRUPT JMP RECIV,I HED ********************************************** * * * EXIT IS A=2 (ILLEGAL CONTROL REQUEST). * * (ALSO IMMEDIATE COMPLETION WITH B=0). * * * * * * EXIT CAUSES AN IO07 PROGRAM ABORT. * ********************************************** REJ2A EQU * IFZ ## JSB NXQU ## JSB LINCK ## SEE IF THE MODEM STAYED UP RSS ## DON'T DO NXQU AGAIN XIF ## REJ2 JSB NXQU CHECK QUE JSB SETEM SETUP CARD FOR EXIT IMCOM LDA B2 RSS REJ1 CLA,INA JMP IT05,I ******************************************** * IS CALLED IF RUBOUT INTERRUPT IS * * DETECTED. IT DELETES THE CURRENT RECORD * * AND OUTPUTS (/,CR,LF). * ******************************************** RUBOT JSB CLRCD GET RID OF GARBAGE ON THE BOARD LDA FUNCT RAR,RAR SLA,RSS CHECK FOR ECHO JMP IT05R NOT SET - DON'T SEND / LDB B134 OUTPUT A SLASH JSB OUT1 JSB EORP GO OUTPUT JMP IT05R RE START INPUT HED ***************************************************** * IS CALLED WHENEVER AN INTERRUPT OCCURS AND* * NO PROGRAM IS SCHEDULED (I.E. USER HITS A KEY TO * * GET THE SYSTEM'S ATTENTION. U * ***************************************************** SCHED NOP JSB RECIV PUT INTO RECEIVE JSB CHRIN GET THE INPUT CHARACTER STA EQT6,I SAVE CHAR. FOR PROGRAM JSB CLRCD GET CHAR. OFF CARD CLA STA EQT15,I SET T.O. TO 0 LDB EQT1 IS THIS THE SYSTEM CONSOLE? CPB SYSTY JMP OPFLG YES! GO SET OPERATOR FLAG LDB EQT17,I GET TERMINAL ID ADD. LDA EQT5,I IS TERMINAL ENABLED? RAR,SLA SSB YES! IT IS ENABLED JMP SCHED,I IT IS NOT STB SCH1 1740 RTE LDB EQT4 1740 RTE STB SCH 1740 RTE JSB $LIST GO SCHEDULE TERM. PROG OCT 601 THIS IS CONTROL FOR $LIST SCH1 NOP ID SEGMENT ADDRESS SCH NOP EQT4 ADDRESS OR SELECT CODE JMP SCHED,I RETURN OPFLG ISZ OPATN SET OPER. ATTN. FLAG JMP SCHED,I EXIT HED *********************************************** * ENABLES IO CARD INTERRUPT IF TERM. * * HAS BEEN ENABLED OR IF TERMINAL IS A * * SYSTEM CONSOLE. * *********************************************** SETEM NOP SUBROUTINE TO SETUP IO CARD FOR RECEIVE JSB RECIV SET CARD TO RECEIVE LDA EQT5,I MODE PRIOR TO EXIT. GET TERM.STATUS RAR,SLA IS TERMINAL ENABLED? (BIT 1=1) JMP SETEM,I YES, IT IS - RETURN LDA SYSTY GET CONSOLE EQT CPA EQT1 IS THIS THE SYSTEM CONSOLE ? JMP SETEM,I YES, IT IS CLC02 CLC CARD NONE OF THE ABOVE - INHIBIT INTERRUPTS JMP SETEM,I RETURN * TIMOT EQU * TIME OUT PROCESSING XOR EQT4,I CLEAR T.O. BIT STA EQT4,I IFZ ## LDA EQT21,I CHECK CN32 FLAG ## SSA ## JMP CN31B ## XIF ## LDA EQT5,I IOR B4 SET TIME OUT STATUS STA EQT5,I LDA EQT18,I GET DEVICE PARAMETER LDB B4  SET FOR T.O. ERROR SSA IF SIGN SET DO NOT DOWN ON TIMEOUT CLB NO ERROR STB EQT19,I SET A REG. FOR EXIT JMP EOOP4 B REG. 0 EXIT HED ************************************************** * WRITES TO THE DEVICE. * * STARTING ADDRESS OF DATA IS EQT9,I * * "TRAN1" COUNTS THE NUMBER OF CHAR. IN ONE * * TRANSMISSION AND IS USED TO LIMIT THE TIME * * IN THE DRIVER FOR A SINGLE INTERRUPT. * * IF BUFFER IS NOT EMPTIED IN 1 CALL TO WE* * WILL WAIT FOR A BUFFER EMPTY INTERRUPT AND * * COMPLETE THE TRANSMISSION. * ************************************************** CCNT EQU * CHARACTER COUNT TRAN1 NOP LDA TRAN1 SAVE RETURN ADDRESS STA EQT16,I JSB XMIT4 SET CARD FOR XMIT TRAN4 LDB N128 GET READY TO SEND A FULL BUFFER STB CCNT IN ONE TRANSMISSION LDB EQT9,I GET BUFFER ADDRESS X 2 TRAN2 JSB .LBT GET BYTE (ADDR. IN B) 1909 CPB EQT10,I IS THIS THE LAST WORD? RSS PROCESS END OF RECORD JMP OUT6 NO - IGNORE CHECKS 1909 STB EQT9,I YES - RESTORE INCREMENTED EQT9 1909 LDB HONST IS IT HONEST? SZB 1909 JMP OUT5 YES - IGNORE CHECKS CPA B137 IS THIS A "_" UNDERSCORE? JMP EOOP8 YES! GO TO END OF OUTPUT PROCESSING OUT5 LDB EQT9,I RESTORE B REGISTER OUT6 OTA CARD OUTPUT CHAR. TO CARD CPB EQT10,I HAVE WE SENT LAST WORD? JMP TRAN5 THIS IS THE LAST CHARACTER ISZ CCNT INCREMENT CHAR. COUNT. JMP TRAN2 WE HAVE NOT SENT ALL THE CHARS. STB EQT9,I PUT BACK THE B REGISTER TRAN6 JSB EXIT1 WE HAVE SENT 128 CHAR. LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA JMP TRAN4 BUFFER IS EMPTY - CONTINUE JMP TRAN6 NO - GO WAIT FOR IT TRAN5 STB EQT9,I SAVE B REGISTER FOR TR;ANS. LOG LDA EQT16,I GET RETURN ADDRESS JMP A,I RETURN * XMIT4 NOP SET BOARD TO XMIT LDA CW4 GET CONTROL WORD IOR B400 PUT IN XMIT JSB OUT2 SEND IT JMP XMIT4,I RETURN HED ********************************************************** * CONFIGURES IO INSTRUCTIONS TO SELECT CODE SET * * IN A REG. * ********************************************************** * **************************************************** * SETUP EXTENSIONS ON EQT * * * * EQT NO. USE * * 1-8 STANDARD * * 9 RUNNING CHAR. ADDRESS * * 10 LAST CHAR. ADDRESS OR * * LINE CONTROL REFERENCE FOR * * LINE OPEN/CLOSE ## * * 11 ADDRESS TO GO ON INTERRUPT * * 12 NO. OF EQT EXTENSIONS * * 13 EQT EXTENSION STARTING ADD. * * 14-15 STD * * 16 RETURN ADDRESS * * 17 ID ADDRESS OF TERM. PROG. * * 18 MODE CONTROL PARAMETERS * * BIT(S) * * 15 1= DO NOT DOWN THE DEVICE ON * * TIME OUT. * * 0= LET THE SYSTEM HANDLE T.O. * * 14 1= SEND CHARACTER AT THE * * BEGINNING OF EACH READ. * * 0= NORMAL OPERATION. * * 13-9 DELAY IN STALL CHARACTERS * * (0 TO 31). * * 8-4 DELAY IN STALL CHARACTERS * * (0 TO 31). * * 3-0 NOT USED. * * 19 m, A-REG EXIT VALUE OR * * <$UPIO> FLAG (SIGN BIT) * * 20 LAST REQUEST CODE * * 21 LINE CONTROL PARAMETERS * * BIT(S) FUNCTION * * 15 CN32 FLAG ## * * 14 RESERVED * * 13 0= HARDWIRED * * 1= MODEM ## * * 12 "CA" (RTS) SET ## * * 11 "CD" (DTR) SET ## * * 10 1= PARITY ON * * 0= PARITY OFF * * 9 1= PARITY EVEN * * 0= PARITY ODD * * 8-5 BAUD RATE * * 4-0 RESERVED * **************************************************** SETIO NOP LDA SCH GET SELECT CODE IOR STF0 CONSTRUCT STF CPA STF01 ALREADY CONFIGURED? JMP SETI1 YES - SKIP SOME CODE. STA STF01 STF IS 1021XX IOR B400 CONSTRUCT LIA AND SAVE STA LIA01 LIA IS 1025XX STA LIA02 XOR B600 CONSTRUCT SFS STA SFS01 SFS IS 1023XX XOR B500 CONSTRUCT OTA AND SAVE STA OTA10 OTA IS 1026XX STA OUT6 IOR B1100 STC,C IS 1037XX STA STC02 STA STC03 STA STC04 STA STC05 IOR B4000 CONSTRUCT CLC,C AND SAVE STA CLC01 CLC,C IS 1077XX STA CLC02 SETI1 EQU * LDA EQT4,I CHECK FOR FIRST TIME THROUGH ALF,SLA "I WILL HANDLE TIME OUT" BIT JMP SETIA IF NOT FIRST TIME, SKIP CHECKS LDA EQT6,I CHECK FOR SYSTEM REQUEST SSA JMP SETIA IF SYSTEM REQUEST, SKIP CHECKS LDA EQT13,I CHECK FOR EXTENTS SET UP SZA ZERO + (-6) IS ERROR LDA EQT12,I CHECK FOR ENOUS2GH EXTENTS ADA B.6 IS IT =>6? SSA OK IF POSITIVE JMP REJ1 GO OUT WITH IO07 SETIA EQU * LDA EQT6,I GET CONTROL WORD LSR 6 SHIFT IT AND B37 MASK IT STA FUNCT SAVE IT AND B21 BIT6 OR 10 INDICATES HONEST MODE SZA MAKE IT A 1 OR ZERO FOR HONEST/ASCII CLA,INA GENERATE A 1 STA HONST LDA EQT6,I GET REQUEST TYPE AND B3 STA REQTP LDA EQT13,I GET STARTING ADDRESS OF EXT. CPA EQT16 SEE IF SET UP JMP SETI2 YES - SKIP SOME STUFF STA EQT16 SET ADD. OF EQT16 INA STA EQT17 INA STA EQT18 INA STA EQT19 INA STA EQT20 INA STA EQT21 LDA EQT4,I CHECK FOR FIRST TIME THROUGH ALF,SLA WITH BIT 12 JMP SETI2 NOT FIRST TIME CLA SET UP DEFAULT BAUD RATE STA EQT21,I LDA SCH SET UP SCHEDULE FLAG ADA B.6 ADA INTBA GET SCHEDULE WORD IF NEG. LDB A,I CMB,SSB,INB CHANGE SIGN OF WORD CCB NO PROG. TO SCHED. (INT. POINTS TO EQT) STB EQT17,I SAVE FOR FUTURE REF. LDB EQT1 PUT EQT ADDRESS INTO INT. TABLE STB A,I LDA EQT4,I DONE WITH INITIAL SETUP IOR BIT12 SET "I WILL HANDLE T.O." BIT STA EQT4,I PUT IT BACK SETI2 LDA EQT21,I GET ALL LINE PARAMETERS IFZ ## RAL,RAL ## CHECK BIT 13 SSA,RSS ## FOR HARDWIRED CLB,RSS ## HARDWIRED LDB RSS ## MODEM STB SWH01 ## STB SWH02 ## LSR 7 ## ADJUST A REG. XIF ## IFN LSR 5 SHIFT BITS TO RIGHT XIF AND B317 ISOLATE BAUD RATE & CONTROL BITS IOR CW440 STA CW4 SET UP CONTROL WORD 4 AND B17 ISOLATE BAUD RATE STA EXIT1 SAVE BAUD RABTE LDA EQT21,I GET PARITY INFO. LSR 7 SHIFT INTO PLACE AND B14 MASK IT IOR CW3A PUT IN BASIC CW3 INFO. LDB EXIT1 CHECK FOR 110 BAUD CPB B3 IOR B40 IF SO,THEN 2 STOP BITS STA CW3 SAVE IT AND B10 CHECK FOR PARITY ON SZA,RSS IF NO PARITY CHAR. SIZE IS 8 ISZ CW3 LDA REQTP GET REQUEST TYPE CPA B1 IS IT READ? JMP OVER2 YES - SKIP THE CHECKS SLA WRITE? JMP CN024 CONTROL - CHECK IT OUT OVER1 LDB EQT5,I IF BUFFER FLUSH SET BLF,BLF THEN EXIT VIA REJ2 SSB SEE IF FLUSH JMP OVER8 YES - COMPLETE THE FLUSH OVER2 LDA EQT6,I NORMAL NON CNTL-0 REQUEST STA EQT20,I SAVE THE COMMAND JMP SETIO,I RETURN * CN024 EQU * CHECK FOR BUFFER UNFLUSH & SYST. CNTL 0 LDA FUNCT CHECK FUNCTION CODE CPA B24 IS IT UNFLUSH? JMP CN24 YES - UNFLUSH THE BUFFER SZA,RSS IS IT CNTROL 0? LDA EQT6,I YES - CHECK FOR SYSTEM REQUEST SSA JMP SETIO,I IS SYSTEM REQUEST - GO DO IT JMP OVER1 CHECK FOR FLUSH * * BUFFER FLUSH EXITS * OVER8 LDA INITF GET IT05/CT05 FLAG SZA JMP OVER2 CT05 EXIT JMP REJ2 * HED * EQU'S FOR VARIOUS ENTRIES A EQU 0 DEFINE A REG. B EQU 1 DEFINE B REG. CARD EQU 67B DEFINE CARD FOR IO INSTRUCTIONS * * SYSTEM BASE PAGE COMMUNICATION AREA * . EQU 1650B ESTABLISH ORIGIN OF * BASE PAGE EQT1 EQU .+8 EQT2 EQU .+9 ADDRESSES EQT3 EQU .+10 EQT4 EQU .+11 OF CURRENT EQT5 EQU .+12 EQT6 EQU .+13 EQT ENTRY EQT7 EQU .+14 EQT8 EQU .+15 EQT9 EQU .+16 EQT10 EQU .+17 EQT11 EQU .+18 EQT12 EQU .+81 EQT13 EQU .+82 EQT14 EQU .+83 EQT15 EQU .+84 * INTBA EQU .+4 SYSTY EQU .+21 EQT ENTRY ADDR+DESS OF SYSTEM CONSOLE * OPATN EQU .+52 OPERATOR KEYBOARD ATTN. FLAG * * * ORG * DRIVER LENGTH END h ! 12966-18007 2010 S 0122 &DVT05 12966A DRIVER (MODEM)             H0101 ASMB,R,L,C,Z HED GLASS TELETYPE DRIVER IFZ ## NAM DVT05,0 12966-16003 2010 800227 (MODEM) XIF ## IFN HARDWIRED VERSION NAM DVT05,0 12966-16002 1944 791105 (HARDWIRED) XIF * ENT IT05,CT05 EXT $LIST,.SBT,.LBT,$OPSY IFZ ## EXT $UPIO XIF ## * ****************************************** * * * NOTE: * * MODEM VERSION FEATURES ARE ENABLED * * USING THE "Z" ASSEMBLY OPTION. * * SUCH ITEMS ARE FLAGGED BY ##. * * THE HARDWIRED VERSION IS A SUBSET OF * * THE MODEM VERSION, AND IS ASSEMBLED * * USING THE "N" ASSEMBLY OPTION. * ****************************************** * SOURCE: HP RTE DVT05 12966-18006 (HARDWIRED) * RELOC.: HP RTE DVT05 12966-16002 (HARDWIRED) * MINI-CARTRIDGE: 12966-13301 (HARDWIRED) * * ##SOURCE: HP RTE DVT05 12966-18007 (MODEM) * ##RELOC.: HP RTE DVT05 12966-16003 (MODEM) * ##MINI-CARTRIDGE: 12966-13302 (MODEM) * MANUAL: HP RTE DVT05 12966-94010 (BOTH VERSIONS) * ##SUPPLEMENT: 12966-94015 (MODEM) * PRODUCT: 12966A-A04 OR A05 (HARDWIRED) * ## OR 12966A-A08 (MODEM) * * PRMR: B.B.,ARS * * ***************************************************************** * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979. 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. * ***************************************************************** * MAINTENANCE NOTES * WHEN WHO WHERE WHAT * 800227 ARS CN31C LEAVE EQT21 OPEN FLAG SET DURING LINE * CLOSE PROCESSING TO ALLOW PROPER * PROCESSING OF TIMEOUT IF MODEM TAKES * MORE THAN 2 SECONDS TO HANG UP PHONE. * 800227 ARS CN31B CLEAR EQT21 OPEN FLAG AFTER LINE DROPS. * CLEAR A REG. FOR EXIT. * 800227 ARS EXIT0 CLEAR A REG. BEFORE GOING TO EXIT3 SO * RETURN ADDRESS IS NOT XOR'ED WITH THE * INTERRUPT CONTROL WORD TO THE BOARD. * 800227 NONE OF THE ABOVE CHANGES AFFECT THE HARDWIRED VERSION * OF THE DRIVER, SO ITS DATE CODE WILL NOT CHANGE. ***************************************************************** SKP *2.1 INPUT/OUTPUT INTERFACE * * DVT05 WILL COMMUNICATE * VIA THE 12966A BUFFERED ASYNCHRONOUS DATA COMMUNICATION * INTERFACE CARD OVER A HARDWIRED LINE * OR A MODEM. ## * *2.2 MAJOR FUNCTIONS * * DVT05 PROVIDES THE FOLLOWING MAJOR FUNCTIONS: * 1. I/O CONTROL OF A CRT. * 2. READ OR WRITE REQUEST TO KEYBOARD AND DISPLAY. * 3. CONSOLE OR TERMINAL USE. *2.2.1 CRT CONTROL REQUEST * *ICNWD * 01-SET OPERATIONAL MODE, TIMEOUT HANDLING, AND * LINE TERMINATION MODE. * * BIT(S) FUNCTION * 15 1 = DO NOT DOWN DEVICE ON TIMEOUT * 0 = LET SYSTEM PROCESS TIMEOUT * 14 1 = ISSUE A PROMPT AT THE BEGINNING * OF EACH READ OPERATION. * 0 = PERFORM A NORMAL READ. * 13-9 DELAY IN STALL CHARACTERS (0 TO 31). * 8-4 DELAY IN STALL CHARACTERS (0 TO 31). * 3-0 NOT USED. * * 11-SPACE "IPRM" LINES (IPRM=1 TO 255) * 20-ENABLE TERMINAL. ALLOWS TERMINAL TO SCHEDULE PROGRAM WHEN KEY IS * STRUCK. * 21-DISABLE TERMINAL. INHIBIT SCHEDULING OF TERMINAL'S PROGRAM. * 22-SET NEW TIME OUT (IN OPTIONAL PARAMETER) * 23-CLEAR THE OUTPUT QUEUE (BUFFER FLUSH). * ALL BUFFERED REQUESTS IN THE QUEUE WILL * BE IGNORED UNTIL EITHER A READ REQUEST * OR A CONTROL 24 REQUEST IS RECEIVED. * 24-RESTORE OUTPUT PROCESSING. REQUIRED ONLY IF SbOME OF BUFFER IS * TO BE SAVED. * 30-SET COMMUNICATION LINE PARAMETERS. * BITS FUNCTION * 15-9 NOT USED. * 8 1=MODEM ## * 0=HARDWIRED * 7-6 NOT USED. * 5 1=PARITY ON (GENERATES 7 BIT + PARITY CHAR. SIZE) * 0=PARITY OFF (GENERATES 8 BIT CHAR. SIZE) * 4 1=PARITY EVEN * 0=PARITY ODD * 3210 BAUD RATE * 0000 ==> EXTERNAL * 0001 ==> 50 * 0010 ==> 75 * 0011 ==> 110 * 0100 ==> 134.5 * 0101 ==> 150 * 0110 ==> 300 * 0111 ==> 600 * 1000 ==> 900 * 1001 ==> 1200 * 1010 ==> 1800 * 1011 ==> 2400 * 1100 ==> 3600 * 1101 ==> 4800 * 1110 ==> 7200 * 1111 ==> 9600 * * -ANY CONTROL REQUEST, VALID OR INVALID, WILL RESULT IN ENABLING * INTERRUPT ON A TERMINAL IF THE TERMINAL HAS BEEN ENABLED. SKP *2.2.2 COMMUNICATION LINE CONTROL * *ICNWD * 0-CLEAR OPERATION. * 31-LINE OPEN/CLOSE (MODEM OPERATION ONLY). ## * OPTIONAL PARAMETER NON-ZERO => LINE OPEN * OPTIONAL PARAMETER = 0 => LINE CLOSE. * SETS MODEM CONTROL LINES FOR COMMUNICATION * OVER A MODEM LINK, OR CAUSES THE TELEPHONE TO * DISCONNECT. * 32-AUTO ANSWER (MODEM OPERATION ONLY). ## * ALLOWS THE COMPUTER TO ANSWER INCOMING * TELEPHONE CALLS, IF THE MODEM IS SO EQUIPPED. * * *2.2.3 DATA OUT TO DISPLAY * * -FUNCTION BIT DEFINITIONS * BIT 6 = 1 BINARY OUTPUT MODE * BIT 10 = 1 HONEST OUTPUT MODE * IN THIS DRIVER, HONEST * OR BINARY MODES ARE * IDENTICAL. * * -ASCII OUTPUT IS A STRING OF CHARACTERS, THE NUMBER OF WHICH IS * DESIGNATED BY THE BUFFER LENGTH. THE STRING IS TERMINATED BY A * CARRIAGE RETURN AND LINE FEED (BOTH SUPPLIED BY DRIVER). * -IF AN UNDERSCORE (ASCI bI 137) IS THE LAST CHARACTER IN THE NEW * BUFFER, THE CARRIAGE RETURN, LINE FEED AND UNDERSCORE CODES ARE * NOT OUTPUT TO THE CRT. * -THE CURSOR WILL REMAIN IN COLUMN 80 IF CURSOR END-OF-LINE WRAP * AROUND STRAP IS NOT IN. OTHERWISE AN AUTOMATIC CR LF ARE GENERATED. * -HONEST MODE WRITE THE CR AND LF ARE NOT OUTPUT AUTOMATICALLY. * ANYTHING IN THE BUFFER IN HONEST MODE IS SENT TO THE TERMINAL. SKP *2.2.4 DATA INPUT FROM KEYBOARD CHARACTER MODE * * -FUNCTION BIT DEFINITIONS * BIT 6 = 0 ASCII INPUT MODE * BIT 6 = 1 BINARY INPUT MODE * BIT 8 = 1 ECHO INPUT TO THE TERMINAL * BIT 8 = 0 NOTHING ECHOS TO THE TERMINAL. * BIT 10 = 1 HONEST INPUT MODE * * IN CHARACTER MODE THE TERMINAL TRANSMITS A CHARACTER AT A TIME AS * THE KEY IS DEPRESSED. THE RECORD TERMINATION IS A CR. THE * DRIVER ECHOS A , IF ECHO IS ENABLED, OTHERWISE NO * TERMINATION CHARACTER IS ECHOED. * A RECORD TERMINATOR MUST BE ENTERED TO COMPLETE REQUEST, EVEN IF THE * USERS BUFFER IS FULL. TRANSMISSION LOG IS RETURNED IN B REG. * THERE ARE THREE TYPES OF CHARACTER MODE PROCESSING: HONEST, * ASCII NON-HONEST, AND BINARY. * A. HONEST ASCII, AND/OR BINARY * ALL CHARACTERS ARE SENT TO USERS BUFFER. IF AN ODD NUMBER OF * BYTES IS REQUESTED, THE LAST BYTE IN THE WORD IS STUFFED WITH * A SPACE (40B) IF ASCII, OR A NULL IF BINARY. THIS MAY RESULT IN * WRITING ONE BYTE PAST THE END OF THE REQUESTED BUFFER. * B. NON-HONEST ASCII * THE DRIVER WILL PROCESS THE BELOW SPECIAL CHARACTERS: * *DEL (RUBOUT) ASCII 177 * ENTERING DEL WILL DELETE THE CURRENT RECORD AND CAUSE (\, * CRLF)TO BE OUTPUT. THIS IS USED TO DELETE THE CURRENT LINE * AND START A NEW LINE. * *BACKSPACE ASCII 10 * ENTERING BACKSPACE WILL DELETE THE LAST CHARACTER. THE * TERMINAL WILL LOCALLY MOVE THE CURSOR BA#CK ONE POSITION. * *LINEFEED ASCII 12 * THIS WILL NOT BE SENT TO USER'S BUFFER. * *CNTROL D ASCII 4 * ENTERING CONTROL D WILL CAUSE BIT 5 TO BE SET IN TERMINAL * STATUS WORD AND TRANSMISSION TERMINATED WITH B REG. = 0. THIS * BIT WILL BE CLEARED UPON NEXT ENTRY. * *CARRIAGE RETURN ASCII 15 * ENTERING A TERMINATES THE LINE, AND CAUSES A * TO BE ECHOED TO THE TERMINAL IF THE ECHO BIT IS SET. SKP *2.2.5 CRT STATUS REQUEST (RETURNED IN EQT5) * * BIT * 1 -TERMINAL ENABLED. IF THE STATUS WORD IS FOR A TERMINAL (NOT A * SYSTEM CONSOLE) TYPING ANY KEY WILL SCHEDULE THE TERMINAL'S * PROGRAM (IF IT HAS ONE). * 2 -TIME OUT. THE LAST OPERATION RESULTED IN A TIME OUT. THE * DEVICE IS SET DOWN IF EQT18 BIT 15 IS ZERO. * 3 -PARITY ERROR. A PARITY ERROR WAS ENCOUNTERED ON THE LAST READ, * SO THE OPERATION WAS RETRIED. (A PARITY ERROR IS TREATED LIKE * A RUBOUT.) * 4 -MODEM LINE ERROR. ## INDICATES THAT THE LINE IS * CURRENTLY DOWN. * 5 -CONTROL D ENTERED. THE USER HAS HIT THIS KEY. * 6 -BREAK KEY HIT. THE DRIVER SCHEDULES THE TERMINAL * PROGRAM OR SETS OPERATOR ATTENTION, AND COMPLETES * IF THE BREAK KEY IS STRUCK * DURING AN OUTPUT OPERATION. A BREAK DURING INPUT IS * TREATED AS A RUBOUT, AND WILL DELETE THE CURRENT INPUT * LINE IN ALL MODES. IF ECHO IS ENABLED, A SLASH,(/), * IS OUTPUT TO THE TERMINAL. * AN UNEXPECTED BREAK CAUSES ANY ENABLED TERMINAL PROGRAM * TO BE SCHEDULED. * 7 -BUFFER FLUSH IN PROGRESS * THIS IS SET BY A CONTROL 23 CALL, AND STAYS SET UNTIL * A) A READ OPERATION IS ENCOUNTERED, * B) A CONTROL 24 (BUFFER UNFLUSH) CALL IS ENCOUNTERED, OR * C) THE QUEUE IS EMPTY. * * *2.2.6 CONSOLE OR TERMINAL USAGE. * * IF AT GENERATAION THE CRT IS IDENTIFIED AS A TERMINAL (VIA THE * INTERRUPT TABLE) THEN STRIKING A KEY WILL SC #HEDULE THE PROGRAM * ASSOCIATED WITH THAT TERMINAL IF THE TERMINAL HAS BEEN ENABLED * VIA A CONTROL REQUEST. * STRIKING THE BREAK KEY DURING OUTPUT WILL DO THE SAME, * BUT WILL ALSO SET THE BREAK BIT IN EQT5. * A BREAK DURING INPUT WILL BE TREATED AS A RUBOUT. * IF THE CRT IS A CONSOLE THEN STRIKING A KEY WILL GET THE SYSTEM'S * ATTENTION AND A "*" PROMPT WILL BE WRITTEN. *2.2.7 GENERATION INTO THE SYSTEM. * * THE EQT SETUP MUST BE AS FOLLOWS: * SC,DVT05,X=6[,B][,T=XXXXX] * WHERE SC IS THE SELECT CODE, XXXXX IS THE * DESIRED TIME OUT VALUE [OPTIONAL], AND * B SPECIFIES BUFFERING [OPTIONAL]. HED ****************************************** * SUBROUTINE IS ALWAYS ENTERED TO * * INITIALIZE A SYSTEM OR USER REQUEST TO * * ANY CRT SUBSYSTEM. * ****************************************** IT05 NOP STA SCH SAVE SELECT CODE CLB STB INITF SET IT05 CT05 POINTER IFZ ## STB EQT19,I ## CLEAR $UPIO FLAG XIF ## LDA EQT5,I GET EQT5 AND NB620 CLEAR EOT,BRK,TO BITS STA EQT5,I PUT IT BACK JSB SETIO CONFIGURE IO SFS01 SFS CARD IF FLAG SET THEN POWER FAIL JMP IT051 FLAG NOT SET JSB XMIT4 LDA CW6 CLR ALL CARD INTERRUPTS IT053 JSB OUT2 (0-377) CPA LWRD6 IS THIS ALL? JMP IT051 YES! FINISHED INA JMP IT053 DO IT AGAIN IT051 EQU * JSB CDINT INITIALIZE CARD LDA REQTP GET REQUEST TYPE CPA B3 JMP IT05C THIS IS A CONTROL REQUEST. IFZ ## JSB LINCK ## CHECK THE MODEM LINES LDA REQTP ## GET BACK THE REQUEST XIF ## SLA JMP IT05R THIS IS A READ REQUEST JMP IT05W THIS IS A WRITE REQUEST SKP **************************************************** * TERbMINAL STATUS * * BIT STATUS * * 1 TERMINAL ENABLED * * 2 TIME OUT * * 3 PARITY ERROR * * 4 LINE ERROR (MODEM) ## * * 5 "CONTROL D" ENTERED * * 6 BREAK FLAG SET * * 7 BUFFER FLUSH ENABLED * **************************************************** * **************************************************** * CRT CONTROL * * EXEC CODE CRT CONTROL REQUEST * * 01 SET DATA PARAMETERS * * OPTIONAL PARAMETER: * * BIT(S) FUNCTION * * 15 1 = DO NOT SET DOWN ON TIMEOUT * * 0 = LET SYSTEM PROCESS TIMEOUT * * 14 SEND A TO THE TERMINAL * * AT THE START OF A READ * * (LINE OR PROMPT MODE). * * TO TRIGGER THE TERMINAL. * * 13-9 DELAY IN STALL CHARACTERS * * (NUMBER OF NULLS TO OUTPUT * * AFTER A CARRIAGE RETURN.) * * 8-4 DELAY IN STALL CHARACTERS * * (NUMBER OF NULLS TO OUTPUT * * AFTER A LINE FEED.) * * 3-0 NOT USED. * * 11 SPACE LINES * * 20 ENABLE TERMINAL * * 21 DISABLE TERMINAL * * 22 SET TIME OUT * * 23 SET BUFFER FLUSH * * 24 REMOVE BUFFER FLUSH * * 30 SET UP LINE PARAMETERS * * BIT(S) FUNCTION * * 15-9 NOT USED  * * 8 1=MODEM ## * * 0=HARD WIRED * * 7-6 NOT USED * * 5 1=PARITY ON (7 BIT CHAR. SIZE) * * 0=PARITY OFF (8 BIT CHAR. SIZE)* * 4 1=PARITY EVEN * * 0=PARITY ODD * * 3210 BAUD RATE * * 0000 EXTERNAL * * 0001 50 * * 0010 75 * * 0011 110 * * 0100 134.5 * * 0101 150 * * 0110 300 * * 0111 600 * * 1000 900 * * 1001 1200 * * 1010 1800 * * 1011 2400 * * 1100 3600 * * 1101 4800 * * 1110 7200 * * 1111 9600 * * 31 OPEN/CLOSE LINE (MODEM) ## * * OPTIONAL PARAMETER INDICATES * * OPEN IF NON-ZERO, CLOSE IF = 0.* * 32 AUTO ANSWER (MODEM) ## * **************************************************** HED **************************************************** * DOES CONTROL REQUEST PROCESSING FOR THE * * KEYBOARD/DISPLAY. * **************************************************** IT05C LDA FUNCT GET CONTROL WORD LDB EQT7,I GET OPTIONAL PARAMETER CPA B1 CHECK OPTIONAL PARAMETER JMP CN01 SET UP FUNCTIONAL MODE CPA B11 JMP CN11 GO SPACE LINES CPA B20 JMP CN20 GO ENABLE TERMINAL CPA B21 JMP CN21 GO DISABLE TERMINAL CPA B22 JMP CN22 GO SET TIME OUT CPA B23 JMP CN23 GO SET BUFFER FLUSH CPA B24 JMP CN24 GO REMOVE BUFFER FLUSH CPA B30 JMP CN30 GO SET LINE PARAMETERS IFZ ## CPA B31 MODEM LINE OPEN ## JMP CN31 RESERVED FOR MODEM ## CPA B32 MODEM LINE OPEN - AUTO ANSWER ## JMP CN32 RESERVED FOR MODEM ## XIF ## SZA CHECK FOR CLEAR REQUEST JMP REJ2 ILLEGAL CONTROL REQUEST * CN00 EQU * PROCESS CLEAR REQUEST JSB CLRCD CLEAN OFF CARD LDA EQT20,I GET LAST COMMAND RAR SLA,RSS IF WRITE OR CONTROL, SEND NULL JMP REJ2A KEEP INTERRUPTS ON IF MODEM CLB SEND A NULL JSB OUT1 JMP EOOP1 TO ALLOW CHAR. OUT OF UART * * SET FUNCTIONAL MODE * CN01 EQU * STB EQT18,I SAVE OPTIONAL PARAMETER JMP REJ2 EXIT * **SPACE LINES***** **MAX NO. IS 255** * CN11 EQU * IFZ ## JSB LINCK ## THIS CONT. REQ. NEEDS LINCK XIF ## LDA EQT7,I GET OPTIONAL PARAMETER SSA CHECK FOR NEG. VALUE CMA,INA INVERT IF NEGATIVE AND B377 LIMIT TO < 256 CMA,INA,SZA,RSS IF ZERO USE 1 CCA SET TO -1 STA EQT7,I PUT IT BACK CN11L JSB EORP OUTPUT (CR,LF) ISZ EQT7,I JMP CN11L CLA STA EQT19,I SET A REG. EXIT JMP EOOP4 * **GO ENABLE TERMINAL(BIT 1 OF EQT5)** * CN20 LDA EQT17,I IF -1 THEN NO PROG. TO SCHED. INA,SZA OR "0" INTO EQT5 IF NO PROG. LDA B2 SET BIT 1 (TERM. ENABLED) IOR5 IOR EQT5,I CONSTRUCT NEW STATUS WORD ST5 STA EQT5,I RESTORE EQT5 JMP REJ2 GO EXIT A=2 SKP * **GO DISABLE TERMINAL** * CN21 LDA B.3 AND5 AND zEQT5,I REMOVE BIT 1 JMP ST5 * **GO SET NEW TIME OUT** * CN22 EQU * T.O. VALUE IN B SSB,RSS ONLY ZERO AND POSITIVE LEGAL CMB,INB NEGATE IT STB EQT14,I STORE NEW TIME OUT. JMP REJ2 * **GO SET BUFFER FLUSH (BIT 7 OF EQT5)** * CN23 LDA B200 SET BIT7 IN EQT5 JMP IOR5 * **GO REMOVE BUFFER FLUSH** * CN24 LDA NBIT7 REMOVE BIT 7 JMP AND5 * **GO SET LINE PARAMETERS** * CN30 BLF,BLS SHIFT LEFT 5 BITS LDA EQT21,I GET OLD INFO. AND BN67 CLEAR PART OF IT IOR B PUT IN THE NEW STA EQT21,I SAVE IT JMP REJ2 EXIT * **PERFORM OPEN LINE FUNCTION (MODEM) ## ** IFZ ## * CN31 EQU * ## SZB CHECK FOR OPEN OR CLOSE ## CN31C LDB B114K LINE OPEN (114000) CA & CD ## LDA EQT21,I AND OPEN FLAG (SIGN BIT) ## AND BN14K CLEAR OUT BITS 11,12,15 ## IOR B MAYBE PUT THEM BACK ## IOR BIT15 ## 800227 STA EQT21,I ## SZB ## LDB B32 SET LINE CONTROL REF. IN ## STB EQT10,I EQT10 ## JSB SETIO FIX UP CW4 ## JSB CDSET SET UP CARD ## CN31A LDB DM200 2 SECOND TIMEOUT ## JSB EXIT0 EXIT WITH SPECIFIED TIMEOUT## * CN31B JSB CHRIN GET MODEM LINE STATUS ## LDB EQT7,I CHECK FOR LINE CLOSE ## LDA BSTAT GET BOARD STATUS ## SZB,RSS IF LINE CLOSE MASK CC FOR 202T MODEM ## AND NBIT3 ## AND B32 IF OPEN LOOK FOR CB,CC,CF ## CPA EQT10,I IF CLOSE, SHOULD BE ALL ZEROS ## CLA,RSS EXIT ## JMP CN31A LINE STATUS INAPPROPRIATE - TRY AGAIN ## LDA EQT21,I PICK UP FLAG ## 800227 ELA,CLE,ERA CLEAR IT ## 800227 STA EQT21,I PUT IT BACK ## 800227 CLA ## 800227 JMP CT05,I LINE EXIT ## * **PERFORM AUTO ANSWER FUNCTION (MODEM) ## ** * CN32 EQU * AUTO ANSWER ## # LDA CW2 SET CE REF. = 0 ## JSB OUT2 ## LDA ENCE ENABLE CE INTERRUPT (RING) ## JSB OUT2 ## STA EQT7,I NON-ZERO FOR LINE OPEN ## CLB CLEAR TIME OUT ## JSB EXIT0 WAIT FOR RING INTERRUPT ## * JMP CN31C GO DO LINE OPEN ## XIF ## HED ********************************************** * EQT6 FOR READ\WRITE * * EQT6 FOR READ\WRITE OPERATIONS IS: * * BIT MEANING * * 6 0\1 IS ASCII\BINARY * * 8 0\1 IS OFF\ON ECHO * * 10 0\1 OFF\ON HONEST MODE * ********************************************** IT05W CLB,RSS SETUP EQT9(RUNNING CHAR. ADD.) AND I05W1 NOP EQT 10 (LAST CHAR. ADD.) LDA EQT7,I GET BUFFER STARTING ADDRESS RAL,CLE MULTIPLY S.A. BY TWO STA EQT9,I STORE AT EQT9 LDA EQT8,I GET BUFFER LENGTH CMA,SSA,INA,RSS COMPLEMENT,ARE THEY CHAR.? JMP ITW1 YES! CMA,INA MAKE POS AGAIN RAL MULTIPLY WORDS X 2 AND ITW1 ADA EQT9,I STA EQT10,I STORE LAST CHAR. ADD. AT EQT10,I CMA,INA MAKE LAST CHAR. ADD. NEG. ADA EQT9,I - NO. OF CHAR. ARE NOW IN A REG. SZB JMP I05W1,I SZA,RSS IS IT 0 ? JMP ITW31 YES! IT IS ZERO JSB TRAN1 GO TO OUTPUT SUBROUTINE ITW30 JSB EXIT1 WAIT B.E. INTERRUPT LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA,RSS JMP ITW30 NOT BUFFER EMPTY - WAIT ITW31 LDA HONST IS THIS HONEST MODE? SZA,RSS NO - SKIP CRLF 1909 JSB EORP THIS IS ASCII JMP EOOP2 DONE WITH OUTPUT. HED *************************************************** * DOES KEYBOARD READ. * * THE DRIVER ASSUMES A CHARACTER TRANSFER IF * * HONEST MODE IS SET. 5 * *************************************************** IT05R CLB,INB JSB I05W1 GO SETUP EQT9 AND EQT10 LDA FUNCT CHECK IF ECHO SET JSB ECHO SET/CLR = 20/0 ECHO LDB HONST SEE IF HONEST MODE SZB JMP IT05H SET UP FOR HONEST MODE LDB BN1 SET RUBOUT INTERRUPT & XMIT JSB CDSET SETS UP BOARD TO ACCEPT SPEC. CHAR. LDA C6404 60404 CNTL-D INTERRUPT JSB OUT2 LDA C6410 60410 BACKSPACE INTERRUPT JSB OUT2 LDA C6415 60415 CR INTERRUPT JSB OUT2 IT05H LDA EQT18,I CHECK EQT18 RAL FOR BIT 14 SET SSA,RSS IF SO, SEND JMP IT05I NOT NEEDED LDA B21 JSB OUT2 SEND IT LDA N64 JSB TIMER WAIT AT LEAST 150 USEC. LDB B4 FOR CHAR. TO CLEAR UART ADB HONST RSS RSS IT05I LDB HONST GET HONEST FLAG JSB CDSET SET CARD FOR RECEIVE (BIT 0=1 FOR HONEST) JMP C05R8 * P.ERR NOP PROCESS PARITY ERRORS LDA EQT5,I IOR B10 SET PARITY ERROR BIT 3 STA EQT5,I JMP P.ERR,I RETURN * * TIMER NOP 2.5 USEC TIMER (XE) PER LOOP SSA,INA,RSS JMP TIMER,I JMP *-2 * HED ****************************************************************** * SUBROUTINE INITIALIZES THE COMPLETION SECTION * * FOR ALL COMPLETION INTERRUPTS. * ****************************************************************** CT05 NOP STA SCH SAVE SC LDB RSS SET CONT. FLAG STB INITF TO RSS JSB SETIO CONFIGURE IO IFZ ## LDA EQT19,I ## CHECK FOR $UPIO ENTRY SSA ## SET NEGATIVE BY LINCK - TRY AGAIN JMP $UPIO ## XIF ## JSB CDSTT GET CARD STATUS AND B40 CHECK FOR BUFFER OVERFLOW SZA,RSS % HAS IT OVER FLOWED? JMP CT5A2 NO IFZ ## SWH01 NOP ## NOP/RSS HARD/MODEM XIF ## JMP EOOP9 YES,ERROR EXIT (B=3,XMISSON ERROR) CT5A2 LDA BSTAT GET BOARD STATUS BACK AND B100 MASK FOR BREAK SZA,RSS JMP CT5A0 IOR EQT5,I PUT IT INTO EQT5 STA EQT5,I CT5A0 LDA CW577 CLEAR ALL INTERRUPTS JSB OUT2 LDB EQT1,I GET QUE WORD SZB IS A REQUEST IN PROCESS? JMP CT5A1 YES! JSB SCHED NO REQUEST IN PROCESS.FIND OUT JMP EXIT5 WHAT HAPPENED AND EXIT CT5A1 EQU * LDA EQT4,I AND B4000 CHECK FOR TIME OUT ENTRY SZA IS THIS TIME OUT (BIT 11)? JMP TIMOT YES! LDB EQT11,I GET INTERRUPT ADDRESS JMP B,I GOTO IT HED CONSTANTS AND VARIABLES ***************************************************** * "B.X" IS NEG. BINARY NO., "D.X" IS NEG. DECIMAL NO* * "BN" IS SOME BINARY NO. * * SEE BELOW. * ***************************************************** * NB620 OCT 177602 LWRD6 OCT 60377 LAST SPECIAL CHARACTER CODE B11 OCT 11 CW6 OCT 60000 B20 OCT 20 B21 OCT 21 B22 OCT 22 B23 OCT 23 B24 OCT 24 B30 OCT 30 IFZ ## B31 OCT 31 ## B32 OCT 32 ## DM200 DEC -200 ## ENCE OCT 10004 ## B114K OCT 114000 ## BN14K OCT 63777 ## NBIT3 OCT 177767 ## CW2 OCT 20000 ## XIF ## BN67 OCT 54037 RETAIN BITS 14,12,11,4-0 B1 OCT 1 B2 OCT 2 B.3 OCT 177775 B100 OCT 100 B200 OCT 200 NBIT7 OCT 177577 C6404 OCT 60404 CONTROL-D INTERRUPT SET C6410 OCT 60410 BACKSPACE INTERRUPT SET C6415 OCT 60415 CR INTERRUPT SET B377 OCT 377 BN1 OCT 57712 B40 OCT 40 B10 OCT 10 BN6 OCT 120004 CW604 OCT 60004 CW610 OCT 60010 CW615 OCT 60015 CW677 OCT 60177 N64 DEC -64 B3 + OCT 3 B4000 OCT 4000 FUNCT NOP CONTROL FUNCTION (EQT6 BITS 6-10) HONST NOP HONEST\ASCII (1\0) REQTP NOP REQUEST TYPE (1-3) BSTAT NOP CARD STATUS CDATA NOP COMPLETE DATA WORD ON CARD HED *************************************************** * SUBROUTINE INITIALIZES 12966 * * IO CARD. * * BELOW ARE THE INITIAL CONDITIONS FOR CONTROL: * * WORD 0 DO NOT SEND * * WORD 1 DO NOT SEND * * WORD 2 CE=1 STATUS REF. AND MASTER RESET * * WORD 3 CHARACTER FRAME CONTROL * * CHAR. SIZE=8 BITS * * NO PARITY * * ECHO PER EQT6 BIT 8 * * STOP BIT PER BAUD RATE * * * * WORD 4 INTERFACE CONTROL * * BAUD RATE PER SETUP CALL * * DMA CONTROL OFF * * SBA/SCA ON * * CD (DATA TERM. READY) OFF * * CA (REQUEST TO SEND) OFF * * TRANSMIT MODE ON * * * * WORD 5 CLEAR CARD INTERRUPTS * * * * WORD 6 SPECIAL CHARACTER * * ALL USED SPECIAL CHARACTERS * * ARE CLEARED. * *************************************************** CDINT NOP LDA BN6 JSB OUT2 SEND WORD 120004 LDA FUNCT GET ECHO BIT JSB ECHO (BIT 4) JSB XMIT4 PUT INTO XMIT LDA CW577 SEND WORD 50077 JSB OUT2 LDA CW604 SET A REG. = 60004 JSB OUT2 CLEAR CNTL-D INTERRUPT LDA CW610  CLEAR BACKSPACE INTERRUPT JSB OUT2 LDA CW615 CLEAR CR INTERRUPT 1909 JSB OUT2 1909 LDA CW677 CLEAR RUBOUT INTERRUPT JSB OUT2 JMP CDINT,I RETURN HED ****************************************************** * SUBROUTINE SETS UP THE IO CARD PER B REG. * * 1/0 IS CHARACTER/BLOCK * * 1/0 IS TRANSMIT/RECEIVE * * 1/0 IS CLEAR/NOT CLEAR INTERUPT FLAGS * * 1/0 SPECIAL CHARACTER IS/IS NOT TO BE * * ADDED OR DELETED.SPECIAL CHARACTER IS IN POSITION * * . 1/0 IS ADD/DELETE * * SPECIAL CHARACTER. * ****************************************************** CDSET NOP LDA BIT12 SET WORD1 IN A REG. SLB,BRS IOR B40 "OR" CHARACTER MODE BIT JSB OUT2 LDA CW4 SET WORD 4 IN A SLB,BRS IOR B400 SET XMIT JSB OUT2 LDA CW577 SET WORD 5 IN A REG. SLB,BRS JSB OUT2 MAY NOT GET SENT LDA CW6 SET WORD 6 IN A REG. SLB,RSS JMP CDSET,I RETURN BRS,BRS BRS IOR B "OR" SPECIAL CHARACTER JSB OUT2 JMP CDSET,I * CDSTT EQU * GET CARD STATUS AND PUT IT IN BSTAT NOP ENTRY POINT CLC01 CLC CARD LIA01 LIA CARD STA BSTAT JMP CDSTT,I RETURN WITH STATUS IN A REG. HED ********************************************** * PROCESSES DATA ON KEYBOARD * * READ REQUESTS. "CCNT" COUNTS THE NUMBER * * OF CHARACTERS WE HAVE PROCESSED AND IS USED* * TO LIMIT THE TIME WE ARE IN THE DRIVER. * * FOR ASCII READS THE EOR IS DETECTED BY * * LOOKING FOR THE SPECIAL CHAR. BIT SET ON * * THE 12966 CARD. * ********************************************** C05R8 JSB EXIT1 WAIT FOR INTERRUPT LDA BSTAT CHECK FOR PARITY E7fRROR AND B40 BIT 5 STA B SAVE IT SZA JSB P.ERR SET UP EQT5 TO INDICATE P.E. * * NOTES ON PARITY ERROR HANDLING: * CURRENTLY THE FACT THAT A PARITY ERROR OCCURRED IS NOTED * IN EQT5, AND THE OPERATION IS RESTARTED. IT IS POSSIBLE * THAT SOME USERS MAY PREFER THAT THE OPERATION COMPLETE * OR DOWN THE DEVICE. THESE ARE A MATTER OF PERSONAL PREFERENCE. * LDA BSTAT CHECK FOR BREAK AND B100 IOR B OR PARITY ERROR SZA JMP RUBOT TREAT IT LIKE A RUBOUT CHPRC LDA N64 SET CHARACTER PROCESS. COUNT TO -64 STA CCNT CHPCC JSB CHRIN GET CHARACTER LDA CDATA CONTROL IF VALID DATA SSA,RSS SKIP IF GOOD JMP C05R8 EXIT AND WAIT NEXT INTERRUPT LDB HONST SZB IS THIS HONEST? JMP CHPR9 YES,THIS IS HONEST LDA DATA THIS IS ASCII LDB CDATA GET DATA WORD RBL ISOLATE SPEC. CHAR. BIT SSB IS IT SPECIAL? JMP SPCHK YES - SEE WHAT IT IS CPA LF IS IT A LINE FEED? JMP CHPCC YES - IGNORE IT JMP CHPR9 PROCESS A NORMAL CHARACTER * SPCHK EQU * PROCESS SPECIAL CHARS. CPA B177 IS IT A RUBOUT? JMP RUBOT YES! GO PROCESS RUBOUT CPA B4 IS IT A CONTROL "D" (SET EOT) JMP CNTLD YES! GO SET EOT CPA B10 CHECK FOR BACKSPACE JMP BS1 IF IT FALLS THROUGH, IT WAS A LDB EQT9,I PROCESS ASCII END OF RECORD CHPR5 LDA FUNCT SEE IF ASCII OR NOT SLA BIT 0 = 0 =>ASCII CLA,RSS BIT 0 = 1 =>BINARY LDA B40 ASCII FILL CHARACTER (SPACE) SLB IF NEXT BYTE ODD, JSB .SBT THEN STUFF IT JSB CLRCD GET EXCESS CHARS. OFF THE BOARD LDA HONST IF HONEST, NO ECHO SZA,RSS LDA FUNCT GET FUNCTION BITS IF NOT HONEST RAR,RAR C PUT ECHO OR 0 IN BIT 0 SLA CHECK FOR ECHO JSB EORP SEND IF ECHO IS ENABLED. JMP EOOP2 THEN EXIT. SKP CHPR9 LDB EQT9,I GET CURRENT CHAR. ADD. CPB EQT10,I IS BUFFER FULL? JMP CHPR5 YES BUFFER FULL LDA DATA GET CHARACTER JSB .SBT STORE IT 1909 STB EQT9,I STORE INCREMENTED ADDRESS CPB EQT10,I IS BUFFER FULL? JMP CHPR5 YES IT IS CHPR6 EQU * LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA IS BUFFER EMPTY? JMP C05R8 ISZ CCNT INCREMENT BUFFER COUNT JMP CHPCC IF NOT ZERO GET ANOTHER CHAR. LDB CHPC2 SETUP INTERRUPT RETURN STB EQT11,I STF01 STF CARD SET FLAG FOR IMMEDIATE INTERRUPT JMP EXIT4 THIS IS ALL WE CAN PROCESS,EXIT * CHPC2 DEF CHPRC RETURN POINTER * BS1 LDA EQT7,I GET STARTING ADDRESS OF BUFFER RAL MULTIPLY BY 2 CPA EQT9,I ARE WE AT STARTING ADDRESS? JMP RUBOT YES! PROCESS AS RUBOUT CCB ADB EQT9,I DECREMENT CURRENT ADDRESS STB EQT9,I JMP CHPR6 GO GET NEXT CHARACTER HED **************************************************** * SUBROUTINE READS 1 CHARACTER FROM IO CARD* * AND PLACES IT IN A REG. * * BOARD STATUS IS ALSO READ * * DATA = ASCII INPUT CHARACTER * * BSTAT=BOARD STATUS * **************************************************** CHRIN NOP STC02 STC CARD,C PUT CARD IN DATA MODE LIA02 LIA CARD GET DATA WORD STA CDATA STORE COMPLETE DATA WORD AT CDATA JSB CDSTT GET CARD STATUS LDA CDATA GET BACK COMPLETE DATA WORD AND B377 ISOLATE DATA CHAR.(0-7) STA DATA STORE IT STC03 STC CARD,C THIS IS NECESSARY JMP CHRIN,I INTERRUPT * *********************************************** * SUBROUTINE GETS DATA OFF CARD UNTIL * * BUFFER EMPTY. * *********************************************** CLRCD NOP LDB B4 SET CARD TO RECEIVE AND CLR. INT. JSB CDSET CLRC1 JSB CHRIN GET CHARACTER LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF CMA,SSA MAKE SIGN 0 IF EMPTY LDA CDATA COMES HERE IF NOT EMPTY SSA A POSITIVE IF BUFFER EMPTY JMP CLRC1 NEG. FOR VALID CHAR. - YES IT IS JMP CLRCD,I RETURN - BUFFER EMPTY OR INVAL.CHAR. * CNTLD LDA B40 SET BIT 5 (EOT) IOR EQT5,I IN TERMINAL STATUS STA EQT5,I CLA STA EQT19,I SET AREG. EXIT JMP EOOP4 GO SET B REG. TO 0 AND EXIT * ECHO NOP SET ECHO ON CARD PER A REG. RAL,RAL MOVE BIT 2 TO BIT 4 AND B20 MASK FOR ECHO BIT IOR CW3 A =20/0 IS ECHO ON\OFF JSB OUT2 JMP ECHO,I HED ********************************************************* * AND ARE ENTRIES FOR COMPLETION (P+1) * * EXITS. * ********************************************************* EOOP8 LDB CCNT THIS EXIT IS USED IF UNDERSCORE CPB N128 IS ONLY CHAR. 1909 RSS EOOP1 JSB EXIT1 EOOP2 CLA STA EQT19,I SET A REG. EXIT JMP EOOP3 * EOOP9 LDB B3 SET B=3 FOR XMISSION ERROR STB EQT19,I A REG. EXIT *********************************************************** * IS ENTRY FOR B=0 (TRANS. LOG =0) EXIT. * *********************************************************** EOOP4 CLA STA EQT8,I SET UP FOR B REG. =0 EXIT ********************************************************** * SETS IO CARD FOR NEXT INTERRUPT * * OR REQUEST. * * IT ALSO SETS THE TRANSMISSION LOG INݷ B REG. (+CHAR. OR * * + WORDS). IF EQT8 =0 (VIA EOOP4) THEN B=0. * ********************************************************** EOOP3 EQU * CLA,INA 1 CPA REQTP IF READ, DON'T BOTHER CHECKING JMP EOP3B LDA EQT5,I CHECK FOR BREAK AND B100 IS IT SET? SZA JSB SCHED IF SO, SCHEDULE A PROGRAM EOP3B JSB CDINT CLR SPECIAL INTERRUPTS IFZ ## JSB LINCK ## SEE IF OPERATION COMPLETED XIF ## JSB CLRCD GET ALL DATA OFF CARD JSB SETEM LDB EQT9,I GET 2X LAST CHAR. ADDRESS CMB,INB MAKE NEG. ADB EQT7,I SUBTRACT TWO TIMES STARTING ADD. ADB EQT7,I CMB,INB LDA EQT8,I IF WORDS THEN DIV. BY 2 SSA JMP EOP3A THESE ARE CHARACTERS INB INCREMENT SO EVEN FOR DIVIDE BRS DIVIDE TO CONVERT TO WORDS EOP3A SZA,RSS IF EQT8 IS 0 THEN CLEAR B REG. CLB LDA INITF SEE IF WE EVER LEFT SZA,RSS IF A NOT=0, WE'RE OK JMP IMCOM IMMED. COMPLETION LDA EQT19,I SET A REG. EXIT JMP CT05,I HED ********************************************************* * DOES ASCII WRITE EOR PROCESSING * ********************************************************* EORP NOP LDA EORP SAVE RETURN ADDRESS STA EQT16,I LDB CR OUTPUT A JSB OUT1 LDA EQT18,I GET STALL COUNT RRR 9 MOVE BITS 13-9 TO LOW BITS AND B37 MASK IT CMA,INA,SZA,RSS CHECK FOR ZERO JMP EORP2 NO STALLS REQUIRED STA EORP STORE COUNTER CLA GENERATE THE NULL EORP1 JSB OUT2 SEND IT ISZ EORP COUNT IT JMP EORP1 GO DO IT AGAIN EORP2 LDA LF OUTPUT A JSB OUT2 LSR 11 MOVE LF COUNT TO BITS 0-4 IN B CMB,INB,SZB,RSS CHECK FOR ZERO JMP EORP4 WE ARE DONE CLA MAKE A NULL EORP3 JSB OUT2 SEND IT INB,SZB LOOP UNTIL DONE JMP EORP3 EORP4 JSB EXIT1 WAIT B.E. INTERRUPT LDA BSTAT SEE IF BUFFER EMPTY ALF,ALF SSA,RSS JMP EORP4 NO - TRY AGAIN LDA EQT16,I JMP A,I HED **************************************************** * IS USED FOR CONTINUATION EXITS WITH THE * * TIMEOUT VALUE SET IN THE B REGISTER. ## * * IS USED FOR INITIATOR OPERATION WITH * * INITIATED EXITS (A=0), AND COMPLETION * * CONTINUATION EXITS (P+2). "INITF" INDICATES * * WHICH EXIT TO TAKE. * **************************************************** IFZ ## EXIT0 NOP ## LDA EXIT0 SAVE RETURN ADDRESS ## STA EQT11,I FOR INTERRUPT ## CLA ## 800227 JMP EXIT3 ## XIF ## * EXIT1 NOP LDB EXIT1 GET CALLING PROGRAMS ADDRESS+1 STB EQT11,I STORE AT EQT11,I FOR INTERRUPT LDA REQTP GET REQUEST TYPE LDB EQT14,I GET NORMAL TIMEOUT ARS,SLA,RAL CHECK FOR WRITE OR CONTROL LDB TO30 APPROX. > 30 SECONDS EXIT3 STB EQT15,I NORMAL OR DEFAULT TIMEOUT XOR CW577 IF WRITE, WILL BE 50075 JSB OUT2 CLEAR ALL BUT BREAK INTERRUPTS EXIT5 EQU * STC04 STC CARD,C RE-INITIALIZE CARD FOR INTERRUPT EXIT4 CLA INITF NOP INITIATION\COMPL. FLAG NOP\RSS JMP IT05,I INITIATION RETURN ISZ CT05 RETURN JMP CT05,I COMPLETION RETURN HED ***************************************************** * "B.X" IS NEG. BINARY NO., "D.X" IS NEG. DECIMAL NO* * "BN" IS SOME BINARY NO. * * SEE BELOW. * ***************************************************** * B.6 OCT 177772 BIT12 OCT 10000 LF OCT 12 B37 OCT 37 B17  OCT 17 B137 OCT 137 B317 OCT 317 CR OCT 15 B177 OCT 177 B4 OCT 4 B134 OCT 134 B5 OCT 5 CW577 OCT 50077 B400 OCT 400 CW3A OCT 30002 CW3 OCT 30003 THIS ONE GETS CHANGED FOR PARITY CW4 OCT 40440 CONTROL WORD 4 (DYNAMICALLY ALTERED) CW440 OCT 40040 CONTROL WORD 4 (BASE SITUATION) STF0 STF 0 N128 DEC -128 B1100 OCT 1100 B14 OCT 14 TO30 DEC -3000 B600 OCT 600 B500 OCT 500 EQT16 NOP EQT17 NOP EQT18 NOP EQT19 NOP EQT20 NOP EQT21 NOP DATA NOP ASCII DATA WORD IFZ ## CW132 OCT 10032 ## BIT15 OCT 100000 ## HED * LINCK NOP ## CHECK MODEM STATUS LINES SWH02 NOP ## HARD/MODEM NOP/RSS JMP LINCK,I ## HARD WIRED - DON'T BOTHER * LDB EQT1 ## CHECK FOR SYSTEM CONSOLE CPB SYSTY ## IF SO, DON'T DOWN IT JMP LINCK,I ## JSB CHRIN ## GET LINE STATUS LDA BSTAT ## AND B32 ## CHECK FOR CLR TO SEND (CB), CARRIER (CF), CPA B32 ## AND DATA SET READY (CC) JMP LINCK,I ## GO DO IT * IOR CW2 ## STUFF STATUS INTO CONWD 2 JSB OUT2 ## SET STATUS REFERENCE LDA CW132 ## ENABLE LINE CHANGE INTERRUPT JSB OUT2 ## LDA EQT19,I ## SET $UPIO FLAG IOR BIT15 ## INTO THE SIGN BIT STA EQT19,I ## LDA B20 ## SET "BAD LINE# STATUS IOR EQT5,I ## STA EQT5,I ## INTO EQT5. LDA B3 ## TRANSMISSION ERROR LDB INITF ## SEE IF WE EVER LEFT SZB ## CLA,INA,RSS ## CONTINUATOR EXIT JMP IT05,I ## RETURN JMP CT05,I ## NOT READY RETURN XIF ## HED *************************************************** * FOR ALL WRITE AND CONTROL REQUESTS * * THE BUFFER FLUSH BIT IS EXAMINED. * * IS CALLED BY ALL WRITE AND CONTROL * * REQUESTS IF THoE BUFFER FLUSH BIT IS SET. * ************************************************** NXQU NOP IF LAST REQUEST IN QUE THEN STOP FLUSH LDA $OPSY GET SYSTEM TYPE RAR,SLA CHECK FOR DMS SYSTEM JMP GTDMS THIS IS A DMS SYSTEM OLDSY LDA EQT1,I CLEAR THE BUFFER FLUSH BIT7 SO LDA A,I THAT NEXT REQUEST WILL BE DONE. CHECK SZA IF NOT LAST REQUEST DO NOT CLR BIT7. JMP NXQU,I THIS IS NOT THE LAST REQUEST. LDA EQT5,I LAST REQUEST AND NBIT7 REMOVE BIT7 STA EQT5,I RESTORE EQT5 JMP NXQU,I AND RETURN * GTDMS RSA CHECK MAP. IF SYSTEM, NO CROSS LOAD ALF,SLA BIT12 = 0/1 FOR SYSTEM/USER RSS JMP OLDSY SYSTEM MAP XLA EQT1,I USER MAP CROSS LOAD XLA A,I JMP CHECK ************************************************* * SUBROUTINE IS GENERAL OUTPUT ROUTINE * * TO TERMINAL. CHAR. IS IN B REG. * ************************************************* OUT1 NOP GENERAL PURPOSE CHARACTER OUTPUT ROUTINE JSB XMIT4 SET CARD TO TRANSMIT LDA B GET DATA JSB OUT2 SEND TO TERMINAL JMP OUT1,I RETURN * OUT2 NOP GENERAL PURPOSE OUTPUT ROUTINE OTA10 OTA CARD FOR CARD COMMUNICATION JMP OUT2,I * RECIV NOP LDB B5 SET CARD UP FOR RECEIVE,CHAR. JSB CDSET CLA JSB ECHO TURN OFF ECHO STC05 STC CARD,C ENABLE INTERRUPT JMP RECIV,I HED ********************************************** * * * EXIT IS A=2 (ILLEGAL CONTROL REQUEST). * * (ALSO IMMEDIATE COMPLETION WITH B=0). * * * * * * EXIT CAUSES AN IO07 PROGRAM ABORT. * ********************************************** REJ2A EQU * IFZ ## JSB NXQU ##_H JSB LINCK ## SEE IF THE MODEM STAYED UP RSS ## DON'T DO NXQU AGAIN XIF ## REJ2 JSB NXQU CHECK QUE JSB SETEM SETUP CARD FOR EXIT IMCOM LDA B2 RSS REJ1 CLA,INA JMP IT05,I ******************************************** * IS CALLED IF RUBOUT INTERRUPT IS * * DETECTED. IT DELETES THE CURRENT RECORD * * AND OUTPUTS (/,CR,LF). * ******************************************** RUBOT JSB CLRCD GET RID OF GARBAGE ON THE BOARD LDA FUNCT RAR,RAR SLA,RSS CHECK FOR ECHO JMP IT05R NOT SET - DON'T SEND / LDB B134 OUTPUT A SLASH JSB OUT1 JSB EORP GO OUTPUT JMP IT05R RE START INPUT HED ***************************************************** * IS CALLED WHENEVER AN INTERRUPT OCCURS AND* * NO PROGRAM IS SCHEDULED (I.E. USER HITS A KEY TO * * GET THE SYSTEM'S ATTENTION. * ***************************************************** SCHED NOP JSB RECIV PUT INTO RECEIVE JSB CHRIN GET THE INPUT CHARACTER STA EQT6,I SAVE CHAR. FOR PROGRAM JSB CLRCD GET CHAR. OFF CARD CLA STA EQT15,I SET T.O. TO 0 LDB EQT1 IS THIS THE SYSTEM CONSOLE? CPB SYSTY JMP OPFLG YES! GO SET OPERATOR FLAG LDB EQT17,I GET TERMINAL ID ADD. LDA EQT5,I IS TERMINAL ENABLED? RAR,SLA SSB YES! IT IS ENABLED JMP SCHED,I IT IS NOT STB SCH1 1740 RTE LDB EQT4 1740 RTE STB SCH 1740 RTE JSB $LIST GO SCHEDULE TERM. PROG OCT 601 THIS IS CONTROL FOR $LIST SCH1 NOP ID SEGMENT ADDRESS SCH NOP EQT4 ADDRESS OR SELECT CODE JMP SCHED,I RETURN OPFLG ISZ OPATN SET OPER. ATTN. FLAG JMP SCHED,I EXIT HED ******************************************AW***** * ENABLES IO CARD INTERRUPT IF TERM. * * HAS BEEN ENABLED OR IF TERMINAL IS A * * SYSTEM CONSOLE. * *********************************************** SETEM NOP SUBROUTINE TO SETUP IO CARD FOR RECEIVE JSB RECIV SET CARD TO RECEIVE LDA EQT5,I MODE PRIOR TO EXIT. GET TERM.STATUS RAR,SLA IS TERMINAL ENABLED? (BIT 1=1) JMP SETEM,I YES, IT IS - RETURN LDA SYSTY GET CONSOLE EQT CPA EQT1 IS THIS THE SYSTEM CONSOLE ? JMP SETEM,I YES, IT IS CLC02 CLC CARD NONE OF THE ABOVE - INHIBIT INTERRUPTS JMP SETEM,I RETURN * TIMOT EQU * TIME OUT PROCESSING XOR EQT4,I CLEAR T.O. BIT STA EQT4,I IFZ ## LDA EQT21,I CHECK CN32 FLAG ## SSA ## JMP CN31B ## XIF ## LDA EQT5,I IOR B4 SET TIME OUT STATUS STA EQT5,I LDA EQT18,I GET DEVICE PARAMETER LDB B4 SET FOR T.O. ERROR SSA IF SIGN SET DO NOT DOWN ON TIMEOUT CLB NO ERROR STB EQT19,I SET A REG. FOR EXIT JMP EOOP4 B REG. 0 EXIT HED ************************************************** * WRITES TO THE DEVICE. * * STARTING ADDRESS OF DATA IS EQT9,I * * "TRAN1" COUNTS THE NUMBER OF CHAR. IN ONE * * TRANSMISSION AND IS USED TO LIMIT THE TIME * * IN THE DRIVER FOR A SINGLE INTERRUPT. * * IF BUFFER IS NOT EMPTIED IN 1 CALL TO WE* * WILL WAIT FOR A BUFFER EMPTY INTERRUPT AND * * COMPLETE THE TRANSMISSION. * ************************************************** CCNT EQU * CHARACTER COUNT TRAN1 NOP LDA TRAN1 SAVE RETURN ADDRESS STA EQT16,I JSB XMIT4 SET CARD FOR XMIT TRAN4 LDB N128 GET READY TO SEND A FULL BUFFER STB CCNT IN ONE TRANSMISSION LDB EQT9,I GET BUFFER ADDRECSS X 2 TRAN2 JSB .LBT GET BYTE (ADDR. IN B) 1909 CPB EQT10,I IS THIS THE LAST WORD? RSS PROCESS END OF RECORD JMP OUT6 NO - IGNORE CHECKS 1909 STB EQT9,I YES - RESTORE INCREMENTED EQT9 1909 LDB HONST IS IT HONEST? SZB 1909 JMP OUT5 YES - IGNORE CHECKS CPA B137 IS THIS A "_" UNDERSCORE? JMP EOOP8 YES! GO TO END OF OUTPUT PROCESSING OUT5 LDB EQT9,I RESTORE B REGISTER OUT6 OTA CARD OUTPUT CHAR. TO CARD CPB EQT10,I HAVE WE SENT LAST WORD? JMP TRAN5 THIS IS THE LAST CHARACTER ISZ CCNT INCREMENT CHAR. COUNT. JMP TRAN2 WE HAVE NOT SENT ALL THE CHARS. STB EQT9,I PUT BACK THE B REGISTER TRAN6 JSB EXIT1 WE HAVE SENT 128 CHAR. LDA BSTAT CHECK FOR BUFFER EMPTY ALF,ALF SSA JMP TRAN4 BUFFER IS EMPTY - CONTINUE JMP TRAN6 NO - GO WAIT FOR IT TRAN5 STB EQT9,I SAVE B REGISTER FOR TRANS. LOG LDA EQT16,I GET RETURN ADDRESS JMP A,I RETURN * XMIT4 NOP SET BOARD TO XMIT LDA CW4 GET CONTROL WORD IOR B400 PUT IN XMIT JSB OUT2 SEND IT JMP XMIT4,I RETURN HED ********************************************************** * CONFIGURES IO INSTRUCTIONS TO SELECT CODE SET * * IN A REG. * ********************************************************** * **************************************************** * SETUP EXTENSIONS ON EQT * * * * EQT NO. USE * * 1-8 STANDARD * * 9 RUNNING CHAR. ADDRESS * * 10 LAST CHAR. ADDRESS OR * * LINE CONTROL REFERENCE FOR * * LINE OPEN/CLOSE ## * * 11 q ADDRESS TO GO ON INTERRUPT * * 12 NO. OF EQT EXTENSIONS * * 13 EQT EXTENSION STARTING ADD. * * 14-15 STD * * 16 RETURN ADDRESS * * 17 ID ADDRESS OF TERM. PROG. * * 18 MODE CONTROL PARAMETERS * * BIT(S) * * 15 1= DO NOT DOWN THE DEVICE ON * * TIME OUT. * * 0= LET THE SYSTEM HANDLE T.O. * * 14 1= SEND CHARACTER AT THE * * BEGINNING OF EACH READ. * * 0= NORMAL OPERATION. * * 13-9 DELAY IN STALL CHARACTERS * * (0 TO 31). * * 8-4 DELAY IN STALL CHARACTERS * * (0 TO 31). * * 3-0 NOT USED. * * 19 A-REG EXIT VALUE OR * * <$UPIO> FLAG (SIGN BIT) * * 20 LAST REQUEST CODE * * 21 LINE CONTROL PARAMETERS * * BIT(S) FUNCTION * * 15 CN32 FLAG ## * * 14 RESERVED * * 13 0= HARDWIRED * * 1= MODEM ## * * 12 "CA" (RTS) SET ## * * 11 "CD" (DTR) SET ## * * 10 1= PARITY ON * * 0= PARITY OFF * * 9 1= PARITY EVEN * * 0= PARITY ODD * * 8-5 BAUD RATE * * 4-0 RESERVED * **************************************************** SETIO NOP LDA SCH GET SELECT CODE IOR STF0 CONSTRUCT STF CPA STF01 ALREADY CONFIGURED? JMP SETI1 YES - SKIP SOME CODE. STA STF01 STF IS 1021XX IOR B400 CONSTRUCT LIA AND SAVE STA LIA01 LIA IS 1025XX STA LIA02 XOR B600 CONSTRUCT SFS STA SFS01 SFS IS 1023XX XOR B500 CONSTRUCT OTA AND SAVE STA OTA10 OTA IS 1026XX STA OUT6 IOR B1100 STC,C IS 1037XX STA STC02 STA STC03 STA STC04 STA STC05 IOR B4000 CONSTRUCT CLC,C AND SAVE STA CLC01 CLC,C IS 1077XX STA CLC02 SETI1 EQU * LDA EQT4,I CHECK FOR FIRST TIME THROUGH ALF,SLA "I WILL HANDLE TIME OUT" BIT JMP SETIA IF NOT FIRST TIME, SKIP CHECKS LDA EQT6,I CHECK FOR SYSTEM REQUEST SSA JMP SETIA IF SYSTEM REQUEST, SKIP CHECKS LDA EQT13,I CHECK FOR EXTENTS SET UP SZA ZERO + (-6) IS ERROR LDA EQT12,I CHECK FOR ENOUGH EXTENTS ADA B.6 IS IT =>6? SSA OK IF POSITIVE JMP REJ1 GO OUT WITH IO07 SETIA EQU * LDA EQT6,I GET CONTROL WORD LSR 6 SHIFT IT AND B37 MASK IT STA FUNCT SAVE IT AND B21 BIT6 OR 10 INDICATES HONEST MODE SZA MAKE IT A 1 OR ZERO FOR HONEST/ASCII CLA,INA GENERATE A 1 STA HONST LDA EQT6,I GET REQUEST TYPE AND B3 STA REQTP LDA EQT13,I GET STARTING ADDRESS OF EXT. CPA EQT16 SEE IF SET UP JMP SETI2 YES - SKIP SOME STUFF STA EQT16 SET ADD. OF EQT16 INA STA EQT17 INA STA EQT18 INA STA EQT19 INA STA EQT20 INA STA EQT21 LDA EQT4,I CHECK FOR FIRST TIME THROUGH ALF,SLA WITH BIT 12 JMP SETI2 NOT FIRST TIME CLA SET UP DEFAULT BAUD RATE STA EQT21,I LDA SCH ] SET UP SCHEDULE FLAG ADA B.6 ADA INTBA GET SCHEDULE WORD IF NEG. LDB A,I CMB,SSB,INB CHANGE SIGN OF WORD CCB NO PROG. TO SCHED. (INT. POINTS TO EQT) STB EQT17,I SAVE FOR FUTURE REF. LDB EQT1 PUT EQT ADDRESS INTO INT. TABLE STB A,I LDA EQT4,I DONE WITH INITIAL SETUP IOR BIT12 SET "I WILL HANDLE T.O." BIT STA EQT4,I PUT IT BACK SETI2 LDA EQT21,I GET ALL LINE PARAMETERS IFZ ## RAL,RAL ## CHECK BIT 13 SSA,RSS ## FOR HARDWIRED CLB,RSS ## HARDWIRED LDB RSS ## MODEM STB SWH01 ## STB SWH02 ## LSR 7 ## ADJUST A REG. XIF ## IFN LSR 5 SHIFT BITS TO RIGHT XIF AND B317 ISOLATE BAUD RATE & CONTROL BITS IOR CW440 STA CW4 SET UP CONTROL WORD 4 AND B17 ISOLATE BAUD RATE STA EXIT1 SAVE BAUD RATE LDA EQT21,I GET PARITY INFO. LSR 7 SHIFT INTO PLACE AND B14 MASK IT IOR CW3A PUT IN BASIC CW3 INFO. LDB EXIT1 CHECK FOR 110 BAUD CPB B3 IOR B40 IF SO,THEN 2 STOP BITS STA CW3 SAVE IT AND B10 CHECK FOR PARITY ON SZA,RSS IF NO PARITY CHAR. SIZE IS 8 ISZ CW3 LDA REQTP GET REQUEST TYPE CPA B1 IS IT READ? JMP OVER2 YES - SKIP THE CHECKS SLA WRITE? JMP CN024 CONTROL - CHECK IT OUT OVER1 LDB EQT5,I IF BUFFER FLUSH SET BLF,BLF THEN EXIT VIA REJ2 SSB SEE IF FLUSH JMP OVER8 YES - COMPLETE THE FLUSH OVER2 LDA EQT6,I NORMAL NON CNTL-0 REQUEST STA EQT20,I SAVE THE COMMAND JMP SETIO,I RETURN * CN024 EQU * CHECK FOR BUFFER UNFLUSH & SYST. CNTL 0 LDA FUNCT CHECK FUNCTION CODE CPA B24 IS IT UNFLUSH? JMP CN24 ) YES - UNFLUSH THE BUFFER SZA,RSS IS IT CNTROL 0? LDA EQT6,I YES - CHECK FOR SYSTEM REQUEST SSA JMP SETIO,I IS SYSTEM REQUEST - GO DO IT JMP OVER1 CHECK FOR FLUSH * * BUFFER FLUSH EXITS * OVER8 LDA INITF GET IT05/CT05 FLAG SZA JMP OVER2 CT05 EXIT JMP REJ2 * HED * EQU'S FOR VARIOUS ENTRIES A EQU 0 DEFINE A REG. B EQU 1 DEFINE B REG. CARD EQU 67B DEFINE CARD FOR IO INSTRUCTIONS * * SYSTEM BASE PAGE COMMUNICATION AREA * . EQU 1650B ESTABLISH ORIGIN OF * BASE PAGE EQT1 EQU .+8 EQT2 EQU .+9 ADDRESSES EQT3 EQU .+10 EQT4 EQU .+11 OF CURRENT EQT5 EQU .+12 EQT6 EQU .+13 EQT ENTRY EQT7 EQU .+14 EQT8 EQU .+15 EQT9 EQU .+16 EQT10 EQU .+17 EQT11 EQU .+18 EQT12 EQU .+81 EQT13 EQU .+82 EQT14 EQU .+83 EQT15 EQU .+84 * INTBA EQU .+4 SYSTY EQU .+21 EQT ENTRY ADDRESS OF SYSTEM CONSOLE * OPATN EQU .+52 OPERATOR KEYBOARD ATTN. FLAG * * * ORG * DRIVER LENGTH END t ! 12967-18001 1438 S 0122 SYNC COMMUN INTF DIAGN SOURCE             H0101 DASMB,A,B,L,C HED 12967 SYNC COMM INTFC DIAG - GENERAL OPERATING PROCEDURE ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIZATION CHARTх * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 CZ A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC OCT 0 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN )  LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 L LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO A2LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE COбNTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP m%<:6* ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 <  12967-18002 1438 S 0122 SYNC COMMUN INTF DIAGN SOURCE             H0101 E JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL ї MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED SYNC COMM INTFC DIAG * * ORG 126B DSN OCT 103116 DIAGNOSTIC SERIAL NO. a~ ORG 140B IOIP DEF IOID POINTER TO I-O INSTRUCTIONS TSTP DEF TSTD POINTER TO TEST DEF TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 001777 STANDARD TESTS STDB OCT 000000 STANDARD TESTS ORG 150B IOCLR EQU 0 SSMI EQU 12B RDERR EQU 2 RESET DATA ERROR RPERR EQU 1 RESET PARITY ERROR SRLSA EQU 10B SECONDARY RECEIVE LINE SIGNAL ARM RLSA EQU 4 RECEIVE LINE SIGNAL ARM CLSA EQU 2 CLEAR TO SEND ARM DSRA EQU 1 DATA SET READY ARM RNGM EQU 20B RING MASK SRLSM EQU 10B SECONDARY RECEIVE LINE SIGNAL MASK RLSM EQU 4 RECEIVE LINE SIGNAL MASK CLSM EQU 2 CLEAR TO SEND MASK DSRM EQU 1 DATA SET READY MASK DMAEN EQU 40B DMA ENABLE PEN EQU 20B PARRITY ENABLE PSNS EQU 10B PARITY SENSE SRQS EQU 4 SECONDARY REQUEST TO SEND DTR EQU 2 DATA TERMINAL READY RQS EQU 1 REQUEST TO SEND DIAGN EQU 10B DIAGNOSE RECVT EQU 4 RECEIVE TEST TRDTA EQU 2 TEST RECEIVE DATA TCLK EQU 1 TEST CLOCK CHECK EQU 40000B CHECK / 2 MRQ EQU 40000B MODEM REQUEST DERR EQU 20000B DATA ERROR PERR EQU 10000B PARITY ERROR DRQ EQU 4000B DATA REQUEST RNGI EQU 1000B RING INTERRUPT SRLSI EQU 400B SECONDARY RECEIVE LINS SIGNAL INTERRUPT RLSI EQU 200B RECEIVE LINE SIGNAL INTERRUPT CLSI EQU 100B CLEAR TO SEND INTERRUPT DSRI EQU 40B DATA SET READY INTERRUPT RNG EQU 20B RING SRLS EQU 10B SECONDARY RECEIVE LINE SIGNAL RLS EQU 4 RECEIVE LINE SIGNAL CLS EQU 2 CLEAR TO SEND DSR EQU 1 DATA SET READY TSDTA EQU 40000B TEST SERIAL DATA RUN EQU 40000B RUN FF ACTV EQU 20000B ACTIVE FF HUNT EQU 10000B HUNT FF BYMD EQU 4000B BYTE MODE FF BCOV EQU 2000B BIT COUNTER OVERFLOW SYND EQU 1000B SYNK DETECT RQSS EQU 400B REQUEST TO SEND STATUS NULL EQU 0 ALL ZEROS SRSTC EQU 10000B STATUS RESET COMMAND ARMC EQU 20000B ARM COMMAND MASKC EQU 30000B MASK COMMAND CNTLC EQU 40000B CONTROL COMMAND TESTC EQU 50000B TEST COMMAND STRTC EQU 60000B START COMMAND STOPC EQU 70000B STOP COMMAND B0 EQU 1 B1 EQU 2 B2 EQU 4 B3 EQU 10B B4 EQU 20B B5 EQU 40B B6 EQU 100B B7 EQU 200B SDMAL EQU 2 LOWER SELECT CODE DMA SDMAH EQU 6 UPPER SELECT CODE DMA IRTN DEF *-* BUFFA BSS 1 BUFFB BSS 1 TDATA DEF SMPDA ABUFB DEF BUFBB ABUFD DEF DMABF BUFBB BSS 18 DMABF BSS 36 SKP TRJSB DEF ZTCJI POINTER SW1 OCT 2 .7 OCT 7 MD8 DEC -8 MD7 DEC -7 MD38 DEC -38 MD9 DEC -9 MD18 DEC -18 SKP GUPLO NOP RETURN ADDRESS CLE,ERB LDA B,I GET CHARACTER SEZ,RSS ALF,ALF AND LOHWD ELB JMP GUPLO,I RETURN SPC 3 PUPLO NOP RETURN ADDRESS CLE,ERB AND LOHWD STA PCH LDA B,I SEZ,RSS ALF,ALF AND UPHWD IOR PCH SEZ,RSS ALF,ALF STA B,I ELB JMP PUPLO,I RETURN PCH BSS 1 UPHWD OCT 177400 MASK FOR UPPER HALF WORD LOHWD OCT 000377 MASK FOR LOWER HALF WORD SKP SUBT NOP RETURN ADDRESS LDB SW1 MASK FOR SWITCH 1 LDA USSC GET CONFIGURATION DATA SSA,RSS CHECK FOR SUB-TEST OK JMP SUBC1 CONTINUE JSB SWRT,I CHECK SWITCH 1 RSS JMP SUBT1 CONINUE LDA TSTN GET TEST NO. LDB SUBT. GET SUB-TEST NO. HLT 70B HALT SUBT1 LDB SW0 MASK FOR SWITCH 0 JSB SWRT,I CHECK SWITCH 0 JMP SUBT,I RETURN SUBC1 ISZ SUBT UPDATE RETURN ADDRESS JMP SUBT,I RETURN SPC 1 SUBTH NOP RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT NOP BYPASS LOOP JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTH,I RETURN SPC 1 SUBTT NOP RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT,LOOP JMP SUBLL LOOP ON THIS SUB-TEST JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTT,I RETURN SPC 1 STSUB NOP RETURN ADDRESS LDA STSUB SAVE LOOP ADDRESS INA STA SUBLP LDA STSUB,I GET SUB-TEST NO. STA SUBT. SAVE STA SUBLN SAVE FOR USE WHEN LOOPING ISZ STSUB UPDATE RETURN JMP STSUB,I RETURN SPC 1 SHUTA NOP RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT, LOOP JMP SUBLL LOOP JSB SUBUP UPDATE SUB-TEST NO. LDA SHUTA GET LOOP ADDRESS STA SUBLP SAVE LDA SUBT. GET SUB-TST NO. STA SUBLN SAVE FOR FUTURE LOOPING JMP SHUTA,I RETURN SPC 1 SUBLL LDA SUBLN GET SUB-TEST NO. STA SUBT. SAVE JMP SUBLP,I GO LOOP SPC 1 SUBUP NOP RETURN ADDRESS LDA SUBT. GET SUB-TEST NO. INA AND .77 MASK CPA .70 CHECK FOR OCT X70 JMP SUBT3 CONTINUE ISZ SUBT. OK UPDATE SUBT. JMP SUBUP,I RETURN SUBT3 LDA SUBT. GET SUB-TEST NO. AND .300 MASK X00 ADA .100 UPDATE SUB-TEST NO. STA SUBT. SAVE JMP SUBUP,I RETURN .300 OCT 300 .70 OCT 70 .77 OCT 77 SUBLP DEF *-* LOOP ADDRESS SUBLN BSS 1 LOOP SUB-TEST NO. SUBT. BSS 1 SUB-TEST NUMBER .100 OCT 100 SKP ERNO NOP RETURN ADDRESS LDB ERNO,I GET BUFFER POINTER BLS CONVERT TO BYTE ADDRESS INB LDA SUBT. GET SUB-TEEST NO. AND E NO. ALF,ALF RAL,RAL AND LOHWD MASK ADA ASC0 CONVERT TO ASCII NO JSB PUPLO PLACE IN MESSAGE INB LDA SUBT. RAR,RAR RAR AND .7 ADA ASC0 CONVERT TO ASCII JSB PUPLO PLACE IN MESSAGE INB LDA SUBT. AND .7 MASK ADA ASC0 CONVERT TO ASCII NO JSB PUPLO PLACE IN MESSAGE ISZ ERNO UPDATE RETURN JMP ERNO,I RETURN ASC0 OCT 60 ASCII ZERO SKP CMND NOP RETURN ADDRESS LDA CMND,I GET OPTIONS IN COMMAND IOR B15 GENERATE COMMAND FNIO1 OTA SSMI GIVE COMMAND TO INTERFACE ISZ CMND UPDATE RETURN ADDRESS JMP CMND,I RETURN SPC 2 RSTUS NOP RETURN ADDRESS FNIO2 CLC SSMI INIT INPUT SELECTOR TO SELS STIO1 LIA SSMI READ STATUS JMP RSTUS,I RETURN SPC 2 MRST NOP RETURN ADDRESS LDA MRSTC GET MASTER RESET COMMAND FNIO0 OTA SSMI GIVE COMMAND TO INTERFACE LDA D4 JSB TMRR,I WAIT 4 MS JMP MRST,I RETURN B15 EQU * MRSTC OCT 100000 MASTER RESET COMMAND SPC 2 CLF NOP RETURN ADDRESS CNIO1 CLF SSMI CLEAR INTERFACE FLAG JMP CLF,I RETURN SPC 2 SFS NOP RETURN ADDRESS CNIO2 SFS SSMI SKIP ON FLAG SET JMP SFS,I RETURN - FLAG CLEAR ISZ SFS UPDATE RETURN ADDRESS JMP SFS,I RETURN SPC 2 STC NOP RETURN ADDRESS CNIO3 STC SSMI SET INTERFACE CONTROL FF JMP STC,I RETURN SPC 2 CLC NOP RETURN ADDRESS CNIO4 CLC SSMI CLEAR INTERFACE CONTROL FF JMP CLC,I RETURN SPC 2 LIA NOP RETURN ADDRESS CNIO5 LIA SSMI INPUT FORM INTERFACE JMP LIA,I RETURN SPC 2 CNTRL NOP RETURN ADDRESS LDA CNTRL,I GET CONTROL COMMAND STA CNTP1 JSB CMND OUTPUT CONTROL COMMAND CNTP1 BSS 1 LDA D4 WAIT 4 MS JSB TMRR,I ISZ CNTRL UPDATE RETURN JMP CNTRL,I RETURN SPC 2 MCLK NOP RETURN ADDRESS JSB CMND GIVE TEST COMMAND ABS TESTC+DIAGN+TCLK JSB CMND H GIVE TEST COMMAND ABS TESTC+DIAGN JMP MCLK,I RETURN SPC 2 XMTI NOP RETURN ADDRESS JSB CNTRL RQS=1 ABS CNTLC+RQS+DTR JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTV JSB MCLK SET BYMD AND DRQ JMP XMTI,I RETURN SPC 2 RCVI NOP RETURN ADDRESS JSB CNTRL RQS=0 ABS CNTLC+DTR+SRQS JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTV JSB MCLK SET HUNT JMP RCVI,I RETURN SPC 2 PTYGN NOP RETURN ADDRESS STB PYTYP SAVE PARITY TYPE LDB MD8 STB PYCNT CCB AND B0TB6 MASK PYC01 SLA GENERATE PARITY CMB RAR ISZ PYCNT JMP PYC01 ALF,ALF SZB IOR .B7 LDB PYTYP GIVE CORRECT SSB,RSS PARITY TO XOR .B7 DATA JMP PTYGN,I RETURN PYCNT BSS 1 COUNTER PYTYP BSS 1 PARITY TYPE .B7 OCT 200 B0TB6 ABS B0+B1+B2+B3+B4+B5+B6 SPC 2 OTA NOP RETURN ADDRESS LDA OTA,I GET DATA ISZ OTA UPDATE RETURN OTIO1 OTA SSMI OUTPUT JMP OTA,I RETURN SPC 2 PENN DEF *-* SSA JMP PENC1 JSB CMND PARITY ENABLE ABS CNTLC+PEN+RQS JMP PENN,I RETURN PENC1 JSB CMND ABS CNTLC+PEN+PSNS+RQS JMP PENN,I RETURN SPC 2 SDIN NOP RETURN ADDRESS LDB SDIN,I GET DATA LDA MD8 INITIALIZE COUNTER STA SDINC SDC01 LDA MB0 GENERATE TEST COMMAND AND B RAL IOR SDCM1 CNIO6 OTA SSMI OUTPUT COMMAND XOR MB0 COMPLEMENT TEST CLOCK CNIO7 OTA SSMI OUTPUT COMMAND RBR NEXT BIT ISZ SDINC ALL BITS? JMP SDC01 CONTINUE XOR MB0 CNIO8 OTA SSMI ISZ SDIN YES - UPDATE RETURN JMP SDIN,I RETURN SW0 EQU * 0.*MB0 ABS B0 SDINC BSS 1 SDCM1 ABS TESTC+DIAGN+RECVT+TCLK+100000B SPC 2 CDSB NOP RETURN ADDRESS LDA CDSB GET RETURN STA CDATA SAVE RETURN JSB RDDTA READ DATA LDA DSBYM AND B LDB A JMP CDAC1 CONTINUE DSBYM ABS RUN+ACTV+BYMD+BCOV+HUNT+SYND+RQSS SPC 2 SDOU NOP RETURN ADDRESS LDA MD8 STA SDOUC CLA STA SDCHR SDC02 JSB RDDTA GET TSDTA ELB CONSTRUCT LDA SDCHR CHARACTED ERA STA SDCHR BIT JSB MCLK SUPPLY TCLK ISZ SDOUC DONE/ JMP SDC02 CONTINUE LDA SDCHR GET CHARACTER ALF,ALF JMP SDOU,I RETURN SDCHR BSS 1 SDOUC BSS 1 SPC 2 PTG NOP RETURN ADDRESS LDA PTG,I GET ADDRESS OF STA PTGI INTERRUPT ROUTINE ISZ PTG LDA PTG,I GET ADDRESS OF STA IRTN INTERRUPT RETURN JSB TRJSB,I FILL TRAP CELL PTGI DEF *-* ISZ PTG UPDATE RETURN JMP PTG,I RETURN SPC 2 SMI1 NOP UNUSED RETURN ADDRESS \0   12967-18003 1438 S 0122 SYNC COMMUN INTF DIAGN SOURCE             H0101 F CLF INTP TURN INTPS OFF SMIO1 CLC SSMI INPUT SELECTTOR TO SELS SMIO2 LIA SSMI GET INTERFACE STATUS AND NRNG MASK OFF RING STA XSSMI SAVE AND SMMI GENERATE NEW ARM IOR SMIA SMIO3 OTA SSMI OUTPUT COMMAND SMIO4 STC SSMI SET CONTROL JSB PTG PLACE TO GO IF ANOTHER INT DEF DMIX DEF CMCCA-1 DONE STF INTP ENABLE INTERRUPTS JMP IRTN,I RETURN XSSMI BSS 1 SMMI ABS CLS+DSR+RLS SMIA ABS 100000B+ARMC NRNG ABS -RNG-SRLS-1 SPC 2 CMNDI NOP RETURN ADDRESS LDA CMNDI,I GET COMMAND STA CMPI1 ISZ CMNDI LDA CMNDI,I GET EXPECTED STATUS STA CMPI2 ISZ CMNDI LDA CMNDI,I GET ERROR POINTER STA CMPI3 ISZ CMNDI UPDATE RETURN JSB PTG PLACE TO GO DEF SMI1 INTERRUPT DEF CMNIC DONE JSB CLF CLEAR FLAG JSB STC SET CONTROL STF INTP TURN ON INTERRUPTS JSB CMND ABS MASKC+CLSM+DSRM+RLSM JSB CNTRL CMPI1 BSS 1 COMMAND CLF INTP TURN INTERRUPT SYSTEM OFF JSB ERMS,I REPORT TIMEOUT DEF EM153 JSB RSTUS READ STATUS AND NRNG MASK OFF RING RSS SKIP CMNIC LDA XSSMI GET STATUS LDB CMCCA STB CSTUS CLF INTP TURN INTERRUPT SYSTEM OFF JMP CSC01 CHECK STATUS CMPI2 BSS 1 EXPECTED STATUS CMPI3 DEF *-* STF INTP TURN INTERRUPT SYSTEM ON JMP CMNDI,I RETURN CMCCA DEF CMPI2 SPC 2 CBUFS NOP RETURN ADDRESS CLA STA NOERS CLEAR ERROR FLAG LDA CBUFS,I GET ERROR POINTER STA CBERR LDA MD32 INITIALIZE COUNT STA CBCNT LDA TDATA INITIALIZE POINTERS ALS STA BUFFA LDA ABUFB ALS INA STA BUFFB CBC02 LDA CBC1A STA CDATA LDB BUFFA JS/B GUPLO GET EXPECTED DATA ISZ BUFFA STA CEXPD SAVE LDB BUFFB ISZ BUFFB JSB GUPLO GET ACTUAL DATA LDB A JMP CDAC1 CHECK DATA CEXPD BSS 1 EXPECTED DATA CBERR DEF *-* ERROR MESSAGE POINTER ISZ NOERS CHECK FOR EXTENDED ERROR REPORT RSS JMP CBC03 EXIT NO MORE ERRORS ALLOWED ISZ CBCNT DONE? JMP CBC02 CONTINUE CBC03 ISZ CBUFS UPDATE RETURN JMP CBUFS,I RETURN CBCNT BSS 1 CBC1A DEF CEXPD SPC 2 DMS1 NOP RETURN ADDRESS JSB CNTRL CONTROL COMMAND ABS CNTLC+DTR+RQS+DMAEN JSB CMND START COMMAND ABS STRTC JSB MCLK SET ACTV JSB MCLK SET BYMD AND DRQ JMP DMS1,I RETURN SPC 2 DMS2 NOP RETURN ADDRESS JSB MRST MASTER RESET LDA CPTO GET COMPUTER OPTIONS RAR,RAR SLA,RSS JMP DMC05 CONTINUE - NO DMA JSB STSUB OCT 151 JSB CLBFR CLEAR BUFFER JSB CMNDI INITIALIZE INTERFACE ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+DSRI+DSR DEF EM151 JSB CMNDI ABS CNTLC+DTR+RQS ABS CHECK+CHECK+MRQ+CLSI+CLS+DSR DEF EM151 JSB SUBUP UPDATE SUB. TEST NO. JSB UNPCK JSB DMAON TURN ON DMA DEF DMABF JSB STSUB OCT 146 LDA ABUFB BUFFER POINER ALS STA BUFFB LDA MD33 STA DMCNT COUNT JSB PTG PLACE TO GO DEF DMIX SMI INTERRUPT DEF DMC06 INTERRUPT RETURN JSB CMND START COMMAND ABS STRTC JSB CMND ENABLE DMA ABS CNTLC+DTR+RQS+DMAEN JSB MCLK SUPPLY CLOCK JSB MCLK SUPPLY CLOCK DMC07 JSB SDOU SUPPLY COOCKS LDB BUFFB JSB STC SET CONTROL JSB PUPLO PUT CHARACTER IN BUFFER ISZ BUFFB ISZ DMCNT UPDATE COUNTER  JMP DMC07 CONTINUE JSB CMND STOP COMMAND ABS STOPC JSB DMAOF TURN DMA OFF CLF INTP TURN INTERRUPT SYSTEM OFF JSB CBUFS CHECK DATA DEF EM146 STF INTP TURN INTERRUPT SYSTEM ON JSB SHUTA JSB STSUB OCT 151 JSB CMNDI PREPARE INTERFACE FOR INPUT ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+CLSI+DSR DEF EM151 JSB CMNDI ABS CNTLC+DTR+SRQS ABS CHECK+CHECK+MRQ+RLSI+RLS+DSR DEF EM151 JSB STSUB OCT 147 JSB CLBFR CLEAR BUFFER JSB DMAON START DMA DEF DMABF,I DMA BUFFER JSB RCVI START RECIIVE JSB CMND ABS CNTLC+SRQS+DTR+DMAEN LDA TDATA BUFFER ADDRESS ALS STA BUFFA LDA MD33 STA DMCNT JSB GSYNC GET SYNC CHARACTER STA DMSY1 STA DMSY2 JSB SDIN PROVIDE SYNC DMSY1 BSS 1 SYNC JSB SDIN PROVIDE SYNC DMSY2 BSS 1 SYNC JSB LIA INPUT SELECTOR TO SELD DMC08 LDB BUFFA JSB GUPLO GET TEST DATA STA DMPD1 JSB SDIN PROVIDE DATA DMPD1 BSS 1 TEST DATA ISZ BUFFA UPDATE BUFFER POINTER ISZ DMCNT UPDATE COUNT JMP DMC08 CONTINUE JSB DMAOF TURN DMA OFF JSB PACK JSB CBUFS DEF EM147 JSB STSUB OCT 151 JSB CMNDI ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+RLSI+DSR DEF EM151 JSB CMNDI ABS CNTLC ABS CHECK+CHECK+MRQ+DSRI DEF EM151 JSB SUBTT DMC06 EQU * JMP DMS2,I SPC 1 DMC05 JSB MSGC,I DEF HM152 JMP DMC06 DMCNT BSS 1 SPC 2 DMAON NOP RETURN ADDRESS LDA DMACF PLACE STA SDMAH CLF IN TRAP CELL LDA CW1 GET COMMAND WORD 1 OTA SDMAH OUTPUT TO DMA CLC SDMAL PREPARE FOR CW2 LDA DMAON,I INPUT OR OUTPUT + . OTA SDMAL ADDRESS TO DMA STC SDMAL PREPARE FOR CW3 LDA CW3 GET CONTROL WORD 3 OTA SDMAL OUTPUT TO DAM FNIO5 STC SSMI,C START SMI STC SDMAH,C START DMA ISZ DMAON UPDATE RETURN JMP DMAON,I RETURN SPC 1 CW1 ABS SSMI CONTROL WORD 1 MD32 DEC -32 DMACF CLF SDMAH CLEAR DMA FLAG CW3 EQU * MD33 DEC -33 SPC 2 DMAOF NOP RETURN ADDRESS CLF SDMAH TRUN OFF DMA LIA SDMAL GET COUNT SZA,RSS CHECK COUNT = 0 JMP DMAOF,I RETURN CLF INTP TURN OFF INTERRUPTS JSB ERMS,I REPORT ERROR DEF EM150 JMP DMAOF,I RETURN SPC 2 DMIX NOP RETURN ADDRESS CLF INTP TURN OFF INTERRUPTS CLF SDMAH STOP DMA JSB RDDTA GET ACTUAL DATA AND STATUS JSB ERMS,I REPORT ERROR DEF EM154 JMP IRTN,I CONTINUE SPC 2 GSYNC NOP RETURN ADDRESS LDA USSC GET CONFIGURATION DATA ALF,ALF ISOLATE SYNC CHARACTER ALF,RAR RAR AND LOHWD MASK JMP GSYNC,I RETURN SPC 2 CLBFR NOP RETURN ADDRESS LDB MD38 INITIALIZE COUNTER CLA CLEAR STB CLCNT LDB ABUFB BUFFER POINTER BLS CLC01 JSB PUPLO CLEAR BUFFER INB UPDATE POINTER ISZ CLCNT UPDATE COUNT JMP CLC01 CONTINUE JMP CLBFR,I RETURN CLCNT BSS 1 COUNTER SPC 2 PACK NOP RETURN ADDRESS LDA ABUFD STA BUFFA LDB ABUFB BLS INB LDA MD32 STA MYCNT MYC01 LDA BUFFA,I JSB PUPLO INB ISZ BUFFA ISZ MYCNT JMP MYC01 CONTINUE JMP PACK,I RETURN SPC 1 MYCNT BSS 1 SPC 1 UNPCK NOP RETURN ADDRESS LDB TDATA BLS LDA ABUFD STA BUFFB LDA MD32 STA MYCNT MYC02 JSB GUPLO STA BUFFB,I INB ISZ BUFFB ISZ MYCNT JMP MYC02 CONTINUE JMP UNPCK,I RETURN SKP CSTUS NOP RETURN ADDRESS JSB RSTUS GET INTERFACE STATUS CSC01 STA STAT SAVE ACTUAL STATUS LDA CSTUS,I GET EXPECTED STATUS ISZ CSTUS UPDATE RETURN CPA STAT CHECK STATUS JMP CSXIT CONTINUE STA EXSTS SAVE EXPECTED STSTUS LDA CSTUS,I GET ERROR MESSAGE STA CSFRM SAVE LDA EMCS3 STA CSTO JSB MOVE CSTO DEF *-* CSFRM DEF *-* LDA EXSTS GET EXPECTED STATUS CLE LDB EMCS2 JSB O2AS,I LDA STAT GET ACTUAL STATUS CLE LDB EMCS1 JSB O2AS,I JSB ERNO GET SUB-TEST NO. DEF EMCS LDA STAT GET ACTUAL STATUS LDB EXSTS GET EXPECTED STATUS JSB ERMS,I OUTPUT ERROR DEF EMCS CSXIT ISZ CSTUS JMP CSTUS,I RETURN EMCS ASC 8,EXXX STATUS IS EMS1 ASC 6,XXXXXX EXP EMS2 ASC 4,YYYYYY ( EMS3 ASC 10, EMCS1 DEF EMS1 EMCS2 DEF EMS2 EMCS3 DEF EMS3 STAT BSS 1 ACTUAL STATUS EXSTS BSS 1 SKP MOVE NOP RETURN ADDRESS LDB MOVE,I GET TO ISZ MOVE LDA .M10 STA MVCNT LDA MOVE,I GET FROM STA MVFRM MVC01 LDA MVFRM,I GET DATA STA B,I PUT DATA INB ISZ MVFRM ISZ MVCNT JMP MVC01 ISZ MOVE JMP MOVE,I RETURN MVCNT BSS 1 .M10 DEC -10 MVFRM DEF *-* SKP 2 RDDTA NOP RETURN ADDRESS FNIO6 CLC SSMI INITIALIZE INPUT SELECTOR TO * STATUS INIO1 LIA SSMI GET STATUS INIO2 LIB SSMI GET DATA JMP RDDTA,I RETURN SPC 2 CDATA NOP RETURN ADDRESS JSB RDDTA GET DATA FROM INTERFACE CDAC1 STB DATA LDA CDATA,I GET EXPECTED DATA ISZ CDATA UPDATE RETURN CPA DATA CHECK DATA JMP CDXIT CONTINUE STA EXDAT SAVE EXPECTED DATA LDA CDATA,I GET MESSAGE POINTER STA CDFRM LDA EMCD3 STA CDTO JSB MOVE CDTO DEF *-* CDFRM DEF *-* LDA EXDAT GET EXPECTED DATA CLE LDB EMCD2 JSB O2AS,I CONVERT TO ASCII LDA DATA GET ACTUAL DATA CLE LDB EMCD1 JSB O2AS,I CONVERT TO ASCII JSB ERNO PLACE E NO. DEF EMCD LDA DATA GET ACTUAL DATA LDB EXDAT GET EXPECTED DATA JSB ERMS,I REPORT ERROR DEF EMCD LDB SW2 GET MASK FOR SW 2 SWJSB JSB SWRT,I CHECK SWITCH REGISTER CLA,RSS CLEAR FLAG CCA SET FLAG STA NOERS SAVE ERROR FLAG CDXIT ISZ CDATA UPDATE RETURN JMP CDATA,I RETURN SPC 2 EMCD ASC 7,EXXX DATA IS EMD1 ASC 6,XXXXXX EXP EMD2 ASC 4,YYYYYY ( EMD3 ASC 10, EMCD1 DEF EMD1 EMCD2 DEF EMD2 EMCD3 DEF EMD3 DATA BSS 1 ACTUAL DATA EXDAT BSS 1 EXPECTED DATA NOERS BSS 1 D4 EQU * SW2 OCT 4 SKP HM152 ASC 19,H152 DMA DATA TRANSFER OMITTED-NO DMA/ EM153 ASC 16,E153 MISSING INT. DURING STATUS/ EM154 ASC 14,E154 INT. WHEN NOT EXPECTED/ EM155 ASC 17,E155 MISSING INT. DURING TRANSMIT/ BSPGO EQU * SKP ORG ZCEND IOID EQU * DEF FNIO0 DEF FNIO1 DEF CNIO1 DEF CNIO2 DEF CNIO3 DEF CNIO4 DEF CNIO5 DEF CNIO6 DEF CNIO7 DEF CNIO8 DEF OTIO1 DEF FNIO2 DEF FNIO5 DEF FNIO6 DEF STIO1 DEF INIO1 DEF INIO2 DEF SMIO1 DEF SMIO2 DEF SMIO3 DEF SMIO4 DEF SMIO6 DEF CW1 DEC -1 TSTD EQU * DEF TST00 DEF TST01 DEF TST02 DEF TST03 DEF TST04 DEF TST05 DEF TST06 DEF TST07 DEF TST10 DEF TST11 DEC -1 SKP SMPDxA OCT 015433 SYNC,SYNC EM030 ASC 14,E030 FLAG NOT SET BY CLC 0/ EM031 ASC 16,E031 CONTROL NOT RESET BY CLC 0/ EM032 ASC 13,E032 FLAG NOT SET BY MRST/ EM033 ASC 16,E033 CONTROL NOT RESET BY MRST/ EM034 ASC 5,RQS, CLS)/ EM035 ASC 8,DTR, DSR, RNG)/ EM036 ASC 9,SRQS, RLS, SRLS)/ EM037 ASC 24,E037 STATUS NOT RECVD ON 1ST INPUT AFTER CLC CH/ EM040 ASC 22,E040 STATUS RECVD ON 2ND INPUT AFTER CLC CH/ EM041 ASC 24,E041 STATUS NOT DECVD ON 1ST INPUT AFTER STC CH/ EM042 ASC 3,MRST)/ EM043 ASC 12,E043 STATUS REVD AFTER ASC 11,MASTER RESET COMMAND/ EM044 ASC 6,RNGI, DSRI)/ EM045 ASC 7,RLSI, SRLSI)/ EM046 ASC 3,CLSI)/ EM047 ASC 3,DSRA)/ EM050 ASC 3,CLSA)/ EM051 ASC 3,RLSA)/ EM052 ASC 4,SRLSA)/ EM053 ASC 6,MASK, MRST)/ EM054 ASC 6,ARM, MRST)/ EM055 ASC 17,E055 FLAG SET - LOCK INOPERATIVE/ EM056 ASC 13,E056 FLAG NOT SET - DEVRQ/ EM057 ASC 8,TSDTA)/ EM060 ASC 3,RQS)/ EM061 ASC 4,RECVT)/ EM062 ASC 4,TRDTA)/ EM063 ASC 3,RUN)/ EM064 ASC 6,RUN, STOP)/ EM065 ASC 6,RUN, MRST)/ EM066 ASC 3,ACTV)/ EM067 ASC 6,ACTV, STOP)/ EM100 ASC 3,HUNT)/ EM101 ASC 6,HUNT, STOP)/ EM102 ASC 3,BYMD)/ EM103 ASC 6,BYMD, STOP)/ EM104 ASC 3,BCOV)/ EM105 ASC 4,BCOV+1)/ EM106 ASC 4,BCOV+8)/ EM107 ASC 6,BCOV, STOP)/ EM110 ASC 3,DRQ)/ EM111 ASC 6,DRQ, STOP)/ EM112 ASC 13,E112 FLAG NOT SET BY DRQ/ EM113 ASC 6,DRQ, DATA)/ EM114 ASC 6,DRQ, BCOV)/ EM115 ASC 6,DRQ, INPUT)/ EM116 ASC 3,DERR)/ EM117 ASC 7,DERR, SRSTC)/ EM120 ASC 3,MRST)/ EM121 ASC 6,SHIFT ONES)/ EM122 ASC 4,SDOUT)/ EM123 ASC 7,SDOUT, MRST)/ EM124 ASC 6,DATA PATH)/ EM125 ASC 6,PARITY ODD)/ EM126 ASC 7,PARITY EVEN)/ EM127 ASC 5,E127 SYND= E127A ASC 1, ASC 3,DATA= E127B ASC 4,XXXXXX/ EM130 ASC 6,BYMD, SYND)/ EM131 ASC 8,BYMD, NOT SYND)/ EM132 ASC 6,HUNT, SYND)/ EM133 ASC 6,NO PARITY)/ EM134 ASC 3,PERR)/ EM135 ASC 4,RPERR)/ EM136 EQU * EM137 ASC 5,TRANSMIT)/ EM140 EQU * EM141 ASC 5,RECEIVE)/ EM142 ASC 19,E142 FLAG SET WITH DMA ENABLED (DRQ)/ EM143 ASC 17,E143 FLAG SET BY CHECK |WITH (SRQ)/ EM144 ASC 19,E144 FLAG NOT SET AFTER CLF CH (SRQ)/ EM145 ASC 13,E145 SRQ SET WHILE LOCK=1/ EM146 ASC 7,DMA TRANSMIT)/ EM147 ASC 7,DMA RECEIVE)/ EM150 ASC 15,E150 DMA ABNORMAL COMPLETION/ EM151 ASC 5,DMA TEST)/ SKP TST01 EQU * MRTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 30 SUB-TEST NO. JSB CLF CLEAR INTERFACE FLAG CLC IOCLR I/O MASTER RESET JSB SFS CHECK INTERFACE FLAG FF RSS JMP MRC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM030 ERROR MESSAGE POINTER MRC01 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR1 WHERE TO GO IF INTERRUPT STF INTP ENABLE INTERRUPT SYTTEM CLC IOCLR I/O MASTER RESET NOP ALLOW TIME FOR INTERRUPT NOP INTERRUPT SHOULD NOT OCCUR CLF INTP TURN OFF THE INTERRUPT SYSEM JMP MRC02 CONTINUE MRIR1 NOP RETURN ADDRESS CLF INTP TURN OFF INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM031 POINTER TO MESSAGE MRC02 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG FF JSB MRST GIVE INTERFACE A MASTER RESET COMMAND JSB SFS CHECK INTERFACE FLAG FF RSS JMP MRC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM032 POINTER TO MESSAGE MRC03 JSB SHUTA CHECK SUB-TEST HALT,LOOP JSB CLF CLEAR INTERFACE FLAG FF JSB STC SET INTERFACE CONTROL FF JSB TRJSB,I FILL INTERRUPT TRAP CELL DEF MRIR2 WHERE TO GO IF INTERRUPT STF INTP TURN ON INTERRUPT SYSTEM JSB MRST GIVE INTERFACE A MASTER RESET COMMAND NOP GIVE THE INTERFACE TIME TO INTERRUPT NOP THERE SHOULD BE NO INTERRUPT CLF INTP TURN OFF THE INTERRUPT SYSTEM MRC04 JSB SUBTT CHECK SUB-TEST HALT,LOOP JMP MRTST,I RETURN MRIR2 NOP RETURN ADDRESS CLF INTP TURN OFF THE INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM033 POINTER TO MESSAGE JMP MRC04 CONTINUE SKP TST02 EQU * MSTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO OCT 34 JSB MRST MASTER RESET JSB MSS1 TEST RQS AND CLS ABS CNTLC+RQS ABS CLS DEF EM034 JSB SHUTA CHECK SUB-TEST HALT AND LOOP JSB MSS1 TEST DTR,DSR,RNG ABS CNTLC+DTR ABS DSR+RNG DEF EM035 JSB SHUTA CHECK SUB-TEST HALT AND LOOP JSB MSS1 TEST SRQS,RLS,SRLS ABS CNTLC+SRQS ABS RLS+SRLS DEF EM036 JSB SHUTA CHECK SUB-TEST HALT AND LOOP JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB RSTUS GET INTERFACE STATS CPA MSTT1 CHECK STATUS JMP MSC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM037 MSC01 JSB SUBTH CHECK SUB-TEST HALT JSB LIA INPUT 2ND CHARACTER CPA MSTT1 RSS JMP MSC02 CONTINUE JSB ERMS,I REPORT ERROR DEF EM040 MSC02 JSB SHUTA CHECK SUB-TEST HALT, LOOP MSC03 JSB SUBUP UPDATE SUB-TEST NO. JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB MRST GIVE INTERFACE MASTER RESET COMMAND JSB CSTUS CHECK STATUS ABS NULL ALL MODEM STATUS RESET DEF EM042 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET COMMAND JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB LIA INPUT FROM INTERFACE CPA MSTT1 CHECK INPUT FOR DATA RSS JMP MSC04 CONTINUE JSB ERMS,I REPORT ERROR DEF EM043 MSC04 JSB SUBTT CHECK SUB-TEST HALT, LOOP JMP MSTST,I RETURN <:6 SPC 2 MSTT1 ABS CLS+RNG+DSR+SRLS+RLS SPC 2 MSS1 NOP RETURN ADDRESS LDA MSS1,I GET PARAMETERS STA MSP1 ISZ MSS1 LDA MSS1,I STA MSP2 ISZ MSS1 LDA MSS1,I STA MSP3 STA MSP4 ISZ MSS1 UPDATE RETURN ADDRESS JSB CNTRL GIVE CONTROL COMMAND MSP1 BSS 1 JSB CSTUS CHECK STATUS MSP2 BSS 1 MSP3 DEF *-* ERROR MESSAGE POINTER JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+NULL JSB CSTUS CHECK STATUS ABS NULL MSP4 DEF *-* ERROR MESSAGE POINTER JMP MSS1,I RETURN SKP TST03 EQU * AMTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 44 JSB MRST MASTER RESET JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB CMND GIVE INTERFACE MASK COMMAND ABS MASKC+RNGM JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+RNGI+SRLS+RLS+CLS+DSR+RNG <  12967-18004 1438 S 0122 SYNC COMMUN INTF DIAGN SOURCE             H0101 G DEF EM044 JSB CMND ABS MASKC+DSRM JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+DSRI+SRLS+RLS+CLS+DSR+RNG DEF EM044 JSB SHUTA JSB CMND GIVE INTERFACE MASK COMMAND ABS MASKC+RLSM JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+RLSI+SRLS+RLS+CLS+DSR+RNG DEF EM045 JSB CMND GIVE INTERFACE MASK COMMAND ABS MASKC+SRLSM JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+SRLSI+SRLS+RLS+CLS+DSR+RNG DEF EM045 JSB SHUTA JSB CMND GIVE INTERFACE MASK COMMAND ABS MASKC+CLSM JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+CLSI+SRLS+RLS+CLS+DSR+RNG DEF EM046 JSB CMND ABS MASKC+NULL JSB CSTUS CHECK STATUS ABS SRLS+RLS+CLS+DSR+RNG DEF EM046 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CMND GIVE INTERFACE MASK COMMAND ABS MASKC+DSRM+CLSM+RLSM+SRLSM AML01 JSB AMS1 TEST DSR ARM ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+DSRI+DSR+RNG ABS ARMC+DSRA DEF EM047 JSB SUBT JMP AML01 LOOP JSB SUBUP UPDATE SUB-TEST NO AML02 JSB AMS1 TEST CLS ARM ABS CNTLC+RQS ABS CHECK+CHECK+MRQ+CLSI+CLS ABS ARMC+CLSA DEF EM050 JSB SUBT CHECK SUBOTEST HALT, LOOP JMP AML02 LOOP JSB SUBUP UPDATE SUB-TEST NO AML03 JSB AMS1 TEST RLS ARM ABS CNTLC+SRQS ABS CHECK+CHECK+MRQ+RLSI+RLS+SRLS ABS ARMC+RLSA DEF EM051 JSB SUBT CHECK SUB-TEST HALT, LOOP JMP AML03 LOOP JSB SUBUP AML04 JSB AMS1 TEST SRLS ARM ABS CNTLC+SRQS ABS CHECK+CHECK+MRQ+SRLSI+SRLS+RLS ABS ARMC+SRLSA DEF EM052 JSB SUBT CHECK SUB-TEST HALT, LOOP JMP AML04 LOOP JSB SUBUP UPDATE SUB-TEST NO OCT 53 JSB CMND GIVE MASK COMMAND ABS MASKC+RNGM+DSRM+RLSM+SRLSM+CLSM ۱ JSB MRST GIVE INTERFACE MASTER RESET JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB CSTUS CHECK STATUS ABS CLS+DSR+RNG+RLS+SRLS DEF EM053 JSB SHUTA JSB CMND GIVE ARM COMMAND ABS ARMC+DSRA+CLSA+RLSA+SRLSA JSB MRST JSB CMND GIVE MASK COMMAND ABS MASKC+DSRM+CLSM+RLSM+SRLSM JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB CSTUS CHECK STATUS ABS CHECK+CHECK+MRQ+SRLSI+RLSI+CLSI+DSRI+SRLS+RLS+CLS+DSR+RNG DEF EM054 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST INTERFACE MASTER RESET JSB CLF CLF INTP JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+DTR+RQS+SRQS JSB CMND GIVE MASK COMMAND ABS MASKC+DSRM+CLSM+RLSM+SRLSM JSB SFS SKIP FLAG SET JMP AMC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM055 AMC01 JSB SUBTH CHECK SUB-TEST HALT JSB STC JSB SFS SKIP FLAG SET RSS JMP AMC02 CONTINUE JSB ERMS,I REPORT ERROR DEF EM056 AMC02 JSB SUBTT CHECK SUB-TEST HALT, LOOP JMP AMTST,I RETURN SKP AMS1 NOP RETURN ADDRESS LDA AMS1,I GET PARAMETERS STA AMP1 ISZ AMS1 LDA AMS1,I STA AMP2 AND AMMS1 STA AMP4 LDA AMP2 AND AMMS2 STA AMP5 LDA AMP2 AND AMMS3 ALF,ALF ALF,ARS IOR AMMS4 STA AMP6 ISZ AMS1 LDA AMS1,I STA AMP3 ISZ AMS1 LDA AMS1,I STA AMSE1 STA AMSE2 STA AMSE3 STA AMSE4 JSB CMND AMP6 BSS 1 JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+NULL JSB CMND GIVE ARM COMMAND AMP3 BSS 1 JSB CSTUS CHECK STATUS AMP4 BSS 1 AMSE1 DEF *-* JSB CNTRL GIVE CONTROL COMMAND AMP1 BSS 1 JSB CSTUS CHECK STATUS AMP5 BSS a1 AMSE2 DEF *-* JSB CMND ABS ARMC+NULL JSB CSTUS CHECK STATUS AMP2 BSS 1 AMSE3 DEF *-* JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+NULL JSB CSTUS CHECK STATUS ABS NULL AMSE4 DEF *-* ISZ AMS1 JMP AMS1,I SPC 2 AMMS1 ABS CHECK+CHECK+MRQ+DSRI+SRLSI+RLSI+CLSI AMMS2 ABS DSR+RLS+SRLS+CLS+RNG AMMS3 ABS SRLSI+RLSI+CLSI+DSRI AMMS4 ABS MASKC SKP TST04 EQU * ICTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 57 JSB MRST JSB CMND ABS TESTC+DIAGN JSB CDATA CHECK DATA ABS TSDTA+TSDTA DEF EM057 JSB SUBTH CHECK SUB-TET HALT JSB CNTRL GIVE CONTROL COMMAND ABS CNTLC+RQS JSB CDATA CHECK DATA ABS RQSS DEF EM060 JSB SUBTH JSB CMND GIVE TEST COMMAND ABS TESTC+RECVT+DIAGN JSB CDATA CHECK DATA ABS RQSS DEF EM061 JSB SUBTH CHECK SUB-TEST HALT JSB CMND GIVE TEST COMMAND ABS TESTC+DIAGN+RECVT+TRDTA JSB CDATA CHECK DATA ABS TSDTA+TSDTA+RQSS DEF EM062 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET TO INTERFACE JSB CMND GIVE COMMAND TEST ABS TESTC+DIAGN JSB CMND GIVE START COMMAND ABS STRTC JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN DEF EM063 JSB SUBTH CHECK SUB-TEST HALT JSB CMND GIVE COMMAND ABS STOPC JSB CDSB CHECK DIAGN STATUS BYTE ABS NULL DEF EM064 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CMND GIVE COMMAND ABS STRTC JSB MRST JSB CMND GIVE TEST COMMAND ABS TESTC+DIAGN JSB CDSB CHECK DIAGN STATUS BYTE ABS NULL DEF EM065 JSB SHUTA JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTV JSB CDSB n CHECK DIAGN STATUS BYTE ABS RUN+ACTV DEF EM066 JSB SUBTH CHECK SUB-TEST HALT JSB CMND STOP ABS STOPC JSB CDSB CHECK DIAGN STATUS BYTE ABS NULL DEF EM067 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTV JSB MCLK SET HUNT JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN+ACTV+HUNT DEF EM100 JSB SUBTH CHECK SUB-TEST HALT JSB CMND STOP ABS STOPC JSB CDSB CHECK DIAGN STATUS BYTE ABS NULL DEF EM101 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CNTRL PUT INTERFACE IN ABS CNTLC+RQS TRANSMIT MODE JSB CMND ABS STRTC SET RUN JSB MCLK SET ACTV JSB MCLK SET BYMD JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN+ACTV+BYMD+RQSS DEF EM102 JSB SUBTH CHECK SUB-TEST HALT JSB CMND RESET BYMD ABS STOPC JSB CDSB CHECK DIAGN STATUS BYTE ABS RQSS DEF EM103 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CNTRL INITIALIZE INTERFACE FOR ABS CNTLC+RQS TRANSMIT MODE JSB CMND SET RUN ABS STRTC LDB MD9 ICC01 JSB MCLK SUPPLY 5 CLOCKS INB,SZB TO GET BCOV JMP ICC01 JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN+ACTV+BYMD+BCOV+RQSS DEF EM104 JSB SUBTH CHECK SUB-TEST HALT JSB MCLK JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN+ACTV+BYMD+RQSS DEF EM105 JSB SUBTH CHECK SUB-TEST HALT LDB MD7 ICC02 JSB MCLK SUPPLY TEST CLOCKS INB,SZB TO GET BCOV JMP ICC02 JSB CDSB CHECK DIAGN STATUS BYTE ABS RUN+ACTV+BYMD+BCOV+RQSS DEF EM106 JSB SUBTH CHECK SUB-TEST HALT JSB CMND STOP ABS STOPC JSB CDSB CHECK DIAGN STATUS BYTE ABS RQSS DEF EM107 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESETT JSB CNTRL SET UP TRANSMIT MODE ABS CNTLC+RQS JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTIVE JSB MCLK SET DQR JSB CSTUS CHECK STATUS ABS DRQ+CLS DEF EM110 JSB SUBTH CHECK SUB-TEST HALT JSB CMND STOP ABS STOPC JSB CSTUS CHECK STATUS ABS CLS DEF EM111 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB CNTRL SET UP TRANSMIT MODE ABS CNTLC+RQS JSB CMND SET RUN ABS STRTC JSB MCLK SET ACTV JSB MCLK SET DRQ JSB SFS CHECK FLAG SET RSS JMP ICC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM112 ICC03 JSB SUBTH CHECK SUB-TEST HALT JSB OTA RESET DRQ WITH DSTB OCT 0 JSB CSTUS CHECK STATUS ABS CLS DEF EM113 JSB SUBTH CHECK SUB-TEST HALT, LOOP LDB MD8 ICC04 JSB MCLK SET DRQ BY BCOV INB,SZB JMP ICC04 JSB CSTUS CHECK STATUS ABS DRQ+CLS DEF EM114 JSB SUBTH CHECK SUB-TEST HALT JSB CNTRL SET INTERFACE TO ABS CNTLC RECEIVE MODE JSB RDDTA READ DATA JSB CSTUS CHECK STATUS ABS NULL DEF EM115 JSB CMND STOP ABS STOPC JSB SHUTA JSB MRST MASTER RESET JSB CNTRL PUT INTERFACE IN ABS CNTLC+RQS TRANSMIT MODE JSB CMND SET RUN ABS STRTC LDB MD18 ICC05 JSB MCLK SET DRQ THEN DERR INB,SZB JMP ICC05 JSB CSTUS CHECK STATUS ABS CHECK+CHECK+DERR+DRQ+CLS DEF EM116 JSB SUBTH CHECK SUB-TEST HALT JSB CMND STATUS RESET COMMAND ABS SRSTC+RDERR JSB CSTUS CHECK STATUST ABS DRQ+CLS DEF EM117 JSB SUBTT CHECK SUB-TEST HALT, LOOP JMP ICTST,I RETURN SKP * DATA PATH TEST TST05 EQU * DATST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 120 JSB MRST MASTER RESET JSB CDATA CHECK DATA ABS NULL DEF EM120 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB CNTRL RQS = 1 ABS CNTLC+RQS * TRANSMIT MODE LDB MD7 DAC01 JSB MCLK GIVE TEST CLOCKS INB,SZB JMP DAC01 JSB CDATA CHECK DATA ABS B1+B2+B3+B4+B5+B6+B7+RQSS DEF EM121 JSB SUBTH CHECK SUB-TEST HALT JSB MCLK PLACE LAST ONE IN SHIFT REG JSB CDATA CHECK DATA ABS B0+B1+B2+B3+B4+B5+B6+B7+RQSS+TSDTA+TSDTA DEF EM122 JSB SUBTH CHECK SUB-TEST HALT JSB MRST MASTER RESET JSB CDATA CHECK DATA ABS NULL DEF EM123 JSB SHUTA CHECK SUB-TEST HALT, LOOP CLA JSB DAS1 TEST DATA PATH NO PARITY DEF EM124 JSB SHUTA CHECK SUB-TEST HALT,LOOP CLA,INA JSB DAS1 TEST DATA PATH PARITY EVEN- DEF EM125 JSB SHUTA CHECK SUB-TEST HALT,LOOP CCA HAG - PARITY EVEN JSB DAS1 DATA SUB-TEST DEF EM126 JSB SUBTT CHECK SUB-TET HALT,LOOP JMP DATST,I RETURN SPC 2 DAS1 NOP RETURN ADDRESS STA DAP SAVE PARITY TYPE CLA STA NOERS CLEAR ERROR FLAG LDA DAS1,I GET ERROR MESSAGE STA DAERR SAVE JSB MRST MASTER RESET JSB XMTI SETUP FOR TRANSMIT LDA DAP CHECK PARITY TYPE SZA JSB PENN ENABLE PARITY CLA INITIALIZE DATA DAC02 STA DAP01 SAVE TEST DATA JSB OTA OUTPUT DATA DAP01 BSS 1 DATA LDB MD8 DAC03 JSB MCLK SUPPLY TEST COLCK 8 INB,SZB JMP DAC03 CONTINUE LDB DAP GET PARITY TYPE LDA DAP01 SZB JSB PTYGN GENERATE PARITY ADA DADSB SLA ADA B15 STA DAP02 SAVE EXPECTED DATA DAC04 JSB CDATA CHECK DATA DAP02 BSS 1 EXPECTED DATA DAERR DEF *-* ERROR MESSAGE POINTER ISZ NOERS CHECK FOR EXTENDED ERROR REPORTS RSS JMP DAC05 CONTINUE LDA DAP01 UPDATE DATA PATERN INA AND LOHWD SZA JMP DAC02 DAC05 ISZ DAS1 UPDATE RETURN JMP DAS1,I RETURN DADSB ABS RUN+ACTV+BYMD+RQSS DAP BSS 1 ORG 6000B SKP TST06 EQU * RMTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 127 JSB GSYNC GET SYNC CHARACTER STA RMP01 STA RMP02 STA RMP04 STA RMP05 STA RMP06 STA RMP07 STA RMP08 STA RMP09 STA RMP10 INA AND LOHWD STA RMP03 JSB MRST MASTER RESET JSB RCVI START RECEIVE MODE JSB CNTRL TURN RQS ON ABS CNTLC+RQS CLA RML01 STA RMP04 SAVE TEST CHARACTER JSB OTA OUTPUT DATA RMP04 BSS 1 TEST DATA JSB RDDTA GET DIAGNOSTIC STATUS BYE LDA XSYND ISOLATE SYND AND B STA XXSYN SAVE LDB RMP04 CPB SYNCH XOR XSYND SZA,RSS JMP RMC02 CONTINUE LDA SYNC0 LDB XXSYN SZB LDA SYNC1 STA E127D,I CLE LDB E127C LDA RMP04 JSB O2AS,I CONVERT TO ASCII LDA XXSYN LDB RMP04 JSB ERMS,I REPORT EROR DEF EM127 LDB SW2 MASK FOR SW 2 JSB SWRT,I CHECK SWITCH REGISTER RSS JMP RMC01 CONTINUE - BYPASS ADDITIONAL ERRORS RMC02 LDA RMP04 UPDATE TEST DATA INA AND LOHWD SZA CHECK FOR ALL JMP RML01  NO RMC01 JSB SHUTA UPDATE SUB-TEST NO. JSB MRST MASTER RESET JSB RCVI START RECEIVE MODE JSB SDIN SERIAL INPUT SYNCH EQU * RMP01 BSS 1 SYNC CHARACTER JSB CDSB CHECK DIAGNOSTIC STATUS BYTE ABS RUN+ACTV+HUNT+BYMD+SYND DEF EM130 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB RCVI START RECEIVE MODE JSB SDIN SERIAL INPUT RMP02 BSS 1 JSB SDIN SERIAL INPUT RMP03 BSS 1 JSB CDSB CHECK DIAGNOSTIC STATUS BYTE ABS RUN+ACTV+HUNT DEF EM131 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB RCVI START RECEIVE MODE JSB SDIN SERIAL INPUT RMP05 BSS 1 JSB SDIN SERIAL INPUT RMP06 BSS 1 JSB CDSB CHECK DIAGNOSTIC STATUS BYTE ABS RUN+ACTV+BYMD DEF EM132 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB RCVI START RECEIVE JSB SDIN SERIAL INPUT RMP07 BSS 1 JSB SDIN SERIAL INPUT RMP08 BSS 1 JSB SDIN SERIAL INPUT ABS B0+B1+B2+B3+B4+B5+B6+B7 JSB CDATA CHECK DATA ABS RUN+ACTV+BYMD+377B+TSDTA+TSDTA DEF EM133 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST JSB RCVI START RECEIVE MODE JSB SDIN SERIAL INPUT RMP09 BSS 1 JSB SDIN SERIAL INPUT RMP10 BSS 1 JSB CNTRL ENABLE PARITY ABS CNTLC+PEN JSB SDIN SERIAL INPUT ABS B0 BAD PARITY JSB CSTUS ABS CHECK+CHECK+DRQ+PERR DEF EM134 JSB SUBTH JSB CMND RESET PARITY ERROR ABS SRSTC+RPERR JSB CSTUS CHECK STATUS ABS DRQ DEF EM135 JSB SUBTT CHECK SUB-TEST HALT, LOOP JMP RMTST,I RETURN SPC 1 XXSYN BSS 1 XSYND ABS SYND SYNC0 ASC 1,0 SYNC1 ASC 1,1 E127C DEF E127B E127D DEF E127A  SKP TST07 EQU * TRTST NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 136 JSB MRST MASTER RESET JSB CLBFR CLEAR BUFFER JSB CMNDI START TRANSMIT MODE ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+DSRI+DSR DEF EM136 JSB CMNDI OUTPUT COMMAND ABS CNTLC+DTR+RQS ABS CHECK+CHECK+MRQ+CLSI+CLS+DSR DEF EM136 JSB SUBUP JSB CLC CLEAR CONTROL FF LDA TDATA ALS STA BUFFA LDA ABUFB ALS STA BUFFB LDA MD38 STA TRCNT JSB PTG DEF TRTSI DEF TRC01 JSB XMTI INITIATE TRANSMIT TRC03 JSB STC SET CONTROL FF LDA D4 WAIT 4 MS JSB TMRR,I INTERRUPT CLF INTP TURN INTERRUPT SYSTEM OFF JSB ERMS,I REPORT TIMEOUT DEF EM155 JSB MRST MASTER RESET JMP TRTST,I RETURN TRC01 JSB SDOU SUPPLY COLCKS LDB BUFFB JSB PUPLO PUT CHARACTER IN BUFFER ISZ BUFFB UPDATE BUFFER POINTER JMP TRC03 CONTINUE TRTSI NOP UNUSED RETURN ADDRESS CLF INTP TURN OFF INTERRUPTS ISZ TRCNT LAST RSS NO JMP TRC02 YES - RETURN LDB BUFFA JSB GUPLO SMIO6 OTA SSMI,C OUTPUT TEST DATA ISZ BUFFA STF INTP JMP IRTN,I RETURN TRC02 JSB CMND GIVE STOP COMMAND ABS STOPC JSB STSUB OCT 136 JSB CMNDI COMMAND RQS = 0 ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+CLSI+DSR DEF EM136 JSB CMNDI OUTPUT COMMAND ABS CNTLC ABS CHECK+CHECK+MRQ+DSRI DEF EM136 CLF INTP TURN INTERRUPTS OFF JSB SUBUP UPDATE SUB-TEST NO. JSB CBUFS DEF EM137 JMP TRTST,I TRCNT BSS 1 SKP TST10 EQU * RCTST NOP RETURN ADDRESS JSB STSUB SAVE SUBTEST NO. OCT 140 JSB MRST $8 MASTER RESET JSB CLBFR JSB CMNDI INITIALIZE INTERFACE ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+DSRI+DSR DEF EM140 JSB CMNDI ABS CNTLC+DTR+SRQS ABS CHECK+CHECK+MRQ+RLSI+RLS+DSR DEF EM140 JSB CLC CLEAR CONTROL FF LDA TDATA INITIALIZE BUFFER POINTERS ALS STA BUFFA LDA ABUFB ALS INA STA BUFFB LDA MD32 STA RCCNT JSB GSYNC GET SYNC CHARACTER STA RCSY1 INITIALIZE TEST STA RCSY2 JSB PTG PLACE TO GO DEF RCSYI INTERRUPT DEF RCC03 JSB RCVI START RECEIVE MODE JSB SDIN RECEIVE FIRST SYNC RCSY1 BSS 1 DYNV VHSTSVYRT JSB SDIN RECEIVE SECOND SYNC RCSY2 BSS 1 SYNC CHARACTER RCC01 JSB SUBUP UPDATE SUB-TEST NO JSB PTG PLACE TO GO DEF RCTSI INTERRUPT DEF RCC02 DONE RCC02 LDB BUFFA JSB GUPLO GET TEST DATA STA RCDTA ISZ BUFFA JSB SDIN RCDTA BSS 1 TEST DATA JSB STC SET CONTROL LDA D4 JSB TMRR,I WAIT FOR INTERRUPT CLF INTP TURN INTERRUPT SYSTEM OFF JSB ERMS,I REPORT TIMEOUT DEF EM156 JSB MRST MASTER RESET JMP RCTST,I RETURN RCTSI NOP UNUSED RETURN ADDRESS CLF INTP TURN INTERRUPTS OFF JSB RDDTA READ DATA LDA B LDB BUFFB JSB PUPLO PLACE DATA IN BUFFER ISZ BUFFB ISZ RCCNT DONE? RSS NO JMP RCC03 YES-CONTINUE STF INTP TURN INTERRUPT SYSTEM ON JMP IRTN,I RETURN RCSYI NOP UNUSED RETURN ADDRESS CLF INTP TURN INTERRUPTS OFF JSB CSTUS ABS SRLS+RLS+RNG+DSR DEF EM140 JMP IRTN,I RETURN RCC03 JSB CMND ABS STOPC JSB CBUFS CHECK DATA DEF EM141 JSB STSUB SAVE SUB-TEST NO OCT 140 JSB CMNDI COMMAND SRLS = 0 ABS CNTLC+DTR ABS CHECK+CHECK+MRQ+RLSI+DSR DEF EM140 JSB CMNDI COMMAND DTR = 0 ABS CNTLC ABS CHECK+CHECK+MRQ+DSRI DEF EM140 CLF INTP TURN INTERRUPTS OFF JSB SUBTT CHECK SUB-TEST JMP RCTST,I RETURN RCCNT BSS 1 EM156 ASC 17,E156 MISSING INT. DURING RECEIVE/ CUPGO EQU * SKP ORG BSPGO TST11 EQU * DMATS NOP RETURN ADDRESS JSB STSUB SAVE SUB-TEST NO. OCT 142 JSB MRST MASTER RESET CLF INTP TURN OFF INTERRUPTS JSB CLF CLEAR FLAG AND SRQ JSB DMS1 DMAEN AND DRQ JSB SFS JMP DMC01 CONTINUE JSB ERMS,I REPORT ERROR DEF EM142 DMC01 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB CLF CLEAR FLAG AND SRQ JSB STC SET CONTROL FF JSB DMS1 DMAEN,DRQ,SRQ JSB CMND GENERATE CHECK ABS MASKC+DSRM+CLSM+RLSM+SRLSM JSB SFS JMP DMC02 CONTINUE JSB ERMS,I REPORT ERROR DEF EM143 DMC02 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB CLF CLEAR FLAG AND SRQ JSB STC SET CONTROL FF JSB DMS1 DMAEN,DRQ,SRQ JSB CMND GENERATE CHECK ABS MASKC+DSRM+CLSM+RLSM+SRLSM JSB CLF CLEAR FLAG AND SRQ JSB SFS RSS FLAG CLEAR JMP DMC03 CONTINUE JSB ERMS,I REPORT ERROR DEF EM144 DMC03 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB MRST MASTER RESET JSB CLF CLEAR FLAG AND SRQ JSB DMS1 DMAEN,DRQ,SRQ JSB CNTRL DROP DMAEN ABS CNTLC+DTR+RQS+SRQS JSB STC SET CONTROL FF JSB SFS RSS FLAG CLEAR JMP DMC04 CONTINUE JSB ERMS,I REPROT ERROR DEF EM145 DMC04 JSB SHUTA CHECK SUB-TEST HALT, LOOP JSB gHFBDMS2 CLF INTP TURN OFF INTERRUPTS JMP DMATS,I RETURN ORG CUPGO HDMS ASC 11,SYNC COMM INTFC DIAG/ FWAA EQU * END "tH  12968-18001 1602 S 0122 12968A ASYNCHRONOUS DATA COMM INTERFACE             H0101 ASMB,A,B,L,C HED ASYNCHRONOUS COMMUNICATION INTERFACE DIAGNOSTIC ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIZATION CHART * x ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGIƾSTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC OCT 0 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITSC INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES ta LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB zZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITSC NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITSC,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * Vq HED BASIC I/O TESTS SC EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 9,E000 CLF 0-SFC 0/ ZBE01 ASC 9,E001 CLF 0-SFS 0/ ZBE02 ASC 9,E002 STF 0-SFC 0/ ZBE03 ASC 9,E003 STF 0-SFS 0/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF SC ZBS22 CLF SC ZBS23 SFC SC RSS JMP *+3 E005 JSB ERMS,I E005 CLF SC-SFC SC ERROR DEF ZBE05 ZBS24 SFS SC JMP *+3 E006 JSB ERMS,I E006 CLF SC-SFS SC ERROR DEF ZBE06 ZBS25 STF SC ZBS26 SFC SC JMP *+3 E007 JSB ERMS,I E007 STF SC-SFC SC ERROR DEF ZBE07 ZBS27 SFS SC RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF SC-SFS SC ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 10,E005 CLF SC-SFC SC/ ZBE06 ASC 10,E006 CLF SC-SFS SC/ ZBE07 ASC 10,E007 STF SC-SFC SC/ ZBE10 ASC 10,E010 STF SC-SFS SC/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF SC SET THE FLAG ZBS32 STC SC SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN  CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TO INTERRUPT NOP ZBS33 CLF SC RESET SC FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE SC? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF SC CLEAR CHANNEL FLAG Z.STF STF SC EXECUTE STF SC INSTRUCTION ZBS42 SFC SC TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF SC CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT SC FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC SC TURN ON ZBS52 STF SC CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ *<:6ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF SC TURN OFF SC FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 9,E015 INT RTN ADDR/ ZBE26 ASC 10,E026 INT EXECUTION/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 <  12968-18002 1602 S 0122 12968A ASYNCHRONOUS DATA COMM INTERFACE             H0101  JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC SC AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC SC SET SC CONTROL ZBS62 STF SC SET SC FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC SC CLEAR SC CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF SC CLEAR SC FLAG ZBS65 STC SC SET SC CONTROL ZBS66 STF SC SET SC FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC SC ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 6,E016 CLC SC/ ZBE17 ASC 6,E017 CLC 0/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF SC CLEAR SC FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS SC CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE T:O NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 9,H024 PRESET, RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED 12968 ASYNC COMM INTFC DIAGNOSTIC * ORG 126B DSN OCT 103121 DIAGNOSTIC SERIAL NO. ORG 140B IOIP \DEF IOID POINTER TO I-O INSTRUCTIONS TSTP DEF TSTD POINTER TO TEST DEF TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 001777 STANDARD TESTS STDB OCT 000000 STANDARD TESTS ORG 150B IOCLR EQU 0 SARI EQU 12B NULL EQU 0 WRD0 EQU 00000B WRD1 EQU 10000B WRD2 EQU 20000B WRD3 EQU 30000B WRD4 EQU 40000B WRD5 EQU 50000B SCFE EQU 1 CFE EQU 2 CEE EQU 4 CCE EQU 10B CBE EQU 20B SCFR EQU 1 CFR EQU 2 CER EQU 4 CCR EQU 10B CBR EQU 20B DIAGC EQU 40B PASNS EQU 4 PAR EQU 10B ECHO EQU 20B STB EQU 40B DMA EQU 20B SCA EQU 40B CD EQU 100B CA EQU 200B XMIT EQU 400B CLPE EQU 1 CLBRK EQU 2 CBEF EQU 4 CBF EQU 10B SCF EQU 1 CF EQU 2 CE EQU 4 CC EQU 10B CB EQU 20B PARR EQU 40B BRK EQU 100B BEF EQU 200B BFF EQU 400B SPCHR EQU 40000B DEVI EQU 40000B B5 EQU 40B B7 EQU 200B SDMAL EQU 2 LOWER SELECT CODE DMA SDMAH EQU 6 UPPER SELECT CODE DMA IRTN DEF *-* BUFFA BSS 1 BUFFB BSS 1 BXMIT DEF XBUF POINTER TO TRANSMIT BUFFER BRCV DEF RBUF POINTER TO RECEIVE BUFFER SPC 3 TRJSB DEF ZTCJI POINTER D1 EQU * SW0 OCT 1 D2 EQU * SW1 OCT 2 .7 OCT 7 SW2 EQU * D4 DEC 4 MD1 DEC -1 MD8 DEC -8 MD38 DEC -38 MD9 DEC -9 MD15 DEC -15 MD16 DEC -16 BCNTR BSS 1 MSK3 OCT 3 PATUP DEC 16 SKP PUPLO NOP RETURN ADDRESS CLE,ERB AND LOHWD STA PCH LDA B,I SEZ,RSS ALF,ALF AND UPHWD IOR PCH SEZ,RSS ALF,ALF STA B,I ELB JMP PUPLO,I RETURN PCH BSS 1 UPHWD OCT 177400 MASK FOR UPPER HALF WORD LOHWD OCT 000377 MASK FOR LOWER HALF WORD SKP * THIS SECTION IS FOR INTERNAL USE ONLY. * TO ENABLE SUB-TEST HALTS AND LOOPS IT * IS NECESSARY TO CONFIGURE THE DIAGNOSTIC * STARTING AT LOCATION 100 OCTAL WITH THE * SELECT CODIE AND BIT 15 = 1. AT EXECUTION * SWITCH REGISTER BIT 0 HAS * THE MEANING LOOP ON SUB-TEST AND * SWITCH REGISTER BIT 1 MEANS HALT * AT THE END OF THE CURRENT SUB-TEST. * THIS HALT IS 102070 (OCTAL). * THE SUB-TEST LOOP * WILL CAUSE LOOPING ON A SMALL * PROGRAM SEGMENT. SPC 2 SUBT NOP RETURN ADDRESS LDA USSC GET CONFIG INFO SSA,RSS JMP SUBC1 CONTINUE LDB SW1 MASK FOR SWITCH 1 JSB SWRT,I CHECK SWITCH 1 - SUB-TEST HALT RSS JMP SUBT1 CONTINUE LDA TSTN GET TEST NO. LDB SUBT. GET SUB-TEST NO. HLT 70B HALT SUBT1 LDB SW0 MASK FOR SWITCH 0 JSB SWRT,I CHECK SWITCH 0 - SUB-TEST LOOP JMP SUBT,I RETURN SUBC1 ISZ SUBT JMP SUBT,I RETURN SPC 1 SUBTH NOP RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT NOP BYPASS LOOP JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTH,I RETURN SPC 1 SUBTT NOP RETURN ADDRESS JSB SUBT CHECK SUB-TEST HALT,LOOP JMP SUBLL LOOP ON THIS SUB-TEST JSB SUBUP UPDATE SUB-TEST NO. JMP SUBTT,I RETURN SPC 1 STSUB NOP RETURN ADDRESS LDA STSUB SAVE LOOP ADDRESS INA STA SUBLP LDA STSUB,I GET SUB-TEST NO. STA SUBT. SAVE STA SUBLN SAVE FOR USE WHEN LOOPING ISZ STSUB UPDATE RETURN JMP STSUB,I RETURN SPC 1 SHUTA NOP RETURN ADDRESS JSB SUBTT CHECK SUB-TEST HALT/LOOP LDA SHUTA GET LOOP ADDRESS STA SUBLP SAVE LDA SUBT. GET SUB-TEST NO. STA SUBLN SAVE FOR FUTURE LOOPING JMP SHUTA,I RETURN SPC 1 SUBLL LDA SUBLN GET SUB-TEST NO. STA SUBT. SAVE JMP SUBLP,I GO LOOP SPC 1 SUBUP NOP RETURN ADDRESS LDA SUBT. GET SUB-TEST NO. INA AND .77 K MASK CPA .70 CHECK FOR OCT X70 JMP SUBT3 CONTINUE ISZ SUBT. OK UPDATE SUBT. JMP SUBUP,I RETURN SUBT3 LDA SUBT. GET SUB-TEST NO. AND .300 MASK X00 ADA .100 UPDATE SUB-TEST NO. STA SUBT. SAVE JMP SUBUP,I RETURN .300 OCT 300 .70 OCT 70 .77 OCT 77 SUBLP DEF *-* LOOP ADDRESS SUBLN BSS 1 LOOP SUB-TEST NO. SUBT. BSS 1 SUB-TEST NUMBER .100 OCT 100 SKP ERNO NOP RETURN ADDRESS LDB ERNO,I GET BUFFER POINTER BLS CONVERT TO BYTE ADDRESS INB LDA SUBT. GET SUB-TEEST NO. AND E NO. ALF,ALF RAL,RAL AND LOHWD MASK ADA ASC0 CONVERT TO ASCII JSB PUPLO PLACE IN MESSAGE INB LDA SUBT. RAR,RAR RAR AND .7 ADA ASC0 CONVERT TO ASCII JSB PUPLO PLACE IN MESSAGE INB LDA SUBT. AND .7 MASK ADA ASC0 CONVERT TO ASCII JSB PUPLO PLACE IN MESSAGE ISZ ERNO UPDATE RETURN JMP ERNO,I RETURN SPC 2 ASC0 OCT 60 ASCII ZERO SKP CMNDD NOP RETURN ADDRESS LDA CMNDD,I GET OPTIONS IN COMMAND FNIO1 OTA SARI GIVE COMMAND ISZ CMNDD UPDATE RETURN ADDRESS LDA D4 WAIT 4 MS JSB TMRR,I JMP CMNDD,I RETURN SPC 2 RSTUS NOP RETURN ADDRESS FNIO2 CLC SARI SELECT STATUS STIO1 LIA SARI READ STATUS JMP RSTUS,I RETURN SPC 2 RDDTA NOP RETURN ADDRESS FNIO6 STC SARI SET CONTROL = DATA IOIN6 LIA SARI INPUT DATA JMP RDDTA,I RETURN SPC 2 MRST NOP RETURN ADDRESS LDA MRSTC GET MASTER RESET COMMAND FNIO0 OTA SARI GIVE COMMAND LDA D2 JSB TMRR,I WAIT 2 MS JMP MRST,I RETURN MRSTC ABS 100000B+WRD5+CLPE+CLBRK+CBF+CBEF SPC 2 CLF NOfP RETURN ADDRESS CNIO1 CLF SARI CLEAR INTERFACE FLAG JMP CLF,I RETURN SPC 2 SFS NOP RETURN ADDRESS CNIO2 SFS SARI SKIP ON FLAG SET JMP SFS,I RETURN - FLAG CLEAR ISZ SFS UPDATE RETURN ADDRESS JMP SFS,I RETURN SPC 2 STC NOP RETURN ADDRESS CNIO3 STC SARI SET INTERFACE CONTROL FF JMP STC,I RETURN SPC 2 CLK16 NOP RETURN ADDRESS LDA MD16 STA CLKNT CLKC1 LDA CLKON RISING EDGE OF 16 X BAUD RATE CLOCK CLK01 OTA SARI OUTPUT LDA CLKOF FALLING EDGE OF 16 X BAUD RATE CLOCK CLK00 OTA SARI OUTPUT ISZ CLKNT JMP CLKC1 JMP CLK16,I RETURN SPC 1 CLKON ABS WRD2+DIAGC CLKOF ABS WRD2+NULL CLKNT BSS 1 SPC 2 SDIN NOP RETURN ADDRESS LDA SDIN,I GET PARAMETERS STA SDTYP SAVE LDA SDTYP LDB MD9 AND MSK3 BITS / CHAR CMA,INA ADB A LDA SDTYP AND SDP PARITY BIT SZA,RSS INB LDA SDTYP AND SDST NO OF STOP BITS SZA,RSS INB LDA SDTYP GET TYPE AND SDSTX CPA SDST INB SPECIAL FOR 5 BIT 2 STOPS STB SDCNT SAVE NO BITS / CHAR STB SDDTC CLA STA BUFFA,I PLACE IN BUFFER SDC01 JSB CLK16 SUPPLY CLOCKS TO INTERFACE JSB RSTUS READ STATUS AND SDBA ISOLATE SIGNAL BA LDB BUFFA,I GET PARTIAL DATA RBR ADD THIS BIT TO DATA SZA INB STB BUFFA,I PLACE DATA IN BUFFER ISZ SDCNT UPDATE BIT COUNTER JMP SDC01 LDA SDTYP GET TYPE AND SDSTX CPA SDST JMP SDC06 CONTINUE - 5 BIT AND 2 STOPS SDC05 LDA SDDTC INA SDC02 RBL PREPARE CHARACTER INA,SZA JMP SDC02 STB BUFFA,I PLACE ASSEMBLED CHARACTER IN BUFFER ISZ BUFFA UPDATE B-UFFER POINTER JMP SDIN,I RETURN SDC06 LDB MD8 STB SDCNT SDC04 JSB CMND ABS WRD2+DIAGC JSB CMND ABS WRD2+NULL ISZ SDCNT JMP SDC04 JSB RSTUS GET BA AND SDBA LDB BUFFA,I RBR SZA INB STB BUFFA,I LDA SDDTC ADA MD1 STA SDDTC JMP SDC05 SPC 2 SDDTC BSS 1 SDCNT BSS 1 SDTYP BSS 1 SDBA ABS CE SDP ABS PAR SDST ABS STB SDSTX ABS STB+3 SPC 2 SDOUT NOP RETURN ADDRESS LDA SDOUT,I GET PARAMETER ISZ SDOUT UPDATE RETURN ADDRESS STA SDOP1 SAVE LDA SDWD4 GET WORD 4 COMMAND STA SDOP3 SAVE LDA SDOP1 GET PARAMETER AND MSK3 STA B LDA SDOP1 AND SDST SZA INB LDA SDOP1 AND SDP SZA INB ADB D6 CMB,INB STB SDOCN COUNTER - BITS / CHARACTER JSB CMND PREPARE FOR RECEIVE SDOP3 BSS 1 WORD 4 COMMAND JSB CLK16 START BIT SDOC2 LDA BUFFA,I GET DATA CMA AND MSK1 ALF,ALF RAR,RAR ADA SDWD4 STA SDOP2 LDA BUFFA,I RAR STA BUFFA,I JSB CMND SDOP2 BSS 1 JSB CLK16 SUPPLY 16 CLOCKS ISZ SDOCN UPDATE BIT COUNTER JMP SDOC2 CONTINUE WITH THIS CHARACTER ISZ BUFFA UPDATE BUFFER POINTER JSB CLK16 JMP SDOUT,I RETURN SPC 2 MSK1 EQU D1 SDOCN BSS 1 SDOP1 BSS 1 D6 DEC 6 SDWD4 BSS 1 SPC 2 LINBF NOP RETURN ADDRESS LDA MD16 INITIALIZE COUNTER STA BCNTR LDB BRCV INITIALIZE BUFFER POINTER STB BUFFB LDB BXMIT INITIALIZE BUFFER POINTER STB BUFFA LIC01 LDA BUFFB,I PREPARE DATA AND LOHWD STA BUFFB,I REPLACE IN BUFFER LDA BUFFA,I AND MSKCZ STA BUFFA,I REPLACE IN BUFFER ISZ BUFFB UPDATE BUF,FER POINTER ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE COUNTER JMP LIC01 CONTINUE JMP LINBF,I RETURN SPC 2 FIXDA NOP RETURN ADDRESS LDA FIXDA,I GET DATA FORMAT STA FXDAT SAVE ISZ FIXDA UPDATE RETURN ADDRESS LDB BXMIT GET BUFFER POINTER STB BUFFA SAVE LDB MD16 INITIALIZE COUNTER STB BCNTR FXC07 LDA FXDAT AND MSK3 LDB MSK37 FXC09 SZA,RSS JMP FXC08-1 RBL INB ADA MD1 JMP FXC09 STB MSKCZ SAVE MASK FXC08 LDA BUFFA,I AND B STA BUFFA,I LDA FXDAT AND SDP IS PARITY USED SZA,RSS JMP FXC01 NO- DO START AND STOP(S) LDA FXDAT AND .B2 YES - WHAT TYPE SZA,RSS CCB,RSS CLB LDA BUFFA,I GET DATA JSB PTYGN GENERATE PARITY STA BUFFA,I SAVE AND .B8 STA B SAVE PARITY BIT RBR,RBR RBR LDA FXDAT AND MSK3 NO BITS / CHAR FXC03 SZA,RSS JMP FXC02 CONTINUE RBL ADA MD1 JMP FXC03 CONTINUE FXC02 LDA BUFFA,I AND B0TB7 IOR B RSS FXC01 LDA BUFFA,I GET DATA RAL INSERT START BIT AND NB0 MASK STA BUFFA,I SAVE LDB .B6 LDA FXDAT AND SDST CHECK NO STOP BITS SZA ADB .B7 USE 2 LDA FXDAT AND MSK3 GET NO OF BITS / CHAR FXC06 SZA,RSS JMP FXC05 CONTINUE RBL PUT STOP BITS IN CORRECT POSITION ADA MD1 JMP FXC06 FXC05 LDA FXDAT AND SDP SZA IS PARITY USED RBL POSITION STOP BIT(S) LDA BUFFA,I GET DATA IOR B STA B STB BUFFA,I SAVE COMPLETE DATA ISZ BUFFA UPDATE BUFFER POINTER ISZ BCNTR UPDATE BUFFER COUNTER JMP FXC07 JMP FIXDA,I RETURN SPC 2 FXDAT BSS 1 MSKCZ BSS 1 .B2 EQU D4 .B6 EQU .100 .B7 ABS B7 NB0 OCT 7776 SPC 2 PTYGN NOP RETURN ADDRESS STB PYTYP SAVE PARITY TYPE LDB MD8 STB PYCNT CCB AND B0TB7 MASK PYC01 SLA GENERATE PARITY CMB RAR ISZ PYCNT JMP PYC01 ALF,ALF SZB IOR .B8 LDB PYTYP GIVE CORRECT SSB,RSS PARITY TO XOR .B8 DATA JMP PTYGN,I RETURN PYCNT BSS 1 COUNTER MSK37 OCT 37 PYTYP BSS 1 PARITY TYPE .B8 OCT 400 B0TB7 EQU LOHWD SPC 2 CMND NOP RETURN ADDRESS LDA CMND,I GET DATA ISZ CMND UPDATE RETURN OTIO1 OTA SARI OUTPUT JMP CMND,I RETURN SPC 2 PTG NOP RETURN ADDRESS LDA PTG,I GET ADDRESS OF STA PTGI INTERRUPT ROUTINE ISZ PTG LDA PTG,I GET ADDRESS OF STA IRTN INTERRUPT RETURN JSB TRJSB,I FILL TRAP CELL PTGI DEF *-* ISZ PTG UPDATE RETURN JMP PTG,I RETURN SPC 2 CBUFS NOP RETURN ADDRESS CLA STA NOERS INITIALIZE ERROR FLAG LDA CBUFS,I GET ERROR POINTER STA CBERR LDA MD16 INITIALIZE COUNT STA CBCNT LDA BXMIT INITIALIZE POINTERS STA BUFFA LDA BRCV STA BUFFB CBC02 LDA CBC1A STA CDATA LDA BUFFA,I ISZ BUFFA STA CEXPD SAVE LDA BUFFB,I ISZ BUFFB LDB A JMP CDAC1 CHECK DATA CEXPD BSS 1 EXPECTED DATA CBERR DEF *-* ERROR MESSAGE POINTER ISZ NOERS CHECK FOR ERRORS RSS CONTINUE JMP CBC03 DO NOT REPORT ANY MORE ERRORS ISZ CBCNT DONE? JMP CBC02 CONTINUE CBC03 ISZ CBUFS UPDATE RETURN JMP CBUFS,I RETURN CBCNT BSS 1 CBC1A DEF CEXPD SPC 2 EPREP NOP RE/TURN ADDRESS LDA EPREP,I GET TO ADDR STA EMTO SAVE ISZ EPREP LDA EPREP,I GET ERROR NO PTR STA EMNO SAVE STA EMSGG ISZ EPREP LDA EPREP,I GET FROM ADDR STA EMFRN SAVE ISZ EPREP JSB MOVE EMTO DEF *-* EMFRN DEF *-* JSB ERNO EMNO DEF *-* JSB ERMS,I REPORT ERROR EMSGG DEF *-* JMP EPREP,I RETURN SPC 2 DMAON NOP RETURN ADDRESS LDA DMACF PLACE STA SDMAH CLF IN TRAP CELL LDA CW1 GET COMMAND WORD 1 OTA SDMAH OUTPUT TO DMA CLC SDMAL PREPARE FOR CW2 LDA DMAON,I INPUT OR OUTPUT + OTA SDMAL ADDRESS TO DMA STC SDMAL PREPARE FOR CW3 LDA CW3 GET CONTROL WORD 3 OTA SDMAL OUTPUT TO DMA FNIO5 STC SARI,C START ARI STC SDMAH,C START DMA ISZ DMAON UPDATE RETURN JMP DMAON,I RETURN SPC 1 CW1 ABS SARI CONTROL WORD 1 FOR DMA CW3 EQU MD16 SPC 2 XARI NOP RETURN ADDRESS LDA BUFFB,I GET DATA AND LOHWD MASK STA XARP1 SAVE JSB CMND OUTPUT CHARACTER XARP1 BSS 1 CHARACTER ISZ BUFFB UPDATE BUFFER POINTER JMP XARI,I RETURN SPC 2 RARI DEF *-* RETURN JSB RDDTA READ DATA STA BUFFB,I PLACE IN BUFFER ISZ BUFFB UPDATE BUFFER POINTER JMP RARI,I RETURN SPC 2 DMAOF NOP RETURN ADDRESS DMACF CLF SDMAH TURN OFF DMA LIA SDMAL GET COUNT SZA,RSS CHECK COUNT = 0 JMP DMAOF,I RETURN CLF INTP CLEAR INTERRUPT SYSTEM JSB ERMS,I REPORT ERROR DEF EM132 JMP DMAOF,I RETURN SPC 2 CLBFR NOP RETURN ADDRESS LDB MD16 INITIALIZE COUNTER CLA CLEAR STB CLCNT LDB BRCV BUFFER POINTER CLC01 STA B,I CLEAR BUFFER INB lB@ 67B? JMP CONFG YES, GO RESTART CONFIGURATION. SPC 1 LDA DMACW CONFIGURE DMA CW1 ADA B STA CW1 * LDA C4 CLC DATA INSTRUCTIONS ADA B STA MT.50 STA MT.13 SPC 1 LDA C12 STC DATA,C INSTRUCTIONS ADA B INCLUDE THE CHANNEL NUMBER. STA MT.11 STORE THE INSTRUCTION. SPC 1 LDA C13 CLF DATA INSTRUCTION. ADA B INCLUDE THE CHANNEL NUMBER. STA MT.12 STORE THE INSTRUCTION. SPC 1 LDA C6 LIA CMND INSTRUCTIONS ADA B STA S.1 SPC 1 LDA C7 LIB CMND INSTRUCTIONS ADA B STA S.0 SPC 1 LDA C9 SFS CMND INSTRUCTIONS ADA B STA MT.0 STA MT.8 SPC 1 LDA C10 OTA CMND INSTRUCTIONS ADA B STA MT.14 STA MT.1 SPC 1 LDA C11 STC CMND,C INSTRUCTIONS ADA B STA MT.7 STA MT.6 SPC 1 LDA C0 OTB CMND INSTRUCTION. ADA B STA O.B SPC 1 LDA C3 CLC CMND INSTRUCTION. ADA B STA MT.4 STA MT.16 SPC 1 LDA UNITS LOAD THE SWITCH OPTIONS. RAL,RAL SHIFT BIT 14 TO BIT 0. SLA,RAL IS MAXIMUM UNIT > 3? JMP CONFG YES, ERROR; RESTART. RAL SHIFT UNIT MAXIMUM TO 2-0. AND .3 ISOLATE THE MAXIMUM UNIT NUMBER. CPA .3 ARE THERE FOUR(4) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. LDB SL0 NO, LOAD THE SL0 COMMAND. STB SL3 SET UNIT 3 TO BE UNIT 0. CPA DEC2 ARE THERE THREE(3) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL2 NO, MAKE UNIT 2 EQU UNIT 0. CPA DEC1 ARE THERE TWO(2) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL1 NO, MAKE UNIT 1 EQU UNIT 0. SPC 1 STOP HLT 77B END OF DRIVER CONFIGURATION. SPC 1 LDA .SL1 LOAD THE SELECT UNIT 1 COMMAND. STA SL1 RESTORE THE COMMAND. LDA .SL2 LOAD THE SELECT UNIT 2 COMMAND. STA SL2 RESTORE THE COMMAND. LDA .SL3 LOAD THE SELECT UNIT 3 COMMAND. STA SL3 RESTORE THE COMMAND. JMP I.MT SPC 2 .77 OCT 77 M.10 OCT -10 MAXCH OCT -60 UNITS NOP .SL1 OCT 002400 SELECT UNIT 1 COMMAND. .SL2 OCT 004400 SELECT UNIT 2 COMMAND. .SL3 OCT 010400 SELECT UNIT 3 COMMAND. DMACW OCT 20000 SPC 1 * I/O INSTRUCTIONS SPC 1 C0 OTB CMND C31 CLC CMND C4 CLC DATA C6 LIA CMND C7 LIB CMND C9 SFS CMND C10 OTA CMND C11 STC CMND,C C12 STC DATA,C C13 CLF DATA SPC 1 * END OF RELEASABLE INITIALIZATION SECTION SPC 1 I.P.L EQU 00445B DRIVER LENGTH. ORG KCORE+07135B-I.P.L SPC 1 * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SKP * CALLING SEQUENCE: (WRITE/READ) SPC 1 * LDA (>0=CHARS, <0=WORDS) * LDB * JSB 107B,I * OCT (0=READ, 1=WRITE) * * * (A)=RECORD LENGTH, (B)=STATUS SPC 1 * READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED * BY THE DRIVER TO THE NORMAL RETURN LOCATION * WITHOUT ANY TAPE MOVEMENT. SPC 1 * THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE * USER'S REQUEST LENGTH. THIS WORD IS NOT STORED * IN THE USER'S BUFFER BY A READ REQUEST, BUT IS * LEFT IN THE A REGISTER IN THE FORM WHICH THE * USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE * TAPE RECORD LENGTH IF THE TAPE RECORD < THE * BUFFER REQUEST LENGTH. SPC 2 * CALLIN @SEQUENCE: (REWIND/REWIND STANDBY/STATUS) SPC 1 * P JSB 107B,I * P+1 OCT (3=REWIND, 7=STATUS, * P+2 5=REWIND & STANDBY) SPC 2 * CALLING SEQUENCE: (GAP/WRITE END OF FILE) SPC 1 * P JSB 107B,I * P+1 OCT (6=GAP, 2=END OF FILE) * P+2 * P+3 * P+4 (B)=STATUS SPC 2 * CALLING SEQUENCE: (POSITION) SPC 1 * LDA (+=FORWARD, -=REVERSE) * LDB " " * JSB 107B,I * OCT 4 * * * (A)=FILE COUNT, (B)=STATUS SPC 1 * A BACKFILE LEAVES "THE TAPE POSITIONED ON THE SIDE OF * THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM * LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE * BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. SPC 1 * RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE * # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD. SPC 1 * COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL * CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. SPC 1 * END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED * BEFORE THE OPERATION IS INITIATED. SPC 2 * TAPE COMMANDS - SPC 1 * OCT 0 - READ * 1 - WRITE * 2 - WRITE END OF FILE * 3 - REWIND * 4 - POSITION * 5 - REWIND AND STANDBY * 6 - GAP (4" BLANK TAPE) * 7 - STATUS (RETURNS STATUS IN -B- ) SPC 2 * THE STATUS WORD BIT ASSIGNMENTS ARE: SPC 1 * BIT MEANING SPC 1 * 0 TAPE UNIT NOT ON-LINE * 1 PARITY AND/OR TIMING ERROR * 2 FILE PROTECTED (NO WRITE ENABLE RING) * 3 REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY * 2 BACKWARD MOTION REQ'D & AT LOAD POINT * 3 WRITE COMMAND GIVEN AND NO WRITE RING * 4 TIMING ERROR * 5 END OF TAPE * 6 START OF TAPE * 7 END OF FILE * 8 CONTROLLER BUSY * 9 TAPE UNIT NOT READY * 10 TAPE UNIT REWINDING * 11 ODD NUMBER OF BYTES READ SKP * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 MTD NOP ENTRY POINT. STA BUFL SAVE LENGTH AND STB BUFA ADDRESS OF BUFFER JSB STIN GO LOAD THE MT STATUS. SLA IS THE MT CONTROLLER BUSY? JMP S.1 YES, CONTINUE. MT.13 CLC DATA NO, CLEAR DATA CHANNEL CONTROL. MT.16 CLC CMND CLEAR COMMAND CHANNEL CONTROL. LDA MTD,I LOAD THE COMMAND CODE WORD. ALF SHIFT UNIT NUMBER TO BITS 2-0. AND .7 ISOLATE THE UNIT NUMBER. STA SPACE SAVE UNIT NUMBER SZA,RSS SELECT UNIT 0? LDA SL0 YES, LOAD THE SELECT CODE. CPA DEC1 SELECT UNIT 1? LDA SL1 YES, LOAD THE SELECT CODE. CPA DEC2 SELECT UNIT 2? LDA SL2 YES, LOAD THE SELECT CODE. CPA .3 SELECT UNIT 3? LDA SL3 YES, LOAD THE SELECT CODE. CPA SPACE UNIT NUMBER > 3? JMP UNDEF YES, UNDEFINED UNIT. MT.1 OTA CMND OUTPUT THE UNIT SELECTION. LDA MTD,I LOAD THE OPERATION CODE. AND .7 USE THE LOWER 3 BITS ONLY. CPA .7 IS THE REQUEST FOR STATUS. JMP ERR.1 YES, RETURN; STATUS IS IN "B". STA ABS SAVE THE COMMAND REQUEST CODE. OK... CLE,SLB IS THE TAPE UNIT IN LOCAL MODE? JMP LOCAL YES, STOP 44B. ISZ MTD INCREMENT THE RETURN ADDRESS (P+2). ADA TBASE LOOK UP PROCESSOR IN TABLE JMP A,I CALL PROCESSOR SPC 1 TBASE DEF *+1,I COMMAND PROCESSOR ENTRY DEF READ POINT TABLE DEF WRITE DEF WEOF DEF REW DEF POS DEF RES DEF GAP SPC 1 RES LDA RWO LOAD THE REWIND/STANDBY COMMAND. CCE,RSS SKIP. REW LDA .101 REWIND ** CCE ENTER: E=1. JSB CMAND GO INITIATE COMMAND EXECUTION. JSB STIN GO LOAD THE MT UNIT STATUS. JMP EXIT1 SPC 1 UNDEF HLT 15B ILLEGAL UNIT NUMBER. JMP UNDEF IRRECOVERABLE ERROR. SPC 2 * TAPE POSITIONING ROUTINE SPC 1 * ENTER WITH COMMANDS STORED IN BUFL AND BUFA. SPC 1 POS LDB BUFL GET FILE COUNT LDA SFILE LOAD THE FILE CODE OFF-SET. JSB ABS SET FLAGS, COMMANDS AND COUNT JMP P.1 # FILES = 0, DO RECORDS P.5 CCA,SEZ,CCE,RSS ENTER: E=1; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE JMP P.5 REPEAT UNT/IL FILE ISZ CNTR CHECK FOR FINISHED JMP P.5 NO, LOOP LDA BUFL RAL,CLE,SLA,ELA BACKFILE REQUEST? ISZ BUFA .31 SLA,ARS SKIP. JMP EXIT P.1 LDB BUFA PROCESS RECORDS CLA ENTER: A=0. JSB ABS SET FOR FWD/REV RECORD SPACING JMP EXIT NO RECORDS, EXIT P.0 CCA,SEZ,CLE,RSS ENTER: E=0; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE SL0 ALR SELECT UNIT 0 COMMAND. ISZ CNTR FINISHED? JMP P.0 NO, LOOP SPC 1 EXIT ISZ MTD JSB STIN GO LOAD THE MT STATUS. ERR.1 ISZ MTD EXIT1 LDA BUFL MT.4 CLC CMND CLEAR THE MT COMMAND CONTROL BIT. JMP MTD,I SPC 2 P.2 NOP ENTRY POINT. JSB STIN GET TAPE STATUS (BACKFILE) RAL SHIFT THE "SOT" BIT TO A15. SSA,RSS IS THE MT UNIT AT THE "SOT"? JMP P.2,I NO, RETURN. SEZ YES; FILE SKIPPING? ISZ CNTR CNT = -1? JMP EXIT1 NO, TRIED TO CROSS SOT, ERROR JMP P.1 YES, DO RECORD SPACING SPC 2 ABS NOP SET-UP ROUTINE SSB,RSS IS TAPE MOTION TO BE FORWARD? ADA .3 FORWARD SPACE COMMAND SSB IF # IS < 0 SET FOR ADA .41 BACKSPACE COMMAND STA WNEC CLE,SSB,RSS GET -ABS(#) FOR CNT CMB,CCE,INB,SZB IS THE MT TO BE MOVED? ISZ ABS YES, EXIT TO (P+2). STB CNTR JMP ABS,I SPC 2 SPACE NOP SPACE TAPE CLE,SSA IS TAPE MOTION BACKWARDS? JSB EOTC LDA WNEC JSB CMAND SPACE RAL,SLA END-OF-FILE (EOF) MARK? ISZ SPACE YES, SKIP EXIT. CCE,SSA IS THE MT UNIT AT "SOT"? JMP EXIT1 JMP SPACE,I SPC 2 STIN NOP GET TAPE STATUS S.1 LIA CMND LDB A LOAD THE MT UNIT STATUS. ALF,ALF V_ SHIFT THE MT UNIT STATUS 8 BITS. JMP STIN,I SPC 2 * WRITE 4" BLANK TAPE SPC 1 GAP JSB WNEC CHECK FOR WRITE RING IN JSB EOTC CHECK FOR END OF TAPE LDA .15 4 INCH TAPE GAP JSB CMAND JMP EXIT NORMAL EXIT SPC 2 * WRITE END OF FILE SPC 1 WEOFR LDA .41 LOAD: BACKSPACE RECORD COMMAND. JSB CMAND GO EXECUTE THE COMMAND. SPC 1 WEOF JSB WNEC CHECK FOR WRITE RING IN MT.12 CLF DATA CLEAR THE DATA CHANNEL FLAG. LDA GFM WRITE FILE MARK CODE JSB CMAND RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? JMP WEOFR YES, GO BACKSPACE OVER THE RECORD. JSB EOTC JMP EXIT SPC 2 WRITE JSB WNEC GO CHECK FOR A WRITE ENABLE RING. JSB EOTC GO CHECK FOR END-OF-TAPE. JSB CNTR GET NEG # WORDS STA WNEC SAVE WORD COUNT LDA .31 LOAD THE WRITE RECORD COMMAND. JSB CMAND GO INITIATE WRITE SEQUENCE. LDA BUFA BUFFER ADDRESS JSB BUFM1 SAVE POINTER TO & CONTENTS BUFF-1 JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA EOTC RESTORE WORD IN USERS PROGRAM STA P.2,I RBR,SLB DID A PARITY OR TIMING ERROR OCCUR? CLE,RSS YES, SKIP. JMP EXIT NORMAL EXIT LDA .41 BACKSPAC1 RECORD JSB CMAND LDA .15 4 INCH TAPE GAP JSB CMAND EXECUTE COMMAND JMP WRITE RETRY WRITE TILL TAPE END SPC 2 READ JSB EOTC READ *** LDA .M3 STA SPACE SET RETRY COUNTER TO -3. JSB CNTR GET NE,# OF WORDS STA WNEC NEG WORD XFER COUNT RERED LDA .23 READ CHARACTER CODE JSB CMAND INIT. READ RECORD SEQ. LDA BUFA USERS INPUT BUFFER JS{4B BUFM1 ADA BIT15 DIR BIT FOR DMA READ JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA P.2,I RETREIVE RECORD LENGTH STA ABS LDB EOTC NOW RESTORE USERS PROGRAM STB P.2,I JSB STIN MT STATUS SSA WAS AN "EOF" READ? JMP EXIT1 YES, RETURN TO (P+2). RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? RSS YES, SKIP. JMP ENDR NO, DONE. ISZ SPACE HAVE WE TRIED 3 TIMES ? CLE,RSS NO JMP ERR.1 YES, EXIT TO ERROR ROUTINE LDA .41 BACKSPACE JSB CMAND JMP RERED TRY AGAIN SPC 1 * RECORD < BUFFER LENGTH, GET TAPE LENGTH IN USER'S BUFFER SPC 1 ENDR LDA ABS GET TAPE RECORD LENGTH LDB BUFL GET USER BUFFER LENGTH CLE,SSA IS ACTUAL LENGTH IN WORDS? JMP ENDR2 YES, GO CHECK READ REQUEST. CMA,INA NO, CONVERT TO - # OF CHARACTERS. CCE,SSB NO; WAS READ REQUEST IN WORDS? ARS YES, CONVERT CHARACTERS TO WORDS. ENDR2 SEZ,SSB,RSS WAS READ REQUEST IN CHARACTERS? ALS CMA,INA STA BUFL SAVE TAPE LENGTH FOR USER SSB,RSS IS USER LENGTH IN CHARACTERS? CMB,INB YES, COMPLEMENT USER REQUEST. ADA B "SUBTRACT": RECORD LENGTH - USER REQ.. CMB,INB MAKE THE USER REQUEST POSITIVE. SSA,RSS IS RECORD LENGTH > USER REQUEST? STB BUFL YES, STORE USER REQUEST LENGTH. JMP EXIT CONTINUE READ PROCESSING SPC 2 * DO A TEMP SAVE OF WORD IN USERS PROGRAM THAT IS AT * BUFFER ADDRESS - 1. THIS DONE BEFORE BOTH READ AND WRITE * OPERATIONS AND THEN THIS WORD IS RESTORED AFTER THE DMA XFER. * BUFM1 NOP ADA .M1 BACK BUFF POINTER BY ONE LDB A,I RETRIVE FROM USERS PROGRAM _ STA P.2 STB EOTC SAVE BOTH POINTER & CONTENTS JMP BUFM1,I EXIT SPC 2 CFLAG NOP ENTRY POINT. MT.8 SFS CMND IS THE FUNCTION COMPLETE? JMP MT.8 NO, CONTINUE. JSB STIN YES, GO LOAD THE UNIT STATUS. JMP CFLAG,I RETURN. SPC 2 CNTR NOP GET NEG # WORDS IN A LDA BUFL USER'S BUFFER LENGTH CCE,SSA WORDS OR CHARACTERS? JMP CNTR,I WORDS --- RETURN. CMA,INA,SZA,RSS COMPLEMENT; IS THE REQUEST = 0? JMP EXIT YES, GIVE A NORMAL COMPLETION RETURN. ARS JMP CNTR,I RETURN. SPC 2 WNEC NOP WRITE NOT ENABLED CHECK- JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP S.1 NO, CONTINUE. RBR,CLE,RBR SHIFT THE WRITE ENABLE RING BIT TO B0. SLB,RSS DOES THE MT HAVE A WRITE ENABLE RING? JMP WNEC,I EXIT WITH WRITE ENABLED HLT11 HLT 11B AND HALT JMP HLT11 PROTECT HALT. SPC 2 * CONFIGURE DMA INDMA NOP CLC 2 SETUP FOR CW2(BUFFER ADDRESS) OTA 2 CW2 LDA CW1 =B200XX XX=HIGH MT PRIORITY SC OTA 6 STC 2 LDA WNEC NEG OF # WORDS TO XFER STA P.2,I RECORD LENGTH FOR WRITE ADA .M1 SET DMA FOR ADDITIONAL WORD OTA 2 * INITIATE DMA READ/WRITE MT.11 STC DATA,C STC 6,C JSB CFLAG WAIT FOR DMA TO COMPLETE MT.50 CLC DATA STF 6 ROLL OVER DMA WORD COUNT JMP INDMA,I RETURN SPC 1 CMAND NOP ISSUE THE COMMAND IN -A- TO MT.14 OTA CMND OUTPUT THE COMMAND. S.0 LIB CMND LOAD THE STATUS WORD. RBR,RBR SHIFT THE REJECT BIT TO 0. RBR,SLB WAS THE REQUEST REJECTED? JMP REJCT YES, ISSUE A CLEAR AND RETRY. MT.7 STC CMND,C INITIATE COMMAND EXECUTION. CCB,SEZ,CLE READ OR WRITE COMMAND? JMP CMAND,I Ni<:6 YES, RETURN. JSB CFLAG GO WAIT FOR FUNCTION COMPLETION. JMP CMAND,I SPC 1 LOCAL HLT 44B JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP LOCAL NO, CONTINUE. LDA CLR LOAD THE CLEAR COMMAND. JSB CMAND GO EXECUTE THE CLEAR FUNCTION. LDA ABS LOAD THE COMMAND REQUEST CODE. JMP OK... SPC 1 REJCT LDB CLR LOAD THE CLEAR COMMAND CODE. O.B OTB CMND OUTPUT THE CLEAR COMMAND. MT.6 STC CMND,C INITIATE THE CLEAR COMMAND. MT.0 SFS CMND IS THE COMMAND COMPLETED? JMP MT.0 NO, WAIT. JMP MT.14 YES, GO RETRY THE REQUEST. SPC 2 EOTC NOP CHECK FOR EOT JSB STIN GET MT STATUS ALF,CLE,RAR SHIFT THE "EOT" BIT TO A0. SLA IS THE MT UNIT AT THE "EOT"? JMP EXIT1 JMP EOTC,I SKP * BEGIN "LOCAL STORAGE". SPC 1 A EQU 00000B B EQU 00001B SPC 1 DATA EQU 00B CMND EQU DATA+01B SPC 1 BUFL NOP BUFA NOP SPC 1 .7 OCT 000007 .3 OCT 000003 .15 OCT 15 CODE FOR 4 INCH TAPE GAPP .M3 DEC -3 .101 OCT 000101 .41 OCT 000041 .23 OCT 000023 DEC1 DEC 1 DEC2 DEC 2 .M1 OCT -1 SL1 OCT 002400 SELECT UNIT 1 SL2 OCT 004400 SELECT UNIT 2. SL3 OCT 010400 SELECT UNIT 3. CW1 OCT 20000 =B200XX XX=HIGH PRIORITY MT SC BIT15 OCT 100000 CLR OCT 000110 CLEAR COMMAND. RWO OCT 000105 REWIND/STANDBY COMMAND. GFM OCT 000215 GAP 4"; WRITE END-OF-FILE COMMAND. SFILE OCT 000200 SKIP-FILE COMMAND OFF-SET. SPC 1 * END OF "LOCAL STORAGE". SPC 2 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SPC 1 END I<  12970-18002 1518 S 0146 SIO MAG TAPE DMA DRIVER 12K             H0101 hASMB,A,B,L,C HED *** 12K SIO HP7970B/7970E MT DRIVER (DMA/DCPC REQUIRED) *** ORG 00106B DEF MTD-1 LAST WORD AVAILABLE MEMORY DEF MTD DRIVER ENTRY POINT SPC 2 ***** DRIVER INITIALIZATION SECTION ***** SPC 1 * PURPOSE OF THIS SECTION IS TO SET THE I/O * INSTRUCTIONS TO REFERENCE A DESIGNATED I/O * ADDRESS FOR THE 7970 MAG TAPE DRIVER. SPC 1 * EXECUTION OF THIS SECTION IS BEGUN AT LOCATION 2: SPC 1 * (2) JMP 3,I * (3) DEF I.MT SPC 1 * WITH SWITCHES 00-05 = I/O ADDRESS SPC 1 * THIS SECTION IS RELEASED AFTER THE INITIALIZATION * IS COMPLETED. SPC 1 ORG 00002B JMP 00003B,I SET STARTING DEF I.MT POINT IN 2 AND 3 SPC 2 KCORE EQU 20000B 12K MEMORY SIZE SPC 2 ORG KCORE+06000B SPC 1 * CONFIGURE I/0 INSTRUCTIONS SPC 1 CONFG HLT 00B SPC 1 SSW EQU 01B SENSE SWITCH REGISTER ADDRESS. I.MT LIA SSW GET DATA CHANNEL ADDRESS STA UNITS SAVE THE SWITCH OPTIONS. AND .77 STA B SAVE DATA CHANNEL ADDRESS IN B ADA M.10 "SUBTRACT": S.C. - 10B. SSA IS CHANNEL NUMBER < 10B? JMP CONFG YES, GO RESTART CONFIGURATION. ADA MAXCH "SUBTRACT": S.C. - 70B. SSA,RSS IS CHANNEL NUMBER > 67B? JMP CONFG YES, GO RESTART CONFIGURATION. SPC 1 LDA DMACW CONFIGURE DMA CW1 ADA B STA CW1 * LDA C4 CLC DATA INSTRUCTIONS ADA B STA MT.50 STA MT.13 SPC 1 LDA C12 STC DATA,C INSTRUCTIONS ADA B INCLUDE THE CHANNEL NUMBER. STA MT.11 STORE THE INSTRUCTION. SPC 1 LDA C13 CLF DATA INSTRUCTION. ADA B INCLUDE THE CHANNEL NUMBER. STA MT.12 STORE THE INSTRUCTION. SPC 1 LDA C6 LIA CMND INSTRUCTIONS ADA B STA S.1 SPC 1 yb LDA C7 LIB CMND INSTRUCTIONS ADA B STA S.0 SPC 1 LDA C9 SFS CMND INSTRUCTIONS ADA B STA MT.0 STA MT.8 SPC 1 LDA C10 OTA CMND INSTRUCTIONS ADA B STA MT.14 STA MT.1 SPC 1 LDA C11 STC CMND,C INSTRUCTIONS ADA B STA MT.7 STA MT.6 SPC 1 LDA C0 OTB CMND INSTRUCTION. ADA B STA O.B SPC 1 LDA C3 CLC CMND INSTRUCTION. ADA B STA MT.4 STA MT.16 SPC 1 LDA UNITS LOAD THE SWITCH OPTIONS. RAL,RAL SHIFT BIT 14 TO BIT 0. SLA,RAL IS MAXIMUM UNIT > 3? JMP CONFG YES, ERROR; RESTART. RAL SHIFT UNIT MAXIMUM TO 2-0. AND .3 ISOLATE THE MAXIMUM UNIT NUMBER. CPA .3 ARE THERE FOUR(4) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. LDB SL0 NO, LOAD THE SL0 COMMAND. STB SL3 SET UNIT 3 TO BE UNIT 0. CPA DEC2 ARE THERE THREE(3) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL2 NO, MAKE UNIT 2 EQU UNIT 0. CPA DEC1 ARE THERE TWO(2) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL1 NO, MAKE UNIT 1 EQU UNIT 0. SPC 1 STOP HLT 77B END OF DRIVER CONFIGURATION. SPC 1 LDA .SL1 LOAD THE SELECT UNIT 1 COMMAND. STA SL1 RESTORE THE COMMAND. LDA .SL2 LOAD THE SELECT UNIT 2 COMMAND. STA SL2 RESTORE THE COMMAND. LDA .SL3 LOAD THE SELECT UNIT 3 COMMAND. STA SL3 RESTORE THE COMMAND. JMP I.MT SPC 2 .77 OCT 77 M.10 OCT -10 MAXCH OCT -60 UNITS NOP .SL1 OCT 002400 SELECT UNIT 1 COMMAND. .SL2 OCT 004400 SELECT UNIT 2 COMMAND. .SL3 OCT 010400 SELECT UNIT 3 COMMAND. DMACW OCT 20000 SPC 1 * I/O INSTRUCTIONS SPC 1 C0 OTB CMND ! C3 CLC CMND C4 CLC DATA C6 LIA CMND C7 LIB CMND C9 SFS CMND C10 OTA CMND C11 STC CMND,C C12 STC DATA,C C13 CLF DATA SPC 1 * END OF RELEASABLE INITIALIZATION SECTION SPC 1 I.P.L EQU 00445B DRIVER LENGTH. ORG KCORE+07135B-I.P.L SPC 1 * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SKP * CALLING SEQUENCE: (WRITE/READ) SPC 1 * LDA (>0=CHARS, <0=WORDS) * LDB * JSB 107B,I * OCT (0=READ, 1=WRITE) * * * (A)=RECORD LENGTH, (B)=STATUS SPC 1 * READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED * BY THE DRIVER TO THE NORMAL RETURN LOCATION * WITHOUT ANY TAPE MOVEMENT. SPC 1 * THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE * USER'S REQUEST LENGTH. THIS WORD IS NOT STORED * IN THE USER'S BUFFER BY A READ REQUEST, BUT IS * LEFT IN THE A REGISTER IN THE FORM WHICH THE * USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE * TAPE RECORD LENGTH IF THE TAPE RECORD < THE * BUFFER REQUEST LENGTH. SPC 2 * CALLIN @SEQUENCE: (REWIND/REWIND STANDBY/STATUS) SPC 1 * P JSB 107B,I * P+1 OCT (3=REWIND, 7=STATUS, * P+2 5=REWIND & STANDBY) SPC 2 * CALLING SEQUENCE: (GAP/WRITE END OF FILE) SPC 1 * P JSB 107B,I * P+1 OCT (6=GAP, 2=END OF FILE) * P+2 * P+3 * P+4 (B)=STATUS SPC 2 * CALLING SEQUENCE: (POSITION) SPC 1 * LDA (+=FORWARD, -=REVERSE) * LDB " " * JSB 107B,I * OCT 4 * * * (A)=FILE COUNT, (B)=STATUS SPC 1 * A BACKFILE LEA[VES THE TAPE POSITIONED ON THE SIDE OF * THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM * LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE * BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. SPC 1 * RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE * # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD. SPC 1 * COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL * CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. SPC 1 * END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED * BEFORE THE OPERATION IS INITIATED. SPC 2 * TAPE COMMANDS - SPC 1 * OCT 0 - READ * 1 - WRITE * 2 - WRITE END OF FILE * 3 - REWIND * 4 - POSITION * 5 - REWIND AND STANDBY * 6 - GAP (4" BLANK TAPE) * 7 - STATUS (RETURNS STATUS IN -B- ) SPC 2 * THE STATUS WORD BIT ASSIGNMENTS ARE: SPC 1 * BIT MEANING SPC 1 * 0 TAPE UNIT NOT ON-LINE * 1 PARITY AND/OR TIMING ERROR * 2 FILE PROTECTED (NO WRITE ENABLE RING) * 3 REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY * 2 BACKWARD MOTION REQ'D & AT LOAD POINT * 3 WRITE COMMAND GIVEN AND NO WRITE RING * 4 TIMING ERROR * 5 END OF TAPE * 6 START OF TAPE * 7 END OF FILE * 8 CONTROLLER BUSY * 9 TAPE UNIT NOT READY * 10 TAPE UNIT REWINDING * 11 ODD NUMBER OF BYTES READ SKP * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 MTD NOP ENTRY POINT. STA BUFL SAVE LENGTH AND STB BUFA ADDRESS OF BUFFER JSB STIN GO LOAD THE MT STATUS. SLA IS THE MT CONTROLLER BUSY? JMP S.1 YES, CONTINUE. MT.13 CLC DATA NO, CLEAR DATA CHANNEL CONTROL. MT.16 CLC CMND CLEAR COMMAND CHANNEL CONTROL. LDA MTD,I LOAD THE COMMAND CODE WORD. ALF SHIFT UNIT NUMBER TO BITS 2-0. AND .7 ISOLATE THE UNIT NUMBER. STA SPACE SAVE UNIT NUMBER SZA,RSS SELECT UNIT 0? LDA SL0 YES, LOAD THE SELECT CODE. CPA DEC1 SELECT UNIT 1? LDA SL1 YES, LOAD THE SELECT CODE. CPA DEC2 SELECT UNIT 2? LDA SL2 YES, LOAD THE SELECT CODE. CPA .3 SELECT UNIT 3? LDA SL3 YES, LOAD THE SELECT CODE. CPA SPACE UNIT NUMBER > 3? JMP UNDEF YES, UNDEFINED UNIT. MT.1 OTA CMND OUTPUT THE UNIT SELECTION. LDA MTD,I LOAD THE OPERATION CODE. AND .7 USE THE LOWER 3 BITS ONLY. CPA .7 IS THE REQUEST FOR STATUS. JMP ERR.1 YES, RETURN; STATUS IS IN "B". STA ABS SAVE THE COMMAND REQUEST CODE. OK... CLE,SLB IS THE TAPE UNIT IN LOCAL MODE? JMP LOCAL YES, STOP 44B. ISZ MTD INCREMENT THE RETURN ADDRESS (P+2). ADA TBASE LOOK UP PROCESSOR IN TABLE JMP A,I CALL PROCESSOR SPC 1 TBASE DEF *+1,I COMMAND PROCESSOR ENTRY DEF READ POINT TABLE DEF WRITE DEF WEOF DEF REW DEF POS DEF RES DEF GAP SPC 1 RES LDA RWO LOAD THE REWIND/STANDBY COMMAND. CCE,RSS SKIP. REW LDA .101 REWIND ** CCE ENTER: E=1. JSB CMAND GO INITIATE COMMAND EXECUTION. JSB STIN GO LOAD THE MT UNIT STATUS. JMP EXIT1 SPC 1 UNDEF HLT 15B ILLEGAL UNIT NUMBER. JMP UNDEF IRRECOVERABLE ERROR. SPC 2 * TAPE POSITIONING ROUTINE SPC 1 * ENTER WITH COMMANDS STORED IN BUFL AND BUFA. SPC 1 POS LDB BUFL GET FILE COUNT LDA SFILE LOAD THE FILE CODE OFF-SET. JSB ABS SET FLAGS, COMMANDS AND COUNT JMP P.1 # FILES = 0, DO RECORDS P.5 CCA,SEZ,CCE,RSS ENTER: E=1; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE JMP P.5 REPEATZ` UNTIL FILE ISZ CNTR CHECK FOR FINISHED JMP P.5 NO, LOOP LDA BUFL RAL,CLE,SLA,ELA BACKFILE REQUEST? ISZ BUFA .31 SLA,ARS SKIP. JMP EXIT P.1 LDB BUFA PROCESS RECORDS CLA ENTER: A=0. JSB ABS SET FOR FWD/REV RECORD SPACING JMP EXIT NO RECORDS, EXIT P.0 CCA,SEZ,CLE,RSS ENTER: E=0; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE SL0 ALR SELECT UNIT 0 COMMAND. ISZ CNTR FINISHED? JMP P.0 NO, LOOP SPC 1 EXIT ISZ MTD JSB STIN GO LOAD THE MT STATUS. ERR.1 ISZ MTD EXIT1 LDA BUFL MT.4 CLC CMND CLEAR THE MT COMMAND CONTROL BIT. JMP MTD,I SPC 2 P.2 NOP ENTRY POINT. JSB STIN GET TAPE STATUS (BACKFILE) RAL SHIFT THE "SOT" BIT TO A15. SSA,RSS IS THE MT UNIT AT THE "SOT"? JMP P.2,I NO, RETURN. SEZ YES; FILE SKIPPING? ISZ CNTR CNT = -1? JMP EXIT1 NO, TRIED TO CROSS SOT, ERROR JMP P.1 YES, DO RECORD SPACING SPC 2 ABS NOP SET-UP ROUTINE SSB,RSS IS TAPE MOTION TO BE FORWARD? ADA .3 FORWARD SPACE COMMAND SSB IF # IS < 0 SET FOR ADA .41 BACKSPACE COMMAND STA WNEC CLE,SSB,RSS GET -ABS(#) FOR CNT CMB,CCE,INB,SZB IS THE MT TO BE MOVED? ISZ ABS YES, EXIT TO (P+2). STB CNTR JMP ABS,I SPC 2 SPACE NOP SPACE TAPE CLE,SSA IS TAPE MOTION BACKWARDS? JSB EOTC LDA WNEC JSB CMAND SPACE RAL,SLA END-OF-FILE (EOF) MARK? ISZ SPACE YES, SKIP EXIT. CCE,SSA IS THE MT UNIT AT "SOT"? JMP EXIT1 JMP SPACE,I SPC 2 STIN NOP GET TAPE STATUS S.1 LIA CMND LDB A LOAD THE MT UNIT STATUS. ALF,AL^F SHIFT THE MT UNIT STATUS 8 BITS. JMP STIN,I SPC 2 * WRITE 4" BLANK TAPE SPC 1 GAP JSB WNEC CHECK FOR WRITE RING IN JSB EOTC CHECK FOR END OF TAPE LDA .15 4 INCH TAPE GAP JSB CMAND JMP EXIT NORMAL EXIT SPC 2 * WRITE END OF FILE SPC 1 WEOFR LDA .41 LOAD: BACKSPACE RECORD COMMAND. JSB CMAND GO EXECUTE THE COMMAND. SPC 1 WEOF JSB WNEC CHECK FOR WRITE RING IN MT.12 CLF DATA CLEAR THE DATA CHANNEL FLAG. LDA GFM WRITE FILE MARK CODE JSB CMAND RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? JMP WEOFR YES, GO BACKSPACE OVER THE RECORD. JSB EOTC JMP EXIT SPC 2 WRITE JSB WNEC GO CHECK FOR A WRITE ENABLE RING. JSB EOTC GO CHECK FOR END-OF-TAPE. JSB CNTR GET NEG # WORDS STA WNEC SAVE WORD COUNT LDA .31 LOAD THE WRITE RECORD COMMAND. JSB CMAND GO INITIATE WRITE SEQUENCE. LDA BUFA BUFFER ADDRESS JSB BUFM1 SAVE POINTER TO & CONTENTS BUFF-1 JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA EOTC RESTORE WORD IN USERS PROGRAM STA P.2,I RBR,SLB DID A PARITY OR TIMING ERROR OCCUR? CLE,RSS YES, SKIP. JMP EXIT NORMAL EXIT LDA .41 BACKSPAC1 RECORD JSB CMAND LDA .15 4 INCH TAPE GAP JSB CMAND EXECUTE COMMAND JMP WRITE RETRY WRITE TILL TAPE END SPC 2 READ JSB EOTC READ *** LDA .M3 STA SPACE SET RETRY COUNTER TO -3. JSB CNTR GET NE,# OF WORDS STA WNEC NEG WORD XFER COUNT RERED LDA .23 READ CHARACTER CODE JSB CMAND INIT. READ RECORD SEQ. LDA BUFA USERS INPUT BUFFER w JSB BUFM1 ADA BIT15 DIR BIT FOR DMA READ JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA P.2,I RETREIVE RECORD LENGTH STA ABS LDB EOTC NOW RESTORE USERS PROGRAM STB P.2,I JSB STIN MT STATUS SSA WAS AN "EOF" READ? JMP EXIT1 YES, RETURN TO (P+2). RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? RSS YES, SKIP. JMP ENDR NO, DONE. ISZ SPACE HAVE WE TRIED 3 TIMES ? CLE,RSS NO JMP ERR.1 YES, EXIT TO ERROR ROUTINE LDA .41 BACKSPACE JSB CMAND JMP RERED TRY AGAIN SPC 1 * RECORD < BUFFER LENGTH, GET TAPE LENGTH IN USER'S BUFFER SPC 1 ENDR LDA ABS GET TAPE RECORD LENGTH LDB BUFL GET USER BUFFER LENGTH CLE,SSA IS ACTUAL LENGTH IN WORDS? JMP ENDR2 YES, GO CHECK READ REQUEST. CMA,INA NO, CONVERT TO - # OF CHARACTERS. CCE,SSB NO; WAS READ REQUEST IN WORDS? ARS YES, CONVERT CHARACTERS TO WORDS. ENDR2 SEZ,SSB,RSS WAS READ REQUEST IN CHARACTERS? ALS CMA,INA STA BUFL SAVE TAPE LENGTH FOR USER SSB,RSS IS USER LENGTH IN CHARACTERS? CMB,INB YES, COMPLEMENT USER REQUEST. ADA B "SUBTRACT": RECORD LENGTH - USER REQ.. CMB,INB MAKE THE USER REQUEST POSITIVE. SSA,RSS IS RECORD LENGTH > USER REQUEST? STB BUFL YES, STORE USER REQUEST LENGTH. JMP EXIT CONTINUE READ PROCESSING SPC 2 * DO A TEMP SAVE OF WORD IN USERS PROGRAM THAT IS AT * BUFFER ADDRESS - 1. THIS DONE BEFORE BOTH READ AND WRITE * OPERATIONS AND THEN THIS WORD IS RESTORED AFTER THE DMA XFER. * BUFM1 NOP ADA .M1 BACK BUFF POINTER BY ONE LDB A,I RETRIVE FROM USERS PROGRAM - STA P.2 STB EOTC SAVE BOTH POINTER & CONTENTS JMP BUFM1,I EXIT SPC 2 CFLAG NOP ENTRY POINT. MT.8 SFS CMND IS THE FUNCTION COMPLETE? JMP MT.8 NO, CONTINUE. JSB STIN YES, GO LOAD THE UNIT STATUS. JMP CFLAG,I RETURN. SPC 2 CNTR NOP GET NEG # WORDS IN A LDA BUFL USER'S BUFFER LENGTH CCE,SSA WORDS OR CHARACTERS? JMP CNTR,I WORDS --- RETURN. CMA,INA,SZA,RSS COMPLEMENT; IS THE REQUEST = 0? JMP EXIT YES, GIVE A NORMAL COMPLETION RETURN. ARS JMP CNTR,I RETURN. SPC 2 WNEC NOP WRITE NOT ENABLED CHECK- JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP S.1 NO, CONTINUE. RBR,CLE,RBR SHIFT THE WRITE ENABLE RING BIT TO B0. SLB,RSS DOES THE MT HAVE A WRITE ENABLE RING? JMP WNEC,I EXIT WITH WRITE ENABLED HLT11 HLT 11B AND HALT JMP HLT11 PROTECT HALT. SPC 2 * CONFIGURE DMA INDMA NOP CLC 2 SETUP FOR CW2(BUFFER ADDRESS) OTA 2 CW2 LDA CW1 =B200XX XX=HIGH MT PRIORITY SC OTA 6 STC 2 LDA WNEC NEG OF # WORDS TO XFER STA P.2,I RECORD LENGTH FOR WRITE ADA .M1 ADD 1 TO ACCOUNT FOR REC LEN OTA 2 * INITIATE DMA READ/WRITE MT.11 STC DATA,C STC 6,C JSB CFLAG WAIT FOR DMA TO COMPLETE MT.50 CLC DATA STF 6 ROLL OVER DMA WORD COUNT JMP INDMA,I RETURN SPC 1 CMAND NOP ISSUE THE COMMAND IN -A- TO MT.14 OTA CMND OUTPUT THE COMMAND. S.0 LIB CMND LOAD THE STATUS WORD. RBR,RBR SHIFT THE REJECT BIT TO 0. RBR,SLB WAS THE REQUEST REJECTED? JMP REJCT YES, ISSUE A CLEAR AND RETRY. MT.7 STC CMND,C INITIATE COMMAND EXECUTION. CCB,SEZ,CLE READ OR WRITE COMMAND? JMP CMANd<:6D,I YES, RETURN. JSB CFLAG GO WAIT FOR FUNCTION COMPLETION. JMP CMAND,I SPC 1 LOCAL HLT 44B JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP LOCAL NO, CONTINUE. LDA CLR LOAD THE CLEAR COMMAND. JSB CMAND GO EXECUTE THE CLEAR FUNCTION. LDA ABS LOAD THE COMMAND REQUEST CODE. JMP OK... SPC 1 REJCT LDB CLR LOAD THE CLEAR COMMAND CODE. O.B OTB CMND OUTPUT THE CLEAR COMMAND. MT.6 STC CMND,C INITIATE THE CLEAR COMMAND. MT.0 SFS CMND IS THE COMMAND COMPLETED? JMP MT.0 NO, WAIT. JMP MT.14 YES, GO RETRY THE REQUEST. SPC 2 EOTC NOP CHECK FOR EOT JSB STIN GET MT STATUS ALF,CLE,RAR SHIFT THE "EOT" BIT TO A0. SLA IS THE MT UNIT AT THE "EOT"? JMP EXIT1 JMP EOTC,I SKP * BEGIN "LOCAL STORAGE". SPC 1 A EQU 00000B B EQU 00001B SPC 1 DATA EQU 00B CMND EQU DATA+01B SPC 1 BUFL NOP BUFA NOP SPC 1 .7 OCT 000007 .3 OCT 000003 .15 OCT 15 CODE FOR 4 INCH TAPE GAPP .M3 DEC -3 .101 OCT 000101 .41 OCT 000041 .23 OCT 000023 DEC1 DEC 1 DEC2 DEC 2 .M1 OCT -1 SL1 OCT 002400 SELECT UNIT 1 SL2 OCT 004400 SELECT UNIT 2. SL3 OCT 010400 SELECT UNIT 3. CW1 OCT 20000 =B200XX XX=HIGH PRIORITY MT SC BIT15 OCT 100000 CLR OCT 000110 CLEAR COMMAND. RWO OCT 000105 REWIND/STANDBY COMMAND. GFM OCT 000215 GAP 4"; WRITE END-OF-FILE COMMAND. SFILE OCT 000200 SKIP-FILE COMMAND OFF-SET. SPC 1 * END OF "LOCAL STORAGE". SPC 2 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SPC 1 END <  12970-18003 1518 S 0146 SIO MAG TAPE DMA DRIVER 16K             H0101 lASMB,A,B,L,C HED *** 16K SIO HP7970B/7970E MT DRIVER(DMA REQUIRED) *** ORG 00106B DEF MTD-1 LAST WORD AVAILABLE MEMORY DEF MTD DRIVER ENTRY POINT SPC 2 ***** DRIVER INITIALIZATION SECTION ***** SPC 1 * PURPOSE OF THIS SECTION IS TO SET THE I/O * INSTRUCTIONS TO REFERENCE A DESIGNATED I/O * ADDRESS FOR THE 7970 MAG TAPE DRIVER. SPC 1 * EXECUTION OF THIS SECTION IS BEGUN AT LOCATION 2: SPC 1 * (2) JMP 3,I * (3) DEF I.MT SPC 1 * WITH SWITCHES 00-05 = I/O ADDRESS SPC 1 * THIS SECTION IS RELEASED AFTER THE INITIALIZATION * IS COMPLETED. SPC 1 ORG 00002B JMP 00003B,I SET STARTING DEF I.MT POINT IN 2 AND 3 SPC 2 KCORE EQU 30000B 16K MEMORY SIZE VERSION SPC 2 ORG KCORE+06000B SPC 1 * CONFIGURE I/0 INSTRUCTIONS SPC 1 CONFG HLT 00B SPC 1 SSW EQU 01B SENSE SWITCH REGISTER ADDRESS. I.MT LIA SSW GET DATA CHANNEL ADDRESS STA UNITS SAVE THE SWITCH OPTIONS. AND .77 STA B SAVE DATA CHANNEL ADDRESS IN B ADA M.10 "SUBTRACT": S.C. - 10B. SSA IS CHANNEL NUMBER < 10B? JMP CONFG YES, GO RESTART CONFIGURATION. ADA MAXCH "SUBTRACT": S.C. - 70B. SSA,RSS IS CHANNEL NUMBER > 67B? JMP CONFG YES, GO RESTART CONFIGURATION. SPC 1 LDA DMACW CONFIGURE DMA CW1 ADA B STA CW1 * LDA C4 CLC DATA INSTRUCTIONS ADA B STA MT.50 STA MT.13 SPC 1 LDA C12 STC DATA,C INSTRUCTIONS ADA B INCLUDE THE CHANNEL NUMBER. STA MT.11 STORE THE INSTRUCTION. SPC 1 LDA C13 CLF DATA INSTRUCTION. ADA B INCLUDE THE CHANNEL NUMBER. STA MT.12 STORE THE INSTRUCTION. SPC 1 LDA C6 LIA CMND INSTRUCTIONS ADA B STA S.1 SPC 1  LDA C7 LIB CMND INSTRUCTIONS ADA B STA S.0 SPC 1 LDA C9 SFS CMND INSTRUCTIONS ADA B STA MT.0 STA MT.8 SPC 1 LDA C10 OTA CMND INSTRUCTIONS ADA B STA MT.14 STA MT.1 SPC 1 LDA C11 STC CMND,C INSTRUCTIONS ADA B STA MT.7 STA MT.6 SPC 1 LDA C0 OTB CMND INSTRUCTION. ADA B STA O.B SPC 1 LDA C3 CLC CMND INSTRUCTION. ADA B STA MT.4 STA MT.16 SPC 1 LDA UNITS LOAD THE SWITCH OPTIONS. RAL,RAL SHIFT BIT 14 TO BIT 0. SLA,RAL IS MAXIMUM UNIT > 3? JMP CONFG YES, ERROR; RESTART. RAL SHIFT UNIT MAXIMUM TO 2-0. AND .3 ISOLATE THE MAXIMUM UNIT NUMBER. CPA .3 ARE THERE FOUR(4) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. LDB SL0 NO, LOAD THE SL0 COMMAND. STB SL3 SET UNIT 3 TO BE UNIT 0. CPA DEC2 ARE THERE THREE(3) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL2 NO, MAKE UNIT 2 EQU UNIT 0. CPA DEC1 ARE THERE TWO(2) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL1 NO, MAKE UNIT 1 EQU UNIT 0. SPC 1 STOP HLT 77B END OF DRIVER CONFIGURATION. SPC 1 LDA .SL1 LOAD THE SELECT UNIT 1 COMMAND. STA SL1 RESTORE THE COMMAND. LDA .SL2 LOAD THE SELECT UNIT 2 COMMAND. STA SL2 RESTORE THE COMMAND. LDA .SL3 LOAD THE SELECT UNIT 3 COMMAND. STA SL3 RESTORE THE COMMAND. JMP I.MT SPC 2 .77 OCT 77 M.10 OCT -10 MAXCH OCT -60 UNITS NOP .SL1 OCT 002400 SELECT UNIT 1 COMMAND. .SL2 OCT 004400 SELECT UNIT 2 COMMAND. .SL3 OCT 010400 SELECT UNIT 3 COMMAND. DMACW OCT 20000 SPC 1 * I/O INSTRUCTIONS SPC 1 C0 OTB CMND! C3 CLC CMND C4 CLC DATA C6 LIA CMND C7 LIB CMND C9 SFS CMND C10 OTA CMND C11 STC CMND,C C12 STC DATA,C C13 CLF DATA SPC 1 * END OF RELEASABLE INITIALIZATION SECTION SPC 1 I.P.L EQU 00445B DRIVER LENGTH. ORG KCORE+07135B-I.P.L SPC 1 * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SKP * CALLING SEQUENCE: (WRITE/READ) SPC 1 * LDA (>0=CHARS, <0=WORDS) * LDB * JSB 107B,I * OCT (0=READ, 1=WRITE) * * * (A)=RECORD LENGTH, (B)=STATUS SPC 1 * READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED * BY THE DRIVER TO THE NORMAL RETURN LOCATION * WITHOUT ANY TAPE MOVEMENT. SPC 1 * THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE * USER'S REQUEST LENGTH. THIS WORD IS NOT STORED * IN THE USER'S BUFFER BY A READ REQUEST, BUT IS * LEFT IN THE A REGISTER IN THE FORM WHICH THE * USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE * TAPE RECORD LENGTH IF THE TAPE RECORD < THE * BUFFER REQUEST LENGTH. SPC 2 * CALLIN @SEQUENCE: (REWIND/REWIND STANDBY/STATUS) SPC 1 * P JSB 107B,I * P+1 OCT (3=REWIND, 7=STATUS, * P+2 5=REWIND & STANDBY) SPC 2 * CALLING SEQUENCE: (GAP/WRITE END OF FILE) SPC 1 * P JSB 107B,I * P+1 OCT (6=GAP, 2=END OF FILE) * P+2 * P+3 * P+4 (B)=STATUS SPC 2 * CALLING SEQUENCE: (POSITION) SPC 1 * LDA (+=FORWARD, -=REVERSE) * LDB " " * JSB 107B,I * OCT 4 * * * (A)=FILE COUNT, (B)=STATUS SPC 1 * A BACKFILE L:EAVES THE TAPE POSITIONED ON THE SIDE OF * THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM * LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE * BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. SPC 1 * RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE * # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD. SPC 1 * COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL * CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. SPC 1 * END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED * BEFORE THE OPERATION IS INITIATED. SPC 2 * TAPE COMMANDS - SPC 1 * OCT 0 - READ * 1 - WRITE * 2 - WRITE END OF FILE * 3 - REWIND * 4 - POSITION * 5 - REWIND AND STANDBY * 6 - GAP (4" BLANK TAPE) * 7 - STATUS (RETURNS STATUS IN -B- ) SPC 2 * THE STATUS WORD BIT ASSIGNMENTS ARE: SPC 1 * BIT MEANING SPC 1 * 0 TAPE UNIT NOT ON-LINE * 1 PARITY AND/OR TIMING ERROR * 2 FILE PROTECTED (NO WRITE ENABLE RING) * 3 REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY * 2 BACKWARD MOTION REQ'D & AT LOAD POINT * 3 WRITE COMMAND GIVEN AND NO WRITE RING * 4 TIMING ERROR * 5 END OF TAPE * 6 START OF TAPE * 7 END OF FILE * 8 CONTROLLER BUSY * 9 TAPE UNIT NOT READY * 10 TAPE UNIT REWINDING * 11 ODD NUMBER OF BYTES READ SKP * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 MTD NOP ENTRY POINT. STA BUFL SAVE LENGTH AND STB BUFA ADDRESS OF BUFFER JSB STIN GO LOAD THE MT STATUS. SLA IS THE MT CONTROLLER BUSY? JMP S.1 YES, CONTINUE. MT.13 CLC DATA NO, CLEAR DATA CHANNEL CONTROL. MT.16 CLC CMND CLEAR COMMAND CHANNEL CONTROL. LDA MTD,I LOAD THE COMMAND CODE WORD. ALF SHIFT UNIT NUMBER TO BITS 2-0. AND .7 ISOLAT E THE UNIT NUMBER. STA SPACE SAVE UNIT NUMBER SZA,RSS SELECT UNIT 0? LDA SL0 YES, LOAD THE SELECT CODE. CPA DEC1 SELECT UNIT 1? LDA SL1 YES, LOAD THE SELECT CODE. CPA DEC2 SELECT UNIT 2? LDA SL2 YES, LOAD THE SELECT CODE. CPA .3 SELECT UNIT 3? LDA SL3 YES, LOAD THE SELECT CODE. CPA SPACE UNIT NUMBER > 3? JMP UNDEF YES, UNDEFINED UNIT. MT.1 OTA CMND OUTPUT THE UNIT SELECTION. LDA MTD,I LOAD THE OPERATION CODE. AND .7 USE THE LOWER 3 BITS ONLY. CPA .7 IS THE REQUEST FOR STATUS. JMP ERR.1 YES, RETURN; STATUS IS IN "B". STA ABS SAVE THE COMMAND REQUEST CODE. OK... CLE,SLB IS THE TAPE UNIT IN LOCAL MODE? JMP LOCAL YES, STOP 44B. ISZ MTD INCREMENT THE RETURN ADDRESS (P+2). ADA TBASE LOOK UP PROCESSOR IN TABLE JMP A,I CALL PROCESSOR SPC 1 TBASE DEF *+1,I COMMAND PROCESSOR ENTRY DEF READ POINT TABLE DEF WRITE DEF WEOF DEF REW DEF POS DEF RES DEF GAP SPC 1 RES LDA RWO LOAD THE REWIND/STANDBY COMMAND. CCE,RSS SKIP. REW LDA .101 REWIND ** CCE ENTER: E=1. JSB CMAND GO INITIATE COMMAND EXECUTION. JSB STIN GO LOAD THE MT UNIT STATUS. JMP EXIT1 SPC 1 UNDEF HLT 15B ILLEGAL UNIT NUMBER. JMP UNDEF IRRECOVERABLE ERROR. SPC 2 * TAPE POSITIONING ROUTINE SPC 1 * ENTER WITH COMMANDS STORED IN BUFL AND BUFA. SPC 1 POS LDB BUFL GET FILE COUNT LDA SFILE LOAD THE FILE CODE OFF-SET. JSB ABS SET FLAGS, COMMANDS AND COUNT JMP P.1 # FILES = 0, DO RECORDS P.5 CCA,SEZ,CCE,RSS ENTER: E=1; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE JMP P.5 REPE^,AT UNTIL FILE ISZ CNTR CHECK FOR FINISHED JMP P.5 NO, LOOP LDA BUFL RAL,CLE,SLA,ELA BACKFILE REQUEST? ISZ BUFA .31 SLA,ARS SKIP. JMP EXIT P.1 LDB BUFA PROCESS RECORDS CLA ENTER: A=0. JSB ABS SET FOR FWD/REV RECORD SPACING JMP EXIT NO RECORDS, EXIT P.0 CCA,SEZ,CLE,RSS ENTER: E=0; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE SL0 ALR SELECT UNIT 0 COMMAND. ISZ CNTR FINISHED? JMP P.0 NO, LOOP SPC 1 EXIT ISZ MTD JSB STIN GO LOAD THE MT STATUS. ERR.1 ISZ MTD EXIT1 LDA BUFL MT.4 CLC CMND CLEAR THE MT COMMAND CONTROL BIT. JMP MTD,I SPC 2 P.2 NOP ENTRY POINT. JSB STIN GET TAPE STATUS (BACKFILE) RAL SHIFT THE "SOT" BIT TO A15. SSA,RSS IS THE MT UNIT AT THE "SOT"? JMP P.2,I NO, RETURN. SEZ YES; FILE SKIPPING? ISZ CNTR CNT = -1? JMP EXIT1 NO, TRIED TO CROSS SOT, ERROR JMP P.1 YES, DO RECORD SPACING SPC 2 ABS NOP SET-UP ROUTINE SSB,RSS IS TAPE MOTION TO BE FORWARD? ADA .3 FORWARD SPACE COMMAND SSB IF # IS < 0 SET FOR ADA .41 BACKSPACE COMMAND STA WNEC CLE,SSB,RSS GET -ABS(#) FOR CNT CMB,CCE,INB,SZB IS THE MT TO BE MOVED? ISZ ABS YES, EXIT TO (P+2). STB CNTR JMP ABS,I SPC 2 SPACE NOP SPACE TAPE CLE,SSA IS TAPE MOTION BACKWARDS? JSB EOTC LDA WNEC JSB CMAND SPACE RAL,SLA END-OF-FILE (EOF) MARK? ISZ SPACE YES, SKIP EXIT. CCE,SSA IS THE MT UNIT AT "SOT"? JMP EXIT1 JMP SPACE,I SPC 2 STIN NOP GET TAPE STATUS S.1 LIA CMND LDB A LOAD THE MT UNIT STATUS. ALF,^ALF SHIFT THE MT UNIT STATUS 8 BITS. JMP STIN,I SPC 2 * WRITE 4" BLANK TAPE SPC 1 GAP JSB WNEC CHECK FOR WRITE RING IN JSB EOTC CHECK FOR END OF TAPE LDA .15 4 INCH TAPE GAP JSB CMAND JMP EXIT NORMAL EXIT SPC 2 * WRITE END OF FILE SPC 1 WEOFR LDA .41 LOAD: BACKSPACE RECORD COMMAND. JSB CMAND GO EXECUTE THE COMMAND. SPC 1 WEOF JSB WNEC CHECK FOR WRITE RING IN MT.12 CLF DATA CLEAR THE DATA CHANNEL FLAG. LDA GFM WRITE FILE MARK CODE JSB CMAND RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? JMP WEOFR YES, GO BACKSPACE OVER THE RECORD. JSB EOTC JMP EXIT SPC 2 WRITE JSB WNEC GO CHECK FOR A WRITE ENABLE RING. JSB EOTC GO CHECK FOR END-OF-TAPE. JSB CNTR GET NEG # WORDS STA WNEC SAVE WORD COUNT LDA .31 LOAD THE WRITE RECORD COMMAND. JSB CMAND GO INITIATE WRITE SEQUENCE. LDA BUFA BUFFER ADDRESS JSB BUFM1 SAVE POINTER TO & CONTENTS BUFF-1 JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA EOTC RESTORE WORD IN USERS PROGRAM STA P.2,I RBR,SLB DID A PARITY OR TIMING ERROR OCCUR? CLE,RSS YES, SKIP. JMP EXIT NORMAL EXIT LDA .41 BACKSPAC1 RECORD JSB CMAND LDA .15 4 INCH TAPE GAP JSB CMAND EXECUTE COMMAND JMP WRITE RETRY WRITE TILL TAPE END SPC 2 READ JSB EOTC READ *** LDA .M3 STA SPACE SET RETRY COUNTER TO -3. JSB CNTR GET NE,# OF WORDS STA WNEC NEG WORD XFER COUNT RERED LDA .23 READ CHARACTER CODE JSB CMAND INIT. READ RECORD SEQ. LDA BUFA USERS INPUT BUFFER - JSB BUFM1 ADA BIT15 DIR BIT FOR DMA READ JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA P.2,I RETREIVE RECORD LENGTH STA ABS LDB EOTC NOW RESTORE USERS PROGRAM STB P.2,I JSB STIN MT STATUS SSA WAS AN "EOF" READ? JMP EXIT1 YES, RETURN TO (P+2). RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? RSS YES, SKIP. JMP ENDR NO, DONE. ISZ SPACE HAVE WE TRIED 3 TIMES ? CLE,RSS NO JMP ERR.1 YES, EXIT TO ERROR ROUTINE LDA .41 BACKSPACE JSB CMAND JMP RERED TRY AGAIN SPC 1 * RECORD < BUFFER LENGTH, GET TAPE LENGTH IN USER'S BUFFER SPC 1 ENDR LDA ABS GET TAPE RECORD LENGTH LDB BUFL GET USER BUFFER LENGTH CLE,SSA IS ACTUAL LENGTH IN WORDS? JMP ENDR2 YES, GO CHECK READ REQUEST. CMA,INA NO, CONVERT TO - # OF CHARACTERS. CCE,SSB NO; WAS READ REQUEST IN WORDS? ARS YES, CONVERT CHARACTERS TO WORDS. ENDR2 SEZ,SSB,RSS WAS READ REQUEST IN CHARACTERS? ALS CMA,INA STA BUFL SAVE TAPE LENGTH FOR USER SSB,RSS IS USER LENGTH IN CHARACTERS? CMB,INB YES, COMPLEMENT USER REQUEST. ADA B "SUBTRACT": RECORD LENGTH - USER REQ.. CMB,INB MAKE THE USER REQUEST POSITIVE. SSA,RSS IS RECORD LENGTH > USER REQUEST? STB BUFL YES, STORE USER REQUEST LENGTH. JMP EXIT CONTINUE READ PROCESSING SPC 2 * DO A TEMP SAVE OF WORD IN USERS PROGRAM THAT IS AT * BUFFER ADDRESS - 1. THIS DONE BEFORE BOTH READ AND WRITE * OPERATIONS AND THEN THIS WORD IS RESTORED AFTER THE DMA XFER. * BUFM1 NOP ADA .M1 BACK BUFF POINTER BY ONE LDB A,I RETRIVE FROM USERS PROGRAM@ STA P.2 STB EOTC SAVE BOTH POINTER & CONTENTS JMP BUFM1,I EXIT SPC 2 CFLAG NOP ENTRY POINT. MT.8 SFS CMND IS THE FUNCTION COMPLETE? JMP MT.8 NO, CONTINUE. JSB STIN YES, GO LOAD THE UNIT STATUS. JMP CFLAG,I RETURN. SPC 2 CNTR NOP GET NEG # WORDS IN A LDA BUFL USER'S BUFFER LENGTH CCE,SSA WORDS OR CHARACTERS? JMP CNTR,I WORDS --- RETURN. CMA,INA,SZA,RSS COMPLEMENT; IS THE REQUEST = 0? JMP EXIT YES, GIVE A NORMAL COMPLETION RETURN. ARS JMP CNTR,I RETURN. SPC 2 WNEC NOP WRITE NOT ENABLED CHECK- JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP S.1 NO, CONTINUE. RBR,CLE,RBR SHIFT THE WRITE ENABLE RING BIT TO B0. SLB,RSS DOES THE MT HAVE A WRITE ENABLE RING? JMP WNEC,I EXIT WITH WRITE ENABLED HLT11 HLT 11B AND HALT JMP HLT11 PROTECT HALT. SPC 2 * CONFIGURE DMA INDMA NOP CLC 2 SETUP FOR CW2(BUFFER ADDRESS) OTA 2 CW2 LDA CW1 =B200XX XX=HIGH MT PRIORITY SC OTA 6 STC 2 LDA WNEC NEG OF # WORDS TO XFER STA P.2,I RECORD LENGTH FOR WRITE ADA .M1 ADD 1 TO ACCOUNT FOR REC LEN OTA 2 * INITIATE DMA READ/WRITE MT.11 STC DATA,C STC 6,C JSB CFLAG WAIT FOR DMA TO COMPLETE MT.50 CLC DATA STF 6 ROLL OVER DMA WORD COUNT JMP INDMA,I RETURN SPC 1 CMAND NOP ISSUE THE COMMAND IN -A- TO MT.14 OTA CMND OUTPUT THE COMMAND. S.0 LIB CMND LOAD THE STATUS WORD. RBR,RBR SHIFT THE REJECT BIT TO 0. RBR,SLB WAS THE REQUEST REJECTED? JMP REJCT YES, ISSUE A CLEAR AND RETRY. MT.7 STC CMND,C INITIATE COMMAND EXECUTION. CCB,SEZ,CLE READ OR WRITE COMMAND? JMP CM0f<:6AND,I YES, RETURN. JSB CFLAG GO WAIT FOR FUNCTION COMPLETION. JMP CMAND,I SPC 1 LOCAL HLT 44B JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP LOCAL NO, CONTINUE. LDA CLR LOAD THE CLEAR COMMAND. JSB CMAND GO EXECUTE THE CLEAR FUNCTION. LDA ABS LOAD THE COMMAND REQUEST CODE. JMP OK... SPC 1 REJCT LDB CLR LOAD THE CLEAR COMMAND CODE. O.B OTB CMND OUTPUT THE CLEAR COMMAND. MT.6 STC CMND,C INITIATE THE CLEAR COMMAND. MT.0 SFS CMND IS THE COMMAND COMPLETED? JMP MT.0 NO, WAIT. JMP MT.14 YES, GO RETRY THE REQUEST. SPC 2 EOTC NOP CHECK FOR EOT JSB STIN GET MT STATUS ALF,CLE,RAR SHIFT THE "EOT" BIT TO A0. SLA IS THE MT UNIT AT THE "EOT"? JMP EXIT1 JMP EOTC,I SKP * BEGIN "LOCAL STORAGE". SPC 1 A EQU 00000B B EQU 00001B SPC 1 DATA EQU 00B CMND EQU DATA+01B SPC 1 BUFL NOP BUFA NOP SPC 1 .7 OCT 000007 .3 OCT 000003 .15 OCT 15 CODE FOR 4 INCH TAPE GAPP .M3 DEC -3 .101 OCT 000101 .41 OCT 000041 .23 OCT 000023 DEC1 DEC 1 DEC2 DEC 2 .M1 OCT -1 SL1 OCT 002400 SELECT UNIT 1 SL2 OCT 004400 SELECT UNIT 2. SL3 OCT 010400 SELECT UNIT 3. CW1 OCT 20000 =B200XX XX=HIGH PRIORITY MT SC BIT15 OCT 100000 CLR OCT 000110 CLEAR COMMAND. RWO OCT 000105 REWIND/STANDBY COMMAND. GFM OCT 000215 GAP 4"; WRITE END-OF-FILE COMMAND. SFILE OCT 000200 SKIP-FILE COMMAND OFF-SET. SPC 1 * END OF "LOCAL STORAGE". SPC 2 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SPC 1 END <  12970-18004 1550 S 0146 SIO MAG TAPE DMA DRIVER 24K             H0101 bASMB,A,B,L,C HED *** 24K SIO HP7970B/7970E MT DRIVER(DMA DCPC REQUIRED) *** ORG 00106B DEF MTD-1 LAST WORD AVAILABLE MEMORY DEF MTD DRIVER ENTRY POINT SPC 2 ***** DRIVER INITIALIZATION SECTION ***** SPC 1 * PURPOSE OF THIS SECTION IS TO SET THE I/O * INSTRUCTIONS TO REFERENCE A DESIGNATED I/O * ADDRESS FOR THE 7970 MAG TAPE DRIVER. SPC 1 * EXECUTION OF THIS SECTION IS BEGUN AT LOCATION 2: SPC 1 * (2) JMP 3,I * (3) DEF I.MT SPC 1 * WITH SWITCHES 00-05 = I/O ADDRESS SPC 1 * THIS SECTION IS RELEASED AFTER THE INITIALIZATION * IS COMPLETED. SPC 1 ORG 00002B JMP 00003B,I SET STARTING DEF I.MT POINT IN 2 AND 3 SPC 2 KCORE EQU 50000B 24K MEMORY SIZE VERSION SPC 2 ORG KCORE+06000B SPC 1 * CONFIGURE I/0 INSTRUCTIONS SPC 1 CONFG HLT 00B SPC 1 SSW EQU 01B SENSE SWITCH REGISTER ADDRESS. I.MT LIA SSW GET DATA CHANNEL ADDRESS STA UNITS SAVE THE SWITCH OPTIONS. AND .77 STA B SAVE DATA CHANNEL ADDRESS IN B ADA M.10 "SUBTRACT": S.C. - 10B. SSA IS CHANNEL NUMBER < 10B? JMP CONFG YES, GO RESTART CONFIGURATION. ADA MAXCH "SUBTRACT": S.C. - 70B. SSA,RSS IS CHANNEL NUMBER > 67B? JMP CONFG YES, GO RESTART CONFIGURATION. SPC 1 LDA DMACW CONFIGURE DMA CW1 ADA B STA CW1 * LDA C4 CLC DATA INSTRUCTIONS ADA B STA MT.50 STA MT.13 SPC 1 LDA C12 STC DATA,C INSTRUCTIONS ADA B INCLUDE THE CHANNEL NUMBER. STA MT.11 STORE THE INSTRUCTION. SPC 1 LDA C13 CLF DATA INSTRUCTION. ADA B INCLUDE THE CHANNEL NUMBER. STA MT.12 STORE THE INSTRUCTION. SPC 1 LDA C6 LIA CMND INSTRUCTIONS ADA B STA S.1 SPC :1 LDA C7 LIB CMND INSTRUCTIONS ADA B STA S.0 SPC 1 LDA C9 SFS CMND INSTRUCTIONS ADA B STA MT.0 STA MT.8 SPC 1 LDA C10 OTA CMND INSTRUCTIONS ADA B STA MT.14 STA MT.1 SPC 1 LDA C11 STC CMND,C INSTRUCTIONS ADA B STA MT.7 STA MT.6 SPC 1 LDA C0 OTB CMND INSTRUCTION. ADA B STA O.B SPC 1 LDA C3 CLC CMND INSTRUCTION. ADA B STA MT.4 STA MT.16 SPC 1 LDA UNITS LOAD THE SWITCH OPTIONS. RAL,RAL SHIFT BIT 14 TO BIT 0. SLA,RAL IS MAXIMUM UNIT > 3? JMP CONFG YES, ERROR; RESTART. RAL SHIFT UNIT MAXIMUM TO 2-0. AND .3 ISOLATE THE MAXIMUM UNIT NUMBER. CPA .3 ARE THERE FOUR(4) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. LDB SL0 NO, LOAD THE SL0 COMMAND. STB SL3 SET UNIT 3 TO BE UNIT 0. CPA DEC2 ARE THERE THREE(3) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL2 NO, MAKE UNIT 2 EQU UNIT 0. CPA DEC1 ARE THERE TWO(2) MT UNITS? JMP STOP YES, TERMINATE CONFIGURATION. STB SL1 NO, MAKE UNIT 1 EQU UNIT 0. SPC 1 STOP HLT 77B END OF DRIVER CONFIGURATION. SPC 1 LDA .SL1 LOAD THE SELECT UNIT 1 COMMAND. STA SL1 RESTORE THE COMMAND. LDA .SL2 LOAD THE SELECT UNIT 2 COMMAND. STA SL2 RESTORE THE COMMAND. LDA .SL3 LOAD THE SELECT UNIT 3 COMMAND. STA SL3 RESTORE THE COMMAND. JMP I.MT SPC 2 .77 OCT 77 M.10 OCT -10 MAXCH OCT -60 UNITS NOP .SL1 OCT 002400 SELECT UNIT 1 COMMAND. .SL2 OCT 004400 SELECT UNIT 2 COMMAND. .SL3 OCT 010400 SELECT UNIT 3 COMMAND. DMACW OCT 20000 SPC 1 * I/O INSTRUCTIONS SPC 1 C0 OTB OCMND C3 CLC CMND C4 CLC DATA C6 LIA CMND C7 LIB CMND C9 SFS CMND C10 OTA CMND C11 STC CMND,C C12 STC DATA,C C13 CLF DATA SPC 1 * END OF RELEASABLE INITIALIZATION SECTION SPC 1 I.P.L EQU 00445B DRIVER LENGTH. ORG KCORE+07135B-I.P.L SPC 1 * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SKP * CALLING SEQUENCE: (WRITE/READ) SPC 1 * LDA (>0=CHARS, <0=WORDS) * LDB * JSB 107B,I * OCT (0=READ, 1=WRITE) * * * (A)=RECORD LENGTH, (B)=STATUS SPC 1 * READ AND WRITE REQUESTS OF 0 LENGTH ARE RETURNED * BY THE DRIVER TO THE NORMAL RETURN LOCATION * WITHOUT ANY TAPE MOVEMENT. SPC 1 * THE FIRST WORD OF 2 BYTES WRITTEN ON TAPE IS THE * USER'S REQUEST LENGTH. THIS WORD IS NOT STORED * IN THE USER'S BUFFER BY A READ REQUEST, BUT IS * LEFT IN THE A REGISTER IN THE FORM WHICH THE * USER SPECIFIED (+CHARACTERS OR -WORDS) AS THE * TAPE RECORD LENGTH IF THE TAPE RECORD < THE * BUFFER REQUEST LENGTH. SPC 2 * CALLING SEQUENCE: (REWIND / REWIND AND STANDBY / STATUS) SPC 1 * P JSB 107B,I * P+1 OCT (3=REWIND, 7=STATUS, * P+2 5=REWIND & STANDBY) SPC 2 * CALLING SEQUENCE: (GAP/WRITE END OF FILE) SPC 1 * P JSB 107B,I * P+1 OCT (6=GAP, 2=END OF FILE) * P+2 * P+3 * P+4 (B)=STATUS SPC 2 * CALLING SEQUENCE: (POSITION) SPC 1 * LDA (+=FORWARD, -=REVERSE) * LDB " " * JSB 107B,I * OCT 4 * * * (A)=FILE COUNT, (B)=STATUS SPC 1 * A BACKFILE LEAVES THE TAPE POSITIONED ON THE SIDE OF * THE N-TH FILE MARK (-N IN A FOR BACKFILE) AWAY FROM * LOAD POINT. THUS (A) = -2 LEAVES THE TAPE AT THE * BEGINNING OF THE FILE PRECEEDING THE CURRENT FILE. SPC 1 * RECORD OPERATIONS WILL MOVE THE TAPE THE APPROPRIATE * # OF RECORDS. THE FILE MARK IS COUNTED AS 1 RECORD. SPC 1 * COMMANDS TRYING TO CROSS THE SOT OR EOT MARKERS WILL * CAUSE AN EXIT TO THE END OF TAPE RETURN POINT. SPC 1 * END OF TAPE ON READ, WRITE OR GAP WILL BE CHECKED * BEFORE THE OPERATION IS INITIATED. SPC 2 * TAPE COMMANDS - SPC 1 * OCT 0 - READ * 1 - WRITE * 2 - WRITE END OF FILE * 3 - REWIND * 4 - POSITION * 5 - REWIND AND STANDBY * 6 - GAP (4" BLANK TAPE) * 7 - STATUS (RETURNS STATUS IN -B- ) SPC 2 * THE STATUS WORD BIT ASSIGNMENTS ARE: SPC 1 * BIT MEANING SPC 1 * 0 TAPE UNIT NOT ON-LINE * 1 PARITY AND/OR TIMING ERROR * 2 FILE PROTECTED (NO WRITE ENABLE RING) * 3 REJECT: 1 MOTION REQ'D AND CONTROLLER BUSY * 2 BACKWARD MOTION REQ'D & AT LOAD POINT * 3 WRITE COMMAND GIVEN AND NO WRITE RING * 4 TIMING ERROR * 5 END OF TAPE * 6 START OF TAPE * 7 END OF FILE * 8 CONTROLLER BUSY * 9 TAPE UNIT NOT READY * 10 TAPE UNIT REWINDING * 11 ODD NUMBER OF BYTES READ SKP * F.W.A. OF SIO MT DRIVER MUST BE > X6467B. SPC 1 MTD NOP ENTRY POINT. STA BUFL SAVE LENGTH AND STB BUFA ADDRESS OF BUFFER JSB STIN GO LOAD THE MT STATUS. SLA IS THE MT CONTROLLER BUSY? JMP S.1 YES, CONTINUE. MT.13 CLC DATA NO, CLEAR DATA CHANNEL CONTROL. MT.16 CLC CMND CLEAR COMMAND CHANNEL CONTROL. LDA MTD,I LOAD THE COMMAND CODE WORD. ALF SHIFT UNIT NUMBER TO BITS 2-0. AND .7 ISOLATE THE UNIT NUMBER. STA >USPACE SAVE UNIT NUMBER SZA,RSS SELECT UNIT 0? LDA SL0 YES, LOAD THE SELECT CODE. CPA DEC1 SELECT UNIT 1? LDA SL1 YES, LOAD THE SELECT CODE. CPA DEC2 SELECT UNIT 2? LDA SL2 YES, LOAD THE SELECT CODE. CPA .3 SELECT UNIT 3? LDA SL3 YES, LOAD THE SELECT CODE. CPA SPACE UNIT NUMBER > 3? JMP UNDEF YES, UNDEFINED UNIT. MT.1 OTA CMND OUTPUT THE UNIT SELECTION. LDA MTD,I LOAD THE OPERATION CODE. AND .7 USE THE LOWER 3 BITS ONLY. CPA .7 IS THE REQUEST FOR STATUS. JMP ERR.1 YES, RETURN; STATUS IS IN "B". STA ABS SAVE THE COMMAND REQUEST CODE. OK... CLE,SLB IS THE TAPE UNIT IN LOCAL MODE? JMP LOCAL YES, STOP 44B. ISZ MTD INCREMENT THE RETURN ADDRESS (P+2). ADA TBASE LOOK UP PROCESSOR IN TABLE JMP A,I CALL PROCESSOR SPC 1 TBASE DEF *+1,I COMMAND PROCESSOR ENTRY DEF READ POINT TABLE DEF WRITE DEF WEOF DEF REW DEF POS DEF RES DEF GAP SPC 1 RES LDA RWO LOAD THE REWIND/STANDBY COMMAND. CCE,RSS SKIP. REW LDA .101 REWIND ** CCE ENTER: E=1. JSB CMAND GO INITIATE COMMAND EXECUTION. JSB STIN GO LOAD THE MT UNIT STATUS. JMP EXIT1 SPC 1 UNDEF HLT 15B ILLEGAL UNIT NUMBER. JMP UNDEF IRRECOVERABLE ERROR. SPC 2 * TAPE POSITIONING ROUTINE SPC 1 * ENTER WITH COMMANDS STORED IN BUFL AND BUFA. SPC 1 POS LDB BUFL GET FILE COUNT LDA SFILE LOAD THE FILE CODE OFF-SET. JSB ABS SET FLAGS, COMMANDS AND COUNT JMP P.1 # FILES = 0, DO RECORDS P.5 CCA,SEZ,CCE,RSS ENTER: E=1; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE JMP P.5 REPEAT UNTIL FILE ISZ CNTR% CHECK FOR FINISHED JMP P.5 NO, LOOP LDA BUFL RAL,CLE,SLA,ELA BACKFILE REQUEST? ISZ BUFA .31 SLA,ARS SKIP. JMP EXIT P.1 LDB BUFA PROCESS RECORDS CLA ENTER: A=0. JSB ABS SET FOR FWD/REV RECORD SPACING JMP EXIT NO RECORDS, EXIT P.0 CCA,SEZ,CLE,RSS ENTER: E=0; BACKWARDS MOTION? JSB P.2 YES, GO CHECK FOR "BOT". JSB SPACE FORWARD SPACE SL0 ALR SELECT UNIT 0 COMMAND. ISZ CNTR FINISHED? JMP P.0 NO, LOOP SPC 1 EXIT ISZ MTD JSB STIN GO LOAD THE MT STATUS. ERR.1 ISZ MTD EXIT1 LDA BUFL MT.4 CLC CMND CLEAR THE MT COMMAND CONTROL BIT. JMP MTD,I SPC 2 P.2 NOP ENTRY POINT. JSB STIN GET TAPE STATUS (BACKFILE) RAL SHIFT THE "SOT" BIT TO A15. SSA,RSS IS THE MT UNIT AT THE "SOT"? JMP P.2,I NO, RETURN. SEZ YES; FILE SKIPPING? ISZ CNTR CNT = -1? JMP EXIT1 NO, TRIED TO CROSS SOT, ERROR JMP P.1 YES, DO RECORD SPACING SPC 2 ABS NOP SET-UP ROUTINE SSB,RSS IS TAPE MOTION TO BE FORWARD? ADA .3 FORWARD SPACE COMMAND SSB IF # IS < 0 SET FOR ADA .41 BACKSPACE COMMAND STA WNEC CLE,SSB,RSS GET -ABS(#) FOR CNT CMB,CCE,INB,SZB IS THE MT TO BE MOVED? ISZ ABS YES, EXIT TO (P+2). STB CNTR JMP ABS,I SPC 2 SPACE NOP SPACE TAPE CLE,SSA IS TAPE MOTION BACKWARDS? JSB EOTC LDA WNEC JSB CMAND SPACE RAL,SLA END-OF-FILE (EOF) MARK? ISZ SPACE YES, SKIP EXIT. CCE,SSA IS THE MT UNIT AT "SOT"? JMP EXIT1 JMP SPACE,I SPC 2 STIN NOP GET TAPE STATUS S.1 LIA CMND LDB A LOAD THE MT UNIT STATUS. ALF,ALF SHIFT THE MT UNIT STATUS 8 BITS. JMP STIN,I SPC 2 * WRITE 4" BLANK TAPE SPC 1 GAP JSB WNEC CHECK FOR WRITE RING IN JSB EOTC CHECK FOR END OF TAPE LDA .15 4 INCH TAPE GAP JSB CMAND JMP EXIT NORMAL EXIT SPC 2 * WRITE END OF FILE SPC 1 WEOFR LDA .41 LOAD: BACKSPACE RECORD COMMAND. JSB CMAND GO EXECUTE THE COMMAND. SPC 1 WEOF JSB WNEC CHECK FOR WRITE RING IN MT.12 CLF DATA CLEAR THE DATA CHANNEL FLAG. LDA GFM WRITE FILE MARK CODE JSB CMAND RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? JMP WEOFR YES, GO BACKSPACE OVER THE RECORD. JSB EOTC JMP EXIT SPC 2 WRITE JSB WNEC GO CHECK FOR A WRITE ENABLE RING. JSB EOTC GO CHECK FOR END-OF-TAPE. JSB CNTR GET NEG # WORDS STA WNEC SAVE WORD COUNT LDA .31 LOAD THE WRITE RECORD COMMAND. JSB CMAND GO INITIATE WRITE SEQUENCE. LDA BUFA BUFFER ADDRESS JSB BUFM1 SAVE POINTER TO & CONTENTS BUFF-1 JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA EOTC RESTORE WORD IN USERS PROGRAM STA P.2,I RBR,SLB DID A PARITY OR TIMING ERROR OCCUR? CLE,RSS YES, SKIP. JMP EXIT NORMAL EXIT LDA .41 BACKSPAC1 RECORD JSB CMAND LDA .15 4 INCH TAPE GAP JSB CMAND EXECUTE COMMAND JMP WRITE RETRY WRITE TILL TAPE END SPC 2 READ JSB EOTC READ *** LDA .M3 STA SPACE SET RETRY COUNTER TO -3. JSB CNTR GET NE,# OF WORDS STA WNEC NEG WORD XFER COUNT RERED LDA .23 READ CHARACTER CODE JSB CMAND INIT. READ RECORD SEQ. LDA BUFA USERS INPUT BUFFER JSB BUFM1 ADA BIT1Ϣ5 DIR BIT FOR DMA READ JSB INDMA EXECUTE DMA SEQUENCE * * 1. INITILIZE DMA CONTROL WORDS * 2. TURN ON DMA * 3. WAIT FOR DMA TO COMPLETE * LDA P.2,I RETREIVE RECORD LENGTH STA ABS LDB EOTC NOW RESTORE USERS PROGRAM STB P.2,I JSB STIN MT STATUS SSA WAS AN "EOF" READ? JMP EXIT1 YES, RETURN TO (P+2). RBR,SLB,RBL DID A PARITY OR TIMING ERROR OCCUR? RSS YES, SKIP. JMP ENDR NO, DONE. ISZ SPACE HAVE WE TRIED 3 TIMES ? CLE,RSS NO JMP ERR.1 YES, EXIT TO ERROR ROUTINE LDA .41 BACKSPACE JSB CMAND JMP RERED TRY AGAIN SPC 1 * RECORD < BUFFER LENGTH, GET TAPE LENGTH IN USER'S BUFFER SPC 1 ENDR LDA ABS GET TAPE RECORD LENGTH LDB BUFL GET USER BUFFER LENGTH CLE,SSA IS ACTUAL LENGTH IN WORDS? JMP ENDR2 YES, GO CHECK READ REQUEST. CMA,INA NO, CONVERT TO - # OF CHARACTERS. CCE,SSB NO; WAS READ REQUEST IN WORDS? ARS YES, CONVERT CHARACTERS TO WORDS. ENDR2 SEZ,SSB,RSS WAS READ REQUEST IN CHARACTERS? ALS CMA,INA STA BUFL SAVE TAPE LENGTH FOR USER SSB,RSS IS USER LENGTH IN CHARACTERS? CMB,INB YES, COMPLEMENT USER REQUEST. ADA B "SUBTRACT": RECORD LENGTH - USER REQ.. CMB,INB MAKE THE USER REQUEST POSITIVE. SSA,RSS IS RECORD LENGTH > USER REQUEST? STB BUFL YES, STORE USER REQUEST LENGTH. JMP EXIT CONTINUE READ PROCESSING SPC 2 * DO A TEMP SAVE OF WORD IN USERS PROGRAM THAT IS AT * BUFFER ADDRESS - 1. THIS DONE BEFORE BOTH READ AND WRITE * OPERATIONS AND THEN THIS WORD IS RESTORED AFTER THE DMA XFER. * BUFM1 NOP ADA .M1 BACK BUFF POINTER BY ONE LDB A,I RETRIVE FROM USERS PROGRAM STA P.2 STB EODTC SAVE BOTH POINTER & CONTENTS JMP BUFM1,I EXIT SPC 2 CFLAG NOP ENTRY POINT. MT.8 SFS CMND IS THE FUNCTION COMPLETE? JMP MT.8 NO, CONTINUE. JSB STIN YES, GO LOAD THE UNIT STATUS. JMP CFLAG,I RETURN. SPC 2 CNTR NOP GET NEG # WORDS IN A LDA BUFL USER'S BUFFER LENGTH CCE,SSA WORDS OR CHARACTERS? JMP CNTR,I WORDS --- RETURN. CMA,INA,SZA,RSS COMPLEMENT; IS THE REQUEST = 0? JMP EXIT YES, GIVE A NORMAL COMPLETION RETURN. ARS JMP CNTR,I RETURN. SPC 2 WNEC NOP WRITE NOT ENABLED CHECK- JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP S.1 NO, CONTINUE. RBR,CLE,RBR SHIFT THE WRITE ENABLE RING BIT TO B0. SLB,RSS DOES THE MT HAVE A WRITE ENABLE RING? JMP WNEC,I EXIT WITH WRITE ENABLED HLT11 HLT 11B AND HALT JMP HLT11 PROTECT HALT. SPC 2 * CONFIGURE DMA INDMA NOP CLC 2 SETUP FOR CW2(BUFFER ADDRESS) OTA 2 CW2 LDA CW1 =B200XX XX=HIGH MT PRIORITY SC OTA 6 STC 2 LDA WNEC NEG OF # WORDS TO XFER ADA .M1 ADD 1 TO ACCOUNT FOR REC LEN OTA 2 STA P.2,I RECORD LENGTH FOR WRITE * INITIATE DMA READ/WRITE MT.11 STC DATA,C STC 6,C JSB CFLAG WAIT FOR DMA TO COMPLETE MT.50 CLC DATA STF 6 ROLL OVER DMA WORD COUNT JMP INDMA,I RETURN SPC 1 CMAND NOP ISSUE THE COMMAND IN -A- TO MT.14 OTA CMND OUTPUT THE COMMAND. S.0 LIB CMND LOAD THE STATUS WORD. RBR,RBR SHIFT THE REJECT BIT TO 0. RBR,SLB WAS THE REQUEST REJECTED? JMP REJCT YES, ISSUE A CLEAR AND RETRY. MT.7 STC CMND,C INITIATE COMMAND EXECUTION. CCB,SEZ,CLE READ OR WRITE COMMAND? JMP CMAND,I YES, RETURN. JS<:6B CFLAG GO WAIT FOR FUNCTION COMPLETION. JMP CMAND,I SPC 1 LOCAL HLT 44B JSB STIN GO LOAD THE MT UNIT STATUS. RAR,SLA IS THE MT UNIT READY? JMP LOCAL NO, CONTINUE. LDA CLR LOAD THE CLEAR COMMAND. JSB CMAND GO EXECUTE THE CLEAR FUNCTION. LDA ABS LOAD THE COMMAND REQUEST CODE. JMP OK... SPC 1 REJCT LDB CLR LOAD THE CLEAR COMMAND CODE. O.B OTB CMND OUTPUT THE CLEAR COMMAND. MT.6 STC CMND,C INITIATE THE CLEAR COMMAND. MT.0 SFS CMND IS THE COMMAND COMPLETED? JMP MT.0 NO, WAIT. JMP MT.14 YES, GO RETRY THE REQUEST. SPC 2 EOTC NOP CHECK FOR EOT JSB STIN GET MT STATUS ALF,CLE,RAR SHIFT THE "EOT" BIT TO A0. SLA IS THE MT UNIT AT THE "EOT"? JMP EXIT1 JMP EOTC,I SKP * BEGIN "LOCAL STORAGE". SPC 1 A EQU 00000B B EQU 00001B SPC 1 DATA EQU 00B CMND EQU DATA+01B SPC 1 BUFL NOP BUFA NOP SPC 1 .7 OCT 000007 .3 OCT 000003 .15 OCT 15 CODE FOR 4 INCH TAPE GAPP .M3 DEC -3 .101 OCT 000101 .41 OCT 000041 .23 OCT 000023 DEC1 DEC 1 DEC2 DEC 2 .M1 OCT -1 SL1 OCT 002400 SELECT UNIT 1 SL2 OCT 004400 SELECT UNIT 2. SL3 OCT 010400 SELECT UNIT 3. CW1 OCT 20000 =B200XX XX=HIGH PRIORITY MT SC BIT15 OCT 100000 CLR OCT 000110 CLEAR COMMAND. RWO OCT 000105 REWIND/STANDBY COMMAND. GFM OCT 000215 GAP 4"; WRITE END-OF-FILE COMMAND. SFILE OCT 000200 SKIP-FILE COMMAND OFF-SET. SPC 1 * END OF "LOCAL STORAGE". SPC 2 * L.W.A. OF SIO MT DRIVER MUST BE < X7135B. SPC 1 END s<  12977-18001 1451 S 0122 21MX DOS III FFP SUBR LIBRARY             H0101 \ ASMBҬB HDPBAYҠMؠDS9Ԡ HSBAYNANSHŠNGUNS: DDNԠADSB.N DBŠ.PAKPҲ SNG̠.M.UN MPY..DM.PAK DV.GϠ.SP .Ҡ..MAP.P. SS HSBAYNABSPGAMSANGHŠSA VSNƠHSŠUNSϠUSŠHŠMAŠVSN DUNGUN. HŠ"SB"NSUN̠BŠHANGDNϠA"AM" NSUNHHŠAPPPAŠPD. NAMPM.A ND ASMBҬB NAMDDNԬ6 NԠDDN Ԡ$BҬ$Bج.ZB.P. DDNԠNP SB$B NP SB.ZB DƠDDN SB.P.GϠϠSU DƠDDN AMDDN DDNؠSB$B DƠDDN MPDDNԬ DDNUB ND ASMBҬB NAM..MAP6 NԠ..MAP Ԡ$BҬ$Bج.ZB.P. ..MAPNP SB$B NP SB.ZB DƠMAP SB.P.GϠϠSU DƠ..MAP AM.MAP MAPؠSB$B DƠ..MAP MP..MAP .MAPUB ND ASMBҬB NAMDBŬ6 NԠDB Ԡ$BҬ$Bج.ZB.P. DBŠNP SB$B NP SB.ZB DƠDB SB.P.GϠϠSU DƠDB AMDB DBؠSB$B DƠDB MPDBŬ DB̠U0B ND ASMBҬB NAMSNG̬6 NԠSNG Ԡ$BҬ$Bج.ZB.P. SNG̠NP SB$B NP SB.ZB DƠSNG SB.P.GϠϠSU DƠSNG AMSNG SNGؠSB$B DƠSNG MPSNG̬ SNGU0B ND ASMBҬB NAMADSB6 NԠADD.ADDSUB.SUB Ԡ$BҬ$Bج.ZB.P. ADDNP SB$B NP SB.ZB DƠAD bSB.P.GϠϠSU DƠADD AMADD ADؠSB$B DƠADD MPADD .ADDNP SB$B NP SB.ZB DƠ.AD SB.P.GϠϠSU DƠ.ADD AMADD .ADؠSB$B DƠ.ADD MP.ADD SUBNP SB$B NP SB.ZB DƠSB SB.P.GϠϠSU DƠSUB AMSUB SBؠSB$B DƠSUB MPSUB .SUBNP SB$B NP SB.ZB DƠ.SB SB.P.GϠϠSU DƠ.SUB AMSUB .SBؠSB$B DƠ.SUB MP.SUB ADDU0B ADDؠU3B SUBU0B SUBؠUB ND ASMBҬB NAMMPY6 NԠMPY.MPY Ԡ$BҬ$Bج.ZB.P. MPYNP SB$B NP SB.ZB DƠMP SB.P.GϠϠSU DƠMPY AMMP MPؠSB$B DƠMPY MPMPY .MPYNP SB$B NP SB.ZB DƠ.MP SB.P.GϠϠSU DƠ.MPY AMMU .MPؠSB$B DƠ.MPY MP.MPY MPUB MU̠U03B ND ASMBҬB NAMDV6 NԠDV.DV Ԡ$BҬ$Bج.ZB.P. DVNP SB$B NP SB.ZB DƠDV SB.P.GϠϠSU DƠDV AMDV DVؠSB$B DƠDV MPDV .DVNP SB$B NP SB.ZB DƠ.DV SB.P.GϠϠSU DƠ.DV AMDVD .DVؠSB$B DƠ.DV MP.DV DVUB DVDU0B ND ASMBҬB NAM..DM6 NԠ..DM Ԡ$BҬ$Bج.ZB.P. ..DMNP SB$B NP SB.ZFB DƠ.DM SB.P.GϠϠSU DƠ..DM AMDM .DMؠSB$B DƠ..DM MP..DM DMU6B ND ASMBҬB NAM.PAK6 NԠ.PAK Ԡ$BҬ$Bج.ZB.P. .PAKNP SB$B NP SB.ZB DƠ.PK SB.P.GϠϠSU DƠ.PAK AMPAK .PKؠSB$B DƠ.PAK MP.PAK PAKU06B ND ASMBҬB NAM.M6 NԠ.M Ԡ$BҬ$Bج.ZB.P. .MNP SB$B NP SB.ZB DƠ.M SB.P.GϠϠSU DƠ.M AMM .MؠSB$B DƠ.M MP.M MU5B ND ASMBҬB NAM.Ҭ6 NԠ.Ҭ.D Ԡ$BҬ$Bج.ZB.P. .ҠNP SB$B NP SB.ZB DƠ SB.P.GϠϠSU DƠ. AM ؠSB$B DƠ. MP.Ҭ .DҠNP SB$B NP SB.ZB DƠD SB.P.GϠϠSU DƠ.D AMD DؠSB$B DƠ.D MP.DҬ ҠU0B DҠU05B ND ASMBҬB̬ NAMSS60000000 NԠSN NԠS Ԡ..M Ԡ.HB.NԬ.PҲA Ԡ$BҬ$B HSUNŠSMPMNDNHŠMؠPSUBҠB BAUSŠSUNҠPAԠNHŠàBAYNANS ANGA̠A̠Ϡ.PҲ HSAUSSHŠGNANƠANNԠSUԠ HŠ.PҲMDŠSUSD A̠MŠUVŠ-NANԠBAYUN A.. DDؠ(ANGADANS SBS(SUԠANG (ҠUN (NMA̠UN AUASSN(ة-SN(-Pɯ. SNP SB$B[ DƠDB SAMP ANA SAAGSԠSAG DAMPSŠA-G ADMP MPSN0 MPDà-.509633-Pɯ A.. DDؠ(ANGADANS (ҠUN (NMA̠UN AUAŠSN(ة. SNNP SB$B DƠDB SAMPSAVŠA-G A SAAGSԠSNAG DAMPSŠAGS SN0MPP SA SB+ؽدP ADK SB.PҲ DƠDM SB.N MPA̠ҠƠP(ة5 SBA MPM AD SA SB+ؽؽN((+ SBK SSA 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS * ZCONA JSB PNTST,I TEST FOR CFER -- CONFIGURE STDA * lu HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * PNTST DEF CNTST * ************************************************************************TAB 010 * TAB 020 * HP 21MX FAST FORTRAN PROCESSOR DIAGNOSTIC PROGRAM #1 * TAB 040 ************************************************************************TAB 050 * TAB 060 HED HP 21MX FFP DIAGNOSTIC BRANCH TABLE. ***** ***** TAB 350 * HP 21MX FFP DIAGNOSTIC BRANCH TABLE. * TAB 350 ***** ***** TAB 360 TSTD EQU * TAB 370 DEF TST12 ..MAP (SET BIT 0) DEF TST13 SNGL (SET BIT 1) DEF TST14 DBLE (SET BIT 2) DEF TST15 .DFER (SET BIT 3) DEF TST16 .XFER (SET BIT 4) DEF TST17 PWR2 (SET BIT 5) DEF TST18 .PACK (SET BIT 6) DEF TST19 FLUN (SET BIT 7) DEF TST20 .XPAK (SET BIT 8) DEF TST21 .XCOM (SET BIT 9) DEF TST22 ..DCM (SET BIT 10) DEF TST23 DDINT (SET BIT 11) DEF TST24 .CFER (SET BIT 12) OCT 177777 END OF TSTD MARKER * HDMS ASC 15,START 21MX FFP DIAGNOSTIC 1/ * IOID EQU * DEF STCSC DEF STFSC DEF CLCSC DEF INTSC DEC -1 HED TEST TABLE FOR PWR2 TESTS. ***** ****** TAB 070 * TEST TABLE FOR PWR2 TESTS. * TAB 080 ***** ****** TAB 090 TST1 DEC -3 NUMBER OF TEST VALUES IN THE TABLE TAB 100 TST10 EQU * TABLE ENTRY ADDRESS TAB 110 OCT 1 POWER OF 2 = N TAB 120 OCT 177776 *TEST VALUE #1 - LO MANTISSA+EXPONENT TAB 130 OCT 177400 RESULT #1 - EXPONENT OVERFLOWED TAB 140 DEC -1 POWER OF 2 = N TAB 150 OCT 177403 *TEST VALUE #2 - LO MANTISSA+EXPONENT TAB 160 OCT 177401 RESULT # 2 - EXPONENT UNDERFLOWED TAB 170 OCT 5 POWER OF 2 = N TAB 180 OCT 177476 *TEST VALUE # 3 - LO MANTISSA+EXPONENT TAB 190 OCT 177510 RESULT #3 - NORMAL TAB 200 HED TEST # 17 - PWR2 TESTS. ***** ***** PWR2 010 * TEST # 17 - PWR2 TESTS. * ***** ***** PWR2 030 TST17 EQU * NOP PWR2 050 JSB MSGC,I OUTPUT HEADER MESSAGE DEF MMS14 LDA TST1 OBTAIN LOOP COUNT PWR2 060 STA CNTR SET UP TEST LOOP COUNTER PWR2 070 LDA TSTA1 LOAD TEST TABLE POINTER PWR2 080 STA N INITIALIZE N PWR2 090 INA PWR2 100 STA LME1 PWR2 110 RPT1 LDB N PWR2 120 STB PARM1 ESTABLISH PARAMETER ADDRESS LDA LME1 TEST VALUE TABLE POINTER PWR2 140 LDB 0,I OBTAIN LO MANTISSA+EXP PWR2 150 INA ADVANCE TEST VALUE TAB@LE POINTER PWR2 180 STA LME1 PWR2 190 RAM PWR2 CALL TO PWR2 MICRO-ROUTINE PWR2 160 PARM1 NOP PARAMETER ADDRESS OF N STA XBUF SAVE ACTUAL VALUE PART 1 STB XBUF+1 SAVE ACTUAL VALUE PART 2 CPB LME1,I VERIFY RETURNED RESULTS PWR2 200 JMP ARD1 VERIFIED CORRECTLY PWR2 210 LDA 1 OBTAIN ACTUAL RESULT JSB ASCII,I CONVERT VALUE TO ASCII DEF ACTUL+5 LDB ACT5 STB *-2 RESTORES VALUE BUFFER POINTER LDA LME1,I OBTAIN EXPECTED VALUE JSB ASCII,I DEF EXPCT+5 LDB EXP5 STB *-2 CLA LOAD ACTUAL VALUE LDB XBUF+1 WORDS 1 AND 2 JSB ERMS,I DEF ERM14 ERROR MESSAGE BUFFER POINTER CLA LDB LME1,I EXPECTED VALUES JSB XINV2,I DISPLAY EXPECTED VALUES IN REG. A & B JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD1 ISZ CNTR CHECK FOR EXIT CONDITION PWR2 300 JMP *+2 NOT EQUAL TO ZERO YET - SKIP AROUND PWR2 310 JMP EXT13 LDA LME1 OBTAIN EXPECTED VALUE POINTER INA POINT TO NEXT N PWR2 330 STA N N PWR2 340 INA ADJUST TABLE POINTER PWR2 350 STA LME1 POINT TO NEXT TEST VALUE PWR2 360 JMP RPT1 LOOP BACK PWR2 370 EXT13 JMP TST17,I RETURN ERM14 ASC 11,E230 PWR2 DATA ERROR/ MMS14 ASC 8,H230 PWR2 TEST/ TSTA1 DEF TST10 TABLE POINTER N BSS 1 POWER OF 2'S TEMPORARY STORAGE LME1 BSS 1 RESULT POINTER HED TEST TABLE FOR .PACK TESTS. ***** ***** #B@< TAB 320 * TEST TABLE FOR .PACK TESTS. * TAB 330 ***** ***** TAB 340 TST3 DEC -2 NUMBER OF TEST VALUES IN TABLE TST30 EQU * TABLE ENTRY ADDRESS TAB 360 OCT 077777 *TEST VALUE #1 - HI MANTISSA TAB 370 OCT 177777 - LO MANTISSA TAB 380 OCT 177777 - EXPONENT (NEG) TAB 390 OCT 040000 RESULT #1 - HI MANTISSA OCT 0 - LO MANTISSA+EXP OCT 077777 *TEST VALUE #2 - HI MANTISSA TAB 420 OCT 177252 - LO MANTISSA TAB 430 OCT 000125 - EXPONENT(POS) TAB 440 OCT 077777 RESULT #2 - HI MANTISSA TAB 450 imB  12977-18008 1822 S C0122 FFP DIAG 21MX #1              H0101  OCT 177652 LO MANTISSA+EXP OCT 077777 *TEST VALUE #3 - HI MANTISSA TAB 470 OCT 177400 - LO MANTISSA TAB 480 OCT 033333 - EXPONENT TAB 490 OCT 077777 RESULT #3 - HI MANTISSA TAB 500 OCT 177733 - LO MANTISSA+RES. EXP TAB 510 HED TEST # 18 - .PACK TESTS. ***** ***** .PACK010 * TEST # 18 - .PACK TESTS. * ***** ***** .PACK030 TST18 EQU * NOP RETURN ADDRESS .PACK050 JSB MSGC,I OUTPUT TEST HEADER MESSAGE DEF MMS15 LDA TST3 OBTAIN LOOP COUNT .PACK060 STA CNTR SET UP LOOP COUNTER .PACK070 LDA TSTA2 OBTAIN TABLE POINTER .PACK080 RPT2 STA TST31 RUNNING TABLE POINTER .PACK090 ADA .+2 LDB 0,I OBTAIN THE EXPONENT .PACK110 STB PACK1 SET UP THE PARAMETER(EXP) ADA .+2 STA TST32 .PACK140 DLD TST31,I LOAD THE TEST VALUE(NO EXPONENT) .PACK150 RAM .PACK CALL TO .PACK MICRO-ROUTINE PACK1 BSS 1 EXPONENT PARAMETER STA XBUF SAVE ACTUAL VALUE PART 1 STB XBUF+1 SAVE ACTUAL VALUE PART 2 LDA TST32 ADA .-1 LDA A,I GET EXPECTED HI MANTISSA CPA XBUF VERIFY HI MANTISSA JMP PACK3 OK! LDA XBUF ERROR. RESTORE (A) JMP PACK2 GO TO ERROR ROUTINE. * PACK3 CPB TST32,I VERIFY ACT. LO MANT.+EXP. JMP ARD2 EQUAL CONDITION- RESULT VERIFIED E.PACK190 * * OUTPUT ACTUAL AND EXPECTED RESULTS * * CONVERT ACTUAL VALUE TO ASCII. PACK2 JSB ASCII,I CONVERT HI MANTISSA TO ASCII DEF ACTUL+5 CPB 0 SWITCHING POINT JMP *+3 LDA XBUF+1 JMP *-5 EXPONENT TO ASCII LDB ACT5 STB *-6 * CONVERT EXPECTED VALUE TO ASCII. LDB TST32,I ACTUAL LO MANTISSA + EXP LDA TST32 POINTER TO LO MANTISSA+EXP ADA .-1 PTR POINTS TO HI MANT. LDA 0,I OBTAIN HI MANTISSA JSB ASCII,I CONVERT HI MANTISSA TO ASCII DEF EXPCT+5 CPB 0 SWITCHING POINT JMP *+3 LDA 1 PREPARE LO MANTISSA + EXP JMP *-5 FOR ASCII CONVERSION LDB EXP5 STB *-6 DLD XBUF LOAD ACTUAL VALUES JSB ERMS,I OUTPUT ERROR MESSAGE DEF ERM15 ERROR MESSAGE BUFFER POINTER LDA TST32 ADA .-1 DLD 0,I LOAD EXPECTED VALUES JSB XINV2,I DISPLAY EXPECTED VALUES IN REG. A & B JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD2 ISZ CNTR CHECK EXIT CONDITION .PACK JMP ARD20 JUMP AROUND EXT14 JMP TST18,I RETURN ARD20 LDA TST32 OBTAIN RESULT POINTER INA UPDATE THE POINTER .PACK320 JMP RPT2 LOOP BACK .PACK330 MMS15 ASC 8,H240 .PACK TEST/ ERM15 ASC 12,E240 .PACK DATA ERROR/ TST31 BSS 1 TST32 BSS 1 TSTA2 DEF TST30 HED TEST TABLE FOR FLUN TESTS. ***** ***** TAB 210 * TEST TABLE FOR FLUN TESTS. * TAB 220 ***** ***** TAB 230 TST2 DEC -2 NUMBER OF TEST VALUES IN THE TABLE TAB 240 TST2A EQU * TABLE ENTRY ADDRESS OCT 177777 *TEST VALUE #1 - LO MANTISSA+EXPONENT TAB 260 G? OCT 177400 UNPACKED LO MANTISSA TAB 270 OCT 177777 UNPACKED EXPONENT(NEGATIVE) TAB 280 OCT 177776 *TEST VALUE #2 - LO MANTISSA+EXPONENT TAB 290 OCT 177400 UNPACKED MANTISSA TAB 300 OCT 000177 UNPACKED EXPONENT(POSITIVE) TAB 310 HED TEST # 19 - FLUN TESTS. ***** ***** FLUN 010 * TEST # 19 - FLUN TESTS. * ***** ***** FLUN 030 TST19 EQU * NOP RETURN ADDRESS FLUN 050 JSB MSGC,I OUTPUT TEST HEARDER MESSAGE DEF MMS16 LDA TSTA3 ACCESS TABLE POINTER FLUN 060 LDB TST2 OBTAIN TEST VALUE LOOP COUNT FLUN 070 STB CNTR SET UP LOOP COUNTER FLUN 080 RPT3 LDB 0,I LO MANTISSA+EXPONENT IN REGISTER B FLUN 100 INA ADJUST POINTER - POINT TO UNPACKED RESULT FLUN 110 STA TST2B SAVE ADJUSTED POINTER RAM FLUN CALL TO FLUN MICRO-ROUTINE FLUN 130 STA XBUF SAVE ACTUAL VALUE PART 1 STB XBUF+1 SAVE ACTUAL VALUE PART 2 CPB TST2B,I VERIFY UNPACKED LO MANTISSA JMP *+2 VERIFIED CORRECTLY(EQUAL) FLUN 150 JMP ERR15 JUMP TO ERROR ROUTINE(NOT EQUAL) FLUN 160 LDB TST2B OBTAIN TABLE POINTER-RESULT PTR. INB ADJUST POINTER - POINT TO UNPACKED EXPONENT FLUN 180 CPA 1,I VERIFY UNPACKED EXPONENT FLUN 190 JMP ARD3 VERIFIED CORRECTLY(EQUAL) LDB XBUF+1 RELOAD ACTUAL LO MANT. ERR15 STA TEMP LDA B LDB TEMP JSB ASCII,I CONVERT TO ASCII y DEF ACTUL+5 ASCII CPB 0 SWITCH POINT JMP *+3 LDA 1 CONVERT ACTUAL LO MANTISSA +EXP JMP *-5 TO ASCII LDB ACT5 STB *-6 LDB TST2B LDA B,I INB LDB B,I CONVERT EXPECTED LO MANT. JSB ASCII,I MANTISSA TO ASCII DEF EXPCT+5 CPB 0 SWITCH POINT JMP *+3 LDA 1 JMP *-5 LDB EXP5 STB *-6 DLD XBUF LOAD ACTUAL VAL.- WORDS 1 & 2 JSB ERMS,I OUTPUT ERROR MESSAGE DEF ERM16 LDA TST2B ADA .-1 DLD 0,I LOAD EXPECTED VALUES JSB XINV2,I DISPLAY EXPECTED VALUES IN REG. A & B JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD3 ISZ CNTR CHECK EXIT CONDITION JMP ARD30 SKIP AROUND EXT15 JMP TST19,I RETURN ARD30 LDA TST2B OBTAIN CURRENT TABLE POINTER ADA .+2 JMP RPT3 FLUN 330 ERM16 ASC 11,E250 FLUN DATA ERROR/ MMS16 ASC 8,H250 FLUN TEST/ TSTA3 DEF TST2A TST2B BSS 1 HED TEST TABLE FOR .XPAK TESTS. ***** ***** TAB 520 * TEST TABLE FOR .XPAK TESTS. * TAB 530 ***** ***** TAB 540 TST4 DEC -4 NUMBER OF TEST VALUES IN THE TABLE TAB 550 TST40 EQU * TABLE ENTRY ADDRESS TAB 560 OCT 000376 *TEST VALUE #1 - EXPONENT(POS) TAB 570 OCT 070707 - HI MANTISSA TAB 580 OCT 107070 - MID MANTISSA TAB 590 OCT 070400 - LO MANTISSA TAB 600 OCT 077777 RESULT #1 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177776 - LOW MANTISSA + EXP OCT 1776p53 *TEST VALUE #2 - EXPONENT(NEG) TAB 640 OCT 070707 - HI MANTISSA TAB 650 OCT 107070 - MID MANTISSA TAB 660 OCT 070400 - LO MANTISSA+EXP TAB 670 OCT 070707 RESULT #2 - HI MANTISSA TAB 680 OCT 107070 MID MANTISSA TAB 690 OCT 070527 - LO MANTISSA+EXP TAB 700 OCT 000146 *TEST VALUE #3 - EXPONENT TAB 710 OCT 070707 - HI MANTISSA TAB 720 OCT 107070 - MID MANTISSA TAB 730 OCT 070400 - LO MANTISSA TAB 740 OCT 070707 RESULT #3 - HI MANTISSA TAB 750 OCT 107070 MID MANTISSA TAB 760 OCT 070714 - LO MANTISSA+EXP TAB 770 OCT 000777 *TEST VALUE #4 - EXPONENT TAB 780 OCT 070707 - HI MANTISSA TAB 790 OCT 107070 - MID MANTISSA TAB 800 OCT 070400 - LO MANTISSA TAB 810 OCT 077777 RESULT #4 - HI MANTISSA OCT 177777 - MID MANTISSA OCT 177776 LOW MANTISSA + EXP HED TEST # 20 - .XPAK TESTS. ***** ***** .XPAK 10 * TEST # 20 - .XPAK TESTS. * ***** ***** .XPAK 40 TST20 EQU * NOP RETURN ADDRESS .XPAK 50 JSB MSGC,I OUTPUT TEST HEADER MESSAGE DEF MMS17 LDA TSTA4 LV .XPAK 60 STA TST41 ESTABLISH A RUNNING POINTER .XPAK 70 LDB TST4 OBTAIN LOOP COUNT .XPAK 80 STB CNTR ESTABLISH A LOOP COUNTER .XPAK 90 RPT4 INA BUMP POINTER .XPAK100 STA TEMP JSB XCOPY,I JUMP TO MOVE DATA WORD ROUTINE DEF TEMP DEF XBUF DESTINATION COPY ADDRESS OCT 3 WORD COUNT ADA .+3 STA TST42 SET UP ADDRESS OF RESULT IN TST4 LDA TST41,I OBTAIN EXPONENT OF TEST VALUE .XPAK150 RAM .XPAK CALL .XPAK MICRO-ROUTINE .XPAK160 DEF XBUF ADDRESS PARAMETER OF TEST VALUE JSB COMP,I JUMP TO VALUE COMPARISON ROUTINE DEF ERR16 ERROR RETURN ADDRESS DEF TST42 SOURCE COMPARE POINTER DEF XBUF DESTINATION COMPARE ADDRESS OCT 3 WORD COUNT JMP ARD4 OK - SKIP AROUND ERR16 LDA .-3 STA XBUF+3 SET UP A LOOP COUNTER LDB XBUFR OBTAIN ACTUAL RESULT AREA ADDRESS LDA 1,I OBTAIN ACTUAL VALUE JSB ASCII,I CONVERT ACTUAL VALUE TO ASCII DEF ACTUL+5 INB ISZ XBUF+3 DECREMENT LOOP COUNT & CHECK FOR JMP *-5 EXIT CONDITION LDB ACT5 STB *-5 LDA .-3 STA XBUF+3 LDB TST42 ADDRESS OF EXPECTED VALUE AREA LDA 1,I EXPECTED VALUE JSB ASCII,I CONVERT EXPECTED VALUE TO ASCII DEF EXPCT+5 INB ISZ XBUF+3 DECREMENT LOOP COUNT & CHECK FOR JMP *-5 EXIT CONDITION LDB EXP5 STB *-5 DLD XBUF LOAD ACTUAL VALUE- WORDS 1 & 2 JSB ERMS,I OUTPUT ERROR MESSAGE DEF ERM17 JSB SHLTC,I SET HALT CODE LDA XBUF+2 LOAD ACTUAL VAL. - WORD 3 CLB JSB XINV2,I DISPLAY ACTUAL VAL-WORD 3 JSB RHLTC,I REǀSTORE HALT CODE JSB XINV3,I REGISTER DISPLAY OF EXPECTED VALUES DEF TST42,I JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD4 ISZ CNTR CHECK FOR EXIT CONDITION JMP *+2 SKIP AROUND EXT16 JMP TST20,I RETURN LDA TST42 .XPAK480 ADA .+3 MOVE TST42 TO NEXT SET OF TEST VALUE STA TST41 UPDATE THE VALUE POINTER .XPAK500 JMP RPT4 LOOP BACK .XPAK510 ERM17 ASC 12,E260 .XPAK DATA ERROR/ MMS17 ASC 8,H260 .XPAK TEST/ TSTA4 DEF TST40 TST41 BSS 1 TST42 BSS 1 LABLC EQU * ORG 170B ADJ BSS 1 XBUF BSS 4 XBUFR DEF XBUF ORG LABLC HED TEST TABLE FOR .XCOM TESTS. ***** ***** TAB 080 * TEST TABLE FOR .XCOM TESTS. * TAB 090 ***** ***** TAB 100 TST6 DEC -3 NUMBER OF TEST VALUES IN THE TABLE TAB 110 TST60 EQU * TABLE ENTRY ADDRESS TAB 120 OCT 052525 *TEST VALUE #1 - HI MANTISSA TAB 130 OCT 052525 - MID MANTISSA TAB 140 OCT 052400 - LO MANTISSA(NO EXPONENT) TAB 150 OCT 000000 RESULT #1 - ADJUSTMENT TO EXPONENT TAB 160 OCT 125252 - HI MANTISSA TAB 170 OCT 125252 - MID MANTISSA TAB 180 OCT 125400 - LO MANTISSA TAB 190 OCT 177777 *TEST VALUE #2 - HI MANTISSA TAB 200 OCT 177777 - MID MANTISSA TAB 210 OCT 177400 - LO MANTISSA(NO EXOPNENT) TAB 220 OCT 00k>0000 RESULT #2 - ADJUSTMENT TO EXPONENT TAB 230 OCT 000000 - HI MANTISSA TAB 240 OCT 000000 - MID MANTISSA TAB 250 OCT 000400 LO MANTISSS TAB 260 OCT 000000 *TEST VALUE #3 - HI MANTISSA TAB 270 OCT 000000 - MID MANTISSA TAB 280 OCT 000000 - LO MANTISSA TAB 290 OCT 000000 RESULT #3 - ADJUSTMENT TO EXP OCT 000000 - HI MANTISSA TAB 310 OCT 000000 - MID MANTISSA TAB 320 OCT 000000 - LO MANTISSA TAB 330 HED TEST #21 - .XCOM TESTS. ***** ***** .XCOM 10 * TEST # 21 - .XCOM TESTS. ***** ***** .XCOM 30 TST21 NOP JSB MSGC,I OUTPUT TEST HEADER MESSAGE DEF MMS18 LDA TST6 OBTAIN LOOP COUNT .XCOM 50 STA CNTR SET UP THE LOOP COUNTER LDA TSTA5 OBTAIN ADDRESS OF TABLE ENTRY RPT5 STA TST61 SET UP ADDRESS PARAMETER ADA .+3 STA TST62 POINTER TO RESULT .XCOM110 JSB XCOPY,I JUMP TO MOVE DATA ROUTINE DEF TST61 SOURCE COPY ADDRESS DEF XBUF DESTINATION COPY ADDRESS OCT 3 RAM .XCOM CALL TO .XCOM MICRO-ROUTINE .XCOM120 DEF XBUF ADDRESS PARAMETER STA ADJ SAVE RETURNED ADJUSTMENT TO EXP JSB COMP,I JUMP TO COMPARISON ROUTINE DEF ERR17 ERROR RETURN ADDRESS DEF TST62 SOURCE COMPARE POINTER DEF ADJ DESTINATION COMPARE ADDRESS OCT 4 WORD COUNT JMP ARD5 ERR17 JSB CNVRT,I DEF ADJ DEF TST62 OCT 4 LDA ADJ EXPONENT ADJUSTMENT LDB XBUF ACTUAL VAL. - WORD 1 JSB ERMS,I JUMP TO ERROR MESSAGE HANDLER .XCOM370 DEF ERM18 JSB SHLTC,I SET HALT CODE DLD XBUF+1 JSB XINV2,I OUTPUT WORDS 2 & 3 JSB RHLTC,I RESTORE HALT CODE LDA TST62,I LDB TST62 INB STB TST61 JSB XINV4,I REG. DISPLAY OF EXPECTED VALUES DEF TST61,I JSB DSPLY,I OUTPUT ACTUAL & EXPECTED VALUES ARD5 ISZ CNTR CHECK FOR EXIT CONDITION .XCOM420 JMP *+2 JUMP AROUND EXT17 JMP TST21,I RETURN LDA TST62 ADA .+4 ADJUST TEST TABLE POINTER JMP RPT5 LOOP BACK .XCOM470 ERM18 ASC 12,E300 .XCOM DATA ERROR/ MMS18 ASC 8,H300 .XCOM TEST/ TSTA5 DEF TST60 TST61 BSS 1 TST62 BSS 1 HED TEST TABLE FOR ..DCM TESTS. ***** ***** TAB 850 * TEST TABLE FOR ..DCM TESTS. * TAB 860 ***** ***** TAB 870 TST5 DEC -3 NUMBER OF TEST VALUSS IN THE TABLE TAB 880 TST50 EQU * TABLE ENTRY ADDRESS TAB 890 OCT 000000 *TEST VALUE #1 - HI MANTISSA TAB 900 OCT 000000 - MID MANTISSA TAB 910 OCT 000377 - LO MANTISSA+EXPONENT(NEGATIVE) TAB 920 OCT 000000 RESULT #1 - HI MANTISSA OCT 000000 - MID MANTISSA OCT 000000 - LO MANTISSA + EXP OCT 177777 *TEST VALUE #2 - HI MANTISSA TAB 960 OCT 177777 - MID MANTISSA TAB 970 OCT 177777 - LO MANTISSA+EXOONENT 8 TAB 980 OCT 040000 RESULT #2 - HI MANTISSA OCT 000000 - MID MANTISSA TAB 000 OCT 000263 - LO MANTISSA + EXP OCT 000000 *TEST VALUE #3 - HI MANTISSA(NEGATIVE) TAB 020 OCT 000000 - MID MANTISSA TAB 030 OCT 000376 - LO MANTISSA+EXPONENT(POSITIVE) TAB 040 OCT 000000 RESULT #3 - HI MANTISSA OCT 000000 - MID MANTISSA O.K. TAB 060 OCT 000000 - EXPONENT OVERFLOWED TAB 070 HED TEST # 22 - ..DCM TESTS. ***** ***** ..DCM 10 * TEST # 22 - ..DCM TESTS. * ***** ***** ..DCM 30 TST22 NOP JSB MSGC,I OUTPUT TEST HEADER MESSAGE DEF MMS19 LDA TST5 OBTAIN LOOP COUNT ..DCM 60 STA CNTR SET UP A LOOP COUNTER ..DCM 70 LDA TSTA6 RPT6 STA TST51 TEST VALUE ADDRESS PARAMETER ..DCM100 ADA .+3 STA TST52 SET UP RESULT POINTER ..DCM130 JSB XCOPY,I MOVE TEST VALUES INTO BUFFER DEF TST51 SOURCE COPY ADDRESS DEF XBUF DESTINATION COPY ADDRESS OCT 3 WORD COUNT RAM ..DCM CALL TO ..DCM MICRO-ROUTINE ..DCM140 DEF XBUF ADDRESS PARAMETER OF TEST VALUE JSB COMP,I VALUE COMPARISONS DEF ERR18 ERROR RETURN ADDRESS DEF TST52 SOURCE COMPARE POINTER DEF XBUF DESTINATION COMPARE ADDRESS OCT 3 WORD COUNT JMP ARD6 ERR18 JSB CNVRT,I DEF XBUF ACTUAL VALUE BUFFER ADDRESS DEF TST52 OCT 3 WORD COUNT DLD XBUF LOAD ACTUAL VAL. - WORDS 1 & 2 JSB ERMS,I JUB@ * DEF * DEF * OCT ***** ********************************************** ORG 4000B CMPAR NOP STA SAVEA STB SAVEB LDA CMPAR OBTAIN P+1 LDB 0,I OBTAIN ERROR RETURN ADDRESS STB ERRCP SET UP ERROR RETURN POINTER INA BUMP POINTER LDB 0,I OBTAIN SOURCE COMPARE ADDRESS LDB B,I STB CSRCE INA LDB 0,I OBTAIN DESTINATION COMPARE ADDRE STB CDEST INA LDB 0,I OBTAIN WORD COUNT CMB,INB NEGATE THE WORD COUNT STB CPCNT SET UP A WORD COUNTER INA STA CMPAR ADJUST RETURN ADDRESS LDA CSRCE CMPLP LDB 0,I OBTAIN SOURCE COMPARE DATA CPB CDEST,I COMPARE SOURCE DATA TO DEST. DAT JMP *+2 COMPARE EQUAL, SKIP AROUND JMP ERRCP,I COMPARE NOT EQUAL, ERROR RETURN ISZ CPCNT UPDATE & EXAMINE COUNTER JMP *+2 COUNTER NOT ZERO YET JMP CPRTN COUNTER = T0, NORMAL RETURN INA BUMP SOURCE DATA ADDRESS LDB CDEST UPDATE DESTINATION ADDRESS INB STB CDEST JMP CMPLP LOOP BACK CPRTN LDA SAVEA LDB SAVEB JMP CMPAR,I CPCNT BSS 1 CSRCE BSS 1 CDEST BSS 1 ERRCP BSS 1 HED SUBROUTINE COPY ***** ********************************************** * SUBROUTINE COPY PERFORMS DATA WORD MOVES * CALLING SEQUENCE : * JSB COPY * DEF * DEF * OCT ***** ********************************************** COPY NOP STA SAVEA STB SAVEB LDB COPY ADDRESS OF PARAMETER LIST LDA 1,I OBTAIN SOURCE COPY ADDRESS LDA A,I STA SRCE SAVE SOURCE COPY ADDRESS INB LDA 1,I OBTAIN AND SET UP STA DEST DESTINATION COPY ADDRESS INB LDA 1,I OBTAIN AND SET UP CMA,INA NEGATE WORD COUNT STA WDCNT WORD COUNT INB UPDATE RETURN ADDRESS STB COPY CPYLP LDB SRCE UPDATE SOURCE COPY POINTER INB LDA SRCE,I OBTAIN SOURCE DATA STB SRCE SAVE UPDATED SOURCE COPY ADDR LDB DEST STA 1,I MOVE SRCE DATA INTO DEST. DATA W INB UPDATE DEST. COPY POINTER STB DEST SAVE UPDATED DEST. POINTER ISZ WDCNT UPDATE & EXAMINE WORD COUNT JMP CPYLP LOOP BACK LDA SAVEA LDB SAVEB JMP COPY,I NORMAL RETURN WDCNT BSS 1 SRCE BSS 1 DEST BSS 1 HED SUBROUTINE CVRT **************************************************** * CVRT CONVERTS A NUMBER OF OCTAL WORDS TO ASCII * CALLING SEQUENCE: * JSB CVRT * DEF * DEF * OCT ***** ********************************************** CVRT NOP STA SAVEA STB SAVEB LDA CVRT T ACCESS P+1 LDB 0,I ADDRESS OF ACTUAL VALUE BUFFER STB ACT INA LDB 0,I ADDRESS OF EXPECTED VALUE BUFFER LDB B,I STB EXP INA LDB 0,I WORD COUNT CMB,INB NEGATE THE WORD COUNT STB WRDCT INA ADJUSTED RETURN ADDRESS STA CVRT LDA .-2 STA VCOM LDB ACT ACTUAL VALUE BUFFER POINTER CVRT1 LDA WRDCT SET UP A WORD COUNTER STA LPCNT CVRT2 LDA 1,I OBTAIN AN OCTAL WORD JSB ASCII,I CONVERT TO ASCII CVRTP DEF ACTUL+5 ISZ LPCNT UPDATE & EXAMINE LOOP COUNTER JMP *+2 JMP *+3 INB UPDATE BUFFER POINTER JMP CVRT2 LDB EXP EXPECTED VALUE BUFFER POINTER LDA EXP5 STA CVRTP ISZ VCOM UPDATE & EXAMINE PASS COUNTER JMP CVRT1 LDA ACT5 STA CVRTP LDA SAVEA LDB SAVEB JMP CVRT,I EXIT VCOM BSS 1 ACT BSS 1 EXP BSS 1 LPCNT BSS 1 WRDCT BSS 1 HED O2ASC - OCTAL TO ASCII CONVERSION ***** * O2ASC - OCTAL TO ASCII CONVERSION ROUTINE * REG. A MUST CONTAIN THE OCTAL WORD * ASCII BUFFER POINTER MUST FOLLOW JSB IMM. ***** O2ASC NOP STB SAVEB SAVE C(REG. B) CLB REG. B = 0 STA SAVEA SAVE C(REG. A) = OCTAL WORD * EXTRACT OCTAL DIGIT 6(BIT 15 OF OCTAL WORD) AND MASKF MASK OUT BITS 14-0 SSA,RSS OCTAL DIGIT = 0 ? JMP TASC1 YES ALF,ALF NO, ROTATE LEFT 9 BITS RAL ADB 0 SET UP THE OCTAL DIGIT TASC1 ADB MASK1 MAKE IT ASCII * EXTRACT OCTAL DIGIT 5(BITS 14-12) LDA SAVEA RELOAD REG. A WITH THE OCTAL WORD AND MASKE MASK OUT OTHER BITS SZA,RSS OCTAL DIGIT = 0 ? JMP TASC2 YES ALF NO, ROTATE LEFT 4 BITS ADB 0 SET UP THE OCTAL DIGIT TASC2 ADB MASK2 MAKE IT ASCII JSB FILL FILLBUFFER WORD DEF O2ASC * is EXTRACT OCTAL DIGIT 4(BITS 11-9) LDA SAVEA RELOAD THE OCTAL WORD AND MASKD MASK OUT OTHER BITS SZA,RSS OCTAL DIGIT = 0 ? JMP TASC3 YES RAR NO,ROTATE RIGHT 1 BIT ADB 0 SET UP THE OCTAL DIGIT TASC3 ADB MASK1 MAKE IT ASCII * EXTRACT OCTAL DIGIT 3(BITS 8-6) LDA SAVEA RELOAD THE OCTAL WORD AND MASKC MASK OUT OTHER BITS SZA,RSS JMP TASC4 YES ALF,ALF NO, ROTATE LEFT 10 BITS RAL,RAL ADB 0 SET UP THE OCTAL DIGIT TASC4 ADB MASK2 MAKE IT ASCII JSB FILL DEF O2ASC * EXTRACT OCTAL DIGIT 2(BITS 5-3) LDA SAVEA RELOAD THE OCTAL WORD AND MASKB MASK OUT OTHER BITS SZA,RSS OCTAL DIGIT = 0 ? JMP TASC5 YES ALF NO, ROTATE LEFT 5 BITS RAL ADB 0 SET UP THE OCTAL DIGIT TASC5 ADB MASK1 MAKE IT ASCII * EXTRACT OCTAL DIGIT 1(BITS 2-0) LDA SAVEA RELOAD THE OCTAL WORD AND MASKA MASK OUT OTHER BITS ADB 0 SET UP THE OCTAL DIGIT ADB MASK2 MAKE IT ASCII JSB FILL DEF O2ASC LDA O2ASC,I INSERT A BLANK INA AFTER EACH ASCII STA O2ASC,I OCTAL VALUE LDB SB INSERT STB 0,I "/ " LDA O2ASC ADJUST RETURN ADDRESS INA TO BYPASS PARAMETER STA O2ASC ADDRESS LOCATION LDA SAVEA LDB SAVEB JMP O2ASC,I RETURN MASK1 OCT 030000 MASK2 OCT 000060 MASKA OCT 000007 MASKB OCT 000070 MASKC OCT 000700 MASKD OCT 007000 MASKE OCT 070000 MASKF OCT 100000 SB OCT 027440 "/ " SAVEA BSS 1 SAVEB BSS 1 HED SUBROUTINES ***** * FILL - STUFFS C(REG. B) INTO A BUFFER WORD. ***** FILL NOP LDA FILL,I ASCII BUFFER POINTER LOCATION LDA 0,I ASCII BUFFER ADDRESS POINTER LDA 0,I ASCII BUFFER ADDRESS STB 0,I FILL 1 BUFFER WORD INA BYKUMP ASCII BUFFER ADDRESS LDB FILL,I ADDR(O2ASC) LDB 1,I BUFFER POINTER LOCATION STA 1,I SAVE UPDATED BUFFER ADDRESS LDB FILL ADJUST RETURN ADDRESS INB TO BYPASS PARAMETER WORD STB FILL CLB REG. B = 0 JMP FILL,I RETURN * * TWO WORD VALUES OUTPUT VIA REGISTERS A & B * CALLING SEQUENCE : * LDA PARM1 * LDB PARM2 * JSB INVL2 * INVL2 NOP STB ITEMP 1ST WORD IN REG. A LDB SW14 JSB SWRT,I SUPPRESS ERROR HALTS ? JMP INVL2,I NO ERROR HALT LDB ITEMP RESTORE 2ND WORD OCT 107000 HALT CODE JMP *-3 RETURN TO CALLER SW14 OCT 040000 MASK ITEMP BSS 1 * * THREE WORD OUTPUT VIA REGISTERS A & B * CALLING SEQUENCE : * JSB INVL3 * DEF X * INVL3 NOP JSB PARMR LDB SW14 JSB SWRT,I SUPPRESS ERROR HALTS ? JMP PRPTR,I NO ERROR HALT LDA PARMZ,I ONTAIN 1ST PARAMETER LDB PARMZ INB STB ITEMP LDB ITEMP,I OBTAIN 2ND WORD OCT 107001 HLT CODE # 2 LDB ITEMP INB LDA 1,I OBTAIN 3RD WORD CLB OCT 107000 HLT CODE # 1 JMP PRPTR,I RETURN TO CALLER * * FOUR WORD VALUES OUTPUT VIA REGS. A & B * CALLING SEQUENCE : * LDA PARM1 * JSB INVL4 * DEF PARM2 * INVL4 NOP JSB PARMR LDB SW14 JSB SWRT,I SUPPRESS ERROR HALTS ? JMP PRPTR,I NO ERROR HALT LDB PARMZ,I OBTAIN PARAMETER ADDRESS OCT 107001 HLT CODE # 2 LDB PARMZ INB LDA 1,I OBTAIN 3RD WORD INB LDB 1,I OBTAIN 4TH WORD OCT 107000 HLT CODE # 1 JMP PRPTR,I RETURN TO CALLER PARMZ BSS 1 * * PARMR SAVES PARAMETER POINTER IN PARMZ AND ADJ ** RETURN ADDRESS OF THE CALLING PROGRAM * TO BYPASS PARAMETE R POINTER * PARMR NOP LDB *-1 ADB .-2 LDB 1,I LOAD RETURN ADDRESS STB PARMZ SAVE PARAMETER POINTER INB STB PRPTR SAVE ADJUSTED RETURN ADDRESS JMP PARMR,I PRPTR BSS 1 * * DISPL NOP JSB MSGC,I OUTPUT VALUES IN QUESTION DEF ACTUL JSB MSGC,I OUTPUT VALUES IN QUESTION DEF EXPCT JMP DISPL,I LABL EQU * HED MAPPING CODES FOR MACRO **************************************************** * MAPPING CODES FOR MACRO * **************************************************** .DFER EQU 205B .XFER EQU 220B ..MAP EQU 222B DBLE EQU 201B SNGL EQU 202B .PACK EQU 230B FLUN EQU 226B PWR2 EQU 225B .XPAK EQU 206B .XCOM EQU 215B ..DCM EQU 216B DDINT EQU 217B ORG 150B CNTR BSS 1 LOOP COUNTER CNVRT DEF CVRT XCOPY DEF COPY COMP DEF CMPAR ASCII DEF O2ASC DSPLY DEF DISPL XINV2 DEF INVL2 XINV3 DEF INVL3 XINV4 DEF INVL4 ORG 140B IOIP DEF IOID TSTP DEF TSTD TEST TABLE POINTER HDMP DEF HDMS STDA OCT 7777 STDB OCT 0 HED TEST DATA TABLES ******************************************************************** * SPECIAL TEST TABLE FOR SNGL TESTS * * OVERFLOW SHOULD BE SET ******************************************************************** ORG LABL SGHD1 DEC 2 SGBS1 EQU * OCT 137777 -0.146936793854E-38 OCT 177600 LOWER BOUNDARY-INNER RANGE OCT 000401 * OCT 0 0.0000000E+00 OCT 0 * * OCT 077777 +0.170141163178E+39 OCT 177600 UPPER BOUNDARY-OUTER RANGE OCT 000376 * OCT 077777 +0.1701412E+39 OCT 177776 * * ******************************************************************** * * ******************************************************************** * SPECIAL TEST TABLE FOR SNGL TEST * * OVERFLOW SHOULD NOT BE SET ******************************************************************€** * SGHD2 DEC 2 SGBS2 EQU * OCT 137777 LOWER BOUNDARY-INNER RANGE OCT 177600 OCT 000001 * OCT 137777 OCT 177401 * * OCT 077777 UPPER BOUNDARY-OUTER RANGE OCT 177577 OCT 177776 * OCT 077777 OCT 177776 * * ******************************************************************** * TABLES FOR DBLE TESTS ******************************************************************** * DBHED DEC 9 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 5 WORDS. * WORD 1 - 1ST WORD OF INPUT * WORD 2 - 2ND WORD OF INPUT * WORD 3 - 1ST WORD OF EXPECTED OUTPUT * WORD 4 - 2ND WORD OF EXPECTED OUTPUT * WORD 5 - 3RD WORD OF EXPECTED OUTPUT * * DBBAS EQU * OCT 077777 0.1701412E+39 OCT 177776 UPPER BOUNDARY-OUTER RANGE * OCT 077777 0.170141163178E+39 OCT 177400 OCT 000376 * * OCT 100000 -0.1701412E+39 OCT 000376 LOWER BOUNDARY-OUTER RANGE * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 040000 0.1469368E-38 OCT 1 UPPER BOUNDARY-INNER RANGE * OCT 040000 0.146936793853E-38 OCT 0 OCT 1 * * OCT 137777 -0.1469369E-38 OCT 176401 LOWER BOUNDARY-INNER RANGE * OCT 137777 -0.146936898950E-38 OCT 176400 OCT 1 * * OCT 076612 0.9046138E+19 OCT 053576 * OCT 076612 0.904613845903E+19 OCT 053400 OCT 000176 * * OCT 057302 0.7403148E+00 OCT 121400 * OCT 057302 0.740314841270E+00 OCT 121400 OCT 0 * * OCT 040762 0.1117218E-18 OCT 166205 * OCT 040762 0.111721805266E-18 OCT 166000 OCT 000205 * * OCT 115330 -0.2091832E-22 OCT 060153 * OCT 115330 -0.209183192871E-22 OCT 060000 OCT 000153 * *  OCT 131524 -0.2209911E+20 OCT 006202 * OCT 131524 -0.220991105949E+20 OCT 006000 OCT 000202 * * * ******************************************************************** * * * ******************************************************************** * TABLE FOR SNGL TESTS ******************************************************************** * * SGHED DEC 18 NR. OF ENTRIES. * EACH ENTRY CONSISTS OF 5 WORDS. * * FIRST 3 WORDS - INPUT * SECOND 2 WORDS - OUTPUT * SGBAS EQU * OCT 054173 +0.287135603715E+35 OCT 000526 OCT 106346 * OCT 054173 +0.2871356E+35 OCT 000746 * * OCT 056172 +0.447201649260E+27 OCT 124176 OCT 170262 * OCT 056172 +0.4472016E+27 OCT 124262 * * OCT 060557 +0.214263410162E+15 OCT 105471 OCT 136540 * OCT 060557 +0.2142634E+15 OCT 105540 * * OCT 046047 +0.998174653012E+07 OCT 114503 OCT 155460 * OCT 046047 +0.9981746E+07 OCT 114460 * * OCT 041443 +0.209814274109E+01 OCT 176076 OCT 165004 * OCT 041443 +0.2008143E+01 OCT 176004 * * OCT 061147 +0.187692645130E-03 OCT 127056 OCT 023351 * OCT 061147 +0.1876926E-03 OCT 127351 * * OCT 053416 +0.791765024518E-10 OCT 032105 OCT 060677 * OCT 053416 +0.7917650E-10 OCT 032277 * * OCT 073326 +0.100659253781E-18 OCT 062211 OCT 043603 * OCT 073326 +0.1006593E-18 OCT 062603 * * OCT 047131 +0.791117549280E-26 OCT 033165 OCT 011525 * OCT 047131 +0.7911175E-26 OCT 033125 * * OCT 076101 +0.912876403313E-37 OCT 014640 OCT 110413 * OCT 076101 +0.9128764E-37 OCT 015013 * * OCT XB@<123006 -0.222764026459E+30 OCT 136521 OCT 001304 * OCT 123006 -0.2227640E+30 OCT 136704 * * OCT 135273 -0.623901549812E+18 OCT 123304 OCT 122570 * OCT 135273 -0.6239015E+18 OCT 123570 * * OCT 116745 -0.200918547392E+06 OCT 027173 OCT 142044 * OCT 116745 -0.2009186E+06 OCT 027044 * * OCT 103050 -0.111893657122E-37 OCT 114715 OCT 057405 * OCT 103050 -0.1118937E-37 OCT 115005 * * OCT 125123 -0.211198476202E-29 OCT 162564 OCT 107075 * OCT 125123 -0.2111985E-29 OCT 162475 * * OCT 137263 -0.432109685454E-21 OCT 110363 OCT 136565 * OCT 137263 -0.4321097E-21 OCT 110565 * * OCT 123016 -0.998563210089E-14 OCT 131465 OCT 001245 * OCT 123016 -0.9985632E-14 OCT 131645 * * OCT 115506 -0.600354780987E-05 OCT 172540 OCT 004737 * OCT 115506 -0.6003548E-05 OCT 172737 * * * ******************************************************************** * HED SUBROUTINES B  12977-18010 1822 S C0122 FFP DIAG 21MX #1              H0101 * * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (B)=FENCE ADDRESS. * MEMTN NOP STA MPCKX STORE EXIT ADDRESS LDA PMMTN SET INTERRUPT ADDRESS. STA MPPAR CLA STA MPIND RESET INDICATOR. INA ANNOUNCE THAT WE ARE DOING STA MPTES A MEM. PROTECT TEST. OTB MPPAR LOAD FENCE REGISTER. STF INTP STC MPPAR TURN ON MEM. PROTECT LOGIC. JMP MEMTN,I * * * * MEMORY PROTECT VIOLATION ROUTINE. * * MPCHK NOP CLF INTP LIA MPPAR GET VIOLATION REGISTER. SSA JMP MPCK1 PARITY ERROR! CLF MPPAR TURN OFF PARITY LOGIC LDA TRHLT MEMORY PROTECT VIOLATION! STA MPPAR RESTORE TRAP CELL HALT. CLA,INA SET INDICATOR. STA MPIND STF MPPAR TURN ON PARITY LOGIC. JMP MPCKX,I RETURN * MPCK1 EQU * OCT 106077 HALT ON PARITY ERROR. JMP *-1 MPCKX BSS 1 * * ********************************************************************** * SUBROUTINE TO CHECK IF DIAGNOSTIC IS CONFIGURED FOR INTERRUPT * TEST. IF NOT THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * INTCK NOP LDA INTSC IF NOT CONFIGURED FOR INTERRUPTS SZA THEN EXIT TO (P+1) ISZ INTCK JMP INTCK,I ELSE EXIT TO (P+2) * * * *********************************************************************** * SUBROUTINE TO CHECK IF INTERRUPT OCCURRED IN MICROCODE. IF NOT * THEN EXIT TO (P+1) ELSE EXIT TO (P+2). * * CHECK NOP LDA INTID CHECK INDICATOR SZA IF = 0 THEN EXIT TO (P+1) ISZ CHECK ELSE EXIT TO (P+2) JMP CHECK,I * * * * SUBROUTINE TO PRINT " NOT INTERRUPTIBLE" MESSAGE. * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * PRNIN NOP LDA B,I MOVE STA RMS25 ERROR INB NUMBER LDA B,I INTO STA RMS25+1 MESSAGE BUFFERm. JSB ERMS,I PRINT ERROR MESSAGE DEF RMS25 JMP PRNIN,I EXIT RMS25 ASC 12,XXXX NOT INTERRUPTIBLE/ * * * * SUBROUTINE TO PRINT "A-REG NOT RESTORED ON INTERP". * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * ANRES NOP LDA B,I MOVE STA RMS26 ERROR NUMBER INB INTO LDA B,I MESSAGE STA RMS26+1 BUFFER. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS26 JMP ANRES,I EXIT RMS26 ASC 16,XXXX A-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "B-REG NOT RESTORED ON INTERRUPT". * * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * BNRES NOP LDA B,I MOVE STA RMS27 ERROR INB NUMBER LDA B,I INTO STA RMS27+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE DEF RMS27 JMP BNRES,I EXIT RMS27 ASC 16,XXXX B-REG NOT REST. ON INTERR/ * * * SUBROUTINE TO PRINT "P-REG NOT RESTORED ON INTERP". * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING. * * PNRES NOP LDA B,I MOVE STA RMS28 ERROR INB NUMBER LDA B,I INTO STA RMS28+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS28 JMP PNRES,I EXIT RMS28 ASC 16,XXXX P-REG NOT REST. ON INTERR/ * * ******************************************************************** * HED CONSTANTS AND STORAGE ORG 300B MTRY BSS 1 TO CHECK IF FENCE IS RESTORED PMTRY DEF * * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 OUTP1 BSS 1 BSS 1 POUT1 DEF OUTP1 PINV2 DEF INVL2+6 SHLTC DEF SINV2 RHLTC DEF RINV2 * * MPPAR EQU 5 ZPSTX DEF ZSTEX CONTROL SECTION POINTER * DEC -1 TEMP BSS 9 DEC -6,-5,-4,-3,-2,-1 . DEC 0,1,2,3,4,5,6,7,8,9 BIT5 OCT 40 BIT14 OCT 40000 INTID BSS 1 INTSC NOP ITRAP JSB *+1,I INSERT IN TRAP CELL FOR DEF INTSB INTERRUPT TEST AREG BSS 1 BREG BSS 1 INTAD BSS 1 INTN1 BSS 1 INDIC BSS 1 OTTB0 OTA 0 PPROV DEF PROVN * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 TBTIM BSS 1 PSGHD DEF SGHED PSGBS DEF SGBAS PSGH1 DEF SGHD1 PSGB1 DEF SGBS1 PSGH2 DEF SGHD2 PSGB2 DEF SGBS2 PMPH2 DEF MPHD2 PMPB2 DEF MPBS2 PDBHD DEF DBHED PDBBS DEF DBBAS PMPH3 DEF MPHD3 PMPB3 DEF MPBS3 PMP2D DEF MAP2D PMP3D DEF MAP3D PERMS DEF ERMES PRMSN DEF RMSSN PMPER DEF MPERR PDATC DEF DATCK PMEMT DEF MEMTN B60 OCT 60 B77 OCT 77 * * ERROR AND NON-ERROR MESSAGES * MMS05 ASC 8,H110 ..MAP TEST/ MMS06 ASC 8,H120 SNGL TEST/ MMS07 ASC 8,H130 DBLE TEST/ MMS12 ASC 8,H210 .DFER TEST/ MMS13 ASC 8,H220 .XFER TEST/ * * * BUFFER FOR DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * RMS00 ASC 8,XXXX DATA ERROR OCT 6412 CR-LF ASC 2,ACT RMAC1 ASC 11,XXXXXX XXXXXX XXXXXX OCT 6412 ASC 2,EXP RMEX1 ASC 12,XXXXXX XXXXXX XXXXXX/ PRAC1 DEF RMAC1 PREX1 DEF RMEX1 PERN1 DEF ERNR1 ERNR1 ASC 2,E130 * * BUFFER TO OUTPUT ERROR MESSAGE "NO CHECK ON MEM PROT VIOLATION" * * RMS09 ASC 18,XXXX NO CHECK ON MEM PROT VIOLATION/ E131 ASC 2,E131 PR131 DEF E131 E211 ASC 2,E211 PR211 DEF E211 RMS15 ASC 6,E210 FAILED/ RMS16 ASC 6,E220 FAILED/ * * BUFFER TO OUTPUT "OVERFLOW NOT SET". * RMS18 ASC 11,XXXX OVERFLOW NOT SET/ E121 ASC 2,E121 PR121 DEF E121 * * * BUFFER FOR DATA ERROR MESSAGES FOR SNGL * RMS19 ASC 8,E120 DATA ERROR OCT 6412 CR-LF ASC 2,ACT R19AC ASC 7,XXXXXX XXXXXX OCT 6412 ASC 2,EXP R19EX ASC 8,XXXXXX XXXXXX/ P19AC DEF R19AC P19EX DEF R19EX * * * BUFFER TO OUTPUT m8"OVERFLOW SET" * RMS22 ASC 9,XXXX OVERFLOW SET/ E123 ASC 2,E123 E143 ASC 2,E143 PR123 DEF E123 * ****************RMS23 MESSAGE ON OTHER PAGE * * BUFFER FOR ERROR MESSAGES FOR ..MAP TESTS * RMS24 ASC 8,E110 DATA ERROR OCT 6412 CR-LF ASC 2,ACT R24AC ASC 3,XXXXXX OCT 6412 CR-LF ASC 2,EXP R24EX ASC 4,XXXXXX/ P24AC DEF R24AC P24EX DEF R24EX * PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB4 DEF TTB4 ******************************************************************** ******************************************************************** ****************** *** TEST TABLE *** ****************** * TTB1 BSS 1 TTB2 BSS 1 TTB3 BSS 1 TTB4 BSS 1 TTB5 BSS 1 TTB6 BSS 1 TTB7 BSS 1 TTB8 BSS 1 TTB9 BSS 1 TTB10 BSS 1 TTB11 BSS 1 TTB12 BSS 1 TTB13 BSS 1 TTB14 BSS 1 TTB15 BSS 1 TTB16 BSS 1 ********* HED TEST # 12 - ..MAP TESTS. * ..MAP * ********* TST12 EQU * XMAP NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS05 * * * TEST 2 DIMENSIONAL ARRAY * * * INITIATE * LDA PMPH2,I SET CMA,INA STA INDIC COUNTER. LDA PMPB2 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP1 EQU * STA TEMP+1 SET LDA PMP2D POINTERS STA TEMP+2 LDB .-4 TO XMAP2 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP2 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CLA (A)=0 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 2 DIM. MAP2D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. @* CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP3 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP3 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP4 2 DIM. TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+6 TO NEXT ENTRY. STA TEMP JMP XMAP1 * * * TEST 3 DIMENSIONAL ARRAY * * * INITIATE * XMAP4 EQU * LDA PMPH3,I SET CMA,INA STA INDIC COUNTER. LDA PMPB3 SET STA TEMP POINTER. * * SET UP FOR SUBTEST * XMAP5 EQU * STA TEMP+1 SET LDA PMP3D POINTERS STA TEMP+2 LDB .-6 TO XMAP6 EQU * LDA TEMP+1 PARAMETERS STA TEMP+2,I ISZ TEMP+2 INTO ISZ TEMP+1 INB,SZB CALLING JMP XMAP6 SEQUENCE. * LDB TEMP+1,I (B)=NR. OF WORDS. ISZ TEMP+1 SAVE POINTER TO EXPECTED OUTPUT. CCA (A)=-1 * * CALL MICRO * RAM ..MAP CALLING SEQUENCE FOR 3 DIM. MAP3D EQU * BSS 1 POINTER TO BASE ADDRESS BSS 1 POINTER TO 1ST SUBSCRIPT BSS 1 POINTER TO 2ND SUBSCRIPT BSS 1 POINTER TO 3RD SUBSCRIPT BSS 1 POINTER TO 1ST DIMENSION BSS 1 POINTER TO 2ND DIMENSION * * * EXIT FROM MICRO. CHECK RESULTS. * CPA TEMP+1,I RESULT AS EXPECTED? JMP XMAP7 YES. STA POUTP,I NO. ERROR! JSB PMPER,I GO TO ERROR ROUTINE. XMAP7 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XMAP8 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER TO ADA .+8 NEXT ENTRY. STA TEMP JMP XMAP5 * XMAP8 EQU * JMP XMAP,I HED SUBROUTINE PROVS * SUBROUTINE TO PRINT "OVERFLOW SET" MESSAGE * ENTER WITH (B) = POINTER TO ERROR NUMBER STRING * PROVS NOP LDA B,I MOVE STuA RMS22 ERROR INB NUMBER LDA B,I INTO STA RMS22+1 MESSAGE BUFFER. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS22 JMP PROVS,I EXIT. HED TEST # 13 - SNGL TESTS. * ********* * SNGL * ********* TST13 EQU * XSNGL NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS06 * * * DO STANDARD TEST TABLE * LDA PSGHD,I CMA,INA SET STA INDIC COUNTER. LDA PSGBS SET STA TEMP POINTER. * XSNG1 EQU * JSB SNSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 JSB SNPRC JMP XSNG1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PSGH1,I CMA,INA SET STA INDIC COUNTER. LDA PSGB1 SET STA TEMP POINTER. * XSNG5 EQU * CLO CLEAR OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOC CHECK OVERFLOW. JMP XSNG6 IF SET, CONTINUE. LDB PR121 IF NOT SET, OUTPUT JSB PPROV,I ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG6 EQU * JSB SNPRC JMP XSNG5 DO NEXT SUBTEST. * * DO SECOND SPECIAL TEST TABLE * LDA PSGH2,I SET CMA,INA STA INDIC COUNTER. LDA PSGB2 SET STA TEMP POINTER. * XSNG7 EQU * STO SET OVERFLOW. JSB SNSUB DO SUBTEST. STA OUTPT SAVE OBTAINED VALUE. STB OUTPT+1 SOS CHECK OVERFLOW. JMP XSNG8 IF CLEAR, CONTINUE. LDB PR123 IF SET, OUTPUT JSB PROVS ERROR MESSAGE. LDA OUTPT RESTORE REGISTERS. LDB OUTPT+1 XSNG8 EQU * JSB SNPRC JMP XSNG7 DO NEXT SUBTEST. JMP XSNGL,I EXIT. HED SUBROUTINE SNSUB * 8* * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * SNSUB NOP * SET UP FOR SUBTEST * STA SGINP INTO MICRO CALL. ADA .+3 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. STA TEMP+2 * * CALL MICRO * RAM SNGL CALLING SEQUENCE. DEF *+2 SGINP BSS 1 POINTER TO INPUT LOCATION. * JMP SNSUB,I EXIT. HED SUBROUTINE SNPRC * * * SUBROUTINE TO CHECK RESULTS * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * SNPRC NOP CPA TEMP+2,I 1ST WORDS COMPARE? RSS JMP SNPR2 NO. ERROR. ISZ TEMP+2 YES. 2ND WORDS COMPARE? CPB TEMP+2,I RSS JMP SNPR2 NO. ERROR. SNPR1 EQU * ISZ INDIC YES. BUMP COUNTER. JMP *+3 ISZ SNPRC DONE. EXIT TO (P+2). JMP SNPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP SNPRC,I EXIT TO (P+1). * SNPR2 EQU * JSB PRMSN,I OUTPUT ERROR MESSAGE. JMP SNPR1 * * HED TEST # 14 - DBLE TESTS. * ********* * DBLE * ********* TST14 EQU * XDBL NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS07 * * INITIATE * LDA PDBHD,I CMA,INA SET STA INDIC COUNTER. LDA PDBBS SET STA TEMP POINTER. XDBL1 EQU * JSB DBSUB DO SUBTEST. * * EXIT FROM MICRO. CHECK RESULTS. * LDA TEMP+1 SET POINTER TO EXPECTED OUTPUT. JSB PDATC,I CHECK RESULTS. JMP XDBL3 ERROR. XDBL2 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XDBL5 ALL REGULAR TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+5 TO NEXT ENTRY. STA TEMP JMP XDBL1 DO NEXT SUBTEST. * XDBL3 EQU * LDB PERN1 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP XDBL2 DO NEXT SUBTEST. XDBL5 EQU * JMP XDBL,I EXIT. HED SUBROUTINE DBSUB * * * SUBROUTINE TO SET UP A SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT DATA. * DBSUB NOP * * SET UP FOR SUBTEST * STA DBINP INTO MICRO CALL. ADA .+2 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM DBLE CALLING SEQUENCE. DEF *+3 DEF OUTPT POINTER TO OUTPUT LOCATION DBINP BSS 1 POINTER TO INPUT LOCATION JMP DBSUB,I HED TEST # 15 - .DFER TESTS. * ********* * .DFER * ********* TST15 EQU * XDFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS12 * JSB XDSET SET UP TEST. * * NOW EXECUTE .DFER TEST. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * JSB XDCHK CHECK RESULTS. JMP XDFR3 NO ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS15 * * * CHECK MEMORY PROTECT * XDFR3 EQU * JSB PMMPR,I CHECK IF MEM. PROT.PRESENT JMP XDFER,I NO. EXIT. * LDA PXDF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB PMEMT,I MEM. PROTECT LOGIC. * RAM .DFER DEF TTB1 DESTINATION. DEF TTB4 SOURCE. * * RETURN FROM MICRO. * XDFR5 EQU * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XDFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR211 PRINT ERROR MESSAGE. JSB PRNMP XDFR4 EQU * JMP XDFER,I EXIT TEST. PXDF5 DEF XDFR5 PMMPR DEF MEMPR * * HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * XDSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB4 STA TTB5 STA TTB6 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB7 JMP XDSET,I RETURN. * * * SUBROUTINE TO CHECK RES.oULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * XDCHK NOP LDA .-3 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XDCK1 EQU * LDA B,I GET CONTENTS. CPA .-1 =-1? RSS JMP XDCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XDCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XDCHK,I YES. EXIT TO (P+1). XDCK2 EQU * ISZ XDCHK NO. ERROR. EXIT TO (P+2). JMP XDCHK,I * * HED TEST # 16 - .XFER TESTS. * ********* * .XFER * ********* TST16 EQU * XXFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS13 * JSB XDSET SET UP TEST. * * EXECUTE * LDA PTTB4 (A)=SOURCE ADDRESS. LDB PTTB1 (B)=DESTINATION ADDRESS. RAM .XFER * JSB XDCHK CHECK RESULTS. JMP XXFER,I NO ERROR. EXIT. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS16 * XXFR1 EQU * JMP XXFER,I EXIT TEST. HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDA TRHLT RESTORE TRAP CELL HALT. STA MPPAR CLA RESET MEM. PROTECT TEST STA MPTES INDICATOR. CLF INTP TURN OFF INTERRUPT SYSTEM. JMP MTNOF,I EXIT. * * * * SUBROUTINE TO PRINT "NO CHECK ON MEM PROT VIOLATION". * ALSO TO TURN OFF MEM PROTECT LOGIC. * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDA B,I MOVE STA RMS09 ERROR INB NUMBER LDA B,I INTO STA RMS09+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS09 JMP PRNMP,I EXIT. * * SKP * ORG 6000B * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP: * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)= POINTER TO OBTAINED OUTPUT * ERMES NOP LDA B,I MOVE STA RMS00 ERROR NUMBER INB LDA B,I I INTO STA RMS00+1 MESSAGE BUFFER. * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SET POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-3 LDA PRAC1 JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SET POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-3 LDA PREX1 JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP INB STB TEMP+6 LDA POUTP,I (A)=1ST WORD OF OBTAINED OUTPUT. LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I GO TO ERROR PRINTING ROUTINE. DEF RMS00 LDB BIT14 IF BIT#14 IS NOT SET, JSB SWRT,I JMP ERMES,I EXIT. ISZ TEMP+6 OTHERWISE SET (A)=3RD WORD LDB TEMP+6,I OF OBTAINED OUTPUT, CLB SET (B)=0 AND OCT 107000 HALT. * LDA TEMP+1,I SET (A)=1ST WORD OF EXPECTED ISZ TEMP+1 OUTPUT. LDB TEMP+1,I SET (B)=2ND WORD OF EXPECTED OCT 107001 OUTPUT AND HALT. * ISZ TEMP+1 SET (A)=3RD WORD OF EXPECTED LDA TEMP+1,I OUTPUT. CLB SET (B)=0 OCT 107002 AND HALT. JMP ERMES,I EXIT. HED SUBROUTINE MTNOF * * * * * SUBROUTINE TO PRINT "OVERFLOW NOT SET". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PROVN NOP LDA B,I MOVE STA RMS18 ERROR INB NUMBER LDA B,I INTO STA RMS18+1 MESSAGE BUFFER. * JSB ERE B@fB  12977-18011 1822 S C0122 FFP DIAG 21MX #1              H0101  LDB .-2 (B)=-2 LDA P19EX (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP LDA B,I (A)=1ST WORD OF OBTAINED OUTPUT. INB LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS19 LDB BIT14 IF BUT#14 IS NOT SET, JSB SWRT,I JMP RMSSN,I EXIT. LDB TEMP+1 OTHERWISE SET (A)=1ST WORD LDA B,I OF EXPECT OUTPUT. INB SET (B)=2ND WORD OF EXPECTED LDB B,I OUTPUT AND OCT 107000 HALT. JMP RMSSN,I EXIT. HED SUBROUTINE MPERR * * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES * FOR ..MAP TESTS * * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP. * (TEMP+1)= POINTER TO EXPECTED OUTPUT * (POUTP) = POINTER TO OBTAINED OUTPUT * MPERR NOP * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SAVE POINTER STA TEMP+5 TO OBTAINED OUTPUT. CCB (B)=-1 LDA P24AC (A)=POINTER TO DESTINATION BUFR. JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SAVE POINTER STA TEMP+5 TO EXPECTED OUTPUT. CCB (B)=-1 LDA P24EX (A)=POINTER TO DEST. BUFFER JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDA POUTP,I (A)=OBTAINED OUTPUT. LDB TEMP+1,I (B)=EXPECTED OUTPUT. JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS24 JMP MPERR,I EXIT. HED SUBROUTINE CBNOC * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS (STORED IN A * BUFFER) INTO OCTAL & INSERT THEM IN ASCII FORM INTO A * MESSAGE BUFFER. * ENTER WITH (A) = POINTER TO DESTINATION STRING * (B) = -NR OF DATA ITEMS TO BE PROCESSED * PRIOR TO ENTERING THE SUBROUTINE, LOCATION (TEMP+5) * MUST CONTAIN THE POINTER TO THE SOURCE STRING(ACTUAL OR * EXPECTED OUTPUT). * THE NUMBER TO BE PRINTED ARE ASSUMED TO BE SEPARATED BY 2 * BLANKS. * CBNOC NOP STA TEMP+7 SAVE POINTER STB TEMP+6 SET COUNTER CBNC1 EQU * LDB TEMP+5,I (B) = BINARY NUMBER STA TEMP+3 SET POINTER LDA .-3 SET COUNTER STA TEMP+4 CLA (A) = 0 RBL,SLB IF BIT #15 IS SET, INA ADD 1. ADA B60 MAKE ASCII ALF,ALF ROTATE INTO UPPER WORD & STORE STA TEMP+3,I CLE (E) = 0 CBNC2 EQU * CLA (A) = 0, ROTATE RBL,SLB IF BIT IS SET, ADA .+4 ADD 4 RBL,SLB ROTATE IF BIT IS SET ADA .+2 ELSE ADD 2 RBL,SLB ROTATE IF BIT IS SET, INA ELSE ADD 1 ADA B60 MAKE ASCII ALF,ALF ROTATE 8 BITS IF LOWER CHAR. SEZ JMP CBNC3 ALF,ALF AND, IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I CME SEZ,RSS JMP CBNC2 ISZ TEMP+3 ISZ TEMP+4 JMP CBNC2 ISZ TEMP+6 RSS JMP CBNOC,I ISZ TEMP+5 LDA TEMP+7 ADA .+4 STA TEMP+7 JMP CBNC1 * HED TEST DATA TABLES * * ******************************************************************** * TABLES FOR ..MAP TESTS ******************************************************************** * USED FOR 2 DIMENSIONAL ARRAY TESTS. ******************************************************************** * MPHD2 EQU * DEC 4 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 6 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - LENGTH OF 1ST DIMENSION * WORD 5 - NR. OF WORDS/VARIABLE * WORD 6 - EXPECTED OUTPUT * MPBS2 EQU * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 2 OCT 4000 * OCT 6000 DEC 1 DEC 10  DEC 10 DEC 2 OCT 6264 * OCT 7777 DEC 10 DEC 1 DEC 10 DEC 3 OCT 10032 * OCT 6500 DEC 10 DEC 10 DEC 10 DEC 1 OCT 6643 * * * * * ******************************************************************** * USED FOR 3 DIMENSIONAL ARRAY TEST. ******************************************************************** * MPHD3 EQU * DEC 8 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 8 WORDS. * * WORD 1 - BASE ADDRESS * WORD 2 - 1ST SUBSCRIPT * WORD 3 - 2ND SUBSCRIPT * WORD 4 - 3RD SUBSCRIPT * WORD 5 - LENGTH OF 1ST DIMENSION * WORD 6 - LENGTH OF 2ND DIMENSION * WORD 7 - NR. OF WORDS/VARIABLE * WORD 8 - EXPECTED OUTPUT * MPBS3 EQU * OCT 4000 DEC 1 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4000 * OCT 4000 DEC 10 DEC 1 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4033 * OCT 4000 DEC 1 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4416 * OCT 4000 DEC 10 DEC 10 DEC 1 DEC 10 DEC 10 DEC 3 OCT 4451 * OCT 4000 DEC 1 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11214 * OCT 4000 DEC 1 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11632 * OCT 4000 DEC 10 DEC 1 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11247 * OCT 4000 DEC 10 DEC 10 DEC 10 DEC 10 DEC 10 DEC 3 OCT 11665 HED SUBROUTINE INTON * * * ******************************************************************** * * SUBROUTINE TO TURN ON THE INTERRUPT INTERFACE. * ENTER WITH (A) = EXIT ADDRESS * INTON NOP STA INTN1 SAVE 7EXIT ADDRESS LDA ITRAP SET TRAP CELL STA INTSC,I CLA CLEAR INDICATOR STA INTID CLC INTP STCSC STC CH EXECUTE "STC SC" INSTRUCTION STFSC STF CH EXECUTE "STF SC" INSTRUCTION JMP INTON,I * * * SUBROUTINE TO TURN OFF THE INTERRUPT INTERFACE. * INTOF NOP CLCSC CLC CH EXECUTE "CLC SC" INSTRUCTION LDA TRHLT SET HALT IN STA INTSC,I TRAP CELL JMP INTOF,I EXIT * * * SUBROUTINE TO CHECK IF MEMORY PROTECT HARDWARE * IS PRESENT. IF PRESENT EXIT TO (P+2) ELSE EXIT TO * (P+1). * MEMPR NOP LDA BIT5 AND CPTO SZA MEMORY PROTECT PRESENT, THEN ISZ MEMPR EXIT TO (P+1) JMP MEMPR,I ELSE EXIT TO (P+2) * * * INTERRUPT SUBROUTINE * INTSB NOP CLF INTP STOP INTERRUPT STA AREG SAVE (A) STB BREG SAVE (B) JSB INTOF TURN OFF INTERRUPT INTERFACE ISZ INTID SET INDICATOR TO 1 LDA INTSB SAVE (P) STA INTAD JMP INTN1,I EXIT * * * * SET HALT CODE IN INVL2 ROUTINE. * * SINV2 NOP LDA PINV2,I ADA .+2 CHANGE HLT CODE TO 002B STA PINV2,I JMP SINV2,I EXIT * * * * RESTORE HALT CODE IN INVL2 ROUTINE. * * RINV2 NOP LDA PINV2,I ADA .-2 CHANGE HALT CODE BACK TO 000B STA PINV2,I JMP RINV2,I EXIT * * * HED TEST # 15 - .CFER TESTS. * ********* * .CFER * ********* * .CFER EQU 231B * TST24 EQU * XCFER NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS21 * JSB CFRCK CHECK FOR CFER ROUTINE JMP CFERT ITS THERE, OK JSB ERMS,I NO SUCH LUCK DEF RMS30 JMP XCFER,I * CFERT EQU * JSB XCSET SET UP TEST. * * NOW EXECUTE .CFER TEST. * RAM .CFER DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * JSB XCCHK CHECK RESULTS. JMP XCFR3 NO@ ERROR. * JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS29 * * * CHECK MEMORY PROTECT * XCFR3 EQU * JSB QMMPR,I CHECK IF MEM. PROT.PRESENT JMP XCFER,I NO. EXIT. * LDA PXCF5 LDB PTTB2 SET FENCE ADDRESS AND TURN ON JSB PMEMT,I MEM. PROTECT LOGIC. * RAM .CFER DEF TTB1 DESTINATION. DEF TTB5 SOURCE. * * RETURN FROM MICRO. * XCFR5 EQU * LDA MPIND DID MEMORY PROTECT INTERRUPT SZA OCCUR? JMP XCFR4 YES. GO TO EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR311 PRINT ERROR MESSAGE. JSB PRNMP XCFR4 EQU * JMP XCFER,I EXIT TEST. PXCF5 DEF XCFR5 QMMPR DEF MEMPR * * HED SUBROUTINES * * * * SUBROUTINE TO PREPARE TEST * XCSET NOP CCA STORE -1 IN SOURCE LOCATIONS. STA TTB5 STA TTB6 STA TTB7 STA TTB8 CLA STORE 0 IN DESTINATION LOCATIONS STA TTB1 STA TTB2 STA TTB3 STA TTB4 STA TTB9 JMP XCSET,I RETURN. * * * SUBROUTINE TO CHECK RESULTS * IF AN ERROR EXISTS, EXIT TO (P+2) * OTHERWISE EXIT TO (P+1) * XCCHK NOP LDA .-4 SET COUNTER. STA TEMP LDB PTTB1 GET POINTER. XCCK1 EQU * LDA B,I GET CONTENTS. CPA .-1 =-1? RSS JMP XCCK2 NO. ERROR. INB YES. BUMP POINTER. ISZ TEMP DONE? JMP XCCK1 NO. CPA TTB4 YES. IS (TTB4) STILL=-1? JMP XCCHK,I YES. EXIT TO (P+1). XCCK2 EQU * ISZ XCCHK NO. ERROR. EXIT TO (P+2). JMP XCCHK,I * * * ROUTINE TO CHECK IF .CFER IS PRESENT * SKIPS IF NO .CFER * CFRCK NOP LDA CPTO CHECK CPU TYPE SSA,RSS IF SIGN BIT=0, 2100 OR OLDER, NOGO JMP NOCFR ALF IF BITS 14-12=0, BUT 15 SET, =>MX, NO GO AND .+7 SZA,RSS JMP NOCFR * * TH3$"E ASSUMPTION IS NOW MADE THAT WE HAVE AN E OR F SERIES CPU * THIS IMPLIES THAT IF .CFER IS NOT PRESENT, A NOP WILL * BE EXECUTED. * RAM .CFER TRY IT, YOU'LL LIKE IT, MAYBE NOP NOP, IT AINT THERE JMP NOCFR JMP CFRCK,I ITS THERE!, JUST RETURN * NOCFR ISZ CFRCK WE'RE SO SORRY, JMP CFRCK,I UNCLE ALBERT * * * * ROUTINE TO CONFIGURE STDA BASED ON PRESENCE OF .CFER * CNTST NOP JSB CFRCK TEST FOR CFER ROUTINE CCE,RSS IF SO, SET E CLE LDA STDA SET BIT 12 OF STDA IF ,CFER ALF,RAR ELA,ALF ALF,ALF STA STDA JMP CNTST,I DONE * * * PR311 DEF E311 E311 ASC 2,E311 MMS21 ASC 8,H330 .CFER TEST/ RMS29 ASC 8,E330 DATA ERROR/ RMS30 ASC 20,E331 .CFER NOT PRESENT, TEST TERMINATED/ * * * FWAA EQU * END $   12977-18012 1632 S 0122 FFP DIAG 21MX #2              H0101 ASMB,A,B,L,C HED 21MX FFP DIAGNOSTIC # 2 ORG 0 DSN 101114 10 AUGUST 1976 REV 1632 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 * = DIAGNOSTIC OPTIONS * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIsZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE CH EQU 10B I-O CHANNEL SELECT CODE * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSN OCT 101114 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CԑHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOLOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE  CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZrA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * ݊ * * * * * * * * * * * * * * * HED TEST DATA TABLES * * ******************************************************************** * SPECIAL TEST TABLE XADD TEST * * OVERFLOW SHOULD BE SET ******************************************************************** * ADHD1 EQU * DEC 4 * ADBS1 EQU * OCT 045526 +0.100141183461E+39 OCT 076612 UPPER BOUNDARY-OUTER RANGE OCT 024776 * * DO NOT CHANGE THE FOLLOWING 3 WORDS TO 0!!!! * THE INTERRUPT TEST FOR "XADD" USES THIS ENTRY; A "0" IN * THESE WORDS WILL EXIT THE MICRO WITHOUT TESTING FOR * INTERRUPT. THEREFOR THE INTERRUPT TEST WILL FAIL. * OCT 064523 +0.699999999999E+38 OCT 002353 OCT 126774 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 132251 -0.100141183461E+39 OCT 101165 LOWER BOUNDARY-OUTER RANGE OCT 153776 * OCT 113254 -0.699999999999E+38 OCT 175424 OCT 050374 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 077777 +0.293873587705E-38 OCT 177777 UPPER BOUNDARY-INNER RANGE OCT 177401 * OCT 137777 -0.146936793854E-38 OCT 177777 OCT 177401 * OCT 0 0.00E00 OCT 0 OCT 0 * * OCT 137777 -0.293873587707E-38 OCT 177777 LOWER BOUNDARY-INNER RANGE OCT 177403 * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 0 0.00E00 OCT 0 OCT 0 * * ******************************************************************** * * ******************************************************************** * SPECIAL TEST TABLE FOR XADD TEST * * OVERFLOW SHOULD NOT BE SET ******************************************************************** * ADHD2 EQU * DEC 4 ADBS2 EQU * OCT 045526 UPPER BOUNDARY-OUTER RANGEr640 OCT 076612 OCT 024776 * OCT 064523 OCT 002353 OCT 125774 * OCT 077777 OCT 177777 OCT 177776 * * OCT 132251 LOWER BOUNDARY-OUTER RANGE OCT 101165 OCT 153776 * OCT 113254 OCT 175424 OCT 050774 * OCT 100000 OCT 0 OCT 000376 * * OCT 040000 UPPER BOUNDARY-INNER RANGE OCT 0 OCT 000001 * OCT 0 OCT 0 OCT 0 * OCT 040000 OCT 0 OCT 000001 * * OCT 137777 LOWER BOUNDARY-INNER RANGE OCT 177777 OCT 177403 * OCT 040000 OCT 0 OCT 000401 * OCT 137777 OCT 177777 OCT 177401 * * ******************************************************************** * * X6   12977-18013 1632 S 0122 FFP DIAG 21MX #2              H0101 * * ******************************************************************** * SPECIAL TEST TABLE XMPY TEST ******************************************************************** * MLHD1 EQU * DEC 4 * MLBS1 EQU * OCT 073017 +0.170141183461E+20 OCT 022476 UPPER BOUNDARY-OUTER RANGE OCT 156600 * OCT 042543 +0.999999999999E+19 OCT 110602 OCT 042600 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183461E+20 OCT 155301 LOWER BOUNDARY-OUTER RANGE OCT 021600 * OCT 042543 +0.999999999999E+19 OCT 110602 OCT 042600 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 067405 +0.146936793852E-20 OCT 132635 UPPER BOUNDARY-INNER RANGE OCT 034167 * OCT 044711 +0.100000000000E-17 OCT 073507 OCT 044613 * OCT 0 0.00E00 OCT 0 OCT 0 * * OCT 067405 +0.146936793853E-20 OCT 132635 LOWER BOUNDARY-INNER RANGE OCT 035567 * OCT 133066 -0.100000000000E-17 OCT 104270 OCT 133613 * OCT 0 0.00E00 OCT 0 OCT 0 * * ******************************************************************** * * * * * ******************************************************************** * SPECIAL TEST TABLE XDIV TEST ******************************************************************** * * DVHD1 EQU * DEC 6 * DVBS1 EQU * OCT 073017 +0.170141183461E+20 OCT 022476 UPPER BOUNDARY-OUTER RANGE OCT 156600 * OCT 045616 +0.999999999999E-21 OCT 150050 OCT 035167 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183461E+20 OCT 155301 LOWER BOUNDARY-OUTER RANGE OCT 021600 * OCT 045616 +0.999999999999E-21 OCT 150050 OCT 035167 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * OCT 067405 +0.146936793852E-20 OCT 132635 UPPER BOUNDARY-INNER RANGE OCT 034167 * OCT 067405 +0.999999999999E+18 OCT 132635 OCT 035570 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 110372 -0.146936793852E-20 OCT 045142 LOWER BOUNDARY-INNER RANGE OCT 144167 * OCT 067405 +0.999999999999E+18 OCT 132635 OCT 035570 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 073017 +0.170141183466E+20 OCT 022476 DIVIDE BY 0 OCT 166200 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * * OCT 104760 -0.170141183466E+20 OCT 155301 DIVIDE BY 0 OCT 012200 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 100000 -0.170141183460E+39 OCT 0 OCT 000376 * * * * ******************************************************************** * TABLE FOR XADD TEST ******************************************************************** * ADHED DEC 18 NR. OF ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS. * * 1ST WORD - 1ST WORD OF 1ST OPERAND * 2ND WORD - 2ND WORD OF 1ST OPERAND * 3RD WORD - 3RD WORD OF 1ST OPERAND * * 4TH WORD - 1ST WORD OF 2ND OPERAND * 5TH WORD - 2ND WORD OF 2ND OPERAND * 6TH WORD - 3RD WORD OF 2ND OPERAND * * 7TH WORD - 1ST WORD OF RESULT * 8TH WORD - 2ND WORD OF RESULT * 9TH WORD - 3RD WORD OF RESULT * ADBAS EQU * OCT 072423 0.389056288128E+38 OCT 147144 OCT 010772 * OCT 0 0.00E+00 OCT 0 OCT 0 * OCT 072423 0.380056288128E+38 OCT 147144 OCT 010772 * * OCT 045526 0.100141183460E+39 OCT 076612 OCT 022776 * OCT 132251 -0.100141183460E+39 OCT 101165 OCT 155776 * OCT 0 0.00E+00 OCT 0 OCT 0 * * OCT 074151 0.298123765034E+30 OCT 043132 OCT 137704 * OCT 046764 0.772036481090E+30 OCT 126337 OCT 167710 * OCT 066016 0.107016024612E+31 OCT 177166 OCT 117710 * * OCT 066352 0.200912867305E+22 OCT 041353 OCT 051216 * OCT 066217 0.100128749347E+22 OCT 047614 OCT 103214 * OCT 050630 0.301041616652E+22 OCT 172530 OCT 145620 * * OCT 046602 0.213054823012E+14 OCT 043321 OCT 036132 * OCT 043116 0.773023549017E+14 OCT 055547 OCT 075536 * OCT 054656 0.986078372029E+14 OCT 166433 OCT 145136 * * OCT 065712 0.220756933711E+06 OCT 116740 OCT 173044 * OCT 057141 0.386579030127E+06 OCT 030173 OCT 063446 * OCT 045043 0.607335963838E+06 OCT 037665 OCT 170450 * * OCT 044776 0.289045238812E+00 OCT 157147 OCT 141777 * OCT 052642 0.669023651899E+00 OCT 110450 OCT 112000 * OCT 075242 0.958068890712E+00 OCT 000134 OCT 073000 * * OCT 113621 -0.330954612881E+32 OCT 131403 OCT 143322 * OCT 135020 -0.443266128566E+32 OCT 117647 OCT 031324 * OCT 102731 -0.774220741446E+32 OCT 074451 OCT 012724 * * OCT 104621 -0.559274621027E+24 OCT 124573 OCT 125636 * OCT 134546 -0.333392230092E+24 OCT 142537 OCT 137636 * OCT 120574 -0.892666851119E+24 OCT 033555 OCT 132640 * * OCT 130355 -0.556432098326E+16 OCT 017101 OCT 100552 * E OCT 125166 -0.300954281811E+16 OCT 130653 OCT 017550 * OCT 103050 -0.857386380138E+16 OCT 073427 OCT 010152 * * OCT 132014 -0.398201765439E+08 OCT 106756 OCT 114064 * OCT 125400 -0.222815023671E+08 OCT 134150 OCT 101062 * OCT 104614 -0.621016789110E+08 OCT 165042 OCT 154464 * * OCT 040030 +0.530193762998E-22 OCT 131703 OCT 005557 * OCT 051064 +0.339991276308E-22 OCT 070321 OCT 106555 * OCT 064462 +0.870185039307E-22 OCT 166053 OCT 151157 * * OCT 043026 +0.778120659375E-14 OCT 036646 OCT 157245 * OCT 050071 +0.111332091996E-14 OCT 022545 OCT 124237 * OCT 050035 +0.889452751371E-14 OCT 061123 OCT 111645 * * OCT 075774 +0.923761080010E-06 OCT 030143 OCT 155731 * OCT 042047 +0.991776928998E-09 OCT 103065 OCT 033707 * OCT 076036 +0.924752856939E-06 OCT 042046 OCT 173331 * * OCT 131214 -0.391022576801E-26 OCT 146301 OCT 152523 * OCT 123204 -0.225889001134E-26 OCT 021076 OCT 142121 * OCT 102716 -0.616911577934E-26 OCT 156741 OCT 033523 * * OCT 123541 -0.600519744432E-18 OCT 000547 OCT 174611 * OCT 113413 -0.711198003215E-18 OCT 131367 OCT 166211 * OCT 117466 -0.131171774765E-17 OCT 055057 OCT 171213 * * OCT 111035 -0.499701254438E-10 OCT 050771 OCT 033675 * OCT 134377 -0.322876411235E-10 OCT 126206 OCT 163675 * OCT 122616 -0.822577665673E-10 OCT 077500 OCT 007677 * * OCT 100734 -0.769881020151E-02 OCT 154575 OCT 155363 * OCT 133440 -0.111198022357E-02  OCT 010516 OCT 052357 * OCT 133722 -0.881079042509E-02 OCT 067350 OCT 133765 * * ******************************************************************** * * * ******************************************************************** * TEST TABLE FOR XSUB TEST ******************************************************************** * SBHED DEC 7 NR. OF ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS * SBBAS EQU * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * OCT 077777 +0.170141183460E+39 OCT 177777 OCT 177776 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 040000 +0.146936793854E-38 OCT 0 OCT 001001 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 051245 +0.999127650234E+26 OCT 054730 OCT 045256 * OCT 044756 +0.111723012883E+26 OCT 116524 OCT 152650 * OCT 044547 +0.887404637351E+26 OCT 103055 OCT 127656 * * OCT 054207 +0.398701183404E+18 OCT 104722 OCT 102566 * OCT 107115 -0.512054382698E+18 OCT 012007 OCT 154566 * OCT 062435 +0.910755566102E+18 OCT 035345 OCT 053170 * * OCT 043026 +0.778120659375E-14 OCT 036646 OCT 157245 * OCT 050071 +0.111332091996E-14 OCT 022545 OCT 124237 * OCT 074036 +0.666788567379E-14 OCT 030764 OCT 051243 * * OCT 042047 +0.991776928998E-09 OCT 103065 OCT 033707 * OCT 100412 -0.923761080009E-09 OCT 005743 OCT 075305 * OCT 040721 +0.191553800901E-08 OCT 040041 OCT 136711 * * OCT 107005 -0.351227790163E-30 OCT 021403 OCT 141067 * OCT 132331 -0.231579889015E-30 OCT 014163 OCT 140467 * OCT 131130 -0.119647901148E-30 OCT 012440 OCT 001065 * * ******************************************************************** * * * * * ******************************************************************** * TABLE FOR XMPY TESTS ******************************************************************** MLHED DEC 18 NR. OF ENTRIES. EACH ENTRY * * CONSISTS OF 9 WORDS. * * FIRST 3 WORDS - 1ST OPEAND * SECOND 3 WORDS - 2ND OPEAND * LAST 3 WORDS - EXPECTED OUTPUT * MLBAS EQU * OCT 070130 +0.259048713216E+21 OCT 027501 OCT 057210 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 104305 -0.671190053874E+17 OCT 147543 OCT 015160 * OCT 0 +0.00E+00 OCT 0 OCT 0 * OCT 0 +0.00E+00 OCT 0 OCT 0 * * OCT 123061 -0.444697001151E+30 OCT 132061 OCT 165706 * OCT 132376 -0.300015997644E+03 OCT 174745 OCT 002422 * OCT 064477 +0.133416214449E+33 OCT 030237 OCT 161726 * * OCT 051200 +0.510669117427E+29 OCT 143630 OCT 053700 * OCT 047776 +0.199987005543E+02 OCT 125533 OCT 126412 * OCT 063437 +0.102127187617E+31 OCT 041136 OCT 071710 * * OCT 054441 +0.980022398709E+14 OCT 166261 OCT 154136 * OCT 055553 +0.599117266542E+07 OCT 002252 OCT 054456 * OCT 077521 +0.587148340664E+21 OCT 043703 OCT 172612 * * OCT 041726 +0.444590012834E+07 OCT 146040 OCT 155456 * OCT 043316 +0.290016541196E+06 OCT 004250 OCT 136446 * OCT 045415 +0.128938457772E+1*($3 OCT 051722 OCT 127522 * * OCT 077600 +0.510008296672E+03 OCT 103756 OCT 142022 * OCT 075775 +0.154988760012E+02 OCT 131263 OCT 067410 * OCT 075602 +0.790455534971E+04 OCT 034255 OCT 114032 * * OCT 060463 +0.221008901154E-10 OCT 061737 OCT 005273 * OCT 053346 +0.434501999876E+02 OCT 100234 OCT 157414 * OCT 040775 +0.960288095417E-09 OCT 110433 OCT 151707 * * OCT 061000 +0.340011987202E-15 OCT 072331 OCT 035233 * OCT 050777 +0.200192506734E-01 OCT 132256 OCT 166367 * OCT 076620 +0.680678520374E-17 OCT 021141 OCT 121217 * * OCT 064022 +0.550960071891E-20 OCT 145524 OCT 113173 * OCT 072360 +0.697011278004E-05 OCT 064014 OCT 067737 * OCT 057424 +0.384025383838E-25 OCT 100033 OCT 044131 * rb*   12977-18014 1632 S 0122 FFP DIAG 21MX #2              H0101 * OCT 052700 +0.113490887012E-20 OCT 052206 OCT 064567 * OCT 046617 +0.551103480763E-12 OCT 114157 OCT 011661 * OCT 063753 +0.625452228671E-33 OCT 145654 OCT 027045 * * OCT 122556 -0.522100769010E+20 OCT 010565 OCT 136604 * OCT 064733 +0.433599800126E+06 OCT 176315 OCT 050446 * OCT 132430 -0.226382789088E+26 OCT 120703 OCT 160252 * * OCT 063353 +0.622105439987E+26 OCT 030262 OCT 006254 * OCT 106603 -0.166601987643E-08 OCT 010601 OCT 056707 * OCT 121762 -0.103644002825E+18 OCT 012407 OCT 020162 * * OCT 136736 -0.346709115603E+08 OCT 154016 OCT 011064 * OCT 065256 +0.266700199801E+02 OCT 014667 OCT 134412 * OCT 110705 -0.924673904043E+09 OCT 030437 OCT 165074 * * OCT 103464 -0.900006521306E-06 OCT 001353 OCT 001331 * OCT 057561 +0.111111600077E-07 OCT 131402 OCT 040315 * OCT 122755 -0.100001164662E-13 OCT 046445 OCT 115645 * * OCT 135233 -0.300947600112E-16 OCT 030162 OCT 146225 * OCT 042374 +0.411197650034E-05 OCT 146771 OCT 125737 * OCT 132462 -0.123748945949E-21 OCT 143463 OCT 017161 * * OCT 103660 -0.199034120660E-21 OCT 173053 OCT 153561 * OCT 075724 +0.900994750110E-09 OCT 167475 OCT 160705 * OCT 105633 -0.179328697807E-30 OCT 164310 OCT 016065 * * OCT 047711 +0.600237011542E-34 OCT 000721 OCT 050037 * OCT 105475 -0.222697990123E-03 OCT 175523 OCT 002751 * OCT 133470 -0.133671576068E-37 OCT 163311 OCT 072007 * * * **********************************|S********************************** * HED SUBROUTINES * * SUBROUTINE TO TURN ON MEMORY PROTECT LOGIC. * * ENTER WITH (A)=EXIT ADDRESS AND * (B)=FENCE ADDRESS * MEMTN NOP STA MPCKX STORE EXIT ADDRESS LDA PMMTN SET INTERRUPT ADDRESS. STA MPPAR CLA STA MPIND RESET INDICATOR. INA ANNOUNCE THAT WE ARE DOING STA MPTES A MEM. PROTECT TEST. OTB MPPAR LOAD FENCE REGISTER. STF INTP STC MPPAR TURN ON MEM. PROTECT LOGIC. JMP MEMTN,I * * * * MEMORY PROTECT VIOLATION ROUTINE. * * MPCHK NOP CLF INTP LIA MPPAR GET VIOLATION REGISTER. SSA JMP MPCK1 PARITY ERROR! CLF MPPAR TURN OFF PARITY LOGIC LDA TRHLT MEMORY PROTECT VIOLATION! STA MPPAR RESTORE TRAP CELL HALT. CLA,INA SET INDICATOR. STA MPIND STF MPPAR TURN ON PARITY LOGIC. JMP MPCKX,I RETURN * MPCK1 EQU * OCT 106077 HALT ON PARITY ERROR. JMP *-1 * MPCKX BSS 1 EXIT ADDRESS * * HED CONSTANTS AND STORAGE RM111 ASC 18,E111 NOT INTERRUPTIBLE DURING PARAM. ASC 3,FETCH/ RM112 ASC 18,E112 P-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ RM113 ASC 18,E113 A-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ RM114 ASC 18,E114 B-REG NOT RESTORED ON INTERR. D ASC 10,URING PARAM. FETCH/ HED CONSTANTS AND STORAGE ORG 140B IOIP DEF IOID TSTP DEF TSTD POINTER TO TEST TABLE HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 007777 STDB OCT 0 * * * * ORG 150B ******************************************************************** * * MAPPING CODES FOR MACRO * .GOTO EQU 221B .ENTR EQU 223B .ENTP EQU 224B .SETP EQU 227B .XMPY EQU 203B .XDIV EQU 204B .XADD EQU 213B .XSUB EQU 214B XADD EQU 207B XSUB EQU 210B XMPY EQU 211B XDIV EQU 212B ************2******************************************************** * * * * OUTPUT STORED HERE * POUTP DEF OUTPT OUTPT BSS 1 BSS 1 BSS 1 * * MPPAR EQU 5 HDMS ASC 14,START 21MX FFP DIAGNOSTIC 2/ * IOID EQU * DEF STCSC DEF STFSC DEF CLCSC DEF INTSC DEC -1 TEMP BSS 9 DEC -6,-5,-4,-3,-2,-1 . DEC 0,1,2,3,4,5,6,7,8,9 BIT5 OCT 40 BIT14 OCT 40000 BIT15 OCT 100000 INDIC BSS 1 PADHD DEF ADHED PADBS DEF ADBAS PADB1 DEF ADBS1 PADH1 DEF ADHD1 PADH2 DEF ADHD2 PADB2 DEF ADBS2 INTSC NOP ITRAP JSB *+1,I INSERT IN TRAP CELL DEF INTSB FOR INTERRUPT TEST B77 OCT 77 P40 DEC 40 P8 DEC 8 P15 DEC 15 J BSS 1 M16 DEC -16 M17 DEC -17 M15 DEC -15 PINTR DEF INNTR PINTP DEF INNTP PPROV DEF PROVN PRNTY DEF RNTY1 INNTR RAM .ENTR INSERTS DEF TTB1 FOR RSS .ENTR TEST * INNTP NOP INSERTS NOP FOR RAM .ENTP .ENTP DEF TTB1 TEST * PMMTN JSB *+1,I INSERT FOR TRAP CELL DEF MPCHK OF MEMORY PROTECT, IF MEM. * PROTECT IS USED. TRHLT OCT 106077 INSERT FOR TRAP CELL OF MEM. * PROTECT, IF IT IS NOT USED. MPTES BSS 1 MPIND BSS 1 INTAD BSS 1 INTN1 BSS 1 PSBHD DEF SBHED PSBBS DEF SBBAS B10 OCT 10 AREG BSS 1 BREG BSS 1 INTID BSS 1 PDVH1 DEF DVHD1 PDVB1 DEF DVBS1 PMLHD DEF MLHED PMLBS DEF MLBAS PDVHD DEF DVHED PDVBS DEF DVBAS PMLH1 DEF MLHD1 PMLB1 DEF MLBS1 PNTRP BSS 1 PNTRY DEF ENTRY PERMS DEF ERMES PDATC DEF DATCK PCHEK DEF CHECK PXAD2 DEF XADD2 PMEMT DEF MEMTN PR142 DEF E142 PR162 DEF E162 PR163 DEF E163 PPNRS DEF PNRES PANRS DEF ANRES PBNRS DEF BNRES PINTK DEF INTCK PPRNN DEF PRNIN B60 OCT 60 * * ERROR AND NON-ERROR MESSAGES * MMS01 ASC 8,H030 .GOTO TEST/ MMS02 ASC 8,H050 .ENTR TEST/ MMS03 ASC 8,H060 .ENTP TEST/ kMMS04 ASC 8,H100 .SETP TEST/ MMS08 ASC 8,H140 .XADD TEST/ MMS09 ASC 8,H150 .XSUB TEST/ MMS10 ASC 8,H160 .XMPY TEST/ MMS11 ASC 8,H200 .XDIV TEST/ MMS05 ASC 8,H115 XADD TEST/ PERN6 DEF ERNR6 ERNR6 ASC 2,E115 MMS06 ASC 8,H125 XSUB TEST/ PERN7 DEF ERNR7 ERNR7 ASC 2,E125 MMS07 ASC 8,H135 XMPY TEST/ PERN8 DEF ERNR8 ERNR8 ASC 2,E135 MMS12 ASC 8,H215 XDIV TEST/ PER12 DEF ERN12 ERN12 ASC 2,E215 * * * BUFFER FOR DATA ERROR MESSAGES FOR * DBLE XADD XSUB * XMPY XDIV * TESTS. * RMS00 ASC 8,XXXX DATA ERROR OCT 6412 CR-LF ASC 2,ACT RMAC1 ASC 11,XXXXXX XXXXXX XXXXXX OCT 6412 ASC 2,EXP RMEX1 ASC 12,XXXXXX XXXXXX XXXXXX/ PRAC1 DEF RMAC1 PREX1 DEF RMEX1 PERN2 DEF ERNR2 PERN3 DEF ERNR3 PERN4 DEF ERNR4 PERN5 DEF ERNR5 ERNR2 ASC 2,E140 ERNR3 ASC 2,E150 ERNR4 ASC 2,E160 ERNR5 ASC 2,E200 E144 ASC 2,E144 RMS01 ASC 18,E030 FAILED FOR INDIRECT ADDRESSING/ RMS02 ASC 10,E031 FAILED FOR J=0/ RMS03 ASC 11,E032 FAILED FOR J=NEG/ RMS04 ASC 11,E033 FAILED FOR J>16/ RMS05 ASC 10,E034 FAILED FOR J=8/ RMS06 ASC 18,E050 FAILED FOR ACTUAL NR OF PARAM. ASC 7, ALLOWED NR/ * * BUFFER TO OUTPUT ERROR MESSAGE "NO CHECK ON MEM PROT VIOLATION" * * RMS09 ASC 18,XXXX NO CHECK ON MEM PROT VIOLATION/ E053 ASC 2,E053 E104 ASC 2,E104 E145 ASC 2,E145 PR145 DEF E145 PR053 DEF E053 PR104 DEF E104 * RMS10 ASC 18,E060 FAILED FOR ACTUAL NR OF PARAM. ASC 7,< ALLOWED NR/ RMS11 ASC 15,E100 A-REG. NOT=0 UPON RETURN/ RMS12 ASC 17,E101 B-REG. DOES NOT CONTAIN LAST ASC 11,ADDRESS+1 UPON RETURN/ RMS13 ASC 14,E102 INCORRECT VALUE STORED/ RMS14 ASC 16,E103 MORE LOCATIONS FILLED THAN ASC 5,REQUESTED/ RMS17 ASC 17,E054 RETURN ADDRESS NOT STORED IN ASC 9,CORRECT LOCATION/ * * BUFFER TO OUTPUT "OVERFLOW NOT SET". \* RMS18 ASC 11,XXXX OVERFLOW NOT SET/ E141 ASC 2,E141 E161 ASC 2,E161 E201 ASC 2,E201 PR141 DEF E141 PR161 DEF E161 PR201 DEF E201 * * * RMS20 ASC 16,E055 RETURN ADDR. NOT IN A-REG/ RMS21 ASC 15,E056 INCORRECT ADDR. IN B-REG/ * * BUFFER TO OUTPUT "OVERFLOW SET" * RMS22 ASC 9,XXXX OVERFLOW SET/ E143 ASC 2,E143 PR143 DEF E143 * * ****************RMS25 MESSAGE ON OTHER PAGE * PT18 DEF TB18 PXST6 DEF XSTP6 PXST4 DEF XSTP4 PR105 DEF E105 PR106 DEF E106 PR107 DEF E107 PR110 DEF E110 * * USED FOR INTERRUPT TEST OF .SETP * CNT1 DEF CNT2,I CNT2 DEF CNT3,I CNT3 DEF CNT CNT DEC 31 * * PXS10 DEF XST10 PXS11 DEF XST11 PXS15 DEF XST15 PNTR4 DEF NNTR4 HED SUBROUTINES * * SUBROUTINE TO PRINT "OVERFLOW SET" * ENTER WITH (B)=POINTER TO ERROR NUMBER STRING * PROVS NOP LDA B,I MOVE STA RMS22 ERROR INB NUMBER LDA B,I INTO STA RMS22+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS22 JMP PROVS,I EXIT. * * * * * HED TEST DATA TABLES * * ******************************************************************** * TABLE FOR XDIV TESTS ******************************************************************** * DVHED EQU * DEC 17 NR. OF TABLE ENTRIES. EACH ENTRY * CONSISTS OF 9 WORDS. * * * FIRST 3 WORDS - 1ST OPERAND * SECOND 3 WORDS - 2ND OPERAND * LAST 3 WORDS - EXPECTED OUTPUT * DVBAS EQU * OCT 062646 +0.412336000120E+34 OCT 007535 OCT 145340 * OCT 042272 +0.900813201144E+07 OCT 001001 OCT 073460 * OCT 057250 +0.457737519385E+27 OCT 066051 OCT 066662 * * OCT 072235 +0.881109231566E+25 OCT 022130 OCT 030646 * OCT 071116 +0.234100876999E+06 OCT 116020 OCT 060044 * OCT 040512 +0.376380149815E+20 W OCT 121346 OCT 140204 * * OCT 056370 +0.511110388901E+14 OCT 067242 OCT 060534 * OCT 076377 +0.399994678903E+04 OCT 111406 OCT 020030 * OCT 057463 +0.127779297041E+11 OCT 173575 OCT 001104 * * OCT 070262 +0.721269304566E+04 OCT 142655 OCT 141432 * OCT 057544 +0.119238671105E+02 OCT 012160 OCT 105410 * OCT 045634 +0.604895457055E+03 OCT 123625 OCT 107024 * * OCT 045015 +0.666998765432E+18 OCT 037276 OCT 175170 * OCT 047362 +0.222213812456E+17 OCT 035177 OCT 110156 * OCT 074020 +0.300160803715E+02 OCT 073537 OCT 073012 * * OCT 052443 +0.991134896977E-08 OCT 044560 OCT 156715 * OCT 076717 +0.239967811234E-03 OCT 167465 OCT 171751 * OCT 053236 +0.413028269033E-04 OCT 044516 OCT 013345 * * OCT 054147 +0.221007761103E+02 OCT 030732 OCT 044012 * OCT 064254 +0.113489002136E-16 OCT 152477 OCT 004221 * OCT 066032 +0.194739364118E+19 OCT 020313 OCT 130572 * * OCT 074025 +0.388012009141E-24 OCT 075200 OCT 021537 * OCT 042534 +0.211678009126E-02 OCT 153241 OCT 162361 * OCT 067314 +0.183302937676E-21 OCT 140567 OCT 137561 * * OCT 064401 +0.336015800197E+04 OCT 041626 OCT 104430 * OCT 070140 +0.911697334097E+04 OCT 014152 OCT 032742 * OCT 073632 +0.368560691832E-30 OCT 151411 OCT 020467 * * OCT 045430 +0.216450126987E+20 OCT 121027 OCT 121202 * OCT 131634 -0.111161366901E-08 OCT 044430 OCT 027707 * OCT 101052 -0.194717043359E+29 OCT 142161 OCT 132274 * 8*($* OCT 104244 -0.880691123011E+22 OCT 161600 OCT 047222 * OCT 041315 +0.334011980776E+02 OCT 064725 OCT 116414 * OCT 106646 -0.263670518933E+21 OCT 130440 OCT 020610 * * OCT 065170 +0.665431209112E+01 OCT 007764 OCT 106006 * OCT 102772 -0.346801235431E-11 OCT 165764 OCT 175665 * OCT 110120 -0.191876827741E+13 OCT 017746 OCT 013522 * * OCT 040240 +0.200012067011E+29 OCT 116103 OCT 161676 * OCT 136726 -0.999803245095E+25 OCT 126231 OCT 031650 * OCT 101367 -0.200051428111E+04 OCT 142601 OCT 025426 * * OCT 120520 -0.666301256707E+16 OCT 014773 OCT 034552 * OCT 055365 +0.200019760222E+15 OCT 056540 OCT 144140 * OCT 136540 -0.333117715953E+02 OCT 057571 OCT 032414 * * OCT 060543 +0.345990123677E-12 OCT 033503 OCT 072657 * OCT 121570 -0.110302660799E-04 OCT 127430 OCT 003341 * OCT 136243 -0.313673415647E-07 OCT 117441 OCT 137321 * * OCT 131643 -0.555610345980E-09 OCT 031347 OCT 160305 * OCT 045777 +0.996110388604E+07 OCT 043761 OCT 065060 * OCT 137661 -0.557779893008E-16 OCT 037111 OCT 013627 * %*   12977-18015 1632 S 0122 FFP DIAG 21MX #2              H0101 * OCT 116412 -0.900016501999E-10 OCT 144640 OCT 106677 * OCT 074541 +0.333650123667E+14 OCT 113327 OCT 013132 * OCT 113645 -0.269748589362E-23 OCT 062306 OCT 111545 * * * ******************************************************************** * * HED SUBROUTINES * * SUBROUTINE TO TURN ON THE INTERR. INTERFACE * ENTER WITH (A)=EXIT ADDRESS * INTON NOP STA INTN1 SAVE EXIT ADDRESS LDA ITRAP SET TRAP CELL STA INTSC,I CLA CLEAR INDICATOR STA INTID CLC INTP STCSC STC CH EXECUTE "STC SC" INSTRUCTION STFSC STF CH EXECUTE "STF SC" INSTRUCTION JMP INTON,I EXIT * * * * * SUBROUTINE TO TURN OFF THE INTERR. INTERFACE * INTOF NOP CLCSC CLC CH EXECUTE "CLC SC" INSTRUCTION LDA TRHLT SET HALT IN STA INTSC,I TRAP CELL JMP INTOF,I EXIT * * * * * SUBROUTINE TO CHECK IF MEM. PROTECT HARDWARE * IS PRESENT * * IF NOT PRESENT EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * MEMPR NOP LDA BIT5 IF MEM. PROTECT NOT AND CPTO PRESENT, SZA EXIT TO ISZ MEMPR (P+1) JMP MEMPR,I ELSE EXIT TO (P+2) ORG 4000B HED FFP DIAGNOSTIC - TEST TABLE * TSTD EQU * DEF TST00 .GOTO TEST DEF TST01 .ENTR TEST DEF TST02 .ENTP TEST DEF TST03 .SETP TEST DEF TST04 XADD TEST DEF TST05 XSUB TEST DEF TST06 XMPY TEST DEF TST07 .XADD TEST DEF TST08 .XSUB TEST DEF TST09 .XMPY TEST DEF TST10 .XDIV TEST DEF TST11 XDIV TEST DEC -1 * HED FFP DIAGNOSTIC - TEST 1 * ********* * .GOTO * ********* TST00 EQU * XGOTO NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS01 CLA RESET INDICATOR. STA INDIC * * CHECK 16 INDIRECT1S (CHECKS SUBR. "GETQ1") * LDA M16 FILL LOCATIONS 1-16 OF STA TEMP LDB PTTB1 TEST TABLE WITH LDA PTTB2 STA TEMP+1 "DEF NEXT LOCATION,I". XGOT3 EQU * LDA TEMP+1 IOR BIT15 STA B,I INB ISZ TEMP+1 ISZ TEMP JMP XGOT3 LDA JNGOT STORE "JMP RETURN" IN LOC. 17 STA TTB17 CLA,INA SET SELECTION NR. STA J JMP XGOT1 GO TO MICRO-CODE. * * ******************************************************************** XGOT1 EQU * RAM .GOTO CALLING SEQUENCE FOR DEF *+18 ".GOTO" FIRMWARE. DEF J PTTB1 DEF TTB1 PTTB2 DEF TTB2 PTTB3 DEF TTB3 PTTB4 DEF TTB4 PTTB5 DEF TTB5 PTTB6 DEF TTB6 PTTB7 DEF TTB7 PTTB8 DEF TTB8 PTTB9 DEF TTB9 PTB10 DEF TTB10 PTB11 DEF TTB11 PTB12 DEF TTB12 PTB13 DEF TTB13 PTB14 DEF TTB14 PTB15 DEF TTB15 PTB16 DEF TTB16 ******************************************************************** ******************************************************************** PTB17 DEF TTB17 PTB18 DEF TTB18 TTB18 EQU * * * AFTER COMPLETION OF A SUBTEST, CONTROL WILL COME HERE TO * DETERMINE WHICH SUBTEST HRS TO BE EXECUTED NEXT. * NGOT EQU * LDA INDIC ADA DNGOT LDA A,I JMP A,I * DNGOT DEF *+1 DEF NGOT1 DEF NGOT2 DEF NGOT3 DEF NGOT4 DEF NGOT5 * * NGOT1 EQU * TEST FOR 16 INDIRECTS IS OK. CLA,INA SET INDIC=1. STA INDIC * * NOW CHECK FOR J=0 * LDA JRGOT FILL LDB M16 STB TEMP LOCATIONS OF LDB PTTB1 NGT11 EQU * TEST TABLE WITH STA B,I INB "JMP TO ERROR". ISZ TEMP JMP NGT11 * LDA JNGOT STORE "JMP TO RETURN" STA TTB1 IN LOC. 1. CLA SET SEL. NR AND STA J GO TO MIRCO-CODE. JMP XGOT1 * NGOT2 EQU * TEST FOR J=0n IS O.K. LDA .+2 SET INDIC=2. STA INDIC * * NOW CHECK FOR J<0 * CCA SET SEL. NR. AND STA J GO TO MICRO-CODE. JMP XGOT1 * NGOT3 EQU * TEST FOR J<0 IS O.K. LDA .+3 SET INDIC=3. STA INDIC * * NOW CHECK FOR J>16 * LDA JRGOT STORE "JMP ERROR" IN LOC. 1. STA TTB1 LDA JNGOT STORE "JMP RETURN" IN LOC. 16. STA TTB16 LDA P40 SET LOC. OF SEL. NR. AND STA J GO TO MIRCO-PROGRAM. JMP XGOT1 * NGOT4 EQU * TEST FOR J>16 IS OK. LDA .+4 SET INDIC=4. STA INDIC * * NOW CHECK FOR J=8 * LDA JRGOT STORE "JMP ERROR" IN LOC. 16. STA TTB16 LDA JNGOT STORE "JMP RETURN" IN LOC. 8 STA TTB8 LDA P8 GET SEL. NR. AND STA J GO TO MICRO. JMP XGOT1 * * NGOT5 EQU * JMP XGOTO,I RETURN. * * * * UPON DETECTING AN ERROR(IF FIRMWARE RETURNS TO * A TEST TABLE LOCATION!!!), CONTROL WILL COME HERE * TO DETERMINE WHICH ERROR MESSAGE HAS TO BE PRINTED. * RGOT EQU * LDA INDIC ADA DRGOT LDA A,I JMP A,I * DRGOT DEF *+1 DEF RGOT1 DEF RGOT2 DEF RGOT3 DEF RGOT4 DEF RGOT5 * RGOT1 EQU * * * TEST FAILED FOR 16 INDIRECTS * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS01 JMP NGOT1 GO DO NEXT SUBTEST. * RGOT2 EQU * * * TEST FAILED FOR J=0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS02 JMP NGOT2 DO NEXT SUBTEST. * RGOT3 EQU * * * TEST FAILED FOR J<0 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS03 JMP NGOT3 DO NEXT SUBTEST. * RGOT4 EQU * * * TEST FAILED FOR J>16 * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS04 JMP NGOT4 DO NEXT SUBTEST. * RGOT5 EQU * * * TEST FAILED FOR J=8 * JSB ERMS,I PRINT ERROR MESSAGE.  DEF RMS05 JMP XGOTO,I TEST.DONE. EXIT. * JRGOT JMP RGOT USED TO JUMP TO "ERROR ROUTINE" JNGOT JMP NGOT USED TO JUMP AFTER NON-ERROR EXIT * * * HED TEST TABLE * * * * ****************** *** TEST TABLE *** ****************** * TB18 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 BSS 1 * * TTB1 BSS 1 TTB2 BSS 1 TTB3 BSS 1 TTB4 BSS 1 TTB5 BSS 1 TTB6 BSS 1 TTB7 BSS 1 TTB8 BSS 1 TTB9 BSS 1 TTB10 BSS 1 TTB11 BSS 1 TTB12 BSS 1 TTB13 BSS 1 TTB14 BSS 1 TTB15 BSS 1 TTB16 BSS 1 TTB17 BSS 1 * ******************************************************************** ****************** ****************** ENTRY NOP THE TEST TABLE + THE FOLLOWING * 4 LOCATIONS FORM THE CALLING * SEQUENCE FOR .ENTR AND .ENTP RNTY1 BSS 1 "RAM .ENTR" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTR * NOP'S FOR .ENTP BSS 1 "RSS" FOR .ENTR * "RAM .ENTP" INSERTED BSS 1 "DEF TTB1" INSERTED FOR .ENTP * ******************************************************************** ******************************************************************** ******************************************************************** STA TEMP+2 SAVE (A). STB TEMP+3 SAVE (B). LDA MPTES MEM. PROTECT TEST? SZA JMP NNTR4 YES. LDA ENTRY GET CONTENTS OF "ENTRY". CPA PNTRP CORRECT RETURN ADDRESS? JMP ENTRY,I YES. GO ON. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS17 JMP PNTRP,I EXIT TO CORRECT RETURN ADDRESS * * HED SUBROUTINES USED BY .ENTR AND .ENTP TESTS * * THIS SUBROUTINE IS USED BY .ENTR & .ENTP TESTS  * ENTRP NOP LDA RENTR SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RENTR DEF *+17 PPTB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 JMP ENTRP,I * * ENTF1 NOP LDA RNTF1 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF1 DEF *+18 PPB1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 JMP ENTF1,I * * ENTF2 NOP LDA RNTF2 SAVE RETURN ADDRESS. STA PNTRP JSB ENTRY RNTF2 DEF *+19 PPPT1 DEF PTTB1 DEF PTTB2 DEF PTTB3 DEF PTTB4 DEF PTTB5 DEF PTTB6 DEF PTTB7 DEF PTTB8 DEF PTTB9 DEF PTB10 DEF PTB11 DEF PTB12 DEF PTB13 DEF PTB14 DEF PTB15 DEF PTB16 DEF PTB17 DEF PTB18 JMP ENTF2,I * * HED FFP DIAGNOSTIC - TEST 2 * ********* * .ENTR * ********* TST01 EQU * XENTR NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS02 * CLA RESET INDICATORS. STA MPTES STA INDIC * LDA .-3 SET UP CALLING SEQUENCE. LDB PINTR JSB SETUP * * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * TEST ALSO IF RETURN ADDRESS IS PROPERLY STORED * IN CORRECT LOCATION. MICRO PROGRAM SHOULD PROPERLY * PROCESS B-REG. ON ENTRY. * CLB RESET ENTRY LOCATION. STB TTB17 RESET LPST LOCATION OF TEST TABL STB ENTRY GO TO MICRO CODE WITH (B)=0. JSB ENTRP EXECUTE BTEST. LDB PTB17 CHECK REGISTERS. JSB NTRCK LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTR1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP NNTR1 NO. RNTR1 EQU * JSB ERMS,I YES. ERROR. DEF RMS06 * * TEST FOR ACTUAL NR. OF PARAMETERS = ALLOWED NR. * OF PARAMETERS. * NNTR1 EQU * JSB ENTF1 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPB1 JSB ERPCK CHECK RESULTS. RSS JMP NNTR2 NO ERROR. JSB ERMS,I ERROR. DEF RMS07 * * TEST FOR ACTUAL NR. OF PARAMETERS > ALLOWED NR. * OF PARAMETERS. * NNTR2 EQU * JSB ENTF2 EXECUTE TEST. LDB PNTRY CHECK REGISTERS. JSB NTRCK LDA M17 LDB PPPT1 JSB ERPCK CHECK RESULT. RSS JMP NNTR3 NO ERROR. JSB ERMS,I ERROR. DEF RMS08 * * TEST WITH MEMORY PROTECT VIOLATION. * SET FENCE ADDRESS ABOVE "ENTRY". NNTR3 EQU * JSB MEMPR IF NO MEM. PROT. PRESENT, JMP XENTR,I EXIT. ELSE LDB PRNTY SET UP FOR MEMORY PROTECT TEST, LDA PNTR4 JSB PMEMT,I CLA,INA SAY THAT WE ARE DOING MEM. PROT. STA INDIC TEST #1. JSB ENTRP EXECUTE TEST. * * * RETURN CODE FROM MEMORY PROTECT TESTS. * NNTR4 EQU * LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP NNTR5 YES. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR053 PRINT ERROR MESSAGE. JSB PRNMP JMP XENTR,I EXIT. * * NNTR5 EQU * LDA INDIC SLA,RSS WHICH TEST? JMP XENTR,I TEST #2. EXIT. * * TEST #1 JUST DONE. NOW DO TEST #2. * SET FENCE ADDRESS ABOVE TTB1. * LDB PTTB2 SET UP MEM. PROTECT. JSB PMEMT,I LDA .+2 SAY THAT WE'RE DOING TEST #2. STA UINDIC JSB ENTRP EXECUTE TEST. * * JMP XENTR,I EXIT. * * * * * SUBROUTINE TO CHECK CONTENTS OF A- AND B-REGISTERS * ON EXIT FROM MICRO. * ENTER WITH (B)=EXPECTED CONTENTS. * NTRCK NOP STB TEMP+4 SAVE EXPECTED CONTENTS OF B. LDA TEMP+2 GET ORIGINAL CONTENTS OF A. CPA PNTRP =RETURN ADDRESS? JMP NTCK1 YES. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS20 NTCK1 EQU * LDB TEMP+3 GET ORIGINAL CONTENTS OF B. CPB TEMP+4 CORRECT? JMP NTRCK,I YES. EXIT. JSB ERMS,I NO. OUTPUT ERROR MESSAGE. DEF RMS21 JMP NTRCK,I EXIT. * * * * * SUBROUTINE TO CHECK RESULTS OF EXECUTION * OF .ENTR & .ENTP TESTS. * ENTER WITH (A)=-NR. OF LOCATIONS TO BE CHECKED. * (B)=ADDRESS OF PTTB1 * ERPCK NOP STA TEMP SET COUNTER. LDA PTTB1 (A) POINTS TO TTB1. ERPK1 EQU * CPB A,I EQUAL? RSS JMP ERPCK,I NO. ERROR. INB YES. BUMP ADDRESS. INA BUMP POINTER. ISZ TEMP DONE? JMP ERPK1 NO. ISZ ERPCK YES. BUMP RETURN ADDRESS AND JMP ERPCK,I EXIT. * * * * * SUBROUTINE TO SET UP CALLING SEQUENCE FOR * .ENTR & .ENTP TEST * * ENTER WITH (A)=-NR. OF WORDS TO BE INSERTED * AND (B)=STARTING ADDRESS OF INSERTIONS. * SETUP NOP STA TEMP SET COUNTER. LDA PRNTY SET DESTINATION POINTER. STA TEMP+1 STUP1 EQU * LDA B,I STORE FROM SOURCE INTO STA TEMP+1,I DESTINATION. INB BUMP POINTERS. ISZ TEMP+1 ISZ TEMP DONE? JMP STUP1 NO. JMP SETUP,I YES. * * * HED FFP DIAGNOSTIC - TEST 3 * ********* * .ENTP * ********* TST02 EQU * XENTP NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS03 CLA CLEAR INDICATOR STA MPTES * * * * .ENTP SUBROUTINE IS THE SAME SU0.*BROUTINE AS .ENTR * BUT WITH A DIFFERENT ENTRY POINT. * SO DO JUST ONE TEST. * TEST FOR ACTUAL NR. OF PARAMETERS < ALLOWED NR. * OF PARAMETERS. * LDA .-4 SET UP CALLING SEQUENCE. LDB PINTP JSB SETUP CLB RESET RETURN ADDRESS LOCATION. STB TTB17 RESET LAST TEST TABLE LOCATION. STB ENTRY GO TO MICRO WITH (B)=0 JSB ENTRP EXECUTE TEST. * LDA M16 LDB PPTB1 JSB ERPCK CHECK RESULTS. JMP RNTP1 ERROR. * LDB TTB17 NO ERROR. SZB,RSS LAST LOCATION CHANGED? JMP RNTP2 NO. O.K. GO TO EXIT. RNTP1 EQU * JSB ERMS,I YES. OUTPUT ERROR MESSAGE. DEF RMS10 RNTP2 EQU * JMP XENTP,I EXIT. * u0   12977-18016 1632 S 0122 FFP DIAG 21MX #2              H0101 * HED FFP DIAGNOSTIC - TEST 4 * * TST03 EQU * ********* * .SETP * ********* XSETP NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS04 * * DO REGULAR TEST * JSB STPPR PREPARE TEST TABLE. JSB STPGO GO TO MICRO. JSB STPCK CHECK RESULTS. * JSB MEMPR IF NO MEM. PROT. PRESENT, JMP XSTP3 SKIP. ELSE * * DO MEMORY PROTECT TEST. * LDB PTTB2 SET FENCE ADDRESS ABOVE "TTB1". LDA PXS15 JSB PMEMT,I JSB STPGO GO TO MICRO. * * RETURN FROM MICRO. * XST15 LDA MPIND SZA DID MEM. PROT. INTERRUPT OCCUR? JMP XSTP3 YES. EXIT. JSB MTNOF NO. TURN OFF MEM. PROTECT. LDB PR104 PRINT ERROR MESSAGE. JSB PRNMP * XSTP3 EQU * JSB PINTK,I IF NOT CONF. FOR INTERR. JMP XSETP,I EXIT. * * * * DO INTERRUPT TEST FOR COUNT > 30 * LDA PXST4 (A)=EXIT ADDRESS JSB INTON TURN ON INTERR. INTERF. CLA,INA (A)=INITIAL VALUE=1 LDB PT18 (B)=INITIAL ADDR STF INTP ENABLE INTERRUPTS * XSTP6 RAM .SETP CALL MICRO DEF CNT * CLF INTP DISABLE INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XSTP4 EQU * JSB PCHEK,I CHECK INTERRUPT RSS JMP XSTP5 INTERRUPTED LDB PR105 NOT INTERRUPTED. PRINT JSB PPRNN,I ERROR MESSAGE JMP XSTP9 DO NEXT INTERR. TEST * XSTP5 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXST6 JMP XSTP7 YES. LDB PR106 NO. PRINT ERROR MESSAGE JSB PPNRS,I XSTP7 EQU * LDA AREG WAS A-REG RESTORED? CPA .+1 JMP XSTP8 YES. LDB PR107 NO. PRINT ERROR MESSAGE JSB PANRS,I XSTP8 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP XSTP9 YES. DO NEXT INTERR. TEST LDB PR110 NO. PRINT ERROR MESSAGE JSB PBNRS,I * * * TEST FOR INTERRUPTIBILITY DURING PARAM. FETCHING * XSTP9 EQU * LDA PXS11 (A)=EXIT ADDRESS JSB INTON TURN ON INTERR. INTERF. CLA,INA (A)=INITIAL VALUE LDB PT18 (B)=INITIAL ADDR. STF INTP TURN ON INTERRUPTS * XST10 EQU * RAM .SETP CALL MICRO DEF CNT1,I * CLF INTP TURN OFF INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XST11 EQU * JSB PCHEK,I CHECK INTERRUPT RSS JMP XST12 INTERRUPTED JSB ERMS,I NOT INTERRUPTED. PRINT DEF RM111 ERROR MESSAGE. JMP XSETP,I EXIT * XST12 EQU * LDA INTAD WAS P-REG RESTORED? CPA PXS10 JMP XST13 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM112 * XST13 EQU * LDA AREG WAS A-REG RESTORED? CPA .+1 JMP XST14 YES. JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM113 * XST14 EQU * LDB BREG WAS B-REG RESTORED? CPB PT18 JMP XSETP,I YES. EXIT JSB ERMS,I NO. PRINT ERROR MESSAGE DEF RM114 JMP XSETP,I EXIT. * * * * * * * * SUBROUTINE TO SET UP THE PARAMETERS, EXECUTE THE * CALLING SEQUENCE FOR SETP MICRO. * STPGO NOP LDB P15 SET COUNT. STB K LDB PTTB1 SET POINTER. CLA SET (A)=0. * RAM .SETP CALLING SEQUENCE. DEF K * JMP STPGO,I EXIT. * K BSS 1 * * * SUBROUTINE TO PREPARE TEST TABLE LOCATIONS * A "0" WILL BE STORED IN EACH LOCATION * STPPR NOP LDB M16 SET COUNTER. STB TEMP CLA (A)=0. LDB PTTB1 SET POINTER. STPP1 EQU * STA B,I STORE. INB BUMP POINTER. ISZ TEMP DONE? JMP STPP1 NO. JMP STPPR,I YES. EXIT. * * * * SUBROUTINE TO CHECK RESULTS * STPCK NOP STB TEMP SAVE (B). SZA,RSS (A)=0? / JMP STPC1 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS11 STPC1 EQU * LDB TEMP RESTORE (B). CPB PTB16 (B)=LAST ADDRESS+1? JMP STPC2 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS12 * * CHECK RESULTS * STPC2 EQU * CLA SET FOR INITIAL VALUE. STA TEMP LDA M15 SET COUNTER. STA TEMP+1 LDB PTTB1 SET POINTER. STPC3 EQU * LDA B,I GET CELL CONTENTS. CPA TEMP OK? JMP STPC4 YES. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS13 JMP STPCK,I EXIT. STPC4 EQU * ISZ TEMP BUMP VALUE. INB BUMP POINTER. ISZ TEMP+1 DONE? JMP STPC3 NO. LDA TTB16 YES. CHECK FOR "OVERRUN". SZA,RSS JMP STPCK,I OK! EXIT. JSB ERMS,I OUTPUT ERROR MESSAGE. DEF RMS14 JMP STPCK,I EXIT. * * * HED FFP DIAGNOSTIC - TEST 5 * ********* * XADD * ********* TST04 EQU * XXAD NOP JSB MSGC,I OUTPUT MESSAGE DEF MMS05 * * DO JUST ONE TEST, SINCE XADD SUBROUTINE USES THE * SAME CODE AS .XADD SUBROUTINE * * LDA PADBS SET POINTER TO INPUT STA TEMP STA XAD1 SET POINTER TO 1ST OPERAND ADA .+3 IN STA XAD2 CALLING SEQUENCE ADA .+3 SET POINTER TO 2ND OPERAND STA TEMP+1 IN CALLING SEQUENCE * * CALL MICRO * RAM XADD DEF *+4 DEF OUTPT POINTER TO OUTPUT XAD1 BSS 1 POINTER TO 1ST OPERAND XAD2 BSS 1 POINTER TO 2ND OPERAND * * EXIT FROM MICRO * LDA TEMP+1 CHECK JSB PDATC,I RESULT RSS JMP XXAD,I OK. * LDB PERN6 ERROR. OUTPUT ERROR JSB PERMS,I MESSAGE JMP XXAD,I EXIT * * HED FFP DIAGNOSTIC - TEST 6 * ********* * XSUB * ********* TST05 EQU * XXSB NOP JSB MSGC,I bj OUTPUT MESSAGE DEF MMS06 * * DO JUST ONE TEST, SINCE XSUB SUBROUTINE USES THE * SAME CODE AS .XSUB SUBROUTINE * * LDA PSBBS SET POINTER TO INPUT STA TEMP STA XSB1 SET POINTER TO 1ST OPERAND ADA .+3 IN CALLING SEQUENCE STA XSB2 ADA .+3 SET POINTER TO 2ND OPERAND STA TEMP+1 IN CALLING SEQUENCE * * CALL MICRO * RAM XSUB DEF *+4 DEF OUTPT POINTER TO OUTPUT XSB1 BSS 1 POINTER TO 1ST OPERAND XSB2 BSS 1 POINTER TO 2ND OPERAND * * EXIT FROM MICRO * LDA TEMP+1 CHECK RESULT JSB PDATC,I RSS JMP XXSB,I OK. * LDB PERN7 ERROR. OUTPUT ERROR JSB PERMS,I MESSAGE JMP XXSB,I EXIT * * HED FFP DIAGNOSTIC - TEST 7 * ********* * XMPY * ********* * TST06 EQU * XXMP NOP JSB MSGC,I OUTPUT MESSAGE DEF MMS07 * * DO JUST ONE TEST, SINCE XMPY SUBROUTINE USES THE * SAME CODE AS .XMPY SUBROUTINE * * LDA PMLBS SET POINTER TO INPUT STA TEMP STA XMP1 SET POINTER TO 1ST OPERAND ADA .+3 SET POINTER TO 2ND OPERAND STA XMP2 IN CALLING SEQUENCE ADA .+3 STA TEMP+1 * * CALL MICRO * RAM XMPY DEF *+4 DEF OUTPT POINTER TO OUTPUT XMP1 BSS 1 POINTER TO 1ST OPERAND XMP2 BSS 1 POINTER TO 2ND OPERAND * * EXIT FROM MICRO * LDA TEMP+1 CHECK RESULT JSB PDATC,I RSS JMP XXMP,I OK. * LDB PERN8 ERROR. OUTPUT ERROR JSB PERMS,I MESSAGE JMP XXMP,I EXIT * * HED FFP DIAGNOSTIC - TEST 8 * ********* * .XADD * ********* TST07 EQU * * * XXADD NOP JSB MSGC,I OUTPUT MESSAGE. DEF MMS08 * * DO STANDARD TEST TABLE * LDA PADHD,I SET CMA,INA STA INDIC COUNTER. LDA PADBS SET STA TEMP 'POINTER. * XADD1 EQU * JSB ADSUB DO SUBTEST. * JSB ADPRC JMP XADD1 DO NEXT SUBTEST. * * NOW DO SPECIAL TEST TABLE. * LDA PADH1,I SET CMA,INA STA INDIC COUNTER. LDA PADB1 SET STA TEMP POINTER. * XADD5 EQU * CLO CLEAR OVERFLOW. JSB ADSUB DO SUBTEST. SOC CHECK OVERFLOW. JMP XADD6 SET! CONTINUE. LDB PR141 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XADD6 EQU * JSB ADPRC JMP XADD5 DO NEXT SUBTEST. * * DO SECOND SPECIAL TEST TABLE * LDA PADH2,I SET CMA,INA STA INDIC COUNTER. LDA PADB2 SET STA TEMP POINTER. * XADD7 EQU * STO SET OVERFLOW. JSB ADSUB DO SUBTEST. SOS CHECK OVERFLOW. JMP XADD8 IF CLEAR, CONTINUE. LDB PR143 IF SET, OUTPUT JSB PROVS ERROR MESSAGE. XADD8 EQU * JSB ADPRC JMP XADD7 DO NEXT SUBTEST. * DO MEMORY PROTECT TEST * JSB MEMPR SKIP IF NO MEM. PROTECT JMP XAD11 PRESENT * LDA PADB1 SET STA XADP5 POINTERS ADA .+3 IN STA XADP6 MICRO CALL LDA PXD12 (A)=EXIT ADDRESS LDB POUTP (B)=FENCE ADDRESS JSB PMEMT,I TURN ON MEM. PROTECT * RAM .XADD CALL MICRO DEF OUTPT XADP5 BSS 1 XADP6 BSS 1 * XAD12 EQU * LDA MPIND DID MEM. PROTECT OCCUR? SZA JMP XAD11 YES. JSB MTNOF NO. TURN OFF MEM. PROTECT LDB PR145 PRINT ERROR JSB PRNMP MESSAGE * * DO INTERRUPT TEST. * XAD11 EQU * JSB PINTK,I IF NOT CONF. FOR INTERR., EXIT JMP XXADD,I * LDA PADB1 SET STA XADP3 POINTERS ADA .+3 IN STA XADP4 MICRO CALL. LDA PXAD9 (A)=EXIT ADDRESS JSB INTON * TURN ON INTERR. INTERFACE JSB ADDSB CALL MICRO JSB PCHEK,I CHECK INTERRUPT RSS JMP XAD10 INTERRUPTED LDB PR142 NOT INTERRUPTED. OUTPUT JSB PPRNN,I ERROR MESSAGE JMP XXADD,I EXIT * XAD10 EQU * LDA INTAD WAS P RESTORED? CPA PXAD2 JMP XXADD,I YES. EXIT. LDB PR144 NO. OUTPUT ERROR JSB PPNRS,I MESSAGE JMP XXADD,I EXIT * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT. * ADSUB NOP STA XADP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XADP2 IN MICRO CALL. ADA .+3 STORE POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * * CALL MICRO * RAM .XADD CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XADP1 BSS 1 POINTER TO 1ST OPERAND XADP2 BSS 1 POINTER TO 2ND OPERAND * JMP ADSUB,I EXIT * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * ADPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP ADPR2 ERROR. ADPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ ADPRC DONE. EXIT TO (P+2). JMP ADPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP ADPRC,I EXIT TO (P+1). * ADPR2 EQU * LDB PERN2 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP ADPR1 * * * * SUBROUTINE USED FOR INTERRUPT TEST * ADDSB NOP STF INTP ENABLE INTERRUPTS XADD2 EQU * RAM .XADD CALL MICRO DEF OUTPT XADP3 BSS 1 XADP4 BSS 1 * CLF INTP DISABLE INTERRUPTS JSB INTOF TURN OFF INTERR. INTERFACE XADD9 EQU * JMP ADDSB,I EXIT * * * PXAD9 DEF XADD9 PR144 DEF E144 PXD12 DEF XAD12 * * * HED FFP DIAGNOSTIC - TEST +9 * ********* * .XSUB * ********* * TST08 EQU * XXSUB NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS09 * * INITIATE * LDA PSBHD,I SET CMA,INA STA INDIC COUNTER. LDA PSBBS SET STA TEMP POINTER. * * * SET UP FOR SUBTEST * XSUB1 EQU * STA XSBP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XSBP2 IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * * * CALL MICRO * RAM .XSUB CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XSBP1 BSS 1 POINTER TO 1ST OPERAND XSBP2 BSS 1 POINTER TO 2ND OPERAND * * * EXIT TO MICRO. CHECK RESULTS. * LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP XSUB3 ERROR. XSUB2 EQU * ISZ INDIC BUMP COUNTER. RSS JMP XSUB4 ALL TESTS DONE. LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP XSUB1 DO NEXT SUBTEST. * XSUB3 EQU * LDB PERN3 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP XSUB2 * * END OF TESTS. EXIT. * XSUB4 EQU * JMP XXSUB,I EXIT. HED FFP DIAGNOSTIC - TEST 10 * ********* * .XMPY * ********* TST09 EQU * XXMPY NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS10 * * DO STANDARD TEST TABLE * LDA PMLHD,I SET CMA,INA STA INDIC COUNTER. LDA PMLBS SET STA TEMP POINTER. * XMPY1 EQU * JSB MPSUB DO SUBTEST. * JSB MPPRC JMP XMPY1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PMLH1,I SET CMA,INA STA INDIC COUNTER. LDA PMLB1 SET STA TEMP POINTER. * XMPY3 EQU * CLO CLEAR OVERFLOW. JSB MPSUB DO SUBTEST. * SOC CHECK OVERFLOW. JMP XM'0.*PY2 SET! CONTINUE. LDB PR161 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XMPY2 EQU * JSB MPPRC JMP XMPY3 DO NEXT SUBTEST * * DO INTERRUPT TEST * JSB PINTK,I IF NOT CONF. FOR INTERRUPT, JMP XXMPY,I EXIT * CLA CLEAR INDICATOR STA INTID LDA PMLB1 SET STA XMLP3 POINTERS ADA .+3 IN STA XMLP4 MICRO CALL. LDA PXMP5 SET EXIT ADDRESS STA INTN1 JSB INTON TURN ON INTERR. INTERF. STF INTP ENABLE INTERRUPTS XMPY4 EQU * RAM .XMPY CALL MICRO. DEF OUTPT XMLP3 BSS 1 XMLP4 BSS 1 * CLF INTP DISABLE INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XMPY5 EQU * JSB PCHEK,I CHECK INTERRUPT RSS JMP XMPY6 INTERRUPTED LDB PR162 NOT INTERRUPTED. OUTPUT JSB PPRNN,I ERROR MESSAGE JMP XXMPY,I EXIT * XMPY6 EQU * LDA INTAD WAS P RESTORED? CPA PXMP4 JMP XXMPY,I YES. EXIT LDB PR163 NO.OUTPUT ERROR MESSAGE JSB PPNRS,I AND JMP XXMPY,I EXIT * * 0   12977-18017 1632 S 0122 FFP DIAG 21MX #2              H0101 * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO. * ENTER WITH (A)=POINTER TO INPUT * MPSUB NOP STA XMLP1 IN MICRO CALL. ADA .+3 SET POINTER TO 2ND OPERAND STA XMLP2 IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XMPY CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XMLP1 BSS 1 POINTER TO 1ST OPERAND XMLP2 BSS 1 POINTER TO 2ND OPERAND * JMP MPSUB,I EXIT. * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1) * OTHERWISE EXIT TO (P+2) * MPPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP MPPR2 ERROR. MPPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ MPPRC DONE. EXIT TO (P+2). JMP MPPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP MPPRC,I EXIT TO (P+1). * MPPR2 EQU * LDB PERN4 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP MPPR1 * * * PXMP5 DEF XMPY5 PXMP4 DEF XMPY4 * * * HED FFP DIAGNOSTIC - TEST 11 * ********* * .XDIV * ********* TST10 EQU * XXDIV NOP * JSB MSGC,I OUTPUT MESSAGE. DEF MMS11 * * DO STANDARD TEST TABLE * LDA PDVHD,I SET CMA,INA STA INDIC COUNTER. LDA PDVBS SET STA TEMP POINTER. * XDIV1 EQU * JSB DVSUB DO SUBTEST. * JSB DVPRC JMP XDIV1 DO NEXT SUBTEST. * * DO SPECIAL TEST TABLE * LDA PDVH1,I SET CMA,INA STA INDIC COUNTER. LDA PDVB1 SET STA TEMP POINTER. * XDIV5 EQU * CLO CLEAR OVERFLOW. JSB DVSUB DO SUBTEST. SOC CHECK OVERFLOW. JMP XDIV2 SET! CONTINUE. LDB PR201 NOT SET! OUTPUT JSB PPROV,I MESSAGE. XDIV2 ~EQU * JSB DVPRC JMP XDIV5 DO NEXT SUBTEST. * * * * DO INTERRUPT TEST * JSB PINTK,I IF NOT CONF. FOR INTERR., JMP XXDIV,I EXIT * CLA CLEAR INDICATOR STA INTID LDA PDVBS SET POINTERS IN STA XDVP3 MICRO ADA .+3 CALL STA XDVP4 LDA PXDV6 SET EXIT ADDRESS STA INTN1 JSB INTON TURN ON INTERR. INTERF. STF INTP ENABLE INTERRUPTS XDIV4 EQU * RAM .XDIV MICRO CALL DEF OUTPT POINTER TO OUTPUT LOCATION XDVP3 BSS 1 POINTER TO 1ST OPERAND XDVP4 BSS 1 POINTER TO 2ND OPERAND * CLF INTP DISABLE INTERRUPTS JSB INTOF TURN OFF INTERR. INTERF. XDIV6 EQU * JSB PCHEK,I CHECK INTERRUPT RSS JMP XDIV3 INTERRUPTED LDB PR202 NOT INTERRUPTED. OUTPUT JSB PPRNN,I ERROR MESSAGE JMP XXDIV,I AND EXIT * XDIV3 EQU * LDA INTAD WAS P RESTORED? CPA PXDV4 JMP XXDIV,I YES. EXIT. LDB PR203 NO. OUTPUT ERROR JSB PPNRS,I MESSAGE JMP XXDIV,I EXIT * * * * * * SUBROUTINE TO SET UP SUBTEST AND CALL MICRO * ENTER WITH (A)=POINTER TO INPUT * DVSUB NOP STA XDVP1 SET POINTER TO 1ST OPERAND IN ADA .+3 MICRO CALL. SET POINTER TO STA XDVP2 2ND OPERAND IN MICRO CALL. ADA .+3 SET POINTER TO EXPECTED STA TEMP+1 OUTPUT. * * CALL MICRO * RAM .XDIV CALLING SEQUENCE. DEF OUTPT POINTER TO OUTPUT LOCATION XDVP1 BSS 1 POINTER TO 1ST OPERAND XDVP2 BSS 1 POINTER TO 2ND OPERAND * JMP DVSUB,I EXIT. * * * * SUBROUTINE TO DO SOME PROCESSING * IF MORE SUBTESTS ARE TO BE MADE, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2) * DVPRC NOP LDA TEMP+1 CHECK JSB PDATC,I RESULTS. JMP DVPR2 ERROR. DVPR1 EQU * ISZ INDIC BUMP COUNTER. JMP *+3 ISZ DVPRC DONE. EXIT TO (P+2). JMP DVPRC,I LDA TEMP NOT DONE. MOVE POINTER ADA .+9 TO NEXT ENTRY. STA TEMP JMP DVPRC,I EXIT TO (P+1). * DVPR2 EQU * LDB PERN5 JSB PERMS,I OUTPUT ERROR MESSAGE. JMP DVPR1 * * * PR202 DEF E202 PXDV4 DEF XDIV4 PR203 DEF E203 PXDV6 DEF XDIV6 * * * HED FFP DIAGNOSTIC - TEST 12 * ********* * XDV * ********* * TST11 EQU * XXDV NOP JSB MSGC,I OUTPUT MESSAGE DEF MMS12 * * DO JUST ONE TEST, SINCE XDIV SUBROUTINE USES THE * SAME CODE AS .XDV SUBROUTINE * * LDA PDVBS SET POINTER TO INPUT STA TEMP STA XDV1 SET POINTER TO 1ST OPERAND ADA .+3 STA XDV2 SET POINTER TO 2ND OPERAND ADA .+3 STA TEMP+1 * * CALL MICRO * RAM XDIV DEF *+4 DEF OUTPT POINTER TO OUTPUT XDV1 BSS 1 POINTER TO 1ST OPERAND XDV2 BSS 1 POINTER TO 2ND OPERAND * * EXIT FROM MICRO * LDA TEMP+1 CHECK RESULT JSB PDATC,I RSS JMP XXDV,I OK. * LDB PER12 ERROR. OUTPUT ERROR JSB PERMS,I MESSAGE JMP XXDV,I EXIT * * HED SUBROUTINES * * SUBROUTINE TO DISABLE MEMORY PROTECT LOGIC AND * TO RESTORE TRAP CELL HALT. * MTNOF NOP CLC MPPAR DISABLE MEM. PROTECT LOGIC. LDA TRHLT RESTORE TRAP CELL HALT. STA MPPAR CLA RESET MEM. PROTECT TEST STA MPTES INDICATOR. CLF INTP TURN OFF INTERRUPT SYSTEM. JMP MTNOF,I EXIT. * * * * SUBROUTINE TO PRINT "NO CHECK ON MEM PROT VIOLATION". * ALSO TO TURN OFF MEM PROTECT LOGIC. * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PRNMP NOP JSB MTNOF TURN OFF MEM PROTECT LOGIC. LDA B,I MOVE STA RMS09 ERROR INB NUMBER LDA B,I INTO STA RMS09+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS09 JMP PRNMP,I EXIT. * * SKP * ORG 6000B * * * SUBROUTINE TO PROCESS DATA ERROR MESSAGES FOR * .XADD .XSUB XADD XSUB * .XMPY .XDIV XMPY XDIV * TESTS. * * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRIOR TO ENTERING THE FOLLOWING SHOULD BE SET UP: * (TEMP+1)=POINTER TO EXPECTED OUTPUT * (POUTP)= POINTER TO OBTAINED OUTPUT * ERMES NOP LDA B,I MOVE STA RMS00 ERROR NUMBER INB LDA B,I I INTO STA RMS00+1 MESSAGE BUFFER. * * MOVE ACTUAL DATA INTO BUFFER * LDA POUTP SET POINTER STA TEMP+5 TO OBTAINED OUTPUT. LDB .-3 LDA PRAC1 JSB CBNOC MOVE DATA. * * MOVE EXPECTED DATA INTO BUFFER * LDA TEMP+1 SET POINTER STA TEMP+5 TO EXPECTED OUTPUT. LDB .-3 LDA PREX1 JSB CBNOC MOVE DATA. * * OUTPUT MESSAGE * LDB POUTP INB STB TEMP+6 LDA POUTP,I (A)=1ST WORD OF OBTAINED OUTPUT. LDB B,I (B)=2ND WORD OF OBTAINED OUTPUT. JSB ERMS,I GO TO ERROR PRINTING ROUTINE. DEF RMS00 LDB BIT14 IF BIT#14 IS NOT SET, JSB SWRT,I JMP ERMES,I EXIT. ISZ TEMP+6 OTHERWISE SET (A)=3RD WORD LDB TEMP+6,I OF OBTAINED OUTPUT, CLB SET (B)=0 AND OCT 107002 HALT. * LDA TEMP+1,I SET (A)=1ST WORD OF EXPECTED ISZ TEMP+1 OUTPUT. LDB TEMP+1,I SET (B)=2ND WORD OF EXPECTED OCT 107001 OUTPUT AND HALT. * ISZ TEMP+1 SET (A)=3RD WORD OF EXPECTED LDA TEMP+1,I OUTPUT. CLB SET (B)=0 OCT 107000 AND HALT. JMP ERMES,I EXIT. * * * * SUBROUTINE TO CONVERT A SET OF BINARY NUMBERS * (STORED IN A BUFFER) INTO OCTAL AND INSERT THEM * IN ASCII FORMAT INTO A MESSAGE BUFFER. * * ENTER WITH (A)= POINTER TO DESTINATION STRING * ENT (B)= -NR OF DATA ITEMS TO BE PROCESSED * * PRIOR TO ENTERING THE SUBROUTINE,LOCATION * (TEMP+5)MUST CONTAIN THE POINTER TO THE SOURCE STRING * (OBTAINED OR EXPECTED OUTPUT). * THE NUMBERS TO BE PRINTED ARE ASSUMED TO BE * SEPERATED BY TWO BLANKS. * CBNOC NOP STA TEMP+7 SAVE POINTER. STB TEMP+6 SET COUNTER. CBNC1 EQU * LDB TEMP+5,I (B)=BINARY NUMBER * * CONVERT AND INSERT. * STA TEMP+3 SET POINTER. LDA .-3 SET COUNTER. STA TEMP+4 * * FIRST PROCESS BIT#15. * CLA (A)=0. RBL,SLB IF BIT#15 IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE INTO UPPER AND STORE. STA TEMP+3,I * * NOW PROCESS THE OTHER BITS. * CLE (E)=0. CBNC2 EQU * CLA (A)=0. ROTATE. RBL,SLB IF BIT IS SET, ADA .+4 ADD 4. RBL,SLB ROTATE. IF BIT IS SET, ADA .+2 ADD 2. RBL,SLB ROTATE. IF BIT IS SET, INA ADD 1. ADA B60 MAKE ASCII. ALF,ALF ROTATE 8 BITS. SEZ IF LOWER CHAR., JMP CBNC3 ROTATE 8 BITS ALF,ALF AND IOR TEMP+3,I "OR IN" DATA. CBNC3 EQU * STA TEMP+3,I * CME COMPLEMENT (E). SEZ,RSS IF UPPER CHAR. JUST DONE, JMP CBNC2 GO BACK. ISZ TEMP+3 IF LOWER CHAR. JUST DONE, ISZ TEMP+4 BUMP POINTER AND GO BACK. JMP CBNC2 NOT ALL BITS PROCESSED YET. * * ISZ TEMP+6 ALL DATA ITEMS PROCESSED? RSS JMP CBNOC,I YES. EXIT. ISZ TEMP+5 NO. BUMP LDA TEMP+7 POINTERS ADA .+4 AND STA TEMP+7 GO JMP CBNC1 BACK. * * * SUBROUTINE TO PRINT "OVERFLOW NOT S;ET". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING * PROVN NOP LDA B,I MOVE STA RMS18 ERROR INB NUMBER LDA B,I INTO STA RMS18+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS18 JMP PROVN,I EXIT. * * * * * * * * SUBROUTINE TO CHECK RESULTS OBTAINED BY * .XADD .XSUB XADD XSUB * .XMPY .XDIV XMPY XDIV * * MICRO CODE. * * ENTER WITH (A)=POINTER TO EXPECTED OUTPUT. * IF NO COMPARISON, EXIT TO (P+1). * OTHERWISE EXIT TO (P+2). DATCK NOP STA TEMP+2 SAVE POINTER EXPECTED OUTPUT. LDA POUTP STA TEMP+3 SET POINTER TO OBTAINED OUTPUT. LDB .-3 (B)=COUNTER DTCK1 EQU * LDA TEMP+2,I CPA TEMP+3,I COMPARE? RSS JMP DATCK,I NO. ERROR. EXIT TO (P+1). ISZ TEMP+2 YES. BUMP POINTERS. ISZ TEMP+3 INB,SZB DONE? JMP DTCK1 NO. ISZ DATCK YES. EXIT TO (P+2). JMP DATCK,I * * * * * SUBROUTINE TO CHECK IF DIAGNOSTIC IS CONFIGURED * FOR INTERRUPT TEST * IF NOT, EXIT TO (P+1). OTHERWISE EXIT TO (P+2) * * INTCK NOP LDA INTSC IF NOT CONF. FOR INTERRUPTS, SZA EXIT TO (P+1) ISZ INTCK JMP INTCK,I OTHERWISE EXIT TO (P+2) * * * * * * * INTERRUPT SUBROUTINE * INTSB NOP CLF INTP STOP INTERRUPTS STA AREG SAVE (A) STB BREG SAVE (B) JSB INTOF TURN OFF INTERR. INTERF. ISZ INTID SET INDICATOR=1 LDA INTSB SAVE (P) STA INTAD JMP INTN1,I EXIT. * * * * * SUBROUTINE TO CHECK IF INTERRUPT OCCURRED * IN MICROCODE * IF NOT, EXIT TO (P+1). OTHERWISE EXIT TO (P+2) * * CHECK NOP LDA INTID CHECK INDICATOR SZA IF=0, EXIT TO (P+1) ISZ CHECK OTHERWISE EXIT TO (P+2) JMP CHECK,I * * * * * * * * * SUBROUTINE TO PRINT "NOT INTERRUPTABLE". * ENTER WITH (B)= POINTER TO ERROR NUMBER STRING. * PRNIN NOP LDA B,I MOVE STA RMS25 ERROR INB NUMBER LDA B,I INTO STA RMS25+1 MESSAGE BUFFER. * JSB ERMS,I PRINT ERROR MESSAGE. DEF RMS25 JMP PRNIN,I EXIT. * * * BUFFER TO OUTPUT "NOT INTERRUPTIBLE" * RMS25 ASC 12,XXXX NOT INTERRUPTIBLE/ E105 ASC 2,E105 E142 ASC 2,E142 E162 ASC 2,E162 E202 ASC 2,E202 * * * * * SUBROUTINE TO PRINT "A-REG NOT RESTORED ON INTERR" * ENTER WITH (B)=POINTER TO ERROR NUMBER STRING * ANRES NOP LDA B,I MOVE STA RMS26 ERROR NUMBER INB INTO LDA B,I MESSAGE STA RMS26+1 BUFFER JSB ERMS,I PRINT ERROR MESSAGE DEF RMS26 JMP ANRES,I EXIT * RMS26 ASC 16,XXXX A-REG NOT REST. ON INTERR/ E107 ASC 2,E107 * * * * * * * SUBROUTINE TO PRINT "B-REG NOT RESTORED ON INTERR" * ENTER WITH (B)=POINTER TO ERROR NUMBER STRING * BNRES NOP LDA B,I MOVE STA RMS27 ERROR INB NUMBER LDA B,I INTO STA RMS27+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE DEF RMS27 JMP BNRES,I EXIT * RMS27 ASC 16,XXXX B-REG NOT REST. ON INTERR/ E110 ASC 2,E110 * * * * SUBROUTINE TO PRINT "P-REG NOT RESTORED ON INTERR" * ENTER WITH (B)=POINTER TO ERROR NUMBER STRING * PNRES NOP LDA B,I MOVE STA RMS28 ERROR INB NUMBER LDA B,I INTO STA RMS28+1 MESSAGE BUFFER JSB ERMS,I PRINT ERROR MESSAGE DEF RMS28 JMP PNRES,I EXIT * RMS28 ASC 16,XXXX P-REG NOT REST. ON INTERR/ E163 ASC 2,E163 E203 ASC 2,E203 E106 ASC 2,E106 * * * * * * * FWAA EQU * END `0.**0   12978-18001 1437 S 0122 0121MX DOS-III MICRO- ASSEMBLER (WCS)             H0101 . ASMBҬB̬Ԭ HDABUԠHSPGAM 0ؠMASSMB NAMMϬ30 ԠìN ԠADS.PSY SUP HDPASS PASSSASH. PNԠUSԠҠNPUԠ.U.. MϠNP HŠŠGԠHŠPAAMSƠANYMH US'S'PG...'A. DAɠSS PA.9999? MPDYSUSŠDAUS. SZANϬDAUԠNPU? SADҠNϠSԠVAU. NB DAɠSND PA.9999? MPDYS SZANϬDAUԠS? SAS NBPNԠϠN. DAɠS3D PA.9999? MPDYS SZANϬDAUԠPUNH? SAPH NB DA PA.9999? MPD SZA SAPP DDAB NA SASYMB SAHDAB ADA.+ SAVAU NA SAAG SBNNAZŠSUŠ. AYSNPUԠDSàҠANԠSAVŠSU SAAKS ANDHMSKDS AƬA SAUN.U. SAUN DAAK ANDMSKAK SAAK A SASPS SAPN SAB SADBUG SAG SANM SASYG SAG MA SABAS DA.+ SAPASSN DAY SAAY DA.+5 SAPNBU DA.0AN DBSYMBSYMB SBANAB. DƠ. DAYPUԠ'MP.BAD.' SAAY3NϠANANS SAAYN'GN'ADPSS SAAY5ҠUSŠNPASS. SAAY'q6 SAAY NנSԠSANGBYŠADDSSSƠNPUԠDS. DBAAD B SBƱAD ADB.+9 SBƲAD ADB.+5 SB3AD ADB.+5 SBƴAD ADB.+5 SB5AD ADB.+5 SB6AD NDƠADDSSSNG DADҠSHUDSUŠB PA.+NPUԠMDS? SSYS. MPNPUԠN. DABSHŠASUŠŠSA- SZANGAKANDSҠ? MPNPUԠYSSϠK. DA.+NϬSϠ. B SBSUB DƠ.+ DƠNSU DƠ.+5 SBàԠHSPGAM. DƠ+ DƠ.+6 NSUҠASà5NϠSU NPUԠANDAMNŠAD. NPUԠSBDDADAD DBNASADABANK? SZBSS MPNPUԠYS.GN.ADNԠAD. DBAADN.AMN B̠S SBBYADBY SBADB PAASҠ? MPNPUԠYSGN. PABUK$? MPN̠N̠SA. DBGHASGNBNSABSHD? SZBSS MPNP3NϬSϠ. PASPAàYS.AB̠PSN? MPNPN. DBƲADҠYS.HSANUSAMN? SBU SZASS MPNPUԠYS.DNŬGϠADNԠSAM. ŠN.ADDAB̠ DAPN DBBYAD SBSYMADSYMB̠AB NPSBSKP'SKP'PSUDϠP? SZA MPNPUԠYS.GԠNԠD. SZPNҠN.NMNԠPGAMUN. BNB DAPN ANDB3DSHAԠMAKŠ̠ADDSS PAB33? SBB̠YS.SԠBAŠAG. DAPNҠN.DSԠMAKŠNԠ ANDBADDSS0? PAB0 SSYS. MPNPUԠNϬSϠK. DAB̠S'BAŬŠPASSDHU PABADDҠ3'AGS? SSYS. MPNPUԠNϬSϠK. DA.-9PGAMSUԠƠBUNDS. NPSBҠYS.PNԠҠMSSAG. MPABԠU. NP3DA.-0 MPNP N̠ADPSS N̠NBHKN SBADBBY. PA.Ϡ? MP̱YS.'GN'Ҡ'UPU'. PA.SS? MP̲YS.UDBŠSYMABҠSUPP. PA.NN? MP3YSUDBŠNSԠҠNPUNH. PA.Š? MP̴YSNA̠ҠND PA.ɠ? MP̷YS.NPUԠ.U.. PA.Ơ? MP6YS.. PA.̠? MP9YS.SԠ.U.. PA.Ҡ? MPұ0YS.SUASŠMAPŠPN. BADN̠SAMN .BAD.DA.-PNԠBAD SBҠN̠SAMNԠMSSAG. DA.-SԠHŠSAMNԬADUSNG ADANƠHASϠNUDŠS SANDVŠN̠HAS. DA.+ B SBSUB DƠS DƠAD- DƠN MPNPUԠADNԠAD. UPUԠANDGNN̠SAMNS GNP ̱NB SBADB PA.ҠGNAD? MPұ5YS. PA.UUPUԠAD? SSYS. MP.BAD.NϬHN. UPUԠSAMN SBSAVBSԬSŠƠUSҠDUS DBPH"NϠPUNH"PVUSY. SZBSS MP.BAD.YSHŠDDSϠ. DBSAVBNϬHŠDDN'. SBGUNGԠ.U.. SàK? MP.BAD.NϬ. SAPH AYMPNPUԠGϠADNԠAD. GNSAMN ұ5DA..SKP SBSKPϠUA̠SGN. SàNDƠN? AY3MP.BAD.YS.. NB DASPAàSKPV SBSKPBANKS SàNDƠN? AYMP.BAD.YS.. ANVҠ SBNVԠA SàANYS? AY5MP.BAD.YS. DB0N ANDMSKSPAA SA.00 DA ANDHMSKUPP SA.00 DBBASŠHASBAS SSBSSBNNAZD? MPұYS. MANAN.SSPDADDSS ADAB00GAҠHANMAؠAD? SSA AY6MP.BAD.YS.. DA.00N.S SABASŠBAS. ұDB.00SNנGNVAUŠSSHAN MBD'PN'VAU? DAPN ANDB3 ADA SSASS AYMP.BAD.YS.. DA.00S Ҡ.00 SAPNҠPN AAҠ'BAŬŠPASSDHU SAB̠̠ADDҠ3'AG. DA.+SԠ'GNSABSHD'AG. SAG AYMPNPU MPG SUPPSSANDSYMABN̠SAMNS ̲NB SBADB PA.USNDHAҠA"U"? MPҲ5YS. PA.YN.SNDHAҠA"Y"? SSYS. MP.BAD.N.HN. SYMABSAMN ANASԠSYMB̠ABŠAG. SASYG MPNPUԠGϠADNԠD. SUPPSSSAMN Ҳ5A SASPSSԠSUPPSSAG. MPNPUԠGϠADNԠD. NSԠҠNPUNH 3NBHK NB3DBY SBADB B PA.̠? MP+6 PA.PP? SS MP.BAD.N> SBPHSUPPSSPUNHNG MPNPU SBSԠS̠HUSNS. MPNPUԠ. SUASŠMBԠAPŠPN. ұ0ANA SAG MPNPU NDҠNA ̴NBHKN SBADBBY. PA.ؠ? SS MPҴ DA..YSNASSKP SBSKPϠSGN. SàNDƠAD? MP.BAD.YS ҴNBN DASPAàSKP SBSKPBANKS. SàNDƠAD? MP.BAD.YS. SBSAVMN.SAVŠADDSSƠSYMB. DASPAàSKP SBSKPϠNDƠSYMB. SàNDƠAD? MP.BAD.YS DASPAàN.SKPASS SBSKPBANKS. SàNDƠAD? MP.BAD.YS. SBSAVNSAVŠADDҠƠSYMB̠VAU. ANV SBNVԠA̠VAU. SàNDƠAD.Ҡ. MP.BAD.YS. DBSAVMPKUPSYMB̠ADDSS. ŠSԠ-GϠNDAŠ SBSYMADADDϠSYMB̠AB DBSAVNGԠADDҠƠSYMB̠VAU. DAMMASKP SBSKPϠϠMA SàNDƠAD? MPNPUԠ MPҴGϠBAK. ҴPA.N"N" SS MP.BAD.NϬBADN̠SA DAUNYS'$ND'.ƠNG SZASUŠNDSì SBƠND--. DASYGSYMB̠AB SZASSAND? MPPASSNϬSϠGϠϠPASS. DAHDABYS.G SAPNҠSAԠƠAB PASYMBND? MPPASSYS.GϠϠPASS. SBԠԠAPAG. DA.+PNԠSYMB̠ABŠHADNG. B  SBSUB DƠS DƠHD DƠ.- DAS DB.+ SBSPA PұDA.+0̠HŠPNNԠPAԠ DBAADASɠUPUԠBUҠH SBANSPAS. DƠBNK NP NנŠSŠHŠSYMB̠(AB̩NH NPUԠBUҬHHŠAŠUSNGASPAԠƠU ASɠUPUԠBU. DAPNҬ SAAD SZPN DAPNҬ SAAD+ SZPN DAPNҬ SAAD+ SZPN DAPNҬ SAAD+3 NנPKUPA̠AN(..VAUũƠSYMB. SZPN DAPNҬ SZPN SSASHSANUSYMB? MPPҴYS.HNNϠPNԠSYMBVA. NVԠϠASɠANDSŠN NԠANNUPUԠBU. DBAAD B ADB.+0 SBSAVBSAVŠBYŠADDSS. SB Dà6 DAPNҬ SZASS MP+3 DA. SS DASPA DBSAVBGԠBYŠADDҠƠVAU. ADB.+6NàPASԠVAU. SBSBSŠSPAŠҠ''H. PҴDABNK SAAD- DA.+ B SBSUB DƠSԠNY DƠAD- DƠ.M0 SZPNҠPN DAPNҠ PASYMBNԠNY.ND? SS MPPұNϬGϠDϠN. SBԠYSԠҠPASS. MPPASSNנGϠϠPASS. GԠBNAYUPUԠ 6DA..SKP SBSKPϠUA̠SGN. SàNDƠN? MP.BAD.YS NBN DASPAàSKP SBSKPBANKS. S MP.BAD. SBADBANS SA SBSAVM DB.-5 SBN DBANAMŠNAM B 6SBSB SZN SS M[PNPU SBSAVNMPAY DBSAVM NBBUU SBADB SBSAVMҠUS DBSAVN SZABY MP6 MPNPUԠPASS. NPUԠAD ̷SBSAVBSԬSŠƠUSҠDUS DBPH"NϠPUNH"PVUSY. SZBSS MP.BAD.YSHŠDDSϠ. DBSAVB SBGUNGԠ.U.. SàK? MP.BAD.NϬ. SADҠYSK. MPNPUԠGϠADNԠAD. SԠAD 9SBSAVBSԬSŠƠUSҠDUS DBSԠ"NϠS"PVUSY. SZBSS MP.BAD.YSHŠDDSϠ. DBSAVB SBGUNGԠ.U.. SàK? MP.BAD.NϬ. SASԠYSK. MPNPUԠGϠADNԠAD. HDPASS PASSSASH. NAZANҠPASS. PASSAS SAAY DAAY+UP SAAY3 SAAYGN SAAY5 SAAY6PSSUN SAAYҠNDPASS. SAAY DA SZASS MPP SBàS DƠ+ DƠ. DƠNAM DƠSԠN DAS SZADS? MPP DA.+ B SBSUB DƠ.+ DƠMS00ASSMBY DƠ.+ABD MPAB NAZŠAGSUNSìҠNDPASS. GNAŠAD. PA SAPN SAU̠AҠ'U'SAMNԠAG. MA SABAS DAB SAPASSN ANA SANţ A SAP SAP SASԣ SBD DAUNSSUŠNK SZAAAƠDS? MP<<PYSGϠADҠNDPASS DADҠASNPU PA.+MDS? MPP0YSGϠADŠAGAN. SBàNϬUS DƠ+5MUSԠAD DƠ.+SU DƠ.+ DƠADNNU DƠ.+ SBàPAUS DƠ+ϠAנUSҠ DƠ.+ADSU DAAYؠNPU SANPԲ+UNŠϠADADS. A SANPԲ+ MPPGϠADNPU. ADASàADADS ADASUŠD. NPԲNP SBDSK DƠAD MPNPԲ AYSBDD P0DABSԠ SA SAAK ANDMSKAK SASԣ DAAKAND AƬA ANDMSKS SAAKNUMB. DA.+ SAUN PAA SAGUMPAG. SAU̠AҠ'U'SAMNԠAG. DA.M0 SASN DBAAD DABNK SA NB SZSN MP-3 SBNPԲADAD DBAADN.HK B̠S SBADBBY. PAASҠ? MPPAYSGNŠBUԠPN PABUK$? SS MPPBNϬGDD. NBYS SBADB PA.ϠGN? SS MPPABNϬHKҠND AYS SAAYPSS SBGGNAD MPPA PABPA.ŠBYŠS? SS MPPANϬNԠNDGNŠ NBYS SBADBBYŠSN? PA.N MPND PADANSԠHŠDNMAԠ. SBS SZNţ MPPGϠBAK. PBSBSKP'SKP'PSUDϠP? SZASS MP+3 SZNţYS.AADYPSSD. MP%PNMNԠNŠ. DAGN.HASGNBN SZASSSABSHD? SSNϬHN. MPPàYSSϠK. DA.+0PNԠҠMSSAG. SB MPABԠU. DMNŠSAMNԠYP. PàSBNSԠ'NS'SAMN? SZA MPPòYS.ASPSSD. SBZSԠN.'ZS'SAMN? SZA MPPòYS.ASPSSD. DBƲADҠN.GԠDSAԠBYŠADD. SBDƠDƠSAMN? SZA MPP3N. PòSBUPԠYS.UPUԠ. MPPGϠADNԠD. P3DBƲAD SBUUSAMN? SZA MPP5N. ANAYS.PNԠ. SAU SBUP MPPGϠADNԠD. P5DBƲADҠGԠDSANGBYŠAD. DA.+GϠGԠAN SB$SH'PD'BNAYPD. PA.-BADMNMN? SSYS. MPPDN. DA.+3YS.UPU SBҠMSSAG. SBNPҠAŠNPMNSUN. MPY.6GϠPSS. PDSA ANDHHMSKSAVŠBNAY SADPD. DASA ANDHHHMSDYP. A PA.+DYPŠ? MPYPűYS. PA.+DYPŠ? MPYPŲYS. DB3ADҠGԠD3SNGBYŠADD. DA.+GϠGԠA SB$SH'SPA'BNAYPD. PA.-BADMNMN? SSYS. MPPŠN. DA.+YS.UPUԠҠMSSAG. SB SBNPҠNPDYPŠDS. MPY.6GϠUPUԠDYPŠNS. PŠSAD3SAVŠ'SPA'PD. PANDؠASD3'ND'? SSYũi<:6S. MPYPŴNϬSϠDYPŠ. DADASD'MP'? PAMP MPYP3YS.SϠDYPŠ3. MPYPŴNϬSϠ(BADDYPŠ. SKP AŠADYPŠNSUN. SԬHKMNMNSANDԠHŠBNAY DSҠAHD. YPűDA.+GϠGԠA'SPA'D DB.+3MD3. SBD DAD3 PAABASԠ'AB'? MPY.0YS.'MP-SP'BUԠK. PANASԠ'N'? MPY.0YS.'MP-SPA'BUԠK. ADA.MN.HҠ'MP-SPA'? SSASS SSYSSϠ. MPY.0N. DA.+PNԠҠMSSAG. SB DA.+SŠANPNH :)<  12978-18002 1437 S 0122 0221MX DOS-III MICRO- ASSEMBLER (WCS)             H0101 / ADADԠD3 DA0ɠD. DB.+3 ADBD SA Y.0DA.+GϠGԠAN'AU'D DB.+MD. SBD DA.+6GϠGԠA'S'D DB.+5MD5. SBD DA.+GϠGԠAN'S-BUS'D DB.+6MD6. SBD NנPUԠGHҠHŠDSƠHŠYPŠD. Y.6DAD3BS0-GԠD3(HŬ SANSԱA'SPA'. DAD5BS5-9GԠD5(HŬ AƠA'S'. AS ҠNSԱ SANSԱ DAD6BS0-GԠD6(HŬ AƬAƠAN'S-BUS'. AS AS ҠNSԱ SANSԱ DADBS5-9GԠD(HŬAN AҠ'AU'. ANDMSK5 ҠNSԱ SANSԱBԠ5DN. DAD AS SANSԲBS6-9(0-3DN. DADBS0-3(-G AƠD(HŬ'PD'. ҠNSԲ SANSԲ SBUP MPP SKP AŠADYPŠNSUN. SԬHKMNMNSANDԠBNAYDS ҠAHD. YPŲDA.+GԠA'SPA'D DB.+3MD3. SBD DA.+5GϠGԠAN'MM'D DB.+MD. SBD DA.+6GϠGԠA'S'D DB.+5MD5. SBD DB6ADҠGԠD6SANGBYŠADDSS. SBNUMNVԠDNNSϠBNAY. SàANYPBMS? MPY.YS. MPY.N. Y.DA.+PNԠҠMSSAG. SB AMAKŠD60. Y.SA ANDMSKSBSҠSS? SZA MPY.NϬSϠ. SBI-D6YS. NנPUԠGHҠHŠDSƠHŠYPŠD. DAD3BS0-GԠD3 SANSԱ(HŠA'SPA'NP. DAD5BS5-9GԠD5 AƬA̠(HŬA'S'. ҠNSԱ SANSԱ DAD6BS0-GԠD6 ANDMSK6(HŬABNAYN.. AƬAƠSԬDϠBS0-5. A̬A ҠNSԱ SANSԱ DAD6NנBS6-(0-. ANDMSK AƬA A̬A SANSԲ DADBS-9(-3G A̬A̠D(HŬAN'MM'. ҠNSԲ SANSԲ DADBS0-3(-G AƠD(HŬAN'PD'. ҠNSԲ SANSԲ SBUP MPP SKP AŠADYPŠ3NSUN. SԬHKMNMNSANDԠBNAYDS. YP3DA.+3GϠGԠA'NDN'D DB.+MD. SBD DA.+6GԠA'S'D DB.+5MD5 SBD DAD5DDD5NAN PASAN'S'? MPY3.5YS. DA.+N.SϠSԠBԠ. AҬA SS Y3.5A'S'PSNԬSϠA SAD5BԠ. DB6ADҠGԠD6SANGBYŠADD. SBNUMNVԠDNNSϠBNAY. SàANYPBMS? SSYS. MPY3.N. Y3.0DA.+GϠUPUԠҠMSSAG. SB AMAKŠD60. SAD6 DAUNDDAUԠ'SPA'DŠ(D SAD33Ϡ'UND'. MPY.6GϠASSMBŠASYPŠD. Y3.SASAVA ANDMSKHנUԠנ9BSƠHŠ. SA DA.00-AŠHŠABSUŠGN Ҡ.00HנUԠSנ9BS. ANDMSK PAHŠ3HGHBSSAMŠNBH'S? SSYSSϠGD. MPY3.0NϬSϠ. DASAVA ANDMSK3KPנ9BS. SAD6SŠNDD. NנPUԠGHҠHŠDSƠHŠYPŠ3D. DAD3BS0-GԠD3 SANSԱ(HŬHŠ'SPA''ND'. DAD6BS5-3GԠD6 AƬA̠(HŬANADDSS. ҠNSԱ SANSԱ DAD5BԠGSD5 ҠNSԱ SANSԱ DADBS5-9GԠD AҠ(HŬA'NDN'. ANDMSK5SԬBԠ5. ҠNSԱ SANSԱ DBD BS SBNSԲNנBS6-9(0-3. DADBS0-3(-GԠD AƠ(HŠAN'PD'. ҠNSԲ SANSԲ SBUP MPP SKP AŠADYPŠNSUN. ŠAADYHAVŠDSMDSAND3. YPŴDAD3GԠHŠD3BNAYD. PAƠASԠ''? MPY.9YS.SϠK. PAS̠N.ASԠ'S'? MPY.9YS.SϠK. PAUNDN.ASԠ'UND'? MPY.9YS.SϠK. PABANKN.ASԠBANK? MPY.YS. PAGN.ASԠ'G'? MPY.9YS.SϠK. ADA.M6'MPSPA'BUԠNԠ'ND'? SSA MPY.NϬSϠ. DAD3YSSϠK. MPY.9 Y.DA.+PNԠҠMSSAG. SB Y.DAUNDSŠ'UND'ASDAU. Y.9SAD3 DB6ADҠGԠD6SNGBYŠADD. SBNUMNVԠDNNSϠBNAY. SàANYPBMS? MPY.0YS. MPY.N. Y.0DA.+YS.GϠUPU SoBҠҠMSSAG. DAUNDSŠ'UND'N SAD3D3. AMAKŠD60. Y.SA ANDMSKSHŠN.BS SZAҠSS? MPY.0NϬSϠ. SBD6YS.SϠSAVŠD. NנPUԠGHҠHŠDSƠHŠYPŠD. Y.6DAD3BS0-GԠD3 SANSԱ(HŬA'SPA'. DAD6BS5-6GԠD6 AƬASԬBS5-5. ҠNSԱ SANSԱ B BNנBԠ6. DADAVŠBS-9(-3A. AƠBS0-3(-G ҠD(HŬAN'PD'. SANSԲ SBUP MPP SKP ŠMŠHŠAҠADNGAN'$ND'D NPASS. NDSBMPBƠMPYPUNHBU. DAGAŠŠPUNHNG SZASSASUASŠMAP? MPND00N. DA.+YS.HNSԠAG SAGҠ'ASԠPUNHU'. SBMPBƠDϠ'ASԠPUNHU'. ND00DAPHASHŠA'N-PUNH'N SZASSAD? MPND0YS.SϠDN'ԠPUNHNDD. DAGAŠŠPUNHNGASUAS PA.+MAP? MPND0YSSϠNϠNDD. DA.+N.PUNHU BNB SBSUBNDD. DƠPH DƠND DƠ.+ ND0DANSԠHŠ'$ND'SAMN. SBS DANMҠANYPASS SZASSS? MPNDN. DBDʱYS.SϠG B̠PUԠN.NϠH NBN.--SSAMN SBDM̠BU. NDDAS SZASSUSҠNԠSNG? DA.+6YS.̬HŠGSH SASԠN.--SSAMNԠANYAY. DA.+ B SBSUB DƠS DƠD DƠ.M SBDҠPUNHUԠA. DASԠƠUSҠSSNGN PA.+NŠPNҬ SS SBԠԠPAGŠҠHŠGUY. DAŠŠSAVNGBԠD SZANDS? SBƠYSSϠŠND--. DA.+ B SBSUBPNԠNA̠'ND' DƠ.+MSSAGŠNNS. DƠNDMS DƠ.M SBàMNA DƠ+HSPGAM. DƠ.+6 HDSUBUNSNAPHABA̠D SKP 'BSPA'SHŠϠBUS'UB'AND 'AD'HSPAS. ANGSUN: SBBSPA BSPANP DA.P0̠NPUԠBUҠH DBAADSPAS. SBAN DƠBNK DA.+̠ASɠUPUԠBUҠH DBAB0SPAS. SBAN DƠBNK MPBSPA SKP 'HK'MPASASUBԠBYŠSNGƠUP BYSHANŠBYŠSNG. ANGSUN: DBD OF CARD? JMP .BAD. YES ERROR CTR41 INB NO LDA SPAC SKIP JSB SKIP BLANKS. SOC END OF CARD? JMP .BAD. YES ERROR. STB SAVM NO, SAVE ADDR OF SYMBOL. LDA SPAC SKIP TO JSB SKPTO END OF SYMBOL. SOC END OF CARD? JMP .BAD. YES ERROR LDA SPAC NO. SKIP ACROSS JSB SKIP BLANKS. SOC END OF CARD? JMP .BAD. YES ERROR. STB SAVN SAVE START ADDR OF VALUE. CLA CONVERT JSB CNVRT OCTAL VALUE. SOC END OF CARD.OR ERROR. JMP .BAD. YES ERROR. LDB SAVM GET SYMBOL ADDRESS. CCE SET E-REG TO INDICATE EXT JSB SYMAD ADD TO SYMBOL TABLE LDB SAVN GET START ADDR OF VALUE. LDA COMMA SKIP JSB SKPTO TO COMA SOC END OF CARD? JMP INPUT EXIT JMP CTR41 GO BACK. CTR42 CPA .N "N" RSS JMP .BAD. NO, BAD CONTROL STATE LDA MAG YES, '$END'. SOURCE ON MAG TAPE? SZA,RSS JMP CTR47 NO. LDA .+3 YES. WRITE END-OF-FILE(EOF). JSB IOSUB DEF MAG DEF * DUMMY PARAMETERS, SINCE THESE DEF * NOT NEEDED TO WRITE EOF. NOP LDA B400 REWIND TAPE TO START OF STA MCODE SOURCE FILE. LDA .+3 JSB IOSUB DEF MAG DEF * DUMMY PARAMETERS, SINCE THESE DEF * NOT NEEDED TO REWIND TAPE. NOP LDA B100 NOW REFIX MAG TAPE SUBFUNCTION STA MCODE CODE FOR NON-REWIND OPERATIONS. NOP CTR47 LDA SYFLG SYMBOL TABLE SZA,RSS WANTED? JMP PASS2 NO, SO GO TO PASS 2. LDA HDTAB YES. GET STA PNTR START OF TABLE CPA SYMB END? JMP PASS2 YES. GO TO PASS2. LDB LIST JSB TTYIO WE LISTING ON TTJY? SZA JMP CTR49 NO. LDA .+1 YES. SO JUST SPACE A FEW LINES. LDB .+2 JSB SPACE RSS CTR49 JSB EJECT EJECT A PAGE LDA .+2 PRINT SYMBOL TABLE HEADING. JSB IOSUB DEF LIST DEF HED1 DEF .-14 LDA LIST LDB .+2 JSB SPACE PR1 LDA .+10 FILL THE PERTINENT PART OF LDB ACARD ASCII OUTPUT BUFFER WITH JSB CLEAN SPACES. DEF BLNK2 * NOW WE STORE THE SYMBOL (LABEL) IN THE * INPUT BUFFER, WHICH WE ARE USING AS PART OF OUR * ASCII OUTPUT BUFFER. LDA PNTR,I STA CARD ISZ PNTR LDA PNTR,I STA CARD+1 ISZ PNTR LDA PNTR,I STA CARD+2 ISZ PNTR LDA PNTR,I STA CARD+3 * NOW PICK UP OCTAL LOCATION (I.E. VALUE) OF SYMBOL. ISZ PNTR LDA PNTR,I ISZ PNTR SSA IS THIS AN EQU SYMBOL? JMP PR4 YES. THEN NO PRINT SYMB VAL. * CONVERT TO ASCII AND STORE IN * NEXT LOCATION IN OUTPUT BUFFER. LDB ACARD RBL ADB .+10 STB SAVB SAVE BYTE ADDRESS. JSB OCTL DEC 6 LDA PNTR,I SZA,RSS JMP *+3 LDA .X RSS LDA SPAC LDB SAVB GET BYTE ADDR OF VALUE. ADB .+6 INC PAST VALUE. JSB STORB STORE SPACE OR 'X' THERE. PR4 LDA BLNK2 STA CARD-1 LDA .+2 JSB IOSUB DEF LIST ENTRY DEF CARD-1 DEF .M20 ISZ PNTR POINT LDA PNTR TO CPA SYMB NEXT ENTRY. END? RSS JMP PR1 NO, GO DO NEXT. JSB EJECT YES EJECT FOR PASS 2. JMP PASS2 NOW GO TO PASS2. * * INPUT CARD * CTRL7 STB SAVB FIRST, SEE IF USER TOLD US LDB PCH "NO PUNCH" PREVIOUSLY. SZB,RSS JMP .BAD. YES, HE DID, SO ERROR. LDB SAVB JSB LOGUN GET L.U.#. SOC # OK? JMP .BAD. NO, M6ERROR. STA RDR YES, OK. JMP INPUT GO READ NEXT CARD. * * PASS2 CARD * CTRL8 JSB LOGUN GET L.U. #. SOC # OK? JMP .BAD. NO, BAD. STA MAG JMP INPUT GO READ NEXT CARD. * * LIST CARD * CTRL9 STB SAVB FIRST, SEE IF USER TOLD US LDB LIST "NO LIST" PREVIOUSLY. SZB,RSS JMP .BAD. YES, HE DID, SO ERROR. LDB SAVB JSB LOGUN GET L.U. #. SOC # OK? JMP .BAD. NO, ERROR. STA LIST YES, OK. JMP INPUT GO READ NEXT CARD. HED PASS 2 * * * PASS 2 STARTS HERE. * * * * INITIALIZATION FOR PASS 2. * PASS2 LDA .+2 STA PASSN LDA MAG IS SOURCE ON MAG TAPE? SZA JMP P20F YES. SKIP 'RELOAD SOURCE' MSG. LDA .+1 LDB .+2 JSB SPACE LDA .+2 JSB IOSUB DEF .+2 DEF MSG5 DEF .M28 LDA .+1 LDB .+2 JSB SPACE HLT 34B * * INITIALIZE FLAGS, COUNTERS, ETC, FOR 2ND PASS. * GENERATE LEADER. * P20F CLA STA PCNTR STA OLAY2 CMA STA BASE CLA,INA STA LINE# LDA OLAY2+1 STA OLAY3 STA OLAY4 STA OLAY5 STA OLAY6 STA OLAY7 STA OLAY8 STA OLAY9 JSB LEEDR * * READ A SOURCE RECORD. * P21 CLA STA EQUFL CLEAR EQU FLAG. JSB RDCRD READ CARD. LDB CRLEN WAS CARD A BLANK? SZB,RSS JMP P21 YES. IGNORE. READ NEXT CARD. LDB ACARD NO. CHECK RBL 1ST JSB LOADB BYTE. CPA ASTER =*? JMP P21A YES,IGNORE BUT PRINT CPA BUCK =$? RSS JMP P21B NO, GOOD CODE. INB YES JSB LOADB CPA .O =ORIGIN? RSS JMP P21AB NO,CHECK FOR END CLA YES STA OLAY2 PROCESS i JSB ORIG ORIGIN CARD JMP P21A P21AB CPA .E BYTE IS E? RSS JMP P21A NO, NOT END IGNORE IT INB YES JSB LOADB BYTE IS N? CPA .N JMP END P21A LDA CRLEN LIST THE RECORD IN FORMAT 1. JSB LSTR ISZ LINE# JMP P21 GO BACK. P21B JSB SKP 'SKP' PSEUDO OP? SZA JMP P21 YES. ALREADY PROCESSED. LDA ORFLG NO. HAS ORIGIN BEEN SZA,RSS ESTABLISHED? RSS NO, THEN ERROR. JMP P21C YES, SO OK. P21B4 LDA .+10 PRINT ERROR MESSAGE. JSB ERROR JMP ABORT QUIT. * * DETERMINE STATEMENT TYPE. * P21C JSB ONEST 'ONES' STATEMENT? SZA JMP P21C2 YES. WAS PROCESSED. JSB ZERST NO. 'ZEROES' STATEMENT? SZA JMP P21C2 YES. WAS PROCESSED. LDB F2ADR NO. GET FIELD 2 START BYTE ADDR. JSB DEF DEF STATEMENT? SZA JMP P21C3 NO. P21C2 JSB OUTPT YES. OUTPUT IT. JMP P21 GO READ NEXT RECORD. P21C3 LDB F2ADR JSB EQU EQU STATEMENT? SZA JMP P21C5 NO. CLA,INA YES. PRINT IT. STA EQUFL JSB OUTPT JMP P21 GO READ NEXT RECORD. P21C5 LDB F2ADR GET FIELD 2 STARTING BYTE ADR. LDA .+1 GO GET AN JSB $SRCH 'OPCODE' BINARY OPCODE. CPA .-1 BAD MNEMONIC? RSS YES. JMP P21D NO. LDA .+3 YES. OUTPUT JSB ERROR MESSAGE. JSB NOPER CREATE NOP MICROINSTRUCTION. JMP TY1.6 GO PROCESS IT. P21D STA 1 AND HHMSK SAVE BINARY STA FLD2 OPCODE. LDA 1 ISOLATE AND HHHMS WORD TYPE. ALF CPA .+1 WORD TYPE 1? JMP TYPE1 YES. CPA .+2 WORD TYPE 2? JMP TYPE2 YES. LDB F3ADR GET FIELD 3 STRTNG BYTE ADDR. LDA .+2 GO GET A  JSB $SRCH 'SPECIAL' BINARY OPCODE. CPA .-1 BAD MNEMONIC? RSS YES. JMP P21E NO. LDA .+4 YES. OUTPUT ERROR MESSAGE. JSB ERROR JSB NOPER NOP WORD TYPE 1 FIELDS. JMP TY1.6 GO OUTPUT WD TYPE 1 INSTR. P21E STA FLD3 SAVE 'SPECIAL' OPCODE. CPA CNDX WAS FIELD 3 'CNDX'? RSS YES. JMP TYPE4 NO, SO WORD TYPE 4. LDA FLD2 WAS FIELD 2 'JMP'? CPA JMP JMP TYPE3 YES, SO WORD TYPE 3. JMP TYPE4 NO, SO (BAD) WORD TYPE 4. * SKP * * CREATE A WORD TYPE 1 INSTRUCTION. * * FIRST, CHECK MNEMONICS AND COLLECT THE BINARY * CODES FOR EACH FIELD. * TYPE1 LDA .+2 GO GET A 'SPECIAL' CODE LDB .+3 FROM FIELD 3. JSB CODE LDA FLD3 CPA JTAB WAS IT 'JTAB'? JMP TY1.0 YES. 'JMP-SPEC' BUT OK. CPA RTN WAS IT 'RTN'? JMP TY1.0 YES. 'JMP-SPECIAL' BUT OK. ADA .M24 NO. OTHER 'JMP-SPECIAL'? SSA,RSS RSS YES, SO ERROR. JMP TY1.0 NO. LDA .+4 PRINT ERROR MESSAGE. JSB ERROR LDA .+2 STORE A NOP IN THE ADA DEFLT FIELD 3 LDA 0,I WORD. LDB .+3 ADB FWORD STA 1,I TY1.0 LDA .+4 GO GET AN 'ALU' CODE LDB .+4 FROM FIELD 4. JSB CODE LDA .+6 GO GET A 'STORE' CODE LDB .+5 FROM FIELD 5. JSB CODE LDA .+7 GO GET AN 'S-BUS' CODE LDB .+6 FROM FIELD 6. JSB CODE * * NOW PUT TOGETHER THE FIELDS OF THE TYPE 1 WORD. * TY1.6 LDA FLD3 BITS 0-4 GET FIELD 3 (HERE, STA INST1 A 'SPECIAL'). LDA FLD5 BITS 5-9 GET FIELD 5 (HERE, ALF A 'STORE'). ALS IOR INST1 STA INST1 LDA FLD6 BITS 10-14 GET FIELD 6 (HERE, ALF,ALF AN 'S-BUS'.) ALS ALS IOR :<:6INST1 STA INST1 LDA FLD4 BITS 15-19 GET FIELD 4 (HERE, AN RAR 'ALU'). AND MSK15 IOR INST1 STA INST1 BIT 15 DONE. LDA FLD4 ARS STA INST2 BITS 16-19 (0-3) DONE. LDA FLD2 BITS 20-23 (4-7) GET ALF FIELD 2(HERE, 'OPCODE'). IOR INST2 STA INST2 ˱<  12978-18014 1712 S 0122 21MX BCS MICRO- ASSEMBLER (WCS)             H0101 0 JSB OUTPT JMP P21 * SKP * * CREATE A WORD TYPE 2 INSTRUCTION. * FIRST, CHECK MNEMONICS AND COLLECT BINARY OPCODES * FOR EACH FIELD. * TYPE2 LDA .+2 GET A 'SPECIAL' CODE LDB .+3 FROM FIELD 3. JSB CODE LDA .+5 GO GET AN 'IMM' CODE LDB .+4 FROM FIELD 4. JSB CODE LDA .+6 GO GET A 'STORE' CODE LDB .+5 FROM FIELD 5. JSB CODE LDB F6ADR GET FLD 6 STARTING BYTE ADDRESS. JSB NUM CONVERT FIELD CONTENTS TO BINARY. SOC ANY PROBLEMS? JMP TY2.1 YES. JMP TY2.2 NO. TY2.1 LDA .+11 PRINT ERROR MESSAGE. JSB ERROR CLA MAKE FIELD 6 = 0. TY2.2 STA 1 AND MSK8 IS # 8 BITS OR LESS? SZA JMP TY2.1 NO, SO ERROR. STB FLD6 YES. * * NOW PUT TOGETHER THE FIELDS OF THE TYPE 2 WORD. * LDA FLD3 BITS 0-4 GET FIELD 3 STA INST1 (HERE A 'SPECIAL' NOP). LDA FLD5 BITS 5-9 GET FIELD 5 ALF,RAL (HERE, A 'STORE'). IOR INST1 STA INST1 LDA FLD6 BITS 10-17 GET FIELD 6 AND MSK6 (HERE, A BINARY NO.). ALF,ALF FIRST, DO BITS 10-15. RAL,RAL IOR INST1 STA INST1 LDA FLD6 NOW BITS 16-17(0-1). AND MSK78 ALF,ALF RAL,RAL STA INST2 LDA FLD4 BITS 18-19(2-3) GET RAL,RAL FIELD 4 (HERE, AN 'IMM'). IOR INST2 STA INST2 LDA FLD2 BITS 20-23(4-7) GET ALF FIELD 2(HERE, AN 'OPCODE'). IOR INST2 STA INST2 JSB OUTPT JMP P21 * SKP * * CREATE A WORD TYPE 3 INSTRUCTION. * FIRST, CHECK MNEMONICS AND COLLECT BINARY CODES. * TYPE3 LDA .+3 GO GET A 'CONDITION' CODE LDB .+4 FROM FIELD 4. JSB CODE LDA .+6 GET A 'STORE' CODE LDB .+5 FROM FIELD 5 JSB COؘDE LDA FLD5 DID FIELD 5 CONTAIN CPA RJS AN 'RJS'? JMP TY3.5 YES. LDA .+1 NO. SO SET BIT 14. RAR,RAR RSS TY3.5 CLA 'RJS' PRESENT, SO CLEAR STA FLD5 BIT 14. LDB F6ADR GET FLD 6 STARTING BYTE ADDR. JSB NUM CONVERT FIELD CONTENTS TO BINARY. SOC ANY PROBLEMS? RSS YES. JMP TY3.1 NO. TY3.0 LDA .+8 GO OUTPUT ERROR MESSAGE. JSB ERROR CLA MAKE FIELD 6 = 0. STA FLD6 LDA UNCD DEFAULT 'SPECIAL' CODE (FIELD STA FLD3 3) TO 'UNCD'. JMP TY4.6 GO ASSEMBLE AS TYPE 4 WORD. TY3.1 STA SAVA AND MSK21 THROW OUT LOW 9 BITS OF THE #. STA 1 LDA T.001 RE-CREATE THE ABSOLUTE ORIGIN IOR T.002 THROW OUT ITS LOW 9 BITS. AND MSK21 CPA 1 THE 3 HIGH BITS SAME IN BOTH #'S? RSS YES, SO GOOD #. JMP TY3.0 NO, SO ERROR. LDA SAVA AND MSK23 KEEP LOW 9 BITS. STA FLD6 STORE IN FIELD WORD. * * NOW PUT TOGETHER THE FIELDS OF THE TYPE 3 WORD. * LDA FLD3 BITS 0-4 GET FIELD 3 STA INST1 (HERE, THE 'SPECIAL', 'CNDX'.) LDA FLD6 BITS 5-13 GET FIELD 6 ALF,RAL (HERE, AN ADDRESS). IOR INST1 STA INST1 LDA FLD5 BIT 14 GETS FIELD 5 IOR INST1 STA INST1 LDA FLD4 BITS 15-19 GET FIELD 4 RAR (HERE, A 'CONDITION'). AND MSK15 FIRST, BIT 15. IOR INST1 STA INST1 LDB FLD4 BRS STB INST2 NOW BITS 16-19(0-3). LDA FLD2 BITS 20-23(4-7) GET FIELD 2 ALF (HERE AN 'OPCODE'). IOR INST2 STA INST2 JSB OUTPT JMP P21 * SKP * * CREATE A WORD TYPE 4 INSTRUCTION. * WE ALREADY HAVE CODES FROM FIELDS 2 AND 3. * TYPE4 LDA FLD3 GET THE FIELD 3 BINARY CODE. I: CPA IOFF WAS IT 'IOFF'? JMP TY4.9 YES. SO OK. CPA STFL NO. WAS IT 'STFL'? JMP TY4.9 YES, SO OK. CPA UNCD NO. WAS IT 'UNCD'? JMP TY4.9 YES. SO OK. CPA BLANK NO. WAS IT BLANK? JMP TY4.8 YES. CPA IOG NO. WAS IT 'IOG'? JMP TY4.9 YES. SO OK. ADA .M26 'JMP SPECIAL' BUT NOT 'CNDX'? SSA JMP TY4.7 NO, SO ERROR. LDA FLD3 YES. SO OK. JMP TY4.9 TY4.7 LDA .+4 PRINT ERROR MESSAGE. JSB ERROR TY4.8 LDA UNCD STORE 'UNCD' AS DEFAULT. TY4.9 STA FLD3 LDB F6ADR GET FIELD 6 STRTNG BYTE ADDR. JSB NUM CONVERT FIELD CONTENTS TO BINARY. SOC ANY PROBLEMS? JMP TY4.0 YES. JMP TY4.1 NO. TY4.0 LDA .+8 YES. GO OUTPUT JSB ERROR ERROR MESSAGE. LDA UNCD STORE 'UNCD' IN STA FLD3 FIELD 3. CLA MAKE FIELD 6 = 0. TY4.1 STA 1 AND MSK12 IS THE NO. 12 BITS SZA OR LESS? JMP TY4.0 NO, SO ERROR. STB FLD6 YES. SO SAVE FIELD. * * NOW PUT TOGETHER THE FIELDS OF THE TYPE 4 WORD. * TY4.6 LDA FLD3 BITS 0-4 GET FIELD 3 STA INST1 (HERE, A 'SPECIAL'). LDA FLD6 BITS 5-16 GET FIELD 6 CLE ALF,ELA FIRST, BITS 5-15. IOR INST1 STA INST1 CLB ELB NOW BIT 16. LDA FLD2 LEAVE BITS 17-19(1-3) CLEAR. ALF BITS 20-23(4-7) GET IOR 1 FIELD 2(HERE, AN 'OPCODE'). STA INST2 JSB OUTPT JMP P21 * SKP * * WE COME HERE AFTER READING AN '$END' RECORD * IN PASS 2. * END JSB EMPBF EMPTY PUNCH BUFFER. LDA RCFLG ARE WE PUNCHING SZA,RSS A SUITCASE ROM TAPE? JMP END00 LDA .+2 YES. THEN SET FLAG STA RCFLG FOR 'LAST PUNCHOUT'. JSB EMPBF DO 'LAST PUNCHOUT'. 6END00 LDA PCH WAS THERE A 'NO-PUNCH' CONTROL SZA,RSS CARD? JMP END0 YES, SO DON'T PUNCH END RECORD. LDA RCFLG NO.. ARE WE PUNCHING A SUITCASE CPA .+2 ROM TAPE? JMP END0 YES, SO NO END RECORD. LDA .+2 NO. PUNCH OUT CLB,INB JSB IOSUB END RECORD. DEF PCH DEF ENDRC DEF .+4 END0 LDA CRLEN LIST THE '$END' STATEMENT. JSB LSTR LDA NMERR ANY PASS 2 SZA,RSS ERRORS? JMP END1 NO. LDB DJ1 YES. SO GO RBL PUT NO. INTO THE INB NO.-OF-ERRORS STATEMENT JSB DECML BUFFER. END1 LDA LIST SZA,RSS USER NOT LISTING? LDA .+6 YES. WELL, HE GETS THE STA LIST NO.-OF-ERRORS STATEMENT ANYWAY. LDA .+2 JSB IOSUB DEF LIST DEF DJ DEF .M18 JSB LEEDR PUNCH OUT TRAILER. LDA LIST IF USER IS LISTING ON CPA .+1 LINE PRINTER, RSS JSB EJECT EJECT PAGE FOR THE GUY. LDA .+2 PRINT FINAL 'END' MESSAGE JSB IOSUB ON THE TELETYPE. DEF TTYO DEF ENDMS DEF .M18 LDA .+2 OUTPUT 4 LDB .+4 SPACES ON TTY. JSB SPACE JMP D1 GO BACK AND DO NEXT MICROPROGRAM. SKP * * 'CHECK' COMPARES A SUBJECT BYTE STRING OF UP TO * 8 BYTES WITH A REFRENCE BYTE STRING. * * CALLING SEQUENCE: * * LDB * LDA * JSB CHECK * * UPON RETURN: * * IF 'A' REG = 0, STRINGS DID NOT COMPARE. * IF 'A' REG # 0, STRINGS COMPARED. * CHECK NOP * * INITIALIZE. * STA SAVO SAVE REF STRING WORD ADDR. LDA .-8 PUT SUBJECT STRING INTO BUFFER, JSB TLOAD 'TOKEN'. LDA .-4 SET '#OF WORDS TO BE COMPARED' E STA CNTR4 COUNTER. LDB TOKAD SET 'B' TO WORD ADDR OF 'TOKEN'. * * COMPARE WORDS. * CHEK2 LDA SAVO,I GET NEXT REF. WORD. CPA 1,I SAME AS NEXT SUBJECT WORD? RSS YES. JMP CHEK4 NO. ISZ SAVO INCR REF STRING WORD ADDR. INB INC SUBJ WORD ADDR. ISZ CNTR4 INCR COUNTER. DONE YET? JMP CHEK2 NO. CLA,INA YES. SET 'A' TO INDICATE 'YES, JMP CHECK,I WE GOT A COMPARE'. RETURN. CHEK4 CLA NO COMPARE. SET 'A' TO JMP CHECK,I INDICATE THIS. RETURN. SAVO NOP CNTR4 NOP SKP * 'CLEAN' FILLS A BUFFER WITH A GIVEN CHAR. * * CALLING SEQUENCE: * LDB * * LDA <+ NO. OF WORDS IN BUFFER> * * JSB CLEAN * DEF * CLEAN NOP CMA,INA STA COUNT LDA CLEAN,I BRING IN CHAR. LDA 0,I CLE0 STA 1,I INB ISZ COUNT JMP CLE0 ISZ CLEAN SET RETURN ADDRESS. JMP CLEAN,I SKP * * ASCII TO BINARY CONVERSION ROUTINE. * * CALLING SEQUENCE: * A REG SHOULD BE 0 IF STRING OF OCTAL * ASCII DIGITS IS TO BE CONVERTED TO BINARY; * #0 IF STRING OF DECIMAL ASCII DIGITS. * B REG SHOULD CONTAIN THE STARTING BYTE ADDRESS * OF THE STRING OF ASCII DIGITS TO BE * CONVERTED. * JSB CNVRT * * ON RETURN RESULT IN A REG. * OVERFLOW SET ON ERROR * B REG IS NOT SIGNIFICANT. * CNVRT NOP STB TMPC1 SAVE BYTE ADDRESS LDB .+8 PUT OCTAL BASE IN B. SZA WAMT DECIMAL? LDB .+10 YES, PUT DECIMAL BASE INB. STB TMPC2 SAVE BASE. CLA CLEAR TEMPORARY STA TMPC3 STA CFLG CN1 LDB TMPC1 LOAD JSB LOADB BYTE. ADA .M48 VALUE OF BYTE SSA <@60? JMP CN4 YES STA TMPC4 NOz",SAVE BYTE. LDA TMPC2 IS CMA,INA BUTE ADA TMPC4 NON LEGAL SSA,RSS DIGIT? JMP CN4 YES LDA TMPC3 COMPUTE NEXT MPY TMPC2 TEMPORARY RESULT. SZB OVERFLOW? JMP CN2 YES CLO NO, CLEAR O-BIT. ADA TMPC4 ADD IN NEW DIGIT SOC OVERFLOW? JMP CNVRT,I YES RETURN STA TMPC3 SAVE INTERMEDIATE RESULT ISZ CFLG SET GOOD DIGIT FLAG. ISZ TMPC1 BUMP BYTE ADDRESS. JMP CN1 CN4 LDA CFLG ILLEGAL DIGIT FOUND LDB TMPC1 PUT BYTE ADDRESS IN B SZA,RSS DID WE GET ANYTHING? STO NO, SET ERROR CONDITION LDA TMPC3 PUT RESILT IN A-REG JMP CNVRT,I CN2 STO OVERFLOW JMP CNVRT,I SKP * * * "CODE" OBTAINS THE BINARY CODE EQUIVALENT FOR * THE MNEMONIC IN A GIVEN FIELD, AND STORES IT IN * THE APPROPRIATE FIELD STORAGE LOCATION, EG. "FLD1", ETC. * IT PRINTS AN ERROR MESSAGE IF THE MNEMONIC WAS INVALID. * * CALLING SEQUENCE: * LDA * LDB * JSB CODE * * UPON RETURN: THE CODE WILL BE IN THE FIELD STORAGE * LOCATION; A AND B REGS ARE NOT SIGNIFICANT. * CODE NOP STA CSAVA STB CSAVB ADB F0ADR GET STARTING BYTE ADDRESS OF LDB 1,I FIELD. LDA CSAVA JSB $SRCH GO GET BINARY CODE. CPA .-1 MNEMONIC ERROR? RSS JMP CO7 NO. LDA CSAVB INA JSB ERROR PRINT ERROR MESSAGE. LDA CSAVA GET NOP BINARY CODE FOR ADA DEFLT CURRENT MNEMONIC TYPE. LDA 0,I CO7 LDB CSAVB STORE CODE IN PROPER ADB FWORD FIELD WORD. STA 1,I JMP CODE,I * SKP * * * THIS ROUTINE CONVERTS BINARY * TO 4 DIGIT DECIMAL * * CALLING SEQUENCE: * LDA <+B5INARY # TO BE CONVERTED> * LDB * JSB DECML * DECML NOP STB D.000 SAVE ADDRESS CLB DIVIDE DIV .1000 BY 1000 ADA B60 A=1000TH DIGIT. MAKE ASCII STB D.001 SAVE REMAINDER LDB D.000 PICK UP ADDRESS JSB STORB STORE 1000TH DIGIT. STB D.000 SAVE NEXT ADDRESS CLB DIVIDE LDA D.001 REMAINDER DIV .100 BY 100. ADA B60 A= HUNDRED DIGIT. MAKE ASCII STB D.001 SAVE REMAINDER LDB D.000 PICK UP ADDRESS JSB STORB STORE HUNDREDS DIGIT STB D.000 SAVE NEXT ADDRESS CLB DIVIDE LDA D.001 BY DIV .+10 10. ADA B60 A= TENS DIGIT. MAKE ASCII STB D.001 SAVE 1'S DIGIT LDB D.000 PICK UP ADDRESS JSB STORB STORE TENS DIGIT LDA D.001 PICK UP 1'S DIGIT ADA B60 MAKE ASCII JSB STORB STORE IT JMP DECML,I RETURN SKP * 'DEF' FIRST CHECKS IF THE FIELD WHOSE BYTE ADDRESS * IS IN B REG, IS A 'DEF'. IF NOT, THEN RETURN IS * MADE WITH A REG # 0. IF SO, THEN THE DEF STATEMENT * IS PROCESSED AND RETURN IS MADE WITH A = 0. * * CALLING SEQUENCE: * * LDB * * JSB DEF * * UPON RETURN: A REG = 0 MEANS THE FIELD CONTAINED * A 'DEF' AND THAT THIS * DEF STATEMENT HAS BEEN PROCESSED. * A REG # 0 MEANS THE FIELD DID NOT CONTAIN * A 'DEF'. * IN EITHER CASE, UPON RETURN, B REG CONTAINS GARBAGE. * DEF NOP * * FIRST DETERMINE IF WE HAVE A 'DEF' IN THE FIELD. * JSB LOADB CPA .D 1ST CHAR = "D"? RSS YES. JMP DEF9 NO. INB YES. JSB LOADB CPA .E 2ND CHAR = "E"? RSS YES. Q JMP DEF9 NO. INB JSB LOADB CPA .F 3RD CHAR = "F"? RSS YES. JMP DEF9 * * WE HAVE A DEF STATEMENT. * LDB F6ADR GO PROCESS ADDRESS IN FIELD 6. JSB NUM SOC ANY PROBLEMS? JMP DEF8 YES. STA 1 NO. AND M7777 IS NO. IN RANGE 0-7777 OCT? SZA JMP DEF8 NO, SO ERROR. STB INST1 YES, SO OK. STORE ADDRESS. STA INST2 JMP DEF,I RETURN. DEF8 LDA .+7 PRINT ERROR MESSAGE. JSB ERROR JSB NOPER MAKE A 'NOP' MICROINSTRUCTION. CLA JMP DEF,I DEF9 CLA,INA NO DEF STATEMENT. JMP DEF,I SKP * * THIS ROUTINE EJECTS PAGE ON LIST * DEVICE * CALLING SEQUENCE: * JSB EJECT * EJECT NOP LDB LIST SUPPRESS SZB,RSS LISTING? JMP EJECT,I YES, EXIT. JSB TTYIO WE EJECTING ON TTY? SZA,RSS JMP EJTT YES. EJLP LDA .+2 JSB IOSUB DEF LIST DEF LPEJ DEF .-2 JMP EJ2 EJTT NOP LDA SP4 STA SAVA CLA STA SP4 LDA LIST LDB .P24 JSB SPACE LDA SAVA STA SP4 EJ2 NOP LDA LPP CMA,INA STA #LNES JMP EJECT,I SKP * * 'EMCDE' PUNCHES THE OBJECT TAPE IF THE PUNCH * BUFFER IS FULL OR IF WE JUST READ AN '$END' * RECORD. THEN IT RE-INITIALIZES THE PUNCH * BUFFER AND EXITS. * * CALLING SEQUENCE: * JSB EMCDE * EMCDE NOP LDA PNBUF PUNCH BUFUR CPA .59 FULL? JSB EMPBF YES EMPTY IT LDA LASTP IS THIS INA NEXT STA 1 SEQUENTIAL INSTRUCTION? LDA PCNTR AND =B377 CPA 1 RSS JSB EMPBF NO,EMPTY PUNCH BUFUR. LDA CKSUM KEEP ADA INST1 RUNNING ADA INST2 CHECK- STA CKSUM SUM. LDA INST2  PUT LDB INST1 INSTRUCTION STA PNADR,I INTO ISZ PNADR PUNCH STB PNADR,I BUFUR. ISZ PNADR POINT TO NEXT POSITION. LDA PCNTR SAVE CURRENT AND =B377 LOW BITS OF STA LASTP PCNTR FOR NEXT TIME. ISZ PNBUF INCREMENT RECORD CNT. ISZ PNBUF JMP EMCDE,I EXIT SKP * * THIS ROUTINE EMPTIES CURRENT CONTENTS * OF PUNCH BUFUR AND SETS UP HEADER FOR NEXT. * * CALLING SEQUENCE: * JSB EMPBF * EMPBF NOP LDA RCFLG WE PUNCHING SUITCASE ROM TAPE CPA .+2 AND IS THIS 'LAST PUNCHOUT'? JMP EMP05 YES. LDA PNBUF NO. STA RLEN SAVE RECORD COUNT. CPA .+5 ANY DATA IN 'BUFUR'? JMP PB0 NO. GO SET HEADER. LDA RCFLG USER WANT SUITCASE ROM TAPE SZA,RSS PUNCHED? JMP EMP1 NO, WANTS REGULAR OBJECT TAPE. JMP EMP00 YES. EMP05 CLA JMP EMP0 EMP00 LDA PNAD PUT ADDR OF OBJ CODE BUFFER IN 'A'. EMP0 JSB SDUMP GO PUNCH SUITCASE ROM TAPE. JMP PB0 EMP1 LDA RLEN GET RECORD LENGTH. ALF,ALF STA PNBUF SET HIGH COUNT. LDA CKSUM PUT IN STA PNBUF+2 CHECKSUM. LDA PCH SUPPRESS SZA,RSS PUNCHING? JMP PB0 JSB TTYPL LIST AND PUNCH ON TTY? SZA JMP EMP22 NO. HLT 52B YES. LET USER TURN ON PUNCH. CLA,INA SET 'TTY BINARY PUNCH' FLAG. STA PNFLG EMP22 LDA .+2 GO PUNCH OUT. JSB IOSUB DEF PCH DEF PNBUF DEF RLEN JSB TTYPL IST AND PUNCH ON TTY? SZA,RSS HLT 53B YES. LET USER TURN OFF PUNCH. CLA CLEAR 'TTY BINARY PUNCH ' FLAG. STA PNFLG PB0 LDA .+5 SET UP STA PNBUF HEADER LDA PCNTR FOR NEXT STA PNBUF+3 RECORD. ADA DBUG ADA PNBUF+1 STA CKSUM LDA DBUG <:6STA PNBUF+4 LDA PBASE POINT ADA .+5 TO STA PNADR BUFUR POSITION JMP EMPBF,I EXIT SKP * 'EQU' PROCESSES AN EQU STATEMENT. * * CALLING SEQUENCE: * LDB * * JSB EQU * * UPON EXIT, A REG = 0 MEANS FIELD CONTAINS 'EQU'. * AND EQU STATEMENT HAS BEEN PROCESSED. * A REG # 0 MEANS FIELD DOESN1T CONTAIN 'EQU'. * IN EITHER CASE, B REG CONTAINS GARBAGE UPON EXIT. * * EQU NOP JSB LOADB CPA .E 1ST CHAR = "E"? RSS YES. JMP EQT9 NO. INB JSB LOADB CPA .Q 2ND CHAR = "Q"? RSS YES. JMP EQT9 NO. INB JSB LOADB CPA .U 3RD CHAR = "U"? RSS YES. JMP EQT9 NO. CLA WE HAVE AN 'EQU'. LDB PASSN CPB .+2 IS THIS PASS 2? JMP EQU,I YES. THEN EXIT NOW. JMP EQU1 NO, PASS 1. GO PROCESS . EQT9 CLA,INA NO 'EQU'. JMP EQU,I EQU1 LDB F6ADR GET OCTAL # FROM FIELD 6. JSB NUM SOC EVERYTHING OK? JMP EQU10 NO. IOR B1KKK YES. PUT 1 IN BIT 15 AS FLAG. JMP EQU25 EQU10 LDA .-7 NO, THEN ERROR. OUTPUT JSB ERROR ERROR MESSAGE. LDA CRLEN OUTPUT THE BAD EQU STATEMENT ADA .-2 WITH PAIR OF EXTRA SPACES AT STA EQU15 BEGINNING IN CASE OF LINE PRINTER LDA .+2 AS LIST DEVICE. JSB IOSUB DEF LIST DEF CARD-1 DEF EQU15 LDA LIST CLB,INB <  12978-18015 1712 S 0122 21MX BCS MICRO- ASSEMBLER (WCS)             H0101 0 JSB SPACE CLA IOR B1KKK SET 'EQU' LABEL FLAG IN BIT 15. EQU25 LDB F1ADR ADD FLD 1 LABEL TO SYMB TABLE. CLE JSB SYMAD CLA JMP EQU,I RETURN EQU15 NOP SKP * * * 'ERROR' PRINTS ERROR MESSAGES ON THE LIST DEVICE. * * CALLING SEQUENCE: * A REG SHOULD CONTAIN - ERROR MESSAGE # IF * ERROR HAS BEEN DISCOVERED IN PASS 1; * + ERROR MESSAGE # IF ERROR HAS BEEN DISCOVERED * IN PASS 2. * JSB ERROR * * ON RETURN, MESSAGE WILL HAVE BEEN PRINTED * ON LIST DEVICE. * ERROR NOP ISZ NMERR LDB LIST SUPPRESS SZB,RSS LISTING? LDB .+6 STB SAVH SSA,RSS PASS I ERRORS? JMP EL2 NO. PASS 2. * * PASS I ERRORS * EL1 CMA,INA YES. MAKE ERROR # POS. LDB E1 PUT ERROR # INTO RBL ERROR MESSAGE BUFFER. JSB DECML LDA SAVH CLB,INB JSB SPACE SPACE ONE LINE. LDA .+2 OUTPUT ERROR MESSAGE. JSB IOSUB DEF SAVH DEF ERR1-1 DEF .-14 JMP ERROR,I EXIT. * * * PASS II ERRORS * EL2 SZA,RSS A = JMP EL1 0? YES. GO BACK. LDB E2 PUT ERROR MESSAGE NO. INTO RBL ERROR MESSAGE BUFFER. JSB DECML LDA LINE# PUT LINE NO. INTO LDB E3 ERROR MESSAGE BUFFER. RBL INB JSB DECML LDA SAVH CLB,INB JSB SPACE LDA .+2 OUTPUT ERROR MESSAGE. JSB IOSUB DEF SAVH DEF ERR2-1 DEF .M28 JMP ERROR,I SKP * * "IOSUB" DOES THE INPUT/OUTPUT. * * CALLING SEQUENCE: * * LDA <1 FOR INPUT, 2 FOR OUTPUT> * JSB IOSUB * DEF * DEF * DEF <- NO. OF CHARS OR + NO. OF WORDS> * * IOSUB NOP * * FIRST, SET UP THE .IOC. CALLING PARAMETERS. * STA SAVA ALF,AL+rF PUT READ/WRITE PARAM IN ALF PROPER PLACE. LDB IOSUB,I PLUG IN L.U.#. LDB 1,I SZB,RSS IS L.U.=0? JMP IOSUB,I YES. THEN QUIT RIGHT HERE. IOR 1 STA IOW3 LDA IOW0 SET UP AND UMSK CONTROL WORDS. IOR 1 STA IOW0 LDA IOW2 AND UMSK IOR 1 STA IOW2 LDA IOW4 AND UMSK IOR 1 STA IOW4 ISZ IOSUB SET BUFFER ADDR. LDA IOSUB,I STA IOBUF ISZ IOSUB SET # OF CHARS OR WORDS. LDA IOSUB,I LDA 0,I STA IONUM ISZ IOSUB SET RETURN ADDRESS. * * NOW FIND OUT WHAT IS TO BE DONE AND MAKE * NECESSARY MODIFICATIONS IN CALLING PARAMETERS. * JSB .IOC. IOW0 OCT 040000 AND EQMSK ALF,ALF CPA .+2 PUNCH OUT? JMP IO2 YES. CPA B16 2767A LINE PRINTER OUTPUT? JMP IO3 YES CPA B12 2610A/2614A LINE PRINTER OUTPUT? JMP IO3 YES. ADA .M20 NO. MAG TAPE I/O? SSA JMP IO4 NO. ADA .M20 SSA,RSS JMP IO4 NO. LDA IOW3 YES. SO FIX .IOC. CALL FOR IOR MCODE MAG TAPE I/O. STA IOW3 LDA IONUM NOW CONVERT - # OF CHARS CMA,INA SLA TO + # OF WORDS. INA RAR STA IONUM JMP IOBEG IO2 NOP LDA IOW3 PUNCH OUT: FIX FUNCTION IOR PCODE WORD FOR BINARY OUTPUT. STA IOW3 JMP IOBEG IO3 JSB .IOC. LP OUTPUT: SET LP NORMAL MODE. IOW2 OCT 030700 JMP IO3 JMP IOBEG IO4 LDA IOW3 TTY I/O OR CARD READER INPUT. LDB PNFLG WE PUNCHING BINARY ON TTY? SZB IOR =B500 YES. SET FUNCTION WORD. IOR B400 NO. SET FUNCTION WORD FOR ASCII. STA IOW3 JMP IOBEG * * NOW BEGIN THE I/O. * IOBEG NOP JSB .IOC. START THE I/O. IOW3 NOP JM3P *-2 IOBUF NOP IONUM NOP IOST JSB .IOC. I/O DONE YET? IOW4 OCT 040000 SSA JMP IOST NO, KEEP WAITING. RAL SSA JMP IOER2 CMB,INB SAVE - # OF CHARS LDA SAVA READ IF THIS WAS A READ CPA .+1 OPERATION. STB CRLEN JMP IOSUB,I IOER2 HLT 36B TRANSMISSION ERROR. JMP IOBEG GO TRY AGAIN. SKP * * * THIS ROUTINE GENERATES LEADR ON PUNCH DEVICE * * CALLING SEQUENCE; * JSB LEEDR * LEEDR NOP LDA PCH SZA,RSS JMP LEEDR,I JSB TTYPL LIST AND PUNCH ON TTY? SZA,RSS HLT 52B YES. LET USER TURN ON PUNCH. JSB LEADR DEF *+3 DEF PCH DEF .+12 JSB TTYPL LIST AND PUNCH ON TTY? SZA,RSS HLT 53B YES. LET USER TURN OFF PUNCH. JMP LEEDR,I SKP * 'LOADB' RETURNS IN THE A REG THE BYTE WHOSE * BYTE ADDRESS WAS SPECIFIED IN THE B REG. * BYTE ADDRESS IS UNCHANGED UPON EXIT. * * CALLING SEQUENCE: * B REG SHOULD CONTAIN BYTE ADDRESS OF * BYTE TO BE FETCHED. * JSB LOADB * UPON RETURN, THE BYTE WILL BE IN THE LOW BITS OF * THE A REG. B REG WILL CONTAIN ORIGINAL * BYTE ADDRESS. * * LOADB NOP STB L.000 SAVE BYTE ADDRESS CLE,ERB SET E TO INDICATE HI OR LO BYTE LDA 1,I PICK UP WORD LDB HIMSK PUT HIMASK IN B SEZ WANT HI BYTE? BLF,BLF NO MAKE MASK LO AND 1 ISOLATE BYTE SEZ,RSS IS BYTE HI? ALF,ALF YES SHIFT LO LDB L.000 RESET B JMP LOADB,I EXIT. SKP * * "LOGUN" RETURNS THE BINARY EQUIVALENT OF THE ASCII * LOGICAL UNIT NO. ON A CONTROL CARD. * * CALLING SEQUENCE: * B REG CONTAINING BYTE ADDRESS OF ANY CHAR * AFTER "$" AND BEFORE "=" IN A CONTROL STATEMENT. * A REG DOESN'T MATTER; * JSB LOGUN * * UPON EXIT: A REG WILL CONTAIN BINARY EQUIVALENT OF * LOGICAL UNIT NO., UNLESS OVERFLOW IS SET, IN WHICH * CASE AN ERROR HAS BEEN DETECTED, AND A REG IS * GARBAGE. * NOTE! LOGICAL UNIT NO. MUST BE IN THE RANGE 1 THRU * 74 OCTAL. * LOGUN NOP CLO LDA .EQ. SKIP TO JSB SKPTO EQUALS SIGN. SOC REACH END OF CARD FIRST? JMP LOGUN,I YES, SO ERROR. INB NO. SET NEXT BYTE ADDRESS. LDA SPAC SKIP OVER JSB SKIP BLANKS. SOC REACH END OF CARD? JMP LOGUN,I YES, SO ERROR. CLA CONVERT ASCII LOGICAL UNIT NO. JSB CNVRT (OCTAL NO.) TO BINARY. SOC ANY ERRORS? JMP LOGUN,I YES. STA 1 NO. IS THE NO. OUT OF RANGE? SZA,RSS JMP LOG1 YES. IS 0. SSA JMP LOG1 YES. IS NEG. ADA MB75 SSA,RSS JMP LOG1 YES, IS > 74 OCT. LDA 1 NO, IS OK. PUT IN A REG. JMP LOGUN,I LOG1 STO JMP LOGUN,I SKP * * THIS ROUTINE CONTROLS THE LISTING OF * SOURCE PROGRAM * * CALLING SEQUENCE: * LDA <- # OF CHARS IN SOURCE RECORD IF YOU WANT * TO LIST LINE #-SOURCE RECORD ONLYF * + # OF CHARS IN SOURCE RECORD IF YOU * WANT TO LIST LINE #-OCTAL CODE-SOURCE- * RECORD> * JSB LSTR * * LSTR NOP LDB LIST SUPPRESS SZB,RSS LISTING? JMP LSTR,I YES RETURN SSA,RSS NO. FORMAT 1? JMP LSTR2 * * LIST FORMAT 1 * LSTR1 ADA .M25 YES. ADJUST CHAR STA CLEN COUNT TO INCLUDE LINE NO. AND LDB ABF0 SPACES. CONVERT RBL LINE LDA LINE# NO. JSB DECML TO DECIMAL LDA .+2 OUTPUT LINE. JSB IOSUB DEF LIST DEF OUTBF-1 DEF CLEN JMP LSTR,I RETURN * * LIST FORMAT 2 * LSTR2 ADA .P27 ADJUST LINE CHAR COUNT. CMA,qINA TO INCLUDE STA CLEN OTHER STUFF. LDA LINE# CONVERT LINE NO. TO DECIMAL LDB ABF0 AND PUT IN OUTPUT BUFFER. RBL JSB DECML LDA EQUFL IS THIS AN EQU STATEMENT? SZA JMP LST4 YES, SO JUST PRINT IT. LDA INST2 NO. CONVERT ADDR PORTION TO AND HIMSK ABS AND PUT IN ASCII OUTPUT ALF,ALF IOR T.002 BUFFER. LDB ABF0 RBL ADB .+5 JSB OCTL DEC 4 LDA INST2 NOW CONVERT BITS 16-23 OF AND LOMSK MICROINSTRUCTION TO ASCII LDB ABF0 AND PUT IN ASCII OUTPUT RBL BUFFER. ADB .+10 JSB OCTL DEC 3 LDB ABF0 CONVERT BITS 15-0 OF MICRO- RBL INSTRUCTION WORD TO ASCII AND ADB .+14 PUT INTO OUTPUT BUFFER. LDA INST1 JSB OCTL DEC 6 LST4 LDA .+2 OUTPUT THE LINE. JSB IOSUB DEF LIST DEF OUTBF-1 DEF CLEN LINE JMP LSTR,I EXIT. SKP * * 'NOPER' PUTS NOP'S IN THE FIELD WORDS, SO THEY * CAN BE COMBINED TO MAKE A WORD TYPE 1 NOP * MICROINSTRUCTION. * * CALLING SEQUENCE: * JSB NOPER * NOPER NOP * * PUT NOP'S IN THE FIELDS OF A TYPE 1 WORD. * LDA SPNOP 'SPECIAL' NOP STA FLD3 INTO FIELD 3. LDA STNOP 'STORE' NOP STA FLD5 INTO FIELD 5. LDA SBNOP 'S-BUS' NOP STA FLD6 INTO FIELD 6. LDA PASS 'ALU' NOP STA FLD4 INTO FIELD 4. LDA OPNOP 'OPCODE' NOP STA FLD2 INTO FIELD 2. JMP NOPER,I SKP * * "NUM" CONVERTS A FIELD WHOSE STARTING BYTE ADDRESS * IS IN B REG., INTO A BINARY NO. THE NO. * IS RETURNED IN THE A REG. IF ERROR, OVERFLOW * BIT IS SET ON RETURN. * * CALLING SEQUENCE: * LDB * JSB NUM * * UPON RETURN: A REG. CONTAINS THE BINARY NO. * P= OVERFLOW BIT SET IF ERROR * * ALLOWABLE CONTENTS OF FIELD ARE: *
* '*' * '*' FOLLOWED BY '+' OR '-'
*
* WHERE
CAN BE: * B * % * * * NOTE: IN THIS SUBR, THE FIELD IS DIVIDED INTO 3 * SUBFIELDS. SUBFIELD 1 CONTAINS A LABEL (SYMBOL) OR * AN '*' OR A OCT OR DEC #. SUBFIELD 2 MAY CONTAIN * A '+' OR '-' OR A SPACE. SUBFIELD 3 MAY CONTAIN * AN OCTAL OR DEC # (OR, OF COURSE, A SPACE). * NUM NOP STB NSAVB SAVE FIELD STARTNG BYTE ADDR. CLA STA FLG2 CLEAR '+ OR -' FLAG. STA SYVAL CLEAR TEMP VALUE HOLDER. * * BEGIN BY LOOKING AT SUBFIELD 1. * (SECOND TIME AROUND, IT'S SUBFIELD 3 WE'RE * LOOKING AT.) * NUM1 LDB NSAVB JSB LOADB GET 1ST CHAR IN SUB-FIELD. CPA PRCNT IS IT '%'? JMP NUM12 YES. CPA ASTER NO. IS IT '*'? JMP NUM24 YES. JMP NUM8 NO. SEE IF IT'S A SYMBOL. NUM12 INB INC TO NEXT BYTE. JMP NUM30 GO GET AN OCTAL #. NUM24 LDA PCNTR SET 'SYVAL' TO CURRENT STA SYVAL PROG COUNTER VALUE. JMP NUM9 GO LOOK AT SUBFIELD 2. NUM8 LDB NSAVB GET SUBFIELD 1 START BYTE ADDR. JSB SERCH SSA FIND SYMBOL IN SYMBOL TABLE? JMP NUM10 NO. ADA .+4 YES. BRING WORD CONTAINING LDA 0,I VALUE INTO 'A' REG. AND =B077777 CLEAR POSSIBLE 'EQU' FLAG BIT. STA SYVAL SAVE SYMBOL ABS VALUE. * NOW WE 'CUT ACROSS THE BACK LOT', SO TO SPEAK, * AND GRAB WHAT AMOUNTS TO THE SUBFIELD 2 STARTING BYTE * ADDRESS+1 OUT OF 'TLOAD' SUBR. 'TLOAD' WAS CALLED * BY 'SERCH' ABOVE. LDB SAVC GRAB SUBFLD 2 BYTE ADDR + 1. ADB .-1 BACK UP 1 BYTE. JMP NUM90 GO SEE WHAT'S IN SUBFIELD YE2. * * HERE WE DETERMINE IF SUBFIELD 2 IS A SPACE, * '+', OR '-'. * NUM9 INB NUM90 JSB LOADB IS NEXT CHAR A SPACE? CPA SPAC RSS YES. JMP NUM91 NO. LDA SYVAL THEN 'SYVAL' HAS FINAL VALUE. JMP NUM14 PUT IN 'A' REG. NUM91 CPA PLUS IS IT '+'? JMP NUM95 YES. CPA MINUS NO. IS IT '-'? JMP NUM96 YES. JMP NUM6 NO. THEN ERROR. NUM95 LDA .+2 SET 'FLG2' TO '2' FOR '+'. STA FLG2 JMP NUM97 NUM96 LDA .+3 SET 'FLG2' TO '3' FOR '-'. STA FLG2 NUM97 INB INC TO NEXT SUBFIELD START BYTE. STB NSAVB SAVE THAT BYTE ADDR. JMP NUM1 GO SEE WHAT'S IN SUB-FIELD 3. * * DOES # STRING HAVE A 'B' ON THE END? * NUM10 LDA .B LDB NSAVB JSB SKPTO SOC JMP NUM4 NO. MUST BE DEC # THEN. JMP NUM3 YES. MUST BE OCTAL #. * * GO GET AN OCTAL #. * NUM3 LDB NSAVB NUM30 CLA JSB CNVRT SOC JMP NUM6 BAD OCTAL #, SO ERROR. JMP NUM14 GOOD OCTAL #. * * GO GET A DECIMAL #. * NUM4 LDB NSAVB CLA,INA JSB CNVRT SOC JMP NUM6 BAD DEC #, SO ERROR. JMP NUM14 GOOD DEC #. * * COMPUTE FINAL VALUE FOR ENTIRE FIELD. * NUM14 LDB FLG2 WE JUST COMPLETE A SZB,RSS SUBFIELD 3 PASS? JMP NUM5 NO. SO WE'RE DONE. CPB .+3 YES. '-' IN SUBFIELD 2? CMA,INA YES, SO NEGATE SUBFLD 3 #. ADA SYVAL ADD TO PREVIOUS VALUE. JMP NUM5 WE'RE DONE. * * 'GOOD # IN FIELD' EXIT. * NUM5 CLO JMP NUM,I RETURN. * * ERROR IN FIELD CONTENTS. * NUM6 STO JMP NUM,I FLG2 BSS 1 SYVAL NOP * SKP * 'OCTL' CONVERTS A POSITIVE BINARY NO. INTO AN * OCTAL ASCII EQUIVALENT WITH A SPECIFIED NO. OF DIGITS. * * CALLING SEQUENCE: * B REG SHOULD CONTAIN DESTINATION BYTE ADDRESS * OF MOST SIGNI SFICANT OCTAL ASCII DIGIT. * A REG SHOULD CONTAIN THE POSITIVE BINARY NO. * JSB OCTL * <+DEC NO. OF OCTAL ASCII DIGITS THE BINARY * NO. IS TO BE CONVERTED INTO. MUST BE IN * THE RANGE 1 THRU 6. * * UPON EXIT, THE OCTAL ASCII NO. WI.L BE AT * THE SPECIFIED ADDRESS. * OCTL NOP STA SAVP CLA CLEAR NON-ZERO DIGIT FLAG. STA FLG LDA OPAD INITIALIZE ADDRESS OF LIST STA SAVQ OF ROTATE INSTRUCTIONS. LDA .-6 STA OCONT * * PROCESSING LOOP BEGINS HERE. * OCTO LDA SAVQ,I HAVE WE LOOKED AT CPA .-1 6 OCTAL FIELDS YET? JMP OCT5 YES. SO EXIT. STA OP1 NO. SET UP NEXT ISZ SAVQ PAIR OF ROTATE LDA SAVQ,I INSTRUCTIONS. STA OP2 ISZ SAVQ LDA SAVP OP1 NOP NOW ROTATE THE NEXT OCTAL FIELD OP2 NOP INTO THE LOW 3 BITS OF A REG. AND .+7 STA SAVR SAVE THE FIELD. LDA OCONT ARE WE ON DIGIT NO. <= ADA OCTL,I NO. OF DIGITS SPECIFIED? SSA JMP OCT3 NO. SO IGNORE THIS FIELD. LDA SAVR YES. SO CONVERT AND STORE ADA B60 THIS FIELD. JSB STORB OCT3 ISZ OCONT DECREMENT NO. OF FIELDS JMP OCTO YET TO BE LOOKED AT. OCT5 ISZ OCTL JMP OCTL,I * IMPORTANT! 'DP1' MUST BE ADDRESSED BY AN INDIRECT THROUGH * BASE PAGE, BECAUSE INSTRUCTION REFERENCING IT * (SEE UNDER 'OPAD') IS MOVED BY ABOVE SUBROUTINE. DP1 DEF .+1 FLG BSS 1 SAVP BSS 1 SAVQ BSS 1 SAVR BSS 1 SKP * 'ONEST' TESTS FOR A 'ONES' STATEMENT AND PROCESSES IT IF * IT FINDS ONE. * * CALLING SEQUENCE: * * JSB ONES * * UPON RETURN: * * IF 'A' REG = 0, STATEMENT WAS NOT A 'ONES' STATEMENT. * IF 'A' REG # 0, STATEMENT WAS A 'ONES' STATEMENT * AND ALL 1'S HAVE BEEN PUT INTO THE MICRO * INSTRUCTION. * ONEST NOP LDB F2ADR GET FI8WELD 2 BYTE ADDR. LDA ONEAD GET REF STRING WORD ADDR. JSB CHECK WE GOT A 'ONES' STATEMENT? SZA,RSS JMP ONEST,I NO. RETURN. LDA =B177777 YES. SET LOW 16 BITS TO 1'S. STA INST1 LDA =B377 SET HIGH 8 BITS TO 1'S. STA INST2 JMP ONEST,I SKP * * 'OUTPT' LISTS A RECORD AFTER PASS 2 PROCESSING, AND * ALSO PUNCHES OUT THE BINARY OBJECT CODE, IF * PUNCH BUFFER IS FULL. * * CALLING SEQUENCE: * JSB OUTPT * OUTPT NOP CLB,INB LDA PCNTR INA INCREMENT PROG COUNTER. AND LOMSK IS REL ADDR OF PROG COUNTER CPA LOMSK = 377 OCT? STB BEWFL YES. SET BEWARE FLAG. LDA PCNTR NO. DOES IT MAKE NEXT REL INA AND =B777 ADDR = 401 OCT? CPA =B401 RSS YES. JMP OUT0 NO, SO OK. LDA BEWFL IS 'BEWARE WE PASSED THRU CPA .+1 REL ADDR 377' FLAG SET? JMP OUT2 YES. PROG IS OUT OF BOUNDS. OUT0 LDB EQUFL IS THIS AN EQU STATEMENT? SZB,RSS JMP OUT1 NO. LDA CRLEN MAKE # OF CHARS IN RECORD POS CMA,INA TO INDICATE PASS 2. JSB LSTR JMP OUT15 OUT1 LDA PCNTR PUT ADDRESS IN HIGH BITS AND LOMSK ALF,ALF OF MICROINSTRUCTION. IOR INST2 STA INST2 LDA CRLEN CMA,INA JSB LSTR LIST THE LINE. JSB EMCDE PUNCH OUT THE CODE. ISZ PCNTR INCREMENT PROGRAM COUNTER. OUT15 ISZ LINE# INCREMENT LINE COUNTER. JMP OUTPT,I OUT2 LDA .+9 JSB ERROR JMP ABORT SKP * * * PAGER NOP ISZ #LNES JMP PAGER,I JSB EJECT JMP PAGER,I SKP * * THIS ROUTINE CONTROLS SOURCE INPUT FROM CARD READER, PHOTOREADER, * OR TTY. NOTE THAT WE STAY IN THIS SUBROUTINE UNTIL THE ENTIRE * RECORD HAS BEEN READ, AS IT DOES NO GOOD TO START PROCESSING * UNTIL THVt<:6E ENTIRE RECORD IS IN. IN OTHER WORDS, WE DON'T TAKE * ADVANTAGE OF INTERRUPT HERE. * * CALLING SEQUENCE: * JSB RDCRD * * RDCRD NOP LDA .P40 FILL INPUT BUFFER WITH LDB ACARD SPACES. JSB CLEAN DEF BLNK2 LDA .+11 FILL ASCII OUTPUT BUFFER LDB ABF0 WITH SPACES. JSB CLEAN DEF BLNK2 LDA PASSN IS THIS PASS 2? CPA .+2 RSS YES. JMP RDCR8 NO. LDA MAG IS SOURCE ON MAG TAPE? SZA,RSS JMP RDCR8 NO. LDA MAGAD YES. THEN CHANGE INPUT DEVICE STA RDCR9 L.U. # IN 'IOSUB' CALL. * * READ A RECORD. <  12978-18016 1712 S 0122 21MX BCS MICRO- ASSEMBLER (WCS)             H0101 0* RDCR8 LDA .+1 JSB IOSUB RDCR9 DEF RDR DEF CARD DEF .M80 LDA PASSN IS THIS PASS 1? CPA .+1 RSS YES. JMP RDCRD,I NO, SO EXIT. LDA MAG SHOULD WE COPY RECORD ONTO SZA,RSS MAG TAPE? JMP RDCRD,I NO, SO EXIT. LDA .+2 YES, COPY ONTO MAG TAPE. JSB IOSUB DEF MAG DEF CARD DEF CRLEN JMP RDCRD,I ABORT NOP LDA .+2 JSB IOSUB DEF .+2 DEF AEND DEF .M18 JSB EJECT EJECT PAGE ON LIST DEVICE. HLT 76B JMP MICRO SKP * * 'SDUMP' DUMPS A SPECIAL 32-MICROINSTRUCTION/RECORD * OBJECT TAPE FOR USE IN THE HP SUITCASE ROM * SIMULATOR. * * CALLING SEQUENCE: * * LDA BUFDF DEF THE OBJECT CODE BUFFER * 'A' REG =0 MEANS ALL OBJECT CODE * HAS BEEN PASSED TO 'SDUMP'. * NO MORE IS COMING. * JSB SDUMP CALL THE DUMP ROUTINE * A EQU 0 B EQU 1 * SDUMP NOP SUITCASE TAPE DUMP ROUTINE LDB A,I GET THE RECORD LENGTH SZB,RSS IS THIS THE FINAL CALL? JMP ENDSD YES, DUMP THE LAST BLOCK OF 32 ADB =D-5 HEADER BLOCK LENGTH = 5 CMB,INB 2'S COMPLEMENT OF LENGTH STB OCNTR SAVE IN OBJECT COUNTER ADA =D5 DEF U. INST ADRS AND UPPER BYTE STA OBJPT SAVE DEF IN OBJECT BUFF POINTER LDB M2CTR GET THE MOD 2 COUNTER SZB DID WE STOP ON FIRST WORD? JMP WORD2 NO, GO SAVE SECOND WORD WORD1 LDA OBJPT,I U. INST ADDRESS AND UPPER 8 BITS AND =B377 STRIP OFF THE ADDRESS ALF,ALF U. INST M.S. 8 BITS STA SBPNT,I SAVE IN THE DUMP BUFFER ALF,ALF PUT BACK IN LOWER BYTE ADA CKSM ADD TO ACCUMULATED CHECKSUM STA CKSM SAVE THE NEW CHECKSUM JSB BUMPO BUMP THE OBJECT BUFFER POINTER LDA =B177400 UP@PER BYTE MASK LDB OBJPT,I GET U. INST LOWER 16 BITS AND B GET U. INST 2ND BYTE ALF,ALF 2ND BYTE TO LOWER STORE WORD IOR SBPNT,I INCLUDE WITH M.S 8 BITS OF INST STA SBPNT,I SAVE U. INST 16 BITS AND =B377 STRIP OFF THE UPPER BYTE ADA CKSM ADD THE ACCUMULATED CHECKSUM STA CKSM STORE THE NEW CHECKSUM JSB BUMPS BUMP THE STORE POINTER LDA OBJPT,I GET BACK LOWER 16 BITS OF U. INST AND =B377 ISOLATE LEAST. SIG 8 BITS ALF,ALF PLACE IN UPPER STORE WORD STA SBPNT,I SAVE IN THE DUMP BUFFER ALF,ALF PUT BACK IN LOWER HALF ADA CKSM ADD TO ACCUMULATED CHECKSUM STA CKSM SAVE THE NEW CHECKSUM ISZ M2CTR BUMP THE MOD 2 COUNTER JSB BUMPO BUMP THE OBJECT POINTER WORD2 LDA =B377 LOWER BYTE MASK LDB OBJPT,I GET U. INST UPPER 8 BITS AND B STRIP OFF THE ADDRESS IOR SBPNT,I INCLUDE WITH M.S. 8 BITS STA SBPNT,I MOST SIG. 16 BITS AND =B377 STRIP OFF THE UPPER 8 BITS ADA CKSM ADD TO ACCUMULATED CHECKSUM STA CKSM SAVE THE NEW CHECKSUM JSB BUMPS BUMP THE DUMP BUFFER POINTER JSB BUMPO BUMP THE OBJECT BUFFER POINTER LDB OBJPT,I GET LOWER 16 U. INST BITS STB SBPNT,I STORE IN THE DUMP BUFFER LDA =B377 LOWER BYTE MASK AND B STRIP OFF THE UPPER BYTE ADA CKSM ADD TO ACCUMULATED CHECKSUM STA CKSM SAVE THE NEW CHECKSUM BLF,BLF ROTATE LOWER 16 BITS OF U. INST LDA =B377 LOWER BYTE MASK AND B A = U. INST 2ND BYTE ADA CKSM ADD TO ACCUMULATED CHECKSUM STA CKSM STORE THE NEW CHECKSUM CLA RESET THE MOD 2 COUNTER STA M2CTR TO ZERO FOR NEXT GROUP JSB BUMPS BUMP THE DUMP BUFFER POINTER JSB BUMPO BUMP THE OBJECT BUFFER POINTER JMP WORD1 GO PROCEaSS THE NEXT OBJECT WORD * ENDSD LDB M2CTR GET THE MOD 2 COUNTER SZB,RSS DID WE STOP ON FIRST WORD? JMP EWRD2 NO, GO SAVE SECOND WORD * EWRD1 LDB CKSM GET ACCUMULATED CHECKSUM. ADB =B377 ALL ONES IN UPPER 8 MICRO BITS STB CKSM SAVE THE NEW CHECKSUM LDA =B377 MICRO CODE DEFAULT UPPER 8 BITS IOR SBPNT,I INCLUDE WITH LOWER 8 BITS OF JSB SSTOR PREVIOUS MICRO INSTRUCTION EWRD2 CCA SET A = ALL ONES FOR DEFAULT LDB CKSM GET ACCUMULATED CHECKSUM SONES ADB =B776 CHECKSUM +B377 + B377 STB CKSM STORE THE NEW CHECKSUM. JSB SSTOR STORE ALL ONES IN DUMP BUFFER JMP SONES CONTINUE UNTIL BUFFER FULL * SSTOR NOP STORE IN THE DUMP BUFFER STA SBPNT,I THROUGH BUFFER POINTER ISZ SBPNT BUMP THE DUMP BUFFER POINTER ISZ SCNTR IS THE BUFFER FULL? JMP SSTOR,I NO, CONTINUE LOADING LDA CKSM GET ACCUMULATED CHECKSUM CMA COMPUTE ONES COMPLEMENT ALF,ALF 1'S COMPLEMENT ROTATED STA CKSM AND SAVE BACK IN CHECKSUM * * THE FINAL DUMP OF 'SBUFF' IS DONE HERE. * JSB PUNCH DUMP 'SBUFF' ON PUNCH JMP SDUMP,I EXIT FROM SUITCASE ROM TAPE DUMP * BUMPO NOP ISZ OBJPT BUMP THE OBJECT BUFFER PNTR ISZ OCNTR IS THE LAST WORD PROCESSED? JMP BUMPO,I NO, CONTINUE PROCESSING JMP SDUMP,I YES, WAIT FOR NEXT FULL BUFFER * BUMPS NOP ISZ SBPNT BUMP THE DUMP STORE POINTER ISZ SCNTR IS THE DUMP BUFFER FULL? JMP BUMPS,I NO, CONTINUE LOADING IT LDA CKSM NO, GET ACCUMULATED CHECKSUM CMA CALCULATE 1'S COMPLEMENT ALF,ALF 1'S COMPLEMENT ROTATED STA CKSM SAVE CHECKSUM FOR THE DUMP JSB PUNCH DUMP 'SBUFF' ON PUNCH LDA =D-48 RESET THE DUMP STORE COUNTER STA SCNTR TO STORE 48 WORDS LDA SBPTR RESEsT THE DUMP STORE POINTER STA SBPNT TO FIRST U. INST WORD CLA RESET THE ACCUMULATED STA CKSM CHECKSUM TO ZERO JMP BUMPS,I ALL THE POINTERS ARE RESET * * DUMP THE CONTENTS OF THE DUMP BUFFER * STARTING AT 'SBUFF' FOR 52 WORDS. * PUNCH NOP DUMP 'SBUFF' ON PUNCH LDA .+2 LDB .+1 JSB IOSUB DEF PCH DEF SBUFF BUFFER ADDRESS DEF D52 DUMP 52 WORDS JMP PUNCH,I AND EXIT * * * CONSTANTS AND POINTERS FOR SUITCASE TAPE DUMP ROUTINE * D52 DEC 52 'SBUFF' BUFFER LENGTH = 52 M2CTR NOP MOD 2 COUNTER OBJPT NOP OBJECT BUFFER TEMP POINTER OCNTR BSS 1 OBJECT RECORD COUNTER SBDEF DEF SBUFF POINTER TO START OF DUMP BUFFER SBPNT DEF SBUFF+1 DEF USED FOR FIRST DUMP CALL SBPTR DEF SBUFF+1 POINTERS TO FIRST U. INST ADDRESS SBUFF OCT 032000 ROTATE 52 = RECORD LENGTH BSS 48 MICRO INSTRUCTION DUMP BUFFER CKSM NOP BYTE CHECKSUM ACCUMULATOR NOP THE LAST 2 BUFFER WORDS DUMPED NOP IN A RECORD ARE ZEROS SCNTR DEC -48 SUITCASE BUFFER STORE COUNTER SKP * * 'SERCH' SEARCHES THE SYMBOL TABLE FOR THE * SYMBOL (IE, LABEL) WHOSE STARTING BYTE ADDRESS * IS IN THE B REG. * CALLING SEQUENCE: * B REG SHOULD CONTAIN STARTING BYTE ADDRESS * OF SYMBOL TO BE SEARCHED FOR. * JSB SERCH * * UPON RETURN, THE WORD ADDRESS OF THE START OF * THE SYMBOL TABLE ENTRY FOR THAT SYMBOL WILL BE IN A REG. * A REG < 0 IMPLIES SYMBOL NOT PRESENT IN SYMBOL * TABLE. * * SERCH NOP LDA .-8 PUT THE SYMBOL INTO THE JSB TLOAD BUFFER, 'TOKEN'. LDB HDTAB PICK UP HEAD TABLE ADDRESS SR0 CPB SYMB END OF TABLE? RSS JMP *+3 CCA YES NOT FOUND JMP SERCH,I EXIT LDA 1,I NO,COMPARE CPA TOKAD,I 1ST 2 CHARS THE SAME? JMP *+3 I YES ADB .+6 NO, POINT JMP SR0 TO NEXT ENTRY GO BACK. LDA TOKAD COMPARE INA NEXT STA SR.00 2 INB CHARACTERS. LDA 1,I CPA SR.00,I SAME? JMP *+3 ADB .+5 NO, POINT TO NEXT JMP SR0 ENTRY & TRY AGAIN ISZ SR.00 YES INB CHECK NEXT LDA 1,I 2. CPA SR.00,I SAME? JMP *+3 ADB .+4 NO, POINT TO NEXT JMP SR0 ENTRY & TRY AGAIN. ISZ SR.00 YES. INB CHECK LAST LDA 1,I 2 CHARS. CPA SR.00,I SAME? JMP SR1 ADB .+3 NO. POINT B REG. TO START OF JMP SR0 NEXT ENTRY. TRY AGAIN. SR1 LDA 1 YES, SUCCESS. ADA .-3 SET A TO HEAD OF ENTRY. JMP SERCH,I & EXIT. SKP * * THIS ROUTINE SEARCHES THE OPCODE TABLE INDICATED BY A-REG * FOR MNEMONIC POINTED TO BY B REG. * * ON ENTRY: A REG SHOULD CONTAIN NO. REFERENCING TABLE * TO BE SEARCHED, AS FOLLOWS: * A=1 REFERENCES 'OPCODE' TABLE. * A=2 " 'SPECIAL' " * A=3 " 'CONDITION' " * A=4 " 'ALU' " * A=5 " 'IMM' " * A=6 " 'STORE' " * A=7 " 'S-BUS' " * * B= BYTE POINTER TO MNEMONIC STRING * * ON EXIT A= VALUE OF OPCODE * IF A=-1, THEN THE MNEMONIC WASN'T FOUND. * * * TABLE LOOKS LIKE * * ***************** * * BYTE1 * BYTE2 * * ***************** * * BYTE3 * BYTE4 * * ***************** * * VALUE * * ***************** * * . * * * . * * $SRCH NOP STB S.000 SAVE BYTE ADDRESS LDB SBUS PUT DEFAULT TABLE VALUE IN B. CPA .+1 L 'OPCODE'? LDB OPCOD YES, PUT TABLE ADR IN B REG. CPA .+2 'SPECIAL'? LDB SPEC YES, PUT TABL ADR IN B REG. CPA .+3 'CONDITION'? LDB COND YES, LOAD TABL ADR IN B REG. CPA .+4 'ALU'? LDB ALU YES, PUT TABL ADR IN B REG. CPA .+5 'IMM'? LDB IMM YES, PUT TABL ADR IN B REG. CPA .+6 'STORE'? LDB STORE PUT TABL ADR IN B REG. CPA .+7 'S-BUS'? LDB SBUS YES, PUT TABL ADR IN B REG. STB PNTR SAVE TABLE HEAD. LDB S.000 PUT OPCODE MNEMONIC LDA .-4 STRING INTO THE JSB TLOAD BUFFER, 'TOKEN'. LDB PNTR DO 1ST SRC00 LDA 1,I 2 CPA TOKEN BYTES COMPARE? JMP SRCH1 YES. ADB .+3 NO. POINT TO SRCH0 LDA 1,I NEXT ENTRY. SZA END OF TABLE? JMP SRC00 NO. GO BACK. CCA YES SET ERROR JMP $SRCH,I EXIT SRCH1 INB DO 2ND LDA 1,I 2 CPA TOKEN+1 BYTES COMPARE JMP SRCH2 YES. ADB .+2 NO. POINT TO NEXT MNEMONIC JMP SRCH0 AND GO TEST THAT ONE. SRCH2 INB YES. LDA 1,I PICK UP BINARY CODE. JMP $SRCH,I EXIT SKP * * THIS ROUTINE SKIPS OVER ALL CONSECUTIVE SYMBOLS * LIKE THAT IN A-REG. * * CALLING SEQUENCE: * LDA * LDB .BYTE ADDRESS WHERE POSSIBLE SKIP IS TO * BEGIN> * JSB SKIP * UPON RETURN: * B REG WILL CONTAIN BYTE ADDR OF FIRST CHAR * UNLIKE THE ONE SKIPPED OVER. * A REG NOT SIGNIFICANT. * IF OVERFLOW IS SET, THEN END OF BUFFER WAS REACHED * BEFORE REACHING A CHAR DIFFERENT FROM ONE TO BE SKIPPED * OVER. * SKIP NOP STA CHAR SAVE TEST CHAR SKP0 JSB LOADB LOAD CHAR FROM STRING SZA =0? JMP *+3 STO YES SET END OF LINE FLAG. JMP SKIP,I EXIT CLO CPA CHAR =CHAR? RSS JMP SKIP,I NO EXIT INB YES CHECK JMP SKP0 NEXT ONE. SKP * 'SKP' PROCESSES THE 'SKP' PSEUDO OP, WHICH CAUSES * AN EJECT OF THE LISTING PAGE AT THE POINT WHERE THE * 'SKP' IS ENCOUNTERED. * * CALLING SEQUENCE: * * JSB SKP * * UPON RETURN: * * IF NOT A 'SKP', 'A' REG=0; IF A 'SKP', 'A' REG=1. * IF CALL OCCURS IN PASS 1, NOTHING ELSE HAPPENS. * IF CALL OCCURS IN PASS 2, PAGE WILL HAVE BEEN EJECTED. * SKP NOP LDB F2ADR GET FIELD 2 BYTE ADDR. LDA SKAD GET ADDR OF STRING 'SKP'. JSB CHECK DO WE HAVE A 'SKP' STATEMENT? SZA,RSS JMP SKPP5 NO. LDA PASSN ARE WE IN PASS 1? CPA .+1 JMP SKPP4 YES. JSB EJECT NO, MUST BE PASS 2. EJECT PAGE. JMP SKPP4 SKPP4 CLA,INA SET 'A' FOR 'YES, 'SKP'. JMP SKP,I SKPP5 CLA SET 'A' FOR 'NO SKP'. JMP SKP,I SKP * THIS ROUTINE SKIPS TO SYMBOL IN A-REG * STARTING AT BYTE ADDRESS SPECIFIED IN B-REG. * IF END OF CARD IS REACHED BEFORE SYMBOL FOUND * OVERFLOW IS SET. * SKPTO NOP STA CHAR SAVE TEST CHAR SK0 JSB LOADB LOAD CHAR FROM STRING CPA CHAR =? RSS YES JMP *+3 CLO CLEAR OVERFLOW JMP SKPTO,I EXIT SZA END OF STRING? JMP *+3 STO YES SET OVERFLOW JMP SKPTO,I EXIT INB ELSE BUMP ADDRESS JMP SK0 + TRY AGAIN. SKP * * * THIS ROUTINE SPACES N LINES ON SPECIFIED * DEVICE. * * CALLING SEQUENCE: * LDA * LDB <+ # OF LINES TO BE SPACED> * JSB SPACE * SPACE NOP SZA,RSS IS L.U.#=0? JMP SPACE,I YES. THEN GO BACK NOW. CMB,INB SET STB SCNT ʱ COUNT STA DEVIC SAVE L.U. SZA,RSS SUPPRESS LISTING? JMP SPACE,I YES LDA SPSTW AND UMSK IOR DEVIC STA SPSTW JSB .IOC. I/O ON TTY? SPSTW OCT 040000 AND EQMSK SZA,RSS JMP SPTT YES. LDA LPSPC STA SPBUF JMP SP1 SPTT LDA TTYSP STA SPBUF SP1 NOP LDA .+2 JSB IOSUB DEF DEVIC DEF SPBUF DEF .-2 SP4 JSB PAGER ISZ SCNT FINISHED? JMP SP1 NO, GO BACK. JMP SPACE,I YES EXIT SKP * * THIS ROUTINE STORES LOW BYTE OF A IN * LOCATION IN B. ADDRESS INCREMENTED ON EXIT. * STORB NOP STB L.000 SAVE B-REG CLE,ERB E INDICATE HI OR LO STB L.002 SAVE WORD ADDRESS AND LOMSK SAVE STA L.001 SOURCE BYTE. LDA 1,I PICK UP WORD. LDB HIMSK PUT HI MASK IN B-REG. SEZ,RSS DEST IS LO BYTE? BLF,BLF NO SAVE OPPOSITE AND 1 BYTE. SEZ,RSS SHIFT CURRENT ALF,ALF BYTE HIGH IF NECESSARY IOR L.001 OR IN SOURCE BYTE. SEZ,RSS RE-ADJUST ALF,ALF WORD IF NEXESSARY STA L.002,I STORE LDB L.000 BUMP INB BYTE ADDRESS JMP STORB,I EXIT. SKP * * 'SYMAD' ADDS THE SYMBOL(IE., THE LABEL) POINTED * TO BY B REG TO THE SYMBOL TABLE. * * CALLING SEQUENCE: * B REG MUST CONTAIN THE STARTING BYTE ADDRESS * OF THE SYMBOL TO BE ADDED; * A REG MUST CONTAIN THE VALUE OF THE SYMBOL * (IE., THE ADDRESS OF SYMBOL IN THE MICROPROGRAM). * JSB SYMAD * * ROUTINE CHECKS FOR DUPLICATE ENTRIES OUTPUTS * APPROPRIATE ERRORS. * * E-REG SET ON ENTRY IMPLIES EXTERNAL SYMBOL * * SYMBOL TABLE FORMAT: * * *************** * *BYTE1 * BYTE2* * *************** * *BYTE3 * BYTE4* * *************** *  *BYTE5 * BYTE6* * *************** * *BYTE7 * BYTE8* * *************** * * VALUE * * *************** * * TAG * * *************** * SYMAD NOP STA VALU,I SAVE VALUE. CLA SET SEZ EXTERNAL INA FLAG IF STA TAG,I INDICATED. SEZ THIS ' JMP SY0 IS CLE,ERB LABEL * * THIS SECTION HANDLES INTERNAL SYMBOLS. * LDA .-4 STORE THE STA COUNT LABEL INTO SYM1 LDA 1,I SYMBOL TABLE. STA SYMB,I INB ISZ SYMB ISZ COUNT JMP SYM1 LDB SYMB ADB .-4 STB SYMB SY2 LDB SYMB RBL JSB SERCH IS CURRENT SYMBOL ALREADY SSA IN SYMBOL TABLE? JMP SY3 NO. GOOD. LDA .-1 YES. THEN WE HAVE DUPLICATE JSB ERROR LABELS, AN ERROR. PRINT MESSAGE. LDA TOKAD OUTPUT DUPLICATE SYMBOL WITH ADA .-1 PAIR OF EXTRA SPACES AT STA SY2.5 START FOR LINE PRINTER . LDA .+2 JSB IOSUB DEF LIST SY2.5 NOP DEF .-10 LDA LIST CLB,INB JSB SPACE JMP SYMAD,I EXIT. SY3 LDA TAG BUMP INA END STA SYMB OF TABLE ADA .+4 POINTERS STA VALU SYMB,VALU INA & STA TAG TAG CMA,INA ADA LWAM SSA,RSS JMP SYMAD,I EXIT. LDA .+2 JSB IOSUB DEF .+1 DEF SOVFL DEF .M18 JMP ABORT * * THIS SECTION HANDLES EXTERNAL SYMBOLS. * SY0 STB S.000 SAVE BYTE ADDRESS IN TEMP. LDA .-8 SET STA SCNT COUT LDB SYMB BLANK LDA BLNK2 OUT STA 1,I SPACE INB FOR STA 1,I EXTERNAL INB SYMBOL. STA 1,I INB STA 1,I LDB S.7000 GET 1ST JSB LOADB BYTE INB BUMP & STB S.000 SAVE ADDRESS. LDB SYMB STORE RBL AWAY SY1 JSB STORB CHARACTER. STB S.002 SAVE NEXT ADDRESS LDB S.000 CHECK ISZ S.000 NEXT JSB LOADB CHARACTER CPA SPAC = SPACE? JMP SY2 YES GO SEARCH. LDB S.002 NO ISZ SCNT BUMP CHARACTER COUNT JMP SY1 IF LDA .-2 MORE THAN 8 JSB ERROR ERROR LDA .+2 JSB IOSUB DEF LIST DEF CARD DEF CRLEN JMP SYMAD,I EXIT. SKP * * 'TLOAD' LOADS THE BUFFER 'TOKEN' WITH THE STRING * OF ASCII CHARACTERS WHOSE STARTING BYTE ADDRESS * IS IN THE B REGISTER. * * CALLING SEQUENCE: * B REG SHOULD CONTAIN THE STARTING BYTE * ADDRESS OF THE STRING OF ASCII CHARACTERS. * * A REG SHOULD CONTAIN MINUS THE MAX. NO. * OF CHARACTERS THE STRING MIGHT HAVE. * MAX ALLOWED IS 8 CHARS. * * JSB TLOAD * * NOTE: AS SOON AS A FINAL SPACE OR A '+' OR A '-' IS * READ, LOADING STOPS. A 'FINAL SPACE' MEANS, A SPACE * FOLLOWING SOME NON-SPACE (AND NON-+, NON MINUS) * CHAR. IF NO FINAL SPACE, OR '+', OR '-' IS READ, THEN * LOADING STOPS WHEN THE MAX NO. OF CHARS AS WAS SPECIFIED * IN 'A' REG, ARE LOADED. * TLOAD NOP STA SCOUN STB SAVC CLA ZERO THE 'FINAL SPACE' FLAG. STA SFLG LDB TOKAD RBL STB SAVD * FILL BUFFER 'TOKEN' WITH SPACES. LDA .-4 STA COUNT LDB TOKAD LDA BLNK2 TL0 STA 1,I INB ISZ COUNT JMP TL0 * LOAD STRING. TL1 LDB SAVC BRING IN THE JSB LOADB NEXT CHAR. ISZ SAVC INC ADDRESS FOR NEXT TIME. CPA SPAC JUST READ A SPACE? JMP TL2 YES. GO SEE IF IT'S A FINAL . CPA PLUS NO. READ A PLUS? JMP TLOAD,I YES, THEN EXIT. B@< CPA MINUS NO. READ A '-'? JMP TLOAD,I YES. THEN EXIT. TL3 LDB SAVD NOW STORE JSB STORB THE CHAR. STB SAVD SAVE NEXT STORAGE ADDR. CLA,INA SET THE 'FINAL SPACE' FLAG TO STA SFLG SHOW 'YES, WE READ A NON-SPACE' ISZ SCOUN DONE YET? JMP TL1 NO. ISZ SAVC YES. INC 'FROM' BYTE ADDR FOR JMP TLOAD,I POSSIBLE USE IN 'NUM' SUBR. EXIT. TL2 STA SAVW SAVE 'A' REG. LDA SFLG IS THIS AN INITIAL SPACE? SZA JMP TLOAD,I NO, FINAL, SO EXIT. LDA SAVW YES, SO STORE SPACE. JMP TL3 SFLG NOP SAVW NOP SKP * 'TTYIO' DETERMINES IF A GIVEN LOGICAL UNIT # * CORRESPONDS TO THE TTY. * * CALLING SEQUENCE: * * LDB * * JSB TTYIO * * UPON RETURN: * * IF A REG = 0, THEN DEVICE IS TTY. * IF A REG # 0 THEN NOT TTY. * TTYIO NOP LDA EJST SET UP CONTROL WORD. AND UMSK IOR 1 STA EJST JSB .IOC. IS DEVICE TTY? EJST OCT 040000 AND EQMSK JMP TTYIO,I A REG HAS ANSWER. RETURN. lB  12978-18017 1712 S 0122 21MX BCS MICRO- ASSEMBLER (WCS)             H0101 0 SKP * 'TTYPL' DETERMINES IF WE ARE LISTING AND * AND PUNCHING ON THE TTY. * * CALLING SEQUENCE: * * JSB TTYPL * * UPON RETURN: * A REG = 0 IF WE ARE LISTING AND PUNCHING ON TTY. * A REG # 0 IF WE ARE NOT. * TTYPL NOP LDB LIST JSB TTYIO WE LISTING ON TTY? SZA JMP TTYPL,I NO. LDB PCH YES. WE PUNCHING ON TTY? JSB TTYIO NOP JMP TTYPL,I A REG HAS ANSWER. SKP * * 'ZEROST' TESTS FOR A 'ZEROES' STATEMENT AND PROCESSES * IT IF IT FINDS ONE. * * CALLING SEQUENCE: * * JSB ZEROST * * UPON RETURN: * * IF 'A' REG = 0, STATEMENT WAS NOT A 'ZEROES' * STATEMENT. * IF 'A' REG # 0, STATEMENT WAS A 'ZEROES' STATEMENT, * AND ALL 0'S HAVE BEEN PUT INTO THE * MICROINSTRUCTION. * ZERST NOP LDB F2ADR GET FIELD 2 STARTING BYTE ADDR. LDA ZERAD GET REF STRING WORD ADDR. JSB CHECK WE GOT A 'ZEROES' STATEMENT? SZA,RSS JMP ZERST,I NO. CLA YES. PUT 0'S IN ALL 24 BITS OF STA INST1 MICROINSTRUCTION. STA INST2 CLA,INA SET 'A' TO INDICATE 'YES, JMP ZERST,I ZEROES STATEMENT' AND RETURN. SKP HED OPCODE TABLES * * O P C O D E T A B L E S * * * IN BINARY CODE FOR 'OPCOD', BITS 14-12 ARE THE * WORD TYPE NO., IF THIS NO. IS DETERMINED BY THE * 'OPCOD' MNEMONIC SOLELY. * OPCOD DEF *+1 ASC 2,NOP OPNOP OCT 010000 ASC 2, OCT 010000 ASC 2,ARS OCT 010001 ASC 2,CRS OCT 010002 ASC 2,LGS OCT 010003 ASC 2,MPY OCT 010004 ASC 2,DIV OCT 010005 ASC 2,LWF OCT 010006 ASC 2,WRTE OCT 010007 ASC 2,ASG OCT 010010 ASC 2,READ OCT 010011 ASC 2,ENV OCT 010012 ASC 2,ENVE OCT 010013 ASC 2,JSB JSB OCT 040014 ASC 2,JMP JMP OCT 15 ASC 2,IMM OCT 020016 OCT 0 END OF 'OPCODE' TABLE. SPEC DEF *+1 ASC 2,IOFF IOFF OCT 0 ASC 2,SRG2 OCT 1 ASC 2,L1 OCT 2 ASC 2,L4 OCT 3 ASC 2,R1 OCT 4 ASC 2,ION OCT 5 ASC 2,SRG1 OCT 6 ASC 2,RES2 OCT 7 STFL ASC 2,STFL OCT 10 ASC 2,CLFL OCT 11 ASC 2,FTCH OCT 12 ASC 2,SOV OCT 13 ASC 2,COV OCT 14 ASC 2,RPT OCT 15 ASC 2,SRGE OCT 16 ASC 2,NOP SPNOP OCT 17 ASC 2, BLANK OCT 17 MESP ASC 2,MESP OCT 20 ASC 2,MPCK OCT 21 ASC 2,IOG IOG OCT 22 ASC 2,ICNT OCT 23 ASC 2,SHLT OCT 24 ASC 2,INCI OCT 25 ASC 2,RES1 OCT 26 ASC 2,SRUN OCT 27 * THE SO-CALLED 'JMP-SPECIALS' ARE THE FOLLOWING * MNEMONICS, THROUGH 'JEAU'. ASC 2,UNCD UNCD OCT 30 ASC 2,CNDX CNDX OCT 31 ASC 2,JIO OCT 32 ASC 2,JTAB JTAB OCT 33 ASC 2,J74 OCT 34 ASC 2,J30 OCT 35 ASC 2,RTN RTN OCT 36 ASC 2,JEAU JEAU OCT 37 OCT 0 END OF 'SPECIAL' TABLE. COND DEF *+1 ASC 2,TBZ OCT 0 ASC 2,ONES OCT 1 ASC 2,COUT OCT 2 ASC 2,AL0 OCT 3 ASC 2,AL15 OCT 4 ASC 2,NMLS OCT 5 ASC 2,CNT8 OCT 6 ASC 2,FPSP OCT 7 ASC 2,FLAG OCT 10 ASC 2,E OCT 11 ASC 2,OVFL OCT 12 ASC 2,RUN OCT 13 ASC 2,NHOI OCT 14 ASC 2,SKPF OCT 15 ASC 2,ASGN OCT 16 ASC 2,IR2 OCT 17 ASC 2,NLDR OCT 20 ASC 2,NSNG OCT 21 ASC 2,NINC OCT 22 ASC 2,NDEC OCT 23 ASC 2,NRT OCT 24 ASC 2,NLT OCT 25 ASC 2,NSTR OCT +26 ASC 2,NRST OCT 27 ASC 2,NSTB OCT 30 ASC 2,NSFP OCT 31 ASC 2,INT OCT 32 ASC 2,SRGL OCT 33 ASC 2,RUNE OCT 34 ASC 2,NOP CNNOP OCT 35 ASC 2, OCT 35 ASC 2,CNT4 OCT 36 ASC 2,NMEU OCT 37 OCT 0 END OF 'CONDITION' TABLE. ALU DEF *+1 ASC 2,INC OCT 0 ASC 2,OP1 OCT 1 ASC 2,OP2 OCT 2 ASC 2,ZERO OCT 3 ASC 2,OP3 OCT 4 ASC 2,OP4 OCT 5 ASC 2,SUB OCT 6 ASC 2,OP5 OCT 7 ASC 2,OP6 OCT 10 ASC 2,ADD OCT 11 ASC 2,OP7 OCT 12 ASC 2,OP8 OCT 13 ASC 2,OP9 OCT 14 ASC 2,OP10 OCT 15 ASC 2,OP11 OCT 16 ASC 2,DEC OCT 17 ASC 2,CMPS OCT 20 ASC 2,NOR OCT 21 ASC 2,NSAL OCT 22 ASC 2,OP13 OCT 23 ASC 2,NAND OCT 24 ASC 2,CMPL OCT 25 ASC 2,XOR OCT 26 ASC 2,SANL OCT 27 ASC 2,NSOL OCT 30 ASC 2,XNOR OCT 31 ASC 2,PASL OCT 32 ASC 2,AND OCT 33 ASC 2,ONE OCT 34 ASC 2,SONL OCT 35 ASC 2,IOR OCT 36 ASC 2,PASS PASS OCT 37 ASC 2, OCT 37 OCT 0 END OF 'ALU' TABLE. IMM DEF *+1 ASC 2,HIGH HIGH OCT 0 ASC 2, OCT 0 ASC 2,LOW OCT 1 ASC 2,CMHI OCT 2 ASC 2,CMLO OCT 3 OCT 0 END OF 'IMM' TABLE. STORE DEF *+1 ASC 2,TAB OCT 0 ASC 2,CAB OCT 1 ASC 2,T OCT 2 ASC 2,L OCT 3 ASC 2,IOO OCT 4 ASC 2,CNTR OCT 5 ASC 2,DSPL OCT 6 ASC 2,DSPI OCT 7 ASC 2,IR OCT 10 ASC 2,M OCT 11 ASC 2,B 8OCT 12 ASC 2,A OCT 13 ASC 2,MEU OCT 14 ASC 2,CM OCT 15 ASC 2,PNM OCT 16 ASC 2,NOP STNOP OCT 17 ASC 2, OCT 17 ASC 2,S1 OCT 20 ASC 2,S2 OCT 21 ASC 2,S3 OCT 22 ASC 2,S4 OCT 23 ASC 2,S5 OCT 24 ASC 2,S6 OCT 25 ASC 2,S7 OCT 26 ASC 2,S8 OCT 27 ASC 2,S9 OCT 30 ASC 2,S10 OCT 31 ASC 2,S11 OCT 32 ASC 2,S12 OCT 33 ASC 2,X OCT 34 ASC 2,Y OCT 35 ASC 2,P OCT 36 ASC 2,S OCT 37 ASC 2,RJS RJS OCT 777 OCT 0 END OF 'STORE' TABLE. SBUS DEF *+1 ASC 2,TAB OCT 0 ASC 2,CAB OCT 1 ASC 2,T OCT 2 ASC 2,CIR OCT 3 ASC 2,IOI OCT 4 ASC 2,CNTR OCT 5 ASC 2,DSPL OCT 6 ASC 2,DSPI OCT 7 ASC 2,ADR OCT 10 ASC 2,M OCT 11 ASC 2,B OCT 12 ASC 2,A OCT 13 ASC 2,LDR OCT 14 ASC 2,RES2 OCT 15 ASC 2,MEU OCT 16 ASC 2,NOP SBNOP OCT 17 ASC 2, OCT 17 ASC 2,S1 OCT 20 ASC 2,S2 OCT 21 ASC 2,S3 OCT 22 ASC 2,S4 OCT 23 ASC 2,S5 OCT 24 ASC 2,S6 OCT 25 ASC 2,S7 OCT 26 ASC 2,S8 OCT 27 ASC 2,S9 OCT 30 ASC 2,S10 OCT 31 ASC 2,S11 OCT 32 ASC 2,S12 OCT 33 ASC 2,X OCT 34 ASC 2,Y OCT 35 ASC 2,P OCT 36 ASC 2,S OCT 37 OCT 0 END OF 'S-BUS' TABLE. HED CONSTANTS, BUFFERS, MESSAGES * ABF0 DEF OUTBF ABF7 DEF OUTBF+7 ACARD DEF CARD AEND ASC 9, ASSEMBLY ABORTED! ASTER OCT 52 BASE BSS 1 BEWFL NOP BLNK2 ASC 1, BUCK OCT 44 BYTAD BSS 1 B1 OCT 1 B4 OCT 4 B6 OCT 6 B12 OCT 12 B16 OCT 16 B60 OCT 60 B100 OCT 100 B400 OCT 400 B401 OCT 401 B14KK OCT 140000 B1KKK OCT 100000 B7400 OCT 7400 ASC 1, OUTBF BSS 11 CARD BSS 40 OCT 0 CHAR BSS 3 CFLG OCT 0 CKSUM NOP CLEN BSS 1 COMMA OCT 54 COUNT BSS 1 CRLEN BSS 1 CSAVA BSS 1 CSAVB BSS 1 D.000 BSS 1 D.001 BSS 1 DBUG BSS 1 DEVIC BSS 1 DEFLT DEF *,I POINTERS TO CODE 'NOP' DEF OPNOP VALUES. DEF SPNOP DEF CNNOP DEF PASS DEF HIGH DEF STNOP DEF SBNOP DJ ASC 9, ** NO ERRORS** DJ1 DEF DJ+2 EFILE ASC 7, MISSING $END ENDMS ASC 10, $END MICRO ASMB. ENDRC OCT 002000 'END RECORD' CODE OCT 120000 OCT 120000 OCT 0 EQMSK OCT 037400 EQUFL NOP ASC 1, ERR1 ASC 6,**ERROR ASC 1,** E1 DEF ERR1+4 ASC 1, ERR2 ASC 14,**ERROR XXXX IN LINE XXXX ** E2 DEF ERR2+4 E3 DEF ERR2+10 FWORD DEF * MUST BE RIGHT BEFORE 'FLD1', ETC. FLD1 BSS 1 (DON'T REMOVE THIS) FLD2 BSS 1 FLD3 BSS 1 FLD4 BSS 1 FLD5 BSS 1 FLD6 BSS 1 F0ADR DEF * STORAGE FOR STARTING BYTE ADDRESS F1ADR BSS 1 OF FIELDS IN INPUT BUFFER. F2ADR BSS 1 F3ADR BSS 1 F4ADR BSS 1 F5ADR BSS 1 F6ADR BSS 1 HED1 ASC 7, SYMBOL TABLE HDTAB BSS 1 HHHMS OCT 070000 HHMSK OCT 107777 HIMSK OCT 177400 ILUN BSS 1 INST1 NOP LOW 16 BITS OF MICROINSTR. INST2 NOP HIGH 8 BITS AND REL ADDR OF " LASTP DEC -2 LINE# BSS 1 LIST BSS 1 L.U. # OF LIST DEVICE LOMSK OCT 377 LPEJ OCT 030440 LPP DEC 56 LPSPC OCT 025440 L.000 BSS 1 L.001 BSS 1 L.002 BSS 1 LWAM BSS 1 MAG BSS 1 L.U. # OF MAG TAPE UNIT MAGAD DEF MAG MB75 OCT -75 MCODE OCT 100 MINUS OCT 55 MSG1 ASC 11, 210X MICROASSEMBLER MSG2 ASC 16, ENTER L.U. # OF INPUT DEVICE. MSG5 ASC 14, RELOAD SOURCE, PRESS 'RUN'. MSK6 OCT 000077 MSK78 OCT 000300 MSK8 OCT 177400 MSK12 OOCT 170000 MSK15 OCT 100000 MSK21 OCT 177000 MSK23 OCT 000777 M14 OCT 037777 M7777 OCT 170000 NMERR OCT 0 NO ASC 1,NO NSAVA BSS 1 NSAVB BSS 1 OCONT BSS 1 OLY2 JMP INPUT OLY3 JMP .BAD. ONEAD DEF ONS ONS ASC 4,ONES OPAD DEF *+1 RAL AND DP1,I ALF NOP ALF,ALF RAR ALF,ALF RAL,RAL RAR,RAR RAR NOP NOP OCT -1 ORFLG BSS 1 PASSN BSS 1 PBASE DEF PNBUF PCH BSS 1 PCNTR BSS 1 PCODE OCT 000100 PLUS OCT 53 PNAD DEF PNBUF PNADR DEF PNBUF+5 PNBUF OCT 5 OCT 060100 BSS 58 PNFLG NOP PNT01 DEF .MEM. PNTR BSS 1 PRCNT OCT 045 RCFLG NOP RDR BSS 1 RDRAD DEF RDR RLEN BSS 1 SAVA BSS 1 SAVB NOP TEMP STORAGE SAVC BSS 1 SAVD BSS 1 SAVH NOP SAVM NOP SAVN NOP SCNT BSS 1 SCOUN BSS 1 SKAD DEF SK SK ASC 4,SKP SOVFL ASC 9, MEMORY OVERFLOW! SPAC OCT 040 SPBUF BSS 1 SPRES BSS 1 SR.00 BSS 1 SYFLG BSS 1 SYMB TABLE FLAG. 0=NO,1=YES. SYMD DEF SYMTA SYMB BSS 1 SYMTA BSS 1024 SYMBOL TABLE S.000 BSS 1 S.002 BSS 1 TAG BSS 1 TMPC1 BSS 1 TMPC2 BSS 2 TMPC3 BSS 1 TMPC4 BSS 1 ASC 1, TOKAD DEF TOKEN ASC 1, TOKEN BSS 4 TTYO OCT 2 TTYSP OCT 006412 T.001 BSS 1 LOW 8 BITS OF ORIGIN T.002 BSS 1 BITS 9-14 OF ORIGIN, LOW 8= 0. UMSK OCT 177700 MASKS OUT OLD UNIT REF NO. VALU BSS 1 ZERAD DEF ZER ZER ASC 4,ZEROES DEC -16 DEC -15,-14,-13,-12 DEC -11,-10,-9 DEC -8,-7,-6,-5 DEC -4,-3,-2,-1 . DEC 0,1,2 .3 DEC 3,4 DEC 5,6,7,8,9,10,11 DEC 12,13,14,15,16 .B OCT 102 .D OCT 104 .E OCT 105 .EQ. OCT 75 .F OCT 106 .I OCT 111 .K OCT 113 .L OCT 114 .M18 DEC -18 .M20 DEC -20 .M22 DEC -22 .M24 DEC -24 .M25 DEC -25 .M26 DEC -26 .M28 DEC -28 .M32 DEC -32 .M34 DEC -34 .M40 DEC -40 .M48 DEC -48 .M80 DEC -80 .N OCT 116 9l*($.O OCT 117 .P OCT 120 .P24 DEC 24 .P27 DEC 27 .P40 DEC 40 .Q OCT 121 .R OCT 122 .S OCT 123 .U OCT 125 .X OCT 130 .Y OCT 131 .Z OCT 132 .59 DEC 59 .100 DEC 100 .1000 DEC 1000 .1024 DEC 1024 #LNES BSS 1 END MICRO *   12978-18018 1437 S 0122 0121MX BCS MICRO DEBUG EDITOR (WCS)             H0101 e ASMBҬB̬Ԭ NAMMD Ԡ..SԬMA NԠSA 0ؠMϠDBUGD SAԠNP SBADSԠSԠGMPGADDSSS. DBUAD DAUN SBANANSGA̠UNԠAB. DƠNU DBPAD DAPN SBANANPNԠAB. DƠNU DBGAD DAGN SBANANGSҠAB. DƠNU A SADG SBMSUԠPNԠHADNG DƠMS0 Dà DAD-3UPUԠ3SPAS. SA.00 SBSPA SZ.00 MP- ASBSPA DBADұ̠NPUԠBUҠHSPAS. DAD0 SBAN DƠBANK SBMSUԠASK DƠMS DàNԠMMAND SB.. Ԡ00 MP-ADSPNS DƠNŠ Dà-0 SBAԱ MPAYAGAN. MBNBSAVŠMNUSƠHASAD. SBUN DBADұNPUԠMPD ŬB SBBADұADDSS SBADBADSԠBY PAA̠MMANDS MPADAD PAA MPԠ PAA MPADAD PAAD MPDUMPDUMP PAAM MPA9MDYҠMV PAAS MPSHנSH PAAP MPPPPPA PAAV MPVҠVY PAAB MPBAKBAK PAA MPHANHANG PAA MPàU PAA MPNDNSH ASBҠGA DƠMS3 DàMMAND MPAGϠGԠNԠMMAND A9ADBBADVANŠBYŠADDSSS. SBADB PAADS3DBYŠA'D'? M;PMDYSHN'MDY'MMAND. PAAVN.A'V'? MPMVŠYS.HN'MV'MMAND. MPANϬHN. SKP ADMDUŠPAAMҠH ADSBGU SZASS DAD5 SBAD MPA DUMPMMANDPAAMҠH(SAMŠASAD MMANDPDUũ DUMPSBGU SZASS DAD SBDUMP MPA ŠMMANDPAAMҠH ԠSBGU SZA MP+5 SB DƠMS9 Dà MPA SB MPA ADMMANDPAAMҠH(SAMŠASũ ADSBGU SZA MP+5 SB DƠMS9 Dà MPA SBAD MPA MDYMMANDPAAMҠH MDSBGPұ SBMDY MPA SHנMMANDPAAMҠH SHנSBGPұ SBSH MPA BAKMMANDPAAMҠH BAKSZUN MP+5 SB DƠMS Dà9 MPA SBMAPϠSABMDADDҬMAϠMAPS. DAA DBBADұ NB SBSKP PAA SS MPBAK+ NB SZUN SS MPBAK+ DAA SBSKP PAA MPBAK+ A SBNV SZ MPBA9BADҠADDSS. SBBAK MPA BA9SB DƠMS6 Dà9 MPA PPAŠMMANDPAAMҠH PPSBGU SZASS DAD SBPP MPA HANGŠMMANDPAAMҠH HANSZUN SS MP6 DAA DBBADұ NB SBSKP PAA SS MP6 SZUN MP+5 SB DƠMS Dà 9 MPA NB SBADB PAAA DAD0 PAAB DAD PAA DAD3 PAA DAD3 PAA DAD PAAP DAD PAAS DAD PAA MP9 PAA DAD PAA MPñ0. PAAY MPñ0. PAA MP÷ PAA DAD5 PAA3 DAD6 PAA DAD PAA5 DAD PAA6 DAD9 PAA DAD0 PAA DAD PAA9 DAD øADAD- SSA MP+6 SB DƠMS6 Dà9 MPA 6DAD- ADAD SBHNG MPA ÷NB SBADB PAA DAD PAA0 DAD3 PAA DAD PAA DAD5 PAA3 DAD6 PAA DAD MPø 9NB SBADB PAAN DAD9 MPø ñ0.DAD6 MPø ñ0.DAD MPø VYMMAND VҠSBGU SZASS DAD5 SBVY MPA UŠMMANDMDUU PAAMҠH àANASԠAPŠAGҠ'NϠPMAPS SAGAD.' AAҠ'UŬ0'AG. SA0 DAAGԠADY DBBADұϠND NBMMA SZUNԠANYMŠHAAS MPű 'U'MMAND..'UŠMBAKPN'. 0DAP̠MŠHAN'U-M- PAB-BKPN'SNA? MPŲYS.SϠ. PAB0 MP0.6 DASBK PAB- MPŲ.5 MP3 0.6DANBK PAB- MPŲ.5UDN'ԠNDԬSϠ. MP3UND. Ų.5SB DƠMS Dà MPA ŲSB DƠMS Dà9 MPA űSBSKPϠSKPϠMMA. PAAND SSN? MP0NϠGϠUSŠASԠBAK 'UŬYYYY'MMAND..'UŠMADDSS YYYY'. NBYS SZUN SSN MPŲ DAASKP SBSKPBANKS PAANDNN-BANK? MPŲNϬ A SBNV SZҠNU-MADD? MPAYS.GϠGԠNԠMMAND. 3SAMP5SAVŠABSSU-MADD. ADAB-SUBAԠ. ANDB3HנUԠHGHBS. PAB3נBS3? MP3.6YS.HN̠ADDҠ0. DAP̠NϬSϠDҠ'P'AG. PAB- MP6 ADAB- SAP MP6 'UŬ0' 3.6ANASԠ'UŬ0'AG. SA0 MPŷ.9 'U'Ҡ'UŬYYYY' 6DABSŠNNVA̠GSS. SBNNV AŠUMPϠV. SBMAPϠSAB̠MDADDҬMAϠMAPS. DAMAPADGԠMDUŠ. AƬA ANDB DBB0 SBABSAD SBMDUGԠ.U.ƠMDU. YYYSASAV6SAVŠ. SBADBNGNHAԠMDU. DBADҠNנSAVŠHGH6BS SB6.3 DAɠUS'SNA̠UMPMNS. SASAV NB SB6. DAɠSAVŠנBS. SASAV SBVDADGԠSABSADDҠƠVD. ADAVDNMPUŠSABSADDҠƠV. SASAVSAVŠ. SBMPҠAŠUMPϠVҠMNS. 6.3NP 6.NP DASAVNנPUԠADDSSBSN ANDB00MP--VҠMNS. ҠADҬ SAADҬ DASAV6 SBŠŠUԠMDU. AŠMPϠ'U-M'ADDSSAԠND ƠV. DAV3 SASAV3 DAV3+ SASAV DAMP5GԠSABSU-MADD. SBMPҠAŠUMPMNS. 6.DƠV3 DƠV3+ DASAV3PUԠADDSSBSNUMP ANDB00U-MMNS. Ҡ6. SA6. SBMԠŠUԠVDANDV. DASAV3SŠGNA̠NNS SAV3Ơ'V3''V3+'. DASAV SAV3+ DAP̠AҠDBAKUNSS PAB-ASAADYADBYAN SS MPŷ.9BAK. A SBBAKAҠBAK. ŷ.9DA0̠SHSAN'UŠ0'? SZASS MPűN. SBSԠYS.HNUŠ'S'PG. ƠŠMŠBAKM'S'SUBUNŬHA MANSHŠASNϠBAKPN. MPN SŠABŬϠGSS. űDAMAϠG SAMAàMA. DAŠS Š SAG. M DAϠS Ϡ SAG S DBBSԠBG. DAASԠAG. MAàNPUŠMA HԠ55BHA.SHUDNԠUNH. UNDƠ+ UNMBAK SAASAVŠAG. SBBSAVŠBG. ASAV SZ NA SAŠG. ASAV S NA SAϠG. DABDUMPNN-VA̠GSS. SBNNV NHSNԠSNŠPNԠHŠGSSH USҠANS. L#űDAPADSԠSANGADDSS SAMPPNԠAB. APUԠA'NϠVADMNMNS' SAPADɠAGAԠSAԠƠPNԠAB. ű3SBSPA SBMSUԠASKUSҠҠGSSHŠANS DƠMS35PNDU. Dà- DAD0 DBADұ SBANANNPUԠBU. DƠNU SB..ADNŠNŠƠHSSPNS. Ԡ00 MP- DƠN Dà-0 SBAԱ MPű3ɯϠPBM.ASKAGAN. MBNBSPNSŠSN.SAVŠMNUS SBUNԠHASAD. DBADұSԠ'BADұ'ϠSANGBY B̠BYŠADDSS SBBADұNPUԠBU. űSBADBADAHA. PAAHAҠ? MPNHNDN. PAA!N.HAҠ'!'? MPű.YS.HNHŠANSA̠G'S. PAAN.HAҠMMA? MPŲ0YS. PAAN.HAҠSPA? MPŲ0YS. PASPNU̠N.HAҠNU? MP30YS.'VŠADA̠HSG'S. SBSHN.NDMAHNGMNMNS? SBBADұSAVŠPSԠMNMNàBYŠADD. PAB- MPű9N. DBMPYS.SϠSŠMNMNàADD SAɠNPNԠAB. NBNàPNԠABŠADDSS. DAB-SŠA-NN SAɠANNPNԠAB. SBMP ű.5DBBADұ MPűGϠYҠNԠMNMN. HŠŠPUԠHŠMNMNàADDSSSƠA̠GSS NHŠPNԠABŬNSPNSŠϠUS'S'!'NPU. ű.DAPNGԠNGHƠPNԠABŠ( MANAƠGSS.MAKŠNG. SANҸPUԠNUN. DBPADGԠSANGADDҠƠPҠAB. SBSAV5S. DBGADGԠSANGADҠƠGAB. ű.9SbBSAV5ɠSŠNNԠàNPҠAB. ADBB3NàϠNԠMNMNàADD. SZSAV5NàPҠABŠPN. SZNҸDNŠY? MPű.9N. MP30YS. ű9SBҠPNԠҠMSSAG. DƠMS3 Dà MPű.5 Ų0SZBADұ DBBADұ MPűGϠYҠNԠMNMN. HŠŠSԠUPHŠGSSϠBŠPNDU. 30DBPADSԠSANGDADDSS SBMPƠPNԠAB. 30.DAADұSԠ'BADұ'ϠSANGBY A̠ADDҠƠNPUԠBU.ŠUS SABADұNPUԠBUҠASUPUԠBU. ASԠƠHASNNŠϠ0. SANMS 30.3DAMPɠKAԠNԠMNPN PAB-AB.NDƠMS? SSYS. MP3.6N. 30.DANMSANYHASԠϠPN? SZASS MPűN.MAYBŠUSҠANSMŠG'S. MANAYSNVԠ+ƠHASϠ-. SA3. 3.3SBMSUԠPNԠASԠN. DƠN 3.NP SBAԱ MP3.3 MPűSŠƠUSҠANSMŠG'S. 3.6DA0ɠPUԠSԠHAҠNMNMNàN AƬAƠנBS. ANDB3 DBBADұSŠԠNNԠAN SBSBNUPUԠBU. SZNMSNàƠHASNN. DAMP DA0 DA0 ANDB3DSMNMNàHAV PANUSPNDHA? MP33N. SBSBYS.SϠSŠ. SZNMSNàƠHASNN. 33DAASŠ''. SBSB SZNMSNàƠHASNN. SBBADұSAVŠUPUԠBUҠBYŠADD. DBMPBGGSUNԠPҠAB̠ADD. DB ADBBNàϠƠDGS. DA SA36 ADBB-PNԠϠADDҠƠGNNS DAɠBNGNGNNS. DA0 DBBADұ SB̠NVԠNNSϠAS. 36BSS DBBADұNàUPUԠBUҠBYŠADD ADB36ҠƠDGS. SBBADұ DA36ADDƠDGSϠUMUAV ADANMSƠHASNN. SANMS ADADŠGԠMҠNŠMŠG ADAD-NHSN? SSASS MP39N.GϠPNԠHSN. SZMPYS.NàPNԠABŠ. DAMPɠGԠNԠM. PAB-NDƠAB? MP30.YS.DN'ԠAKNMMA. DAAN.SϠSŠMMA. DBBADұ SBSB SZNMSNàƠHASNN. DAAPUԠASPAŠAҠMMA. SBSB SZNMSNàƠHASNN. SBBADұSAVŠBYŠADDSS. MP30.3 HŠŠPNԠANŠƠGSS. 39DANMSNVԠ+ƠHASϠ-. MANA SA39.3 39.SBMSU DƠN 39.3NP SBAԱ MP39. SZMPNàϠNԠMNPNԠAB. MP30. NDA0̠ASHSAN'UŬ0'? SZA MPŴYS.ŠDDNԠHANGŠN.MP. DASAV6N.HNGԠUƠMDN- SBADANNGUS'SGUMP. DASAVSŠUS'SGNA DBAD SAɠUMP NB DASAVMNSUN. SA DASAV6 SBŠŠMDUŠBAKU. ŴMPAGϠGԠNԠMMAND. NҸNP SAVBSS SAVBSS SAV3BSS SAVBSS SAV5BSS SAV6BSS SAVBSS MP5BSS MPBSS SUP SKP HSMDUŠASUSҠϠA ADDUMPUNŠSANGAԠGVN ADDSS. MMANDMA]640: MVŬSASAVҠSAVŠHŠD. DANԠAŠŠNDGԠ< ADA̬ɠƠDGSSPD? SSA MP3N.SϠGNŠHSD. DASAVҠYS.SϠNVԠANDS ADAB60 SBSB 3SZNԠDMNԠƠDS MPϠYԠϠBŠKDA. 5SZ MP̬ MPAN!'DP'MUSԠBŠADDSSDBYANND HUGHBASŠPAGŬBAUSŠNSUNNNG (SŠUNDҠ'PAD'SMVDBYABVŠSUBUN. DPDƠPD GNP SAVPBSS SAVѠBSS SAVҠBSS SKP 'HK'HKSƠHŠGNƠHŠASԠBԠAP ADDSHŠSAMŠASANAADYSNGGNN HŠS.U.AB.ƠSϬHNNYHŠ.U. HAԠNYSHANGD.ƠNԬANנNYSAD. ANGSUN: DA 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED BASIC I/O 0.*TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP '0   12984-18002 1611 S 0146 2767 DIAGNOSTIC              H0101 * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * * * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 PIS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA {ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED OPERmATOR DESIGN SECTION * OPERATOR DESIGN SECTION * ORG 4000B OPDSN NOP LDA 112B CHECK FOR CONSOLE DEVICE SZA,RSS JMP OPDSN,I NO SO DONT DO OPDSN JSB .FMT TELL OP HE'S IN OPDSN DEF MSG1 LDA SUPA SET STA PRPLA LAST STATEMENT ADDRESS CLA CLEAR STA SUPA,I SOURCE STATEMENT FILE STA DBC USER BUFFER * IRQ JSB .FMT OUTPUT @ DEF .MSG1 JSB GIFO GET INPUT FROM OPERATOR JSB GETB GET INPUT BLOCK JMP INER NO INPUT SEZ,RSS IF IT'S ASCII JMP PCMD IT'S A COMMAND STA TMP SAVE IT SZA,RSS IF IT'S A ZERO JMP INER THEN IT'S AN ERROR SSA IF NEG THEN ERROR JMP INER LDA MXNM CHECK FOR MAX NUMBER CMA ADA TMP SSA,RSS IF OVER 999 JMP INER THEN ERROR JSB GETB GET STATEMENT TYPE JMP DLL DELETE LINE SEZ SHOULD BE ASCII JMP INER NO-SO ERROR SKP JSB FNDST FIND STATEMENT TYPE JMP INER NOT FOUND STA SVB STB TMP+1 ALF,ALF INPRN AND .177 CPA AA IS IT ASCII? JMP TAA YES CPA AI IS IT INTEGER? JMP TAI YES CPA AK IS IT OCTAL? JMP TAK YES JMP INPRC-1 * TAA JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ IS IT ASCII JMP INER NO - THEN ERROR JMP INPRC OK * TAI JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR JMP INPRC OK * TAK JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR LDA B OK JMP INPRC CLA NO DATA SO MAKE IT ZERO * INPRC LDB SVB SZB STA TMP+2 SZB,RSS STA TMP+3 LDA SVB IS THIS FIRST PRAM SZA,RSS ? JMP *+4 CLB STB SVB JMP INPRN SKP * PUT STATEMENT IN QUE * SYNTX RSS (BAY BE OVERLAYED BY JSB) JMP INER JSB FNDLN FIND LINE NUMBER JMP INSTR NOT FOUND ISZ PRPTR FOUND IT LDA TMP+1 JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+2 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+3 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT JMP IRQ ASK FOR MORE * INSTR LDA PRPLA CHECK ADA .5 TO CMA,INA SEE IF ADA EUPA QUEUE FULL SSA,RSS ? JMP .STR NO - OK STORE IT JSB .FMT YES TELL OPERATOR DEF MSG4 JMP IRQ MSG4 ASC 6,QUEUE FULL/ * .STR LDA TMP MOVE LINE NUMBER LDB PRPTR,I INTO PLACE STA PRPTR,I SZA,RSS IF NUMBER=0 THEN JMP SVLA SAVE LAST ADDRESS STB TMP ELSE ISZ PRPTR MOVE BLOCK LDA TMP+1 IN LDB PRPTR,I TO END STA PRPTR,I OF STB TMP+1 PROGRAM ISZ PRPTR LDA TMP+2 LDB PRPTR,I STA PRPTR,I STB TMP+2 ISZ PRPTR LDA TMP+3 LDB PRPTR,I STA PRPTR,I STB TMP+3 ISZ PRPTR JMP .STR SKP * FIND STATEMENT * FNDST NOP STA SVA SAVE TYPE STB SVB "" LDB STTBD STATEMENT TABLE DEF FNDSL LDA B,I CPA .M2 END OF STANDARD TABLE RSS YES JMP *+3 LDB STUD GET STANDARD USER TABLE JMP FNDSL TRY IT CPA .M1 IS IT THE TERMINATOR JMP FNDST,I YES - NOT FOUND CPA SVA IS IT TH*($IS CHARACTER JMP *+3 YES ADB .4 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT INB MOVE TO SECOND CHARACTERS LDA B,I CPA SVB DO THESE COMPARE JMP *+3 YES ADB .3 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT ISZ FNDST FOUND - ADJUST RETURN INB LDA B,I RETRIEVE PARAMETER TYPES INB AND PROCESSOR POINTER JMP FNDST,I * * * FIND LINE NUMBER IN QUE =TMP * FNDLN NOP LDB SUPA START AT FIRST STATEMENT STB PRPTR LDA B,I SZA,RSS IF ZERO JMP FNDLN,I THEN NOT FOUND CMA,INA ADD THE TWO ADA TMP NUMBERS SZA,RSS IF EQUAL JMP *+5 THEN FOUND SSA IF IT GOES NEG. JMP FNDLN,I THEN NOT FOUND ADB .4 TRY NEXT STATEMENT JMP FNDLN+2 ISZ FNDLN JMP FNDLN,I SKP * GET INFORMATION FROM OPERATOR * GIFO NOP LDA .D72 INPUT COUNT LDB IBUFD JSB SLIN,I GET INPUT FROM OPERATOR SZA,RSS WAS THERE ANY INPUT JMP *-4 NO - SO ASK AGAIN CPA .D72 DO I NEED A CR-LF? RSS JMP *+4 NO CLA YES JSB SLOP,I LDA .D72 RESTORE COUNT 2*   12984-18003 1611 S 0146 2767 DIAGNOSTIC              H0101  LDB IBUFD * RBL * STB IBUFP * ADD CR TO ADB A * LDA .15 * END OF BUFFER JSB A2BUF * JMP GIFO,I RETURN TO CALLER * * * * * * * * * * SKP * GET A CHARACTER FROM INPUT BUFFER * GETC NOP LDB IBUFP JSB BUF2A CPA .15 IF CR RETURN P+1 JMP GETC,I YES ISZ IBUFP MOVE POINTER TO NEXT CHARACTER ISZ GETC ADJUS GOOD RETURN P+2 JMP GETC,I RETURN * * BUF2A NOP CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2CHR TO AREG SEZ,RSS UPPER OR LOWER? ALF,ALF UPPER AND .177 MASK UNWANTED CHARACTER JMP BUF2A,I RETURN. * * A2BUF NOP STA GETC SAVE CHARACTER SLB,INB OPPSITE ADB .M2 CHARACTER JSB BUF2A ALF,ALF IOR GETC ADD NEW CHARACTER SEZ SHOULD IT BE SWAPPED? ALF,ALF YES STA B,I STORE IT JMP A2BUF,I * * PUTC NOP AND .177 MASK UPPER BITS SZA,RSS IF IT'S ZERO JMP PUTC,I DON'T PUT IN BUFFER LDB IBUFP GET ADDRESS JSB A2BUF PUT CHATACTER IN BUFFER ISZ IBUFP MOVE TO NEXT CHARACTER JMP PUTC,I RETURN TO CALLER * * * * * SKP * GET INPUT BLOCK FROM INPUT BUFFER * GETB NOP CLA CLEAR PARAMETERS STA AIN STB BIN JSB GETC GET A CHARACTER JMP GETB,I NO DATA CPA SPC CHECK IF IT'S A SPACE JMP GETB,I YES SKIP IT ISZ GETB ADJUST RETURN CPA MINUS IF IT'S NEG SIGN JMP NUMIN+1 THEN PROCESS AS A NUMBER JSB DGCK IF IT'S A NUMBER JMP NUMIN THEN PROCESS AS A NUMBER CLB STB SVA JSB GETA CONVERT 2 CHARACTERS STA AIN SAVE IT LDA SVA CHECK LIF SPACE HAS BEEN SZA,RSS ? JSB GETC NO GET NEXT CHARACTER LDA SPC NO DATA USE SPACE CPA SPC IS IT A SPACE? STA SVA YES SET FLAG JSB GETA CONVERT NEXT 2 CHARACTERS STA BIN SAVE IT LDA SVA CHECK FOR SAPC SZA ? JMP *+6 JSB GETC MOVE TO NEXT SPACE LDA SPC NO DATA USE SPACE CPA SPC SPACE? RSS YES JMP *-4 NO GET NEXT CHARACTER CLE INDICATE ASCII LDA AIN RETRIEVE CHR LDB BIN JMP GETB,I RETURN * * GETA NOP STA BIN LDA SVA SZA,RSS JSB GETC LDA SPC CPA SPC STA SVA ALF,ALF IOR BIN ALF,ALF JMP GETA,I SKP NUMIN CCB,RSS INDICATE POSITIVE CLB INDICATE NEGATIVE STB NFLG SAVE FLAG ADB IBUFP MOVE POINTER BACK IF NECESSARY CLE,ERB SET UPPER LOWER FLAG CLA CALL FOR INTEGER JSB AS2N,I CONVERT IT STA AIN SAVE IT LDB NFLG ADB IBUFP CLE,ERB CCA CALL FOR OCTAL JSB AS2N,I CONVERT IT STA BIN SAVE IT LDA AIN RETRIEVE LDB BIN NUMBERS ISZ NFLG WAS A NEG ENTERED? RSS JMP *+3 NO CMA,INA YES CMB,INB STA AIN SAVE NUMBER STB BIN JSB GETC GET NEXT CHARACTER LDA SPC NO DATA USE SPACE CPA SPC READ TO NEXT SPACE RSS JMP *-4 NO MOVE TO NEXT ONE CCE INDICATE IT'S A NUMBER LDA AIN RETRIEVE PRAMETERS LDB BIN JMP GETB,I RETURN AIN NOP BIN NOP NFLG NOP * * CHECK IF AREG = DIGIT * DGCK NOP STA BUF2A SAVE CHARACTER ADA .M60 ADD -60 OCTAL SSA SHOULD STILL BE POS.? ISZ DGCK NO - NOT A DIGIT ADA .M10 ADD -10 SSA,RSS SHOULD GO NEG? ISZ DGCK NO - ADJUST RETURN LDA BUF2A RETRIEVE CHARACTER JMP DGCK,I RETURN SKP * SELECT FAST OR SLOW OUTPUT DEVICE * PDVC NOP LDA JSBSD CPB AP CHECK IF LINE PRINTER? INA YES LDB 113B CHECK IF THERE IS A FAST DEVICE SZB,RSS ? LDA JSBSD NO STA FDF JMP PDVC,I RETURN * * * * OUTPUT TO FORMATTER * .FMT NOP LDB .FMT,I GET ADDRESS ISZ .FMT ADJUST RETURN CLA,CLE INDICATE STARTING FORMAT JSB FMTR,I GO TO FORMATTER JMP .FMT,I RETURN * * * * * SKP * PROGRAM COMMAND * PCMD CPA ABY EXIT OPDSN? JMP OPDSN,I EXIT CPA ALF LIST SOURCE FILE JMP PLF YES CPA ACF CLEAR SOURCE FILE? JMP PCF YES CPA ADB DEFINE BUFFER? JMP PDB YES CPA ALB LIST BUFFER? JMP PLB YES CPA ACB CLEAR BUFFER? JMP PCB YES CPA AGO START EXECUTION? JMP PGO YES * CMDL NOP (MAY BE OVERLAYED BY A JSB) RSS JMP IRQ * INER JSB .FMT INPUT ERROR DEF MSG2 JMP IRQ TRY AGAIN MSG1 ASC 3,OPDSN/ .MSG1 ASC 1,@_ *THIS "*" PREVENTS LF SUPPRESSION MSG2 ASC 6,INPUT ERROR/ SKP * LIST PROGRAM * PLF JSB PDVC CHECK FOR FAST DEVICE LIST LDA SUPA SET STARTING OF LIST STA PRPTR POINTER PLFL LDA PRPTR,I CHECK TO PRINT STATEMNET SZA,RSS IS IT THE END OF LIST JMP IRQ YES LDB SW9 CHECK TO JSB SWRT,I ABORT LIST JMP IRQ YES CCB CONVERT AND ADB IBUFD PACK CLE STATEMENT JSB I2AS,I  NUMBER LDB IBUFD ADD NUMBER TO POINTER ADB .2 RBL STB IBUFP LDA SPC PUT SPACE IN BUFFER JSB PUTC ISZ PRPTR LDA PRPTR,I * ISZ PRPTR * ADA .M1 * LDB A,I * GET PRAM TYPES STB SVB * SAVE PRAM TYPES ADA .M1 * LDB A,I * STB TMP+3 * ADA .M1 * LDA A,I * AND STATEMENT STA TMP+2 * SAVE STATEMENT ALF,ALF * JSB PUTX * PUT STATEMENT TYPE LDA TMP+2 * IN JSB PUTX * BUFFER LDA TMP+3 * AND SECOND CHATACTERS ALF,ALF JSB PUTX * LDA TMP+3 * JSB PUTX * JMP *+7 * PUTX NOP AND .177 CPA SPC IF IT'S A SPACE JMP *+3 SKIP IT JSB PUTC PUT IT IN BUFFER JMP PUTX,I TRY NEXT CHARACTER LDA SPC ADD SPACE TO BUFFER JSB PUTC SKP LDA SVB RETRIEVE PRMS TYPES ALF,ALF MOVE TO FIRST PARAMETER PLFP LDB PRPTR,I CHECK IF NO PARAMETER SZB,RSS ? JMP PLFC NO SO DON'T PROCESS IT AND .177 CPA AA IS IT ASCII? JMP PAA YES CPA AI IS IT INTEGER? JMP PAI YES CPA AK IS IT OCTAL? JMP PAK YES JMP PLFC TYPE NOT FOUND SO SKIP IT * PAA LDA PRPTR,I GET CHARACTERS ALF,ALF JSB PUTC FIRST ONE TO BUFFER LDA PRPTR,I AND .177 SKIP IF SPACE CPA SPC RSS JSB PUTC SECOND ONE TO BUFFER JMP PLFC * PAI LDA PRPTR,I CLB SSA,RSS IF POS CCB MOVE BUFFER POINTER BACK ONE ADB IBUFP STB IBUFP CLE,ERB JSB I2AS,I * PAE LDA IBUFP ADA .6 STA IBUFP JMP PLFC * PAK LDA PRPTR,I LDB IBUFP CLE,ERB  JSB O2AS,I JMP PAE SKP PLFC ISZ PRPTR MOVE TO NEXT PARAMETER LDA SPC ADD SPACE TO BUFFER JSB PUTC LDA SVB SZA,RSS JMP *+4 CLB STB SVB JMP PLFP LDA IBUFP DETERMINE BUFFER COUNT LDB IBUFD * RBL * CMB,INB * ADA B * LDB IBUFD JSB DVIC OUTPUT BUFFER JMP PLFL DO NEXT INSTRUCTION SKP * DELETE A LINE * DLL JSB FNDLN FIND IT JMP IRQ NOT FOUND ADB .4 PDLL LDA .M4 SET COUNT FOR COMPARE STA TMP PDLL0 LDA B,I MOVE NEXT LINE UP STA PRPTR,I ISZ PRPTR INB ISZ TMP TIME FOR A COMPARE JMP PDLL0 NO LDA B,I YES CHECK FOR END OF LIST SZA ? JMP PDLL NO STA PRPTR,I CLEAR LAST STATEMENT SVLA LDA PRPTR SAVE LAST STATEMENT ADDRESS STA PRPLA JMP IRQ * * * CLEAR SOURCE FILE * PCF CLA STA SUPA,I LDA SUPA JMP SVLA+1 SKP * PROCESS GO * PGO NOP (MAY BE OVERLAYED BY A JSB) LDA GSPTS CLEAR GO SUB TABLE STA GSPTR LDB SUPA START AT BEGINNING STB PRPTR LDA PRPTR,I STA TMP PGOL1 ISZ PRPTR LDA PRPTR,I LDA A,I STA TMP+1 POINTER TO ROUTINE ISZ PRPTR LDA PRPTR,I STA TMP+2 PARAM A ISZ PRPTR LDA PRPTR,I STA TMP+3 PARAM B ISZ PRPTR LDA TMP STA CULN SAVE CURRENT LINE NUMBER SZA,RSS JMP IRQ CLA ALTER JSB INST STA CRJSB IN CHECK FOR READY JSB CFR GO WAIT UNTIL READY LDA JSBFF RESTORE INSTR TO STA CRJSB DO FORM FEED WHEN READY LDA PRPTR,I STA TMP NEXT LINE NUMBER LDA TMP+2 GET PARAM A LDB TMP+3 GET w$PARAM B JSB TMP+1,I GO TO ROUTINE CLA NO LINE CHANGE LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP IRQ SZA,RSS CHECK FOR LINE CHANGE JMP PGOL1 NO STA TMP JSB FNDLN JMP OPLNE LINE NUMBER NOT FOUND JMP PGOL1 FOUND * * OPLNE JSB .FMT OUTPUT NO LINE NO. DEF OPLMD OPLNN JSB .FMT OUTPUT LINE # DEF OPLND LDB CULN CURRENT LINE NUMBER OPLN. CLA,INA JSB FMTR,I JMP IRQ RETURN TO OPERATOR OPLMD ASC 3,LINE?_ *THIS "*" PREVENTS LF SUPPRESSION OPLND ASC 5, (LINE #)/ SKP * DEFINE BUFFER * PDB STB TMP SAVE TYPE LDA B CPA AIK INSERT? JMP DBI YES CPA AIA JMP DBI YES CPA ARK REPLACE? JMP DBR YES CPA ARA JMP DBR YES JMP DBBC GIVE OPERATOR BUFFER COUNT * * DBIN NOP JSB DBN GET FIRST NUMBER STA TMP+1 SAVE IT JSB DBN GET SECOND NUMBER STA TMP+2 SAVE IT SZA,RSS IF IT'S NOT ZERO JMP DBIN,I CMA,INA CHECK FRST < SEC ADA TMP+1 SSA,RSS JMP INER JSB GETB EMPTY BUFFER JMP DBIN,I JMP *-2 * * DBN NOP JSB GETB GET A BLOCK OF DATA CLA,CCE NO INPUT SO FAKE IT SEZ,RSS IF IT'S ASCII JMP INER THEN ERROR SSA IF IT'S NEGATIVE JMP INER THEN ERROR SZA,RSS IF ZERO JMP DBN,I RETURN LDB DBC CHECK AGAINST BUFFER COUNT CMB ADB A SSB IF LESS THAN COUNT JMP DBN,I OK JMP INER NO THEN ERROR SKP * CLEAR BUFFER * PCB JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK IF DELETE ALL SZA ? JMP *+3 STA DBC YES CLEAR COUNT JMP DBBC 2d JSB CLSE NO CLOSE UP AREA JMP DBBC * * * REPLACE * DBR JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK, IF SZA,RSS ZERO? JMP INER IF SO THEN ERROR JSB CLSE CLOSE AREA THATS REPLACED JMP DBI. GOTO INSERT SECTION * * * OUTPUT BUFFER COUNT * DBBC JSB .FMT OUTPUT BUFFER COUNT DEF DBBCM LDB DBC JMP OPLN. DBBCM ASC 4,BF CT #/ SKP * CLOSE UP BUFFER * CLSE NOP ADA .M1 BACK UP ONE STA TMP+1 FOR INSERT LDB TMP+2 CHECK FOR SECOND SZB NUMBER JMP *+4 YES LDB A NO- THEN USE FIRST+1 INB STB TMP+2 SAVE IT CMB,INB * ADB A * CORRECT BUFFER ADB DBC * COUNT STB DBC * LDB TMP+2 SET ADDRESSES ADB DBD ADA DBD STA TMP+3 CLSE1 JSB DBENC LAST ADDRESS? JMP CLSE2 YES LDA B,I MOVE DATA STA TMP+3,I ISZ TMP+3 INB LDA B JMP CLSE1 NO MOVE NEXT WORD CLSE2 LDA TMP+3 JSB DBENC LAST ADDRESS? JMP CLSE,I CLA STA TMP+3,I ISZ TMP+3 MOVE TO NEXT ADDRESS JMP CLSE2 * DBENC NOP CMA IS A> ADA DBE END OF BUFFER SSA,RSS ? ISZ DBENC YES JMP DBENC,I SKP DBI JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK IF INSERT SZA,RSS AFTER END OF BUFFER LDA DBC YES STA TMP+1 DBI. LDA TMP+1 IF NO LINE ADA DBD ADD ADDRESS STA TMP+1 SAVE IT JSB DBENC IS BUFFER FULL JMP DBBF YES JSB GIFO CALL FOR INPUT DBI0 LDA TMP+1 STA TMP+2 LDA TMP+1,I SAVE CURRENT CONTENTS STA TMP+3 JSB GTI GET INPUT LDB A LDA DBC ADA DBD _50.* JSB DBENC IS BUFFER FULL? JMP DBBF STB TMP+1,I STORE IT ISZ TMP+1 MOVE UP ADDRESSES DBI1 ISZ TMP+2 LDA TMP+2 JSB DBENC LAST ADDRESS? JMP DBI2 YES LDB TMP+3 MOVE REST OF BUFFER LDA TMP+2,I DOWN STB TMP+2,I STA TMP+3 JMP DBI1 NO MOVE MORE DBI2 ISZ DBC ADD ONE TO COUNT JMP DBI0 NO DBBF JSB .FMT YES TELL OPERATOR DEF DBFLM JMP DBBC EXIT DBFLM ASC 6,BUFFER FULL/ SKP * GET INPUT * GTI NOP LDA TMP DOES HE WANT AND .177 CPA AA ASCII? JMP GTI0 YES JSB GETB GET A BLOCK JMP DBDNE ASK IF DONE SEZ IF IT'S ASCII DONT SWAP A&B LDA B JMP GTI,I GTI0 JSB GETC GET A CHARACTER JMP DBDNE ASK IF DONE JMP GTI,I DBDNE JSB .FMT OUTPUT DONE? DEF DNEM JSB GIFO CALL FOR INPUT JSB GETB GET ANSWER JMP DBDNE NO INPUT CPA AYE YES JMP DBBC 0   12984-18004 1611 S 0146 2767 DIAGNOSTIC              H0101  CPA ANO NO JMP *+2 JMP DBDNE NO ASK AGAIN. JSB GIFO CALL FOR ANOTHER INPUT JMP GTI+1 DNEM ASC 3,DONE?_ *THIS "*" PREVENTS LF SUPPRESSION ANO ASC 1,NO AYE ASC 1,YE SKP PLB JSB PDVC CHECK FOR FAST DEVICE LIST LDA DBC IS BUFFER EMPTY SZA,RSS ? JMP DBBC YES JSB DBIN GET ANY PARAMETERS LDA TMP+1 IF FIRST = ZERO SZA JMP *+5 INA DO ALL OF BUFFER STA TMP+1 LDA DBC STA TMP+2 LDB TMP+2 IF SEC = ZERO SZB,RSS LDB A USE INPUT COUNT STB TMP+2 SKP DBL0 LDA FDF ERA CLA LDB DBLFM GET FORMAT JSB FMTR,I CLA,INA LDB TMP+1 OUTPUT PARAMETER JSB FMTR,I LDA .M4 SET MAX LINE NUM. CNT STA TMP+3 DBL1 LDA FDF NO OUTPUT OCTAL LISTING ERA CLA LDB DBLO JSB FMTR,I CCA LDB TMP+1 ADB DBD ADB .M1 LDB B,I JSB FMTR,I LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP DBL2 ISZ TMP+1 LDA TMP+1 CMA,INA ADA TMP+2 SSA JMP DBL2 OUTPUT COMPLETE ISZ TMP+3 JMP DBL1 CLA JSB DVIC JMP DBL0 DBL2 CLA JSB DVIC JMP DBBC DBLFM DEF *+1 ASC 2,(#)_ *THIS PREVENTS LF SUPPRESSION DBLO DEF *+1 ASC 2, #_ SKP * WAIT FOR OPERATOR * WAP NOP JSB .FMT OUTPUT MESSAGE DEF WAPM LDB CULN WITH CURRENT LINE NUMBER CLA,INA JSB FMTR,I WAPL JSB GIFO CALL FOR INPUT LDA IBUFD,I CHECK IF "CO" CPA ACO ? JMP WAP,I CONTINUE CPA AST STOP JMP IRQ YES JSB .FMT TELL OPERATOR OF ERROR DEF MSG2 JMP WAPL AND TRY AGAIN * WAPM ASC 7,WAIT (LINE #)/ * * Q * * PROCESS GO TO STATEMENT * GTP NOP ISZ GTP ADJUST RETURN FOR LINE CHANGE JMP GTP,I SKP * PROCESS GOSUB * GSP NOP ISZ GSPTR MOVE TO NEXT BLOCK STB SVB SAVE REP COUNT LDB GSPTR CHECK CMB,INB IF THERE IS ADB GSPTE ROOM SSB ? JMP GSPE NO - SO ERROR LDB PRPTR SAVE PROGRAM POINTER STB GSPTR,I LOCATION ISZ GSPTR LDB SVB GET REP COUNT SZB,RSS INB SSB,RSS IF NOT NEG. CMB,INB MAKE IT NEG STB GSPTR,I ISZ GSP ADJUST RETURN FOR LINE CHANGE JMP GSP,I GSPTR NOP GSPTS DEF GSPB GSPTE DEF GSPB+30 GSPB BSS 32 * GSPE JSB .FMT DEF GSPEM JMP OPLNN GSPEM ASC 3,GS OV_ *THIS PREVENTS LF SUPPRESSION SKP * PROCESS RTN STATEMENT * RTP NOP LDA GSPTR CHECK IF THERE HAS CPA GSPTS BEEN A GOSUB JMP OPLNE NO - THEN ERROR ISZ GSPTR,I FINISHED WITH LOOP JMP RTPN NO LDA GSPTR YES ADA .M2 MOVE POINTER BACK TWO STA GSPTR INA RESET LINE NUMBER LDA A,I STA PRPTR LDA PRPTR,I STA TMP JMP RTP,I RTPN CCA ADA GSPTR LDA A,I ADA .M2 LDA A,I ISZ RTP ADJUST RETURN FOR LINE CHANGE JMP RTP,I SKP * OUTPUT A MESSAGE * MSP NOP STA MSPM+2 LDA .4 LDB MSPM JSB SLOP,I JMP MSP,I MSPM DEF *+1 ASC 2,* XX * * * PROCESS DELAY STATEMENT * DTP NOP SZA IF IT'S ZERO FORGET IT JSB TMRR,I GO WAIT JMP DTP,I NOW RETURN TO CALLER * * * TEST EXECUTION * TEP NOP CMA MAKE IT NEG. STA TEPA SAVE IT LDB TSTP GET POINTER TO TEST LIST TEP0 LDA B,I GET ADDRESS  CPA .M1 IS IT THE TERMINATOR JMP TEP,I YES - EXIT INB ISZ TEPA IS THIS THE TEST? JMP TEP0 NO TRY NEXT ONE CPA OPNO IF IT'S OPDSN THEN FORGET IT JMP PSTOP+1 JSB A,I YES - EXICUTE IT JMP TEP,I RETURN TO CONTROL OPNO DEF OPDSN TEPA EQU * * * * STOP EXECUTION * PSTOP NOP JSB .FMT OUTPUT STOP MESSAGE DEF STPM JMP OPLNN STPM ASC 3,STOP_ SKP STTBP EQU * * ASC 2,WAIT ASC 1, DEF WAP * ASC 2,GOTO ASC 1,I DEF GTP * ASC 2,GOSB ASC 1,II DEF GSP * ASC 2,RTN ASC 1, DEF RTP * ASC 2,MSG ASC 1,A DEF MSP * ASC 2,DLY ASC 1,I DEF DTP * ASC 2,TEST ASC 1,K DEF TEP * ASC 2,STOP ASC 1, DEF PSTOP * DEC -2 SKP MXNM DEC 9999 * AA OCT 101 AI OCT 111 AK OCT 113 AP ASC 1,P AIK ASC 1,IK AIA ASC 1,IA ARK ASC 1,RK ARA ASC 1,RA ACB ASC 1,CB ABY ASC 1,BY ALB ASC 1,LB ALF ASC 1,LF ACF ASC 1,CF AGO ASC 1,GO ADB ASC 1,DB ACO ASC 1,CO AST ASC 1,ST * MINUS OCT 55 SPC OCT 40 SVA NOP SVB NOP PRPTR NOP PRPLA NOP * IBUFP NOP IBUFD DEF IBUF NOP IBUF BSS 37 * STTBD DEF STTBP * DVIC NOP FDF NOP JMP DVIC,I JSBSD JSB SLOP,I SKP ORG 1752B .2 OCT 2 .3 OCT 3 .4 OCT 4 .5 OCT 5 .6 OCT 6 .15 OCT 15 .177 OCT 177 .D72 DEC 72 .M1 DEC -1 .M2 DEC -2 .M3 DEC -3 .M4 DEC -4 .M10 DEC -10 .M60 OCT -60 SW9 OCT 1000 S128 OCT 10400 DBC NOP CULN NOP * * TMP NOP LINE NUMBER NOP POINTER TO STATEMENT TABLE NOP PRAM A NOP PRAM B HED BASE PAGE LINKS AND CONSTANTS ORG 126B DSN OCT 105101 DIAGNOSTIC SERIAL NUMBER mORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS TSTP DEF TSTD POINTER TO TESTS HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 37 STANDARD TEST RUN STDB OCT 0 * ORG 150B HDMS EQU * ASC 11,2767 L.P. DIAGNOSTIC/ IOID EQU * DEF CLSC DEF A2LP0 DEF A2LP1 DEF A2LP2 DEF A2LP3 DEF SCPS DEF SRPS DEF CFRSC DEF MNCS1 DEF MNCS2 DEC -1 * TSTD EQU * DEF TST.0 BASIC I/O DEF TST01 MANUAL CONTROL TEST DEF TST02 PAPER HANDLING DEF TST03 ILLEGAL OPERATIONS DEF TST04 ALLIGNMENT DEF OPDSN DEC -1 * TST.0 NOP CLA OUTPUT 0 TO L.P. CLSC OTA LP JSB *+2,I GO DO BASIC I/O JMP TST.0,I DEF TST00 BASIC I/O SKP FWAA EQU 6000B LP EQU 10B D40 DEC 40 D80 DEC 80 D90 DEC 90 D1000 DEC 1000 DM20 DEC -20 DM30 DEC -30 DM31 DEC -31 DM40 DEC -40 DM55 DEC -55 DM60 DEC -60 DM80 DEC -80 DM90 DEC -90 .12 OCT 12 .13 OCT 13 .14 OCT 14 .40 OCT 40 .90 DEC 90 .140 OCT 140 .77 OCT 77 A$ OCT 44 AE OCT 105 AM OCT 115 AZ OCT 132 AUB ASC 1,UB CNTR NOP TEMP NOP SKP SUPA EQU FWAM START OF USER PROGRAM AREA EUPA EQU LWAM END OF USER PROGRAM AREA STUD DEF STUDD START OF USER STATEMENT TABLE DBD DEF USBF START USER BUFFER DBE DEF USBF+99 END OF USER BUFFER INTLP NOP CLA,INA DISABLE TIMMING CHECKS STA TMFLG CPB AT DOES HE WANT TIMMING JSB CFR YES CHECK FOR READY AND ISSUE FF JMP INTLP,I RETURN AT ASC 1,T * SYN NOP LDA TMP+1 IS THIS A CHARACTER OUTPUT CPA DOCP ? JMP *+3 YEP SYNE ISZ SYN NO ADJUST RETURN JMP SYN,I RETURN LDA TMP+2 YES IS IT A BUFFER OUTPUT CPA AUB ? JMP SYNE YES ALF,ALF D AND .177 CPA A$ IS IT A $? JMP SYNE YES JMP SYN,I NO RETURN TO ERROR * DOCP DEF OCP * BP1 EQU * * ORG SYNTX JSB SYN * ORG PGO JSB INTLP SKP ORG ZCEND * STUDD EQU * * ASC 2,SR ASC 1, DEF SRP * ASC 2,SC ASC 1,KI DEF SCP * ASC 2,LF ASC 1, DEF LFP * ASC 2,CR ASC 1, DEF CRP * ASC 2,FF ASC 1, DEF FFP * ASC 2,OC ASC 1,AI DEF OCP * ASC 2,CP ASC 1,II DEF CPP * DEC -1 * USBF BSS 100 SKP ORG BP1 * STATUS REPORT * SRP NOP LDB SRPM GET MESSAGE CLA,CLE TO JSB FMTR,I OUTPUT SCPS LIB LP GET STATUS CCA JSB FMTR,I LDB CULN GET LINE NUMBER CLA,INA JSB FMTR,I JMP SRP,I * SRPM DEF *+1 ASC 11,STATUS IS # (LINE #)/ * * STATUS CHECK * SCP NOP STA SCPA SAVE PARAMS STB SCPB "" SRPS LIB LP GET STATUS LDA SCPB GET NEW LINE IF NEEDED CPB SCPA DO THEY COMPAIR RSS ISZ SCP YES JMP SCP,I * SCPA NOP SCPB NOP SKP * CARRIAGE RETURN (AND PRINT) * CRP NOP LDA .15 GET CARRIAGE RETURN JSB OTCH GIVE IT TO THE LINE JMP CRP,I RETURN * * LINE FEED (AND PRINT) * LFP NOP LDA .12 GET LINE FEED JSB OTCH GIVE IT TO LINE PRINTER JMP LFP,I RETURN * * FORM FEED (AND PRINT) * FFP NOP LDA .14 GET FORM FEED COMMAND JSB OTCH GIVE IT TO THE LINE PRINTER JMP FFP,I RETURN * * OUTPUT BUFFER ONLY * OCP NOP JSB OTBF JMP OCP,I RETURN SKP * OUTPUT A CHARACTER OR THE USER BUFFER * OTBF NOP CPA AUB CHECK FOR USER BUFFER JMP OTUB YES - SO DO IT SZB,RSS IF B IS ZERO THEN INB MAKE IT ONE SSB IF B IS NEG. CMB,INB MAKE IT POS. AND .177 MASK OFF $ JSB OTP OUTPUT CHARACTER TO L.P. JMP OTBF,I AND RETURN * * * OUTPUT USER BUFFER * OTUB SZB IF NUMBER IS ZERO JMP OTUBN LDB DBC DEFAULT TO BUFFER COUNT SZB,RSS IS IT LOADED? JMP OTBF,I NO SO EXIT OTUBN SSB IF NOT POS. CMB,INB MAKE IT POS. LDA DBC CHECK IF CMA,INA BUFFER HAS ADA B ENOUGH IN IT SSA,RSS ? LDB DBC NO SO USE BUFFER COUNT CMB,INB MAKE IT NEG FOR A = ADDRESS LDA DBD POINT TO BUFFER JSB OTP OUTPUT BUFFER JMP OTBF,I RETURN SKP * OUTPUT A CHARACTER * OTCH NOP CPA .15 CR? JMP OTCR YES CPA .12 LF? JMP OTLF YES CPA .14 FF? JMP OTFF YES CLB,INB SHORT TIME OUT ISZ CHCNC CHECK FOR ZONE PRINT RSS LDB TMOTX YES GET PREVIOUS OUTPUT DELAY JSB A2LP LDA CHCNC ZONE PRINTED SZA ? JMP OTCH,I NO LDA D40 YES SET TIME OUT STA TMOTX LDA CHCNT RESET ZONE COUNT STA CHCNC JMP OTCH,I * * OUTPUT A CARRIAGE RETURN * OTCR LDB TMOTX GET PREVIOUS FUNCTION DELAY JSB A2LP DO IT LDA CHCNT RESET ZONE COUNT STA CHCNC LDB D40 ADD DELAY FOR PRINT STB TMOTX JMP OTCH,I * CHCNT DEC -20 CHCNC DEC -20 SKP * OUTPUT LINE FEED * OTLF LDB TMOTX GET PREVIOUS FUNCTION DELAY ISZ LFCNT CHECK FOR STEP OVER? RSS ADB .90 JSB A2LP DO IT LDA CHCNT RESTORE ZONE COUNT STA *($CHCNC LDB D80 SET DELAY FOR NEXT INSTRUCTION STB TMOTX LDA LFCNT IS IT PERFORATION STEP OVER? SZA JMP OTCH,I NO LDB .90 YES ADB TMOTX STB TMOTX ADD MORE TIME LDB LNCNT RESET LINE COUNT STB LFCNT JMP OTCH,I * * OUTPUT FORM FEED * OTFF LDB FFTM GET FORM FEED TIME OUT ADB TMOTX ADD ANY PREVIOUS FUNCTIONS *   12984-18005 1611 S 0146 2767 DIAGNOSTIC              H0101  JSB A2LP DO IT LDA CHCNT RESTORE ZONE COUNT STA CHCNC LDB .40 MINIMUM OF ONE ZONE COUNT ADB .13 ISZ LFCNT JMP *-2 STB TMOTX TO NEXT CHARACTER LDB LNCNT RESET LINE COUNT STB LFCNT JMP OTCH,I * LFCNT DEC -60 LNCNT DEC -60 FFTM DEC 780 SKP * OUTPUT A REG TO LINE PRINTER * B REG = MAX TIME OUT * A2LP NOP STB TMOTS SAVE TIME OUT LDB A2LPS SAVE PREVIOUS STB A2LPP CHARACTER STA A2LPS SAVE OUTPUT LDA JSBI A2LP0 STA LP LDB MXTMO CLA,INA DO TIMMING TESTS CPA TMFLG ? STB TMOTS SET MAX TIME OUT LDA A2LPS RETRIEVE CHARACTER A2LP1 OTA LP GIVE CHARACTER TO LINE PRINTER STF INTP TURN ON INTERRUPTS A2LP2 STC LP,C TRANSFER CHARACTER LDA TMOTS PICK UP THE TIME OUT JSB TMRR,I GO WAIT CLF INTP TURN OFF INTERRUPTS LDA A2LPS GET CURRENT OUTPUT LDB A2LPP GET PREVIOUS OUTPUT E030 JSB ERMS,I REPORT TIME OUT DEF LPTOM POINTER TO MESSAGE CLA ALTER JSB IN CFR STA CRJSB TO SKIP FORM FEED IF LP IS OFF LINE JSB CFR GO WAIT UNTIL READY LDA JSBFF RESTORE JSB INSTR STA CRJSB IN CFR ROUTINE RSS A2LPI NOP CLF INTP A2LP3 CLC LP,C TURN OFF LINE PRINTER JMP A2LP,I RETURN * LPTOM EQU * ASC 10,E030 L.P. TIME OUT/ TMOTX NOP A2LPS NOP A2LPP NOP MXTMO DEC 2000 2 SECONDS MAX TMOTS NOP TMFLG NOP JSBI JSB A2LPI JSBFF JSB FFP SKP * CHECK FOR READY * CFR NOP CFRSC LIA LP GET CURRENT STATUS SZA IS IT READY? JMP E031 NO STA TMFLG CRJSB JSB FFP DO FORM FEED IF NEEDED LDB MXTMO SET MAX TIME OUT STB TMOTX JMP CFR,I YES E031 JSB ERMS,I NO REPORT IT DEPF LPNRM POINTER TO MESSAGE JMP CFR+1 STAY IN LOOP UNTIL READY * LPNRM EQU * ASC 11,E031 L.P. NOT READY/ * * OUTPUT CARRIAGE RETURN AND LINE FEED * CRLF NOP JSB CRP DO CARRIAGE RETURN JSB LFP DO LINE FEED JMP CRLF,I RETURN SKP * CYCLIC PATERN PRINT * CPP NOP SZA,RSS IF CHRS = 0 CPP.1 LDA DM80 THEN DEFAULT TO 80 SSA,RSS IF CHRS IS POS. CMA,INA THEN MAKE IT NEG. STA CPC SAVE NUMBER OF CHRS ADA D90 CHRS NOT> .90 SSA ? JMP CPP.1 YES USE 80 CHRS SZB,RSS IF LINE COUNT = 0 CPP.2 LDB DM60 THEN DEFAULT TO 60 SSB,RSS IF LNCNT IS POS. CMB,INB THEN MAKE IT NEG. STB CNTR SAVE LINE COUNT ADB D90 IF LNCNT> 90 SSB ? JMP CPP.2 THEN USE 60 LINES CPPL0 JSB CYBFI SET UP CYCLIC BUFFER LDA CYBFD GET ADDRESS LDB CPC AND COUNT JSB OTP OUTPUT BUFFER JSB CRLF DO A RETURN LINE FEED ISZ CNTR DONE? JMP CPPL0 NO CLA YES JMP CPP,I RETURN TO EXEC * CPC NOP SKP * PUT CYCLIC PATTERN IN BUFFER * CYBFI NOP LDB CYBFD SET POINTER STB CYBFT TO CYCLIC BUFFER LDA CYLC GET LAST STARTING CHARACTER INA MOVE UP ONE CPA .140 LAST CHARACTER? LDA .40 YES STA CYLC SAVE FOR NEXT BUFFER LDB DM90 GET MAX BUFFER COUNT CYBFL STA CYBFT,I STORE CHARACTER INA MOVE TO NEXT CHARACTER CPA .140 IS IT LAST CHR? LDA .40 YES ISZ CYBFT MOVE POINTER INB,SZB IS BUFFER FULL JMP CYBFL NO JMP CYBFI,I YES RETURN * CYBFT NOP CYLC OCT 40 CYBFD DEF *+1 BSS 90 SKP * OUTPUT A CHR OR BUFFER * * ܮ A = CHR OR ADDRESS * B = +^ OR -^ * OTP NOP STA OTPT SAVE CHR OR ADDRESS SSB CHR OR ADDRESS? JMP OTPB IT'S A BUFFER OUTPUT CMB,INB CHR, MAKE COUNT NEG. STB OTPC SAVE COUNT LDA OTPT RETRIEVE CHARACTER JSB OTCH OUTPUT IT ISZ OTPC ALL DONE? JMP *-3 NO JMP OTP,I AND RETURN * OTPB STB OTPC SAVE COUNT LDA OTPT,I GET CHARACTER JSB OTCH OUTPUT IT ISZ OTPT MOVE POINTER ISZ OTPC ALL DONE? JMP *-4 NO JMP OTP,I RETURN * OTPT NOP OTPC NOP * * OUTPUT PACKED BUFFER * OTP2 NOP STA OTPC SAVE NUMBER OF CHARACTERS CLE,ELB STB OTPT AND ADDRESS POINTER OTP2L LDB OTPT GET CHARACTER ADDRESS CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2 CHR TO A REG SEZ,RSS UPPER? ALF,ALF YES AND .177 MASK OFF OPPSITE CHARACTER JSB OTCH OUTPUT A TO LINE PRINTER ISZ OTPT MOVE TO NEXT CHARACTER ISZ OTPC IS THERE MORE OUTPUT? JMP OTP2L YES JMP OTP2,I NOW RETURN SKP * RANDOM NUMBER GENERATOR * GRN NOP STA RNA SAVE LOWER LIMIT CMA,INA ADB 0 STB RNB SAVE UPPER LIMIT GRNL LDA BASE GET BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF STILL POSITIVE LDA BASE OOPS, BASE NOT BIG ENOUGH ELA DOUBLE BASE FOR REMAINDER STA BASE SAVE FOR NEXT TIME AND .177 USE ONLY LOWER BITS CMA,INA MAKE IT NEG. ADA RNA ADD LOWER LIMIT SSA,RSS IS IT ABOVE? JMP GRNL NO - TRY ANOTHER PASS ADA RNB ADD UPPER LIMIT SSA IS IT BELOW? JMP GRNL NO - TRY ANOTHER PASS LDA BASE YES RETRIEVE NUMBER AND .177 \ JMP GRN,I RETURN TO CALLER * RNA NOP RNB NOP PRIME DEC -31069 BASE BSS 1 SKP * MANUAL CONTROL * TST01 EQU * * MNC NOP ENTRY FROM CONTROL PROGRAM LDB S128 CHECK S.R. 12 AND 8 JSB SWRT,I JMP MNC,I NO MANUAL TEST * CLA,INA STA TMFLG INHIBIT TIMMING CHECKS * H035 JSB MSGH,I TELL OPERATOR TO DEF MNCM2 TURN OFF POWER * LDB STAT1 100001 JSB MNCCS CHECK STATUS * H036 JSB MSGH,I TELL OPERATOR TO DEF MNCM3 TURN ON POWER * LDB STAT1 100001 JSB MNCCS CHECK STATUS * LDA DM60 SET WAIT LOOP COUNT STA CNTR MNCL0 CLB,INB CHECK FOR READY STATUS MNCS1 LIA LP CPA B JMP MNCN1 OK LDA D1000 NO - JSB TMRR,I WELL WAIT ISZ CNTR WAITED ENOUGH JMP MNCL0 NO E037 JSB ERMS,I YES - REPORT NOT READY DEF NRM POINTER TO MESSAGE JMP MNC,I ABORT TEST * NRM EQU * ASC 12,E037 NO READY RESPONSE/ SKP MNCN1 JSB MSGH,I TELL OPERATOR TO DEF MNCM0 PUT L.P. ON-LINE * CLB JSB MNCCS CHECK STATUS * H034 JSB MSGH,I TELL OPERATOR TO DEF MNCM1 MASTER CLEAR LINE PRINTER * CLB,INB JSB MNCCS CHECK STATUS * H033 JSB MSGH,I TELL OPERATOR TO DEF MNCM0 PUT L.P. ON-LINE * CLB JSB MNCCS CHECK STATUS * JSB FFP DO FORM FEED * LDA DM20 OUTPUT "TOP-OF-FORM COMPUTER" LDB TOFCD JSB OTP2 * LDA DM60 OUTPUT 60 STA CNTR LINE FEEDS JSB CRLF ISZ CNTR DONE? JMP *-2 NO * LDA DM31 OUTPUT "PERFORATION STEP OVER COMPUTER" LDB PSOCD JSB OTP2 * H040 JSB MSGH,I TELL OPERATOR TO DEF MNCM4 TOGGLE TOP OF FORM * CLB,INB JSB MNCCS CHECK STATUS? * JSB MSGH,I TELL OPERATOR TO DEF MNCM0 PUT L.P. ON-LINE * CLB JSB MNCCS CHECK STATUS * LDA DM20 OUTPUT "TOP-OF-FORM MANUAL" LDB TOFMD JSB OTP2 * LDA DM55 OUTPUT 55 STA CNTR LINE FEEDS JSB CRLF ISZ CNTR DONE? JMP *-2 NO SKP H041 JSB MSGH,I TELL OPERATOR TO DEF MNCM5 TOGGLE PAPER STEP 5 TIMES * CLB,INB JSB MNCCS CHECK STATUS * JSB MSGH,I TELL OPERATOR TO DEF MNCM0 PUT L.P. ON-LINE * CLB JSB MNCCS CHECK STATUS * LDA DM30 OUTPUT "PERFORATION STEP OVER MANUAL" LDB PSOMD JSB OTP2 * JSB CRLF * JMP MNC,I RETURN TO CONTROL * MNCCS NOP MNCS2 LIA LP GET CURRENT STATUS CPA B IS IT OK JMP MNCCS,I YES JSB ERMS,I NO - REPORT ERROR DEF STERM POINTER TO MESSAGE JMP MNCCS,I RETURN * STERM EQU * ASC 11,E032 INCORRECT STATUS/ SKP MNCM0 ASC 11,H033 PUT L.P. ON-LINE/ * MNCM1 ASC 12,H034 MASTER CLEAR L.P./ * MNCM2 ASC 13,H035 TURN OFF L.P. POWER/ * MNCM3 ASC 12,H036 TURN ON L.P. POWER/ * MNCM4 ASC 12,H040 PUT L.P. OFF-LINE. ASC 14, TOGGLE TOP-OF-FORM SWITCH/ * MNCM5 ASC 12,H041 PUT L.P. OFF-LINE. ASC 14, TOGGLE PAPER-STEP 5 TIMES/ * TOFCD DEF *+1 ASC 10,TOP-OF-FORM COMPUTER * PSOCD DEF *+1 ASC 15,PERFORATION STEP OVER COMPUTER * TOFMD DEF *+1 ASC 10,TOP-OF-FORM MANUAL * PSOMD DEF *+1 ASC 15,PERFORATION STEP OVER MANUAL * STAT1 OCT 100001 SKP * PAPER HANDLING CYCLIC PRINT * TST02 EQU * * * CP NOP JSB CFR CHECK FOR READY LDA DM20 20 JSB TCYO CYCLIC CHARACTERS PER LINE LDA DM40 40 JSB TCYO CYCLIC CHARACTERS PER LINE LDA DM60 60 JSB TCYO CYCLIC CHAR;XACTERS PER LINE LDA DM80 80 JSB TCYO CYCLIC CHARACTERS PER LINE * JSB CYBFI LDA DM80 SET EIGHTY COLUMNS STA TEMP FOR BACKWARD PRINT CPL1 LDB TEMP LDA .40 INB ONE LESS THAN COUNT SZB,RSS JMP CPL3 NO MORE BLANKS TO OUTPUT CMB,INB MAKE + FOR OTP ROUTINE JSB OTP OUTPUT NUMBER OF SPACES CPL3 LDA TEMP CMA,INA GET CYCLIC CHARACTER ADA CYBFD LDA A,I JSB OTCH OUTPUT IT JSB CRP DO CARRIAGE RETURN ISZ TEMP MORE LINES JMP CPL1 YES * JSB CRLF JSB CRLF JSB CRLF JSB CRLF * LDA DM80 OUTPUT STA TEMP 80 LINES OF DECREASING CPL2 LDB TEMP BACK ARROW LDA BKAR GET BACK ARROW CMB,INB JSB OTP JSB CRLF OUTPUT LINE FEED AND CARRIAGE RETURN ISZ TEMP JMP CPL2 JMP CP,I RETURN TO CONTROL * BKAR OCT 137 SKP * OUTPUT CYCLIC PATERN * TCYO NOP STA TEMP SAVE NUMBER OF CHARACTERS LDA DM60 SET LINE COUNT STA CNTR TCYOL JSB CYBFI INITIALIZE BUFFER LDA CYBFD GET POINTER LDB TEMP GET COUNT JSB OTP JSB CRLF ISZ CNTR DO ANOTHER LINE? JMP TCYOL YES JMP TCYO,I NO SKP * ILLEGAL OPERATIONS * TST03 EQU * * ILO NOP JSB CFR CHECK FOR READY LDA DM60 SET LOOP INA STA CNTR COUNTR FOR 59 LINES ILOL1 LDA .40 GET A LDB .140 CHR JSB GRN RANDOMLY STA CYLC SAVE IT FOR CYCLIC PATTERN JSB CYBFI INITIALIZE BUFFER CLA GET RANDOM LDB D80 NUMBER JSB GRN OF CHARACTERS LDB A B = COUNT LDA CYBFD A = ADDRESS CMB,INB OUTPUT BUFFER JSB OTP DO IT ؐ*($ JSB CRLF ISZ CNTR DONE 59 LINES? JMP ILOL1 NO WELL DO ANOTHER * CLA OUTPUT ALL NON ASCII CHARACTERS ILOL2 STA TEMP JSB OTCH OUTPUT DATA LDA TEMP MOVE TO NEXT CHARACTER INA CPA .12 SKIP LINE FEED INA CPA .14 SKIP FORM FEED INA CPA .15 SKIP CARRIAGE RETURN INA CPA .40 SKIP ASCII SET INCL. SPACE LDA .140 CPA .177 IS THAT ALL JMP *+2 YES JMP ILOL2 NO DO IT AGAIN LDA .40 OUTPUT 2 SPACES LDB .2 JSB OTP LDA AZ OUTPUT 80 CHR Z'S LDB D80 JSB OTP * JMP ILO,I RETURN TO CONTROL SKP * ALLIGNMENT * TST04 EQU * * AL NOP JSB CFR CHECK FOR READY LDA DM60 SET FOR 60 LINES STA CNTR ALL1 LDA AM OUTPUT 80 LDB D80 CHR M JSB OTP JSB CRLF ISZ CNTR ALL DONE? JMP ALL1 NO * LDA DM60 SET FOR 60 LINES STA CNTR ALL2 LDA AE OUTPUT 80 LDB D80 CHR E JSB OTP JSB CRLF ISZ CNTR ALL DONE? JMP ALL2 NO * LDA .40 START WITH BLANK ALL3 STA TEMP SAVE IT LDB D80 SET FOR 80 CHR'S JSB OTP JSB CRLF LDA TEMP GET CHR INA MOVE UP ONE CPA .140 IS THAT ALL? JMP *+2 YES JMP ALL3 NO * JMP AL,I RETURN TO CONTROL END d*   12989-18001 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 ASMBAB̬ HDGNA̠PANGPDU G0 SUP GNA̠PANGPDU A.ADDAGNSàNGUAҠANDSԠԠUP. B.ADDAGNSàMANPGAM .ADADDSS00B. D.ADSHG.HSԠDŠANDPNS .PSSUNANDAԠҠHAԠ00. .ADSHGS ƠSԠ: 5HAԠAԠNDƠAHS SUPSSҠHAS 3PNASԠS PNDAGNS (SUPPSSA̠PAҠNVNN SUPSSҠMSSAGS 0SUPSSNN-ҠMSSAGS 9GϠϠUSҠN̠SN AԠNDƠPSNԠS SUPPSSPAҠNVNNSS DAGNSàPNS 0 N:SANDADUNSHUDBŠHS.G.0 USҠN̠̠ASKҠA3BԠD. AHBԠ̠S G.PSSUN. H.SAԠ-ADADDSS000B .NGUŠƠSNGɯϠNAŠ-ADADDSS00B GNA̠MPUҠHAS 00ؠŠҠH000Ϡ06 060ؠŠҠH00Ϡ6 030ؠŠҠH00Ϡ6 00ؠŠҠH300Ϡ36 N̠PGAMHAԠMSSAGS 00NDƠDAG(APASSUNԩ 006NDƠSԠ(ASԠ 005USҠSNUS 00SԠDŠNPUԠMP 003USҠSԠDŠ 00SVD 00SVD 000SVD 060AP̠HA HDPGAMGANZANHA  NGUAҠ00B NKAGŠABŠ UVŠ30B NKAGŠ NSANS50B AND SAGŠ 000B UVŠN̠ ƠUSD BASàɯϠSS(SԠ00 ZND ABŠƠSԠPNS ABŠƠɯϠNSҠPNS MANDAGNSS(-3 HDNGUAҠNKAGŠAB AU0AGSҠN B4%UBGSҠN SנUSHGSҠN NPU0NUPԠHANN̠N G00B MPGɠGϠϠNGUANSN ANBSSASԠNPUԠ(PHϠADҩ SPBSSSנUPUԠ(Sԩ APBSSASԠUPUԠ(DUMPҠPUNH SNBSSSנNPUԠ(KYBAD AMDƠAASԠDƠAVB.MMY AMBSSASԠDƠAVB.MMY BSSNԠUSD(MAGAPũ MàBSSM̠SàMŠUԠUN BSSSԠDSҠɯ PϠBSSMPUҠYPůPNS USSàBSSUSҠADYPŠANDSԠD MMϠBSSMMYSZŠANDYP SҠBSSNNA̠SHGS MҠBSSM̠SàM SàBSSNGUAҠSHKP ɲASBSSNGҠϠASɠNVSN ϲASBSSA̠ϠASɠNVSN ASNBSSASɠNVSN DSN̠BSSDAGNSàSA̠NUMB MҠBSSMA N̠NKAGŠANDDAANS GDƠZNƠNGUANSN MSGàDƠZMSGàMSSAGŠHNϠHA MSGHDƠZMSGHMSSAGŠHHA MSDƠZMSҠMSSAG SԠDƠZSԠSHGSҠHKUN SNԠ0UNԠSԠNUMB ԠDƠZԠUNϠN̠PGAM NPSVD HDUVŠN G000B ZSؠàNPàUNɯϠSYSM SBMSGìɠDϠ DƠZ DAHDMPGԠNDUYMSSAG SA+ SBMSGìɠUԠPUԠ NP AAҠPASS SAZàUN DBZS9HKҠUSҠSN SBSԬ MPZUSҠ'SUSSH ZNUSҠDASDAGԠSANDADSԠUN DBSDB MPZ ZUSҠDAZSNAVŠPVUSUN DBZSNB HԠ5BAԠҠUSҠNPU NP NP NP ZàSAZUNASAV SBZUNBUS SAZSNANPU SBZSNBPGAM DBZS9HKƠS9SDN SBSԬ MPZUSҠNϠGϠANDA ASԠSԠNUMB SASN- A SAZSAAҠSԠUNAG SKP Z̠DAZUNASŠAG. DBZUNBSŠBG. AA̠A BS ASԠB SAZUNASAVŠPSNS SBZUNB SZSNMVŠSԠUPN NP ẔDASN ADASPGԠ'S DAAɠADDSS PAZ.MSԠNDƠS MPZ̠YS DBZUNB SSBSSSHUDԠBŠUN? MPZ̠N SAZSAYS-SAVŠSԠADDSS SBZHNAZŠAP̠HAS SBZSAɠGϠDϠS ZԠDASNDSPAYSԠNUMBҠƠHAD DBZSױ5HKҠHAԠAԠNDƠS SBSԬ HԠ6BYSAԠҠPA DBZS9HKҠAB SBSԬ MPZUSҠYS DBZSױ3HKҠPNUN SBSԬ MPẔYS-P MPZ̠NNU Z̠DAZSAHKƠANYSSŠUN SZASS? MPZNUSҠNϠSϠPKUPSANDADUN DAZàUPDAŠPASSUN NA SAZ DBZPSAGԠPASSUN ADBZ.ADDSS SBϲASɠNVԠ SBMSGìɠA̠PNԠUN ZPSADƠZPS DBZSױHKҠPNDAG. SBSԬ MP+3YS DAZ pHԠBNϠAԠANDDSPAYPASSUN DAZSNASŠGNA DBZSNBPGAM MPZàDϠԠA̠AGAN SKP MSSAGŠUPUԠHUԠHA ZMSGàNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK MPZMSGìɠUNϠA MSSAGŠUPUԠHHA ZMSGHNPNY SBZMSGUPUԠMSSAG Ԡ000SH0HK DAZHԠGԠHAԠD SA+PUԠԠNPA DAZSAVASŠAGS NPHAԠҠDSPAY MPZMSGHɠUNϠA ҠMSSAGŠHHA ZMSNPNY SBZMSGUPUԠMSSAG Ԡ000SHHK A DBZSױHKSҠBԠϠSUPPSS SBSԬɠHA SA+3PUԠHAԠNPA DAZSAVASŠAB DBZSAVB ZHԠNPAԠҠPA MPZMSɠUNϠA SKP UPUԠMSSAG ZMSGNP SAZSAVASAVŠAANDBGSS SBZSAVB DBZMSGɠGԠSHGSҠB DAZMSG ADAZ.MDMNԠUNADDSS SAZMSG SBSԬɠHKϠSUPPSSMSSAG MPZMSG0YS DAZMSGɠHKƠ DAA DAAɠƠS AƬA ANDZ. PAZA. SBZNHKϠUPUԠSԠNUMB DAZMSGɠNϠVŠMA DBAɠADDSS A SBMҬ ZMSG0DAZMSGɠNVԠHAԠD DBAɠMASɠSNG A SBASN SAZNAϠSAVŠSU ANDZ.300DD DBZHHAԠD PAZ.00 DBZH6 PAZ.00 DBZH3 PAZ.3Z300 DBZH DAZNAϠGԠHAԠNUMB ANDZ. ҠB SAZHԠSAVŠ SZZMSGɠADUSԠUNPNS SZZMSG SZZMSG SZZMSG DAZSAVASŠAANDBGSS DBZSAVB MPZMSG SKP ZNNP DASNGԠSԠNUMB PAZԠSԠHŠSAMŠN? MPZNɠYSSKPUPU SAZԠNϠ-HNUPDAŠ SBZNAϠNVԠ SAZSNPUԠԠNSNG ADϠA SBSP AŠNDAŠSAԠƠMA DBZS SBMҬ MPZNɠUN ZSAVANP ZSAVBNP ZàNP ZSANP ZSNANP ZSNBNP ZUNANP ZUNBNP ZBMPNP Z.Ԡ Z.Ԡ Z.0Ԡ0 Z.60Ԡ60 Z.Ԡ Z.Ԡ Z.MDà- Z.MDà- ZD00Dà-00 ZMԠ00 ZSױ5Ԡ00000 ZSױԠ0000 ZSױ3Ԡ0000 ZSױԠ0000 ZSԠ0000 ZS9Ԡ000 Z.00Ԡ00 Z.00Ԡ00 Z.300Ԡ300 ZHԠ0000 ZH6Ԡ06000 ZH3Ԡ03000 ZHԠ0000 ZԠDà- ZSƠDƠ+ ASà3S ZSNASàد ZƠASà ZPSàASà6PASSد ZA.ŠԠ05 HDGNA̠UNS ZNAϠNP SAZADSAVŠNUMB ANDZ.NVԠS ҠZ.60NUMB SABSAVŠ DAZADG AҬAҠSND AҠNUMB ANDZ.NV ҠZ.60 AƬAƠMVŠϠUPPҠHA ҠBADD MPZNAϬɠANDUN SHGSҠHK ZSԠNP SAZNAϠSAVŠAGS ASנGԠSHG. ANDBMASKUԠB SZASSSԠUP? SZZSԠN DAZNAϠSŠAQGS BSנԠBSHGS MPZSԬɠUNϠA NAZŠAP̠HAS ZHNP DAZSHGԠSANGAP̠HA DBZ.GԠSԠAP̠AN ZSH̠SABɠPUԠԠNPA PBZ.AMɠNSHD MPZHɠYS NBNԠADDSS MPZSH ZSHԠ060 SKP PUԠSBNSUNNAP ZɠNP DBZSBɠGԠNSUN SBZSìɠPUԠԠNAP DAZɬɠGԠAN SA3BSAVŠԠҠSBNSUN SZZɠADUSԠUN MPZɬɠUNϠA ZSBɠSB3BɠSBNSUN NAZŠSԠDŠɯϠNSUNS ZSàNP SAZSàSAVŠSԠD SBZADSAVŠABŠADDSS Z̠DBZADɠGԠADDSSƠAN PBZ.MSԠHŠMNA MPZSìɠYSUNϠA DABɠNϠ-GԠNNS ANDZMMASKƠDSԠD ҠZSàADDNNנSԠD SABɠSŠ SZZADMVŠϠNԠADDSS MPZ̠DϠ ZSàNP ZADNP SKP NGUANSN ZNƠàNPàUNɯϠSYSM ASנGԠSԠDŠANDPNS SAUSSàSAVŠHM ANDZ.MNAŠPNS DBA MBNBHKHAԠSà ADBZ. SSB? MP+3KGϠN HԠ3BN MPZNƠYAGAN DBPNAZŠSԠɯ SBZSàNSUNS HԠBAנPAҠϠHANGŠS MPZSؠGϠϠàN̠SN HDBASàɯϠSS HU0B S00U NP DAUSSàGԠ̠AN ANDZ. SBZBϠDϠBASàɯ MPS00 ZBϠNP àNPàUNƠA̠ɯ DBZBDNAZŠBASàɯ SBZSàNSUNS NUPԠAGHK ZBϱSƠNP ƠNP SàNP SS MP+3 000SBMSɠ000Ơ0-Sà0 DƠZB00 SSNP MP+3 00SBMSɠ00Ơ0-SS0 DƠZB0 SƠNP SàNP MP+ ƠNPUNƠNS 00SBMSɠ00SƠ0-Sà0 DƠZB0 SSNP MP+3 ƠNPUNƠNUPS MPZBϲ ƠNPUNƠNS 003SBMSɠ003SƠ0-SS0 DƠZB03 MPZBϲ ZB00ASà000Ơ0-Sà0ү ZB0ASà00Ơ0-SS0ү ZB0ASà00SƠ0-Sà0ү ZB03ASà003SƠ0-SS0ү SKP ADAGHK ZBϲU ZBSSƠH ZBSƠH ZBS3SàH SS MP+3 005SBMSɠ005ƠH-SàH DƠZB05 ZBSSSH MP+3 006SBMSɠ006ƠH-SSH DƠZB06 ZBS5SƠH ZBS6SàH MP+3 00SBMSɠ00SƠH-SàH DƠZB0 ZBSSSH SS MPZB3 00SBMSɠ00SƠH-SSH DƠZBű0 MPZB3 ZB05ASà3005ƠH-SàHү ZB06ASà3006ƠH-SSHү ZB0ASà300SƠH-SàHү ZBű0ASà300SƠH-SSHү SKP NUPԠN ZB3SBZɠSԠSBNSUN DƠZB3 ZBS3SƠHSԠHŠAG ZBS3SàHSԠHŠN SƠNPYUNɯϠSYSMNHN ƠNPUNɯϠSYSM NPGVŠԠAHANŠɠNUP NP ZBS33ƠHSԠHAG MPZBϴ ZB0ASà600Ơ0DDNԠNHBԠNԯ ZB3ŠNP ƠNPUNƠNS 00SBMSɠ00 DƠZB0 SKP SԠDŠSNS ZBϴDBZ.0SAԠHSԠADDSS ZB0DAZSàGԠSԠDŠ(DDNP ANDZ. PBASԠHŠH? MPZ.+YS-SKPS DAZ.SƠSԠUP ANDZM ҠBSƠNSUN SAZ.SƠPUԠԠNPA DAZ.ƠSԠUP ANDZM ҠBƠNSUN SAZ.ƠPUԠԠNN ZBSƠHAҠHANN̠AG Z.SƠSƠHUŠSƠHNSUN ZBSSàHSԠHANN̠AG MPZB Z.ƠƠHAҠSԠAG PBZ.SSԠNSHD? MPZB5YS NBN MPZB0DϠNԠHANN ZBűASà0SƠؠSԠADAG ZBSBZBMPSAVŠNUMB DABNVԠHҠMSSAG SBZNA SAZBű+5 DAZBMPVŠNUMB 0SBMSɠ0 DƠZBű SKP HKNUPԠHD ZB5SBZ DƠZB5 ASԠUP SAZB5AGS SAZB5ҠS SAZBMP ZBS5SàHUNN ZBS5SƠHAD SƠNPANDNUPS Sà SƠ à ƠNϠNUP MP+ɠSHUDU DƠ+H SB+ɠ DƠ+ ZB5NP <:6SZZBMPN.SHUDBŠH SZZBMP ƠNPUNɯϠSYSM DAZB5DDԠNUP? SZA MP+ 0SBMSɠ0NϠN DƠZBű MPZB6ABԠSԠƠSN DAZBMPHKҠԠNUP PAZ.? MP+3 06SBMSɠ06NԠUN DƠZBŲ6 ZBS53ƠHUNƠHAG MPZB6GϠϠNԠSN ZBD5DƠZB5- ZBD5ADƠZB5+ ZBűASà60NԠDUNGHDƠNSү ZBű3ASà03SNDNԠUD ZBűASà060NϠNԯ ZBű5ASà05NԠNADDҠү ZBŲ6ASà306NԠUNү i<  12989-18002 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 SKP ZB5NP ƠNPUNɯϠSYSM DAZBD5HKϠSŠƠA PAZB5NSUNMPD MP+3YS 0SBMSɠ0NԠDUNGHD DƠZBű DAZBD5AHKUNADDSS DBPϠƠ0 SSBADDN NA PAZB5 MPZB5A 05SBMSɠ05NԠNADDҠ DƠZBű5 MPZB6 ZB5ASBZɠSԠSNDNԠAP DƠZB5 SƠNPUNɯϠSYSMN MPZB5ɠNNUŠS ZB5NP ƠNPUNɯϠSYSM 03SBMSɠ03SNDNԠUD DƠZBű3 SKP àHANDà0 ZB6SBZɠSԠSBNSUN DƠZB6 ZBS6SàHSԠHN ZBS6SƠHSԠHAG SƠNPUNNNUPS ZBS63àHAҠHN NPGVŠԠAHAN NP ƠNPUNNS ZB60SBZɠSԠSBNSUN DƠZB6 ZBS6ƠHAҠHAG ZBS65SàHSԠHN ZBS66SƠHSԠHAG SƠNPUNNNS àNPAҠɯϠSYSM NPGVŠԠAHAN NP ƠNPUNƠNS MPZBϷ ZB6NP ƠNPUNƠNS 06SBMSɠ06àH DƠZBű6 MPZB60 ZB6NP ƠNPUNƠNS 0SBMSɠ0à0 DƠZBű MPZBϷ ZBű6ASà906àHү ZBűASà90à0ү SKP NA̠NNA̠PSԠS ZBϷDBZSHKϠSUPPSS SBSԬɠ? MPH05YS-SKPPSԠS H0SBMSGìɠ̠PA DƠZBMPSSPS ZBSƠHAҠHAG SƠNPUNNNS SBZɠSԠAP̠SBNSUN DƠZBɷ0 HԠBAԠҠPA ANASԠUPAGSҠSS SSNPHKNPAG ANԠSԠSϠAҠAG A̠MVŠϠNԠAG ƠNPUNƠNPS ZBSSSHHKHANN̠AG NANԠSԠSϠAG A̠MVŠϠNԠAG B0HKɯϠBUSS SZBSHUDBŠZ NANԠSϠAG A̠MVŠϠNԠAG SƠNPHKN̠NAD NPGVŠԠAHAN NP ƠNPUNƠNPS SKP ZB0SASSHKҠS MP+3 0SBMSɠ0DDNԠAҠN DƠZBŲ A SASS MP+3 03SBMSɠ03ɯϠNSNԠA DƠZBŲ3 A SASS MP+3 00SBMSɠ00AGNԠS DƠZBŲ0 A SASS MP+3 0SBMSɠ0DDNԠDABŠNS DƠZBŲ H05SBMSGìɠ̠PA DƠZBM5BASàɯϠSMP MPZBϬɠUNϠA ZBɷ0NPN̠AD ƠNPUNƠNPS NA MPZB0 ZBŲ0ASà00PS(ԩDDNԠSԠAG ZBŲASà90PS(NԩDDNԠDSABŠNS ZBŲASà00PS(ԩDDNԠAҠN̯ ZBŲ3ASà03PS(ԩDDNԠAҠ-ϠNS ZBMASàH0PSSPSԠ(ԦNԩUN ZBM5ASà0H05B-ϠMP SKP ZBDDƠ+ DƠZBS DƠZBS DƠZBS3 DƠZBS DƠZBS5 DƠZBS6 DƠZBS DƠZBS3 DƠZBS3 DƠZBS33 DƠZBS DƠZBS DƠZBS5 DƠZBS5 DƠZBS53 DƠZBS6 DƠZBS6 DƠZBS63 DƠZBS6 DƠZBS65 DƠZBS66 DƠZBS DƠZBS Dà- ZNDU HDHP9ADADҠPUNHDAGNS BASŠPAGŠDAAҠSԠN̠PGAM G00B MPN.ɠGϠ-HANN̠NGSN G6B DSNԠ300DAGNSàSA̠NUMB G0B PDDƠDPNҠϠDAAHɯϠNSAB PàDƠàPNҠϠMNDHɯϠNSAB SPDƠSDPNҠϠSԠAB HDMPDƠHDMSPNҠϠHADҠMSSAG SDAԠDAUԠSԠS SDBԠ0 BASŠPAGŠNSANS G50B DAAU0BDUMMYDAAHSԠD MNDUBDUMMYMNDHSԠD NҠNP NԠNP SHԠNP SAVANP SAVBNP PSԠNP NԠNP AMNP ԠNP AANP BUPϠNP SHƠNP APϠNP ̠NP D̠NP N̠NP PNԠNP SNDNP PϠNP APϠNP BɠNP DANP ADANP ANP ϠNP PNNP GϠNP SϠNP VAPϠNP MɠNP AϠNP PUNP PNNP NŠԠ ϴ00Ԡ00 NSAԠ03000030060 PUPɠԠ60000 MSKԠ MSK3Ԡ B0Ԡ000 BƠԠ00000 NHƠԠ000 SMSKԠ BAԠ000 SԠ03 DSԠ000 SԠ00 DSԠ0 S5Ԡ30 DSԠ00 JqS3Ԡ000 SԠ00 S6Ԡ030 SԠ0360 SԠ360 S9Ԡ30 S0Ԡ360 SԠ00360 ZϠԠ0 SMԠ0000 BԠ00 HSԠ000 HSMԠ00000 BԠ000 B5Ԡ0 BԠ0 B6Ԡ00 B5Ԡ00000 B9Ԡ000 BԠ BNԠ0000 BԠ00 BԠ0000 BKԠ000 PɲKԠ5000 ɲKԠ3000 PSɲKԠ6000 MSKԠ M0Ԡ0 MԠ MԠ M3Ԡ3 MԠ M5Ԡ5 M6Ԡ6 MԠ M0Ԡ0 MԠ B35Ԡ30500 BԠ0000 DDà M6Dà-6 MDà- M3Dà-3 Dø0Dà0 A63Dà63 D0Dà0 D9Dà9 A39Dà39 DDà D5Dà5 D3Dà3 M5Dà-5 DDà DDà M0Dà-0 M0Dà-0 D9Dà9 PUBUADƠPUBU BV.DƠBV .DƠU .DƠU PBUADƠPBU DBUADƠDBU P.DƠP P.DƠP .DƠN .DƠN D.DƠD .DƠ DS.DƠDS S.DƠS S.DƠSP AҲB.DƠAҲBU SAN.DƠSAN V.DƠV V.DƠV ñ.DƠV DS.DƠDS S.DƠS SA.DƠSA .DƠ SPU.DƠSPU SP.DƠSP A.DƠA SD.DƠSD .DƠ .DƠ P.DƠP P.DƠP .DƠ .DƠ DD.DƠDD N.DƠN-HANN̠NGSN S00.DƠS00 ZB.DƠZB SM.DƠSM S.DƠS S.DƠS B.DƠB BA.DƠBA DS.DƠDS S.DƠS SM.DƠSM DS.DƠDS DA.DƠDA B.DƠB B.DƠB Pɲ.DƠPɲ A.DƠA ɱ.DƠɱ .DƠ .DƠ D.DƠD DA.DƠDA .DƠ Pɲ.DƠPɲ PSɲ.DƠPSɲ ɲ.DƠɲ BUD.DƠBUD SH.DƠSH A0.DƠA0 0.DƠ0 B0.DƠB0 ɲ.DƠɲ PU.DźƠPU D.DƠD PUY.DƠPUY DY.DƠDY B.DƠB B.DƠB SB.DƠSB HPA.DƠHPA AM.DƠAM SM.DƠSM ҠMP. SPUMPSPU. SPҠMPSP. AMPA. SDMPSD. SKP PNSϠDAAHɯϠNSUNS DU DƠDA DƠDSA DƠDϱ DƠDϲ DƠD3 DƠDϴ DƠD5 DƠD6 DƠDBU DƠDϷ DƠDϸ DƠND DƠD9 DƠDϱ DƠDϱ3 DƠDϱ DƠDϱ5 DƠDϱ DƠD DƠDϱ9 DƠDϲ DƠDϲ DƠDϲ5 DƠDϲ6 DƠDϲ DƠDϲ DƠND DƠD3 DƠD33 DƠD3 DƠD35 DƠD36 DƠD3 DƠD3 DƠD39 DƠDϴ0 DƠDϴ Dà-NDƠABŠNDA SKP PNSϠMNDHɯϠNSUNS àU DƠA DƠSA DƠϱ DƠϲ DƠ3 DƠϴ DƠ05 DƠ06 DƠ0 DƠ0 DƠ09 DƠϱ0 DƠϱ DƠϱ DƠϱ3 DƠϱ DƠϱ5 DƠϱ6 DƠϱ DƠϱ DƠϱ9 DƠϲ0 DƠϲ DƠϲ Dà-NDƠABŠNDA PNSϠSAԠƠAHSԠ ٻ SDU DƠS0BASàɯϠSԠҠDAAH DƠS0BASàɯϠSԠҠMNDH DƠS0 DƠS03 DƠS0 DƠS05 DƠS06 DƠS0 DƠS0 DƠS09 DƠSԱ0 DƠSԱ DƠSԱ Dà-NDƠABŠNDA PDƠDDDUMMYPNҠҠP DDU Dà- SKP HADҠMSSAGŠ HDMSASà3HP9ADADҠPUNH ASà6DAGNSï DAAPANS PAԠ0 Ԡ356356 Ԡ356356 Ԡ0 Ԡ000000000000000 Ԡ0000 Ԡ5555550 Ԡ5555550 HPAԠ000000 Ԡ000000000000 Ԡ0000000000000000 Ԡ00 Ԡ0000000000000000 Ԡ00 Ԡ0000000000000000 Ԡ006 Ԡ00000006 Ԡ0000000600 Ԡ00000006 Ԡ0 SHBԠ00055 Ԡ55555500 Ԡ055555555 U̠Ԡ AMƠԠ356356 Ԡ356356 G00B PUNHPNԬANDADBUďS PUBUBSS0 PBUBSS0 DBUBSS0 SKP GZNDASԠDNN̠PGAM -HANN̠NGUANSN NàNPàUNɯϠSYSM ASנGԠSԠDŠANDPNS SAUSSàSAVŠHM ANDZ.MNAŠPNS DBA MBNBHKHAԠSà ADBZ.ҠDAAH(HɠPҩ SSB? MP+3KGϠN HԠ3BN MPNYAGAN DBPDNAZŠSԠɯ SBZSàNSUNSҠDAAH DAUSSàGԠSԠD ANDZ.ҠMNDH(ϠPҩ NA DBPàNAZŠSԠɯ SBZSàNSUNSҠMNDH HԠBAנPAҠϠHANGŠS MPZSؠGϠϠàN̠SN SKP SUBUNS SUBUNSDנANDנ HSŠSUBUNSHKSNGƠDAAHANDMNDH AGHNAMŠMԠBYNMNNGA-GSҠ ANGSUN: DAؠ(ؽ--...-NABS(NPSNSN. .VSƠA SBD.ɠ(Ҡ.ɩ P+...UNƠAGSԠNM P+...UNƠAGNԠSԠNM DנNP I SANҠSŠ-.N.ƠVSƠA A DASàDAASAGS? MPD׬ɠYSԠϠP+ SZANϻSA-GU? MPDAN SZNҠYSSANGS̠? MPDAYS SZDנNϬԠϠP+ MPD׬ נNP SANҠSŠ-.N.ƠVSƠA A ASàMNDSAGS? MP׬ɠYSԠϠP+ SZANϻSA-GU? MPAN SZNҠYSSANGS̠? MPAYS SZנNϬԠϠP+ MP׬ SKP SUBUNSDSנANDSנ HSŠSUBUNSHKSNGƠDAAHANDMNDH SAUSBSHNAMŠMԠBYNMNNGNԠUNҠ ANGSUN: DAؠ(ؽ--...-NABS(NPSNSN. .VSƠNԩ DBBY(Y0...5 SBDS.ɠ(ҠS.ɩ P+...UNƠBYSԠϠNM P+...UNƠBY0(ҩ DSנNP SANҠSŠ-.N.ƠVSN A SANԠSԠNԠUNҠϠ0 DSAADAAGԠSAUS ANDBANDBԠMASK SZASBԠSԠϠ? MPDS׬ɠYSԠϠP+(BԽ SZNԠNϻSNԠU? MPDSAN SZNҠYSSANGS̠? MPDSAYS SZDSנNϬԠϠP+(BԽ0 MPDS׬ SנNP SANҠSŠ-.N.ƠVSN A SANԠSԠNԠUNҠϠ0 SAAMNDGԠSAUS ANDBANDBԠMASK SZASBԠSԠϠ? MPS׬ɠYSԠϠP+(BԽ SZNԠNϻSNԠU? MPSAN SZNҠYSSANGS̠? MPSAYS SZSנNϬԠϠP+(BԽ0 MPS׬ SKP SUBUNŠSP HSSUBUNŠHKSSנGBԠAҠMSSAGSH( PSMNDHANDDAAHSAUS(ƠBԠSԩANDHAS ANGSUN: SBS. P+...UN SPNP DBBSSAUSPԠUD? SBSԬ MP+YSPԠSAUS MPSPɠNϬ SBSA.ɠPԠSAUS DBBSHAԠAԠSԠPϠBŠSUPP? SBSԬ MP+3N-YSNNU DBSAVB-NϬSŠDAASԠNB Ԡ0603HA MPSP SKP SUBUNŠSA HSSUBUNŠPSMNDHANDDAAHSAUS HUԠHAԠ ANGSUN: SBSA. P+...NMA̠UN SANP A SASH DANŠNAZŠASɠBUƠҠMND DBD SBAҲB. DƠNSA DƠBU DƠSH DANŠNAZŠASɠBUƠҠDAA DBD SBAҲB. DƠNSA DƠBUD DƠSH ϱAMNDGԠMNDHSAUS SASAVASAVŠ DϱBDAAGԠDAAHSAUS SBSAVBSAVŠ DOf<:6BSAVANVԠMNDHSAUSϠAS DABUA SBSAN. DBSAVBNVԠDAAHSAUSϠAS DABUDA SBSAN DASAVAUNSAUSϠAANDB DBSAVB SBMSGìɠUPUԠSAUSHUԠHA DƠH3 MPSA BUDADƠBUD BUADƠBU ֏<  12989-18003 1728 S 0147 DG-2894A RDR/PNCH              H0101 <ASMB,A,B,L,C 00001000 HED GENERAL OPERATING PROCEDURE 00002000 ORG 0 00003000 SUP 00004000 * GENERAL OPERATING PROCEDURE 00005000 * 00006000 * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. 00007000 * B. LOAD DIAGNOSTIC MAIN PROGRAM 00008000 * C. LOAD ADDRESS 100B. 00009000 * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS 00010000 * E. PRESS RUN AND WAIT FOR HALT 107074. 00011000 * F. LOAD SWITCH REGISTER 00012000 * IF SET =: 00013000 * 15 = HALT AT END OF EACH TEST 00014000 * 14 = SUPRESS ERROR HALTS 00015000 * 13 = LOOP ON LAST TEST 00016000 * 12 = LOOP ON DIAGNOSTIC 00017000 * (SUPPRESS ALL OPERATOR INTERVENTION) 00018000 * 11 = SUPRESS ERROR MESSAGES 00019000 * 10 = SUPRESS NON-ERROR MESSAGES 00020000 * 9 = GO TO USER CONTROL SECTION 00021000 * AT END OF PRESENT TEST 00022000 * 8= SUPPRESS OPERATOR INTERVENTION TESTS 00023000 * 7 00024000 * = DIAGNOSTIC OPTIONS 00m025000 * 0 00026000 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 00027000 * USER CONTROL WILL ASK FOR A 32 BIT WORD. 00028000 * EACH BIT WILL = 1 TEST 00029000 * 00030000 * G. PRESS RUN. 00031000 * H. RESTART - LOAD ADDRESS 2000B 00032000 * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B 00033000 * 00034000 * GENERAL COMPUTER HALTS 00035000 * 00036000 * 1020XX E OR H 000 TO 067 00037000 * 1060XX E OR H 100 TO 167 00038000 * 1030XX E OR H 200 TO 267 00039000 * 1070XX E OR H 300 TO 367 00040000 * 00041000 * CONTROL PROGRAM HALT MESSAGES 00042000 * 00043000 * 102077 END OF DIAG (A = PASS COUNT) 00044000 * 102076 END OF TEST (A = TEST #) 00045000 * 102075 USER SELECTION REQUEST 00046000 * 102074 SELECT CODE INPUT COMPLETE 00047000 * 102073 USER SELECT CODE ERROR 00048000 * 102072 RESERVED 00049000 * 102071 RESERVED u 00050000 * 102070 RESERVED 00051000 * 00052000 * 106077 TRAP CELL HALT 00053000 * 00054000 * 00055000 * 00056000 HED PROGRAM ORGANIZATION CHART 00057000 * ******************************************* 00058000 * * CONFIGURATOR 100B * 00059000 * * LINKAGE TABLE * 00060000 * ******************************************* 00061000 * * EXECUTIVE 130B * 00062000 * * LINKAGE * 00063000 * ******************************************* 00064000 * * CONSTANTS 150B * 00065000 * * AND * 00066000 * * STORAGE * 00067000 * ******************************************* 00068000 * * 2000B * 00069000 * * EXECUTIVE CONTROL * 00070000 * * * 00071000 * ******************************************* 00072000 * * IF USED * 00073000 * * BASIC I/O TESTS (TEST 00) * 00074000 * * ZCEND *  00075000 * ******************************************* 00076000 * * TABLE OF TEST POINTERS * 00077000 * * TABLE OF I/O INSTR POINTERS * 00078000 * ******************************************* 00079000 * * * 00080000 * * * 00081000 * * * 00082000 * * * 00083000 * * * 00084000 * * MAIN DIAGNOSTICS (1-31) * 00085000 * * * 00086000 * * * 00087000 * * * 00088000 * * * 00089000 * * * 00090000 * ******************************************* 00091000 * 00092000 * 00093000 * 00094000 * 00095000 * 00096000 * 00097000 * 00098000 * 00099000 *  00100000 * 00101000 * 00102000 * 00103000 * 00104000 * 00105000 * 00106000 * 00107000 * 00108000 * 00109000 * 00110000 * 00111000 HED CONFIGURATOR LINKAGE TABLE 00112000 A EQU 0 A REGISTER REFERENCE 00113000 B EQU 1 B REGISTER REFERENCE 00114000 SW EQU 1 SWITCH REGISTER REFERENCE 00115000 INTP EQU 0 INTERRUPT CHANNEL REFERENCE 00116000 * 00117000 * 00118000 ORG 100B 00119000 * 00120000 JMP CFIG,I GO TO CONFIGURATION SECTION 00121000 FAIN BSS 1 FAST INPUT (PHOTO READER) 00122000 SLOP BSS 1 SLOW OUTPUT (LIST) 00123000 FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) 00124000 SLIN BSS 1 SLOW INPUT (KEYBOARD)  00125000 FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY 00126000 LWAM BSS 1 LAST WORD OF AVBL. MEMORY 00127000 BSS 1 NOT USED (MAG TAPE) 00128000 OTMC BSS 1 1 MILL SEC TIME OUT COUNT 00129000 BSS 4 SELECT CODES FOR I/O 00130000 CPTO BSS 1 COMPUTER TYPE/OPTIONS 00131000 USSC BSS 1 USER CARD TYPE AND SELECT CODE 00132000 MEMO BSS 1 MEMORY SIZE AND TYPE 00133000 ISWR BSS 1 INTERNAL SWITCH REGISTER 00134000 TMRR BSS 1 1 MILL SEC TIMER 00135000 SWRC BSS 1 CONFIGURATOR SWITCH CK PTR 00136000 I2AS BSS 1 INTEGER TO ASCII CONVERSION 00137000 O2AS BSS 1 OCTAL TO ASCII CONVERSION 00138000 AS2N BSS 1 ASCII CONVERSION 00139000 DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER 00140000 FMTR BSS 1 FORMATTER 00141000 * 00142000 * 00143000 * CONTROL LINKAGE AND DATA REFERENCES 00144000 * 00145000 CFIG DEF ZCONF CONFIGURATION SECTION 00146000 MSGC DEF ZMSGC MESSAGE WITH NO HALT 00147000 MSGH DEF ZMSGH MESSAGE WITH HALT 00148000 ERMS DEF ZERMS ERROR MESSAGE 00149000 SWRT DEF ZSWRT SWITCH REGISTE9R CHECK ROUTINE 00150000 TSTN OCT 0 CURRENT TEST NUMBER 00151000 EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM 00152000 NOP RESERVED 00153000 * 00154000 * 00155000 * 00156000 * 00157000 * 00158000 * 00159000 * 00160000 * 00161000 * 00162000 * 00163000 * 00164000 * 00165000 * 00166000 HED EXECUTIVE CONTROL 00167000 ORG 2000B 00168000 ZSTEX CLC INTP,C TURN I/O SYSTEM OFF 00169000 JSB MSGC,I DO CRLF 00170000 DEF ZRTLF 00171000 LDA HDMP GET INTRODUCTORY MESSAGE 00172000 STA *+2 00173000 JSB MSGC,I OUT PUT IT 00174000 NOP 6 00175000 CLA CLEAR PASS 00176000 STA ZEOLC COUNT 00177000 LDB ZSW9 CHECK FOR USER SELECTION REQ 00178000 JSB SWRT,I 00179000 JMP ZUSR IT'S USERS CHOICE 00180000 ZNUSR LDA STDA GET STANDARD TEST RUN 00181000 LDB STDB * 00182000 JMP ZEXC 00183000 * 00184000 ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN 00185000 LDB ZSINB 00186000 HLT 75B WAIT FOR USER INPUT 00187000 NOP 00188000 NOP 00189000 NOP 00190000 ZEXC STA ZUINA SAVE 00191000 STB ZUINB USER 00192000 STA ZSINA INPUT 00193000 STB ZSINB PROGRAM 00194000 LDB ZSW9 CHECK IF SW9 IS DOWN 00195000 JSB SWRT,I 00196000 JMP ZUSR NO GO AND WAIT 00197000 CCA SET TEST NUMBER 00198000 STA TSTN =-1 00199000 CLA  00200000 STA ZTSTA CLEAR TEST RUN FLAG 00201000 * 00202000 * 00203000 * 00204000 * 00205000 * 00206000 * 00207000 * 00208000 * 00209000 * 00210000 * 00211000 * 00212000 * 00213000 * 00214000 * 00215000 * 00216000 * 00217000 SKP 00218000 ZEXCL LDA ZUINA RESTORE A REG. 00219000 LDB ZUINB RESTORE B REG. 00220000 ERA,RAL ROTATE 00221000 ERB FIRST 00222000 ERA TEST BIT 00223000 STA ZUINA SAVE POSITIONS 00224000 STB RZUINB 00225000 ISZ TSTN MOVE TEST UP ONE 00226000 NOP 00227000 ZXCL1 LDA TSTN 00228000 ADA TSTP GET IT'S 00229000 LDA A,I ADDRESS 00230000 CPA Z.M1 IS IT END OF LIST 00231000 JMP ZEOL YES 00232000 LDB ZUINB 00233000 SSB,RSS SHOULD IT BE RUN? 00234000 JMP ZEXCL NO 00235000 STA ZTSTA YES - SAVE TEST ADDRESS 00236000 JSB ZITCH INITIALIZE TRAP CELL HALTS 00237000 JSB ZTSTA,I GO DO TEST 00238000 ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED 00239000 LDB ZSW15 CHECK FOR HALT AT END OF TEST 00240000 JSB SWRT,I 00241000 HLT 76B YES WAIT FOR OPERATOR 00242000 LDB ZSW9 CHECK FOR ABORT 00243000 JSB SWRT,I 00244000 JMP ZUSR YES 00245000 LDB ZSW13 CHECK FOR LOOP ON ROUTINE 00246000 JSB SWRT,I 00247000 JMP ZXCL1 YES - LOOP 00248000 JMP ZEXCL CONTINUE 00249000 *  00250000 ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN 00251000 SZA,RSS ? 00252000 JMP ZNUSR NO SO PICK UP STANDARD RUN 00253000 LDA ZEOLC UP DATE PASS COUNT 00254000 INA 00255000 STA ZEOLC 00256000 CCE 00257000 LDB ZPSCA GET PASS COUNT 00258000 ADB Z.2 ADDRESS 00259000 JSB O2AS,I CONVERT IT 00260000 JSB MSGC,I CALL PRINT ROUTINE 00261000 ZPSCA DEF ZPSC 00262000 LDB ZSW12 CHECK FOR LOOP ON DIAG. 00263000 JSB SWRT,I 00264000 JMP *+3 YES 00265000 LDA ZEOLC 00266000 HLT 77B NO WAIT AND DISPLAY PASS COUNT 00267000 LDA ZSINA RESTORE ORIGINAL 00268000 LDB ZSINB PROGRAM 00269000 JMP ZEXC DO IT ALL AGAIN 00270000 * 00271000 SKP 00272000 * MESSAGE OUTPUT WITH OUT HALT 00273000 * 0027:4000 ZMSGC NOP ENTRY 00275000 JSB ZMSG OUTPUT MESSAGE 00276000 OCT 2000 SWITCH 10 CHECK 00277000 JMP ZMSGC,I RETURN TO CALLER 00278000 * 00279000 * MESSAGE OUTPUT WITH HALT 00280000 * 00281000 ZMSGH NOP ENTRY 00282000 JSB ZMSG OUTPUT MESSAGE 00283000 OCT 2000 SWITCH 10 CHECK 00284000 LDA ZHLT GET HALT CODE 00285000 STA *+2 PUT IT IN PLACE 00286000 LDA ZSAVA RESTORE A REGISTER 00287000 NOP HALT FOR DISPLAY 00288000 JMP ZMSGH,I RETURN TO CALLER 00289000 * 00290000 * ERROR MESSAGE WITH HALT 00291000 * 00292000 ZERMS NOP ENTRY 00293000 JSB ZMSG OUTPUT MESSAGE 00294000 OCT 4000 SWITCH 11 CHECK 00295000 CLA 00296000 LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS 00297000 JSB SWRT,I HALT 00298000 STA *+3 PUT HALT IN PLACE e 00299000 LDA ZSAVA RESTORE A & B 00300000 LDB ZSAVB 00301000 ZHLT NOP WAIT FOR OPERATOR 00302000 JMP ZERMS,I RETURN TO CALLER 00303000 * 00304000 * 00305000 * 00306000 * 00307000 * 00308000 * 00309000 * 00310000 * 00311000 * 00312000 * 00313000 * 00314000 * 00315000 * 00316000 SKP 00317000 * OUTPUT MESSAGE 00318000 * 00319000 ZMSG NOP 00320000 STA ZSAVA SAVE A AND B REGISTERS 00321000 STB ZSAVB 00322000 LDB ZMSG,I GET SWITCH REGISTER BIT 00323000 LDA ZMSG  00324000 ADA Z.M2 DECREMENT RETURN ADDRESS 00325000 STA ZMSG 00326000 JSB SWRT,I CHECK TO SUPPRESS MESSAGE 00327000 JMP ZMSG0 YES 00328000 LDA ZMSG,I CHECK IF ERROR 00329000 LDA A,I 00330000 LDA A,I IF SO 00331000 ALF,ALF 00332000 AND Z.177 00333000 CPA ZA.E 00334000 JSB ZCFTN CHECK TO OUTPUT TEST NUMBER 00335000 LDA ZMSG,I NO RETRIEVE FORMAT 00336000 LDB A,I ADDRESS 00337000 CLA,CLE 00338000 JSB FMTR,I 00339000 ZMSG0 LDA ZMSG,I CONVERT HALT CODE 00340000 LDB A,I FROM ASCII STRING 00341000 CCA,CCE 00342000 JSB AS2N,I 00343000 STA ZN2AO SAVE RESULT 00344000 AND Z.300 DECODE 00345000 LDB ZH2 HALT CODE 00346000 CPA Z.100 00347000 LDB ZH6 00348000 CPA Z.200 { 00349000 LDB ZH3 00350000 CPA Z.300 00351000 LDB ZH7 00352000 LDA ZN2AO GET HALT NUMBER 00353000 AND Z.77 00354000 IOR B 00355000 STA ZHLT SAVE IT 00356000 ISZ ZMSG,I ADJUST RETURN POINTERS 00357000 ISZ ZMSG 00358000 ISZ ZMSG 00359000 ISZ ZMSG 00360000 LDA ZSAVA RESTORE A AND B REGISTERS 00361000 LDB ZSAVB 00362000 JMP ZMSG,I 00363000 * 00364000 * 00365000 * 00366000 * 00367000 * 00368000 * 00369000 SKP 00370000 ZCFTN NOP 00371000 LDA TSTN GET TEST NUMBER 00372000 CPA ZCFTT IS IT THE SAME ONE? 00373000 JMP ZCFTN,I YES SKIP OUTPUT o 00374000 STA ZCFTT NO - THEN UPDATE IT 00375000 JSB ZN2AO CONVERT IT 00376000 STA ZTSTN PUT IT IN STRING 00377000 CLA DO A CRLF 00378000 JSB SLOP,I 00379000 CLA,CLE INDICATE START OF FORMAT 00380000 LDB ZTSTF 00381000 JSB FMTR,I 00382000 JMP ZCFTN,I RETURN 00383000 * 00384000 * 00385000 * 00386000 * 00387000 ZSAVA NOP 00388000 ZSAVB NOP 00389000 ZEOLC NOP 00390000 ZTSTA NOP 00391000 ZSINA NOP 00392000 ZSINB NOP 00393000 ZUINA NOP 00394000 ZUINB NOP 00395000 ZBTMP NOP 00396000 Z.2 OCT 2 00397000 Z.7 OCT 7 00398000 Z.10 OCT 10 # 00399000 Z.60 OCT 60 00400000 Z.77 OCT 77 00401000 Z.177 OCT 177 00402000 Z.M1 DEC -1 00403000 Z.M2 DEC -2 00404000 ZD100 DEC -100 00405000 ZIOM OCT 177700 00406000 ZSW15 OCT 100000 00407000 ZSW14 OCT 40000 00408000 ZSW13 OCT 20000 00409000 ZSW12 OCT 10000 00410000 ZS812 OCT 010400 00411000 ZSW9 OCT 1000 00412000 Z.100 OCT 100 00413000 Z.200 OCT 200 00414000 Z.300 OCT 300 00415000 ZH2 OCT 102000 00416000 ZH6 OCT 106000 00417000 ZH3 OCT 103000 00418000 ZH7 OCT 107000 00419000 ZCFTT DEC -1 00420000 ZTSTF DEF *+1 00421000 ASC 3,TEST 00422000 ZTSTN ASC 2,XX// 00423000 ZRTLF ASC 1,// H 00424000 ZPSC ASC 6,PASS XXXXXX/ 00425000 ZA.E OCT 105 00426000 HED GENERAL ROUTINES 00427000 * 00428000 * 00429000 ZN2AO NOP 00430000 STA ZIOAD SAVE NUMBER 00431000 AND Z.7 CONVERT FIRST 00432000 IOR Z.60 NUMBER 00433000 STA B SAVE IT 00434000 LDA ZIOAD GET 00435000 RAR,RAR SECOND 00436000 RAR NUMBER 00437000 AND Z.7 CONVERT 00438000 IOR Z.60 IT 00439000 ALF,ALF MOVE TO UPPER HALF 00440000 IOR B ADD LOWER 00441000 JMP ZN2AO,I AND RETURN 00442000 * 00443000 * 00444000 * 00445000 * SWITCH REGISTER CHECK 00446000 * 00447000 ZSWRT NOP 00448000 STA ZN2AO @SAVE A REGISTER 00449000 LIA SW GET SWITCH REG. 00450000 AND B MASK OUT BIT 00451000 SZA,RSS IS IT UP? 00452000 ISZ ZSWRT NO 00453000 LDA ZN2AO RESTORE A REGISTER 00454000 LIB SW LET B = SWITCH REGISTER 00455000 JMP ZSWRT,I RETURN TO CALLER 00456000 * 00457000 * 00458000 * 00459000 * INITIALIZE TRAP CELL HALTS 00460000 * 00461000 ZITCH NOP 00462000 LDA ZTSH GET STARTING TRAP CELL HALT 00463000 LDB Z.2 GET FIRST TRAP CELL LOCATION 00464000 ZTSHL STA B,I PUT IT IN PLACE 00465000 CPB Z.77 AM I FINISHED 00466000 JMP ZITCH,I YES 00467000 INB NEXT ADDRESS 00468000 JMP ZTSHL 00469000 * 00470000 ZTSH OCT 106077 00471000 * 00472000 * 00473000 * J 00474000 SKP 00475000 * PUT JSB INSTRUCTION IN TRAP CELL 00476000 * 00477000 ZTCJI NOP 00478000 LDB ZJSBI GET INSTRUCTION 00479000 STB ZIOSC,I PUT IT IN TRAP CELL 00480000 LDA ZTCJI,I GET LOCATION 00481000 STA 3B SAVE IT FOR JSB INSTRUCTION 00482000 ISZ ZTCJI ADJUST RETURN 00483000 JMP ZTCJI,I RETURN TO CALLER 00484000 * 00485000 ZJSBI JSB 3B,I JSB INSTRUCTION 00486000 * 00487000 * 00488000 * INITIALIZE SELECT CODE I/O INSTRUCTIONS 00489000 * 00490000 ZISC NOP 00491000 STA ZIOSC SAVE SELECT CODE 00492000 STB ZIOAD SAVE TABLE ADDRESS 00493000 ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION 00494000 CPB Z.M1 IS IT THE TERMINATOR 00495000 JMP ZISC,I YES RETURN TO CALLER 00496000 LDA B,I NO - GET CONTENTS 00497000 AND ZIOM MASK OFF OLD SELECT CODE 00498000 E IOR ZIOSC ADD IN NEW SELECT CODE 00499000 STA B,I RESTORE IT 00500000 ISZ ZIOAD MOVE TO NEXT ADDRESS 00501000 JMP ZIOL DO IT 00502000 * 00503000 ZIOSC NOP 00504000 ZIOAD NOP 00505000 * 00506000 * 00507000 * 00508000 * 00509000 SKP 00510000 * CONFIGURATION SECTION 00511000 * 00512000 ZCONF CLC INTP,C TURN I/O SYSTEM OFF 00513000 LIA SW GET SELECT CODE AND OPTIONS 00514000 STA USSC SAVE THEM 00515000 AND Z.77 ELIMINATE OPTIONS 00516000 LDB A 00517000 CMB,INB CHECK THAT SC > 7 00518000 ADB Z.7 00519000 SSB ? 00520000 JMP *+3 OK GO ON 00521000 HLT 73B NO 00522000 JMP ZCONF TRY AGAIN 005230ؕ00 LDB IOIP INITIALIZE TEST I/O 00524000 JSB ZISC INSTRUCTIONS 00525000 HLT 74B ALLOW OPERATOR TO CHANGE SWIT 00526000 JMP ZSTEX GO TO EXEC CONTROL SECTION 00527000 * 00528000 * 00529000 * 00530000 * 00531000 * 00532000 * 00533000 * 00534000 * 00535000 * 00536000 * 00537000 * 00538000 * 00539000 * 00540000 * 00541000 * 00542000 * 00543000 * 00544000 * 00545000 * 00546000 * 00547000 * Q 00548000 * 00549000 * 00550000 HED BASIC I/O TESTS 00551000 CH EQU 10B 00552000 * 00553000 TST00 EQU * 00554000 NOP 00555000 LDA USSC GET CELL LOCATION 00556000 AND Z.77 00557000 JSB ZBIO DO BASIC I/O 00558000 JMP TST00,I 00559000 * 00560000 ZBIO NOP 00561000 CLC INTP,C TURN OFF ALL I/O 00562000 LDB ZBIOD INITIALIZE BASIC I/O 00563000 JSB ZISC INSTRUCTIONS 00564000 * 00565000 * INTERRUPT FLAG CHECK 00566000 * 00567000 ZBIO1 STF INTP 00568000 CLF INTP 00569000 SFC INTP 00570000 RSS 00571000 JMP *+3 00572000 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR  00573000 DEF ZBE00 00574000 SFS INTP 00575000 JMP *+3 00576000 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR 00577000 DEF ZBE01 00578000 STF INTP 00579000 SFC INTP 00580000 JMP *+4 00581000 CLF INTP TURN OFF INTS 00582000 E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR 00583000 DEF ZBE02 00584000 SFS INTP 00585000 JMP *+3 00586000 CLF INTP TURN OFF INTERRUPTS 00587000 JMP ZBIO2 00588000 CLF INTP TURN OFF INTS 00589000 E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR 00590000 DEF ZBE03 00591000 JMP ZBIO2 00592000 * 00593000 ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ 00594000 ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ 00595000 ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ 00596000 ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ 00597000 * 6 00598000 * 00599000 SKP 00600000 * CARD FLAG CHECK 00601000 * 00602000 ZBIO2 EQU * 00603000 ZBS21 STF CH 00604000 ZBS22 CLF CH 00605000 ZBS23 SFC CH 00606000 RSS 00607000 JMP *+3 00608000 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR 00609000 DEF ZBE05 00610000 ZBS24 SFS CH 00611000 JMP *+3 00612000 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR 00613000 DEF ZBE06 00614000 ZBS25 STF CH 00615000 ZBS26 SFC CH 00616000 JMP *+3 00617000 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR 00618000 DEF ZBE07 00619000 ZBS27 SFS CH 00620000 RSS 00621000 JMP ZBIO3 00622000 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR ~# 00623000 DEF ZBE10 00624000 JMP ZBIO3 00625000 * 00626000 ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ 00627000 ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ 00628000 ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ 00629000 ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ 00630000 * 00631000 * 00632000 * 00633000 * 00634000 * 00635000 * 00636000 * 00637000 * 00638000 * 00639000 * 00640000 * 00641000 * 00642000 * 00643000 * 00644000 * 00645000 * 00646000 * 00647000 * - 00648000 * 00649000 SKP 00650000 * INTERRUPT CONTROL 00651000 * 00652000 ZBIO3 JSB ZTCJI SET JSB INSTRUCTION 00653000 DEF ZB3E 00654000 ZBS31 STF CH SET THE FLAG 00655000 ZBS32 STC CH SET THE CONTROL 00656000 STF INTP TURN I/O SYSTEM ON THEN 00657000 CLF INTP TURN I/O SYSTEM OFF 00658000 NOP GIVE IT A CHANCE TI INTERRUPT 00659000 NOP 00660000 ZBS33 CLF CH RESET CH FLAG 00661000 JMP ZBIO4 00662000 * 00663000 ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ 00664000 * 00665000 ZB3E NOP 00666000 CLF INTP TURN OFF INTS 00667000 E004 JSB ERMS,I E004 00668000 DEF ZBE04 00669000 * 00670000 * 00671000 * 00672000 * 3 00673000 * 00674000 * 00675000 * 00676000 * 00677000 * 00678000 * 00679000 * 00680000 * 00681000 * 00682000 * 00683000 * 00684000 * 00685000 * 00686000 * 00687000 * 00688000 * 00689000 * 00690000 * 00691000 * 00692000 * 00693000 SKP 00694000 * SELECT CODE SCREEN TEST 00695000 * 00696000 ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS 00697000 ZB40 LDA ZIOSC GE T SELECT CODE (*EDITED IN TCP*) 00698000 AND Z.77 00699000 CPB A IS IT THE CH? 00700000 JMP Z.CLF+1 YES - SKIP TEST 00701000 LDA Z.STF SET UP 00702000 AND ZIOM 00703000 IOR B STF INSTRUCTION 00704000 STA Z.STF PUT IT IN PLACE 00705000 LDA Z.CLF SET UP 00706000 AND ZIOM 00707000 IOR B CLF INSTRUCTION 00708000 STA Z.CLF PUT IT IN LINE 00709000 ZBS41 CLF CH CLEAR CHANNEL FLAG 00710000 Z.STF STF CH EXECUTE STF CH INSTRUCTION 00711000 ZBS42 SFC CH TEST CHANNEL FLAG 00712000 JMP ZB41 00713000 Z.CLF CLF CH CLEAR TEST FLAG 00714000 CPB Z.77 IS TEST FINISHED? 00715000 JMP ZBIO5 YES 00716000 INB NO 00717000 JMP ZB40 DO NEXT CHANNEL 00718000 * 00719000 ZBE11 ASC 14,E011 STF XX SET CARD FLAG// 00720000 * 00721000 ZB41 STB ZBTMP SAVE NUMBER 00722000 LDA B  CONVERT CH FOR MESSAGE 00723000 JSB ZN2AO 00724000 STA ZBE11+5 00725000 LDA ZBTMP RETRIEVE NUMBER 00726000 E011 JSB ERMS,I E011 00727000 DEF ZBE11 00728000 * 00729000 * 00730000 * 00731000 * 00732000 * 00733000 SKP 00734000 * CHECK INTERRUPT & HOLD OFF 00735000 * 00736000 ZBIO5 JSB ZTCJI 00737000 DEF ZBI5 00738000 CLA SET UP 00739000 STA ZBF5 FLAGS 00740000 STA ZBI5 FOR TEST 00741000 STA ZBTMP 00742000 ZBS51 STC CH TURN ON 00743000 ZBS52 STF CH CARD 00744000 STF INTP AND INTERRUPTS 00745000 STC 1 * 00746000 STF 1 * 00747000 sCLC 1 * 00748000 CLF 1 * NO INTERRUPT 00749000 JMP *+1,I * SHOULD OCCURR 00750000 DEF *+1 * HERE 00751000 JSB *+1,I * 00752000 DEF *+1 * 00753000 ZBF5 NOP * 00754000 ISZ ZBTMP INT. SHOULD BE HERE 00755000 ISZ ZBTMP 00756000 CLF INTP TURN I/O SYSTEM OFF 00757000 LDA ZBI5 DID IT INTERRUPT? 00758000 SZA 00759000 JMP *+4 00760000 E014 JSB ERMS,I E014 NO INT 00761000 DEF ZBE14 00762000 JMP ZBIO6 ABORT REST OF SECTION 00763000 LDA ZBTMP CHECK FOR CORRECT INTERRUPT 00764000 CPA Z.2 ? 00765000 JMP *+3 00766000 E026 JSB ERMS,I E026 INT EXECUTION ERROR 00767000 DEF ZBE26 00768000 ZBS53 CLF CH TURN OFF CH FLAG 00769000 JMP ZBIO6 GO TO NEXT SECTION 00770000 * 00771000 ZBD5 DEF ZBF5-1 00772000\ ZBD5A DEF ZBF5+1 00773000 * 00774000 ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ 00775000 ZBE13 ASC 12,E013 SECOND INT OCURRED/ 00776000 ZBE14 ASC 06,E014 NO INT/ 00777000 ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ 00778000 ZBE26 ASC 13,E026 INT EXECUTION ERROR/ 00779000 * 00780000 * 00781000 * 00782000 * 00783000 SKP 00784000 ZBI5 NOP 00785000 CLF INTP TURN I/O SYSTEM OFF 00786000 LDA ZBD5 CHECK TO SEE IF ALL 00787000 CPA ZBF5 INSTRUCTION COMPLETED 00788000 JMP *+3 YES 00789000 E012 JSB ERMS,I E012 INT DURING HOLD OFF 00790000 DEF ZBE12 00791000 LDA ZBD5A CHECK RETURN ADDRESS 00792000 LDB CPTO IF 210X 00793000 SSB ADD ONE 00794000 INA 00795000 CPA ZBI5 00796000 JMP ZBI5A R 00797000 E015 JSB ERMS,I E015 INT RTN ADDR ERROR 00798000 DEF ZBE15 00799000 JMP ZBIO6 00800000 ZBI5A JSB ZTCJI SET SECOND INT TRAP 00801000 DEF ZBT5 00802000 STF INTP TURN I/O SYSTEM ON 00803000 JMP ZBI5,I CONTINUE TEST 00804000 * 00805000 * 00806000 ZBT5 NOP 00807000 CLF INTP TURN I/O SYSTEM OFF 00808000 E013 JSB ERMS,I E013 SECOND INT OCURRED 00809000 DEF ZBE13 00810000 * 00811000 * 00812000 * 00813000 * 00814000 * 00815000 SKP 00816000 * CLC CH AND CLC 0 00817000 * 00818000 ZBIO6 JSB ZTCJI SET JSB INSTRUCTION 00819000 DEF ZBI61 00820000 ZBS61 STC CH SET CH CONTROL 00821000 ZBS62 STF CH SET CH FLAG d 00822000 STF INTP TURN ON INTERRUPTS 00823000 ZBS63 CLC CH CLEAR CH CONTROL 00824000 NOP GIVE IT A CHANCE 00825000 NOP 00826000 CLF INTP TURN INTS OFF 00827000 ZB60 JSB ZTCJI SET JSB INSTRUCTION 00828000 DEF ZBI62 00829000 ZBS64 CLF CH CLEAR CH FLAG 00830000 ZBS65 STC CH SET CH CONTROL 00831000 ZBS66 STF CH SET CH FLAG 00832000 STF INTP TURN ON INTS 00833000 CLC INTP CLEAR I/O SYSTEM 00834000 NOP GIVE IT A CHANCE 00835000 NOP 00836000 CLF INTP TURN OFF INTS 00837000 JMP ZBIO7 00838000 * 00839000 * 00840000 ZBI61 NOP 00841000 CLF INTP TURN OFF INTS 00842000 E016 JSB ERMS,I E016 CLC CH ERROR 00843000 DEF ZBE16 00844000 JMP ZB60 00845000 * 00846000 ZBI62 NOP Y 00847000 CLF INTP TURN OFF INTS 00848000 E017 JSB ERMS,I E017 CLC 0 ERROR 00849000 DEF ZBE17 00850000 JMP ZBIO7 00851000 * 00852000 ZBE16 ASC 9,E016 CLC CH ERROR/ 00853000 ZBE17 ASC 9,E017 CLC 0 ERROR/ 00854000 * 00855000 * 00856000 * 00857000 * 00858000 * 00859000 SKP 00860000 * EXTERNAL & INTERNAL PRESET TEST 00861000 * 00862000 ZBIO7 LDB ZS812 CHECK TO SUPPRESS 00863000 JSB SWRT,I ? 00864000 JMP H025 YES - SKIP PRESET TEST 00865000 H024 JSB MSGC,I TELL OPERATOR 00866000 DEF ZBM24 PRESS PRESET 00867000 * 00868000 ZBS71 CLF CH CLEAR CH FLAG 00869000 STF INTP TURN ON INTS 00870000 JSB ZTCJI SET TRAP CELL JSB INSTRUCTION 00871000 DEF ZBI70 ;i 00872000 HLT 24B WAIT FOR OPERATOR 00873000 CLA,INA SET UP FLAGS FOR TESTS 00874000 SFS INTP CHECK INTP FLAG 00875000 CLA NOT SET SO CLEAR FLAG 00876000 RAL MOVE TO NEXT FLAG 00877000 CLF INTP TURN OFF ONTPS 00878000 ZBS72 SFS CH CHECK CHANNEL FLAG 00879000 INA NOT SET SO FLAG IT 00880000 RAL MOVE TO NEXT FLAG 00881000 LIB 0 CHECK I/O BUSS 00882000 SZB SHOULD BE ZERO 00883000 INA NOT SO FLAG IT 00884000 RAL MOVE TO NEXT FLAG 00885000 STF INTP CHECK CONTROL ON CARD 00886000 NOP GIVE IT A CHANCE 00887000 NOP 00888000 CLF INTP TURN OFF INTPS 00889000 * 00890000 * 00891000 * 00892000 * 00893000 * 00894000 * 00895000 * 00896000 *  00897000 * 00898000 * 00899000 * 00900000 * 00901000 * 00902000 * 00903000 * 00904000 * 00905000 * 00906000 * 00907000 * 00908000 * 00909000 * 00910000 * 00911000 * 00912000 SKP 00913000 ZB70 SLA,RSS CHECK FOR ERRORS 00914000 JMP *+3 00915000 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL 00916000 DEF ZBE22 00917000 RAR 00918000 SLA,RSS 00919000 JMP *+3 00920000 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR 00921000 DEF ZBE23  00922000 RAR 00923000 SLA,RSS 00924000 JMP *+3 00925000 E020 JSB ERMS,I E020 FLAG NOT SET 00926000 DEF ZBE20 00927000 RAR 00928000 SLA,RSS 00929000 JMP *+3 00930000 E021 JSB ERMS,I E021 DID NOT DIABLE INTS 00931000 DEF ZBE21 00932000 H025 JSB MSGC,I TELL OPERATOR 00933000 DEF ZBM25 BASIC I/O IS COMPLETE 00934000 JMP ZBIO,I RETURN TO CALLER 00935000 * 00936000 ZBI70 NOP CONTROL FAILED 00937000 CLF INTP TURN OFF INTPS 00938000 INA 00939000 JMP ZB70 00940000 * 00941000 ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ 00942000 ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ 00943000 ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ 00944000 ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ 00945000 ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ 00946000 ZBM25 ASC 08,H025 BI-O COMP/ 00947000 SKP 00948000 ZBIOD DEF *+1 00949000 DEF ZBS21 00950000 DEF ZBS22 00951000 DEF ZBS23 00952000 DEF ZBS24 00953000 DEF ZBS25 00954000 DEF ZBS26 00955000 DEF ZBS27 00956000 DEF ZBS31 00957000 DEF ZBS32 00958000 DEF ZBS33 00959000 DEF ZBS41 00960000 DEF ZBS42 00961000 DEF ZBS51 00962000 DEF ZBS52 00963000 DEF ZBS53 00964000 DEF ZBS61 00965000 DEF ZBS62 00966000 DEF ZBS63 00967000 DEF ZBS64 00968000 DEF ZBS65 00969000 DEF ZBS66 00970000 DEF ZBS71 00971000 DEF ZBS72 U 00972000 DEC -1 00973000 * 00974000 ZCEND EQU * 00975000 * 00976000 * 00977000 * 00978000 * 00979000 * 00980000 * 00981000 * 00982000 * 00983000 * 00984000 * 00985000 * 00986000 * 00987000 * 00988000 * 00989000 * 00990000 * 00991000 * 00992000 * 00993000 * 00994000 * 00995000 * 00996000 * 3 00997000 * 00998000 * 00999000 * 01000000 HED HP 2894 CARD READER PUNCH DIAGNOSTIC 01001000 ******************************************************************** 01002000 * BASE PAGE DATA FOR TEST CONTROL PROGRAM * 01003000 ******************************************************************** 01004000 * 01005000 ORG 100B 01006000 JMP CON2.,I GOTO TWO-CHANNEL CONFIG SECTION 01007000 ORG 126B 01008000 DSN OCT 113001 DIAGNOSTIC SERIAL NUMBER 01009000 ORG 140B 01010000 IOIPD DEF IOID POINTER TO DATA CH I/O INS TABLE 01011000 IOIPC DEF IOIC POINTER TO CMND CH I/O INS TABLE 01012000 TSTP DEF TSTD POINTER TO TEST TABLE 01013000 HDMP DEF HDMS POINTER TO HEADER MESSAGE 01014000 STDA OCT 7777 DEFAULT TEST SET 01015000 STDB OCT 0 01016000 * 01017000 ******************************************************************** 01018000 * BASE PAGE CONSTANTS * 01019000 ******************************************************************** 01020000 * 01021000  ORG 150B 01022000 DATA EQU 10B DUMMY DATA CH SELECT CODE 01023000 CMND EQU 11B DUMMY CMND CH SELECT CODE 01024000 * 01025000 RNR NOP 01026000 ICNT NOP 01027000 SHIFT NOP 01028000 SAVA NOP 01029000 SAVB NOP 01030000 POIST NOP 01031000 CNROT NOP 01032000 ARLIM NOP 01033000 COLCT NOP 01034000 ARA NOP 01035000 BUFPO NOP 01036000 SHF NOP 01037000 ARPO NOP 01038000 CCTRL NOP 01039000 DCTRL NOP 01040000 RQNCL NOP 01041000 POINT NOP 01042000 WSIND NOP 01043000 EXPO NOP 01044000 ACPO NOP 01045000 BLI NOP 01046000 EXDA NOP 01047000 ACDA NOP 01048000 ROTA NOP 01049000 COLO NOP 01050000 PON NOP 01051000 GLO NOP 01052000 SLO NOP 01053000 VAPO NOP 01054000 MOI NOP 01055000 CACO NOP 01056000 EPU NOP 01057000 PIN NOP 01058000 * 01059000 ONE OCT 1 01060000 O400 OCT 400 01061000 INSTA OCT 030040,030060 01062000 PUPRI OCT 60000 01063000 MSK12 OCT 7777 01064000 MSK13 OCT 17777 01065000 B10 OCT 2000 01066000 CLBF OCT 100000 01067000 INHIF OCT 4000 01068000 SCMSK OCT 77 01069000 B8A12 OCT 10400 01070000 ECS1 OCT 10342  01071000 EDS1 OCT 1000 01072000 ECS2 OCT 10202 01073000 EDS4 OCT 0 01074000 ECS5 OCT 340 01075000 EDS2 OCT 400 01076000 ECS3 OCT 10200 01077000 ECS4 OCT 200 01078000 ECS6 OCT 10340 01079000 ECS7 OCT 10360 01080000 ECS8 OCT 114360 01081000 ECS9 OCT 114340 01082000 ECS10 OCT 360 01083000 ECS12 OCT 100360 01084000 ZERO OCT 0 01085000 SCM OCT 10000 01086000 B8 OCT 400 01087000 H2S2 OCT 114000 01088000 H2SOM OCT 100000 01089000 B11 OCT 4000 01090000 B5 OCT 40 01091000 B4 OCT 20 01092000 B6 OCT 100 01093000 B15 OCT 100000 01094000 B9 OCT 1000 01095000 B1 OCT 2   01096000 CBIN OCT 104000 01097000 B7 OCT 200 01098000 B14 OCT 40000 01099000 QWB2K OCT 174000 01100000 PI2K OCT 154000 01101000 WI2K OCT 134000 01102000 PSI2K OCT 176000 01103000 CMSK OCT 17 01104000 CM0 OCT 0 01105000 CM1 OCT 1 01106000 CM2 OCT 2 01107000 CM3 OCT 3 01108000 CM4 OCT 4 01109000 CM5 OCT 5 01110000 CM6 OCT 6 01111000 CM7 OCT 7 01112000 CM10 OCT 10 01113000 CM11 OCT 11 01114000 B3285 OCT 30500 01115000 B12 OCT 10000 01116000 * 01117000 D11 DEC 11 01118000 M16 DEC -16 01119000 M1 DEC -1 01120000 M3 DEC -3  01121000 DEC80 DEC 80 01122000 AL63 DEC 63 01123000 D80 DEC 80 01124000 D79 DEC 79 01125000 AL39 DEC 39 01126000 D4 DEC 4 01127000 D5 DEC 5 01128000 D3 DEC 3 01129000 M5 DEC -5 01130000 D2 DEC 2 01131000 D12 DEC 12 01132000 M80 DEC -80 01133000 M10 DEC -10 01134000 D19 DEC 19 01135000 * 01136000 PUBUA DEF PUBU 01137000 BCV2. DEF BCV2 01138000 CLOF. DEF CLOUF 01139000 CROF. DEF CROUF 01140000 PRBUA DEF PRBU 01141000 RDBUA DEF RDBU 01142000 CLPF. DEF CLPRF 01143000 CRPF. DEF CRPRF 01144000 CLIF. DEF CLINF 01145000 CRIF. DEF CRINF  01146000 DFW. DEF DFW 01147000 CFW. DEF CFW 01148000 DSTW. DEF DSTW 01149000 CSTW. DEF CSTW 01150000 STRE. DEF STREP 01151000 AR2B. DEF AR2BU 01152000 SCAN. DEF SCAN 01153000 CLCV. DEF CLCV 01154000 CRCV. DEF CRCV 01155000 CRC1. DEF CRCV1 01156000 DST. DEF DST 01157000 CST. DEF CST 01158000 STA. DEF STA 01159000 CER. DEF CER 01160000 SPU. DEF SPU 01161000 SPR. DEF SPR 01162000 IREA. DEF IREA 01163000 SRD. DEF SRD 01164000 ICLO. DEF ICLO 01165000 ICRO. DEF ICRO 01166000 ICLP. DEF ICLP 01167000 ICRP. DEF ICRP 01168000 ICLI. DEF ICLI 01169000 ICRI. DEF ICRI 01170000 DODO. DEF DODO L 01171000 CON2. DEF CON2 TWO-CHANNEL CONFIG SECTION 01172000 TS00. DEF TST00 01173000 ZBIO. DEF ZBIO 01174000 ISCM. DEF ISCM 01175000 COCS. DEF COCS 01176000 CSER. DEF CSER 01177000 BEX. DEF BEX 01178000 BAC. DEF BAC 01179000 CODS. DEF CODS 01180000 ERST. DEF ERST 01181000 ISOM. DEF ISOM 01182000 DSER. DEF DSER 01183000 DACO. DEF DACO 01184000 RB2. DEF RB2 01185000 QWB2. DEF QWB2 01186000 PWI2. DEF PWI2 01187000 RA1. DEF RA1 01188000 FI1. DEF FI1 01189000 ECL. DEF ECL 01190000 ECR. DEF ECR 01191000 DEX. DEF DEX 01192000 DAC. DEF DAC 01193000 OCO. DEF OCO 01194000 PI2. DEF PI2 01195000 PSI2. DEF PSI2 % 01196000 WI2. DEF WI2 01197000 BUD. DEF BUD 01198000 WSCH. DEF WSCH 01199000 RA0. DEF RA0 01200000 FI0. DEF FI0 01201000 RB0. DEF RB0 01202000 FI2. DEF FI2 01203000 PUX. DEF PUX 01204000 RDX. DEF RDX 01205000 PUY. DEF PUY 01206000 RDY. DEF RDY 01207000 QB2. DEF QB2 01208000 RWB2. DEF RWB2 01209000 QSB2. DEF QSB2 01210000 HPA. DEF HPA 01211000 ALMF. DEF ALMF 01212000 CSM. DEF CSM 01213000 * 01214000 JCER JMP CER.,I 01215000 JSPU JMP SPU.,I 01216000 JSPR JMP SPR.,I 01217000 JIREA JMP IREA.,I 01218000 JSRD JMP SRD.,I 01219000 SKP 01220000 ******************************************************************** 01221000 * POINTERS TO DATA CH I/O INSTRUCTIONS * 01222000 ******************************************************************** 01223000 * 01224000 IOID EQU * 01225000 DEF DFA 01226000 DEF DSA 01227000 DEF DIO1 01228000 DEF DIO2 01229000 DEF DIO3 01230000 DEF DIO4 01231000 DEF DIO5 01232000 DEF DIO6 01233000 DEF IRDBU 01234000 DEF DIO7 01235000 DEF DIO8 01236000 DEF LNDRQ 01237000 DEF DIO9 01238000 DEF DIO11 01239000 DEF DIO13 01240000 DEF DIO14 01241000 DEF DIO15 01242000 DEF DIO17 01243000 DEF IRD 01244000 DEF DIO19 01245000 DEF eMDIO22 01246000 DEF DIO24 01247000 DEF DIO25 01248000 DEF DIO26 01249000 DEF DIO27 01250000 DEF DIO28 01251000 DEF LNDRI 01252000 DEF DIO32 01253000 DEF DIO33 01254000 DEF DIO34 01255000 DEF DIO35 01256000 DEF DIO36 01257000 DEF DIO37 01258000 DEF DIO38 01259000 DEF DIO39 01260000 DEF DIO40 01261000 DEF DIO41 01262000 DEF DIO42 01262100 DEC -1 END OF TABLE INDICATOR 01263000 SKP 01264000 ******************************************************************** 01265000 * POINTERS TO CMND CH I/O INSTRUCTIONS * 01266000 ******************************************************************** 01267000 * 01268000 IOIC EQU * 01269000  DEF CFA 01270000 DEF CSA 01271000 DEF CIO1 01272000 DEF CIO2 01273000 DEF CIO3 01274000 DEF CIO4 01275000 DEF CIO05 01276000 DEF CIO06 01277000 DEF CIO07 01278000 DEF CIO08 01279000 DEF CIO09 01280000 DEF CIO10 01281000 DEF CIO11 01282000 DEF CIO12 01283000 DEF CIO13 01284000 DEF CIO14 01285000 DEF CIO15 01286000 DEF CIO16 01287000 DEF CIO17 01288000 DEF CIO18 01289000 DEF CIO19 01290000 DEF CIO20 01291000 DEF CIO21 01292000 DEF CIO22 01293000 DEC -1 END OF TABLE INDICATOR 012924000 * 01295000 ******************************************************************** 01296000 * POINTERS TO START OF EACH TEST * 01297000 ******************************************************************** 01298000 * 01299000 TSTD EQU * 01300000 DEF TST0 BASIC I/O TEST FOR DATA CH 01301000 DEF TST01 BASIC I/O TEST FOR CMND CH 01302000 DEF TST02 01303000 DEF TST03 01304000 DEF TST04 01305000 DEF TST05 01306000 DEF TST06 01307000 DEF TST07 01308000 DEF TST08 01309000 DEF TST09 01310000 DEF TST10 01311000 DEF TST11 01312000 DEF TST12 01313000 DEC -1 END OF TABLE INDICATOR 01314000 * 01315000 IOIP DEF IOIDD DUMMY POINTER FOR TCP 01316000 IOIDD EQU * 01317000 DEC -1 01318000 SKP 6W 01319000 ******************************************************************** 01320000 * HEADER MESSAGE * 01321000 ******************************************************************** 01322000 * 01323000 HDMS ASC 13,HP 2894 CARD READER PUNCH 01324000 ASC 6,DIAGNOSTIC/ 01325000 * 01326000 ******************************************************************** 01327000 * DATA PATTERNS * 01328000 ******************************************************************** 01329000 * 01330000 WCPA OCT 7777,0,7777 01331000 OCT 3777,5777,6777,7377,7577,7677 01332000 OCT 7737,7757,7767,7773,7775,7776 01333000 OCT 7777,0 01334000 OCT 4000,2000,1000,400,200,100 01335000 OCT 40,20,10,4,2,1,0 01336000 OCT 2525,5252,7777,2525,0 01337000 OCT 5252,2525,7777,5252,0 01338000 * 01339000 HPA OCT 4000,2000 01340000 OCT 1000,400,200,100,40,20,10,4,2,1 01341000 OCT 4400,4200,4100,4040,4020,4010,4004,4002 01342000 OCT 4001 01343000 OCT 2400,2200,2100,2040,2020,2010,2004,2002  01344000 OCT 2001 01345000 OCT 1200,1100,1040,1020,1010,1004,1002,1001 01346000 OCT 202,102,42,22,12,6 01347000 OCT 4202,4102,4042,4022,4012,4006 01348000 OCT 2202,2102,2042,2022,2012,2006,1400 01349000 OCT 1202,1102,1042,1022,1012,1006 01350000 OCT 0 01351000 * 01352000 SCHB OCT 0,7777,7777,0,0,7777,2525 01353000 OCT 5252,5252,2525,7777,0,0,7777 01354000 OCT 7777,0,5252,2525,2525,5252 01355000 * 01356000 FULL OCT 7777 01357000 * 01358000 ALMF OCT 3777,5777,6777,7377,7577,7677 01359000 OCT 7737,7757,7767,7773,7775,7776 01360000 * 01361000 ORG 1400B 01362000 ******************************************************************** 01363000 * PUNCH, PRINT, AND READ BUFFERS * 01364000 ******************************************************************** 01365000 * 01366000 PUBU BSS 80 01367000 PRBU BSS 80 01368000 RDBU BSS 80 + 01369000 SKP 01370000 ORG ZCEND LAST WORD IN CONTROL PROGRAM 01371000 ******************************************************************** 01372000 * TWO-CHANNEL CONFIGURATION SECTION * 01373000 ******************************************************************** 01374000 * 01375000 CON2 CLC INTP,C TURN I/O SYSTEM OFF 01376000 LIA SW GET SELECT CODE AND OPTIONS 01377000 STA USSC SAVE THEM 01378000 AND Z.77 ELIMINATE OPTIONS 01379000 LDB A 01380000 CMB,INB CHECK THAT SC > 7 01381000 ADB Z.7 FOR DATA CH (HI PRIOR) 01382000 SSB ? 01383000 JMP *+3 OK GO ON 01384000 HLT 73B NO 01385000 JMP CON2 TRY AGAIN 01386000 LDB IOIPD INITIALIZE TEST I/O 01387000 JSB ZISC INSTRUCTIONS FOR DATA CH 01388000 LDA USSC GET SELECT CODE 01389000 AND Z.77 FOR CMND CH (LO PRIOR) 01390000 INA 01391000 LDB IOIPC INITIALIZE TEST I/O 01392000 JSB ZISC INSTRUCTIONS FOR CMND CH 01393000 HLT 74B ALLOW OPERATOR TO CHANGE SWIT 01394000 JMP ZSTEX GO TO EXEC CONTROL SECTION 01395000 SKP 01396000 ******************************************************************** 01397000 * SUBROUTINES * 01398000 ******************************************************************** 01399000 * 01400000 *==================================================================* 01401000 * SUBROUTINES DFW AND CFW * 01402000 * THESE SUBROUTINES CHECK SETTING OF DATA CH AND CMND CH * 01403000 * FLAG WITHIN A TIME LIMIT BY INCREMENTING A-REGISTER * 01404000 *==================================================================* 01405000 * 01406000 * CALLING SEQUENCE: 01407000 * 01408000 * LDA X (X=-1,-2,...,-N;ABS(N) REPRESENTS NO. OF 01409000 * REQ.ROLLOVERS OF A) 01410000 * JSB DFW.,I (OR CFW.,I) 01411000 *P+1 ... RETURN IF FLAG SET IN TIME 01412000 *P+2 ... RETURN IF FLAG NOT SET IN TIME 01413000 * 01414000 DFW NOP 01415000 STA RNR STORE -REQ.NO.OF ROLLOVERS OF A 01416000 CLA 01417000 DFA SFC DATA IS FLAG SET? 01418000 JMP DFW,I YES,EXIT TO P+1  01419000 ISZ A NO; IS A-REG FULL? 01420000 JMP DFA NO 01421000 ISZ RNR YES;IS WAITING STILL REQ? 01422000 JMP DFA YES 01423000 ISZ DFW NO,EXIT TO P+2 01424000 JMP DFW,I 01425000 * 01426000 CFW NOP 01427000 STA RNR STORE -REQ.NO.OF ROLLOVERS OF A 01428000 CLA 01429000 CFA SFC CMND IS FLAG SET? 01430000 JMP CFW,I YES,EXIT TO P+1 01431000 ISZ A NO; IS A-REG FULL? 01432000 JMP CFA NO 01433000 ISZ RNR YES;IS WAITING STILL REQ? 01434000 JMP CFA YES 01435000 ISZ CFW NO,EXIT TO P+2 01436000 JMP CFW,I 01437000 SKP 01438000 *==================================================================* 01439000 * SUBROUTINES DSTW AND CSTW * 01440000 * THESE SUBROUTINES CHECK SETTING OF DATA CH AND CMND CH * 01441000 * STATUS BITS WITHIN A TIME LIMIT BY INCREMENTING ICNT COUNTER * 01442000 *==================================================================* 01443000 * } 01444000 * CALLING SEQUENCE: 01445000 * 01446000 * LDA X (X=-1,-2,...,-N;ABS(N) REPRESENTS NO. OF 01447000 * REQ.ROLLOVERS OF ICNT) 01448000 * LDB BITY (Y=0,1,2,...,15) 01449000 * JSB DSTW.,I (OR CSTW.,I) 01450000 *P+1 ... RETURN IF BITY SET TO 1 IN TIME 01451000 *P+2 ... RETURN IF BITY=0 (ERROR) 01452000 * 01453000 DSTW NOP 01454000 STA RNR STORE -REQ.NO.OF ROLLOVERS INCT 01455000 CLA 01456000 STA ICNT SET ICNT COUNTER TO 0 01457000 DSA LIA DATA GET STATUS 01458000 AND B AND BIT MASK 01459000 SZA IS BIT SET TO 1? 01460000 JMP DSTW,I YES,EXIT TO P+1(BIT=1) 01461000 ISZ ICNT NO;IS ICNT FULL? 01462000 JMP DSA NO 01463000 ISZ RNR YES;IS WAITING STILL REQ? 01464000 JMP DSA YES 01465000 ISZ DSTW NO,EXIT TO P+2(BIT=0) 01466000 JMP DSTW,I 01467000 * 01468000 CSTW NOP  01469000 STA RNR STORE -REQ.NO.OF ROLLOVERS INCT 01470000 CLA 01471000 STA ICNT SET ICNT COUNTER TO 0 01472000 CSA LIA CMND GET STATUS 01473000 AND B AND BIT MASK 01474000 SZA IS BIT SET TO 1? 01475000 JMP CSTW,I YES,EXIT TO P+1(BIT=1) 01476000 ISZ ICNT NO;IS ICNT FULL? 01477000 JMP CSA NO 01478000 ISZ RNR YES;IS WAITING STILL REQ? 01479000 JMP CSA YES 01480000 ISZ CSTW NO,EXIT TO P+2(BIT=0) 01481000 JMP CSTW,I 01482000 SKP 01483000 *==================================================================* 01484000 * SUBROUTINE STREP * 01485000 * THIS SUBROUTINE CHECKS SW REG BIT 7 AFTER MESSAGES WITH (*), * 01486000 * REPORTS CMND CH AND DATA CH STATUS (IF BIT 7 SET), AND HALTS * 01487000 *==================================================================* 01488000 * 01489000 * CALLING SEQUENCE: 01490000 * 01491000 * JSB STRE.,I 01492000 *P+1 ... RETURN 01493000 * o 01494000 STREP NOP 01495000 LDB B7 IS STATUS REPORT REQUIRED? 01496000 JSB SWRT,I 01497000 JMP *+2 YES,REPORT STATUS 01498000 JMP STREP,I NO,EXIT 01499000 JSB STA.,I REPORT STATUS 01500000 LDB B14 IS HALT AFT ST REP TO BE SUPPR? 01501000 JSB SWRT,I 01502000 JMP *+3 ON-YES,CONTINUE 01503000 LDB SAVB OFF-NO,RESTORE DATA ST IN B 01504000 OCT 106023 HALT 01505000 JMP STREP,I 01506000 SKP 01507000 *==================================================================* 01508000 * SUBROUTINE STA * 01509000 * THIS SUBROUTINE REPORTS CMND CH AND DATA CH STATUS * 01510000 * WITHOUT HALT * 01511000 *==================================================================* 01512000 * 01513000 * CALLING SEQUENCE: 01514000 * 01515000 * JSB STA.,I 01516000 *P+1 ... NORMAL RETURN 01517000 * 01518000 STA  NOP 01519000 CLA 01520000 STA SHIFT 01521000 LDA ONE INITIALIZE ASCII BUF FOR CMND 01522000 LDB D11 01523000 JSB AR2B.,I 01524000 DEF INSTA 01525000 DEF BUFC 01526000 DEF SHIFT 01527000 * 01528000 LDA ONE INITIALIZE ASCII BUF FOR DATA 01529000 LDB D11 01530000 JSB AR2B.,I 01531000 DEF INSTA 01532000 DEF BUFD 01533000 DEF SHIFT 01534000 * 01535000 CIO1 LIA CMND GET CMND CH STATUS 01536000 STA SAVA SAVE IT 01537000 DIO1 LIB DATA GET DATA CH STATUS 01538000 STB SAVB SAVE IT 01539000 * 01540000 LDB SAVA CONVERT CMND CH STATUS TO ASCII 01541000 LDA BUFCA 01542000 JSB SCAN.,I 015430 00 * 01544000 LDB SAVB CONVERT DATA CH STATUS TO ASCII 01545000 LDA BUFDA 01546000 JSB SCAN 01547000 * 01548000 LDA SAVA RETURN STATUS TO A AND B 01549000 LDB SAVB 01550000 JSB MSGC,I OUTPUT STATUS WITHOUT HALT 01551000 DEF H123 01552000 JMP STA,I 01553000 * 01554000 BUFDA DEF BUFD 01555000 BUFCA DEF BUFC 01556000 SKP 01557000 *==================================================================* 01558000 * SUBROUTINE SCAN * 01559000 * THIS SUBROUTINE CONVERTS A 16-BIT WORD INTO ASCII * 01560000 * (FORMAT IS:X XXX XXX XXX XXX XXX) * 01561000 *==================================================================* 01562000 * 01563000 * CALLING SEQUENCE: 01564000 * 01565000 * LDB WRD WORD TO SCAN AND CONVERT TO ASCII 01566000 * LDA ADDR ADDR OF ASCII BUFFER(MUST HAVE 11 POSITIONS) 01567000 * JSB SCAN.,I A 01568000 *P+1 ... RETURN 01569000 * 01570000 SCAN NOP 01571000 STA POIST STORE ASCII BUF ADDRESS 01572000 LDA M16 INITIALIZE ROTATION COUNTER 01573000 STA CNROT 01574000 NSTB SSB,RSS IS SIGN OF B=0? 01575000 JMP *+4 YES 01576000 LDA O400 NO,OR OCTAL 400 (LEFT H) 01577000 IOR POIST,I 01578000 STA POIST,I 01579000 ISZ CNROT IS 16 POSITIONS EXHAUSTED? 01580000 JMP *+2 NO 01581000 JMP SCAN,I YES,EXIT 01582000 ISZ POIST 01583000 RBL 01584000 SSB,RSS IS SIGN OF B=0? 01585000 JMP *+4 YES 01586000 LDA O400 NO,OR OTCTAL 400 (LEFT H) 01587000 IOR POIST,I 01588000 STA POIST,I 01589000 ISZ CNROT 01590000 RBL 01591000 SSB,RSS IS SIGN OF B=0? 01592000 JMP *+4 YES R 01593000 LDA ONE NO,OR 1 (RIGHT H) 01594000 IOR POIST,I 01595000 STA POIST,I 01596000 ISZ CNROT 01597000 ISZ POIST 01598000 RBL 01599000 JMP NSTB CONTINUE CONVERSION 01600000 SKP 01601000 ORG 4000B 01602000 *==================================================================* 01603000 * SUBROUTINE AR2BU * 01604000 * THIS SUBROUTINE TRANSFERS A SEQUENCE OF L CHARACTERS FROM * 01605000 * AN ARRAY "AR" INTO N POSITIONS OF A BUFFER "BU". * 01606000 * IF L>>>TRY TO PICK AGAIN>>>> 02227000 ICH JSB ERMS,I OUTPUT E113 02228000 DEF E113 02229000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02230000 NMCH JSB CLCV.,I INS COL&CRD NO.IN ERR MSG 02231000 LDA BCV2.,I 02232000 STA CLIF.,I 02233000 JSB CRC1.,I 02234000 LDA BCV2.,I 02235000 STA CRIF.,I 02236000 LDA COLCT 02237000 LDB WSIND 02238000 INB 02239000 JSB ERMS,I OUTPUT E101 02240000 DEF E101 " 02241000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02242000 ISZ IBUA 02243000 JMP IBUA,I ERROR,EXIT TO P+2 02244000 SKP 02245000 *==================================================================* 02246000 * SUBROUTINES CLCV, CRCV, AND CRCV1 * 02247000 * THESE SUBROUTINES CONVERT COLUMN NO. AND CARD NO. TO ASCII. * 02248000 * AFTER CALL, BCV2 CONTAINS 2 DIGITS IN ASCII * 02249000 *==================================================================* 02250000 * 02251000 * CALLING SEQUENCE: 02252000 * 02253000 * JSB CLCV.,I (OR CRCV.,I OR CRC1.,I) 02254000 *P+1 ... RETURN 02255000 * 02256000 CLCV NOP 02257000 CLE 02258000 LDA COLCT 02259000 LDB BCVA 02260000 JSB I2AS,I 02261000 JMP CLCV,I 02262000 * 02263000 CRCV NOP 02264000 CLE 02265000 LDA gWSIND 02266000 LDB BCVA 02267000 JSB I2AS,I 02268000 JMP CRCV,I 02269000 * 02270000 CRCV1 NOP 02271000 CLE 02272000 LDA WSIND 02273000 INA 02274000 LDB BCVA 02275000 JSB I2AS,I 02276000 JMP CRCV1,I 02277000 * 02278000 BCVA DEF BCV 02279000 * 02280000 BCV NOP 02281000 NOP 02282000 BCV2 NOP 02283000 SKP 02284000 *==================================================================* 02285000 * SUBROUTINES DST AND CST * 02286000 * THESE SUBROUTINES CHECK INDIVIDUAL STATUS BITS OF * 02287000 * DATA CH OR CMND CH * 02288000 *==================================================================* 02289000 * 02290000 * @ CALLING SEQUENCE: 02291000 * 02292000 * LDB BITY BIT OF INTEREST (Y=0,1,...,15) 02293000 * JSB DST.,I (OR CST.,I) 02294000 *P+1 ... RETURN IF BIT SET TO 1 02295000 *P+2 ... RETURN IF BIT SET TO 0 02296000 * 02297000 DST NOP 02298000 DIO9 LIA DATA GET STATUS 02299000 AND B AND BIT MASK 02300000 SZA,RSS IS BIT SET TO 1? 02301000 ISZ DST NO,EXIT TO P+2 (BIT=0) 02302000 JMP DST,I YES,EXIT TO P+1 (BIT=1) 02303000 * 02304000 CST NOP 02305000 CIO4 LIA CMND GET STATUS 02306000 AND B AND BIT MASK 02307000 SZA,RSS IS BIT SET TO 1? 02308000 ISZ CST NO,EXIT TO P+2 (BIT=0) 02309000 JMP CST,I YES,EXIT TO P+1 (BIT=1) 02310000 * 02311000 *==================================================================* 02312000 * SUBROUTINE WAIT * 02313000 * THIS SUBROUTINE IS ENTERED WHILE WAITING FOR INTERRUPT * 02314000 * ON DATA CH OR CMND CH * 02315000 *==================================================================* 02316000 * 02317000 * CALLING SEQUENCE: 02318000 * 02319000 * JSB WAIT 02320000 *P+1 ... ERROR RETURN 02321000 * 02322000 WAIT NOP 02323000 LDA M10 02324000 STA RNR 02325000 CLA 02326000 WW ISZ A IS A REG FULL? 02327000 JMP WW NO 02328000 ISZ RNR YES;IS WAITING STILL REQ? 02329000 JMP WW YES 02330000 JMP WAIT,I NO,ERROR EXIT 02331000 SKP 02332000 *==================================================================* 02333000 * SUBROUTINE TO EDIT E3031 TO E030 * 02334000 *==================================================================* 02335000 * 02336000 * CALLING SEQUENCE: 02337000 * 02338000 * JSB CSER.,I 02339000 *P+1 ... NORMAL RETURN ]J 02340000 * 02341000 CSER NOP 02342000 STA SAVA STORE EXP CMND ST 02343000 STB SAVB STORE ACT CMND ST 02344000 CLA EDIT ERR MSG TO E030 02345000 STA SHIFT 02346000 LDA D4 02347000 LDB D5 02348000 JSB AR2B.,I 02349000 DEF EE030 02350000 DEF E3031 02351000 DEF SHIFT 02352000 JSB ERST.,I 02353000 JMP CSER,I 02354000 * 02355000 *==================================================================* 02356000 * SUBROUTINE TO EDIT E3031 TO E031 * 02357000 *==================================================================* 02358000 * 02359000 * CALLING SEQUENCE: 02360000 * 02361000 * JSB DSER.,I 02362000 *P+1 ... NORMAL RETURN 02363000 * 02364000 DSER NOP X) 02365000 STA SAVA STORE EXP DATA ST 02366000 STB SAVB STORE ACT DATA ST 02367000 CLA EDIT ERR MSG TO E031 02368000 STA SHIFT 02369000 LDA D4 02370000 LDB D5 02371000 JSB AR2B.,I 02372000 DEF EE031 02373000 DEF E3031 02374000 DEF SHIFT 02375000 JSB ERST.,I 02376000 JMP DSER,I 02377000 SKP 02378000 *==================================================================* 02379000 * SUBROUTINE ERST * 02380000 * THIS SUBROUTINE CONVERTS STATUS TO ASCII AND OUTPUTS * 02381000 * ERROR MESSAGE. BEFORE CALL, SAVA MUST CONTAIN EXP STATUS * 02382000 * AND SAVB ACT STATUS * 02383000 *==================================================================* 02384000 * 02385000 * CALLING SEQUENCE: 02386000 * 02387000 * JSB ERST.,I 02388000 *P+1 ... NORMAL RETURN 02389000 *  02390000 ERST NOP 02391000 LDA ONE INIT BEX BUFF FOR EXP STATUS 02392000 LDB D11 02393000 JSB AR2B.,I 02394000 DEF INSTA 02395000 DEF BEX 02396000 DEF SHIFT 02397000 * 02398000 LDA ONE INIT BAC BUFF FOR ACT STATUS 02399000 LDB D11 02400000 JSB AR2B.,I 02401000 DEF INSTA 02402000 DEF BAC 02403000 DEF SHIFT 02404000 * 02405000 LDB SAVA CONVERT EXP STATUS TO ASCII 02406000 LDA BEX. 02407000 JSB SCAN.,I 02408000 * 02409000 LDB SAVB CONVERT ACT STATUS TO ASCII 02410000 LDA BAC. 02411000 JSB SCAN.,I 02412000 LDA SAVA RETURN STATUS TO A AND B 02413000 LDB SAVB 02414000 JSB ERMS,I OUTPUT E030 OR E031 { 02415000 DEF E3031 02416000 JMP ERST,I 02417000 SKP 02418000 *==================================================================* 02419000 * SUBROUTINES COCS AND CODS * 02420000 * THESE SUBROUTINES COMPARE CMND CH AND DATA CH STATUS * 02421000 * REPORT ERROR, IF NECESSARY * 02422000 *==================================================================* 02423000 * 02424000 * CALLING SEQUENCE: 02425000 * 02426000 * LDA ECSX (OR EDSX) LOAD EXP CMND (OR DATA) ST IN A 02427000 * JSB COCS.,I (OR CODS.,I) 02428000 *P+1 ... NORMAL RETURN 02429000 * 02430000 COCS NOP 02431000 CIO06 LIB CMND LOAD ACT CMND ST IN B 02432000 CPA B IS CMND STATUS OK? 02433000 JMP COCS,I YES,EXIT 02434000 JSB CSER.,I NO,REPORT ERROR 02435000 JMP COCS,I 02436000 * 02437000 CODS NOP 02438000 DIO32 LIB DATA LOAD ACT DATA ST IN B 02439000 CPA B IS DATA STATUS OK? 02440000 JMP CODS,I YES,EXIT 02441000 JSB DSER.,I NO,REPORT ERROR 02442000 JMP CODS,I 02443000 SKP 02444000 *==================================================================* 02445000 * SUBROUTINE ISCM * 02446000 * THIS SUBROUTINE INITIATES DEVICE FOR STACKER CONTROL MODE * 02447000 *==================================================================* 02448000 * 02449000 * CALLING SEQUENCE: 02450000 * 02451000 * JSB ISCM.,I 02452000 *P+1 ... NORMAL RETURN 02453000 * 02454000 ISCM NOP 02455000 CLF 0 02456000 DIO33 CLC DATA 02457000 CIO07 CLC CMND 02458000 CIO08 CLF CMND 02459000 DIO34 CLF DATA 02460000 LDA SCM 02461000 CIO09 OTA CMND 02462000 LDA CBIN 02463000 DIO35 OTA DATA 02464000 JMP ISCM,I s 02465000 * 02466000 *==================================================================* 02467000 * SUBROUTINE ISOM * 02468000 * THIS SUBROUTINE INITIATES DEVICE FOR STACKER OVERFLOW MODE * 02469000 *==================================================================* 02470000 * 02471000 * CALLING SEQUENCE: 02472000 * 02473000 * JSB ISOM.,I 02474000 *P+1 ... NORMAL RETURN 02475000 * 02476000 ISOM NOP 02477000 CLF 0 02478000 DIO36 CLC DATA 02479000 CIO10 CLC CMND 02480000 CIO11 CLF CMND 02481000 DIO37 CLF DATA 02482000 LDA ZERO 02483000 CIO12 OTA CMND 02484000 LDA CBIN 02485000 DIO38 OTA DATA 02486000 JMP ISOM,I 02487000 SKP 02488000 *==================================================================* 02489000 * SUBROUTINE DACO * 02490000 * THIS SUBROUTINE COMPARES EXPECTED AND ACTUAL DATA (AFTER * 02491000 * READ) AND REPORTS ERROR, IF NECESSARY. BEFORE CALL, PUBU * 02492000 * MUST CONTAIN EXP DATA AND RDBU MUST CONTAIN ACT DATA. * 02493000 * IF (BLI)=0, CARD IS TO BE BLANK; IF NOT, CARD IS NOT TO * 02494000 * BE BLANK. * 02495000 *==================================================================* 02496000 * 02497000 * CALLING SEQUENCE: 02498000 * 02499000 * JSB DACO.,I 02500000 *P+1 ... NORMAL RETURN 02501000 *P+2 ... ERROR RETURN 02502000 * 02503000 DACO NOP 02504000 LDA PUBUA 02505000 STA EXPO 02506000 LDA RDBUA 02507000 STA ACPO 02508000 LDA ONE SET COLCT TO 1 02509000 STA COLCT 02510000 LDA ACPO,I 02511000 AND B12 ISOLATE READ CHECK BIT 02512000 SZA,RSS READ CHECK ON? 02513000 JMP CAG NO 02514000 JSB ER,MS,I YES,OUTPUT E124 02515000 DEF E124 02516000 JSB STRE.,I IS STATUS REPORT REQUIRED? 02517000 CAG LDB EXPO,I 02518000 LDA ACPO,I 02519000 AND MSK12 02520000 CPA B IS EXP DATA EQUAL TO ACT DATA? 02521000 JMP *+2 YES 02522000 JMP DER NO 02523000 CND LDA COLCT 02524000 CPA D80 WAS 80 COLS COMPARED? 02525000 JMP DACO,I YES,EXIT TO P+1 02526000 ISZ COLCT NO 02527000 ISZ EXPO 02528000 ISZ ACPO 02529000 JMP CAG 02530000 DER STB EXDA STORE EXP DATA 02531000 STA ACDA STORE ACT DATA 02532000 LDA BLI 02533000 SZA IS CARD TO BE BLANK? 02534000 JMP NMS NON-ZERO,NO 02535000 JSB ERMS,I ZERO,YES,OUTPUT E107 02536000 DEF E107 02537000 JSB STRE.,I IS STATUS REPORT REQUIRED? 02538000 ISZ DACO 02539000  JMP DACO,I IF NON-BL,EXIT TO P+2 02540000 * 02541000 NMS JSB CLCV.,I INSERT COL NO.IN E110 02542000 LDA BCV2.,I 02543000 STA ECL.,I 02544000 JSB CRCV.,I 02545000 LDA BCV2.,I INSERT CRD NO IN E110 02546000 STA ECR.,I 02547000 * 02548000 CLA 02549000 STA SHIFT 02550000 LDA ONE INIT DEX BUFF FOR EXP DATA 02551000 LDB D11 02552000 JSB AR2B.,I 02553000 DEF INSTA 02554000 DEF DEX 02555000 DEF SHIFT 02556000 * 02557000 LDA ONE 02558000 LDB D11 INIT DAC BUFF FOR ACT DATA 02559000 JSB AR2B.,I 02560000 DEF INSTA 02561000 DEF DAC 02562000 DEF SHIFT 02563000 LDB EXDA CONVERT EXP DATA TO ASCII 025640N00 LDA DEX. 02565000 JSB SCAN.,I 02566000 * 02567000 LDB ACDA CONVERT ACT DATA TO ASCII 02568000 LDA DAC. 02569000 JSB SCAN.,I 02570000 * 02571000 LDA D2 EDIT E110 02572000 LDB D3 02573000 JSB AR2B.,I 02574000 DEF EXP 02575000 DEF DEX 02576000 DEF SHIFT 02577000 * 02578000 LDA D2 02579000 LDB D3 02580000 JSB AR2B.,I 02581000 DEF ACD 02582000 DEF DAC 02583000 DEF SHIFT 02584000 * 02585000 LDA COLCT LOAD COLCT IN A 02586000 LDB WSIND LOAD CRD NO IN B 02587000 * 02588000 JSB ERMS,I OUTPUT E110 i 02589000 DEF E110 02590000 JSB STRE.,I IS STATUS REPORT REQUIRED? 02591000 JMP CND GOTO TEST IF 80 COLS WERE COMPARED 02592000 SKP 02593000 *==================================================================* 02594000 * SUBROUTINE OCO * 02595000 * THIS SUBROUTINE CONVERTS 80 12-BIT DATA WORDS (COLUMNS) * 02596000 * OF A BUFFER (PUBU=BUF X, PRBU=BUF Y) FROM OCTAL TO ASCII * 02597000 * AND DISPLAYS THEM ON TTY. * 02598000 *==================================================================* 02599000 * 02600000 * CALLING SEQUENCE: 02601000 * 02602000 * LDA BUF. BUFFER POINTER(PUBUA OR PRBUA) 02603000 * JSB OCO.,I 02604000 *P+1 ... NORMAL RETURN 02605000 * 02606000 OCO NOP 02607000 STA PON STORE BUF POINTER(OF PUBU OR PRBU) 02608000 LDA M80 SET GREAT LOOP CNTR TO 80 02609000 STA GLO 02610000 RVA LDA M10 SET SMALL LOOP CNTR TO 10 02611000 STA SLO 02612000 LDA BUD. GET BUD POINTER 02613000 STA VAPO @ 02614000 NOC CLE CONVERT 1 COLUMN TO OCTAL 02615000 LDA PON,I 02616000 LDB BUOC. 02617000 JSB O2AS,I 02618000 LDA BU4M.,I 02619000 STA VAPO,I 02620000 ISZ VAPO 02621000 LDA BU4L.,I 02622000 STA VAPO,I 02623000 ISZ SLO WAS 10 COLS CONVERTED? 02624000 JMP *+2 NO 02625000 JMP DIS YES,GOTO DISPLAY 10 COLS 02626000 ISZ GLO INCREMENT GLO BY 1 02627000 ISZ PON INCREMENT PON BY 1 02628000 ISZ VAPO INCREMENT VAPO BY 2 02629000 ISZ VAPO 02630000 JMP NOC GOTO CONVERT NEXT COLUMN 02631000 DIS JSB MSGC,I DISPLAY 10 COLS ON TTY 02632000 DEF HBUD 02633000 ISZ GLO WAS 80 COLS CONV AND DISPL? 02634000 JMP *+2 NO,INC PON&RESET SLO&VAPO 02635000 JMP OCO,I YES,EXIT 02636000 ISZ PON 02637000 JMP RVA 02638000 * s 02639000 BUOC NOP 02640000 BU4M NOP 02641000 BU4L NOP 02642000 * 02643000 BUOC. DEF BUOC 02644000 BU4M. DEF BU4M 02645000 BU4L. DEF BU4L 02646000 SKP 02647000 *==================================================================* 02648000 * SUBROUTINE WSCH * 02649000 * THIS SUBROUTINE CHECKS CARD IN WAIT STATION,READY FOR * 02650000 * CMND, AND STACKER FULL CONDITIONS. ERROR MESSAGES ARE GIVEN * 02651000 * IF ANY OF THE CONDITIONS CAN NOT BE REMOVED. * 02652000 *==================================================================* 02653000 * 02654000 * CALLING SEQUENCE: 02655000 * 02656000 * JSB WSCH.,I 02657000 *P+1 ... ERROR RETURN 02658000 *P+2 ... NORMAL RETURN 02659000 * 02660000 WSCH NOP 02661000 LDB B4 02662000 JSB CST.,I IS CARD IN WAIT STATION? 02663000 JMP *+2 YES  02664000 JMP RDCH NO 02665000 JSB MSGH,I OUTPUT H050 02666000 DEF H050 02667000 LDB B4 02668000 JSB CST.,I IS CARD IN WAIT STATION? 02669000 JMP *+2 YES 02670000 JMP RDCH NO 02671000 JSB ERMS,I OUTPUT E051 02672000 DEF E051 02673000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02674000 JMP WSCH,I ERROR EXIT 02675000 RDCH LDB B5 02676000 JSB CST.,I READY FOR CMND? 02677000 JMP RDOK YES 02678000 LDB B15 NO 02679000 JSB DST.,I IS INPUT BUFFER FULL? 02680000 JMP TCLB YES 02681000 SFU LDB B8 NO 02682000 JSB DST.,I IS STACKER FULL? 02683000 JMP *+2 YES 02684000 JMP CMAN NO 02685000 JSB MSGH,I OUTPUT H044 02686000 DEF H044 02687000 LDB B8 02688000 JSB DST.,I IS STACKER FULL? W' 02689000 JMP *+2 YES 02690000 JMP RDCH NO 02691000 JSB ERMS,I OUTPUT E045 02692000 DEF E045 02693000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02694000 JMP WSCH,I ERROR EXIT 02695000 TCLB LDA B15 TRY TO CLEAR INPUT BUFFER 02696000 DIO41 OTA DATA 02697000 LDB B15 02698000 JSB DST.,I IS INPUT BUFFER FULL? 02699000 JMP *+2 YES,GOTO CLEAR MANUALLY 02700000 JMP SFU NO,GOTO CHECK STACKER COND 02701000 CMAN JSB MSGH,I OUTPUT H046 02702000 DEF H046 02703000 LDB B5 02704000 JSB CST.,I READY FOR CMND? 02705000 JMP RDOK YES 02706000 JSB ERMS,I NO,OUTPUT E047 02707000 DEF E047 02708000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02709000 JMP WSCH,I ERROR EXIT 02710000 RDOK ISZ WSCH 02711000 JMP WSCH,I NORMAL EXIT 02712000 SKP 02713000 *=============================б=====================================* 02714000 * SUBROUTINE PUX * 02715000 *==================================================================* 02716000 * 02717000 * CALLING SEQUENCE: 02718000 * 02719000 * JSB PUX.,I 02720000 *P+1 ... ERROR RETURN 02721000 *P+2 ... NORMAL RETURN 02722000 * 02723000 PUX NOP 02724000 JSB WSCH.,I IS WSCH CHECK OK? 02725000 JMP PUX,I NO,ERROR EXIT TO P+1 02726000 * 02727000 LDB B1 02728000 JSB CST.,I IS HOP-2 EMPTY? 02729000 JMP *+2 ON-YES 02730000 JMP PWS0 OFF-NO,OK 02731000 JSB MSGH,I OUTPUT H056 02732000 DEF H056 02733000 LDB B1 02734000 JSB CST.,I IS HOP-2 EMPTY? 02735000 JMP *+2 ON-YES,ERROR 02736000 JMP PWS0 OFF-NO,OK 02737000 JSB ERMS,I OUTPUT E057 02738000 DEF E057 } 02739000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02740000 JMP PUX,I ERROR EXIT TO P+1 02741000 * 02742000 PWS0 CLA 02743000 STA WSIND SET WSIND TO 0 02744000 ISZ PUX 02745000 JMP PUX,I NORMAL EXIT TO P+2 02746000 SKP 02747000 *==================================================================* 02748000 * SUBROUTINE RDX * 02749000 *==================================================================* 02750000 * 02751000 * CALLING SEQUENCE: 02752000 * 02753000 * JSB RDX.,I 02754000 *P+1 ... ERROR RETURN 02755000 *P+2 ... NORMAL RETURN 02756000 * 02757000 RDX NOP 02758000 JSB WSCH.,I IS WSCH CHECK OK? 02759000 JMP RDX,I NO,ERROR EXIT TO P+1 02760000 * 02761000 LDB B3285 YES,IS LOOP ON TEST,DIAG,OR SUPP 02762000 JSB SWRT,I INTERVENT,OR SUPP PUNCH REQ? 02763000 JMP *+3  ON-YES,NO MESSAGE 02764000 JSB MSGH,I OFF-NO,OUTPUT H062 02765000 DEF H062 02766000 * 02767000 LDB B9 02768000 JSB DST.,I IS HOP-1 EMPTY? 02769000 JMP *+2 ON-YES 02770000 JMP RWS0 OFF-NO,OK 02771000 JSB MSGH,I OUTPUT H063 02772000 DEF H063 02773000 LDB B9 02774000 JSB DST.,I IS HOP-1 EMPTY? 02775000 JMP *+2 ON-YES,ERROR 02776000 JMP RWS0 OFF-NO,OK 02777000 JSB ERMS,I OUTPUT E064 02778000 DEF E064 02779000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02780000 JMP RDX,I ERROR EXIT TO P+1 02781000 * 02782000 RWS0 CLA 02783000 STA WSIND SET WSIND TO 0 02784000 ISZ RDX 02785000 JMP RDX,I NORMAL EXIT TO P+2 02786000 SKP 02787000 *==================================================================* 02788000 *  SUBROUTINE PUY * 02789000 *==================================================================* 02790000 * 02791000 * CALLING SEQUENCE: 02792000 * 02793000 * JSB PUY.,I 02794000 *P+1 ... ERROR RETURN 02795000 *P+2 ... NORMAL RETURN 02796000 * 02797000 PUY NOP 02798000 LDA M3 02799000 STA EPU SET EPU CNTR TO -3 02800000 * 02801000 ISZ WSIND INCREMENT WSIND 02802000 * 02803000 CLA CLEAR PUBU FOR BL CARD COMPARE 02804000 STA SHIFT 02805000 LDA ZERO 02806000 LDB D80 02807000 JSB AR2B.,I 02808000 DEF ZERO 02809000 DEF PUBU 02810000 DEF SHIFT 02811000 * 02812000 TRAG LDB B4 02813000  JSB CST.,I IS CARD IN WAIT STATION? 02814000 JMP RPY ON-YES,OK 02815000 JSB ERMS,I OFF-NO,ERROR,OUTPUT E060 02816000 DEF E060 02817000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02818000 JMP PUY,I ERROR EXIT TO P+1 02819000 * 02820000 RPY LDB B5 02821000 JSB CST.,I READY FOR CMND? 02822000 JMP H2PY YES,OK 02823000 * 02824000 LDB B8 NO 02825000 JSB DST.,I IS STACKER FULL? 02826000 JMP SFP YES 02827000 JSB ERMS,I NO,OUTPUT E061 02828000 DEF E061 02829000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02830000 JMP PUY,I ERROR EXIT TO P+1 02831000 * 02832000 SFP JSB MSGH,I OUTPUT H044 02833000 DEF H044 02834000 * 02835000 LDB B8 02836000 JSB DST.,I IS STACKER FULL? 02837000 JMP *+2 YES,ERROR X02838000 JMP RPY NO,CHECK RDY COND AGAIN 02839000 * 02840000 JSB ERMS,I OUTPUT E045 02841000 DEF E045 02842000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02843000 JMP PUY,I ERROR EXIT TO P+1 02844000 * 02845000 H2PY LDB B1 02846000 JSB CST.,I IS HOP-2 EMPTY? 02847000 JMP *+2 ON-YES 02848000 JMP WCPY OFF-NO,OK 02849000 LDA WSIND IS LAST CARD IN W S? 02850000 CPA D12 02851000 JMP WCPY YES,DONT WORRY THAT HOP-2 EMPTY 02852000 JSB MSGH,I NO,OUTPUT H056 02853000 DEF H056 02854000 * 02855000 LDB B1 02856000 JSB CST.,I IS HOP-2 EMPTY? 02857000 JMP *+2 ON-YES,ERROR 02858000 JMP RPY OFF-NO,CHECK RDY COND AGAIN 02859000 * 02860000 JSB ERMS,I OUTPUT E057 02861000 DEF E057 02862000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED  02863000 JMP PUY,I ERROR EXIT TO P+1 02864000 * 02865000 WCPY JSB DACO.,I IS CRD IN W S BLANK? 02866000 JMP COPU YES,OK,PREP EXIT TO P+2 02867000 ISZ EPU NO,ERR,WAS IT LAST ATTEMPT? 02868000 JMP *+2 NO,CONTINUE 02869000 JMP PUY,I YES ERR EXIT TO P+1 02870000 JSB MSGH,I OUTPUT H114 02871000 DEF H114 02872000 JSB RB2.,I FEED&READ 1 BL CRD,OK? 02873000 JMP PUY,I NO,ERR EXIT TO P+1 02874000 JMP TRAG YES 02875000 COPU ISZ PUY 02876000 JMP PUY,I NORMAL EXIT TO P+2 02877000 SKP 02878000 *==================================================================* 02879000 * SUBROUTINE RDY * 02880000 *==================================================================* 02881000 * 02882000 * CALLING SEQUENCE: 02883000 * 02884000 * JSB RDY.,I 02885000 *P+1 ... ERROR RETURN 02886000 *P+2 ... NORMAL RETURN 02887000 * ! 02888000 RDY NOP 02889000 * 02890000 ISZ WSIND INCREMENT WSIND 02891000 * 02892000 LDB B4 02893000 JSB CST.,I IS CARD IN WAIT STATION? 02894000 JMP RRY ON-YES,OK 02895000 JSB ERMS,I OFF-NO,ERR,OUTPUT E060 02896000 DEF E060 02897000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02898000 JMP RDY,I ERROR EXIT TO P+1 02899000 * 02900000 RRY LDB B5 02901000 JSB CST.,I READY FOR CMND? 02902000 JMP H1RY YES,OK 02903000 * 02904000 LDB B8 NO 02905000 JSB DST.,I IS STACKER FULL? 02906000 JMP SFR YES 02907000 JSB ERMS,I OUTPUT E061 02908000 DEF E061 02909000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02910000 JMP RDY,I ERROR EXIT TO P+1 02911000 * 02912000 SFR JSB MSGH,I OUTPUT H044  02913000 DEF H044 02914000 * 02915000 LDB B8 02916000 JSB DST.,I IS STACKER FULL? 02917000 JMP *+2 YES,ERROR 02918000 JMP RRY NO,CHECK RDY COND AGAIN 02919000 * 02920000 JSB ERMS,I OUTPUT E045 02921000 DEF E045 02922000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02923000 JMP RDY,I ERROR EXIT TO P+1 02924000 * 02925000 H1RY LDB B9 02926000 JSB DST.,I IS HOP-1 EMPTY? 02927000 JMP *+2 ON-YES 02928000 JMP WCRY OFF-NO,OK 02929000 LDA WSIND IS LAST CARD IN W S? 02930000 CPA D12 02931000 JMP WCRY YES,DONT WORRY THAT HOP-1 EMPTY 02932000 JSB MSGH,I NO,OUTPUT H063 02933000 DEF H063 02934000 LDB B9 02935000 JSB DST.,I IS HOP-1 EMPTY? 02936000 JMP *+2 ON-YES,ERROR 02937000 JMP RRY OFF-NO,CHECK RDY COND AGAIN 02938000 * 02939000 JSB ERMS,I OUTPUT E064 02940000 DEF E064 02941000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 02942000 JMP RDY,I ERROR EXIT TO P+1 02943000 * 02944000 WCRY JSB DACO.,I IS CRD IN W S OK(EXP=ACT)? 02945000 NOP YES,OK,EXIT TO P+2 02946000 ISZ RDY NO,EXIT TO P+2 ANYWAY 02947000 JMP RDY,I 02948000 * 02949000 *==================================================================* 02950000 * SUBROUTINE CSM * 02951000 * THIS SUBROUTINE CHECKS IF THE DEVICE LAST OPERATION WAS IN * 02952000 * STACKER CONTROL MODE. IF NOT, CLEAR IS REQUESTED. * 02953000 *==================================================================* 02954000 * 02955000 * CALLING SEQUENCE: 02956000 * 02957000 * JSB CSM.,I 02958000 *P+1 ... NORMAL RETURN 02959000 * 02960000 CSM NOP 02961000 CIO22 LIA CMND GET CONTROL BITS 02962000 AND B12 h 02963000 SZA WAS DEV IN STCK CNTRL MODE? 02964000 JMP CSM,I YES,OK,EXIT 02965000 JSB ISCM.,I NO,INIT DEV F ST CNTRL MODE 02966000 JSB MSGH,I OUTPUT H053 02967000 DEF H053 02968000 JMP CSM,I EXIT 02969000 SKP 02970000 *==================================================================* 02971000 * ACTION SUBROUTINES * 02972000 * THESE SUBROUTINES REALIZE ALL THE OPERATIONS OF THE * 02973000 * PRINTING READER PUNCH USED IN THIS DIAGNOSTIC. SYMBOLS * 02974000 * IN THE NAME OF EACH SUBROUTINE DESCRIBE EACH OPERATION * 02975000 * AS FOLLOWS: * 02976000 * R...READ * 02977000 * P...PUNCH * 02978000 * Q...READ AND PUNCH * 02979000 * W...PRINT (WRITE) FROM OUTPUT BUFFER * 02980000 * S...PRINT (SEPARATE PRINT DATA) FROM PRINT BUFFER * 02981000 * F...FEED (NO READ, PUNCH, OR PRINT) * 02982000 * * 02983000 * A...USE HOPPER 1 * 02984000 * B...USE HOPPER 2 * 02985000 * I...INHIBIT INPUT FEED * 02986000 * * 02987000 * 0...STACKER OVER FLOW MODE * 02988000 * 1...USE STACKER 1 * 02989000 * 2...USE STACKER 2 * 02990000 *==================================================================* 02991000 * 02992000 * CALLING SEQUENCE: 02993000 * 02994000 * JSB VXYZ.,I (VXYZ STAND FOR SYMBOLS EXPLAINED ABOVE) 02995000 *P+1 ... ERROR RETURN 02996000 *P+2 ... NORMAL RETURN 02997000 * 02998000 RB2 NOP 02999000 LDA H2S2 03000000 CLB 03001000 JSB DODO.,I 03002000 DEC 80 03003000 JMP RB2,I 03004000 ISZ RB2 03005000 JMP RB2,I 03006000 * 03007000 QWB2 NOP 03008000 LDA QWB2K 03009000 CLB 03010000 JSB DODO.,I 03011000 DEC 80 03012000 JMP QWB2,IG 03013000 ISZ QWB2 03014000 JMP QWB2,I 03015000 * 03016000 PWI2 NOP 03017000 LDA QWB2K 03018000 LDB INHIF 03019000 JSB DODO.,I 03020000 DEC 0 03021000 JMP PWI2,I 03022000 ISZ PWI2 03023000 JMP PWI2,I 03024000 * 03025000 RA1 NOP 03026000 LDA SCM 03027000 CLB 03028000 JSB DODO.,I 03029000 DEC 80 03030000 JMP RA1,I 03031000 ISZ RA1 03032000 JMP RA1,I 03033000 * 03034000 FI1 NOP 03035000 LDA SCM 03036000 LDB INHIF 03037000 JS]B DODO.,I 03038000 DEC 0 03039000 JMP FI1,I 03040000 ISZ FI1 03041000 JMP FI1,I 03042000 * 03043000 * 03044000 PI2 NOP 03045000 LDA PI2K 03046000 LDB INHIF 03047000 JSB DODO.,I 03048000 DEC 0 03049000 JMP PI2,I 03050000 ISZ PI2 03051000 JMP PI2,I 03052000 * 03053000 WI2 NOP 03054000 LDA WI2K 03055000 LDB INHIF 03056000 JSB DODO.,I 03057000 DEC 0 03058000 JMP WI2,I 03059000 ISZ WI2 03060000 JMP WI2,I 03061000 * 03062000 zPSI2 NOP 03063000 LDA PSI2K 03064000 LDB INHIF 03065000 JSB DODO.,I 03066000 DEC 0 03067000 JMP PSI2,I 03068000 ISZ PSI2 03069000 JMP PSI2,I 03070000 * 03071000 RA0 NOP 03072000 CLA 03073000 CLB 03074000 JSB DODO.,I 03075000 DEC 80 03076000 JMP RA0,I 03077000 ISZ RA0 03078000 JMP RA0,I 03079000 * 03080000 FI0 NOP 03081000 CLA 03082000 LDB INHIF 03083000 JSB DODO.,I 03084000 DEC 0 03085000 JMP FI0,I 03086000 ISZ FI0 039V087000 JMP FI0,I 03088000 * 03089000 RB0 NOP 03090000 LDA H2SOM 03091000 CLB 03092000 JSB DODO.,I 03093000 DEC 80 03094000 JMP RB0,I 03095000 ISZ RB0 03096000 JMP RB0,I 03097000 * 03098000 * 03099000 FI2 NOP 03100000 LDA H2S2 03101000 LDB INHIF 03102000 JSB DODO.,I 03103000 DEC 0 03104000 JMP FI2,I 03105000 ISZ FI2 03106000 JMP FI2,I 03107000 * 03108000 QB2 NOP 03109000 LDA PI2K 03110000 CLB 03111000 JSB DODO.,I r 03112000 DEC 80 03113000 JMP QB2,I 03114000 ISZ QB2 03115000 JMP QB2,I 03116000 * 03117000 RWB2 NOP 03118000 LDA WI2K 03119000 CLB 03120000 JSB DODO.,I 03121000 DEC 80 03122000 JMP RWB2,I 03123000 ISZ RWB2 03124000 JMP RWB2,I 03125000 * 03126000 QSB2 NOP 03127000 LDA PSI2K 03128000 CLB 03129000 JSB DODO.,I 03130000 DEC 80 03131000 JMP QSB2,I 03132000 ISZ QSB2 03133000 JMP QSB2,I 03134000 SKP 03135000 ******************************************************************** 03136000 * MESSAGES ) * 03137000 ******************************************************************** 03138000 * 03139000 ZBMA0 ASC 13, FOR DATA CH (HI PRIOR)/ 03140000 ZBMA1 ASC 13, FOR CMND CH (LO PRIOR)/ 03141000 E3031 ASC 5,E03X XXXX 03142000 ASC 5,STATUS ERR 03143000 OCT 6412 03144000 ASC 4, EXP: 03145000 BEX BSS 11 03146000 OCT 6412 03147000 ASC 4, ACT: 03148000 BAC BSS 11 03149000 ASC 1,/ 03150000 EE030 ASC 5,E030 CMND 03151000 EE031 ASC 5,E031 DATA 03152000 H032 ASC 18,H032 CLEAR DEVICE,STACKERS,HOPPERS; 03153000 ASC 11,PRESS STOP,START,RUN/ 03154000 H033 ASC 10,H033 PRESS STOP,RUN/ 03155000 H034 ASC 11,H034 PRESS START,RUN/ 03156000 H035 ASC 17,H035 LOAD HOP-1 WITH 1 BLANK CARD; 03157000 ASC 12,PRESS STOP 2X,START,RUN/ 03158000 H036 ASC 17,H036 LOAD HOP-2 WITH 1 BLANK CARD; 03159000 ASC 12,PRESS STOP 2X,START,RUN/ 03160000 H037 ASC 16,H037 STACKER CONTROL MODE CHECK 03161000 ASC 4,FOLLOWS/ 8 03162000 H040 ASC 16,H040 STACKER OVERFLOW MODE CHECK 03163000 ASC 5, FOLLOWS/ 03164000 H041 ASC 19,H041 EXTEND STACK-1 ARM TO LIMIT;PRESS 03165000 ASC 3, RUN/ 03166000 H042 ASC 19,H042 EXTEND STACK-2 ARM TO LIMIT;PRESS 03167000 ASC 3, RUN/ 03168000 H043 ASC 13,H043 PRESS STOP,START,RUN/ 03169000 H044 ASC 15,H044 STACKER FULL,UNLOAD;PRESS 03170000 ASC 8, STOP,START,RUN/ 03171000 E045 ASC 15,E045 STATUS SHOWS STACKER FULL 03172000 ASC 9, AFTER UNLOAD(*)/ 03173000 H046 ASC 18,H046 NOT READY FOR CMND;CLEAR DEVICE 03174000 ASC 11,,PRESS STOP,START,RUN/ 03175000 E047 ASC 20,E047 NOT READY FOR CMND AFTER CLEAR(*)/ 03176000 H050 ASC 13,H050 CARD IN WAIT STATION; 03177000 ASC 17,CLEAR DEVICE,PRESS STOP,START,RUN/ 03178000 E051 ASC 19,E051 STATUS SHOWS CARD IN WAIT STATION 03179000 ASC 8,AFTER CLEAR(*)/ 03180000 H052 ASC 17,H052 LOAD HOP-1&2 WITH BLANK CARDS 03181000 ASC 13,;PRESS STOP 2X,START,RUN/ 03182000 H053 ASC 19,H053 CLEAR DEVICE,STACKERS;PRESS STOP, 03183000 ASC 5,START,RUN/ 03184000 E054 ASC 11,E054 TEST ABORTED(*)/ 03185000 H055 ASC 10,H055 CLEAR STACKERS; 03186000 ASC 11,PRESS STOP,START,RUN/ R 03187000 H056 ASC 19,H056 HOP-2 EMPTY,LOAD WITH BLANK CARDS 03188000 ASC 13,;PRESS STOP 2X,START,RUN/ 03189000 E057 ASC 19,E057 STATUS SHOWS HOP-2 EMPTY AFTER LO 03190000 ASC 3,AD(*)/ 03191000 E060 ASC 19,E060 NO CARD ARRIVED IN WAIT STATION(* 03192000 ASC 1,)/ 03193000 E061 ASC 18,E061 NO RETURN TO READY FOR CMND(*)/ 03194000 H062 ASC 19,H062 LOAD HOP-1 WITH TEST CARDS;PRESS 03195000 ASC 9,STOP 2X,START,RUN/ 03196000 H063 ASC 19,H063 HOP-1 EMPTY,LOAD WITH TEST CARDS; 03197000 ASC 12,PRESS STOP 2X,START,RUN/ 03198000 E064 ASC 19,E064 STATUS SHOWS HOP-1 EMPTY AFTER LO 03199000 ASC 3,AD(*)/ 03200000 E065 ASC 18,E065 NOT READY FOR CMND BEFORE FEED 03201000 ASC 4,REQ(*)/ 03202000 E066 ASC 19,E066 LOAD OUT BUFF ERR; DATA FLAG NOT 03203000 ASC 4,SET(COL: 03204000 CLOUF BSS 1 03205000 ASC 3,, CRD: 03206000 CROUF BSS 1 03207000 ASC 3,)(*)/ 03208000 E067 ASC 19,E067 LOAD PRINT BUFF ERR; DATA FLAG NO 03209000 ASC 5,T SET(COL: 03210000 CLPRF BSS 1 03211000 ASC 3,, CRD:  03212000 CRPRF BSS 1 03213000 ASC 3,)(*)/ 03214000 E100 ASC 19,E100 IN BUFF FULL (CMND FLAG) NOT SET( 03215000 ASC 2,*)/ 03216000 E101 ASC 19,E101 UNLOAD IN BUFF ERR; DATA FLAG NOT 03217000 ASC 5, SET (COL: 03218000 CLINF BSS 1 03219000 ASC 3,, CRD: 03220000 CRINF BSS 1 03221000 ASC 3,)(*)/ 03222000 E102 ASC 19,E102 LOAD OUT BUFF ERR;NO INT ON DATA 03223000 ASC 4,CH (COL: 03224000 ICLO BSS 1 03225000 ASC 3,, CRD: 03226000 ICRO BSS 1 03227000 ASC 3,)(*)/ 03228000 E103 ASC 19,E103 LOAD PRINT BUFF ERR;NO INT ON DAT 03229000 ASC 5,A CH (COL: 03230000 ICLP BSS 1 03231000 ASC 3,, CRD: 03232000 ICRP BSS 1 03233000 ASC 3,)(*)/ 03234000 E104 ASC 19,E104 UNLOAD IN BUFF ERR;NO INT ON DATA 03235000 ASC 4, CH(COL: 03236000 ICLI BSS 1 ' 03237000 ASC 3,,CRD: 03238000 ICRI BSS 1 03239000 ASC 3,)(*)/ 03240000 E105 ASC 18,E105 IN BUFF FULL NOT SET;NO INT ON 03241000 ASC 6,CMND CH(*)/ 03242000 E106 ASC 15,E106 UNEXP INT ON CMND CH(*)/ 03243000 E107 ASC 20,E107 NON-BLANK CARD IN WAIT STATION(*)/ 03244000 E110 ASC 13,E110 DATA COMPARE ERR(COL: 03245000 ECL BSS 1 03246000 ASC 3,,CRD: 03247000 ECR BSS 1 03248000 ASC 2,)(*) 03249000 OCT 6412 03250000 ASC 1, 03251000 DEX BSS 11 03252000 OCT 6412 03253000 ASC 1, 03254000 DAC BSS 11 03255000 ASC 1,/ 03256000 EXP ASC 3, EXP: 03257000 ACD ASC 3, ACT: 03258000 E111 ASC 11,E111 PICK FAILURE(*)/ 03259000 H112 ASC 16,H112 CORRECT HOP COND,CLEAR DEV; 03260000 ASC 11,PRESS STOP,START,RUN/ 03261000 E113 ASC 10,E113 INPUT CHECK(*)/ 03262000 H114 ASC 16,H114 CLEAR DEV,REMOVE NON-BL CRD 03263000 ASC 11,;PRESS STOP,START,RUN/ 03264000 H115 ASC 15,H115 OPERATOR DESIGN FOLLOWS/ 03265000 H116 ASC 4,H116 @/ 03266000 H117 ASC 8,H117 BUFFER X:/ 03267000 H120 ASC 8,H120 BUFFER Y:/ 03268000 HBUD ASC 2, 03269000 BUD ASC 18,AAAA AAAA AAAA AAAA AAAA AAAA 03270000 ASC 12,AAAA AAAA AAAA AAAA/ 03271000 H121 ASC 13,H121 ORDER NOT RECOGNIZED/ 03272000 E122 ASC 14,E122 ERR IN ORDER EXECUTION/ 03273000 H123 ASC 6,H123 STATUS 03274000 OCT 6412 03275000 ASC 4, CMND: 03276000 BUFC BSS 11 03277000 OCT 6412 03278000 ASC 4, DATA: 03279000 BUFD BSS 11 03280000 ASC 1,/ 03281000 E124 ASC 10,E124 READ CHECK(*)/ 03282000 C0 ASC 2,:0/ 03283000 C1 ASC 2,:1/ 03284000 C2 ASC 2,:2/ 03285000 C3 ASC 2,:3/ 03286000 C4 ASC ,2,:4/ 03287000 C5 ASC 2,:5/ 03288000 C6 ASC 2,:6/ 03289000 C7 ASC 2,:7/ 03290000 C10 ASC 2,:10/ 03291000 C11 ASC 2,:11/ 03292000 SKP 03293000 ******************************************************************** 03294000 * TEST 0 * 03295000 ******************************************************************** 03296000 * 03297000 TST0 NOP 03298000 JSB TS00.,I DO BASIC I/O FOR DATA CH 03299000 JSB MSGC,I APPEND IDENTIFICATION 03300000 DEF ZBMA0 OF DATA CH (HI PRIOR) 03301000 JMP TST0,I 03302000 * 03303000 ******************************************************************** 03304000 * TEST 1 * 03305000 ******************************************************************** 03306000 * 03307000 TST01 EQU * 03308000 NOP 03309000 LDA SCM 03310000 CIO13 OTA CMND BEGIN WITH STACK CNTRL MODE 03311000 8 LDA INHIF 03312000 IOR CLBF 03313000 DIO39 OTA DATA 03314000 LDA USSC GET CELL LOCATION 03315000 AND SCMSK OF CMND CH (LO PRIOR) 03316000 INA 03317000 JSB ZBIO.,I DO BASIC I/O FOR CMND CH 03318000 JSB MSGC,I APPEND IDENTIFICATION 03319000 DEF ZBMA1 OF CMND CH (LO PRIOR) 03320000 JMP TST01,I 03321000 * 03322000 ******************************************************************** 03323000 * TEST 2 * 03324000 ******************************************************************** 03325000 * 03326000 TST02 EQU * 03327000 NOP 03328000 LDB B8A12 03329000 JSB SWRT,I IS BIT 8 OR 12 ON? 03330000 JMP TST02,I YES,ELIM OPER INTERV (EXIT) 03331000 JSB ISCM.,I NO,CONT,INIT DEV FOR STACK C MOD 03332000 CIO18 STC CMND,C 03333000 CIO19 CLC CMND,C 03334000 *------------------------------------------------------------------* 03335000 * SUBTEST 1 * 03336-6000 *------------------------------------------------------------------* 03337000 JSB MSGH,I OUTPUT H032 03338000 DEF H032 03339000 LDA ECS1 LOAD EXP CMND STAT IN A 03340000 JSB COCS.,I COMPARE CMND STATUS 03341000 * 03342000 LDA EDS1 LOAD EXP DATA STATUS IN A 03343000 JSB CODS.,I COMPARE DATA STATUS 03344000 *------------------------------------------------------------------* 03345000 * SUBTEST 2 * 03346000 *------------------------------------------------------------------* 03347000 JSB MSGH,I OUTPUT H033 03348000 DEF H033 03349000 LDA ECS2 LOAD EXP CMND STATUS IN A 03350000 JSB COCS.,I COMPARE CMND STATUS 03351000 * 03352000 LDA EDS1 LOAD EXP DATA STATUS IN A 03353000 JSB CODS.,I COMPARE DATA STATATUS 03354000 *------------------------------------------------------------------* 03355000 * SUBTEST 3 * 03356000 *------------------------------------------------------------------* 03357000 JSB MSGH,I OUTPUT H034 03358000 DEF H034 03359000 LDA ECS1 LOAD EXP CMND STATUS IN A 03360000 JSB COCS.,I COMPARE CMND STATUS \# 03361000 * 03362000 LDA EDS1 LOAD EXP DATA STATUS IN A 03363000 JSB CODS.,I COMPARE DATA STATUS 03364000 *------------------------------------------------------------------* 03365000 * SUBTEST 4 * 03366000 *------------------------------------------------------------------* 03367000 JSB MSGH,I OUTPUT H035 03368000 DEF H035 03369000 LDA ECS1 LOAD EXP CMND STATUS IN A 03370000 JSB COCS.,I COMPARE CMND STATUS 03371000 * 03372000 LDA EDS4 LOAD EXP DATA STATUS IN A 03373000 JSB CODS.,I COMPARE DATA STATUS 03374000 *------------------------------------------------------------------* 03375000 * SUBTEST 5 * 03376000 *------------------------------------------------------------------* 03377000 JSB MSGH,I OUTPUT H036 03378000 DEF H036 03379000 LDA ECS6 LOAD EXP CMND STATUS IN A 03380000 JSB COCS.,I COMPARE CMND STATUS 03381000 * 03382000 LDA EDS4 LOAD EXP DATA STATUS IN A 03383000 JSB CODS.,I COMPARE DATA STATUS 03384000 *------------------------------------------------------------------* 03385000 * SUBTEST 6 ^l * 03386000 *------------------------------------------------------------------* 03387000 JSB MSGC,I OUTPUT H037 03388000 DEF H037 03389000 * 03390000 JSB MSGH,I OUTPUT H041 03391000 DEF H041 03392000 LDA EDS2 LOAD EXP DATA STATUS IN A 03393000 JSB CODS.,I COMPARE DATA STATUS 03394000 * 03395000 LDA ECS3 LOAD EXP CMND STATUS IN A 03396000 JSB COCS.,I COMPARE CMND STATUS 03397000 *------------------------------------------------------------------* 03398000 * SUBTEST 7 * 03399000 *------------------------------------------------------------------* 03400000 JSB MSGH,I OUTPUT H043 03401000 DEF H043 03402000 * 03403000 JSB MSGH,I OUTPUT H042 03404000 DEF H042 03405000 LDA EDS2 LOAD EXP DATA STATUS IN A 03406000 JSB CODS.,I COMPARE DATA STATUS 03407000 * 03408000 LDA ECS3 LOAD EXP CMND STATUS IN A 03409000 JSB COCS.,I COMPARE CMND STATUS 03410000 *---------------------------------------------------h---------------* 03411000 * SUBTEST 8 * 03412000 *------------------------------------------------------------------* 03413000 JSB MSGH,I OUTPUT H043 03414000 DEF H043 03415000 * 03416000 JSB ISOM.,I INIT DEV FOR STACK OVERFL MODE 03417000 CIO20 STC CMND,C 03418000 CIO21 CLC CMND,C 03419000 JSB MSGC,I OUTPUT H040 03420000 DEF H040 03421000 * 03422000 JSB MSGH,I OUTPUT H041 03423000 DEF H041 03424000 LDA EDS4 LOAD EXP DATA ST IN A 03425000 JSB CODS.,I COMPARE DATA ST 03426000 * 03427000 LDA ECS5 LOAD EXP CMND ST IN A 03428000 JSB COCS.,I COMPARE CMND ST 03429000 *------------------------------------------------------------------* 03430000 * SUBTEST 9 * 03431000 *------------------------------------------------------------------* 03432000 JSB MSGH,I OUTPUT H042 03433000 DEF H042 03434000 LDA EDS2 LOAD EXP DATA ST IN A 03435000 JSB CODS.,I COMPARE CMND STATUS B 03436000 * 03437000 LDA ECS4 LOAD EXP CMND ST IN A 03438000 JSB COCS.,I COMPARE CMND ST 03439000 * 03440000 JSB MSGH,I OUTPUT H043 03441000 DEF H043 03442000 * 03443000 LDA EDS4 LOAD EXP DATA ST IN A 03444000 JSB CODS.,I COMPARE DATA ST 03445000 * 03446000 LDA ECS5 LOAD EXP CMND ST IN A 03447000 JSB COCS.,I COMPARE CMND ST 03448000 * 03449000 JMP TST02,I EXIT FROM TEST 2 03450000 SKP 03451000 ******************************************************************** 03452000 * TEST 3 * 03453000 ******************************************************************** 03454000 * 03455000 TST03 EQU * 03456000 NOP 03457000 LDB B8A12 IS BIT 8 OR 12 ON? 03458000 JSB SWRT,I 03459000 JMP TST03,I YES,ELIM OPER INTERV(EXIT) 03460000 JSB WSCH.,I ARE INITIAL CONDo"ITIONS OK? 03461000 JMP ET03 NO 03462000 *------------------------------------------------------------------* 03463000 * SUBTEST 1 * 03464000 *------------------------------------------------------------------* 03465000 JSB ISOM.,I YES,INIT DEV FOR STACK OVERFL M 03466000 * 03467000 JSB MSGH,I OUTPUT H052 03468000 DEF H052 03469000 JSB MSGC,I OUTPUT H040 03470000 DEF H040 03471000 LDA ECS5 03472000 JSB COCS.,I 03473000 LDA EDS4 03474000 JSB CODS.,I 03475000 LDA M5 03476000 STA CACO 03477000 NE3C CLA 03478000 STA MOI DIRECT DODO TO WAIT-FOR-FLAG M 03479000 JSB RA0.,I 03480000 JMP EC03 03481000 LDA ECS10 03482000 JSB COCS.,I 03483000 * 03484000 LDA EDS4 03485000 JSB CODS.,I 7W 03486000 * 03487000 ISZ CACO WAS IT 5TH CARD? 03488000 JMP NE3C NO 03489000 JSB FI0.,I YES 03490000 JMP EC03 03491000 * 03492000 LDA ECS5 03493000 JSB COCS.,I 03494000 LDA EDS4 03495000 JSB CODS.,I 03496000 * 03497000 JSB MSGH,I OUTPUT H041 03498000 DEF H041 03499000 * 03500000 LDA ECS5 03501000 JSB COCS.,I 03502000 LDA EDS4 03503000 JSB CODS.,I 03504000 LDA M5 03505000 STA CACO 03506000 NE3D JSB RB0.,I 03507000 JMP EC03 03508000 * 03509000 LDA ECS12 03510000 JSB COCS.,I `v 03511000 * 03512000 LDA EDS4 03513000 JSB CODS.,I 03514000 * 03515000 ISZ CACO WAS IT 5TH CARD? 03516000 JMP NE3D NO 03517000 JSB FI0.,I YES 03518000 JMP EC03 03519000 * 03520000 LDA ECS5 03521000 JSB COCS.,I 03522000 LDA EDS4 03523000 JSB CODS.,I 03524000 *------------------------------------------------------------------* 03525000 * SUBTEST 2 * 03526000 *------------------------------------------------------------------* 03527000 * 03528000 EC03 JSB ISCM.,I INIT DEV FOR STACK CNTRL MODE 03529000 JSB MSGH,I OUTPUT H053 03530000 DEF H053 03531000 JSB MSGC,I OUTPUT H037 03532000 DEF H037 03533000 * 03534000 LDA ECS6 03535000 JSB CO$CS.,I 03536000 * 03537000 LDA EDS4 03538000 JSB CODS.,I 03539000 * 03540000 LDA M5 03541000 STA CACO 03542000 NE3A JSB RA1.,I 03543000 JMP ET03 03544000 LDA ECS7 03545000 JSB COCS.,I 03546000 * 03547000 LDA EDS4 03548000 JSB CODS.,I 03549000 * 03550000 ISZ CACO WAS IT 5TH CARD? 03551000 JMP NE3A NO 03552000 JSB FI1.,I YES 03553000 JMP ET03 03554000 * 03555000 LDA ECS6 03556000 JSB COCS.,I 03557000 * 03558000 LDA EDS4 03559000 JSB CODS.,I 03560000  SKP 03561000 *------------------------------------------------------------------* 03562000 * SUBTEST 3 * 03563000 *------------------------------------------------------------------* 03564000 * 03565000 LDA ECS6 03566000 JSB COCS.,I 03567000 * 03568000 LDA EDS4 03569000 JSB CODS.,I 03570000 * 03571000 LDA M5 03572000 STA CACO 03573000 NE3B JSB RB2.,I 03574000 JMP ET03 03575000 LDA ECS8 03576000 JSB COCS.,I 03577000 * 03578000 LDA EDS4 03579000 JSB CODS.,I 03580000 * 03581000 ISZ CACO WAS IT 5TH CARD? 03582000 JMP NE3B NO 03583000 JSB FI2.,I YES 03584000 JMP ET03 035850D00 * 03586000 LDA ECS9 03587000 JSB COCS.,I 03588000 * 03589000 LDA EDS4 03590000 JSB CODS.,I 03591000 * 03592000 JSB MSGH,I OUTPUT H055 03593000 DEF H055 03594000 * 03595000 LDA ECS9 03596000 JSB COCS.,I 03597000 * 03598000 LDA EDS4 03599000 JSB CODS.,I 03600000 * 03601000 JMP TST03,I 03602000 * 03603000 ET03 JSB ERMS,I OUTPUT E054 03604000 DEF E054 03605000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 03606000 JMP TST03,I 03607000 SKP 03608000 ******************************************************************** 03609000 * TEST 4 *  03610000 ******************************************************************** 03611000 * 03612000 TST04 EQU * 03613000 NOP 03614000 JSB CSM.,I CHECK STACK CNTRL MODE 03615000 CLA DETERMINE WAIT -FOR-FLAG METHOD 03616000 STA MOI FOR THIS TEST 03617000 *------------------------------------------------------------------* 03618000 * SUBTEST 1 - PUNCH * 03619000 *------------------------------------------------------------------* 03620000 LDB B6 03621000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 03622000 JMP RS04 ON-YES,GOTO READ SECTION 03623000 * 03624000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 03625000 JMP ET04 YES 03626000 * 03627000 CLA NO 03628000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 03629000 LDA HPA. GET HPA POINTER 03630000 STA IP04 03631000 * 03632000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 03633000 JMP ET04 NO 03634000 *  03635000 PY04 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 03636000 JMP ET04 YES 03637000 * 03638000 CLA NO,PREPARE PUBU FROM HPA 03639000 STA SHIFT 03640000 LDA ZERO 03641000 LDB D80 03642000 JSB AR2B.,I 03643000 IP04 NOP 03644000 DEF PUBU 03645000 DEF SHIFT 03646000 * 03647000 LDA WSIND IS LAST CRD IN WAIT STATION? 03648000 CPA D12 03649000 JMP LP04 YES 03650000 JSB QB2.,I NO;PUNCH&FEED,OK? 03651000 JMP ET04 NO 03652000 * 03653000 ISZ IP04 YES,INCREMENT HPA POINTER 03654000 JMP PY04 GOTO PROCESS NEXT CARD 03655000 * 03656000 LP04 JSB PI2.,I PUNCH&INHIF,OK? 03657000 JMP ET04 NO 03658000 FP04 EQU * 03659000 SKP : 03660000 *------------------------------------------------------------------* 03661000 * SUBTEST 2 - READ * 03662000 *------------------------------------------------------------------* 03663000 RS04 LDB B5 03664000 JSB SWRT,I IS READ TO BE SUPPRESSED? 03665000 JMP TST04,I ON-YES,EXIT FROM TEST 03666000 * 03667000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 03668000 JMP ET04 YES 03669000 * 03670000 CCA 03671000 STA BLI IND CRDS ARE NOT TO BE BLANK 03672000 LDA HPA. 03673000 STA IR04 GET HPA POINTER 03674000 * 03675000 RY04 CLA LOAD PUBU WITH EXP DATA 03676000 STA SHIFT 03677000 LDA ZERO 03678000 LDB D80 03679000 JSB AR2B.,I 03680000 IR04 NOP 03681000 DEF PUBU 03682000 DEF SHIFT 03683000 * 03684000 JSB RA1.,I READ ONE CARD,OK?  03685000 JMP ET04 NO 03686000 * 03687000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 03688000 JMP ET04 YES 03689000 * 03690000 LDA WSIND NO 03691000 CPA D12 IS LAST CARD IN WAIT STATION? 03692000 JMP LR04 YES 03693000 * 03694000 ISZ IR04 NO,INCREMENT HPA POINTER 03695000 JMP RY04 GOTO PROCESS NEXT CARD 03696000 * 03697000 LR04 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 03698000 JMP ET04 NO 03699000 JMP TST04,I YES,EXIT FROM TEST 03700000 * 03701000 ET04 JSB ERMS,I OUTPUT E054 03702000 DEF E054 03703000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 03704000 JMP TST04,I ERROR EXIT FROM TEST 03705000 SKP 03706000 ******************************************************************** 03707000 * TEST 5 * 03708000 ******************************************************************** 03709000 * D 03710000 TST05 EQU * 03711000 NOP 03712000 JSB CSM.,I CHECK STACK CNTRL MODE 03713000 CCA DETERMINE INTERRUPT METHOD 03714000 STA MOI FOR THIS TEST 03715000 *------------------------------------------------------------------* 03716000 * SUBTEST 1 - PUNCH AND PRINT * 03717000 *------------------------------------------------------------------* 03718000 LDB B6 03719000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 03720000 JMP RS05 ON-YES,GOTO READ SECTION 03721000 * 03722000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 03723000 JMP ET05 YES 03724000 * 03725000 CLA NO 03726000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 03727000 LDA HPA. GET HPA POINTER 03728000 STA IP05 03729000 * 03730000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 03731000 JMP ET05 NO 03732000 * 03733000 PY05 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 03734000 JMP ET05 YES M 03735000 * 03736000 CLA NO,PREPARE PUBU FROM HPA 03737000 STA SHIFT 03738000 LDA ZERO 03739000 LDB D80 03740000 JSB AR2B.,I 03741000 IP05 NOP 03742000 DEF PUBU 03743000 DEF SHIFT 03744000 * 03745000 LDA WSIND IS LAST CRD IN WAIT STATION? 03746000 CPA D12 03747000 JMP LP05 YES 03748000 JSB QWB2.,I NO;PUNCH,PRINT&FEED,OK? 03749000 JMP ET05 NO 03750000 * 03751000 ISZ IP05 YES,INCREMENT HPA POINTER 03752000 JMP PY05 GOTO PROCESS NEXT CARD 03753000 * 03754000 LP05 JSB PWI2.,I PUNCH,PRINT&INHIF,OK? 03755000 JMP ET05 NO 03756000 FP05 EQU * 03757000 SKP 03758000 *------------------------------------------------------------------* 03759000 * SUBTEST 2 - READ * 03760000 *------------------------------------------------------------------* 03761000 RS05 LDB B5 03762000 JSB SWRT,I IS READ TO BE SUPPRESSED? 03763000 JMP TST05,I ON-YES,EXIT FROM TEST 03764000 * 03765000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 03766000 JMP ET05 YES 03767000 * 03768000 CCA 03769000 STA BLI IND CRDS ARE NOT TO BE BLANK 03770000 LDA HPA. GET HPA POINTER 03771000 STA IR05 03772000 * 03773000 RY05 CLA LOAD PUBU WITH EXP DATA 03774000 STA SHIFT 03775000 LDA ZERO 03776000 LDB D80 03777000 JSB AR2B.,I 03778000 IR05 NOP 03779000 DEF PUBU 03780000 DEF SHIFT 03781000 * 03782000 JSB RA1.,I READ ONE CARD,OK? 03783000 JMP ET05 NO 03784000 * D0 03785000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 03786000 JMP ET05 YES 03787000 * 03788000 LDA WSIND NO 03789000 CPA D12 IS LAST CARD IN WAIT STATION? 03790000 JMP LR05 YES 03791000 * 03792000 ISZ IR05 NO,INCREMENT HPA POINTER 03793000 JMP RY05 GOTO PROCESS NEXT CARD 03794000 * 03795000 LR05 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 03796000 JMP ET05 NO 03797000 JMP TST05,I YES,EXIT FROM TEST 03798000 * 03799000 ET05 JSB ERMS,I OUTPUT E054 03800000 DEF E054 03801000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 03802000 JMP TST05,I ERROR EXIT FROM TEST 03803000 SKP 03804000 ******************************************************************** 03805000 * TEST 6 * 03806000 ******************************************************************** 03807000 * 03808000 TST06 EQU * 03809000 NOP 03810000 JSB CSM.,I CHECK STACK CNTRL MODE 03811000 CLA DETERMINE WAIT -FOR-FLAG METHOD 03812000 STA MOI FOR THIS TEST 03813000 *------------------------------------------------------------------* 03814000 * SUBTEST 1 - PUNCH AND PRINT * 03815000 *------------------------------------------------------------------* 03816000 LDB B6 03817000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 03818000 JMP RS06 ON-YES,GOTO READ SECTION 03819000 * 03820000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 03821000 JMP ET06 YES 03822000 * 03823000 CLA NO 03824000 STA ROTA SET ROTATION FACTOR TO 0 03825000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 03826000 * 03827000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 03828000 JMP ET06 NO 03829000 * 03830000 PY06 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 03831000 JMP ET06 YES 03832000 * 03833000 LDA ROTA NO,PREPARE PUBU FROM HPA 03834000 STA SHIFT 03835000 LDA AL63 03836000 LDB D80 03837000 JSB AR2B.,I 03838000 DEF HPA 03839000 DEF PUBU 03840000 DEF SHIFT 03841000 * 03842000 LDA WSIND IS LAST CRD IN WAIT STATION? 03843000 CPA D12 03844000 JMP LP06 YES 03845000 JSB QWB2.,I NO;PUNCH,PRINT&FEED,OK? 03846000 JMP ET06 NO 03847000 * 03848000 LDA ROTA YES 03849000 CPA D3 IS ROT FACTOR=3? 03850000 JMP *+3 YES 03851000 ISZ ROTA NO,INCREMENT ROT FACTOR 03852000 JMP PY06 GOTO PROCESS NEXT CARD 03853000 CLA RESET ROT FACTOR TO 0 03854000 STA ROTA 03855000 JMP PY06 GOTO PROCESS NEXT CARD 03856000 * 03857000 LP06 JSB PWI2.,I PUNCH,PRINT&INHIF,OK? 03858000 JMP ET06 NO b03859000 FP06 EQU * 03860000 SKP 03861000 *------------------------------------------------------------------* 03862000 * SUBTEST 2 - READ * 03863000 *------------------------------------------------------------------* 03864000 RS06 LDB B5 03865000 JSB SWRT,I IS READ TO BE SUPPRESSED? 03866000 JMP TST06,I ON-YES,EXIT FROM TEST 03867000 * 03868000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 03869000 JMP ET06 YES 03870000 * 03871000 CLA NO 03872000 STA ROTA SET ROTATION FACTOR TO 0 03873000 CCA 03874000 STA BLI IND CRDS ARE NOT TO BE BLANK 03875000 * 03876000 RY06 LDA ROTA LOAD PUBU WITH EXP DATA 03877000 STA SHIFT 03878000 LDA AL63 03879000 LDB D80 03880000 JSB AR2B.,I 03881000 DEF HPA 03882000 DEF PUBU 03883000 DEF SHIFT 6 03884000 * 03885000 JSB RA1.,I READ ONE CARD,OK? 03886000 JMP ET06 NO 03887000 * 03888000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 03889000 JMP ET06 YES 03890000 * 03891000 LDA WSIND NO 03892000 CPA D12 IS LAST CARD IN WAIT STATION? 03893000 JMP LR06 YES 03894000 * 03895000 LDA ROTA NO 03896000 CPA D3 IS ROT FACTOR=3? 03897000 JMP *+3 YES 03898000 ISZ ROTA NO,INCREMENT ROT FACTOR 03899000 JMP RY06 GOTO PROCESS NEXT CARD 03900000 CLA RESET ROT FACTOR TO 0 03901000 STA ROTA 03902000 JMP RY06 03903000 * 03904000 LR06 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 03905000 JMP ET06 NO 03906000 JMP TST06,I YES,EXIT FROM TEST 03907000 * 03908000 ET06 JSB ERMS,I OUTPUT E054  03909000 DEF E054 03910000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 03911000 JMP TST06,I ERROR EXIT FROM TEST 03912000 SKP 03913000 ******************************************************************** 03914000 * TEST 7 * 03915000 ******************************************************************** 03916000 * 03917000 TST07 EQU * 03918000 NOP 03919000 JSB CSM.,I CHECK STACK CNTRL MODE 03920000 CCA DETERMINE INTERRUPT METHOD 03921000 STA MOI FOR THIS TEST 03922000 *------------------------------------------------------------------* 03923000 * SUBTEST 1 - PRINT * 03924000 *------------------------------------------------------------------* 03925000 LDB B6 03926000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 03927000 JMP RS07 ON-YES,GOTO READ SECTION 03928000 * 03929000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 03930000 JMP ET07 YES 03931000 * 03932000 CLA NO 03933000 STA ROTA SET ROTATION FACTOR TO 0 P 03934000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 03935000 * 03936000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 03937000 JMP ET07 NO 03938000 * 03939000 PY07 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 03940000 JMP ET07 YES 03941000 * 03942000 LDA ROTA NO,PREPARE PUBU FROM HPA 03943000 STA SHIFT 03944000 LDA AL63 03945000 LDB D80 03946000 JSB AR2B.,I 03947000 DEF HPA 03948000 DEF PUBU 03949000 DEF SHIFT 03950000 * 03951000 LDA WSIND IS LAST CRD IN WAIT STATION? 03952000 CPA D12 03953000 JMP LP07 YES 03954000 JSB RWB2.,I NO;PRINT&FEED,OK? 03955000 JMP ET07 NO 03956000 * 03957000 LDA ROTA YES 03958000 CPA D3 IS ROT FACTOR=3?  03959000 JMP *+3 YES 03960000 ISZ ROTA NO,INCREMENT ROT FACTOR 03961000 JMP PY07 GOTO PROCESS NEXT CARD 03962000 CLA RESET ROT FACTOR TO 0 03963000 STA ROTA 03964000 JMP PY07 GOTO PROCESS NEXT CARD 03965000 * 03966000 LP07 JSB WI2.,I PRINT&INHIF,OK? 03967000 JMP ET07 NO 03968000 FP07 EQU * 03969000 SKP 03970000 *------------------------------------------------------------------* 03971000 * SUBTEST 2 - READ * 03972000 *------------------------------------------------------------------* 03973000 RS07 LDB B5 03974000 JSB SWRT,I IS READ TO BE SUPPRESSED? 03975000 JMP TST07,I ON-YES,EXIT FROM TEST 03976000 * 03977000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 03978000 JMP ET07 YES 03979000 * 03980000 CLA NO 03981000 STA ROTA SET ROTATION FACTOR TO 0 03982000 CCA 03983000 STA BLI CRDS ARE TO pBE BLANK BUT 03984000 * DONT GIVE ERR MSG ABOUT IT 03985000 RY07 LDA ROTA LOAD PUBU WITH EXP DATA 03986000 STA SHIFT 03987000 LDA ZERO 03988000 LDB D80 03989000 JSB AR2B.,I 03990000 DEF ZERO 03991000 DEF PUBU 03992000 DEF SHIFT 03993000 * 03994000 JSB RA1.,I READ ONE CARD,OK? 03995000 JMP ET07 NO 03996000 * 03997000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 03998000 JMP ET07 YES 03999000 * 04000000 LDA WSIND NO 04001000 CPA D12 IS LAST CARD IN WAIT STATION? 04002000 JMP LR07 YES 04003000 * 04004000 JMP RY07 NO,GOTO PROCESS NEXT CARD 04005000 * 04006000 LR07 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 04007000 JMP ET07 NO 04008000 JMP TST07,I YES,љEXIT FROM TEST 04009000 * 04010000 ET07 JSB ERMS,I OUTPUT E054 04011000 DEF E054 04012000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 04013000 JMP TST07,I ERROR EXIT FROM TEST 04014000 SKP 04015000 ******************************************************************** 04016000 * TEST 8 * 04017000 ******************************************************************** 04018000 * 04019000 TST08 EQU * 04020000 NOP 04021000 JSB CSM.,I CHECK STACK CNTRL MODE 04022000 CLA DETERMINE WAIT -FOR-FLAG METHOD 04023000 STA MOI FOR THIS TEST 04024000 *------------------------------------------------------------------* 04025000 * SUBTEST 1 - PUNCH AND PRINT SEPARATE DATA * 04026000 *------------------------------------------------------------------* 04027000 LDB B6 04028000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 04029000 JMP RS08 ON-YES,GOTO READ SECTION 04030000 * 04031000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 04032000 JMP ET08 YES 04033000 * Ӈ 04034000 CLA NO 04035000 STA ROTA SET ROTATION FACTOR TO 0 04036000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 04037000 * 04038000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 04039000 JMP ET08 NO 04040000 * 04041000 PY08 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 04042000 JMP ET08 YES 04043000 * 04044000 CLA NO,PREPARE PUBU FROM FULL 04045000 STA SHIFT 04046000 LDA ZERO 04047000 LDB D80 04048000 JSB AR2B.,I 04049000 DEF FULL 04050000 DEF PUBU 04051000 DEF SHIFT 04052000 * 04053000 LDA ROTA 04054000 STA SHIFT 04055000 LDA AL63 PREPARE PRBU FROM HPA 04056000 LDB D80 04057000 JSB AR2B.,I 04058000 DEpF HPA 04059000 DEF PRBU 04060000 DEF SHIFT 04061000 * 04062000 LDA WSIND IS LAST CRD IN WAIT STATION? 04063000 CPA D12 04064000 JMP LP08 YES 04065000 JSB QSB2.,I NO;PUNCH,PRINT SEP&FEED,OK? 04066000 JMP ET08 NO 04067000 * 04068000 LDA ROTA YES 04069000 CPA D3 IS ROT FACTOR=3? 04070000 JMP *+3 YES 04071000 ISZ ROTA NO,INCREMENT ROT FACTOR 04072000 JMP PY08 GOTO PROCESS NEXT CARD 04073000 CLA RESET ROT FACTOR TO 0 04074000 STA ROTA 04075000 JMP PY08 GOTO PROCESS NEXT CARD 04076000 * 04077000 LP08 JSB PSI2.,I PUNCH,PRINT SEP&INHIF,OK? 04078000 JMP ET08 NO 04079000 FP08 EQU * 04080000 * 04081000 *------------------------------------------------------------------* 04082000 * SUBTEST 2 - READ * 04083000 "*------------------------------------------------------------------* 04084000 RS08 LDB B5 04085000 JSB SWRT,I IS READ TO BE SUPPRESSED? 04086000 JMP TST08,I ON-YES,EXIT FROM TEST 04087000 * 04088000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 04089000 JMP ET08 YES 04090000 * 04091000 CCA 04092000 STA BLI IND CRDS ARE NOT TO BE BLANK 04093000 * 04094000 RY08 CLA LOAD PUBU WITH EXP DATA 04095000 STA SHIFT 04096000 LDA ZERO 04097000 LDB D80 04098000 JSB AR2B.,I 04099000 DEF FULL 04100000 DEF PUBU 04101000 DEF SHIFT 04102000 * 04103000 JSB RA1.,I READ ONE CARD,OK? 04104000 JMP ET08 NO 04105000 * 04106000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 04107000 JMP ET08 YES 04108000 * 04109000 LDA WSIND NO 04110000 CPA D12 IS LAST CARD IN WAIT STATION? 04111000 JMP LR08 YES 04112000 * 04113000 JMP RY08 NO,GOTO PROCESS NEXT CARD 04114000 * 04115000 LR08 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 04116000 JMP ET08 NO 04117000 JMP TST08,I YES,EXIT FROM TEST 04118000 * 04119000 ET08 JSB ERMS,I OUTPUT E054 04120000 DEF E054 04121000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 04122000 JMP TST08,I ERROR EXIT FROM TEST 04123000 SKP 04124000 ******************************************************************** 04125000 * TEST 9 * 04126000 ******************************************************************** 04127000 * 04128000 TST09 EQU * 04129000 NOP 04130000 JSB CSM.,I CHECK STACK CNTRL MODE 04131000 CCA DETERMINE INTERRUPT METHOD 04132000 STA MOI FOR THIS TEST  04133000 *------------------------------------------------------------------* 04134000 * SUBTEST 1 - PUNCH AND ATTEMPT TO PRINT * 04135000 *------------------------------------------------------------------* 04136000 LDB B6 04137000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 04138000 JMP RS09 ON-YES,GOTO READ SECTION 04139000 * 04140000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 04141000 JMP ET09 YES 04142000 * 04143000 CLA NO 04144000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 04145000 LDA ALMF. GET ALMF POINTER 04146000 STA IP09 04147000 * 04148000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 04149000 JMP ET09 NO 04150000 * 04151000 PY09 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 04152000 JMP ET09 YES 04153000 * 04154000 CLA NO,PREPARE PUBU FROM ALMF 04155000 STA SHIFT 04156000 LDA ZERO 04157000 LDB D80 0a 04158000 JSB AR2B.,I 04159000 IP09 NOP 04160000 DEF PUBU 04161000 DEF SHIFT 04162000 * 04163000 LDA WSIND IS LAST CRD IN WAIT STATION? 04164000 CPA D12 04165000 JMP LP09 YES 04166000 JSB QWB2.,I NO;PUNCH,PRINT&FEED,OK? 04167000 JMP ET09 NO 04168000 * 04169000 ISZ IP09 YES,INCREMENT ALMF POINTER 04170000 JMP PY09 GOTO PROCESS NEXT CARD 04171000 * 04172000 LP09 JSB PWI2.,I PUNCH,PRINT&INHIF,OK? 04173000 JMP ET09 NO 04174000 FP09 EQU * 04175000 SKP 04176000 *------------------------------------------------------------------* 04177000 * SUBTEST 2 - READ * 04178000 *------------------------------------------------------------------* 04179000 RS09 LDB B5 04180000 JSB SWRT,I IS READ TO BE SUPPRESSED? 04181000 JMP TST09,I ON-YES,EXIT FROM TEST 04182000 * u 04183000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 04184000 JMP ET09 YES 04185000 * 04186000 CCA 04187000 STA BLI IND CRDS ARE NOT TO BE BLANK 04188000 LDA ALMF. GET ALMF POINTER 04189000 STA IR09 04190000 * 04191000 RY09 CLA LOAD PUBU WITH EXP DATA 04192000 STA SHIFT 04193000 LDA ZERO 04194000 LDB D80 04195000 JSB AR2B.,I 04196000 IR09 NOP 04197000 DEF PUBU 04198000 DEF SHIFT 04199000 * 04200000 JSB RA1.,I READ ONE CARD,OK? 04201000 JMP ET09 NO 04202000 * 04203000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 04204000 JMP ET09 YES 04205000 * 04206000 LDA WSIND NO 04207000 CPA D12 IS LAST CARD IN WAIT SkTATION? 04208000 JMP LR09 YES 04209000 * 04210000 ISZ IR09 NO,INCREMENT ALMF POINTER 04211000 JMP RY09 GOTO PROCESS NEXT CARD 04212000 * 04213000 LR09 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 04214000 JMP ET09 NO 04215000 JMP TST09,I YES,EXIT FROM TEST 04216000 * 04217000 ET09 JSB ERMS,I OUTPUT E054 04218000 DEF E054 04219000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 04220000 JMP TST09,I ERROR EXIT FROM TEST 04221000 SKP 04222000 ******************************************************************** 04223000 * TEST 10 * 04224000 ******************************************************************** 04225000 * 04226000 TST10 EQU * 04227000 NOP 04228000 JSB CSM.,I CHECK STACK CNTRL MODE 04229000 CLA DETERMINE WAIT -FOR-FLAG METHOD 04230000 STA MOI FOR THIS TEST 04231000 *------------------------------------------------------------------* 04232000 * SUBTEST 1 - PUNCH AND ATtNTEMPT TO PRINT SEPARATE DATA * 04233000 *------------------------------------------------------------------* 04234000 LDB B6 04235000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 04236000 JMP RS10 ON-YES,GOTO READ SECTION 04237000 * 04238000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 04239000 JMP ET10 YES 04240000 * 04241000 CLA NO 04242000 STA ROTA SET ROTATION FACTOR TO 0 04243000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 04244000 * 04245000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 04246000 JMP ET10 NO 04247000 * 04248000 PY10 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 04249000 JMP ET10 YES 04250000 * 04251000 LDA ROTA NO,PREPARE PUBU FROM WCPA 04252000 STA SHIFT 04253000 LDA AL39 04254000 LDB D80 04255000 JSB AR2B.,I 04256000 DEF WCPA 04257000 DEF PUBU ( 04258000 DEF SHIFT 04259000 * 04260000 LDA D19 PREPARE PRBU FROM SCHB 04261000 LDB D80 04262000 JSB AR2B.,I 04263000 DEF SCHB 04264000 DEF PRBU 04265000 DEF SHIFT 04266000 * 04267000 LDA WSIND IS LAST CRD IN WAIT STATION? 04268000 CPA D12 04269000 JMP LP10 YES 04270000 JSB QSB2.,I NO;PUNCH,ATMPT PR SEP&FEED,OK? 04271000 JMP ET10 NO 04272000 * 04273000 JMP PY10 YES,GOTO PROCESS NEXT CARD 04274000 * 04275000 LP10 JSB PSI2.,I PUNCH,ATMPT PR SEP&INHIF,OK? 04276000 JMP ET10 NO 04277000 FP10 EQU * 04278000 SKP 04279000 *------------------------------------------------------------------* 04280000 * SUBTEST 2 - READ * 04281000 *------------------------------------------------------------------* 04282000 RS10 LDB B5 o@ 04283000 JSB SWRT,I IS READ TO BE SUPPRESSED? 04284000 JMP TST10,I ON-YES,EXIT FROM TEST 04285000 * 04286000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 04287000 JMP ET10 YES 04288000 * 04289000 CLA NO 04290000 STA ROTA SET ROTATION FACTOR TO 0 04291000 CCA 04292000 STA BLI IND CRDS ARE NOT TO BE BLANK 04293000 * 04294000 RY10 LDA ROTA LOAD PUBU WITH EXP DATA 04295000 STA SHIFT 04296000 LDA AL39 04297000 LDB D80 04298000 JSB AR2B.,I 04299000 DEF WCPA 04300000 DEF PUBU 04301000 DEF SHIFT 04302000 * 04303000 JSB RA1.,I READ ONE CARD,OK? 04304000 JMP ET10 NO 04305000 * 04306000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 04307000 JMP +ET10 YES 04308000 * 04309000 LDA WSIND NO 04310000 CPA D12 IS LAST CARD IN WAIT STATION? 04311000 JMP LR10 YES 04312000 * 04313000 JMP RY10 NO,GOTO PROCESS NEXT CARD 04314000 * 04315000 LR10 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 04316000 JMP ET10 NO 04317000 JMP TST10,I YES,EXIT FROM TEST 04318000 * 04319000 ET10 JSB ERMS,I OUTPUT E054 04320000 DEF E054 04321000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 04322000 JMP TST10,I ERROR EXIT FROM TEST 04323000 SKP 04324000 ORG 12000B 04325000 ******************************************************************** 04326000 * TEST 11 * 04327000 ******************************************************************** 04328000 * 04329000 TST11 EQU * 04330000 NOP 04331000 JSB CSM.,I CHECK STACK CNTRL MODE 04332000  CCA DETERMINE INTERRUPT METHOD 04333000 STA MOI FOR THIS TEST 04334000 *------------------------------------------------------------------* 04335000 * SUBTEST 1 - PUNCH AND ATTEMPT TO PRINT * 04336000 *------------------------------------------------------------------* 04337000 LDB B6 04338000 JSB SWRT,I IS PU&PR TO BE SUPPRESSED? 04339000 JMP RS11 ON-YES,GOTO READ SECTION 04340000 * 04341000 JSB PUX.,I OFF-NO,PERFORM"PUX",ANY SER ERR? 04342000 JMP ET11 YES 04343000 * 04344000 CLA NO 04345000 STA ROTA SET ROTATION FACTOR TO 0 04346000 STA BLI INDIC THAT CRDS ARE TO BE BLANK 04347000 * 04348000 JSB RB2.,I FEED&READ ONE BL CARD,OK? 04349000 JMP ET11 NO 04350000 * 04351000 PY11 JSB PUY.,I YES,PERFORM"PUY",ANY SER ERR? 04352000 JMP ET11 YES 04353000 * 04354000 LDA ROTA NO,PREPARE PUBU FROM SCHB 04355000 STA SHIFT 04356000 LDA D19 0435%7000 LDB D80 04358000 JSB AR2B.,I 04359000 DEF SCHB 04360000 DEF PUBU 04361000 DEF SHIFT 04362000 * 04363000 LDA WSIND IS LAST CRD IN WAIT STATION? 04364000 CPA D12 04365000 JMP LP11 YES 04366000 JSB QWB2.,I NO;PUNCH ATMPT PR&FEED,OK? 04367000 JMP ET11 NO 04368000 * 04369000 JMP PY11 YES,GOTO PROCESS NEXT CARD 04370000 * 04371000 LP11 JSB PWI2.,I PUNCH ATMPT PR&INHIF,OK? 04372000 JMP ET11 NO 04373000 FP11 EQU * 04374000 SKP 04375000 *------------------------------------------------------------------* 04376000 * SUBTEST 2 - READ * 04377000 *------------------------------------------------------------------* 04378000 RS11 LDB B5 04379000 JSB SWRT,I IS READ TO BE SUPPRESSED? 04380000 JMP TST11,I ON-YES,EXIT FROM TEST 04381000 *  04382000 JSB RDX.,I OFF-NO,PERFORM"RDX",ANY SER ERR? 04383000 JMP ET11 YES 04384000 * 04385000 CLA NO 04386000 STA ROTA SET ROTATION FACTOR TO 0 04387000 CCA 04388000 STA BLI IND CRDS ARE NOT TO BE BLANK 04389000 * 04390000 RY11 LDA ROTA LOAD PUBU WITH EXP DATA 04391000 STA SHIFT 04392000 LDA D19 04393000 LDB D80 04394000 JSB AR2B.,I 04395000 DEF SCHB 04396000 DEF PUBU 04397000 DEF SHIFT 04398000 * 04399000 JSB RA1.,I READ ONE CARD,OK? 04400000 JMP ET11 NO 04401000 * 04402000 JSB RDY.,I YES,PERF"RDY",ANY SER ERR? 04403000 JMP ET11 YES 04404000 * 04405000 LDA WSIND NO 04406000 CPA D12 IS LAST CARD IN WAIT STATION? VQ 04407000 JMP LR11 YES 04408000 * 04409000 JMP RY11 NO,GOTO PROCESS NEXT CARD 04410000 * 04411000 LR11 JSB FI1.,I REMOVE LAST CARD FROM W S,OK? 04412000 JMP ET11 NO 04413000 JMP TST11,I YES,EXIT FROM TEST 04414000 * 04415000 ET11 JSB ERMS,I OUTPUT E054 04416000 DEF E054 04417000 JSB STRE.,I CHECK IF STATUS REPORT REQUIRED 04418000 JMP TST11,I ERROR EXIT FROM TEST 04419000 SKP 04420000 ******************************************************************** 04421000 * TEST 12 - OPERATOR DESIGN * 04422000 ******************************************************************** 04423000 * 04424000 TST12 EQU * 04425000 NOP 04426000 JSB CSM.,I CHECK STACK CNTRL MODE 04427000 CCA DETERMINE INTERRUPT METHOD 04428000 STA MOI FOR OPERATOR DESIGN 04429000 * 04430000 CLA PREPARE PUBU FROM FULL(BUF X) 04431000 STA SHIFT  04432000 LDA ZERO 04433000 LDB D80 04434000 JSB AR2B.,I 04435000 DEF FULL 04436000 DEF PUBU 04437000 DEF SHIFT 04438000 * 04439000 CLA PREPARE PRBU FROM HPA(BUF Y) 04440000 STA SHIFT 04441000 LDA AL63 04442000 LDB D80 04443000 JSB AR2B.,I 04444000 DEF HPA 04445000 DEF PRBU 04446000 DEF SHIFT 04447000 * 04448000 JSB MSGC,I OUTPUT H115 04449000 DEF H115 04450000 WFCM JSB MSGH,I OUTPUT H116 AND WAIT FOR CMND 04451000 DEF H116 04452000 CLA 04453000 STA WSIND SET WSIND TO 0 04454000 LIA SW OFF-NO 04455000 AND CMSK 04456000 CPA CM0 READ IN X? # 04457000 JMP CMRA YES 04458000 CPA CM1 NO;READ IN Y? 04459000 JMP CMRB YES 04460000 CPA CM2 NO;DISPLAY X? 04461000 JMP CMDA YES 04462000 CPA CM3 NO;DISPLAY Y? 04463000 JMP CMDB YES 04464000 CPA CM4 NO;PUNCH FROM X? 04465000 JMP CMPU YES 04466000 CPA CM5 NO;PRINT FROM X? 04467000 JMP CMPR YES 04468000 CPA CM6 NO;PUNCH&PRIN FROM X? 04469000 JMP CMPP YES 04470000 CPA CM7 NO;PUNCH&PRINT SEP FROM X&Y? 04471000 JMP CMPPS YES 04472000 CPA CM10 NO;STATUS REPORT? 04473000 JMP CSRE YES 04474000 CPA CM11 NO;EXIT? 04475000 JMP CEX YES 04476000 JSB MSGC,I NO,INPUT ERR,OUTPUT H121 04477000 DEF H121 04478000 JMP WFCM GOTO WAIT FOR CORRECT ORDER 04479000 * 04480000 CMRA JSB MSGC,I OUTPUT C0 04481000 DEF C0  04482000 C0R ISZ WSIND 04483000 NOP 04484000 JSB RA1.,I READ ONE CARD,OK? 04485000 JMP ERCE NO,GOTO REPORT ERR IF FEED NOTOK 04486000 CLA YES,TRANSFER(RDBU)TO PUBU=BUF A 04487000 STA SHIFT 04488000 LDA D79 04489000 LDB D80 04490000 JSB AR2B.,I 04491000 DEF RDBU 04492000 DEF PUBU 04493000 DEF SHIFT 04494000 JSB FI1.,I REMOVE CARD FROM W S,OK? 04495000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04496000 LDB B4 IS REPETITION REQUIRED? 04497000 JSB SWRT,I 04498000 JMP C0R ON-YES,EXEC ORDER AGAIN 04499000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04500000 * 04501000 CMRB JSB MSGC,I OUTPUT C1 04502000 DEF C1 04503000 C1R ISZ WSIND 04504000 NOP 04505000 JSB RA1.,I READ ONE CARD,OK? 04506000 JMP ERCE NO,GOTO REPORT ERR IF FD NOT OK 04507000 CLA YES,TRANSFER(RDBU)TO PRBU=BUF B 04508000 STA SHIFT 04509000 LDA D79 04510000 LDB D80 04511000 JSB AR2B.,I 04512000 DEF RDBU 04513000 DEF PRBU 04514000 DEF SHIFT 04515000 JSB FI1.,I REMOVE CARD FROM W S,OK? 04516000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04517000 LDB B4 IS REPETITION REQUIRED? 04518000 JSB SWRT,I 04519000 JMP C1R ON-YES,EXEC ORDER AGAIN 04520000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04521000 * 04522000 CMDA JSB MSGC,I OUTPUT C2 04523000 DEF C2 04524000 C2R JSB MSGC,I OUTPUT H117 04525000 DEF H117 04526000 LDA PUBUA LOAD PUBU=BUF A POINTER 04527000 JSB OCO.,I 04528000 LDB B4 IS REPETITION REQUIRED? 04529000 JSB SWRT,I 04530000 JMP C2R ON-YES,EXEC ORDER AGAIN 04531000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04532000 * 04533000 CMDB JSB MSGC,I OUTPUT C3 04534000 DEF C3 04535000 C3R JSB MSGC,I OUTPUT H120 04536000 DEF H120 04537000 LDA PRBUA LOAD PRBU=BUF B POINTER 04538000 JSB OCO.,I 04539000 LDB B4 IS REPETITION REQUIRED? 04540000 JSB SWRT,I 04541000 JMP C3R ON-YES,EXEC ORDER AGAIN 04542000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04543000 * 04544000 CMPU JSB MSGC,I OUTPUT C4 04545000 DEF C4 04546000 C4R ISZ WSIND 04547000 NOP 04548000 JSB RB2.,I FEED 1 CARD IN W S,OK? 04549000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04550000 JSB PI2.,I YES,PUNCH CRD FROM A,OK? 04551000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04552000 LDB B4 IS REPETITION REQUIRED? 04553000 JSB SWRT,I 04554000 JMP C4R ON-YES,EXEC ORDER AGAIN 04555000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04556000 * [ 04557000 CMPR JSB MSGC,I OUTPUT C5 04558000 DEF C5 04559000 C5R ISZ WSIND 04560000 NOP 04561000 JSB RB2.,I FEED 1 CARD IN W S,OK? 04562000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04563000 JSB WI2.,I YES,PRINT CARD FROM A,OK? 04564000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04565000 LDB B4 IS REPETITION REQUIRED? 04566000 JSB SWRT,I 04567000 JMP C5R ON-YES,EXEC ORDER AGAIN 04568000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04569000 * 04570000 CMPP JSB MSGC,I OUTPUT C6 04571000 DEF C6 04572000 C6R ISZ WSIND 04573000 NOP 04574000 JSB RB2.,I FEED 1 CARD IN W S,OK? 04575000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04576000 JSB PWI2.,I YES,PUNCH&PRINT CARD FROM A 04577000 JMP ERCE NO,GOTO REP ERR IF FD NT OK 04578000 LDB B4 IS REPETITION REQUIRED? 04579000 JSB SWRT,I 04580000 JMP C6R ON-YES,EXEC ORDER AGAIN 04581000  JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04582000 * 04583000 CMPPS JSB MSGC,I OUTPUT C7 04584000 DEF C7 04585000 C7R ISZ WSIND 04586000 NOP 04587000 JSB RB2.,I FEED 1 CARD IN W S,OK? 04588000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04589000 JSB PSI2.,I YES,PUNCH&PRINT CARD SEP FR A&B 04590000 JMP ERCE NO,GOTO REP ERR IF FD NOT OK 04591000 LDB B4 IS REPETITION REQUIRED? 04592000 JSB SWRT,I 04593000 JMP C7R ON-YES,EXEC ORDER AGAIN 04594000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04595000 * 04596000 CSRE JSB MSGC,I OUTPUT C10 04597000 DEF C10 04598000 C10R JSB STA.,I REPORT STATUS 04599000 LDB B4 IS REPETITION REQUIRED? 04600000 JSB SWRT,I 04601000 JMP C10R ON-YES,EXEC ORDER AGAIN 04602000 JMP WFCM OFF-NO,GOTO WAIT FOR NEW ORDER 04603000 * 04604000 CEX JSB MSGC,I OUTPUT C11 04605000 DEF C11 046060$\ZV00 JMP TST12,I 04607000 * 04608000 ERCE JSB ERMS,I OUTPUT E122 04609000 DEF E122 04610000 JMP WFCM 04611000 * 04612000 * 04613000 * 04614000 FWAA EQU * 04615000 END 04616000 ߇\  12989-18004 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 ------------------------------------------------------------------ HKƠADYҠMMANDAҠDUSԠ ------------------------------------------------------------------ MPN ------------------------------------------------------------------ HKƠNUPԠUDNDAAHҠADUԠBUƠ ------------------------------------------------------------------ PUSBA Ơ0ҬNϠNԠNDAAHUNƠɠS SBV.ɠNSԠ̦DN.NҠMSG DABV. SA. SBV. DABV. SA. DAԠAD.N.NA DBSNDADD.N.NB SBMSɠUPUԠű0 DƠű0 BԠSBS.ɠHKƠSAUSPԠ MPDDϬɠҠԠMDDϠϠP+ ------------------------------------------------------------------ HKƠNԠUDNDAAHƠADPҠBUƠ ------------------------------------------------------------------ PҠSBA Ơ0 SBV. DABV. SAP. SBV. DABV. SAP. DA DASND SBMSɠUPUԠű03 DƠű03 MPBԠABԠS ------------------------------------------------------------------ HKƠNPUԠDAAAVA̠NԠUDNDAAH ------------------------------------------------------------------ DSBA Ơ0ҬNϠN SBV.ɠNS DABV. SA. SBñ. DABV. SA. DA DBSND NB SBMSɠUPUԠű0 DƠű0 MPBԠABԠS ------------------------------------------------------------------ HKƠNԠUDNMNDH(NBUƠU̠Sԩ ------------------------------------------------------------------ àSBA Ơ0 SBMSɠUPUԠű05 DƠű05 MPB ------------------------------------------------------------------ UNPDҠNUPԠNMNDH ------------------------------------------------------------------ ҠƠ0 SBMSɠUPUԠű06 DƠű06 MPB SKP ------------------------------------------------------------------ SUBUNSUSDBYAԠANDAԠPNS ------------------------------------------------------------------ .................................................................. HKƠADYҠMMANDBŠDUS .................................................................. BNP DAMHKDYҠMNDSAԠB DBB5 SBS.ɠSԠSԠNM? MPBɠYSK SBMSɠNϬUPUԠ065 DƠ065 SBS.ɠHKƠSAUSPԠUD SZB MPB .................................................................. HKƠUNϠADYҠMMANDAҠDѠ .................................................................. ANP ADAM5 DBB5 SBS.ɠADYҠMND? MPAɠYSK DBBN SBDS.ɠSSAKҠU? MPSAYS SBMSɠNϬUPUԠ06 DƠ06 SBS.ɠHKƠSAUSPԠUD AƠSZAҠԠϠP+ MPA SASBMSGHɠUPUԠH0 DƠH0 DBB SBDS.ɠSSAKҠU? MP+YS MPANϬHKDYNDAGAN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPAƠҠSԠϠP+ .................................................................. DUSԠ .................................................................. DѠNP DA DBD ϲAMND DϲBDAA 3SàMNDàDUS ϱ5àMND MPDѬ .................................................................. HKƠUPUԠBUҠAVAABŠ .................................................................. BUANP DAMHKDAAAG SBD.ɠSDAAAGSԠNM? MPBUAɠYSK SBV.ɠNϬNȘDN.NҠMSG DABV. SA. SBV. DABV. SA. DA DBSND SBMSɠUPUԠ066 DƠ066 SBS.ɠHKƠSAUSPԠUD SZBUA MPBUAɠҬԠϠP+ .................................................................. HKƠPNԠBUҠAVAABŠ .................................................................. PBUANP DAM0HKDAAAG SBD.ɠSDAAAGSԠNM? MPPBUAɠYSKԠϠP+ SBV.ɠNSԠ̠ANDDN.NҠMSG DABV. SAP. SBV. DABV. SAP. DA DBSND SBMSɠUPUԠ06 DƠ06 SBS.ɠHKƠSAUSPԠUD SZPBUA MPPBUAɠҬԠϠP+ .................................................................. HKƠNPUԠBUҠU̠SԠ .................................................................. BSNP DAM0HKMNDAG SB.ɠSMNDbAGSԠNM? MPBSɠYSK SBMSɠNϬUPUԠű00 DƠű00 SBS.ɠHKƠSAUSPԠUD SZBS MPBS SKP .................................................................. HKƠNPUԠDAAAVAABŠ .................................................................. BUANP DAMHKDAAAG SBD.ɠSDAAAGSԠNM? MPBUAɠYSKԠϠP+ DANŠNϬSԠUMN? PA MP+YS MPNMHN SZPNNŠMŠHAN? MP+YS MPNMHN DBBNPUԠHKN? SBDS. MP+YS MPNMHN DBB SBS.ɠSDNAԠS? MPHYSSҠҬPPϠAB SBMSɠNϬPKAU DƠűUPUԠű SBS.ɠHKƠSAUSPԠUD SBMSGHɠUPUԠH DƠH DBB5 SBS.ɠADYҠMND? MPDAGYSK SBMSGHɠUPUԠH06 DƠH06 MPDAGYϠPKAGAN HSBMSɠUPUԠű3 DƠű3 SBS.ɠHKƠSAUSPԠUD NMHSBV.ɠNȘDN.NҠMSG DABV. SA. SBñ. DABV. SA. DA DBSND NB SBMSɠUPUԠű0 DƠű0 SBS.ɠHKƠSAUSPԠUD SZBUA MPBUAɠҬԠϠP+ SKP SUBUNSVVANDV HSŠSUBUNSNVԠUMNN.ANDADN.ϠAS. AҠA̬BVNANSDGSNASɠI ANGSUN: SBV.ɠ(ҠV.ɠҠñ.ɩ P+...UN VNP DA DBBVA SBɲAS MPV VNP DASND DBBVA SBɲAS MPV VNP DASND NA DBBVA SBɲAS MPV BVADƠBV BVNP NP BVNP SKP SUBUNSDSԠANDSԠ HSŠSUBUNSHKNDVDUA̠SAUSBSƠ DAAHҠMNDH ANGSUN: DBBYBԠƠNSԠ(Y0...5 SBDS.ɠ(ҠS.ɩ P+...UNƠBԠSԠϠ P+...UNƠBԠSԠϠ0 DSԠNP D9ADAAGԠSAUS ANDBANDBԠMASK SZASSSBԠSԠϠ? SZDSԠNϬԠϠP+(BԽ0 MPDSԬɠYSԠϠP+(BԽ SԠNP ϴAMNDGԠSAUS ANDBANDBԠMASK SZASSSBԠSԠϠ? SZSԠNϬԠϠP+(BԽ0 MPSԬɠYSԠϠP+(BԽ SUBUNŠAԠ HSSUBUNŠSNDHŠANGҠNUPԠ NDAAHҠMNDH ANGSUN: SBA P+...ҠUN AԠNP DAM0 SAN C A נSZASAGU? MPנN SZNҠYSSANGS̠? MPנYS MPAԬɠNϬҠ SKP SUBUNŠϠDԠ303Ϡ030 ANGSUN: SBS. P+...NMA̠UN SҠNP SASAVASŠPMNDS SBSAVBSŠAԠMNDS ADԠҠMSGϠ030 SASH DAD DBD5 SBAҲB. DƠ030 DƠ303 DƠSH SBS. MPSҬ SUBUNŠϠDԠ303Ϡ03 ANGSUN: SBDS. P+...NMA̠UN DSҠNP SASAVASŠPDAAS SBSAVBSŠAԠDAAS ADԠҠMSGϠ03 SASH DAD DBD5 SBAҲB. DƠ03 DƠ303 DƠSH SBS. MPDSҬ SKP SUBUNŠSԠ HSSUBUNŠNVSSAUSϠASɠANDUPUS ҠMSSAG.BŠA̬SAVAMUSԠNANPSAUS ANDSAVBAԠSAUS ANGSUN: SBS. P+...NMA̠UN SԠNP DANŠNԠBؠBUƠҠPSAUS DBD SBAҲB. DƠNSA DƠB DƠSH DANŠNԠBAàBUƠҠAԠSAUS DBD SBAҲB. DƠNSA DƠBA DƠSH DBSAVANVԠPSAUSϠAS DAB. SBSAN. DBSAVBNVԠAԠSAUSϠAS DABA. SBSAN. DASAVAUNSAUSϠAANDB DBSAVB SBMSɠUPUԠ030Ҡ03 DƠ303 MPSԬ SKP SUBUNSSANDDS HSŠSUBUNSMPAŠMNDHANDDAAHSAUS PԠҬƠNSSAY ANGSUN: DASؠ(ҠDSةADPMND(ҠDAASԠNA SBS.ɠ(ҠDS.ɩ P+...NMA̠UN SNP 06BMNDADAԠMNDSԠNB PABSMNDSAUSK? MPSɠYS SBS.ɠNϬPԠ MPS DSNP D3BDAAADAԠDAASԠNB PABSDAASAUSK? MPDSɠYS SBDS.ɠNϬPԠ MPDS SKP SUBUNŠSM HSSUBUNŠNASDVŠҠSAKҠN̠MDŠ ANGSUN: SBSM. P+...NMA̠UN SMNP Ơ0 D33àDAA 0àMND 0ƠMND D3ƠDAA DASM 09AMND DABN D35ADAA MPSM SUBUNŠɄSM HSSUBUNŠNASDVŠҠSAKҠVנMDŠ ANGSUN: SBSM. P+...NMA̠UN SMNP Ơ0 D36àDAA ϱ0àMND ϱƠMND D3ƠDAA DAZ ϱAMND DABN D3ADAA MPSM SKP SUBUNŠDAϠ HSSUBUNŠMPASPDANDAUA̠DAA(AҠ ADANDPSҬƠNSSAY.BŠA̬PUBU MUSԠNANPDAAANDDBUMUSԠNANAԠDAA. Ơ(Bɩ0ADSϠBŠBANKƠNԬADSNԠϠ BŠBANK. ANGSUN: SBDA. P+...NMA̠UN P+...ҠUN DAϠNP DAPUBUA SAP DADBUA SAAP DANŠSԠԠϠ SA DAAPϬ ANDBSAŠADHKB SZASSADHKN? MPAGN SBMSɠYSUPUԠű DƠű SBS.ɠSSAUSPԠUD? AGDBPϬ DAAPϬ ANDMSK PABSPDAAUA̠ϠAԠDAA? MP+YS MPDҠN NDDA PAD0AS0SMPAD? MPDAϬɠYSԠϠP+ SZԠN SZP SZAP MPAG DҠSBDASŠPDAA SAADASŠAԠDAA DAB SZASADϠBŠBANK? MPNMSNN-ZϬN SBMSɠZϬYSUPUԠwű0 DƠű0 SBS.ɠSSAUSPԠUD? SZDA MPDAϬɠƠNN-B̬ԠϠP+ NMSSBV.ɠNSԠ̠N.Nű0 DABV. SA. SBV. DABV.ɠNSԠDNϠNű0 SA. A SASH DANŠNԠDؠBUƠҠPDAA DBD SBAҲB. DƠNSA DƠD DƠSH DAN DBDNԠDAàBUƠҠAԠDAA SBAҲB. DƠNSA DƠDA DƠSH DBDANVԠPDAAϠAS DAD. SBSAN. DBADANVԠAԠDAAϠAS DADA. SBSAN. DADDԠű0 DBD3 SBAҲB. DƠP DƠD DƠSH DAD DBD3 SBAҲB. DƠAD DƠDA DƠSH DAԠADԠNA DBSNDADDNϠNB SBMSɠUPUԠű0 DƠű0 SBS.ɠSSAUSPԠUD? MPNDGϠSԠƠ0SŠMPAD SKP SUBUNŠϠ HSSUBUNŠNVS0-BԠDAADS(UMNS ƠABUҠ(PUBUBUƠجPBUBUƠYMA̠ϠASɠ ANDDSPAYSHMNY. ANGSUN: DABU.BUҠPN(PUBUAҠPBUA SB. P+...NMA̠UN ϠNP SAPNSŠBUƠPN(ƠPUBUҠPBU DAM0SԠGAԠPNҠϠ0 SAG VADAM0SԠSMA̠PNҠϠ0 SAS DABUD.GԠBU)<:6DPN SAVAP NàŠNVԠUMNϠA DAPN DBBU. SBϲAS DABUM. SAVAPϬ SZVAP DABU. SAVAPϬ SZSϠAS0SNVD? MP+N MPDSYSGϠDSPAY0S SZGϠNMNԠGϠBY SZPNNMNԠPNBY SZVAPϠNMNԠVAPϠBY SZVAP MPNàGϠNVԠNԠUMN DSSBMSGìɠDSPAY0SNY DƠHBUD SZGϠAS0SNVANDDSP? MP+NϬNàPNSԠSϦVAP MPϬɠYS SZPN MPVA BUàNP BUMNP BU̠NP BU.DƠBU BUM.DƠBUM BU.DƠBU u<  12989-18005 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 SKP SUBUNŠSH HSSUBUNŠHKSADNAԠSANADYҠ MNDANDSAKҠU̠NDNS.ҠMSSAGSAŠGVN ƠANYƠHŠNDNSANNԠBŠMVD. ANGSUN: SBSH. P+...ҠUN P+...NMA̠UN SHNP DBB SBS.ɠSADNAԠSAN? MP+YS MPDHN SBMSGHɠUPUԠH050 DƠH050 DBB SBS.ɠSADNAԠSAN? MP+YS MPDHN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPSHɠҠ DHDBB5 SBS.ɠADYҠMND? MPDKYS DBB5N SBDS.ɠSNPUԠBUҠU? MPBYS SUDBBN SBDS.ɠSSAKҠU? MP+YS MPMANN SBMSGHɠUPUԠH0 DƠH0 DBB SBDS.ɠSSAKҠU? MP+YS MPDHN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPSHɠҠ BDAB5YϠAҠNPUԠBU DϴADAA DBB5 SBDS.ɠSNPUԠBUҠU? MP+YSGϠAҠMANUAY MPSUNϬGϠHKSAKҠND MANSBMSGHɠUPUԠH06 DƠH06 DBB5 SBS.ɠADYҠMND? MPDKYS SBMSɠNϬUPUԠ0 DƠ0 SBS.ɠHKƠSAUSPԠUD MPSHɠҠ DK@SZSH MPSHɠNMA̠ SKP SUBUNŠPUؠ ANGSUN: SBPU. P+...ҠUN P+...NMA̠UN PUؠNP SBSH.ɠSSHHKK? MPPUجɠNϬҠԠϠP+ DBB SBS.ɠSHP-MPY? MP+N-YS MPPS0-NϬK SBMSGHɠUPUԠH056 DƠH056 DBB SBS.ɠSHP-MPY? MP+N-YS MPPS0-NϬK SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPPUجɠҠԠϠP+ PS0A SASNDSԠSNDϠ0 SZPU MPPUجɠNMA̠ԠϠP+ SKP SUBUNŠDؠ ANGSUN: SBD. P+...ҠUN P+...NMA̠UN DؠNP SBSH.ɠSSHHKK? MPDجɠNϬҠԠϠP+ DBB35YSSPNSԬDAGҠSUPP SBSԬɠNVNԬҠSUPPPUNH? MP+3N-YSNϠMSSAG SBMSGHɠ-NϬUPUԠH06 DƠH06 DBB9 SBDS.ɠSHP-MPY? MP+N-YS MPS0-NϬK SBMSGHɠUPUԠH063 DƠH063 DBB9 SBDS.ɠSHP-MPY? MP+N-YS MPS0-NϬK SBMSɠUPUԠ06 DƠ06 SBS.ɠY;HKƠSAUSPԠUD MPDجɠҠԠϠP+ S0A SASNDSԠSNDϠ0 SZD MPDجɠNMA̠ԠϠP+ SKP SUBUNŠPUY ANGSUN: SBPUY. P+...ҠUN P+...NMA̠UN PUYNP DAM3 SAPUSԠPUNҠϠ-3 SZSNDNMNԠSND AAҠPUBUҠB̠ADMPA SASH DAZ DBD0 SBAҲB. DƠZ DƠPUBU DƠSH AGDBB SBS.ɠSADNAԠSAN? MPPYN-YSK SBMSɠ-NϬҬUPUԠ060 DƠ060 SBS.ɠHKƠSAUSPԠUD MPPUYɠҠԠϠP+ PYDBB5 SBS.ɠADYҠMND? MPHPYYSK DBBN SBDS.ɠSSAKҠU? MPSPYS SBMSɠNϬUPUԠ06 DƠ06 SBS.ɠHKƠSAUSPԠUD MPPUYɠҠԠϠP+ SPSBMSGHɠUPUԠH0 DƠH0 DBB SBDS.ɠSSAKҠU? MP+YS MPPYNϬHKDYNDAGAN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPPUYɠҠԠϠP+ HPYDBB SBS.ɠSHP-MPY? MP+N-YS MPPY-NϬK DASNDSASԠADNנS? PAD MPPYYSDNԠYHAԠHP-MPY SBMSGHɠNϬUPUԠH056 DƠH056 DBB SBS`.ɠSHP-MPY? MP+N-YS MPPY-NϬHKDYNDAGAN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPPUYɠҠԠϠP+ PYSBDA.ɠSDNנSBANK? MPPUYSKPPԠϠP+ SZPUNϬҬASԠASԠAMP? MP+NϬNNU MPPUYɠYSҠԠϠP+ SBMSGHɠUPUԠH DƠH SBB.ɠDADB̠DK? MPPUYɠNϬҠԠϠP+ MPAGYS PUSZPUY MPPUYɠNMA̠ԠϠP+ SKP SUBUNŠDY ANGSUN: SBDY. P+...ҠUN P+...NMA̠UN DYNP SZSNDNMNԠSND DBB SBS.ɠSADNAԠSAN? MPYN-YSK SBMSɠ-NϬҬUPUԠ060 DƠ060 SBS.ɠHKƠSAUSPԠUD MPDYɠҠԠϠP+ YDBB5 SBS.ɠADYҠMND? MPHYYSK DBBN SBDS.ɠSSAKҠU? MPSҠYS SBMSɠUPUԠ06 DƠ06 SBS.ɠHKƠSAUSPԠUD MPDYɠҠԠϠP+ SҠSBMSGHɠUPUԠH0 DƠH0 DBB SBDS.ɠSSAKҠU? MP+YS MPYNϬHKDYNDAGAN SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPDYɠҠԠϠP+ HYDBB9 SBDS."SHP-MPY? MP+N-YS MPY-NϬK DASNDSASԠADNנS? PAD MPYYSDNԠYHAԠHP-MPY SBMSGHɠNϬUPUԠH063 DƠH063 DBB9 SBDS.ɠSHP-MPY? MP+N-YS MPY-NϬHKDYNDAGAN SBMSɠUPUԠ06 DƠ06 SBS.ɠHKƠSAUSPԠUD MPDYɠҠԠϠP+ YSBDA.ɠSDNנSK(PAԩ? NPYSKԠϠP+ SZDYNϬԠϠP+ANYAY MPDY SUBUNŠSM HSSUBUNŠHKSƠHŠDVŠASԠPANASN SAKҠN̠MD.ƠNԬAҠSUSD. ANGSUN: SBSM. P+...NMA̠UN SMNP ϲAMNDGԠN̠BS ANDB SZAASDVNSKN̠MD? MPSMɠYSK SBSM.ɠNϬNԠDVƠSԠN̠MD SBMSGHɠUPUԠH053 DƠH053 MPSMɠ SKP ANSUBUNS HSŠSUBUNSAZŠA̠HŠPANSƠHŠ PNNGADҠPUNHUSDNHSDAGNS.SYMBS NHŠNAMŠƠAHSUBUNŠDSBŠAHPAN ASS: ...AD P...PUNH ...ADANDPUNH ...PNԠ(ũMUPUԠBUҠ S...PNԠ(SPAAŠPNԠDAAMPNԠBUҠ ...D(NϠADPUNHҠPNԩ A...USŠHPPҠ B...USŠHPPҠ ...NHBԠNPUԠD 0...SAKҠVנMDŠ ...USŠSAKҠ ...USŠSAKҠ ANGSUN: SBVYZ.ɠ(VYZSANDҠSYMBSPANDABVũ P+...ҠUN P+...NMA̠UN BNP DAHS B SBDD. Dà0 MPB SZB MPB BNP DABK B SBDD. Dà0 MPB SZB MPB PɲNP DABK DBNH SBDD. Dà0 MPPɲ SZPɲ MPPɲ ANP DASM B SBDD. Dà0 MPA SZA MPA ɱNP DASM DBNH SBDD. Dà0 MPɱ SZɱ MPɱ PɲNP DAPɲK DBNH SBDD. Dà0 MPPɲ SZPɲ MPPɲ ɲNP DAɲK DBNH SBDD. Dà0 MPɲ SZɲ MPɲ PSɲNP DAPSɲK DBNH SBDD. 0Dà0 MPPSɲ SZPSɲ MPPSɲ A0NP A B SBDD. Dà0 MPA0 SZA0 MPA0 0NP A DBNH SBDD. Dà0 MP0 SZ0 MP0 B0NP DAHSM B SBDD. Dà0 MPB0 SZB0 MPB0 ɲNP DAHS DBNH SBDD. Dà0 MPɲ SZɲ MPɲ BNP DAPɲK B SBDD. Dà0 MPB SZB MPB BNP DAɲK B SBDD. Dà0 MPB SZB MPB SBNP DAPSɲK B SBDD. Dà0 MPSB SZSB MPSB SKP MSSAGS ZBMA0ASà3ҠDAAH(HɠPҩ ZBMAASà3ҠMNDH(ϠPҩ 303ASà503ؠ ASà5SAUS Ԡ6 ASàP: BؠBSS Ԡ6 ASàA: BAàBSS ASà 030ASà5030MND 03ASà503DAA H03ASàH03AҠDVŬSAKSHPPS ASàPSSSPSAԬUN H033ASà0H033PSSSPUN H03ASàH03PSSSAԬUN H035ASàH035ADHP-HBANKAD ASàPSSSPجSAԬUN H036ASàH036ADHP-HBANKAD ASàPSSSPجSAԬUN H03ASà6H03SAKҠN̠MDŠHK ASàS H00ASà6H00SAKҠVנMDŠHK ASà5S H0ASà9H0NDSAK-AMϠMԻPSS UASà3UN H0ASà9H0NDSAK-AMϠMԻPSS ASà3UN H03ASà3H03PSSSPSAԬUN H0ASà5H0SAKҠU̬UNADPSS ASàSPSAԬUN 05ASà505SAUSSHSSAKҠU ASà9AҠUNAD( H06ASàH06NԠADYҠMNDAҠDV ASàPSSSPSAԬUN 0ASà00NԠADYҠMNDAҠA( H050ASà3H050ADNAԠSAN ASàAҠDVŬPSSSPSAԬUN 05ASà905SAUSSHSADNAԠSAN ASàAҠA( H05ASàH05ADHP-HBANKADS ASà3PSSSPجSAԬUN H053ASà9H053AҠDVŬSAKSPSSSP ASà5SAԬUN 05ASà05SԠABD( H055ASà0H055AҠSAKS ASàPSSSPSAԬUN H056ASà9H056HP-MPYADHBANKADS ASà3PSSSPجSAԬUN 05ASà905SAUSSHSHP-MPYAҠ ASà3AD( 060ASà9060NϠADAVDNAԠSAN( ASà 06ASà06NϠUNϠADYҠMND( H06ASà9H06ADHP-HSԠADSPSS ASà9SPجSAԬUN H063ASà9H063HP-MPYADHSԠADS ASàPSSSPجSAԬUN 06ASà906SAUSSHSHP-MPYAҠ ASà3AD( 065ASà065NԠADYҠMNDBŠD ASà( 066ASà9066ADUԠBUƠһDAAAGN ASàS(: UƠBSS ASà3D: UƠBSS ASà3( 06ASà906ADPNԠBUƠһDAAAGN ASà5ԠS(: PƠBSS ASà3D: PƠBSS ASà3( ű00ASà9ű00NBUƠU̠(MNDAGNԠS( ASà ű0ASà9ű0UNADNBUƠһDAAAGN ASà5SԠ(: NƠBSS ASà3D: NƠBSS ASà3( ű0ASà9ű0ADUԠBUƠһN-NԠNDAA ASàH(: ϠBSS ASà3D: ϠBSS ASà3( ű03ASà9ű03ADPNԠBUƠһNϠNԠNDA ASà5AH(: PBSS ASà3D: PBSS ASà3( ű0ASà9ű0UNADNBUƠһNϠNԠNDAA ASàH(: ɠBSS ASà3D: ɠBSS ASà3( ű05ASàű05NBUƠU̠NԠSԻNϠNԠN ASà6MNDH( ű06ASà5ű06UNPNԠNMNDH( ű0ASà0ű0NN-BANKADNAԠSAN( ű0ASà3ű0DAAMPAŠ(: ̠BSS ASà3D: ҠBSS ASà( Ԡ6 ASà DؠBSS Ԡ6 ASà DAàBSS ASà PASà3P: ADASà3A: űASàűPKAU( HASà6HԠHPNDAҠDV ASàPSSSPSAԬUN ű3ASà0ű3NPUԠHK( HASà6HAҠDVMVŠNN-B̠D ASàPSSSPSAԬUN H5ASà5H5PAҠDSGNS H6ASàH6 HASàHBUҠ: H0ASàH0BUҠY: HBUDASà BUDASàAAAAAAAAAAAAAAAAAAAAAAAA ASàAAAAAAAAAAAAAAAA HASà3HDҠNԠGNZD űASàűҠNDҠUN H3ASà6H3SAUS Ԡ6 ASàMND: BUàBSS Ԡ6 ASàDAA: BUDBSS ASà űASà0űADHK( 0ASà:0 ñASà: òASà: 3ASà:3 ôASà: 5ASà:5 6ASà:6 ÷ASà: ñ0ASà:0 ñASà: SKP SԠ0 S0NP SBS00.ɠDϠBASàɯϠҠDAAH SBMSGìɠAP<:6PNDDNAN DƠZBMA0ƠDAAH(HɠPҩ MPS0 SԠ S0U NP DASM ϱ3AMNDBGNHSAKN̠MD DANH ҠB D39ADAA DAUSSàGԠ̠AN ANDSMSKƠMNDH(ϠPҩ NA SBZB.ɠDϠBASàɯϠҠMNDH SBMSGìɠAPPNDDNAN DƠZBMAƠMNDH(ϠPҩ MPS0 .< ! 12989-18006 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 SԠ S0U NP DBBA SBSԬɠSBԠҠN? MPS0ɠYSMPҠNV(ԩ SBSM.ɠNϬNԬNԠDVҠSAKàMD ϱSàMND ϱ9àMND ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBMSGHɠUPUԠH03 DƠH03 DASADPMNDSAԠNA SBS.ɠMPAŠMNDSAUS DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBMSGHɠUPUԠH033 DƠH033 DASADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAAUS ------------------------------------------------------------------ SUBSԠ3 ------------------------------------------------------------------ SBMSGHɠUPUԠH03 DƠH03 DASADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBMSGHɠUPUԠH035 DƠH035 DASADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS ------------------------------------------------------------------ SUBSԠ5 ------------------------------------------------------------------ SBMSGHɠUPUԠH036 DƠH036 DAS6ADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS ------------------------------------------------------------------ SUBSԠ6 ------------------------------------------------------------------ SBMSGìɠUPUԠH03 DƠH03 SBMSGHɠUPUԠH0 DƠH0 DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS DAS3ADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBMSGHɠUPUԠH03 DƠH03 SBMSGHɠUPUԠH0 DƠH0 DADSADPDAASAUSNA SBDS.ɠMPAŠDAASAUS DAS3ADPMNDSAUSNA SBS.ɠMPAŠMNDSAUS ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBMSGHɠUPUԠH03 DƠH03 SBSM.ɠNԠDVҠSAKV̠MD ϲ0SàMND ϲàMND SBMSGìɠUPUԠH00 DƠH00 SBMSGHɠUd PUԠH0 DƠH0 DADSADPDAASԠNA SBDS.ɠMPAŠDAAS DAS5ADPMNDSԠNA SBS.ɠMPAŠMNDS ------------------------------------------------------------------ SUBSԠ9 ------------------------------------------------------------------ SBMSGHɠUPUԠH0 DƠH0 DADSADPDAASԠNA SBDS.ɠMPAŠMNDSAUS DASADPMNDSԠNA SBS.ɠMPAŠMNDS SBMSGHɠUPUԠH03 DƠH03 DADSADPDAASԠNA SBDS.ɠMPAŠDAAS DAS5ADPMNDSԠNA SBS.ɠMPAŠMNDS MPS0ɠԠMSԠ SKP SԠ3 S03U NP DBBASBԠҠN? SBSԬ MPS03ɠYSMPҠNV(ԩ SBSH.ɠAŠNA̠NDNSK? MP03N ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ SBSM.ɠYSNԠDVҠSAKV̠M SBMSGHɠUPUԠH05 DƠH05 SBMSGìɠUPUԠH00 DƠH00 DAS5 SBS. DADS SBDS. DAM5 SAA N3àA SAMɠDԠDDϠϠA--AGM SBA0. MP03 DAS0 SBS. DADS SBDS. SZAϠASԠ5HAD? MPN3àN SB0.ɠYS MP03 DAS5 SBS. DADS SBDS. SBMSGHɠUPUԠH0 DƠH0 DAS5 SBS. DADS SBDS. DAM5 SAA N3DSBB0. MP03 DAS SBS. DADS SBDS. SZAϠASԠ5HAD? MPN3DN SB0.ɠYS MP03 DAS5 SBS. DADS SBDS. ------------------------------------------------------------------ SUBSԠ ------------------------------------------------------------------ 03SBSM.ɠNԠDVҠSAKN̠MD SBMSGHɠUPUԠH053 DƠH053 SBMSGìɠUPUԠH03 DƠH03 DAS6 SBS. DADS SBDS. DAM5 SAA N3ASBA. MP03 DAS SBS. DADS SBDS. SZAϠASԠ5HAD? MPN3AN SBɱ.ɠYS MP03 DAS6 SBS. DADS SBDS. SKP ------------------------------------------------------------------ SUBSԠ3 ------------------------------------------------------------------ DAS6 SBS. DADS SBDS. DAM5 SAA N3BSBB. MP03 DAS SBS. DADS SBDS. SZAϠASԠ5HAD? MPN3BN SBɲ.ɠYS MP03 DAS9 SBS. DADS SBDS. SBMSGHɠUPUԠH055 DƠH055 M DAS9 SBS. DADS SBDS. MPS03 03SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS03 SKP SԠ S0U NP SBSM.ɠHKSAKN̠MD ADMNŠAԠ--AGMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNH ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS0N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP0YS AN SABɠNDàHAԠDSAŠϠBŠBANK DAHPA.GԠHPAPN SAP0 SBB.ɠDADNŠB̠ADK? MP0N PY0SBPUY.ɠYSPM"PUY"ANYSҠ? MP0YS ANϬPPAŠPUBUMHPA SASH DAZ DBD0 SBAҲB. P0NP DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP0YS SBB.ɠNϻPUNHDK? MP0N SZP0YSNMNԠHPAPN MPPY0GϠPSSNԠAD P0SBPɲ.ɠPUNHNHƬK? MP0N P0U SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S0?DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS0ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MP0YS A SABɠNDDSAŠNԠϠBŠBANK DAHPA. SA0GԠHPAPN Y0AADPUBUHPDAA SASH DAZ DBD0 SBAҲB. 0NP DƠPUBU DƠSH SBA.ɠADNŠADK? MP0N SBDY.ɠYSP"DY"ANYSҠ? MP0YS DASNDN PADSASԠADNAԠSAN? MP0YS SZ0NϬNMNԠHPAPN MPY0GϠPSSNԠAD 0SBɱ.ɠMVŠASԠADMנSK? MP0N MPS0ɠYSԠMS 0SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS0ɠҠԠMS SKP SԠ5 S05U NP SBSM.ɠHKSAKN̠MD ADMNŠNUPԠMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDPNԠ ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS05N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP05YS AN SABɠNDàHAԠDSAŠϠBŠBANK DAHPA.GԠHPAPN SAP05 SBB.ɠDAD8NŠB̠ADK? MP05N PY05SBPUY.ɠYSPM"PUY"ANYSҠ? MP05YS ANϬPPAŠPUBUMHPA SASH DAZ DBD0 SBAҲB. P05NP DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP05YS SBB.ɠNϻPUNHPNԦDK? MP05N SZP05YSNMNԠHPAPN MPPY05GϠPSSNԠAD P05SBPɲ.ɠPUNHPNԦNHƬK? MP05N P05U SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S05DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS05ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MP05YS A SABɠNDDSAŠNԠϠBŠBANK DAHPA.GԠHPAPN SA05 Y05AADPUBUHPDAA SASH DAZ DBD0 SBAҲB. 05NP DƠPUBU DƠSH SBA.ɠADNŠADK? MP05N SBDY.ɠYSP"DY"ANYSҠ? MP05YS DASNDN PADSASԠADNAԠSAN? MP05YS SZ05NϬNMNԠHPAPN MPY05GϠPSSNԠAD 05SBɱ.ɠMVŠASԠADMנSK? MP05N MPS05ɠYSԠMS 05SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS05ɠҠԠMS SKP SԠ6 S06U NP SBSM.ɠHKSAKN̠MD ADMNŠAԠ--AGMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDPNԠ ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS06N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP06YS AN SAASԠANAҠϠ0 SABɠNDàHAԠDSAŠϠBŠBANK SBB.ɠDADNŠB̠ADK? MP06N PY06SBPUY.ɠYSPM"PUY"ANYSҠ? MP06YS DAANϬPPAŠPUBUMHPA SASH DAA63 DBD0 SBAҲB. DƠHPA DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP06YS SBB.ɠNϻPUNHPNԦDK? MP06N DAAYS PAD3SԠAҽ3? MP+3YS SZANϬNMNԠԠA MPPY06GϠPSSNԠAD ASԠԠAҠϠ0 SAA MPPY06GϠPSSNԠAD P06SBPɲ.ɠPUNHPNԦNHƬK? MP06N P06U SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S06DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS06ɠN-YSԠMS SBD.7ɠ-NϬPM"D"ANYSҠ? MP06YS AN SAASԠANAҠϠ0 A SABɠNDDSAŠNԠϠBŠBANK Y06DAAADPUBUHPDAA SASH DAA63 DBD0 SBAҲB. DƠHPA DƠPUBU DƠSH SBA.ɠADNŠADK? MP06N SBDY.ɠYSP"DY"ANYSҠ? MP06YS DASNDN PADSASԠADNAԠSAN? MP06YS DAAN PAD3SԠAҽ3? MP+3YS SZANϬNMNԠԠA MPY06GϠPSSNԠAD ASԠԠAҠϠ0 SAA MPY06 06SBɱ.ɠMVŠASԠADMנSK? MP06N MPS06ɠYSԠMS 06SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS06ɠҠԠMS SKP SԠ S0U NP SBSM.ɠHKSAKN̠MD ADMNŠNUPԠMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PNԠ ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS0N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP0YS AN SAASԠANAҠϠ0 SABɠNDàHAԠ<:6DSAŠϠBŠBANK SBB.ɠDADNŠB̠ADK? MP0N PY0SBPUY.ɠYSPM"PUY"ANYSҠ? MP0YS DAANϬPPAŠPUBUMHPA SASH DAA63 DBD0 SBAҲB. DƠHPA DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP0YS SBB.ɠNϻPNԦDK? MP0N DAAYS PAD3SԠAҽ3? MP+3YS SZANϬNMNԠԠA MPPY0GϠPSSNԠAD ASԠԠAҠϠ0 SAA MPPY0GϠPSSNԠAD P0SBɲ.ɠPNԦNHƬK? MP0N P0U +< " 12989-18007 1435 S 0147 DG-2894A RDR/PNCH              H0101 6 SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S0DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS0ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MP0YS AN SAASԠANAҠϠ0 A SABɠDSAŠϠBŠBANKBU DNԠGVŠҠMSGABUԠ Y0DAAADPUBUHPDAA SASH DAZ DBD0 SBAҲB. DƠZ DƠPUBU DƠSH SBA.ɠADNŠADK? MP0N SBDY.ɠYSP"DY"ANYSҠ? MP0YS DASNDN PADSASԠADNAԠSAN? MP0YS MPY0NϬGϠPSSNԠAD 0SBɱ.ɠMVŠASԠADMנSK? MP0N MPS0ɠYSԠMS 0SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS0ɠҠԠMS SKP SԠ S0U NP SBSM.ɠHKSAKN̠MD ADMNŠAԠ--AGMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDPNԠSPAAŠDAA ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS0N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP0YS AN SAASԠANAҠϠ0 SABɠNDàHAԠDSAŠϠBŠBANK SBB.ɠDADNŠB̠ADK? MP0N PY0SBPUY.ɠYSPM"PUY"ANYSҠ? MP0YS ANϬPPAŠPUBUMU SASH DAZ DBD0 SBAҲB. DƠU DƠPUBU DƠSH DAA SASH DAA63PPAŠPBUMHPA DBD0 SBAҲB. DƠHPA DƠPBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP0YS SBSB.ɠNϻPUNHPNԠSPDK? MP0N DAAYS PAD3SԠAҽ3? MP+3YS SZANϬNMNԠԠA MPPY0GϠPSSNԠAD ASԠԠAҠϠ0 SAA MPPY0GϠPSSNԠAD P0SBPSɲ.ɠPUNHPNԠSPNHƬK? MP0N P0U ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S0DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS0ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MP0YS A SABɠNDDSAŠNԠϠBŠBANK Y0AADPUBUHPDAA SASH DAZ DBD0 SBAҲB. DƠU DƠPUBU DƠSH SBA.ɠADNŠADK? MP0N SBDY.ɠYSP"DY"ANYSҠ? MMP0YS DASNDN PADSASԠADNAԠSAN? MP0YS MPY0NϬGϠPSSNԠAD 0SBɱ.ɠMVŠASԠADMנSK? MP0N MPS0ɠYSԠMS 0SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS0ɠҠԠMS SKP SԠ9 S09U NP SBSM.ɠHKSAKN̠MD ADMNŠNUPԠMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDAMPԠϠPNԠ ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS09N-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MP09YS AN SABɠNDàHAԠDSAŠϠBŠBANK DAAM.GԠAMƠPN SAP09 SBB.ɠDADNŠB̠ADK? MP09N PY09SBPUY.ɠYSPM"PUY"ANYSҠ? MP09YS ANϬPPAŠPUBUMAM SASH DAZ DBD0 SBAҲB. P09NP DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP09YS SBB.ɠNϻPUNHPNԦDK? MP09N SZP09YSNMNԠAMƠPN MPPY09GϠPSSNԠAD P09SBPɲ.ɠPUNHPNԦNHƬK? MP09N P09U \SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S09DBB5 SBSԬɠSADϠBŠSUPPSSD? MPS09ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MP09YS A SABɠNDDSAŠNԠϠBŠBANK DAAM.GԠAMƠPN SA09 Y09AADPUBUHPDAA SASH DAZ DBD0 SBAҲB. 09NP DƠPUBU DƠSH SBA.ɠADNŠADK? MP09N SBDY.ɠYSP"DY"ANYSҠ? MP09YS DASNDN PADSASԠADNAԠSAN? MP09YS SZ09NϬNMNԠAMƠPN MPY09GϠPSSNԠAD 09SBɱ.ɠMVŠASԠADMנSK? MP09N MPS09ɠYSԠMS 09SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPS09ɠҠԠMS SKP SԠ0 SԱ0U NP SBSM.ɠHKSAKN̠MD ADMNŠAԠ--AGMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDAMPԠϠPNԠSPAAŠDAA ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPS0N-YSGϠADSN SBPU.ɠ]h-NϬPM"PU"ANYSҠ? MPԱ0YS AN SAASԠANAҠϠ0 SABɠNDàHAԠDSAŠϠBŠBANK SBB.ɠDADNŠB̠ADK? MPԱ0N PY0SBPUY.ɠYSPM"PUY"ANYSҠ? MPԱ0YS DAANϬPPAŠPUBUMPA SASH DAA39 DBD0 SBAҲB. DƠPA DƠPUBU DƠSH DAD9PPAŠPBUMSHB DBD0 SBAҲB. DƠSHB DƠPBU DƠSH DASNDSASԠDNAԠSAN? PAD MPP0YS SBSB.ɠNϻPUNHAMPԠPҠSPDK? MPԱ0N MPPY0YSGϠPSSNԠAD P0SBPSɲ.ɠPUNHAMPԠPҠSPNHƬK? MPԱ0N P0U SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ S0DBB5 SBSԬɠSADϠBŠSUPPSSD? MPSԱ0ɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MPԱ0YS AN SAASԠANAҠϠ0 A SABɠNDDSAŠNԠϠBŠBANK Y0DAAADPUBUHPDAA SASH DAA39 DBD0 SBAҲB. DƠPA DƠPUBU DƠSH SBA.ɠADNŠADK? MPԱ0N SBDY.ɠYSP"DY"ANYSҠ? MPԱ0YS DASNDN PADSASԠADNAԠSAN? MPұ0YS MPY0NϬGϠPSSNԠAD ұ0SBɱ.ɠMVŠASԠADMנS-K? MPԱ0N MPSԱ0ɠYSԠMS Ա0SBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPSԱ0ɠҠԠMS SKP G000B SԠ SԱU NP SBSM.ɠHKSAKN̠MD ADMNŠNUPԠMHD SAMɠҠHSS ------------------------------------------------------------------ SUBSԠ-PUNHANDAMPԠϠPNԠ ------------------------------------------------------------------ DBB6 SBSԬɠSPUPҠϠBŠSUPPSSD? MPSN-YSGϠADSN SBPU.ɠ-NϬPM"PU"ANYSҠ? MPԱYS AN SAASԠANAҠϠ0 SABɠNDàHAԠDSAŠϠBŠBANK SBB.ɠDADNŠB̠ADK? MPԱN PYSBPUY.ɠYSPM"PUY"ANYSҠ? MPԱYS DAANϬPPAŠPUBUMSHB SASH DAD9 DBD0 SBAҲB. DƠSHB DƠPUBU DƠSH DASNDSASԠDNAԠSAN? PAD MPPYS SBB.ɠNϻPUNHAMPԠPҦDK? MPԱN MPPYYSGϠPSSNԠAD PSBPɲ.ɠPUNHAMPԠPҦNHƬK? MPԱN PU SKP ------------------------------------------------------------------ SUBSԠ-AD ------------------------------------------------------------------ SDBB5 SBSԬɠSADϠBŠSUPPSSD? MPSԱɠN-YSԠMS SBD.ɠ-NϬPM"D"ANYSҠ? MPԱYS AN SAASԠANAҠϠ0 A SABɠNDDSAŠNԠϠBŠBANK YDAAADPUBUHPDAA SASH DAD9 DBD0 SBAҲB. DƠSHB DƠPUBU DƠSH SBA.ɠADNŠADK? MPԱN SBDY.ɠYSP"DY"ANYSҠ? MPԱYS DASNDN PADSASԠADNAԠSAN? MPұYS MPYNϬGϠPSSNԠAD ұSBɱ.ɠMVŠASԠADMנSK? MPԱN MPSԱɠYSԠMS ԱSBMSɠUPUԠ05 DƠ05 SBS.ɠHKƠSAUSPԠUD MPSԱɠҠԠMS SKP SԠ-PAҠDSGN SԱU NP SBSM.ɠHKSAKN̠MD ADMNŠNUPԠMHD SAMɠҠPAҠDSGN APPAŠPUBUMU(BUƠة SASH DAZ DBD0 SBAҲB. DƠU DƠPUBU DƠSH APPAŠPBUMHPA(BUƠY SASH DAA63 DBD0 SBAҲB. DƠHPA DƠPBU DƠSH SBMSGìɠUPUԠH5 DƠH5 MSBMSGHɠUPUԠH6ANDAԠҠMND DƠH6 A SASNDSԠSNDϠ0 ASנ-N ANDMSK PAM0ADN? MPMAYS PAMNϻADNY? MPMBYS PAMNϻDSPAY? MPMDAYS PAM3NϻDSPAYY? MPMDBYS PAMNϻPUNHM? MPMPUYS PAM5NϻPNԠM? MPMPҠYS PAM6NϻPUNHPNM? MPMPPYS PAMNϻPUNHPNԠSPMئY? MPMPPSYS PAM0NϻSAUSP? MPSŠYS PAMNϻ? MPؠYS SBMSGìɠNϬNPUԠҬUPUԠH DƠH MPMGϠAԠҠԠD MASBMSGìɠUPUԠ0 DƠ0 0ҠSZSND NP SBA.ɠADNŠADK? MPŠNϬGϠPԠҠƠDNK AYSANS(DBUϠPUBUBUƠA SASH DAD9 DBD0 SBAҲB. DƠDBU DƠPUBU DƠSH SBɱ.ɠMVŠADMנSK? MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MP0ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MBSBMSGìɠUPUԠñ DƠñ ñҠSZSND NP SBA.ɠADNŠADK? MPŠNϬGϠPԠҠƠDNԠK AYSANS(DBUϠPBUBUƠB SASH DAD9 DBD0 SBAҲB. DƠDBU DƠPBU DƠSH SBɱ.ɠMVŠADMנSK? MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MPñҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MDASBMSGìɠUPUԠò DƠò òҠSBMSGìɠUPUԠH DƠH DAPUBUAADPUBUBUƠAPN SB. DBBSPNUD? SBSԬ MPòҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MDBSBMSGìɠUPUԠ3 DƠ3 3ҠSBMSGìɠUPUԠH0 DƠH0 DAPBUAADPBUBUƠBPN SB. DBBSPNUD? SBSԬ MP3ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MPUSBMSGìɠUPUԠô DƠô ôҠSZSND NP SBB.ɠDADNנSK? MPŠNϬGϠPҠƠDNԠK SBPɲ.ɠYSPUNHDMAK? MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MPôҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MPҠSBMSGìɠUPUԠ5 DƠ5 5ҠSZSND NP SBB.ɠDADNנSK? MPŠNϬGϠPҠƠDNԠK SBɲ.ɠYSPNԠADMAK? MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MP5ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MPPSBMSGìɠUPUԠ6 DƠ6 6ҠSZSND NP SBB.ɠDADNנSK? MPŠNϬGϠPҠƠDNԠK SBPɲ.ɠYSPUNHPNԠADMA MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MP6ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD MPPSSBMSGìɠUPUԠ÷ DƠ÷ ÷ҠSZSND NP SBB.ɠDADNנSK? MPŠNϬGϠPҠƠDNԠK SBPSɲ.ɠYSPUNHPNԠADSPNU<:6ҠAB MPŠNϬGϠPҠƠDNԠK DBBSPNUD? SBSԬ MP÷ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD SŠSBMSGìɠUPUԠñ0 DƠñ0 ñ0ҠSBSA.ɠPԠSAUS DBBSPNUD? SBSԬ MPñ0ҠN-YSàDҠAGAN MPM-NϬGϠAԠҠNנD ؠSBMSGìɠUPUԠñ DƠñ MPSԱ ŠSBMSɠUPUԠű DƠű MPM AAU ND ?< # 12989-18008 1449 S 0122 HP 2894A DOS III B - DVR 34             H0101 , ASMBB̬Ԭ HDDV3:ADSDVҠҠHŠHP9 NAMDV3 NԠ.3.3 .3NP DB.3GԠUNADDSS SB.3ANDSŠԠAAY DB.3SԠDŠҠBADMPN SBBADϠSŠԠAAY NBSԠDŠҠGDMPN SBKMSŠԠAAY SBSϠNGUŠϠNSUNS SBSASGԠSAUSANDHKADY DA9ɠHKUSԠD AND.BSAŠUNND PA.SԠAAD? MPADYSGϠSAԠAD PA.SԠA? MPԠYSGϠSAԠ N̠USԠPSS ̠DA9 AƬAƠGԠUNND A̬A̠NGHԠMSԠBS AND.BANDANUԠSԠƠD SZASSSԠAA?o MPAҠYSHNGϠA PA.6SԠADYNAMàSAUSUS? MPDYNSԠYSGϠGԠSAUS PA.SԠASԠ? SA6ɠYSHNSԠSԠMŠҠҠB PA.BSԠANNDDUNNUS? MPUNYSGϠGԠNDDUNN. KؠDAKMGD ԠMP.3 AҠUSԠPSS AҠAANUԠNNA̠AGSDUPNA SAԱɠZϠUԠANSMSSNG SҠ.BƠMŠHŠϠAҠHŠAԠSAN SA6ɠANDSŠԠNϠNNA̠AGS BSԠUPҠPAND ϠSBDGϠD MPMɠANDGϠAҠN̠ϠSPD DYNAMàSAUSPSS DYNSԠDANԠADN.ƠPAMS PA.DSNϠƠPAMS? MPDYNKYSHNNNU BADؠDA.NϠHNԠSMPP MPԠANDGϠ DYNKDA5ɠGԠHŠSAUS DBԱɠGԠHŠADD.ƠHŠԠGS SABɠANDSŠԠAAY MPKؠGϠԠGD. SKP NDDUNN2PSS UNDBԱ0ɠGԠNDDUNND DA6ɠGԠNNA̠AGSD SZBSSƠԠSADUS MPDϠHNGϠD PB.SԠSԠSAKҠSԠMD? MPSSMDYSHNGϠSԠHŠMD PB.SԠSԠSAKҠVנMD? SMDҠ.BŠYSHNSԠSAKҠVנMD PB.3SԠANNHBԠNPUԠS? NHNҠ.BƠYSHNSԠBԠ5HŠNHBԠNPUԠB PB.NABŠPUNHNGNPUNHDADS? NPPҠ.BDYSHNSԠBԠ3HŠPPB. PB.5SԠAUSԠϠAҠHŠAԠSAN? MPSYSHNGϠAҠAԠSAN. ؠSA6ɠSŠAAYAGSD MPKؠGϠDN. N̠UNNHANDS SԠSAKҠSԠMD SSMDҠ.BŠHKBԠ Ҡ.BŠUNԠ MPؠANDGϠ SKP DUNŠDSAADƠUSD DNP SBAB̠GϠHKƠADSBANK.AԠBANKS. DA.BƠADAҠBUҠU̠MMAND .33ASANDUPUԠԠϠנSԠD HKɠDA6ɠGԠNNA̠AGSD SSASSHKHŠNHBԠNPUԠB MPNDSNԠN Ҡ.BBDSABŠNPUԠMMANDϠDAAHANN Ҡ.BƠANDAҠBUҠU̠NNPU NDҠ6ɠANUԠSԠƠD .3ASNABŠAD SBMPSAVŠBDUNGSAUSA SBSASGϠUPDAŠSAUSBS DBMPGԠBBAK DA5ɠGԠU̠PSUDϠSAUS AƬAƠGԠSAKҠU̠B A̬A̠HŠԠANBŠSD SAA̠SHPPҠU? MPNDYYSHNGϠNԠADY A̠HKHPPҠBԠϠSŠƠMPY SSASSSHPPҠϠMPY? MPHKHNϠHNGϠHKHPPҠN HKHDA9ɠHPPҠSMPYSԠSD? AƬA̠GԠHPPҠSԠB SSAASHPPҠSD? MPàYSHNGϠԠUS HKHDA5ɠGԠU̠SAUSNHŠAG. AND.SAŠHPPҠMPYB SZASSSHPPҠNŠMPY? MPDSNϠHNGϠD HѠDA9ɠHKϠSŠƠHPPҠSUSD AƬA̠GԠHPPҠSԠBԠHŠԠANBŠSD SSASSSHPPҠNŠSD? MPàYSHNGϠԠUS DSDA9ɠADUSԠN̠D AƠHKSAKҠSԠB SSASSAKҠSD? ADB.BBYSHNSԠBԠNN SASSPDSPD? ADB.BAYSHNSԠBԠ0NN̠D A̠KAԠHPPҠS SSASHPPҠϠSD ADB.BƠYSHNSԠBԠ5NN̠D DA6ɠADNNA̠AGSD A̠GԠϠSAKҠMDŠB SSASSSBԠZ? ADB.BàYSHNSAKҠSԠMDŠSSPD .ñBHSUPUԠHŠN̠DϠHŠHS SB̠GϠ̠HBANKSƠNSSAY .DSàHSàSԠN̠NHɠSԠHANN MPDɠUNϠA SKP àDA6ɠADNNA̠AGSD AND.SAŠSԠMŠҠMUPŠҠB Ҡ.0BSԠPDANDƠBS SBSSSGϠNUDŠHMNHŠSAUS SAƠDVŠSNԠADY MPàHNGϠNԠADY SZ6ɠSԠMUPŠҠB MPؠANDUNϠDS ̠UNŠϠ̠AANGUPUԠBU ̠NP ŠNDAŠSԠMŠHU ̠UNϠHNGϠDϠSMŠ SBKDYƠDVŠSADY MP̬ɠHNUNϠA SBAGϠADDVŠAG AND.BŠSAŠDVŠAG SZASSƠAGSS SZŠҠHHSSHŠSԠMŠHU .ϴSàSàHNUPUԠϠ̠BU MP̠GϠSŠƠ'ŠADYY KDYHKSHŠADYҠMMANDB KDYNP .B3AHSADHŠHGHSԠHANN AND.B5GԠ"ADYҠMMAND"B SZASSƠDVŠSNԠADYHN SZKDYSԠBADUN MPKDYɠANDUNϠA ADSSUPҠAADUS ADBNGUŠMMANDϠHɠSԠD SBԱɠSԠZϠUԠHŠANSMSSNG DA9ɠHKҠBNAYAD AND.00BPKUԠBNAYBԠ6M SZASSƠNԠBNAY MPASàHNSKPHKҠBYŠNGH BNYDAԱɠGԠHŠNGHƠBU SSAƠԠSNBYS MPBADؠHNAKŠBADԠϠDS .ϲU ASàASHKADNSSƠϠSԠD SSAƠNPUԠBUҠSU MPMɠHNGϠϠNNUAN DϠDA6ɠHKNHBԠNPUԠB SSAƠԠSN MPàHNԠUS SBDSŠGϠDAAD NԠANNUANUNϠDS MPԠANDԠϠDS ԠSSUPҠAŠUS ԠBSԠUPMMANDϠHɠSԠD SBԱɠZϠUԠHŠANSMSSNG DA9ɠGԠUSԠN̠D AƬAƠHKҠPUNHANDPNԠBS AҠPSNPB SASSƠP0HN ADB.BŠNABŠPUNH A̬A̠PSNMBԠ6 SSAƠMHN MPBNYGϠBNAYHK ASɠAҠSŠAS SASSƠK0HN ADB.BDNABŠPNNG MPDANDGϠDAAD BNYAҬSAƠKHN ADB.BDNABŠPNNG DAԱɠHKBUҠNGH SSAƠUSԠSҠBYS MPBADؠHNAKŠBADԠϠDS DDA5ɠGԺU̠PSUDϠSAUS AND.HKAԠSAN SZASSƠHŠSAADNHŠAԠSAN MPϠHNGϠSԠPNԠANDPUNHANDGϠϠ.S. SBKDYƠDVŠSADY BHNSSUŠPAND MPDϠSŠGϠDAADANDUNϠDS AB̠ASAADHAԠSSDNԠNHŠDV ADBUҠUN̠BUҠU̠GS AB̠NP BNKDA6ɠGԠNNA̠AGD ANDB6UNƠNԠBANKB SB̠SA6ɠANDPUԠNNA̠AGSBAK ASSBAGϠADAHAA SSASSƠBUҠMPY MPAB̬ɠUNϠA ANDBGԠUMNSƠAD SZASSƠADSBANKHN MPASHNAԠSMŠMŠHAAS NB̠DA6ɠGԠNNA̠AGD Ҡ.BàSԠBԠϠNDAŠNԠBANK MPSB̠ANDSŠԠAAY SKP SϠNGUSHŠϠNSUNS SϠNP DA3ɠADHŠHANN̠NUMB AND.BSAŠ DBAPUԠԠNBAS ҠAɠPUԠGHҠAANSUN PA.ϲƠHŠAGSҠANANSUN MPSϬɠHN'ŠAADYNGUD SA.ϲSŠ'ŠNԠNGUDANDMUSԠDϠ SA.ϲ SA.ϲ3 ADA.00BMAKŠANANSUN SA.3ANDSŠԠAAY SA.3 SA.33 ADA.00MAKŠANSìàNSUN SA.ϴANDSŠԠAAY SA.ϴ SA.ϴ3 Ҡ.BBMAKŠAàNSUN SA.5ANDSŠԠAAY SA.5 NGUŠHŠHGHSԠHANN DABGԠS̠BAK NAMAKŠԠHGH ҠAɠMAKŠAAHSNSUN SA.B SA.B3 ADA.00MAKŠANBHSNSUN SA.ñANDSŠԠAAY Ҡ.BBUNƠBB ADA.00MAKŠANSàHSàNSUN SA.DANDSŠԠAAY Ҡ.BBMAKŠAàHSNSUN SA.űANDSŠԠAAY MPSϬɠANDGϠBAKϠA SKP SASPUSGHҠASAŠPSUDϠSAUS MNMANBANDMBHH HGHANDנSԠHANNS.ԠSPSSB HAԠHŠנSԠHANN̠̠NԠHAVŠSAUS NϠAVAAB.ƠSϠHŠNMANM SNԠUPDAD. SASNP .ϲU KSASADHŠנSԠHANN DBAPYԠϠHŠAGS AAҠHŠAGS SA5ɠANDANUԠHŠSAUS SSBƠSAUSSNԠAVAABŠNנS.D MPKHSHNGϠHKHŠHɠSԠD BƠPSNNPUԠHKB SSBƠNPUԠHK Ҡ.BԸHNSԠԠNHŠSAUS SBƠADHK Ҡ.HNSԠԠNHŠSAUS B̬B̠PSNHPPҠBS SSBƠHPPҠSMPY Ҡ.HNSԠԠNHŠSAUS SBƠHŠSANUPUԠHK Ҡ.B9HNSԠԠNHŠSAUS B̠PSNSAKҠU̠B SSBƠSAKҠSU Ҡ.00BHNSԠBԠNHŠSAUS SA5 KHSU .BAHSADHŠHGHSԠHANN DBAPUԠANB ANDB000ANDUԠHɠBS BҬSBBҠPSNHPPҠBԠƠԠSMPY Ҡ.BԴHNSԠHŠBԠNHŠSAUS BҬBҠPSNAԠSANB SBSSƠAԠSANSNԠU Ҡ.HNSԠHŠBԠNHŠSAUS BҬBҠPSNADYB SBSSƠNԠADY SNDҠ.HNSԠNԠADYB SBSSSGϠMBNNSAS SASSƠADY MPSASɠHNUNϠA DABADϠADBADMPND MP.3ɠANDGϠBAKϠDS NDYDA5ɠGԠSAUS MPSNDANDGϠSԠNԠADYB SKP SSSSSHŠSAUS SSSNP Ҡ5ɠNUDŠSԠƠSAUS SA5ɠSŠAAYMPSDSAUS ANDHAƠGԠҠHAƠƠD SABSAVŠHŠҠHAƠSAUS DAԴɠGԠHŠSHԠSAUS ANDHAƠGԠUPPҠHAƠƠԴ ҠBPUԠNHŠҠHAƠƠHŠSAUS SAԴɠSŠAAYHŠSAUS MPSSSɠUNϠA SKP .3NP BSԠUPMPNDS SBKMGDMPNSAZ0 NBBADMPNSN SBBADϠSŠAAYBADMPN DB.3SԠUPPSSBŠҠUԠMSAS NBSԠNNUANUNAҠD SB.3SϠHAԠԠANUNϠDSHU.3 SBSϠNGUŠ-ϠNSUNS DAԱ3ɠHKҠMPNM PAHAƠƠԠSAMPNMA MPKؠHN'ŠDNŠPUNHNGGϠϠDS MɠSBSASGԠSAUSANDHKƠDVŠSUP DAԱ0ɠSԠUPҠŠҠADMPN SAԱɠSAVŠBUҠADDSS DAԱɠHKNGHϠSŠƠHAAҠҠDS SSASSƠNGHSPSV MANASZAHNNGAŠ. SSƠԠSZ MPKؠHN'ŠDN.AKŠKMPN. SAԱ3ɠSAVŠNGAVŠNGH AAҠUԠANSMSSNUN SAԱɠUSŠԱϠUNԠUPUN̠DN. SAMPNAZŠNN-BANKUN DA9ɠHKUSԠD AND.BSAŠUNND PA.ƠԠSAADUS MPADHNGϠϠADMPNHAND 3PA.ƠԠSAŠUS MPԠHNUMPϠŠMPNHAND KؠSBSASGϠGԠUPDADSAUSBŠŠAV DA6ɠADNNA̠AGSD ANDNBƠAҠNHBԠNPUԠANDMUPŠҠBS SA6ɠANDSŠԠBAK ؠDBԱɠADHŠANSMSSNG NBHANGŠMPSSBŠBYŠUN ŬBϠDUN DA9ɠGԠHŠUSԠUNND AND.00BSAŠHŠBNAYB:BԠ6 ADA.NDBASBԠUPϠHŠSGNB ҠԱɠҠHŠSGNBS SSASSƠN(ASɠANDDUNԩ DBԱɠHNGԠHŠHҠUNԠBAK SBԱɠANDSŠԠAAY DAKMADAHGDDMPND SAԱ3ɠAҠŠNNUANAG .űàHSAҠNHSԠD .5àSAҠNSԠD ԠMP.3ɠԠϠDS BADؠSBSASBADԠMMPNSN àDABADϠGԠBADMPND SAKMANDSŠԠAAYNGDMPND MPؠԠϠDS SKP ADHANDSHŠADNGƠADS ADDA9ɠGԠUSԠN̠D AƬAƠPSNBԠ6 A̠NϠHŠSGNB SSASSƠBԠ6SZ MPASàHNGϠDϠANASɠAD BNDSHŠHSNGBNUMNANDPAKD BNDBԱɠGԠBUҠADDSSNϠB SAƠV(BԷSN MPPBɠHNADSPAKDBNAY BɠDSHŠUMNBNAYADNG BɠSBASŠADSUMNBNAY.ADAUMN SBBNSZGϠNMNԠUNSANDPNS MPBɠPUN̠DN PBɠDSHŠPAKDBNAYADNG PBɠSBAADAUMN AƠPSNԠNBS5- SAMPANDSAVŠ SBAADAUMNN AƬAƠPSN SAMPANDSŠ AND.BGԠUPPҠBSNBS3-0 ҠMPGԠBSMPVUSAD SBBNSZSŠԠANDNMNԠPNS DAMPGԠBSMPVUSAD ANDHAƠGԠԠHAƠƠD SAMPANDSŠԠAAY SBAADNԠUMN AƬAƠPSNUPPҠBSNBS-0 AƠNYBSADHUGH SAMPSAVŠHŠD ANDHAƠGԠNYHŠGHԠHA ҠMPPUԠHŠA̠DGH SBBNSZANDGϠSŠԠANDNMNԠPNS DAMPGԠBSMASԠADBAK ANDUPҠGԠԠUAҠD SAMPSAVŠHŠD SBAANDADHŠNԠUMN ҠMPPUԠGHҠAHŠD SBBNSZSŠԠNUSҠBUҠANDN.PNS MPPBɠPUN̠DN ASàADSHŠHHDŠANDNVSϠAS ASàDAԱɠADNGHƠAD SSAƠNGHSNGAV MPSDNHNŠNDNԠMDY MANASŠԠSADUN ASNVԠϠNGAVŠBYŠUN SDNSAԱ3ɠANDSŠԠAAYNUNԠDN DAԱɠADADDSSƠBU ŬAANDNVԠϠBYŠADDSS SAMP3ANԠUSŠԱBAUSŠƠND AAҠAANDNAZ SAMPUMNUN PSBAGԠAUMNMHŠAD BAҠUԠABŠDSPAMN SAMP5SAVŠUMN SZASSƠUMNSBANK MPBANKHNSKPANSAN NBNKAND.BGԠҠNNŠBSƠUMN SZASSƠBS-9AŠBANK MPBԸHNHKBS-0 PA.0BƠ-PUNH MPBADVHNGϠNԠADY DB.9ADAGHԠҠ9PUNH SAASƠBԠ9SS B9MPSԠ}VHNSKPSԠANDGϠϠS DB.ADGHԠҠPUNH ASSAASSKPBԠ.ƠBԠSS BԷMPSԠHNSKPSԠANDGϠϠS DB.6ADGHԠҠ6PUNH SAASƠBԠ6SS B6MPSԠHNSKPSԠANDGϠϠS DB.5ADGHԠҠ5PUNH SAASƠBԠ5SS B5MPSԠHNSKPSԠANDGϠϠS DB.ADGHԠҠPUNH SAASƠBԠSS BԴMPSԠHNSKPSԠANDGϠϠS DB.3ADGHԠҠ3PUNH SAASƠBԠ3SS B3MPSԠHŠSKPSԠANDGϠϠS DB.ADGHԠҠPUNH SAASƠBԠSS BԲMPSԠHNSKPSԠANDGϠϠS DB.ADGHԠҠPUNH SAASƠBԠSS BԱMPSԠHNSKPϠS BƠŠGԠHŠNYBԠASS SԠSZAƠANYHҠBSAŠN MPBADVHNNVADHHGϠNԠADY BԸDAMP5GԠUMNBAK AҬSAA̠PSNBԠ.ƠԠSS ADB.HNADDϠABŠDSPAMN. SBMPSAVŠABŠDSPAMN HKHɠBAҠDSPAMN ANDB000KAԠUMNSAND0 SZASSƠHYAŠZ MPNDVHNGϠϠHŠNDƠNVSN BԱPA.BBƠBԠSS DB.60BADDSPAMNԠHA BԱPA.BAƠBԠSS DB.0BADDSPAMNԠHA6 B0PA.B9ƠBԠ0SS DB.0BADDSPAMNԠHA3 SZBSSƠHŠASMŠHANZNŠPUNHD MPBADVHNGϠNԠADY NDVADBMPADDUPDSPAMNS BANKSZMPNMNԠUMNUN DAMPGԠԠNϠAGS SZBƠHŠHAAҠSNԠBANK SAԱɠHNUPDAŠHŠASԠNN-BANKUN DABNVԠBYŠDSPAMNԠϠDDSPAMN ASBYSHNGԠGH ADAABHAADDNADDSSƠHHϠASɠAB DAAɠGԠDMAB SBSSƠHŠBYŠADDSSSVN AƬAƠGԠHŠԠBYŠƠDMAB ANDHAƠAҠUԠBS5-9 DBMP3GԠBUҠBYŠADDSSNBGS SŠHŠBYŠNAAԠHŠBYŠADDSSNB SBŬBNVԠBUҠADҠϠDAD SAMP5SAVŠBY DABɠGԠUNԠDNBUҠNϠA SZSSƠBYŠADDSSASVN AƬAƠHNAŠBYSƠBUҠD ANDHAƠGԠԠҠGHԠHAƠƠBUҠD ҠMP5PUԠBYŠMBUҠANDBYŠADGGH SZSSƠBYŠADDSSASVN AƬAƠHNAŠBYSƠDϠBŠSD SŠSABɠSŠDBAKNϠBUҠƠUS SZMP3NMNԠBUҠBYŠADDSS SZԱ3ɠNMNԠUNԠDN.ƠSNԠZ MPPHNGϠNVԠNԠUMN A̠ADSԠHUGHNBKϠHKƠADASBANK NBKSBAB̠GϠNSHUPADNGAD DA6ɠGԠNNA̠AGSD DBMPADNNBANKUN SZBƠADSNԠBANK Ҡ.BàHNUNNԠBANKBԠN SA6ɠSŠNNA̠AGSD MPKؠANDUNϠDS ƠHŠSABADHHDŠHNԠH BADVDA.SԠBADHHB MPSNDANDGϠSԠNԠADY UNSUSDBYADSN ANPADHŠנSԠHANN A̠UPϠHŠƠNϠDAAADY .ϲ3ASADHŠSSԠHANN SSASSƠDAABUҠSMPY MPAɠHNGϠBAKϠA A̠SŠKAԠDAAADYAG SSASSƠDAASNԠADY MPA̠HNPHUGHADUN̠ADY AҠSŠDADϠUNDϠHŠA .ϴSàSàUSԠMŠDAA .5àSAҠN̠NנSUBHANN(GH MPAɠUNϠA AADSHŠנSԠHANN̠ANDHKSҠDAAPSN ANP SBAADHŠנSԠHANN SSASSƠDAASNԠPSN MPNBKGϠHKƠADASBANK ANDBGԠDAABSNY SZAƠUMNSNԠBANK SZMPHNNMNԠNN-BANKUN MPAɠANDUNϠA BNSZNMNSPNSANDHKSҠMPN ԠASϠSSHŠDAAYNHŠUSҠBU BNSZNP SABɠSŠHŠDUSԠADNHŠUSҠBU SZԱɠNMNԠBUҠDADDSS NBD SZAƠHŠDSDSNN-ZϠHN SZԱɠNMNԠHŠANSMSSNUN SZԱ3ɠNMNԠHŠUNԠDN MPBNSZɠUNϠA MPNBKGϠHKƠBANKANDUNϠDS SKP ԠHŠŠMPNSN ԠDA5ɠGԠU̠PSUDϠSAUS ANDB60000HKϠSŠHAԠPNԠҠPUNHASNABD SZASSƠHYN' MPԠHNUMPϠԠBAUSŠDSŠNDD DA6ɠADNNA̠AGSD AƠPSNPPANDNԠBANKBS AND.3SAŠHM PA.ƠPPNԠBANK MPNDYHNPPSNԠNABDANDADSNԠBANK DA.ND0ADAMNUS0 SAMP5SŠԠNMP5ҠUSŠNNGPUNHBU DA9ɠGԠUSԠN̠D AND.00BKAԠMBԠ6 SZAƠMSN MPBNYHNGϠϠHŠBNAY ASàSABUҠNAS-HHMA  ASàDA.D0SŠSԠUPASɠ.SPDBUҠDSPAMN SASPDƠS0DNMPUNHBU DAԱɠADBUҠNGH DBԱ3ɠADUNԠDN SSASSƠBUҠNGHSPSV BSHNUSԠNDS.DUBŠBYŠUN SBԱ3ɠSŠBYŠUNԠ(NGAVũ DBԱɠGԠDBUҠADDSSNϠBGS ŬBNVԠԠϠABYŠADDSS APSBASàGϠUԠPUԠHŠBY SBSZGϠNMNԠPNSANDHKƠDN MPAPGϠGԠNԠBYŠϠBŠUPU BNYHSSBNUMNBNAYANDPAKDBNAY BNYDBԱɠSԠUPBUҠADDSS DA9ɠADUSԠN̠D AND.00BHKVBԠ SZAƠVSN MPPBɠHNGϠŠPAKDBNAY BɠSABUҠNUMNBNAYMA DA.D0SŠSԠUPҠUMNBNAY SASPDƠSŠSԠƠPNԠBUҠMPUNHBU BɠDABɠADDMUSҠBU ANDBGԠUMNBS SBAUPUԠHŠDϠHŠנSԠHANN SBSZNMNԠPNSANDHKƠDN MPBɠPUN̠DN PBɠSHŠUSҠBUҠNPAKDBNAYMA PBɠDA.D60 SASPDƠSŠPUNHANDPNԠBUҠS DABɠADDMBU AƬAƠPSNSUPPҠBSNϠBS-0 A ANDBGԠDƠBS5- SBAANDUPUԠHŠD DABɠGԠDBAKAGAN AND.BGԠSҠBS AƬAƠMVŠHMNϠBS-9 SAMPANDSAVŠHMҠA NBNMNԠBUҠADDSS SZMP5NMNԠUMNUN DABɠGԠNԠDMBU SAMP3SŠԠҠAҠUS AƬAƠAŠԠANDGHԠBY ANDHAƠGԠDƠBS5-9 SBPBAGϠUPUԠAUMN DAMP3GԠBAKASԠD ANDHAƠGԠDƠBS5-9HY'VŠBNN AƠMVŠHAƠUPBS SAMPSŠԠ3ƠUMN DABɠGԠNԠDMBU SAMP3SŠԠAAYҠAҠUS AƠMVŠUPPҠBSϠҠBS AND.BANDGԠDƠSԠƠBS SBPBAGϠUPUԠAUMN DAMP3GԠDBAK ANDBGԠҠBS SAMPPUԠHMAAYҠUSŠBYPBA SBPBAGϠUPUԠHŠUMN ADB.NDDMNԠB MPPBɠGϠDϠNԠ3DS SKP UNSUSDBYŠSGMNS PBAMBNSHŠԠPAԠMMPANDH GHԠPAԠMHŠAGSҠϠMAK AUMN.ԠHKSƠHŠUSԠSM- PŠNHŠMDDŠƠUMNANDƠS DSNԠMPŠHŠUMNBUԠDSUPU . PBANP SAMPSŠGHԠPAԠƠD DAԱ3ɠADUNԠDN MASZAƠUNԠDNSNԠ- DAMPHNGԠGHԠPAԠƠ.(MNԠDNBUƩ ҠMPGԠԠPAԠƠUMN SBAUPUԠHŠUMN SBSZNMNԠPNSANDHKƠDN MPPBAɠUNϠA SZNMNSPNSANDHKSҠMPN SZNPNҠHASB SZMP5NMNԠUMNUN SSƠԠGSϠZ MP̠GϠHKҠSPD SZԱɠNMNԠHŠANSMSSNG NBNMNԠHŠBUҠPN SZԱ3ɠNMNԠHŠUNԠDN.Ơ'ŠNԠDN MPSZɠHNGϠBAKϠA MP̠SŠGϠ̠BUҠANDHKҠSPD NAHNVSHŠNNSƠHŠAGS MASɠϠHHUNDNHŠAGS NAHNP PA.D96NYNN-VADASɠBN3-(BASŠ0 MPBADƠ96HNAKŠBAD ADA.ND3ADDANGAVŠ3 SSAƠHAAҠSSSHAN3 MPBADHNAKŠBAD ADA.ND9ƠHAAҠSGAҠHAN SSASS(HHSUPPҠMԠƠSMA̠S MPBADHNAKŠBAD ADA.D6BASUPϠHKҠSMA̠S SSASSƠԠSASMA̠ ADA.ND3BASԠϠMAKŠԠAPPAҠASAAPA ADA.D65BASSϠHAԠBANKS0DSPAMNԠNAB ADAABAHADDNADDSSƠASɠϠHHAB DAAɠADHHDŠMAB MPNAHɠUNϠA BADANBADԠUPUԠABANK MPNAHɠUNϠUS AUPUSϠHŠנSԠD ANP .3ASUPUԠUMNϠHŠנSԠHANN AUPϠHŠUN̠ADY SBAGϠADHŠנSԠD AND.BŠKAԠAGB SZASSƠԠSNԠADY MPAHNPUN̠ADY .ϴ3SàSàSԠDAAAVAABŠN MPAɠUNϠA ̠SUPHŠUPUԠBUҠƠNSSAY HNԠHKSҠSPAAŠPNԠDAA ƠԠSPSNԠԠHNUPUS ̠NP AAҠA PAMP5SHŠUMNUNԠDNϠZ? MPKSPDYSHNGϠHKSPD SBAGϠUPUԠABANK SZMP5ƠMP5<0 MP-HN'ŠNԠDN.GϠUPUԠABANK KSPDDA9ɠADUSԠN̠D AND.BàƠSPDBԠSS SZASSƠSPDBԠSNԠS MPؠGϠԠϠDSUN̠DNŠPUNHNG. DBԱ0ɠGԠGNA̠BUҠADDSS ADBSPDƠADDϠԠHŠSԠMHŠPUNHBU ŬBNVԠADDSSϠBYŠADDSS DA.ND0ADA-0 SAMP5ANDSŠ UPSBASàGϠUPUԠHŠBYŠƠHŠPNԠBU NBHNNMNԠHŠBUҠADDSS SZMP5NMNԠHŠUNԠDN.AŠŠDN? MPUPNϬHNPUN̠DN ؠDAHAƠSԠŠMPN SAԱ3ɠBYUANGԱ3Ϡ3B DA6ɠGԠNNA̠AGSDUN̠DNŠPUNHNG SSAƠNHBԠNPUԠSS MPKؠHNԠϠDSNנ'ŠDN MPNԠSŠGϠAԠ̠HŠNԠADSD ASàUPUSABYŠMHŠBYŠADDSS HAԠSNANDNHŠBGSҠUPN NY ASàNP DABGԠBYŠADDSSNϠAG. ŬANVԠϠDADDSS.SAVŠBYŠN.N DAAɠGԠDNANNGBYŠSPD SZSSƠԠBYŠSSPD AƬAƠHNMVŠԠϠHŠGHԠBY ANDHAƠGԠGHԠHAƠƠD SBNAHGϠNVԠMASɠϠH SBAANDUPUԠHŠUMN MPASìɠUNϠA SKP DAASNƠDV HHϠASɠAB ABHADƠ+ ASà63569:'"-KMNP!$ ASà60SUVYZ\_?ABDGH.<(+ ASɠϠHHAB ABAHDƠ+ Ԡ0000SPA Ԡ006! Ԡ0006" Ԡ00 Ԡ0$ Ԡ0 .BBԠ000 Ԡ00' Ԡ0( Ԡ0 Ԡ0 Ԡ0+ Ԡ0 .BAԠ000- Ԡ0. Ԡ00 .B9Ԡ0000 .BԸԠ000 .BԷԠ000 .B6Ԡ0003 .B5Ԡ000 .BԴԠ0005 .B3Ԡ0006 .BԲԠ000 .BԱԠ000 .B0Ԡ0009 Ԡ00: Ԡ0 Ԡ0< Ԡ00 Ԡ0 Ԡ006? Ԡ00 Ԡ00A Ԡ00B .00Ԡ00 Ԡ00D Ԡ00 Ԡ00 Ԡ00G Ԡ00H Ԡ00 Ԡ00 Ԡ00K Ԡ00 Ԡ00M Ԡ00N Ԡ00 Ԡ00P Ԡ00 Ԡ00 Ԡ00S .00Ԡ00 Ԡ00U Ԡ00V Ԡ00 Ԡ00 Ԡ00Y Ԡ00Z Ԡ0 Ԡ0\ Ԡ0 Ԡ006 Ԡ0_ .BàԠ0000 .BDԠ0000 .BŠԠ0000 .BƠԠ00000 NBƠԠ06 AɠA0USDϠNGUŠϠNSUNS MPԠ0 MPԠ0 MP3Ԡ0 MPԠ0 MP5Ԡ0 KMԠ0USDϠKPHŠGDMPND BADϠԠ0USDϠKPHŠBADMPND UPҠԠ0000UPPҠUAҠD .BԠUSDϠANDUԠS-9ƠAUMN .0BԠ0USDϠSԠƠANDPANDBS .0BԠ0USDϠHKҠ-PUNH .60BԠ60USDASABŠSԠҠPUNH .0BU.BԴUSDASABŠSԠҠPUNH .0BU.B5USDASABŠSԠҠ0PUNH .ND0Dà-0USDϠUNԠUMNSUPU .D0Dà0PUNHBUҠSԠҠUMNBNAY .D0Dà0PUNHBUҠSԠҠASɠ .D60Dà60PUNHBUҠSԠҠPAKDBNAY .00BU.BԷUSDϠHKVBԠƠN̠D .D96Dà96USDNHKNGASɠNVSNϠH. .ND3Dà-3USDNHKNGASɠϠHHNV. .ND9Dà-9USDNHKNGASɠϠH.NVSN .D6Dà6USDNASɠϠHHNVSN .ND3UBUSDNASɠϠHHNVSN .D65Dà65USDNASɠϠHnljfHNVSN SPDƠԠ0SԠBYDNԠSϠPNԠϠSPDBU .0BU.D96USDϠHKADYANDADYҠMMANDBS ..U53B .ND0U..-0 .ND9U..-9 .NDU..- .NDU..- .ND6U..-6 .ND5U..-5 .NDU..- .ND3U..-3 .NDU..- .NDU..- .0U.. .U..+ .U..+ .3U..+3 .U..+ .5U..+5 .6U..+6 .U..+ .U..+ .9U..+9 .0U..+0 .00BU..+ .BU..+3 .3BU..+ .BU..+5 .BU..+6 HAƠU..+ HAƠU..+ ...U0B ԱU...+ ԲU...+ 3U...+3 ԴU...+ 5U...+5 6U...+6 ԷU...+ ԸU...+ 9U...+9 Ա0U...+0 ԱU...+ ԱU...+ Ա3U...+3 ԱU...+ Ա5U...+5 Ա6U...+6 ԱU...+ NԠU...+ SU9 HSU0 AU0 BU ND l , 12989-18010 1704 S 0222 HP2894 RTE DRIVER DVA15             H0102 wzASMB,B,R,L,T,C DATE CODE: 1704 HED *****DVA15: A RTE DRIVER FOR THE HP2894***** NAM DVA15,0 ENT IA15,CA15 IA15 NOP LDB IA15 GET RETURN ADDRESS STB CA15 AND STORE IT AWAY LDB .3 SET CODE FOR BAD COMPLETION STB BADCO STORE IT AWAY INB SET CODE FOR GOOD COMPLETION STB OKCOM STORE IT AWAY JSB SETIO CONFIGURE IO INSTRUCTIONS JSB S2SPD CHECK FOR STACKER 2 & SPD REQUESTS. JSB STATS GET STATUS AND CHECK READY LDA EQT6,I CHECK REQUEST CODE AND .17B ISOLATE FUNCTION FIELD CPA .1 IS IT A READ? JMP IREAD YES GO START READ CPA .2 IS IT A WRITE? JMP IWRIT YES GO START WRITE * * CONTROL REQUEST PROCESSOR * ICTRL LDA EQT6,I ALF,ALF GET FUNCTION CODE RAL,RAL IN RIGHT MOST BITS AND .17B AND CLEAN OUT REST OF WORD SZA,RSS IS IT A CLEAR?o JMP CLEAR YES THEN GO CLEAR CPA .6 IS IT A DYNAMIC STATUS REQUEST? JMP DYNST YES GO GET STATUS CPA .7 IS IT A SET EOT? STA EQT12,I YES, THEN SET FIRST TIME OR ERROR BIT CPA .17B IS IT AN EXTENDED FUNCTION REQUEST? JMP EXFUN YES GO GET EXTENDED FUNCTION. IOKEX LDA OKCOM GOOD EXIT IEXIT JMP IA15,I * * CLEAR REQUEST PROCESSOR CLEAR CLA CLEAN OUT INTERNAL FLAGS WORD UPON CLEAR STA EQT13,I ZERO OUT TRANSMISSION LOG CLRWS IOR .BITF COME HERE TO CLEAR THE WAIT STATION STA EQT12,I AND STORE IT INTO INTERNAL FLAGS CLB SET UP FOR PLAIN FEED IFECO JSB FEED GO FEED JMP CFOMI AND GO CLEAR CONTROL TO STOP FEED * * DYNAMIC STATUS PROCESSOR * DYNST LDA EQT11,I GET DYNAMIC STATUS WORD. STA B SAVE IT IN B REG FOR USER REQUEST JMP IOKEX MAKE GOOD EXIT. IBADX LDA .2 NO, THEN IMPROPER REQUEST. JMP IEXIT AND GO EXIT. * * STACKER 2 AND SEPARATE PRINT DATA (SPD) * PROCESSOR * S2SPD NOP  LDA EQT6,I CHECK REQUEST CODE. AND .17B ISOLATE FUNCTION FIELD. CPA .1 IS IT A READ. JMP IRES2 YES, CHECK FOR STACKER 2 REQUEST. CPA .2 IS IT A WRITE. JMP IWSSP YES, CHECK FOR S2 AND SPD REQUEST. CPA .3 IS IT A CONTROL REQ. JMP ICOS2 YES, CHECK FOR S2 REQUEST. JMP S2SPD,I NOT ANY OF THE ABOVE GO BACK. IRES2 LDA RQCNT LOAD NO. OF PARAMETERS. CPA .3 IS OPTIONAL PARAMETER INCLUDED? JMP S2SPD,I NO,RETURN TO CALLER. LDA EQT6,I YES,GET CONTROL WORD. LDB EQT9,I GET PARAMETER AND CK STACKER BIT. SLB IS STACKER 2 SELECTED ? ADA .BITB YES, SET BIT11 TO INDICATE S2. STA EQT6,I RESTORE CONTROL WORD. JMP S2SPD,I RETURN TO CALLER. IWSSP LDA RQCNT LOAD NO. OF PARAMETERS. CPA .3 IS OPTIONAL PARAMETER INCLUDED. JMP S2SPD,I NO,RETURN TO CALLER. LDA EQT6,I YES, GET CONTROL WORD. LDB EQT9,I GET PARAMETER AND CK STACKER BIT. SLB IS S2 SELECTED ? ADA .BITB YES, SET BIT11 TO INDICATE S2. RBR ROTATE B RIGHT 1. SLB IS SPD SELECTED ? ADA .BITC YES, SET BIT12 TO INDICATE SPD. STA EQT6,I RESTORE CONTROL WORD. JMP S2SPD,I RETURN TO CALLER. ICOS2 LDB EQT6,I GET CONTROL WORD. LDA EQT7,I GET PARAMETER. AND =B100 ISOLATE STACKER SELECT BIT. SZA IS STACKER 2 SELECTED ? ADB .BITB YES, SET BIT11 TO INDICATE S2. STB EQT6,I RESTORE CONTROL WORD. LDA EQT7,I GET PARAM AGAIN. AND =B77 ISOLATE EXT FCN. STA EQT7,I RESTORE EQT7 WITH EXTENDED FCN ONLY. JMP S2SPD,I RETURN TO CALLER. SKP * * EXTENDED FUNCTION PROCESSOR * EXFUN LDB EQT7,I GET EXT FCN CODE. LDA EQT12,I GET INTERNAL FLAGS WORD SZB,RSS IF IT IS A FEED REQUEST JMP IFEDO THEN GO FEED CPB .1 IS IT SET STACKER SELECT MODE? JMP SSMOD YES THEN GO  SET THE MODE CPB .2 IS IT SET STACKER OVERFLOW MODE? SOMOD IOR .BITE YES, THEN SET STACKER OVERFLOW MODE CPB .3 IS IT AN INHIBIT INPUT REQEST? INHIN IOR .BITF YES, THEN SET BIT 15,THE INHIBIT INPUT BIT CPB .4 ENABLE PUNCHING ON PUNCHED CARDS? ENPOP IOR .BITD YES, THEN SET BIT 13, THE POP BIT. CPB .5 IS IT A REQUEST TO CLEAR THE WAIT STATION? JMP CLRWS YES THEN GO CLEAR WAIT STATION. EXFEX STA EQT12,I STORE AWAY FLAGS WORD JMP IOKEX GO DONE. * * CONTROL FUNCTION HANDLERES * * * SET STACKER SELECT MODE * SSMOD IOR .BITE CHECK BIT 14 XOR .BITE TURN IT OFF JMP EXFEX AND GO EXIT * * * * * * SKP * * FEED ROUTINE FEEDS A CARD IF REQUESTED * FEED NOP JSB EATBL GO CHECK IF CARD IS BLANK. EAT BLANKS. LDA .BITF LOAD CLEAR BUFFER FULL COMMAND .IO33 OTA LOS AND OUTPUT IT TO LOW SELECT CODE CHKII LDA EQT12,I GET INTERNAL FLAGS WORD SSA,RSS CHECK THE INHIBIT INPUT BIT JMP ENRED ITS NOT ON IOR .BITB DISABLE INPUT COMMAND TO DATA CHANNEL XOR .BITF AND CLEAR BUFFER FULL ON INPUT ENRED XOR EQT12,I CLEAN OUT REST OF WORD .IO32 OTA LOS ENABLE READ LDA TOBIT GET TIME OUT FLAG. SSA IS T.O. FLAG SET? JMP FEEDS YES, SKIP HOP & STACKER CHKS&FEED CARD. LDA OCHFL GET OUTPUT CK FLAG. SZA IS THIS A REFEED FOR A WRITE OUTPUT CK. JMP FEEDS YES,SKIP HOPPER AND STACKER CKS & FEED CARD. STB TEMP1 NO,SAVE B DURING STATUS CALL. JSB STATS GO UPDATE STATUS BITS LDB TEMP1 GET B BACK LDA EQT11,I GET FULL PSEUDO STATUS ALF,ALF GET STACKER FULL BIT RAL,RAL WHERE IT CAN BE TESTED SLA STACKER FULL? JMP NREDY YES THEN GO NOT READY RAL CHECK HOPPER 2 BIT TO SEE IF EMPTY SSA,RSS IS HOPPER TWO EMPTY? JMP CHKH1 NO THEN GO CHECK HOPPER ONE CHKH2 JLDA EQT6,I HOPPER 2 IS EMPTY IS IT SELECTED? ALF,RAL GET HOPPER SELECT BIT SSA WAS HOPPER 2 SELECTED? JMP NREDY YES THEN GO REJECT REQUEST CHKH1 LDA EQT11,I GET FULL STATUS IN THE A REG. AND .8 ISOLATE HOPPER 1 EMPTY BIT SZA,RSS IS HOPPER ONE EMPTY? JMP FEEDS NO THEN GO FEED CHREQ LDA EQT6,I CHECK TO SEE IF HOPPER 1 IS REQUESTED ALF,RAL GET HOPPER SELECT BIT WHERE IT CAN BE TESTED SSA,RSS IS HOPPER ONE SELECTED? JMP NREDY YES THEN GO REJECT REQUEST FEEDS LDA EQT6,I LOAD REQUEST CONTROL WORD ALF CHECK STACKER SELECT BIT SSA IS STACKER 2 SELECTED? ADB .BITB YES THEN SET BIT 11 IN CONTROL SLA IS SPD SPECIFIED? ADB .BITA YES THEN SET BIT 10 IN CONTROL WORD RAL LOOK AT HOPPER SELECT SSA IS HOPPER TWO SELECTED ADB .BITF YES THEN SET BIT 15 IN CONTROL WORD LDA EQT12,I LOAD INTERNAL FLAGS WORD RAL GET TO STACKER MODE BIT SSA,RSS IS BIT ZERO? ADB .BITC YES THEN STACKER SELECT MODE IS SPECIFIED LDA OCHFL GET WRITE OUTPUT CHECK FLAG. SLA,RSS IS THIS AN OUTPUT CK RE-FEED(OCHFL=1). JMP .IOC1 NO,THIS IS A NORMAL FEED OR A RE-WRITE REQ. ISZ OCHFL RESET OUTPUT CK FLAG TO 2 FOR SECOND PASS. LDA B YES,STRIP OUT PUNCH,PRINT AND AND =B115777 SPD BITS FROM CONTROL WORD. STA B UPDATE CONTROL WORD IN B-REG. .IOC1 OTB HIS OUTPUT THE CONTROL WORD TO THE HISELECT JSB FILL GO FILL WITH BLANKS IF NECESSARY .IOD1 STC HIS,C SET CONTROL ON HI SELECT CHANNEL JMP FEED,I RETURN TO CALLER * SKP * REJEC LDA EQT12,I LOAD INTERNAL FLAGS WORD AND .1 ISOLATE FIRST TIME OR MULTIPLE ERROR BIT IOR OPREJ SET OP REJECTED. JSB STSTS GO INCLUDE THEM IN THE STATUS SLA IF DEVICE IS NOT READY JMP CRJEC THEN GO NOT READY ISZ EQT12,I SET MULTIPLE ERROR BhIT JMP CEFEX AND RETURN TO RTE * * FILL ROUTINE TO FILL A WAITING OUTPUT BUFFER * FILL NOP LDA CNTNO GET LOOP COUNTER VALUE(-100). STA CNTR SET COUNTER TO LIMIT "LIA"LOOP. CCE INDICATE FIRST TIME THRU LOFIL EQU * NO THEN GO DO SOME IO JSB CKRDY IF DEVICE IS READY JMP FILL,I THEN RETURN TO CALLER JSB LIA GO READ DEVICE FLAG AND .BITE ISOLATE DEVICE FLAG SZA,RSS IF FLAG IS SET SEZ,CLE OR THIS IS THE FIRST TIME THRU .IO41 STC LOS,C THEN OUTPUT TO FILL BUFFER JMP LOFIL GO SEE IF WE'RE READY YET * * * CKRDY CHECKS THE READY FOR COMMAND BIT * CKRDY NOP .IOB3 LIA HIS READ THE HIGH SELECT CHANNEL AND .BIT5 GET "READY FOR COMMAND" BIT SZA,RSS IF DEVICE IS NOT READY THEN ISZ CKRDY SET BAD RETURN JMP CKRDY,I AND RETURN TO CALLER * * IREAD SETS UP FOR A READ REQUEST * * IREAD CLB CONFIGURE COMMAND TO HI SELECT CODE. STB EQT13,I FIRST ZERO OUT THE TRANSMISSION LOG LDA EQT6,I CHECK FOR BINARY READ AND .100B PICK OUT BINARY BIT 6 M SZA,RSS IF NOT BINARY JMP IRASC THEN SKIP CHECK FOR BYTE LENGTH IRBNY LDA EQT8,I GET THE LENGTH OF BUFFER SSA IF IT IS IN BYTES JMP IBADX THEN TAKE BAD EXIT TO RTE .IO21 EQU * IRASC LIA LOS CHECK READINESS OF LO SELECT CODE SSA IF INPUT BUFFER IS FULL JMP CFOMI THEN GO TO CONTINUATION IFEDO LDA EQT12,I CHECK INHIBIT INPUT BIT SSA IF IT IS ON JMP REJEC THEN REJECT REQUEST JSB FEED ELSE GO FEED A CARD ICONT CLA CONTINUATION RETURN TO RTE JMP IEXIT AND EXIT TO RTE * * * IWRIT SETS UP FOR A WRITE REQUEST * IWRIT CLB SET UP COMMAND TO HI SELECT CODE. STB EQT13,I ZERO OUT THE TRANSMISSION LOG LDA EQT6,I GET REQUEST CONTROL WORD ALF,ALF CHECK FOR PUNCH AND PRINT BITS RAR POSITION P BIT SLA,MRSS IF P=0 THEN ADB .BITE ENABLE PUNCH RAL,RAL POSITION M BIT 6 SSA IF M=1 THEN JMP IBNRY GO BINARY CHECK IASCI RAR ELSE ASCII SLA,RSS IF K=0 THEN ADB .BITD ENABLE PRINTING JMP REFED AND GO FEED A CARD IBNRY RAR,SLA IF K=1 THEN ADB .BITD ENABLE PRINTING LDA EQT8,I CHECK BUFFER LENGTH SSA IF REQUEST IS FOR BYTES JMP IBADX THEN TAKE BAD EXIT TO RTE REFED LDA OCHFL GET OUTPUT CK FLAG. SZA,RSS IS THIS A REWRIT BECAUSE OF OUTPUT CK. JMP IWFED NO,CONTINUE NORMAL WRITE REQUEST. JSB FEED YES, SET PRINT/PUNCH BITS IN FEED CONTROL WD. CLA CLEAR OUTPUT CHECK FLAG. STA OCHFL CHECK FLAG. JMP CFOMI REPROCESS WRITE COMPLETION SECTION. IWFED LDA EQT11,I GET FULL PSEUDO STATUS AND .4 CHECK WAIT STATION SZA,RSS IF THERE IS A CARD IN THE WAIT STATION JMP IFECO THEN GO SET PRINT AND PUNCH AND GO TO C. S. JSB CKRDY IF DEVICE IS READY CLB THEN ISSUE PLAIN FEED JMP IFEDO ELSE GO FEED A CARD AND RETURN TO RTE * * * EATBL EATS A CARD THAT IS RESIDENT IN THE DEVICE * READ BUFFER UNTIL BUFFER FULL GOES LOW * * EATBL NOP IBLNK LDA EQT12,I GET INTERNAL FLAG WORD AND =B167777 TURN OFF NOT BLANK BIT. SETBL STA EQT12,I AND PUT INTERNAL FLAGS BACK LDA CNTNO GET LOOP COUNTER VALUE(-100). STA CNTR SET COUNTER TO LIMIT "LIA" LOOP. EATS JSB LIA GO READ A CHARACTER SSA,RSS IF BUFFER EMPTY JMP EATBL,I RETURN TO CALLER AND =B7777 GET COLUMNS OF CARD SZA,RSS IF CARD IS BLANK THEN JMP EATS THEN EAT SOME MORE CHARACTERS NOTBL LDA EQT12,I GET INTERNAL FLAG WORD IOR .BITC SET BIT 12 TO INDICATE NOT BLANK JMP SETBL AND STORE IT AWAY * * * * * SETIO CONFIGURES THE IO INSTRUCTIONS * SETIO NOP LDA EQT4,I LOAD THE CHANNEL NUMBEYR AND .77B ISOLATE IT LDB A PUT IT IN B ALSO IOR LIAI PUT TOGETHER A LIA INSTRUCTION CPA .IO21 IF THE A REGISTER = AN LIA INSTRUCTION JMP SETIO,I THEN WE'RE ALREADY CONFIGURED STA .IO21 ELSE WE'RE NOT CONFIGURED AND MUST DO IT STA .IO22 STA .IO23 * ADA .100B MAKE AN OTA INSTRUCTION STA .IO31 AND STORE IT AWAY STA .IO32 STA .IO33 * ADA .1100 MAKE AN STC,C INSTRUCTION STA .IO41 AND STORE IT AWAY STA .IO42 STA .IO43 * IOR .BITB MAKE A CLC INSTRUCTION STA .IO51 AND STORE IT AWAY STA .IO52 * * CONFIGURE THE HIGH SELECT CHANNEL * LDA B GET LOSEL BACK INA MAKE IT HIGH IOR LIAI MAKE A LIA HIS INSTRUCTION STA .IOB2 STA .IOB3 * ADA .4100 MAKE AN OTB HIS INSTRUCTION STA .IOC1 AND STORE IT AWAY * XOR .BITB TURN OFF B BIT ADA .1100 MAKE AN STC HIS,C INSTRUCTION STA .IOD1 AND STORE IT AWAY * IOR .BITB MAKE A CLC HIS INSTRUCTION STA .IOE1 AND STORE IT AWAY JMP SETIO,I AND GO BACK TO CALLER SKP * * * STATS PUTS TOGETHER A SOFTWARE PSUEDO STATUS * FROM INFORMATION OBTAINED FROM BOTH THE * HIGH AND LOW SELECT CHANNELS. IT IS POSSIBLE * THAT THE LOW SELECT CHANNEL WILL NOT HAVE STATUS * INFO AVAILABLE. IF SO THE INFORMATION FROM IT * IS NOT UPDATED. * STATS NOP .IO22 EQU * CKLOS LIA LOS READ THE LOW SELECT CHANNEL LDB A COPY IT TO THE A REGISTER CLA CLEAR THE A REGISTER STA EQT11,I AND CLEAN OUT THE STATUS SSB IF STATUS IS NOT AVAILABLE ON LOW SEL. CODE JMP CKHIS THEN GO CHECK THE HI SELECT CODE BLF POSITION INPUT CHECK BIT SSB IF INPUT CHECK IOR .BIT8 THEN SET IT IN THE STATUS SLB IF READ CHECK < IOR .2 THEN SET IT IN THE STATUS RBL,RBL POSITION HOPPER 1 BITS SSB IF HOPPER 1 IS EMPTY IOR .8 THEN SET IT IN THE STATUS SLB IF THERE IS AN OUTPUT CHECK IOR .BIT9 THEN SET IT IN THE STATUS RBL POSITION STACKER FULL BIT SSB IF STACKER IS FULL IOR .100B THEN SET BIT IN THE STATUS STA EQT11,I CKHIS EQU * .IOB2 LIA HIS READ THE HIGH SELECT CHANNEL LDB A PUT A IN B AND =B177000 AND OUT HI BITS RBR,SLB,RBR POSITION HOPPER 2 BIT IF IT IS EMPTY IOR .BIT4 THEN SET THE BIT IN THE STATUS RBR,RBR POSITION WAIT STATION BIT SLB,RSS IF WAIT STATION IS NOT FULL IOR .4 THEN SET THE BIT IN THE STATUS RBR,RBR POSITION READY BIT SLB,RSS IF NOT READY SNRED IOR .1 THEN SET NOT READY BIT JSB STSTS GO COMBINE STATS SLA,RSS IF READY JMP WTCHK CHECK IF WRITE WAS REQUESTED. LDA BADCO NT RDY,GET BAD CODE TO SEE IF IA15 OR CA15 ENTRY. CPA .3 IS ENTRY FROM IA15 (BADCO=3)? JMP CNTCK YES,GO CHECK FOR CONTROL REQUEST. LDA EQT11,I CHK EQT11 WORD FOR INPT CHK,OUTPT CK COND. AND =B1400 STRIP ALL BITS EXCEPT BIT 8&9. SZA,RSS DID INPUT CK,OUTPUT CK EXIST ON CA15 ENTRY. JMP STKCH NO, CHECK IF STKER FULL OR(AND) DEVICE OFF. AND =B1000 ISOLATE OUPUT CHECK BIT. SZA,RSS DID OUTPUT CHECK OCCUR? JMP CNTCK NO,GO CHECK FOR CONTROL REQUEST. LDA EQT6,I GET REQUEST WORD. AND .17B ISOLATE REQUEST CODE. ADA .ND2 ADD NEG. 2 TO A REG. SZA IS REQUEST A WRITE? JMP CNTCK NO,GO CHECK FOR CONTROL REQUEST. LDA .1 YES,SET OUTPUT CHECK STA OCHFL FLAG TO ONE. CNTCK LDA EQT6,I YES, GET REQUEST WORD. AND .17B ISOLATE REQUEST CODE. CPA .3 IS IT AN I/O CONTROL REQUEST.? JMP DYRTN YES,CHECK FOR DYNAMIC STAT REQ. ;T LDA ERRTO GET TIME OUT VALUE (-3 SEC). STA EQT15,I SET TIME OUT CLOCK. LDA =B10000 SET BIT12 OF EQT 4 IOR EQT4,I (DRIVER TO HANDLE TIME OUT) STA EQT4,I SET S BIT IN EQT4 WORD. .BDXX LDA BADCO NO,LOAD BAD COMPLETION CODE. JMP IA15,I AND RETURN TO RTE. DYRTN LDA EQT6,I GET REQUEST CODE AGAIN. ALF,ALF GET FUNCTION CODE. RAL,RAL IN RIGHT MOST BITS. AND .17B ISOLATE FUNCTION CODE. CPA .6 IS IT A DYNAMIC STAT ROUTINE. JMP DYNST YES, GO TO DYNAMIC STAT ROUTINE. JMP .BDXX NO, BAD CODE. NREDY LDA EQT11,I GET STATUS JMP SNRED AND GO SET NOT READY BIT * WTCHK LDA EQT6,I CHECK REQUEST CODE. AND .17B ISOLATE FUNCTION FIELD. CPA .2 IS IT A WRITE? JMP OPTCK YES,CHECK FOR OUTPUT CK ON LAST REQUEST. TOCHK LDA EQT4,I GET EQT4 WORD. ALF SET TIME OUT BIT (BIT11). SSA,RSS HAS TIME OUT OCCURRED. JMP STATS,I NO, RETURN TO CALLER STBIT STA TOBIT YES, SET TIME OUT FLAG. JSB FEED AND FEED A CARD. LDA EQT4,I GET EQT4 WORD AGAIN. AND =B173777 CLEAR OUT T.O. BIT (BIT11). STA EQT4,I UPDATE EQT4 WORD. CLA CLEAR OUT STA TOBIT TIME OUT FLAG.T GLAG. JMP IA15,I RETURN TO RTE WITH A=0 * & WAIT FOR INTERRUPT. * STKCH LDA EQT11,I CHK DYN STATUS FOR STACKER FULL. AND =B100 ISOLATE STACKER FULL BIT. SZA IS STACKER FULL ON CA15 ENTRY. JMP STATS,I YES,FINISH CA15 REQ.,NEXTIA15 WILL CATCH ERR. JMP CNTCK NO,DEVICE IS OFF LINE OR PWR IS OFF. * EXIT WITH IRROR CODE=1 TO P+2. * * OPTCK LDA OCHFL GET OUTPUT CHECK FLAG. SZA,RSS HAS OUTPUT CHECK OCCURRED ON LAST REQ. JMP TOCHK NO,GO CHECK FOR TIME OUT. CPA .2 YES.2ND PASS FOR OUTPUT CK REPROCESSING? JMP IWRIT YES,RE-ISSUE WRITE REQUEST. RAR NO, ITS PAGr<:6SS 1 (OCHFL=1); * * SETUP FEED REQUEST FOR RETRANSMISSION OF * DATA FROM THE LAST WRITE REQUEST (PASS2). * JMP STBIT 2 AND GO FEED CARD. * STSTS STORES THE STATUS * STSTS NOP IOR EQT11,I INCLUDE REST OF STATUS STA EQT11,I STORE AWAY COMPOSED STATUS AND RHALF GET LOWER HALF OF WORD STA B SAVE THE LOWER HALF STATUS LDA EQT5,I GET THE SHORT STATUS AND LHALF GET UPPER HALF OF EQT5 IOR B PUT IN THE LOWER HALF OF THE STATUS STA EQT5,I STORE AWAY THE STATUS JMP STSTS,I RETURN TO CALLER * G<CA15 NOP CLB SET UP COMPLETION CODES STB OKCOM GOOD COMPLETION IS A ZER0 INB BAD COMPLETION IS ONE STB BADCO STORE AWAY BAD COMPLETION LDB CA15 SET UP POSSIBLE ERROR OUT FROM STATS INB SET CONTINUATION RETURN AFTER FEED STB IA15 SO THAT IT CAN RETURN TO RTE THRU IA15 LDA EQT1,I GET DEVICE SUSPENDED POINTER SZA,RSS NOT SUSPENDED (SPURIOUS INTERRUPT)? JMP SPUR YES,IGNORE INTERRUPT. JSB SETIO CONFIGURE I-O INSTRUCTIONS LDA EQT10,I CHECK FOR COMPLETION FROM WRITE CPA RHALF IF IT IS A COMPLETION FROM A WRITE JMP COKEX THEN WE'RE DONE PUNCHING GO TO RTE CFOMI JSB STATS GET STATUS AND CHECK IF DEVICE IS UP REPRO LDA EQT7,I SET UP FOR WRITE OR READ COMPLETION STA EQT9,I SAVE BUFFER ADDRESS LDA EQT8,I CHECK LENGTH TO SEE IF CHARACTER OR WORDS SSA,RSS IF LENGTH IS POSITIVE CMA,INA,SZA THEN NEGATE IT. RSS IF IT IS ZERO JMP COKEX THEN WE'RE DONE. TAKE OK COMPLETION. STA EQT10,I SAVE NEGATIVE LENGTH CLA CLEAR OUT TRANSMISSION COUNT STA EQT13,I USE EQT13 TO COUNT UP UNTIL DONE. STA TEMP4 INTIALIZE NON-BLANK COUNTER LDA EQT6,I CHECK REQUEST WORD AND .17B ISOLATE FUNCTION CODE CPA .1 IF IT IS A READ REQUEST JMP CREAD THEN GO TO READ COMPLETION HANDLER CPA .2 IF IT IS A WRITE REQUEST JMP CWRIT THEN JUMP TO WRITE COMPLETION HANDLER COKEX JSB STATS GO GET UPDATED STATUS BEFORE WE LEAVE LDA EQT12,I LOAD INTERNAL GLAG AND =B10000 ISOLATE LAST CARD FEED BIT. SZA WAS LAST CARD BLANK. JMP CLRBT NO,LCEAR MULTI ERR BIT & IH INPUT BIT CLA CLEAR AREG AND IOR =B200 SET EOF BIT. JSB STSTS UPDATE SHORT AND LONG STATUS. CLRBT LDA EQT12,I LOAD INTERNAL FLAGS WORD AND NBITF CLEAR INHIBIT INPUT AND MULTIPLE ERROR BITS  STA EQT12,I AND STORE IT BACK CEFEX LDB EQT13,I LOAD THE TRANSMISSION LOG INB CHANGE FROM POSSIBLE BYTE COUNT CLE,ERB TO WORD COUNT LDA EQT6,I GET THE REQUEST FUNCTIN WORD AND .100B ISOLATE THE BINARY BIT: BIT 6 ADA .ND1 BIAS BIT UP TO THE SIGN BIT XOR EQT8,I XOR THE SIGN BITS SSA,RSS IF NOT(ASCII AND WORD COUNT) LDB EQT13,I THEN GET THE OTHER COUNT BACK STB EQT13,I AND STORE IT AWAY LDA OKCOM LOAD A WITH GODD COMPLETION CODE STA EQT10,I CLEAR WRITE CONTINUATION FLAG .IOE1 CLC HIS CLEAR ON HISELECT CODE .IO51 CLC LOS CLEAR ON LOSELECT CODE CEXIT JMP CA15,I EXIT TO RTE CBADX JSB STATS BAD EXIT FROM COMPLETION SECTION CRJEC LDA BADCO GET BAD COMPLETION CODE STA OKCOM AND STORE IT AWAY IN GOOD COMPLETION CODE JMP CEFEX EXIT TO RTE * * SKP * * CREAD HANDLES THE READING OF CARDS * CREAD LDA EQT6,I GET REQUEST CONTROL WORD ALF,ALF POSITION BIT 6 RAL INTO THE SIGN BIT SSA,RSS IF BIT 6 IS ZERO JMP CRASC THEN GO DO AN ASCII READ * * * CRBIN DOES THE CHOOSING BETWEEN COLUMN AND PACKED * CRBIN LDB EQT9,I GET BUFFER ADDRESS INTO B SLA IF V(BIT7) IS ONE JMP CRPBI THEN READ IS PACKED BINARY * * * CRCBI DOES THE COLUMN BINARY READING * CRCBI JSB CRLIA ELSE READ IS COLUMN BINARY. READ A COLUMN JSB BINSZ GO INCREMENT COUNTERS AND POINTERS JMP CRCBI LOOP UNTIL DONE * * * * CRPBI DOES THE PACKED BINARY READING * CRPBI JSB CRLIA READ A COLUMN ALF POSITION IT IN BITS 15-4 STA TEMP1 AND SAVE IT JSB CRLIA READ A COLUMN ALF,ALF POSITION IT STA TEMP2 AND STORE IT AND .17B GET UPPER BITS IN BITS 3-0 IOR TEMP1 GET BITS FROM PREVIOUS READ JSB BINSZ STORE IT AND INCREMENT POINTERS LDA TEMP2 GET BITS FROM PREVIOUS READ AND KLHALF GET LEFT HALF OF WORD STA TEMP1 AND STORE IT AWAY JSB CRLIA READ NEXT COLUMN ALF,ALF POSTION UPPER BITS IN BITS 7-0 ALF ONLY 12 BITS READ THOUGH STA TEMP2 SAVE THE WORD AND RHALF GET ONLY THE RIGHT HALF IOR TEMP1 PUT THE TOTAL WORD TOGETHER JSB BINSZ AND GO STORE IT AND INCREMENT POINTERS LDA TEMP2 GET BITS FROM LAST READ BACK AND UPQTR GET LEFT QUARTER WORD STA TEMP1 SAVE THE WORD JSB CRLIA AND READ THE NEXT COLUMN IOR TEMP1 PUT TOGETHER A WHOLE WORD JSB BINSZ STORE IT IN USER BUFFER AND INCR. PNTRS JMP CRPBI LOOP UNTIL DONE * * * * CRASC READS THE HOLLERITH CODE AND CONVERTS TO ASCII * CRASC LDA EQT8,I LOAD LENGTH OF READ SSA IF LENGTH IS NEGATIVE JMP SCDWN THEN WE NEED NOT MODIFY IT CMA,INA ELSE IT IS A WORD COUNT ALS CONVERT TO NEGATIVE BYTE COUNT SCDWN STA EQT10,I AND STORE IT AWAY IN COUNT DOWN LDA EQT9,I LOAD ADDRESS OF BUFFER CLE,ELA AND CONVERT TO BYTE ADDRESS STA TEMP3 CANT USE EQT9 BECAUSE OF INDIRECT CLA CLEAR A AND INITIALIZE STA TEMP2 COLUMN COUNTER LOOP JSB CRLIA GET A COLUMN FROM THE CARD CLB CLEAR OUT TABLE DISPLACEMENT STA TEMP5 SAVE COLUMN SZA,RSS IF COLUMN IS BLANK JMP BLANK THEN SKIP TRANSLATION NBLNK AND .777B GET LOWER NINE BITS OF COLUMN SZA,RSS IF BITS 1-9 ARE BLANK JMP BIT8 THEN CHECK BITS 12-0 CPA .402B IF 8-1 PUNCH JMP BADCV THEN GO NOT READY LDB .9 LOAD A WEIGHT FOR 9 PUNCH SLA,ARS IF BIT 9 IS SET BIT9 JMP SET THEN SKIP REST AND GO TO SET LDB .7 LOAD WEIGHT FOR 7 PUNCH ARS,SLA,ARS SKIP BIT 8. IF BIT 7 IS SET BIT7 JMP SET THEN SKIP REST AND GO TO SET LDB .6 LOAD WEIGHT FOR 6 PUNCH SLA,ARS IF BIT 6 IS SET BIT6 JMP SET THSEN SKIP REST AND GO TO SET LDB .5 LOAD WEIGHT FOR 5 PUNCH SLA,ARS IF BIT 5 IS SET BIT5 JMP SET THEN SKIP REST AND GO TO SET LDB .4 LOAD WEIGHT FOR 4 PUNCH SLA,ARS IF BIT 4 IS SET BIT4 JMP SET THEN SKIP REST AND GO TO SET LDB .3 LOAD WEIGHT FOR 3 PUNCH SLA,ARS IF BIT 3 IS SET BIT3 JMP SET THE SKIP REST AND GO TO SET LDB .2 LOAD WEIGHT FOR 2 PUNCH SLA,ARS IF BIT 2 IS SET BIT2 JMP SET THEN SKIP REST AND GO TO SET LDB .1 LOAD WEIGHT FOR 1 PUNCH SLA,ARS IF BIT 1 IS SET BIT1 JMP SET THEN SKIP TO SET CLB IF WE GOT HERE ONLY BIT 8 WAS SET * SET SZA IF ANY OTHER BITS ARE ON JMP BADCV THEN INVALID HOLLERITH GO NOT READY * BIT8 LDA TEMP5 GET COLUMN BACK RAR,SLA,RAL POSTION BIT 8. IF IT IS SET ADB .8 THEN ADD 8 TO TABLE DISPLACEMENT. STB TEMP1 SAVE TABLE DISPLACEMENT CHKHI CLB CLEAR DISPLACEMENT AND =B7000 LOOK AT COLUMNS 12,11,AND 0 SZA,RSS IF THEY ARE ZERO JMP ENDCV THEN GO TO THE END OF CONVERSION BIT12 CPA .BITB IF BIT 12 IS SET LDB .60B LOAD DISPLACEMENT WITH A 48 BIT11 CPA .BITA IF BIT 11 IS SET LDB .20B LOAD DISPLACEMENT WITH A 16 BIT0 CPA .BIT9 IF BIT 0 IS SET LDB .40B LOAD DISPLACEMENT WITH A 32 SZB,RSS IF THERE WAS MORE THAN 1 ZONE PUNCHED JMP BADCV THEN GO NOT READY ENDCV ADB TEMP1 ADD UP DISPLACEMENTS BLANK ISZ TEMP2 INCREMENT COLUMN COUNTER LDA TEMP2 GET IT INTO A REGISTER SZB IF THE CHARACTER IS NOT BLANK STA EQT13,I THEN UPDATE THE LAST NON-BLANK COUNTER LDA B CONVERT BYTE DISPLACEMENT TO WORD DISPLACEMENT ARS BY SHIFTING IT RIGHT ADA TABHA ADD IN ADDRESS OF HOLLERITH TO ASCII TABLE LDA A,I GET WORD FROM TABLE SLB,RSS IF THE BYTE ADDRESS IS EVEN ALF,ALF GET THE LEFT BYTE OF WORD FROM TABLE AND RHALF CLEAR OUT BITS 15-9 LDB TEMP3 GET BUFFER BYTE ADDRESS IN B REGISTER * * STORE THE BYTE IN A AT THE BYTE ADDRESS IN B * STORB CLE,ERB CONVERT BUFFER ADR TO WORD ADR STA TEMP5 SAVE BYTE LDA B,I GET CURRENT WORD IN BUFFER INTO A SEZ,RSS IF BYTE ADDRESS WAS EVEN ALF,ALF THEN ROTATE BYTES OF BUFFER WORD AND LHALF GET LEFT OR RIGHT HALF OF BUFFER WORD IOR TEMP5 PUT BYTE FROM BUFFER AND BYTE READ TOGEGTHER SEZ,RSS IF BYTE ADDRESS WAS EVEN ALF,ALF THEN ROTATE BYTES OF WORD TO BE STORED STORE STA B,I STORE WORD BACK INTO BUFFER OF USER * * * ISZ TEMP3 INCREMENT BUFFER BYTE ADDRESS ISZ EQT10,I INCREMENT COUNT DOWN. IF ITS NOT ZERO JMP LOOP THEN GO CONVERT NEXT COLUMN * * ALL READS EXIT THROUGH CNBLK TO CHECK IF CARD WAS BLANK * CNBLK JSB EATBL GO FINISH UP READING CARD LDA EQT12,I GET INTERNAL FLAGS WORD LDB TEMP4 LOAD NON BLANK COUNT SZB IF CARD IS NOT BLANK IOR .BITC THEN TURN NOT BLANK BIT ON STA EQT12,I STORE INTERNAL FLAGS WORD JMP COKEX AND RETURN TO RTE * * IF THERE IS A BAD HOLLERITH CODE THEN EXIT HERE * BADCV LDA .2 SET BAD HOLLERITH BIT JMP SNRED AND GO SET NOT READY * * * * * * ROUTINES USED BY READ SECTION * LIA NOP READ THE LOW SELECT CHANNEL LIAL EQU * LOOP TO HERE IF NO DATA READY ISZ CNTR INCREMENT ,IS THIS THE 100TH LOOP? RSS NO, THEN LOOP THRU. JMP CRJEC YES, THEN EXIT WITH DEVICE MALFUNCTION. .IO23 LIA LOS READ THE LOWS SELECT CHANNEL SSA,RSS IF DATA BUFFER IS EMPTY JMP LIA,I THEN GO BACK TO CALLER RAL ELSE LOOK AT DATA READY FLAG SSA,RSS IF DATA IS NOT READY JMP .IO23 THEN LOOP THROUGH READ UNTIL READY RAR RESTORE WORD READ TO UNDO THE RAL | .IO42 STC LOS,C REQUEST MORE DATA .IO52 CLC LOS CLEAR CONTROL ON LOW SUBCHANNEL(GLITCH) JMP LIA,I RETURN TO CALLER * * * CRLIA READS THE LOW SELECT CHANNEL AND CHECKS FOR DATA PRESENT * CRLIA NOP LDA ERRTO STA CNTR JSB LIA READ THE LOW SELECT CHANNEL SSA,RSS IF DATA IS NOT PRESENT JMP CNBLK GO CHECK IF CARD WAS BLANK AND =B7777 GET DATA BITS ONLY SZA IF COLUMN IS NOT BLANK ISZ TEMP4 THEN INCREMENT NON-BLANK COUNTER JMP CRLIA,I AND RETURN TO CALLER * * * BINSZ INCREMENTS POINTERS AND CHECKS FOR COMPLETION * IT ALSO STORES THE WORD AWAY IN THE USER BUFFER * BINSZ NOP STA B,I STORE THE WORD JUST READ IN THE USER BUFFER ISZ EQT9,I INCREMENT BUFFER WORD ADDRESS INB DITTO SZA IF THE WORD STORED IS NON-ZERO THEN ISZ EQT13,I INCREMENT THE TRANSMISSION COUNT ISZ EQT10,I INCREMENT THE COUNT DOWN JMP BINSZ,I RETURN TO CALLER JMP CNBLK GO CHECK IF BLANK AND RETURN TO RTE * * * SKP * * * CWRIT THE WRITE COMPLETION SECTION * CWRIT LDA EQT11,I GET FULL PSEUDO STATUS AND =B60000 CHECK TO SEE THAT PRINT OR PUNCH WAS ENABLED SZA,RSS IF THEY WEREN'T JMP IWRIT THEN JUMP TO IWRIT BECAUSE 2 FEEDS WERE NEEDED LDA EQT12,I LOAD INTERNAL FLAGS WORD ALF POSITION POP AND NOT BLANK BITS AND .3 ISOLATE THEM CPA .1 IF POP,NOT BLANK = 1 JMP CRJEC THEN POP IS NOT ENABLED AND CARD IS NOT BLANK LDA .ND80 LOAD A MINUS 80 STA TEMP5 STORE IT IN TEMP5 FOR USE IN FILLING PUNCH BUFFER LDA EQT6,I GET REQUEST CONTROL WORD AND .100B LOOK AT M BIT 6 SZA IF M IS ONE JMP CWBNY THEN GO TO THE BINARY WRITER * * * CWASC WRITES A BUFFER IN ASCII-HOLLERITH FORMAT * CWASC LDA .D40 ELSE SET UP ASCII WRITE. SPD BUFFER DISPLACEMENT STA SPDOF IS 40 DOWN FROM PUNCH BUFFER LDA EQT8,I LOAD BUFFER LENGHT LDB EQT10,I LOAD COUNT DOWN SSA,RSS IF BUFFER LENGTH IS POSITIVE BLS THEN REQUEST IN WORDS. DOUBLE BYTE COUNT STB EQT10,I STORE BYTE COUNT (NEGATIVE) LDB EQT9,I GET WORD BUFFER ADDRESS INTO B REGISTER CLE,ELB CONVERT IT TO A BYTE ADDRESS CWALP JSB OTASC GO OUT PUT THE BYTE JSB CWISZ GO INCREMENT POINTERS AND CHECK IF DONE JMP CWALP GO GET NEXT BYTE TO BE OUTPUT * * * CWBNY CHOOSES BETWEEN COLUMN BINARY AND PACKED BINARY * CWBNY LDB EQT9,I SET UP BUFFER ADDRESS LDA EQT6,I LOAD REQUEST CONTROL WORD AND .200B CHECK V BIT 7 SZA IF V IS ONE JMP CWPBI THEN GO WRITE PACKED BINARY * * * CWCBI WRITES A BUFFER IN COLUMN BINARY FORMAT * LDA .D80 ELSE SET UP FOR COLUMN BINARY STA SPDOF STORE OFFSET OF PRINT BUFFER FROM PUNCH BUFFER CWCBI LDA B,I LOAD WORD FROM USER BUFFER AND =B7777 GET COLUMN BITS JSB OTA OUTPUT THE WORD TO THE LOW SELECT CHANNEL JSB CWISZ INCREMENT POINTERS AND CHECK IF DONE JMP CWCBI LOOP UNTIL DONE * * * CWPBI WRITES THE USER BUFFER IN PACKED BINARY FORMAT * CWPBI LDA .D60 STA SPDOF STORE PUNCH AND PRINT BUFFER OFFSET LDA B,I LOAD WORD FROM BUFFER ALF,ALF POSITION ITS UPPER BITS INTO BITS 11-0 ALF AND =B7777 GET RID OF BITS 15-12 JSB OTA AND OUTPUT THE WORD LDA B,I GET WORD BACK AGAIN AND .17B GET ITS LOWER 4 BITS ALF,ALF MOVE THEM INTO BITS 11-9 STA TEMP1 AND SAVE THEM FOR LATER INB INCREMENT BUFFER ADDRESS ISZ TEMP5 INCREMENT COLUMN COUNT LDA B,I GET NEXT WORD FROM BUFFER STA TEMP3 STORE IT FOR LATER USE ALF,ALF ROTATE LEFT AND RIGHT BYTE AND RHALF GET RID OF BITS 15-9 JSB CPBOA GO OUTPUT A COLUMN LDA TEMP_b3 GET BACK LAST WORD AND RHALF GET RID OF BITS 15-9 THEY'VE BEEN WRITTEN ALF MOVE LHALF UP 4 BITS STA TEMP1 STORE LEFT 2/3 OF COLUMN LDA B,I GET NEXT WORD FROM BUFFER STA TEMP3 STORE IT AWAY FOR LATER USE ALF MOVE UPPER 4 BITS TO LOWER 4 BITS AND .17B AND GET RID OF REST OF BITS JSB CPBOA GO OUTPUT A COLUMN LDA TEMP3 GET WORD BACK AND =B7777 GET LOWER 12 BITS STA TEMP1 PUT THEM AWAY FOR USE BY CPBOA JSB CPBOA GO OUTPUT THE COLUMN ADB .ND1 DECREMENT B JMP CWPBI GO DO NEXT 3 WORDS * SKP * * * ROUTINES USED BY WRITE SEGMENTS * * CPBOA COMBINES THE LEFT PART FROM TEMP1 AND THE * RIGHT PART FROM THE A REGISTER TO MAKE * A COLUMN. IT CHECKS IF THE REQUEST IS COM- * PLETE IN THE MIDDLE OF COLUMN AND IF SO * DOES NOT COMPLETE THE COLUMN BUT DOES OUTPUT * IT. * CPBOA NOP STA TEMP2 STORE RIGHT PART OF WORD LDA EQT10,I LOAD COUNT DOWN CMA,SZA IF COUNT DOWN IS NOT -1 LDA TEMP2 THEN GET RIGHT PART OF COL.(FROM NEXT WORD IN BUF) IOR TEMP1 GET LEFT PART OF COLUMN JSB OTA OUTPUT THE COLUMN JSB CWISZ INCREMENT POINTERS AND CHECK IF DONE JMP CPBOA,I RETURN TO CALLER * * * CWISZ INCREMENTS POINTERS AND CHECKS FOR COMPLETION * CWISZ NOP ENTER WITH A JSB ISZ TEMP5 INCREMENT COLUMN COUNTER RSS IF IT GOES TO ZERO JMP CFILL GO CHECK FOR SPD ISZ EQT13,I INCREMENT THE TRANSMISSION LOG INB INCREMENT THE BUFFER POINTER ISZ EQT10,I INCREMENT THE COUNT DOWN. IF WE'RE NOT DONE JMP CWISZ,I THEN GO BACK TO CALLER JMP CFILL ELSE GO FILL BUFFER AND CHECK FOR SPD * * * CONAH CONVERTS THE CONTENTS OF THE A REGISTER * FROM ASCII TO HOLLERITH RETURNED IN THE A REGISTER * CONAH NOP CPA .D96 6b ONLY NON-VALID ASCII BETWEEN 32-122(BASE 10) JMP COBAD IF 96 THEN TAKE BAD EXIT ADA .ND31 ADD A NEGATIVE 31 SSA IF CHARACTER IS LESS THAN 31 JMP COBAD THEN TAKE BAD EXIT ADA .ND92 IF CHARACTER IS GREATER THAN 122 SSA,RSS (WHICH IS UPPER LIMIT OF SMALL LETTERS) JMP COBAD THEN TAKE BAD EXIT ADA .D26 BIAS UP TO CHECK FOR SMALL LETTERS SSA,RSS IF IT IS A SMALL LETTER ADA .ND32 BIAS IT TO MAKE IT APPEAR AS A CAPITAL ADA .D65 BIAS SO THAT BLANK IS 0 DISPLACEMENT IN TABLE ADA TABAH ADD IN ADDRESS OF ASCII TO HOLLERITH TABLE LDA A,I LOAD HOLLERITH CODE FROM TABLE JMP CONAH,I RETURN TO CALLER COBAD CLA ON BAD EXIT OUTPUT A BLANK JMP CONAH,I RETURN TO USER * * * OTA OUTPUTS TO THE LOW SELECT CODE * OTA NOP STA SAV SAVE A-REG CONTENTS. LDA CNTNO GET LOOP COUNTER VALUE (-100). STA CNTR SET LOOP COUNTER TO LIMIT "LIA" LOOP. LDA SAV RETURN A-REG CONTENTS. .IO31 OTA LOS OUTPUT COLUMN TO THE LOW SELECT CHANNEL LOTA EQU * LOOP TO HERE UNTIL READY JSB LIA GO READ THE LOW SELECT CODE AND .BITE LOOK AT FLAG BIT SZA,RSS IF IT IS NOT READY JMP LOTA THEN LOOP UNTIL READY .IO43 STC LOS,C SET DATA AVAILABLE LINE JMP OTA,I RETURN TO CALLER * * * CFILL FILLS UP THE OUTPUT BUFFER IF NECESSARY * THEN IT CHECKS FOR SEPARATE PRINT DATA * IF IT IS PRESENT IT THEN OUTPUTS IT * CFILL NOP CLA CLEAR A CPA TEMP5 IS THE COLUMN COUNT DOWN TO ZERO? JMP CKSPD YES THEN GO CHECK SPD JSB OTA GO OUTPUT A BLANK ISZ TEMP5 IF TEMP5<>0 JMP *-2 THEN WE'RE NOT DONE. GO OUTPUT A BLANK CKSPD LDA EQT6,I LOAD REQUEST CONTROL WORD AND .BITC IF SPD BIT 12 IS SET SZA,RSS IF SPD BIT 12 IS NOT SET JMP CWREX GO EXIT TO RTE UNTIL DONE PU=NCHING. LDB EQT7,I GET ORIGINAL BUFFER ADDRESS ADB SPDOF ADD TO IT THE OFFSET FROM THE PUNCH BUFFER CLE,ELB CONVERT ADDRESS TO BYTE ADDRESS LDA .ND80 LOAD A -80 STA TEMP5 AND STORE IT FILUP JSB OTASC GO OUTPUT THE BYTE OF THE PRINT BUFFER INB THEN INCREMENT THE BUFFER ADDRESS ISZ TEMP5 INCREMENT THE COUNT DOWN. ARE WE DONE? JMP FILUP NO, THEN LOOP UNTIL DONE CWREX LDA RHALF SET WRITE COMPLETION STA EQT10,I BY EQUATING EQT10 TO 377B LDA EQT12,I GET INTERNAL FLAGS WORDUNTIL DONE PUNCHING SSA IF INHIBIT INPUT IS SET JMP COKEX THEN EXIT TO RTE NOW WE'RE DONE JMP ICONT ELSE GO WAIT TILL THE NEXT CARD IS FED * * * OTASC OUTPUTS A BYTE FROM THE BYTE ADDRESS * THAT IS CONTAINED IN THE B REGISTER UPON * ENTRY * OTASC NOP LDA B GET BYTE ADDRESS INTO A REG. CLE,ERA CONVERT TO WORD ADDRESS. SAVE BYTE NO. IN E LDA A,I GET WORD CONTAINING BYTE SPECIFIED SEZ,RSS IF LEFT BYTE IS SPECIFIED ALF,ALF THEN MOVE IT TO THE RIGHT BYTE AND RHALF GET RIGHT HALF OF WORD JSB CONAH GO CONVERT FROM ASCII TO HOLLERIT JSB OTA AND OUTPUT THE COLUMN JMP OTASC,I RETURN TO CALLER * SPUR STA EQT15,I ZERO TIME OUT ISZ CA15 JMP CA15,I RETURN TO RTE * * * SKP * * DATA SECTION OF DRIVER * * * HOLLERITH TO ASCII TABLE * TABHA DEF *+1 ASC 16, 123456789:#@'="-JKLMNOPQR!$*);] ASC 16,0/STUVWXYZ\,%_>?&ABCDEFGHI[.<(+^ * * * * * ASCII TO HOLLERITH TABLE * TABAH DEF *+1 OCT 0000 SPACE OCT 4006 ! OCT 0006 " OCT 0102 # OCT 2102 $ OCT 1042 % .BITB OCT 4000 & OCT 0022 ' OCT 4022 ( OCT 2022 ) OCT 2042 * OCT 4012 + OCT 1102 , .BITA OCT 2000 - OCT 4102 . OCT 1400 / .BIT9 OCT 1000 0 .BIT8 OCT 0400 1 .BIT7 OCT 0200 2 .BIT6 OCT 0100 3 .BIT5 OCT 0040 4 .BIT4 OCT 0020 5 .BIT3 OCT 0010 6 .BIT2 OCT 0004 7 .BIT1 OCT 0002 8 .BIT0 OCT 0001 9 OCT 0202 : OCT 2012 ; OCT 4042 < OCT 0012 = OCT 1012 > OCT 1006 ? OCT 0042 @ OCT 4400 A OCT 4200 B .4100 OCT 4100 C OCT 4040 D OCT 4020 E OCT 4010 F OCT 4004 G OCT 4002 H OCT 4001 I OCT 2400 J OCT 2200 K OCT 2100 L OCT 2040 M OCT 2020 N OCT 2010 O OCT 2004 P OCT 2002 Q OCT 2001 R OCT 1200 S .1100 OCT 1100 T OCT 1040 U OCT 1020 V OCT 1010 W OCT 1004 X OCT 1002 Y OCT 1001 Z OCT 4202 [ OCT 1202 \ OCT 2202 ] OCT 2006 ^ OCT 1022 _ * .BITC OCT 10000 .BITD OCT 20000 .BITE OCT 40000 .BITF OCT 100000 NBITF OCT 077776 * LIAI LIA 0 USED TO CONFIGURE IO INSTRUCTIONS * CNTR OCT 0 SAV OCT 0 TEMP1 OCT 0 TEMP2 OCT 0 TEMP3 OCT 0 TEMP4 OCT 0 TEMP5 OCT 0 OKCOM OCT 0 USED TO KEEP THE GOOD COMPLETION CODE BADCO OCT 0 USED TO KEEP THE BAD COMPLETION CODE UPQTR OCT 170000 UPPER QUARTER WORD .777B OCT 777 USED TO AND OUT ROWS 1-9 OF A COLUMN .402B OCT 402 USED TO CHECK FOR 8-1 PUNCH .60B OCT 60 USED AS TABLE OFFSET FOR 12 PUNCH .20B EQU .BIT4 USED AS TABLE OFFSET FOR 11 PUNCH .40B EQU .BIT5 USED AS TABLE OFFSET FOR 0 PUNCH .ND80 DEC -80 USED TO COUNT COLUMNS OUTPUT .D80 DEC 80 PUNCH BUFFER OFFSET FOR COLUMN BINARY .D40 DEC 40 PUNCH BUFFER OFFSET FOR ASCII WRITE .D60 DEC 60 PUNCH BUFFER OFFSET FOR PACKED BINARY .200B EQU .BIT7 USED TO CHECK V BIT OF CONTROL WORD .D96 DEC 96 USED IN CHECKING ASCII CONVERSION TO HOL. .ND31 DEC -31 USED IN CHECKING ASCII TO HOLLERITH CONV. .ND92 DEC -92 USED IN CHECKING ASCII !yHFBTO HOL. CONVERSION .D26 DEC 26 USED IN ASCII TO HOLLERITH CONVERSION .ND32 EQU 77B USED IN ASCII TO HOLLERITH CONVERSION .D65 DEC 65 USED IN ASCII TO HOLLERITH CONVERSION SPDOF OCT 0 SET BY DIFFERENT WRITES TO POINT TO SPD BUFFER .140B EQU .D96 USED TO CHECK READY AND READY FOR COMMAND BITS * CNTNO DEC -100 .ND10 DEC -10 .ND9 DEC -9 .ND8 DEC -8 .ND7 DEC -7 .ND6 DEC -6 .ND5 DEC -5 .ND4 DEC -4 .ND3 DEC -3 .ND2 DEC -2 .ND1 DEC -1 .0 DEC 0 .1 DEC +1 .2 DEC +2 .3 DEC +3 .4 DEC +4 .5 DEC +5 .6 DEC +6 .7 DEC +7 .8 DEC +8 .9 DEC +9 .10 DEC +10 .100B DEC 64 .17B OCT 17 .37B OCT 37 .77B OCT 77 .177B OCT 177 OPREJ OCT 40 RHALF OCT 377 LHALF OCT 177400 ERRTO OCT 177324 "NOT READY" TIME OUT VALUE(-3MSEC) TOBIT NOP TIME OUT FLAG,SET WHEN DRIVER * PROCESSESS TIME OUT. OCHFL NOP OUTPUT CHECK FLAG. * EQT1 EQU 1660B EQT2 EQU 1661B EQT3 EQU 1662B EQT4 EQU 1663B EQT5 EQU 1664B EQT6 EQU 1665B EQT7 EQU 1666B EQT8 EQU 1667B EQT9 EQU 1670B EQT10 EQU 1671B EQT11 EQU 1672B EQT12 EQU 1771B EQT13 EQU 1772B EQT14 EQU 1773B EQT15 EQU 1774B RQCNT EQU 1676B LOS EQU 9 HIS EQU 10 A EQU 0 B EQU 1 * * END [H 3 12996-18001 1541 S 0122 12996A LP SUBSYSTEM DIAGNOSTIC             H0101 ,ASMB,A,B,L,C HED GENERAL OPERATING PROCEDURE ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * E. PRESS RUN AND WAIT FOR HALT 102074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8= SUPPRESS OPERATOR INTERVENTION TESTS * 7 = SUPPRESS LP MESSAGES * 6 * = REFER TO PSEUDO OPDESIGN * 0 * NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 RESERVED * 102071 RESERVED * 102070 RESERVED * * 106077 TRAP CELL HALT * * * <HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC NOP USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRC BSS 1 CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZS>INB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TSTP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC \  DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG %ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP P Z.2 OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZISC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC f*INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 SKP *  SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 SKP * CHECK INTERRUPT & HOLD OFF * * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXECUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT<<:6 SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED j< ' 12996-18002 1541 S 0122 12996A LP SUBSYSTEM DIAGNOSTIC             H0101 - JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR & CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR CONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * ~i HED BASE PAGE TABLES AND LINKS ORG 126B DSN OCT 105104 DIAGNOSTIC SERIAL NUMBER ORG 140B IOIP DEF IOID POINTER TO I/O INSTRUCTIONS LIST TSTP DEF TSTD POINTER TO TEST LIST HDMP DEF HDMS POINTER TO HEADER MESSAGE STDA OCT 177 STDB OCT 0 * ORG 150B HDMS EQU * ASC 16,HP 9866 LINE PRINTER DIAGNOSTIC/ IOID EQU * DEF SC00 DEF SC01 DEF SC02 DEF SC03 DEF SC04 DEF SC05 DEF SC06 DEF SC07 DEF SC08 DEF SC09 DEF SC10 DEF SC11 DEF SC12 DEF SC13 DEF SC14 DEF SC15 DEF SC16 DEF SC17 DEF DMAC1 DEC -1 END-OF-LIST * TSTD EQU * DEF TST.0 BASIC I/O DEF TST01 STATUS & BUFFER CLEAR DEF TST02 CHARACTER SET DEF TST03 TRIANGLE PRINT & OVER BUFFER FULL DEF TST04 NON-PRINTING CHARACTERS DEF TST05 WORST CASE PATTERN DEF TST06 DMA TEST DEF TST07 PSEUDO OPDESIGN DEC -1 SKP * .12 OCT 12 .37 OCT 37 .40 OCT 40 .177 OCT 177 D300 DEC 300 BIT9 OCT 1000 BT812 OCT 10400 DM10 DEC -10 DM60 DEC -60 DM80 DEC -80 SLASH OCT 57 AA OCT 101 BFCLB OCT 100200 BIT7 OCT 200 LCHR OCT 176 * CNTR NOP TMP NOP FCHR NOP CHR NOP * * * * * * * * CLEAR CHARACTER IN INTERFACE * BEFORE DOING BASIC I/O * * TST.0 EQU * * NOP CLA SC00 OTA CH JSB *+2,I JMP *-4,I DEF TST00 HED COMMON ROUTINES * OUTPUT A REG * TIME OUT = E027 FLAG TIME OUT (CHR) * * OTCHR NOP LDB INCHR SET TRAP CELL JSB SC01 STB CH SC02 OTA CH OUTPUT CHARACTER CLA,INA SET FOR MAX OF 1MS STF INTP TURN ON INTERRUPTS SC03 STC CH,C JSB TMRR,I GO WAIT CLC INTP,C LONG ENOUGH E027 JSB ERMS,I REPORT TIME OUT $ DEF ER27 LDB BIT9 CHECK IF ABORT JSB SWRT,I JMP EXRT,I YES JMP OTCHR,I RETURN * ER27 ASC 13,E027 FLAG TIME OUT (CHR)/ * * INCHR JSB *+1 NOP INTERRUPT LOCATION CLF INTP TURN OFF INTERRUPTS JMP OTCHR,I * * * OUTPUT PRINT COMMAND * TIME OUT = E030 FLAG TIME OUT (CMD) * OTCMD NOP LDA .12 USE LF AS PRINT COMMAND LDB INCMD SET TRAP CELL JSB SC04 STB CH SC05 OTA CH OUTPUT PRINT COMMAND LDA D300 SET FOR MAX OF 300MS STF INTP TURN ON INTERRUPTS SC06 STC CH,C JSB TMRR,I GO WAIT CLC INTP,C LONG ENOUGH E030 JSB ERMS,I REPORT TIME OUT DEF ER30 LDB BIT9 CHECK IF ABORT JSB SWRT,I JMP EXRT,I YES JMP OTCMD,I RETURN * ER30 ASC 13,E030 FLAG TIME OUT (CMD)/ * INCMD JSB *+1 NOP INTERRUPT LOCATION CLF INTP TURN OFF INTERRUPTS JMP OTCMD,I SKP * OUTPUT A MESSAGE TO THE LINE PRINTER * * OTMSG NOP LDB BIT7 GET BIT 7 JSB SWRT,I SUPPRESS MESSAGES JMP OTMSX JSB CFOP CHECK FOR OUT OF PAPER LDA OTMSG,I GET POINTER TO MESSAGE RAL CONVERT TO BYTE ADDRESS STA TMP SAVE IT OTMS0 LDB TMP GET A CHARACTER CLE,ERB LDA B,I SEZ,RSS ALF,ALF AND .177 CPA SLASH END-OF-MESSAGE JMP *+4 YES JSB OTCHR NO OUTPUT CHARACTER ISZ TMP MOVE TO NEXT CHARACTER JMP OTMS0 DO IT JSB OTCMD PRINT LINE OTMSX ISZ OTMSG JMP OTMSG,I RETURN * * CHECK FOR LP OUT OF PAPER * CFOP NOP SC07 LIA CH GET STATUS SLA,RSS IF BIT 0 IS CLEAR JMP CFOP,I THEN IT'S READY E031 JSB ERMS,I NOT THEN REPORT IT DEF *+2 AS OUT OF PAPER JMP CFOP,I L CONTINUE * * ASC 11,E031 LP OUT OF PAPER/ * HED L.P. TESTS * THIS TEST CHECKS THE PAPER OUT STATUS * AND THE BUFFER CLEAR COMMAND * TST01 EQU * * STBF NOP ENTRY FROM EXEC LDB BT812 CHECK TO SUPPRESS JSB SWRT,I PAPER OUT STATUS CHECK JMP BFCT YES GO TO BUFFER CLEAR CHECK H100 JSB MSGH,I TELL OPERATOR TO DEF STPOM REMOVE PAPER FROM L.P. SC08 LIA CH GET STATUS SLA BIT 0 SHOULD BE HIGH JMP *+3 OK E032 JSB ERMS,I NO TELL OPERATOR DEF ER32 THAT STATUS IS IN ERROR H101 JSB MSGH,I TELL OPERATOR TO DEF STPIM READY STALL THE PAPER SC09 LIA CH GET STATUS SLA,RSS BIT 0 SHOULD BE LOW JMP *+3 OK E033 JSB ERMS,I NO TELL OPERATOR DEF ER33 THAT STATUS IS IN ERROR BFCT JSB OTMSG OUTPUT TO LP DEF STPMM TITLE JSB OTMSG OUTPUT LP DEF NLSBB NEXT LINE SHOULD BE BLANK LDA DM80 SET FOR 80 CHARACTERS STA CNTR LDA AA GET ASCII A JSB OTCHR OUTPUT IT ISZ CNTR DONE? JMP *-3 NO LDA BFCLB GET BUFFER CLEAR BIT (7) SC10 OTA CH OUTPUT IT CLA SC11 OTA CH CLEAR COMMAND JSB OTCMD OUTPUT PRINT COMMAND JMP STBF,I RETURN TO EXEC * STPOM ASC 14,H100 REMOVE PAPER FROM L.P./ STPIM ASC 11,H101 LOAD L.P. PAPER/ ER32 ASC 19,E032 STATUS IS LOW AND SHOULD BE HIGH/ ER33 ASC 19,E033 STATUS IS HIGH AND SHOULD BE LOW/ STPMM ASC 15,STATUS & BUFFER CLEAR TEST 01/ NLSBB ASC 13,NEXT LINE SHOULD BE BLANK/ SKP * THIS TEST WILL OUTPUT 60 LINES * OF CYCLIC CHARACTERS * TST02 EQU * * * CYCL NOP ENTRY FROM EXEC JSB OTMSG TELL OPERATOR WHAT TEST DEF CYCLM LDA DM60 SET 60 STA TMP LINES LDA .40 START WITH Ả SPACE STA FCHR SAVE FIRST CHARACTER CYCL0 JSB CFOP CHECK FOR OUT OF PAPER LDA FCHR STA CHR AND CHR INCREMENT LDA DM80 SET FOR 80 CHARACTERS STA CNTR CYCL1 LDA CHR GET THE CHARACTER CPA LCHR CHECK IF LAST CHARACTER LDA .40 YES RESET TO FIRST STA CHR JSB OTCHR GIVE IT TO L.P. ISZ CHR MOVE TO NEXT CHARACTER ISZ CNTR 80 CHRS OUT JMP CYCL1 NO JSB OTCMD OUTPUT PRINT COMMAND ISZ FCHR MOVE TO NEXT CHARACTER ISZ TMP 60 LINES JMP CYCL0 NO JMP CYCL,I YES RETURN TO EXEC * CYCLM ASC 17,CYCLIC PATTERN TEST 02 (60 LINES)/ SKP * TRIANGLE & OVER BUFFER FULL * TST03 EQU * * TROV NOP JSB OTMSG TELL OPERATOR WHAT TEST DEF TRM TRIANGLE PATTERN & OVER BUFFER FULL LDA DM80 START WITH 80 CHARACTERS STA CNTR TRL0 JSB CFOP CHECK FOR OUT OF PAPER LDA CNTR SET FOR SPACES CMA,INA ADA DM80 ARS DIVIDE BY 2 STA TMP SAVE AS COUNTER TRL1 LDA TMP SZA,RSS DONE? JMP TRC ISZ TMP NO - COUNT SPACE NOP LDA .40 OUTPUT SPACE JSB OTCHR JMP TRL1 DO NEXT ONE * TRC LDA CNTR OUTPUT STA TMP CHARACTER LDA .H "H" JSB OTCHR ISZ TMP JMP *-3 JSB OTCMD DO A PRINT COMMAND ISZ CNTR ISZ CNTR DONE TRIANGLE? JMP TRL0 NO SKP * * OVBF JSB OTMSG TELL OPERATOR DEF NLSBA NEXT LINE SHOULD BE ALL A'S LDA DM80 STA CNTR OUTPUT 80 A'S JSB CFOP CHECK FOR OUT OF PAPER LDA AA JSB OTCHR ISZ CNTR JMP *-3 LDA DM80 OUTPUT 80 H'S STA CNTR LDA .H JSB OTCHR ISZ CNTR JMP *-3 JSB OTCMD DO A PRINT COMMAND  JMP TROV,I * * TRM ASC 21,TRIANGLE PRINT & OVER BUFFER FULL TEST 03/ NLSBA ASC 14,NEXT LINE SHOULD BE ALL A'S/ SKP * THIS TEST OUTPUTS ALL NON-PRINTING CHARACTERS * THEN OUTPUTS A PRINT COMMAND * TST04 EQU * * NPC NOP JSB OTMSG OUTPUT MESSAGE TO PRINTER DEF NPCM NON-PRINTING CHARACTER TEST JSB OTMSG OUTPUT DEF NLSBB NEXT LINE SHOULD BE BLANK LDA .177 START WITH LAST CHR STA CHR LDA DM80 SET FOR 80 CHARACTERS STA CNTR JSB CFOP CHECK FOR OUT-OF-PAPER NPC0 LDA CHR GET CHARACTER INA INCREMENT IT CPA .40 IS THIS THE FIRST PRINT LDA .177 YES - SKIP TO LAST+1 AND .177 ROUND TO ZERO CPA .12 SKIP PRINT COMMAND INA STA CHR JSB OTCHR OUTPUT IT TO LP ISZ CNTR DONE 80? JMP NPC0 NO JSB OTCMD YES ATTEMPT PRINT JMP NPC,I * NPCM ASC 16,NON-PRINTING CHARACTER TEST 04/ SKP * OUTPUT WORST CASE PATTERN * E H I $ # * TST05 EQU * * WCP NOP ENTRY FROM EXEC JSB OTMSG OUTPUT MESSAGE TO PRINTER DEF WCPM WORST CASE PATTERN TEST LDA .E GET CHARACTER E JSB WCPR OUTPUT IT LDA .H GET CHARACTER H JSB WCPR OUTPUT IT LDA .I GET CHARACTER I JSB WCPR OUTPUT IT LDA .$ GET CHARACTER $ JSB WCPR OUTPUT IT LDA .# GET CHARACTER # JSB WCPR OUTPUT IT JMP WCP,I RETURN * WCPM ASC 14,WORST CASE PATTERN TEST 05/ * WCPR NOP STA CHR SAVE CHARACTER LDA DM10 SET FOR 10 LINES STA TMP WCPR0 LDA DM80 AND 80 CHARACTERS STA CNTR JSB CFOP CHECK FOR OUT-OF-PAPER LDA CHR GET CHARACTER JSB OTCHR OUTPUT IT ISZ CNTR DONE 80 CH_gARACTERS? JMP *-3 JSB OTCMD OUTPUT PRINT COMMAND ISZ TMP DONE 10 LINES? JMP WCPR0 NO JMP WCPR,I YES-RETURN * .E OCT 105 .H OCT 110 .I OCT 111 .$ OCT 44 .# OCT 43 SKP * THIS TEST MAKES OUTPUTS USING DMA * * TST06 EQU * * DMA NOP LDA CPTO CHECK IF DMA IS AVAILABLE RAR,RAR SLA,RSS ? JMP DMA,I NOT AVAILABLE ABORT TEST JSB OTMSG OUTPUT MESSAGE TO PRINTER DEF DMAM DMA CYCLIC PATTERN TEST (60 LINES) LDA DM60 SET FOR 60 LINES STA TMP LDA .40 START WITH A SPACE STA FCHR SAVE FIRST CHARACTER DMA0 LDA DM80 STA CNTR 80 CHARACTER PATTERN JSB CFOP CHECK FOR OUT OF PAPER LDB DMABF GET POINTER TO BUFFER LDA FCHR GET CHARACTER DMA1 CPA LCHR CHECK IF LAST CHARACTER LDA .40 YES - RESET TO FIRST STA B,I PUT IT IN BUFFER INA MOVE TO NEXT CHARACTER INB MOVE TO NEXT LOCATION ISZ CNTR DONE 80 CHARACTERS JMP DMA1 NO LDA DMAC1 GET CONTROL WORD OTA 6 LDA DMABF GET ADDRESS INA MOVE PAST FIRST CHARACTER CLC 2 PREPAIR DMA FOR ADDRESS OTA 2 OUTPUT ADDRESS LDA DM80 GET COUNT STC 2 PREPAIR DMA FOR COUNT OTA 2 OUTPUT COUNT LDA INDMA SET DMA INTERRUPT TRAP STA 6 LDA IEDMA SET LP INTERRUPT SC12 STA CH LDA DMABF,I GET FIRST CHARACTER SC13 OTA CH SC14 STC CH,C START L.P. STC 6,C AND DMA STF INTP TURN ON INTERRUPTS CLA,INA SET 2MS MAX INA JSB TMRR,I GO WAIT CLC INTP,C LONG ENOUGH E034 JSB ERMS,I TELL OPERATOR THAT DEF DMAE1 DMA TIMED OUT JMP DMA,I RETURN TO EXEC SKP DMAM ASC 22,DMA-DCPC TEST 06 (CYCLI'C PATTERN 60 LINES)/ DMAE1 ASC 10,E034 DMA TIMED OUT/ * DMAC1 OCT 100000 DMABF DEF *+1 BSS 80 OCT 12 ADD PRINT TO END OF BUFFER * IEDMA JSB *+1 LINE PRINTER INTERRUPT NOP CLC INTP,C TURN OFF I/O E035 JSB ERMS,I TELL OPERATOR THAT DEF DMAE2 LP INTERRUPTED BEFORE DMA JMP DMA,I RETURN * DMAE2 ASC 17,E035 L.P. INTERRUPTED BEFORE DMA/ * INDMA JSB *+1 DMA INTERRUPT NOP CLF 6 CLEAR DMA FLAG FOR PRIORITY STRING LDA INLPC SET L.P. COMPLETION ADDRESS SC17 STA CH LDA D300 GET MAX OF 300 MILLSEC JSB TMRR,I CLF INTP LONG ENOUGH E036 JSB ERMS,I REPORT ERROR DEF DMAE3 JMP DMA,I RETURN TO EXEC * DMAE3 ASC 15,E036 L.P. TIMED OUT AFTER DMA ASC 05,TRANSFER/ * * INLPC JSB *+1 L.P. COMPLETION INTERRUPT NOP CLF INTP TURN OFF INTERRUPTS ISZ FCHR MOVE TO NEXT CHARACTER ISZ TMP DONE 60 LINES? JMP DMA0 NO JMP DMA,I YES RETURN TO EXEC SKP * PSEUDO OPERATOR DESIGN * * SWITCH REGISTER MEANING * * 0 = OUTPUT CYCLIC PATTERN * 1 = OUTPUT ONE CHARACTER * 2 = OUTPUT CLEAR BUFFER * 3 = OUTPUT PRINT COMMAND * 4 = LOOP ON SECTION * * TST07 EQU * * POD NOP ENTRY FROM EXEC LDA .40 SET FIRST STA FCHR CHARACTER JSB MSGC,I TELL OPERATOR TO DEF PODM MAKE SWR SELECTION PODL OCT 106002 WAIT FOR HIM LDB .37 JSB SWRT,I CHECK TO EXIT JMP *+2 JMP POD,I YES-ALL SWITCHES DONWN LDB SW0.1 CHECK TO OUTPUT ANY CHARACTERS JSB SWRT,I JSB PODOT YES - OUTPUT LDA BFCLB LDB SW2 CHECK FOR CLEAR BUFFER JSB SWRT,I SC15 OTA CH YES CLA SC16 OTA CH LDB SW3 CHECK TO PRINT JSB <:6SWRT,I JSB OTCMD YES LDB SW4 CHECK TO LOOP JSB SWRT,I JMP PODL+1 YES JMP PODL NO HALT * PODM ASC 14,H102 MAKE SWR SELECTION FOR ASC 08,PSEUDO OPDESIGN/ * SW0.1 OCT 3 SW0 OCT 1 SW1 OCT 2 SW2 OCT 4 SW3 OCT 10 SW4 OCT 20 * SKP * OUTPUT TO LP * * PODOT NOP LDB SW1 CHECK IF A'SINGLE CHARACTER JSB SWRT,I JMP PODOC SINGLE CHARACTER LDA FCHR STA CHR SET FIRST CHARACTER LDA DM80 SET FOR 80 CHARACTERS STA CNTR PODO1 LDA CHR GET CHARACTER CPA LCHR IS IT LAST CHARACTER LDA .40 YES RESET TO FIRST STA CHR JSB OTCHR GIVE IT TO L.P. ISZ CHR MOVE TO NEXT CHARACTER ISZ CNTR 80 CHRS OUT? JMP PODO1 NO JMP PODOX INCREMENT CHARACTER * PODOC LDA DM80 SET FOR 80 CHRS STA CNTR LDA FCHR GET CHARACTER JSB OTCHR GIVE IT TO LP ISZ CNTR 80 CHRS OUT? JMP *-3 NO LDB SW0 CHECK TO INCREMENT CHR JSB SWRT,I JMP *+2 YES JMP PODOT,I PODOX LDA FCHR GET CHARACTER INA INCREMENT IT CPA LCHR IS IT THE LAST LDA .40 YES RESET TO FIRST STA FCHR JMP PODOT,I RETURN * * FWAA EQU ZCEND * END $< ( 13020-80001 E S 0122 HP 9TRACK MAG TAPE INTERFACE DIAGNOSTIC             H0101 K ASMBAB̬à300VŠ(UNŠ-G HDHP903DAGNSàPGAM300VD GB SUP Ԡ00 HԠ HԠ5 Ԡ00 Ԡ0000000 Ԡ0000000 UNS SPà G00B AU0 BU SGU DAAU0 MMDU0 YU0B MPNZGϠϠNAZANUN G05B ABSMASK+3SԠDAVAAB G0B SPà SUP SPà SPAŠASà MMAASà SPѠASàS HNѠASàý GDѠASàG BDѠASàB SPà AGBSS BGBSS BADBSS MNԠBSS NԱBSS UNԠBSS YԠBSS DGNԠBSS GDBSS BƠBSS5 NԠBSS NԠBSS SѠBSS SAUBSS SPBSS BUƱBSS BUƲBSS BU3BSS BUƴBSS BU5BSS BU6BSS MŠBSS HԠBSS DNBSS SPà AñDà MUSKDà-000 MU00Dà-00 MUS0Dà-0 MUSDà- MUSDà- MUS3Dà-3 MUSDà- MUS5Dà-5 MUS6Dà-6 MUSDà- MUS9Dà-9 MUSDà- MUSDà- MUS3Dà-3 MUS3Dà-3 MUS6Dà-6 MUS3Dà-3 MUS33Dà-33 MU9Dà-9 MU500Dà-500 MUSPGDà-0 MUS5KDà-5000 PS6Dà6 PS0Dà0 PSDà PSDà PS0Dà0 PSDà PS69Dà69 PS9Dà9 P9999Dà9999 SPà ADDDƠNұ ADDDƠNҲ ADMDƠMMD ADDԠDƠNZ ADDԱDƠDAA AUS̠DƠAS ԠDƠ D̠DƠ0 SDƠMUSK MHƠDƠMH MDS0DƠ MDSDƠGAP YMDƠ.MSG YMSGDƠ.MSG NԠDƠ.MSG6 MSGDƠ.MSG .BƠDƠB DAGDƠMDAG DPNDƠDAP DPAԠDƠDAP GD̠DƠG0 G̠DƠGԱ MS̠DƠMSG MSG0DƠ.MSG0 MSGDƠ.MSG MSGDƠ.MSG MSG3DƠ.MSG3 MSG5DƠ.MSG5 MSGDƠ.MSG MSGDƠ.MSG MSG9DƠ.MSG9 MSG0DƠ.MG0 MSGDƠ.MS MSGDƠ.MS .MASKDƠMASK PԴDƠ.PԴ P5DƠ.P5 P6DƠ.P6 PԷDƠ.PԷ MSGDƠ.MSG DSD̠DƠDSD DYMDƠDY Y̠DƠY SBƠDƠB SB̠DƠ.SB SB.DƠ.SB SŠDƠ.S SԠDƠS. MPDDƠ.MP ԱDƠ0 ԱDƠ. Ա3DƠ. ԱDƠ.3 ԲDƠ. ԲDƠ.5 Բ3DƠ.6 ԲDƠ. 3DƠ.0 3DƠ. 33DƠ. 3DƠ.3 .NDƠNB SD̠DƠS0 SPà ADDҠNP SԠNP MàNP DGBUƠNP DàNP ϠNP PYàNP SԠNP BUƷNP BUƸNP SPà ASZԠ30060 KBDԠ36 MSKҠԠ00 ƠԠ0 H55Ԡ0055 MSKBZԠ00 MSK0Ԡ MSKԠ00 MSKԠ000 MSK3Ԡ00 MSKԠ6 MSK5Ԡ MSK6Ԡ00 MSKԠ0 MSKԠ000 MSK9Ԡ3000 MSK0Ԡ3 MSKԠ MSKԠ00 MSK3Ԡ0000 MSKԠ MSK5Ԡ0 DDNϠԠ000 DDMAԠ0000 DMAԠ0000 NKԠ0 SPà AS̠U S0Ԡ00 S̱Ԡ00 S̲Ԡ00 S3Ԡ000 àԠ3 MԠ ƠԠ3 SҠԠ3 SƠԠ03 Ԡ0 GAPԠ5 BSҠԠ BSƠԠ נԠ0 ϠԠ05 ҠԠ0 GMԠ5 ƠԠ3 SPà ADSBADD ADSBADD UNS HD90DAGNSà-DMAANSҠS-300-9000 --------------------- HŠPGAMSA0BYŠDHNBAKSSPAS ANDADSHŠD.AҠAHADHŠSH GSҠBYŠSMPADHAHBYŠADNϠH ŠBU. ƠDAASUҬHŠPGAMHASH0055BN HŠ''GSҠANDHŠ'A'GSҠ̠NANH DN. SNGSH5ϠNŠNHŠSHGSҬBNGS HŠPGAMϠANMA̠HAԬ''GSҠ006B. HҠSŠHŠPG@AMNNUSANSNGDSUN- ̠ANND--APŠSDDAԠHHMŠHŠAPŠS AUMAAYUND. SPà G500B DMAҠDAMUSPGBUҠDUNԠƠ0DS SAUN ASGHKHŠSHGS SSASSH5SԠ? HԠ6BYS ANDMSK0NϬGԠHŠBYŠANDMH SAAG-D AƬA ҠAG SABGSAVŠDҠDAAHK DBSŠGԠHŠS.A.ƠHŠŠBU SABɠ̠HŠŠBUҠHH NB-PAN SZUN MP-3 DADDMAGԠHŠDMAN̠D ҠDàPUԠNHŠS..ƠHŠN A6UԠPUԠHŠN̠D àSԠUPHŠDMABUҠADDSS DASŠŠBUҠS.A. AUԠPUԠHŠADDSSϠHŠDMA SàSԠUPHŠDMADUN DAMUSPG0DS AUԠPUԠϠHŠDMAHANN DAàSAԠHŠUNԠHA SBAMMD-MMAND SBDԠAҠHŠDAAAG Sà6àSAԠHŠDMA SBGԠAԠҠHŠANSҠϠNSH à6UNƠHŠDMA SƠ6 SBBAKҠPSNHŠDҠADNG DAMUSPGAҠHŠŠBUҠAD SAUNԠ-ԠHHAS(55 DBH55 DASŠŠBUҠS.A. SBAɠSAԠNGHŠBU NA SZUNԠNMNԠHŠBUҠUN MP-3NSHNGHŠBU àSԠUPҠHŠDMAAD DASŠBUҠS.A. BNB B ҠBPUԠNHŠANSҠDNB A SàSԠUPHŠDUN DAMUSPG0DS A SBDԠAҠHŠDAAAG SBGԠAԠҠHŠBAKSPAŠϠNSH DAƠSAԠHŠADPAN SBAMMDUPUԠHŠMMAND DAMUSPGSԠHŠNԠPAN'SD SAUNԠ-UNҠHŠANG DBSŠGԠHŠBUҠS.A. SBDԠAҠHŠDAAAG Sà6àSAԠHŠDMA SS6 MP-AԠҠHŠADϠNSH DDABɠGԠHŠBUҠD PABGDAADUSDAS MP+YSNNUŠDSPAYNG HԠ55BҠHA NBMVŠHŠBUҠPNҠAHAD SZUNԠNMNԠHŠDUN MPDGϠBAKGԠHŠNԠD SBGԠMAKŠSUŠHŠDVŠSADY SBBAKҠBAKSPAŠHŠSAMŠD SBGԠ-AND-AD DAƠSAԠHŠADPAN SBAMMDUPUԠHŠMMAND DASŠSԠUPHŠADBU BNB B ҠBSԠHŠDMADNB à A DAMUSPGSԠHŠDMADUN Sà A SAUNԠSԠHŠADHKUN SBDԠAҠHŠDAAAG Sà6àSAԠHŠDMA SS6AԠҠHŠADϠNSH MP- DBSŠADBUҠS.A. DDABɠGԠHŠBUҠD PABGDAADUSDASԠNHŠSנG MP+YSNNU HԠ55BҠHA NBMVŠHŠBUҠPNҠAHAD SZUNԠNMNԠHŠDHKUN MPDGϠBAKANDGԠHŠNԠD SBGԠMAKŠSUŠHŠDVŠSADY SBSASGԠHŠSAUSHKҠH ANDMSK-NDƠAPŠB PAMSK MP+ND--APŠDDND MPDMAҠNϠND--APŬNNU DAנSAԠHŠNDNG SBAMMDUԠPUԠHŠϞMMAND SBSASGԠHŠSAUSHKҠH ANDMSK-NDB.PUN̠'S PAMSK-A MP-3 MPDMAҠSAԠVҠAGAN SPà HD90DAGNSà-SUBUNS-300-9000 NDSUBUN SPà SNP SBSASGԠSAUS ANDMSKSԠҠ PAMSK MPDԠDDND MPS DDBנNDMMD SBMMD ASGSԠAUϠSԠPN ANDMSK0(Ԡ SZASS'A'G0? MPNP6YSSԠNԠUN SBSASGԠSAUS ANDMSKPUN̠NSHDNDNG PAMSK MP-3 NP6SBAUDԠK.AUϠSԠMD DAPS6MSSAGŠNGH DBNԠMSSAG SBY SBPYԠADDYŠUN MPY̬ SPà AUDԠNPAUϠSԠMDŠS ASGSԠAUϠSԠPN ANDMSK0Ԡ SZA'A'G0? MPAUDԬɠNϬNNU DAMSG0MSSAGŠBUҠS.A. SABUƷBUҠPN DBMUSHAAҠUN DABUƷɠGԠHAA SBSBPUԠNN SZBUƷADVANŠPN SZBNMNԠUN MP-GԠNԠHAA DASPAŠADDϠSPAS SBSB DASԠGԠUNԠN. ADASҠ+3 SBVԠNVԠANDADNN SBBUԠPNԠN MPAUDԬ HD90DAGNSà-SHPGAMS-300-9000 ŠMSHGSҠ SPà G000B PNASGHKҠDUN ANDMSKԠ00 SZASS'A'0? MPNPNYSŠNNŠD AƬAƠNϬSԠUPBYŠUN MAŬSSSԠBYŠUNԠNDA NPNAŠNϺBYŠUNԠSԠNDA SAUN SBGԠAԠҠMMDHN̠AG DAàSAԠ SBAMMD D3BDAANPUԠDAA ASGGԠDAABY ANDMSK0Ԡ3 SAAGSAVŠҠHA AƬAƠSԠUPSԠBY ҠAGSŠҠHA D35SSDAAAԠҠAG MPD35 D36ADAAàUԠPUԠϠBYS ASGADMHŠSHGS SSASSSSH5SԠ? MPNPN0NϬKPNG SBDԠYSNDHŠD PNHԠBNMA̠HA MPPNGϠBAKϠHŠSA NPN0SZSSHKDYPŠNDA MPNPN'SNԠADNGHD SZUNԠNMNԠHŠDUN MPD3 MPNPN3YSNDHŠD NPNSBDԠSԠҠHŠ MPPNSAԠVҠAҠND MPD3 NPN3SBDԠNDHŠDNGHD SBDԠSԠҠHŠ ASGSԠҠAHA SSASSH5SԠ? MPPNYSSP MPPNNϬSAԠANנD DԠNPԠDԠUN ò6AMMDGԠSAUSSԠҠ ANDMSKԠ0 SZASSNDƠAPŠSAUS? MPN0NMA̠Ԡ(P+ SBDԠSP SBGԠAԠҠAPŠϠSP DAנNDHŠAP SBAMMD SBDԠAԠҠNDϠNSH MPDԬ N0SZD MPDԬɠNMA̠Ԡ(P+ SKP DԠNPNDDԠUN SBSASGԠSAUS ANDMSKԠ000 PAMSK MP-3PUN̠NSHDNDNG MPDԬ SPà MMANDSŠUNŠ SPà G00B BGNSBDԠSԠҠ NP DBMDSK0MMDSAKS.A. ASGGԠSHSNGS PN3SASԠҠMMD MPNPNUԠPUԠMMD SZBADVANŠPN AҠSԠUPҠNԠMMD MPPN3 NPNDABɠGԠMMD SBAMMDUPUԠHŠMMD SBDԠSԠҠNDNG SBMҠSԠҠMNGPN SBGԠAԠҠMMDHN̠AG PN5ASGSԠҠSNDMMDPN AƬA A̬A ANDMSKԠ SZASSANYSNDMMDS? MPNPN5NϬGϠSԠҠHA DBMDSYSSԠNDMMDSAKS.A. PNSAMMANDS? MPNPN6YSUPUԠMMD SZBNϬADVANŠPN AҠSԠUPҠNԠMMD MPPN NPN6DABɠGԠMMD SBAMMDUPUԠMMD SBDԠSԠҠNDNG SBMҠSԠҠMNGPN SBGԠAԠҠMMDHN̠AG NPN5ASGADSנG. SSASSSנ5SԠ? MPBGNNϬNNU HԠBYSNMA̠HA MPBGNGϠϠSA SKP MҠNPMNGPDUN ASGSԠҠMNGPD ANDMSK3Ԡ0000 SZASS'A'0? MPMҬɠYSUSŠAG DBMPDSԠMNGNSAN A̬A A̬SAHSMŠ? MPNPNYSSAԠDAY SZBNϬYN MP-3 NPNDBBɠGԠNSAN SBDAY SZM MPMҬɠUN+ SPà DAYNPMŠPDNSANԠSHUDB SBMŠNHŠ"B"G. SZM MP-YŠUN̠Z MPDAY SPà GԠNP ò0SSMMD MP- MPGԬ SPà ŠMPUҠD SPà G00B PDAàSAԠ SBAMMD PASGGԠD DBA SBDGAԠҠDAAHN̠AG D39BDAAàUԠPUԠBYS DADAA SBDԠSԠҠ MPPSAԠVҠAҠND MBSZB'B'0? MPPNϬKPNG SBDԠYSNDD HԠBNMA̠HA MPPGϠBAKϠSA HD90DAGNSà-SUBUNS-300-9000 MMANDUԠPUԠϠMAGAPŠSUBUN SPà MMDNPMMDSHUDBŠNHŠ"B"G. SZMN ñBMMD SBSASGԠSAUS SBBԠSԠԠB SZASS MP òSàMMD MPMMD SPà AMMDNPMMANDNHŠ"A"G 5AMMD 6SàMMD MPAMMD SPà PUԠSAUSƠMAGAPŠNHŠ"A"G.SUB. SPà SASNP 3AMMD MPSAS SPà AҠDAAHANN̠UNS SPà DԠNP DàDAAàAҠN̠DAA MPDԬ SPà DԠNPAҠDAAHN̠AG DƠDAA MPDԬ SPà DGNPDAAAGAԠPUN A DSàDAA MPDG NASZA MPD SBMS̬ɠPNԠ"NϠAG"MSSAG SPà AҠNPAҠHŠN DAҠUԠPUԠAҠMMD SBAMMD SBMHƬɠAԠҠPANϠNSH MPAҬ SPà BAKҠNPBAKSPAŠAD DABSҠBAKSPAŠMMAND SBAMMDDϠHŠMMAND SBGԠAԠҠMMANDHANN̠AG MPBAKҬ SKP ԠUNS SPà BԠNPԠSAUSBԠS AҬA AҬSAԠBԠSԠ? MP+ ASSNϬ'A'G. AYSAG.0000000 MPBԬ SPà ԠSBAUDԠK.AUϠSԠMD DASPѠS SBSB DASP NAUNԠSԠN. SBV DASPAŠBANKMAԠHA. SBSB SBSASGԠSAUS SBDSSADDSAUSϠMSSAG SBBU DAPS0MSSAGŠNGH DBMSGMMANDD SBYɠPNԠMSSAG SBSKP̠SKPNŠAҠMSSAG ASGSԠҠҠHAԠSנ A SSASSSנSԠ? MPY̬ɠNϬSAԠDAGNSàV SBSASYSGԠSAUS DBMMDADD.+ƠԠMMD HԠ55BҠHAԠNDA SBPNSԠҠPPN MPY̬ɠSAԠDAGNS SPà SԠPNGADDSSUNS SPà SAVADNPSAVŠSԠSANGADDSS SZPYàPNGNDA MPSAVAD SPà PNNPSԠSנ3ҠPPN BSG B̬B SSBP? MPNPYSGԠS.A. DBPYàNϬKAԠPNGNDA SZBPNGBŠ? MPPNɠNϬNNUŠHNԠS MPY̬ɠYSSAԠDAGNSàV NPSBSSԠҠNDƠAP B SBPYàSԠPNGNDA MPSAVAD SKP AD0NPADAPŠBYS A D6SàDAAAԠҠDAAAG MPD3 NASZA MPD6 SBMS̬ɠPNԠ'NϠAG'MSSAG D3ADAAàGԠAPŠBYS PABɠMPAŠϠAPŠBYS MPAD0 SABADҠDD DAB SAGD SBAUDԠK.AUϠSԠMD SBGԠAԠҠMMDHN̠AG SBPNSԠҠPPN DAYԠGԠYŠUN SBVԠNVԠPUԠNNŠBU DASPA SBSB ]<:6DASPѠPUԠSԠSPN.NN SBSB DASP NA SBV DASPAŠBANKMAԠHA. SBSB SBSASGԠSAUS SBDSSADDSAUSϠMSSAG DASPA SBSB DAHNѠADDGUPN. SBSB DABUƸN.ƠSUNS SBV SBBUԠPNԠN DASPA SBSB DAGDѠPNԠGDBADBYS SBSB DAGD SBBN SBBUԠPNԠN DASPAŠBANKMAԠHA. SBSB DABD SBSB DABAD SBBN SBBU SBSKP ASԠBUS SAGD SABAD ASGSԠҠҠHA A SSASSSנSԠ? MPY̬ɠҠUN SBSASYSGԠSAUSSP DBSPSԠSPN. NB HԠ55BҠHA SBPNSԠҠPPN [< ) 13020-80002 E S 0122 HP 9TRACK MAG TAPE INTERFACE DIAGNOSTIC             H0101 K SPà PAKϠDMA̠N.NASɠMA SPà PAKNPNҠHDGSN"A""B"G. AƬAƠPSNVNDG ҠBADDDDDG ҠASZPUԠNϠASɠMA SBSBSŠNNԠPAŠNNŠBU MPPAK SPà NVԠBNAYϠDMA SPà VԠNPNҠHN.N"A"G. SABUƱMPAYBU DBMUSSԠDGԠUN SBDGN DBSNVSNNSANS SBSԠADS.SAGŠҠNVSNSS. PԷDBMUSSԠDD-VNSUN SBS PԱB SBDGBUƠAҠDGԠBU DABUƱBNAYN. PԲADASԬɠADDNVSNNSANԠϠN. SSASGNPSV? MP+NϬHANGŠNVSNNSANS SABUƱYSNDDMA̠N. SZDGBUƠADDϠDMA̠N. MPPԲ SZSԠHANGŠNVSNNSANS SZSѠDDDG? MPNPԴNϬSAVŠVNDG DAAGYSGԠVNDG DBDGBUƠGԠDDDG SBPAKPUԠHŠDGSNASɠMA SZDGNԠASԠϠDGS? MPPԷNϬGϠBAK MPVԬɠYSNVSNMPD NPԴDADGBUƠNANSVNDG SAAGSAVŠҠPAKNG MPPԱGϠBAKNVԠDDDG SPà BNAYN.UN SPà BNϠNPNҠHN.N"A"G. DBMUS SBDGNԠSԠDGԠUN DBMUSDGԠMANGUN SBN DBMUS""" SBDN P3DBAPUԠN.N"B"G.AS A B̬B SBBUƱSAVŠSHDN. ANDMSK5KPSB SAAGSAVŠҠ DAB ANDMSK5KPSB DBASԠUPҠPAKtNG DAAGSԠUPҠPAKNG SBPAKPUԠNϠASɠMA SZDGNԠNMNԠDGԠUN MP+UNԠNԠ0NNU MPBNϬ DABUƱSԠUPҠNԠDGS SZDNDGԠMAԠUN MPP3GԠNԠDGS DASPAŠBANKMAԠHA. SBSB DABUƱSŠ'A' SZNԠDGԠMAԠUN MPP3-GԠNԠDGS DASPAŠBANKMAԠHA. SBSB DABUƱSŠ'A' MPP3-GԠNԠDGS SPà NŠBUҠADNGUN SPà SBNP SA.BƬɠNҠHASɠHA'SN"A" SZ.BƠGϠϠNԠϠHA.ANS NP SZNԠNMNԠNŠPSNUN MPSB SPà UPUԠASɠNŠUN SPà BUԠNP DANԠGԠNŠPSNUN ADANԠDUBŠUN DBSBƠGԠNŠBUҠSANGADS SBY A SANԠSԠNŠPSNUN DASBƠSԠNŠPSNPN SA.B MPBUԬ SKP SKPNŠN SPà SKP̠NP DAAñASɠHAAҠUNԠƠ DBƠGԠNŠDNSAN SBYɠPMHŠUNN MPSKP̬ SPà PNԠYŠUN SPà PYԠNP DAYԠGԠYŠUN SBVԠNVԠPUԠNNŠBU DBMUSMSSAGŠNGH DAYMɠSANGADDSSƠMSSAG SBSBSԠUPNŠBU SZYMDN? SZBNMNԠHAAҠUN MP-NϬGԠNԠϠHAAS DAYMSGYSSԠMSSAGŠADS.PN SAYM SBBUԠPNԠN SBSKP MPPYԬ SPà SAUSSYMB̠UN SPà DSSNvPADSAUSNPNDN DBMUSSAUSUN SBNԱ PԴSAƠN? MPNP3YSNҠSYMBSNN P5SZSB̠NϬNMNԠSYMB̠PN AҠSHԠϠNԠB SZNԱHASA̠BSBNSD? MPPԴNϬSԠNԠSAUSB DASB. SASB MPDSSɠYSUN NP3SABUƱSAVŠNNSƠ"A"G DASB̬ɠGԠSAUSSYMB SBSBPUԠHAASNNŠBU DAMMA SBSB DABUƱSŠ"A"GBŠUNNG MPP5 SPà DAAHANN̠NSUNSԠUP SPà SԠNP DADàDAA-ϠADDS. SAϠSAVŠҠNSԠSUB. DAMUS33 DBADDԱNDԠADDS.ƠDAAHANN SBNS SKP MMANDHANN̠NSUNSԠUP SPà DAMàMMD-ϠADDS. SAϠSAVŠҠNSԠSUB. DAMUS6 DBADMNDԠADDS.ƠMMDHANN SBNS MPDAGɠSAԠMANDAGNS SPà -ϠHANN̠NSUNSԠUPSUBUN SPà NSԠNP SAUNԠN.Ơ-ϠNSUNS PDAB ANDMSK3KPHŠ0MSB'S ҠϠPUԠNDVŠSԠD SAB NB SZUN MPP MPNSԬ SPà MNGSԠUPSUBUN SPà MNNP DAԱ SAADDҠADDSƠGUAҠMNGPD DAMUSN.ƠMNGPDSUSD NA SAUN PDAB SAADDҬ NB SZADD SZUNԠNSHD? MPPNϬHANGŠNԠNSAN MPMN HD90DAGNSà-MANPGAM-300-9000 NZASGAD-ϠADDSSƠMAGAP SADàDAAHANN̠ɯϠADDSS dNA SAMàMMANDHANN̠ɯϠADDSS HԠ0 ASGGԠMPUҠAPŠUNԠSPDS SSASԠҠMPUҠSPD MPòGϠϠHŠUSàMAHNŠSԠUP A SSASSSSHSԠ? MPò6NϬSԠHŠMNGҠA6 AҬSAYSSԠHŠMNGҠA00 MP.3SԠUPҠ.5PS AҬSA MP.3SԠUPҠ5PS AҬSA MP.33SԠUPҠ3.5PS DB3SԠUPҠ5PS SBMNHANGŠHŠNSANSNHŠAB MPN ò6AҬSA MPNԠNҠSPD.5PSN' AҬSASԠҠANHҠSPD MP.ԱNҠSPD5PSN' AҬSASԠҠANHҠSPD MP.Ա3NҠSPD3.5PSN' MP.Ա5PS.6US òSA MP.ԲNҠSPD.5PSN' AҬSASԠҠANHҠSPD MP.ԲNҠSPD5PSN' AҬSA MP.Բ33.5PSUS DBԲ5PSUS SBMNNҠNנNSANSNAB MPNԠNNUŠNAZAN .ԱDBԱ5PS.6US SBMNNҠNנNSANSNAB MPNԠNNUŠNAZAN .Ա3DBԱ33.5PS.6US SBMNNҠNנNSANSNAB MPNԠNNUŠNAZAN .ԱDBԱ5PS.6US SBMNADNנNSANS MPNԠNNU .ԲDBԲ.5PSUS SBMNNҠNנNSANSNAB MPNԠNNUŠNAZAN .ԲDBԲ5PSUS SBMNNҠNנNSANSNAB MPNԠNNU .Բ3DBԲ33.5PSUS SBMNADNנNSANS MPN .3DB3 SBMNSԠNSANSҠ.5PS MPN .3DB3 SBMNSԠNSANSҠ5PS MPN .33DB33 SBMNSԠNSANSҠ3.5PS NԠHԠ0SԠUN SBSԠNGUŠHŠɯ SPà G000B MDAGNP à0àUNƠNUPԠSYSM A SAYԠSԠPGAMYŠUNҠϠ0 MPNPԱ YàASGSԠYŠUNԠPN A SASSPNԠYŠUN? MPNPԱNϬSAԠMANPGAM SBPYԠYSPNԠYŠUN HԠBYS NPԱASԠA̠UNSAVŠBUS SAMN SAHԠAPŠHAAҠUN SABADBU SAGDBU SANԠNŠHAAҠPSNUN SZY DAYԠGԠYŠUN PAP9999SԠҠUNԠ̠V MPMDAGGϠBAKSԠYŠUN ASGADAPŠUNԠSN DBMUS SBMŠAUϠSԠYŠUN ANDMSK0KPSB(A̠ SZAS'A'0 MPNP3NϬSԠDSGNADAPŠUN P3AYSHKSԠUN PASԠSSԠUNԠ0? MP+NϬSԠSԠUN MPNPYSSԠHŠNԠUN DAMUS SAS DAAUS̠SԠDŠSAKS.A. SABU5SԠMMDDŠSAKPN NPDABU5ɠAUMAAYSԠHŠS SBAMMDUNԠNN SZBU5ADVANŠDŠSAKPN NP SZSԠNMNԠSԠUN MPNP5 SZMŠNMNԠSԠYŠUN MPNP5 MPNPGϠPNԠUNSƠNŠMSSAG NP5SBSASGԠSAUS SAAPŠUNԠNNŠ? MPP3NϬ!jYANHҠUN AƬAƠYSSHŠSDUNԠADY? AҬSA MPP3NϬYANHҠUN MPNP6YSSAԠDAGNS NP3SASԠN.? MPS0YS̠HŠN AҬSANϬN.? MPS̱YS AҬSANϬN.3? MPS̲YS DAS3NϬN. MPñ9 S̲DAS̲ MPñ9 S̱DAS̱ MPñ9 S0DAS0 ñ9AMMD SBSAS SASSAPŠUNԠNNŠADY? MPNPԲYSNNU NPSBSASNϬGԠSAUSSP SASAUSAVŠSAUS DAPS0 DBMSG SBY SBSKP̠SPAŠNŠNŠAҠMSSAG DASAU HԠBAPŠUNԠNԠNN MPMDAGGϠBAKϠSA NPԲAƬA AҬSA MP-5 NP6A SASPSԠSPNUMBҠϠZ SPà NҠMNGS SPà SBSAVADSAVŠSԠSANGADDSS DBҠSԠAҠM SBMMD DBD̬ɠAҠDAYM SBDAYAԠDAYM SBSASGԠSAUS ANDMSKBZSԠBUSYB MA ANDMSKBZSԠUPҠSԠUN SABUƲKPҠS DBDYMɠANŠMŠϠNSHA SBDAYAԠDAYM SBSASGԠSAUS SASAUKPUNԠSAUS ANDMSKBZKPNYBUSYSAUSB SZA NA SBSԬɠSPƠNҠS̠BUSY DABUƲ SBSԬɠSPƠNҠNԠBUSY SPà DASAUSŠSAUSϠAG. ANDMSKHKA̠SAUSBUԠB SBSԬɠSPƠANYSAUSBUԠB SBPNSԠҠPPN SPà -ϠHANN̠NҠSS SPà à0 SBSAVADSAVŠSԠS.A.r ASԠSԠNDA D5SƠDAASԠDAAHN̠AG D6SSDAASԠAGS MA SBSԬɠSPƠDAAAGNԠS SPà A DƠDAAAҠDAAHN̠AG DSàDAASԠAGA MA SBSԬɠSPƠDAAAGNԠAD SBPNSԠPPN SPà SBSAVADKPSԠS.A. A ñ3SƠMMDSԠMMDHN̠AG ñSSMMDSԠAGS MA SBSԬɠSPƠMMDAGNԠS SPà A ñ5ƠMMDAҠMMDHN̠AG ñ6SàMMDSԠAGA MA SBSԬɠSPƠMMDAGNԠAD SBPNSԠPPN SPà SBSAVADKPSԠS.A. DAADSԠUPҠDAAHN̠NUP D0SADAAADAP A SƠ0UNNNUP DSƠDAASԠDAAHN̠AG D3SàDAASAԠNUP NP NP ASS NұNP à0àUNƠHŠNUPԠSYSM SBSԬɠSPƠNϠNUPԠNDAAHN SBPNSԠPPN SPà SBSAVADKPSԠS.A. DAADSԠUPҠVADMMDNUP 9SAMMD A SƠ0UNHŠNUPԠSYSMN DB ñ0BMMDSԠHŠMMANDBU ñSƠMMDSԠAGNHŠMMANDAD ñSàMMD NP NP MASS NҲNP à0àUNƠNPԠSYSAҠAGS SBSԬɠSPƠNϠNUPԠNMMDHN SBA SBPNSԠPPN SKP ADPNԠGAPSԠ SPà SBSAVADKPSԠS.A. SBSASGԠSAUS ANDMSKԠ00 SZASSBԠSAUS? MPNP0NϬGϠϠNԠS DBGAPYSGAP SBMMD DAMUSMҠPASSUN SAUN A SAMŠAGM ñSàDAAAԠҠNDƠGAP MPNP0GAPNSHDNNU SZMŠPUN̠NDƠGAP MPñ SZUN MPñ- SBAҠGAPADAҠN DAPSPNԠGAPMŠVҠUN DBMSGMSSAGŠS.A. SBYɠPNԠMSSAG ASG A SSASSSנSԠ? MPNP0NϬNNU HԠ55BYSҠHA NP0SBPNSԠҠPPN SPà SԠŠSAԠM SPà SBSAVADKPSԠS.A. SBD DBàŠMMAND òBMMDSԠҠŠNABŠ ò3SàMMD A DBSD̬ɠŠSAԠMŠDAY SBDAYA D6SSDAAŠAGS? A SABUƲ A B SBDAYA DSàDAA A SABU6 A D3ADAA SBDԠNDŠPAN DABUƲ SBSԬɠSPƠAGϠSN DABU6 SBSԬɠSPƠAGϠA SBSASGԠSAUS DBMSKBZԠ00 MB ANDBMASKUԠBUSYSAUS SBSԬɠSPƠANYSAUSBUԠBUSY SBMHԠAԠҠHŠMMDHN̠AG BSԠUPHŠSԠSPN. SZA SBMH SBPNSԠPPN SPà NA̠-ADSS SPà SBBASPBAKSPAŠDKSAUS SZASԠPASSD? MPNPϲ-NϬSKPADS SBSAVADKPSԠS.A. DAMUS B SBADADHŠDMPA SBMHԠAԠҠMMDAG MPNPϲ SZSPNMNԠSԠSPN. NPϲSBSAVADKPSԠS.A. SBD "DAàSAԠ SBAMMD SBDGAԠҠDAAAG AŠBYSA̠0'S D9ADAAàUԠPUԠDAA SBDԠNDD SBSASGԠSAUS DBMSKBZԠ00 MB ANDBMASKUԠBUSYSAUS SBSԬɠSPƠANYSAUSBUԠBUSY SBMHԠAԠҠMMDAG SZAMŠVҠUN? SBMHԠYSPNԠMSSAG SBPNNϬSԠҠPPN SPà SBBASPBAKSPAŠDKSAUS SZASԠPASSD? MPNP3-NϬSKPADS SBSAVADKPSԠS.A. DAMUSSԠUPҠAD B SBADADDMPA SBMHԠAԠҠMMDAG MPNP3 SZSPNMNԠSԠSPN. NP3SBSAVADKPSԠS.A. DAMU00SԠBYŠUN SAUN DBNKԠ0 NBBԠ0 SBD DAàSAԠ SBAMMD SBDGAԠҠDAAAG D3BDAAàUPUԠD B̬B̠SԠUPNԠD SZUNԠNMNԠDUN MPD3- SBDԠNDD SBSASGԠSAUS DBMSKBZԠ00 MB ANDBMASKUԠBUSYSAUS SBSԬɠSPƠANYSAUSBUԠBUSY SBMHԠAԠҠMMDAG SZAMŠVҠUN? SBMHԠYSPNԠMSSAG SBPNNϬSԠҠPPN SBSAVADKPSԠS.A. SBBASPBAKSPAŠKSAUS SZASSSԠPASSD? MPNPϴYSNNU DAPSNϬPNԠҠMSSAG DBMSGMSSAGŠS.A. SBYɠPN SBSASGԠSAUSSP DBSPUNԠSԠSPN. HԠ55BҠHA MP?<:6YàGϠϠSAԠƠDAGNS NPϴDBNKԠ0 NB SBNұSԠUPҠAD-MPA DBADD DAMU00DUN SAUN A SABUƸDUNԠ+ DAƠSAԠAD SBAMMD NP5SBAD0ADBYSMPA DANұAŠMPAŠD A̬A SANұSŠNנD SZBUƸDUNԠ+ SZUNԠDUNԠ- MPNP5ADNԠBYS SBDԠSPADNG SBMHԠAԠҠMMDAG SZAMŠVҠUN? SBMHԠYSPNԠMSSAG SBPNNϬSԠPPN SZSPNMNԠSԠSPN. SPà SBSAVADKPS.A.GAPŠMAKS L< * 13020-80003 E S 0122 HP 9TRACK MAG TAPE INTERFACE DIAGNOSTIC             H0101 K DBGMGAPŠŠMAK SBMMD DAMUS SAUNԠAMŠYŠҠ A SAMŠSԠAGM ñSàMMDAԠҠNDƠGAP MPNPNDƠGAPGϠϠSԠSUB. SZMŠPUN̠NDƠGAP MPñ SZUN MPñ- NPSBSASHKSAUS. ANDMSK6HKBԠ. PAMSK6DԠƠ? ASSNϬSP. ANҠHA-. SBSԬɠNNUŠƠGAPŠMAKK. SZASSSPAPŠƠSԠAD MPNPNNU SBAҠAҠHŠN SZA SBMH NPSBPNSԠҠPPN SPà SBSAVADKPSԠS.A. DBMSԠMMDԠNDN SBMMDUPUԠSԠMMAND DABS òAMMDUԠPUԠSNDMMAND SBSASGԠSAUS MDSBBԠMMDԠS SBSԬɠSPƠԠNԠDD SBMH SBSԬɠSPƠŠMAKNԠDD SBPNSԠPPN SZASS MP+GϠϠNԠS SBAҠAҠHŠN SPà ŠSS SPà SBSAVADKPSԠS.A. BA̠Z'S DAMU500000BYŠD SB SPà SBSAVADKPSԠS.A. DBNKA̠'SBMHN̠ DAMUS6BYŠD SB SPà SBSAVADKPSԠS.A. DBBG B̠A̠'SBMHN̠6 DAMUS9BYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠5 B DAMUS00BYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠ B DAMUSBYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠3 B DAMUS36BYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠ B DAMUS36BYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠ B DAMUS36BYŠD SB SPà SBSAVADKPSԠS.A. DBBGA̠'SBMHN̠0 B DAMU93BYŠD SB SPà SBSAVADKPSԠS.A. DBKBDŠHKҠBAD DAMUS6MNMUMNGHD SB SPà DBM SBMMD SBMH SZA SBMH SPà SBSAVADKPSԠS.A. BϠDDA̠N'S DAMUS SB SPà SBSAVADKPSԠS.A. B DAMUS5K0KBYŠDA̠'S SB SPà SBSAVADKPSԠS.A. DBMŠŠMAK SBMMD SBMHԠAԠҠMMDAG DBBS SBMMD SBMHԠAԠҠMMDAG SBSԬɠSPƠŠNԠBAKSPAD SBPNSԠPPN SBSSԠҠ DBBSƠNϬNNU SBMMD SBG SBSAVADKPSԠS.A. DBBS SBMMD SBG SBBAKҠBAKSPAŠVҠSNDŠMAK DBSҠADSPAŠD SBMMD SBMHԠAԠҠSԠMPN SBSԬɠSPƠDNԠSPADAD DBSƠSKPHŠSԠD SBMMD SBMHԠAԠҠMMDHN̠AG SBSԬɠSPƠŠNԠSPADAD SZASSSԠŠSPANG MPNP6 TSBAҠSPHŠAPŠGϠϠNԠS SBPNSԠҠPPN SPà ADSS SPà NP6SBSAVADKPSԠS.A. B DAMU500 SBADADA̠Z'SD SPà SBSAVADKPSԠS.A. DBNKDAAD DAMUS SBADHN̠ SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS9 SBADHN̠6 SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS0 SBADHN̠5 SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS SBADHN̠ SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS3 SBADHN̠3 SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS3 SBADHN̠ SPà SBSAVADKPSԠS.A. DBBUƴ B DAMUS3 SBADHN̠ SPà SBSAVADKPSԠS.A. DBBUƴ B DAMU9 SBADHN̠0 SPà SBSAVADKPSԠS.A. DBKBDADHKҠBAD DAMUS6 SBAD SBA SPà DDBYŠDԠSԠ SPà SBSAVADKPSԠS.A. DBƠDDBYŠDS SBMMD SBMHԠAԠҠMMDAG BSԠUPUNԠSԠSPN. SZA SBMH SBSASGԠSAUS ANDDDNϠSԠDDBYŠB PADDN ASS A SBSԬɠSPƠMŠHANNŠBYŠAD BSGHKSנ3ҠPPN B̬B SSBSSSנ3SԠ? MPNP9NϬGϠϠNԠS DBBSƠYSSԠUPҠ-UNƠS SBMMD SBMHԠAԠҠMMDAG SBPNP SKP NDGAPS SPà NP9SBSAVADKPS.A. SBMHԠSԠMMDHN̠ҠADY BSԠUPUNԠSԠSPN. SZA SBMH DBƠADŠMMAND SBMMDUŠHŠMMAND SBDGAԠҠDAAAG SBDԠYSSԠDAAAGA DBGD̬ɠMNMUMGAPM SBDAYAԠҠSAԠƠNԠD A DSSDAAAGS? AN SABUƲ DBG̬ɠGAPANŠM SBDAYAԠHŠMPNM A D5SàDAA A SABU6 SBAҠAҠHŠN BSԠUPUNԠSԠSPN. SZA SBMH DBS SBMMD SBG DABUƲ SBSԬɠSPƠGAPϠSH DABU6 SBSԬɠSPƠGAPϠNG ASGSԠҠPPN A̬A SSASSSנ3SԠ? MPNP0NϬGϠϠNԠS SBBAKҠYSSԠUPҠP SBBAK MPPNP SPà SԠADSAԠM SPà NP0SBSAVADKPSԠS.A. DBBS SBMMD SBG DBƠADMMAND SBMMDMPŠHŠMMAND SBDGAԠҠDAAAG SBAҠAҠHŠN SBDԠAҠHŠDAAAG BSԠUPUNԠSԠSPN. SZA SBMH DB SBMMD DBDSD̬ɠADSAԠDAYM SBDAYAԠ30PS A D0SSDAAA MA SBSԬɠSPƠADSAԠMŠϠNG SBDԠSPADPAN SBA SBPNSԠPPN SBSSԠҠ SPà àSԠ SPà SBSAVADKPSԠS._A. B DAMUSBYŠUN SBŠBYSA̠'S SPà SBSAVADKPSԠS.A. B DAMUS3 SBŠ6BYŠDA̠'S SPà SBSAVADKPSԠS.A. B DAMUS6BYSA̠'S SB SBSAVADKPSԠS.A. SBBAKҠBAKSPAŠVҠHŠDS SBBAK SBBAK AAҠHAAҠUN SAH DA.MASKàSAKS.A. SABUƷSAKPN DAMUS SAUNԠPASSUN PDBƠSAԠAD SBMMD SBGԠAԠҠNDƠD D9ADAAàADàMHŠASԠD ANDMSKҠKPHGHҠBS(Ԡ00 PABUƷɠHKHAA MPNP0 SABADSԠUPҠS DABUƷ SAGD SBSԬɠSPƠҠNANY SBPNSԠҠPPN MPP NP0SZBUƷADVANŠPN SZUNԠNMNԠSԠDUN MPPADHŠNԠSԠD SZSPNMNԠSԠN.UN HD90DAGNSà-PNA̠PGAMS-300-9000 DAAS SPà PASG ANDMSK5Ԡ0 SZASS SBPԴ SBSSԠҠ SPà PS SPà P5ASG ANDMSK SZASS SBP5 SBSSԠҠ SPà ŠNABŠS SPà P6ASG ANDMSK SZA SBP6 SPà NDADPNԠS SPà PASG ANDMSK6 SZASS SBPԷ SBSSԠҠ SPà DMAANSҠS SPà PASG ANDMSKBZSԠSH SZASS MPP9 SBSAVADKPSԠS.A. PԸDAPS9SԠUPSԠSPN. SASP cDADMASԠUPҠDMAŠMD ADADàPUԠNDAAHANN̠-ϠADDSS A6 à DAADDԠDAAADDSSUPUԠN A SàSԠUPDMADUN DAMU9 A DBàŠMMANDϠSAԠAP SBMMD SBD Sà6 SBG à6UNƠDMA SBSAS ANDMUS33MASKUԠԠSAUS SBSԬɠSPƠA̠SAUSNԠA SBPNSԠҠPPN SBSAVADKPSԠS.A. SBBAKҠBAKHŠD SPà DADDMADMANPUԠN ADADàPUԠNAPŠ-ϠADDSS A6 à ANA A ADASŠSAGŠADDSSNPUԠN A Sà DAMU9DUN A DBƠSAԠAP SBMMD Sà6 SBG à6UNƠDMA SBSASSԠSAUS ANDMUS33MASKUԠԠSAUS SBSԬɠSPƠA̠SAUSNԠA A SAHԠSԠDUNS DAMU9 SAUN DAADD SABUƷPNҠϠDMAŠDAA DAS SABUƸPNҠϠDMAADDAA P0SZH DABUƷ PABUƸ MPNU SAGDSԠUPҠҠMSSAG DBBUƸ SBBAD MPU NUSZBUƷ SZBUƸ SZUN MPP0 UԠA SBSԬɠSPƠAD-Š SBPNSԠҠPPN SKP ND-NŠS SPà P9ASG ANDMSK SZASS MPY DB SBMMD ASGSԠҠAUϠSԠPN ANDMSK0Ԡ SZASS'A'G0? MPNPYSPNԠSԠNԠUN SBSASGԠSAUS ANDMSKPUN̠NSHDNDNG PAMSK MP-3 NPSBAUDԠK.AUϠSԠMD DAPS0MSSAGŠNGH DBMSG SBY HԠB MPMDAG HD90DAGNSà-SUBUNS-300-9000 ADSUBUN SPà ADNPDUNԠN"A"DN"B" NA SABU6SAVŠNNS SBBUƴ"" A SAHԠAPŠHAAҠUN SBMHԠAԠҠAG BSԠUPUNԠSԠSPN. SZA SBMH SBDԠAҠDAAAG DBƠADMMAND SBMMD DBBU6 SBDGAԠҠDAAAG SZH DADAAàGԠϠAPŠBYS PABUƴMAKŠMPASN ASS MPNP0SPADPNԠ SZBNMNԠDUN MPD-ADNԠBYS SBDԠAҠDAAHN SZSP ASGSԠҠNDƠSԠHA SSASSSנ5SԠ? MPADɠNϬNNU SBSASYSGԠSAUSSP DBSPUNԠSԠSPN. HԠ6BUNԠSԠHA MPAD NP0SBDԠAҠDAAHN SABAD DABUƴ SAGD A SBSԬɠSPƠDAAS SBGԠAԠҠMMDAG ASGHKҠPPN A̬A SSASS MPADɠNϠPAND DABSҠPBAKSPAŠAD SBAMMD SBGԠAԠҠMMDAG SBPNUMPϠSAԠƠS SKP ŠSUBUN SPà ŠNPDN"B"G SBBGSAVŠNNS SAAG"" SADNN.ƠHAASϠBŠN DAMUS0SԠŠUN ˗ SAUN A SANԠŠUN P6DBàŠMMAND SBMMDUŠHŠMMAND SBD SBDGAԠҠDAAAG NP5DBBG DBDAAàUPUԠD SZDNNMNԠDUN MPNP5-GԠNԠD SBDԠSPŠPAN SBMHԠAԠҠMMANDHANN̠AG BSԠUPUNԠSԠSPN. SZA SBMH SBSASGԠSAUS AҬSAPAY? MPԠYSBAKSPAŠŠHŠD ASGSԠSנ5 SSASSSPAԠNDƠUNԠSԠ? MPNPNϬGϠϠNԠS SBSASYSGԠSAUS DBSP NBUNԠSԠN. HԠ6BNDƠUNԠS NPSBPNSԠҠPPN SZSPNMNԠSԠSPN. SBSSԠҠ DAUN PAMUS0 MPŬ SBAUDԠK.AUϠSԠMD DAYԠYŠUN SBV DASPA SBSB DASP SBSB DASPSԠSPN. SBV DASPA SBSB SBSASGԠSAUS SBDSSADDSAUSϠMSSAG DANԠNUMBҠƠS SBV DASPA SBSB DBMUS DAMSG SBSB SZMSG SZB MP- DAMSG SAMSG SBBU SBSKP SBSSԠҠ MPŬ ԠSBBAKҠBAKSPAŠHŠD ASGSԠҠHAԠ(Sנ A SSASSSנSԠ? MPNP0NϬNNU SBSASGԠSAUSSP DBSPUNԠSԠSPN. NB HԠ55BҠHA NP0ASG A̬A λSSASԠPPN(Sנ3 SBPNPNASԠS DBGAPADDAGAPAҠAH SBMMD SBGԠAԠҠMMDHN̠AG DAAGSԠUPҠ SADN DBBG SZN SZUNԠNMNԠŠN. MPP6ŠHŠD SBAUDԠK.AUϠSԠMD DAY SBV DASPA SBSB DASP SBSB DASP NA SBV DASPAŠBANKMAԠHA. SBSB SBSASGԠSAUS SBDSSADDSAUSϠMSSAG SBBU DAPSMSSAGŠNGH DBMSG5HADAŠҠPMANNԠAPŠ SBYɠPNԠMSSAG SBSKP HԠ55BSP MPMDAGSAԠHŠPGAM SKP BAKSPAŠDSԠUNŠ SPà BASPNP DBBSҠBAKSPAŠMMD ÷BMMD SBSASGԠSAUSS SASAU SBBԠSԠҠMMD SZASSԠ? MPNPϱYSPNԠMSSAG øSàMMDàNϬNNU DBD̬ SBDAYAԠҠPANϠMP SBMHԠAԠҠMMDAG SBSԬɠSPƠDNԠBAKSPAD MPBASP NPϱSBAUDԠKAUϠSԠMD DAYԠGԠYŠUN SBVԠNVԠS DASPAŠMAԠMSSAG SBSB DASPѠS SBSB DASP NA SBVԠNVԠS DASPAŠMAԠHAA SBSB DASAUSŠSԠSAUS SBDSSADDSAUSϠMSSAG SBBUԠPNԠMSSAG SBSKP̠SKPNŠAҠMSSAG A SZSPNMNԠSԠSPN. MPBASP SPà MSGNPMSSNG<:6DAAAGMSSAG SBPNSԠPPN SBAUDԠK.AUϠSԠMD DAYԠGԠYŠUN SBV DASPA SBSB DASP SBSB DASP NA SBVԠSԠSPN. DASPA SBSBPUԠNN SBSASGԠSAUS SBDSSADDSAUSϠMSSAG DASPAŠBANKMAԠHA. SBSB DBMUS9 DAMSG SBSB SZMSG ֡< + 13020-80004 E S 0122 HP 9TRACK MAG TAPE INTERFACE DIAGNOSTIC             H0101 K SZB MP- DAMSGSŠMSSAGŠPN SAMSG SBBUԠPNԠN SBSKP MPY SPà MMANDHANN̠AGMNGUNŠ SPà MHԠNPMMANDHANN̠AGM DAԬɠMMDAGMNGNSAN SAMŠSԠMŠUN ôSSMMDSԠMMANDHANN̠AG MP+3 A MPMHԬɠAGSԠUN SZMŠADϠNG? MP-5 SBSASGԠSAUS SASAU BSGADSנG. B̠SԠҠҠHAԠPN SSBSSSנSԠ? MPN0NϬSԠҠHŠPPN DBSPYSGԠSԠSPN.SAUS HԠ55BҠSP BSG B̠SԠҠPNGMD N0B SSBSנ3SԠ? ASSYSSKPMSSAG ANNU MPMHԬ SKP MHԠNPSSVŠAGMŠPNԠU SBBGSAVŠ'B' SBAҠAҠHŠN ASGSԠҠPPN A̬A SSASנ3SԠ? MPMHԬɠYSDN'ԠPNԠMSSAG SBAUDԠK.AUϠSԠMD DASPѠS SBSBNSԠNN DASP DBBGSŠ'B' SZBNMNԠSԠSPN.? NAYS SBVԠADDϠN DASPA SBSB DASAUVŠHŠSAUS SBDSSADDϠN SBBUԠPNԠN DAPSMSSAGŠNGH DBMSG3ϠMUHMŠҠAG! SBY SBSKP MPY SPà SԠSUBUN SPà G000B S.NP SABU3 SZSPNϬNMNԠSPN.N' ҠGDƠ0HNNϠ ҠBAD SZASSANY? MPS5NϬSԠSנ5 SBSASYSGԠSAUS SASAU ASGSԠNN-PNNGS(Sנ3 A̬A SSA MPS+DN'ԠPNԠҠMSSAGS SBAUDԠK.AUϠSԠMD DAYԠGԠYŠUN SBVԠNVԠADNNŠBU DASPA SBSBADDSPAS DASPѠS SBSBADDHAASϠNŠBU DASPGԠSPN. SBVԠNVԠADNNŠBU DASPA SBSBADDSPAS DASAUPUԠSAUSBAKNϠ"A" SBDSSPUԠSAUSNNŠBU DAGDSԠҠDAAS ҠBAD SZASSS? MPS-NϬSԠҠHAԠS DASPAŠBANKMAԠHA. SBSB DAHNѠHAAҠN.UAS SBSBADDHAASϠNŠBU DAHԠGԠAPŠHAAҠN. SBVԠNVԠADNNŠBU SBBUԠPNԠMSSAG DASPAŠBANKMAԠHA. SBSB DAGDѠG SBSBADDHAAҠϠNŠBU DAGDGԠGDHAA SBBNϠPUԠBNAYDAANN SBBUԠPNԠMSSAG DASPAŠBANKMAԠHA. SBSB DABDѠB SBSBADDHAASϠNŠBU DABADGԠNUSHAA SBBNϠPUԠBNAYDAANN SBBUԠPNԠN SSBSKP ASGSԠSנҠPN A SSASSSנS? MPS5NϬSԠSנ5 DASAUGԠSAUSSP DBSPGԠUNԠSԠSPN. HԠ55B S5ASGSԠSנ5 SSASSSנ5S? MPS3NϬNNU SBSASYSGԠSAUSSP DBvSPGԠUNԠSPN. HԠ6BNDƠUNԠS S3A SAGDSԠBU SABAD"" SBSSԠҠ DABU3SŠHŠ'A'G MPS. HD90DAGNSà-PNA̠PGAMS-300-9000 PNA̠DAASS SPà .PԴNPDAAS SBSAVADKPSԠS.A. DAMUS5SԠUPHAAҠSUNŠPN SAS DAMUSKSԠN.ƠSUNS ADAMUS SANԱ SBD DBàSAԠ SBMMD P9SBDGAԠҠDAAAG NPԸDADPN D3ADAAàUԠPUԠϠAPŠBYS SZDPNADVANŠHAAҠPN SZSѠNMNԠSUNҠUN MPP9 DAMUS5SԠSUN SAS DADPAԠSԠHAAҠANPN SADPN SZNԱNMNԠSUNŠUN MPP9 SBDԠND SBMHƬɠAԠҠMMDHN̠AG SBSASGԠSAUS AҬSASԠҠPAY A A SBSԬɠSPƠADAҠŠ SBPNSԠҠPPN SBSAVADKPSԠS.A. SBBAKҠBAKSPAŠDAD DAMUSKSԠSUNŠUN SANԱ ANA SABUƸSԠGUPUN DB SBMMDSAԠADNG PDAMUS5SԠSUN SAS DBDPAԠBUҠS.A. SBAD0ADBYS NBADVANŠPN SZBUƸNMNԠBYŠUN SZSѠNMNԠSUNҠUN MP- SZNԱNMNԠSUNŠUN MPP SBDԠAҠDAAHANN SBAҠAԠҠMMDHN̠AG SZSPNMNԠSԠSPN. SPà DAMUS~SԠŠDUN NA SAN DAMUSPGBUҠNGH SAUN DBS DAYԠDAGNSàYŠUN SAB PSZBɠGNAŠANDMBYS NP DAB ANDMSKA̠ AƬA ADAB SAB NBADVANŠPN SZUNԠNMNԠBUҠDUN MPP̠HŠBU SBSAVADKPSԠS.A. SBDԠAҠDAAHN̠AG DAMUSPGBUҠDUN SAUN DBSŠBUҠS.A. DAàSAԠ SBAMMD SBDGAԠҠDAAAG DABɠGԠANDMBYS D9ADAAàUԠPUԠϠAP SZBADVANŠPN SZUNԠNMNԠBUҠDUN MPD9- SBDԠND SBMHƬɠAԠҠMMDHN̠AG SBSASGԠSAUS AҬSASԠҠPAYSAUS MPNP A P5SBSԬɠSPƠPAY SBPNSԠҠPPN MPNP3GϠϠNԠS NPSZNԠN.ƠS SBSAVADɠŠHŠD A MPP5GϠϠSԠSUB. SZSPSԠSԠSPN.ҠNԠS NP3SBSAVADKPSԠS.A. SBBAKҠBAKSPAŠHŠD DAMUSPGBUҠDUN SAUN ANA SABUƸDUN DBƠSAԠADNG SBMMD DBSŠBUҠS.A. SZUNԠNMNԠBUҠDUN P6SBAD0ADAPŠBYS NBADVANŠPN SZBUƸNMNԠDUN SZUNԠNMNԠBUҠDUN MPP6GԠNԠBYS SBDԠSPADNG SBMHƬɠAԠҠMMDHN̠AG ASGSԠҠHA SSASנ5SԠ? HԠ6BYSSP SBPNSԠҠPPN SZSPNMNԠSԠSPNUMB MP.PԴ SPà PNA̠NDGAPPSԠ SPà .P5NPPS SBSAVADKPSԠS.A. SBAҠAҠHŠN SBD DBà SBMMD SBDGAԠҠDAAAG BŠABYŠD DBDAA SBDԠNDŠPAN SBA DAMU500000BYŠD SADN DAMUS0SԠŠUN SAUN PԸDBàSAԠ SBMMD SBDGAԠҠDAAAG NPԷB DBDAA SZDNNMNԠDUN MPNPԷ- SBDԠNDŠPAN B DAMU500DUN SADN SBA SBBAK SZUNԠNMNԠŠUN MPPԸŠHŠD0MS SBBAKҠBAKSPAŠVҠHŠBYŠD DBƠADS SBMMD SBDGAԠҠDAAAG SBD DBGD̬ɠMNMUMGAPM SBDAYM A D5SSDAASHUDBŠNϠAG A SABU3 SBA DABU3 SBSԬɠSPƠGAPϠNA SBPNSԠPPN MP.P5 SPà PNA̠ŠNGSԠ SPà .P6NPŠNABŠS SASP SBAUDԠK.AUϠSԠMD DAPSMSSAGŠNGH DBMSG9"MVŠŠNABŠNG" SBY HԠ56B DBàŠMMAND ò5BMMD SBSASGԠSAUS PAҬAҠŠPԠԠS SASS MP+3 A SASSSǟԠSAUSB ASS A SBSԬɠSPƠNϠPԠҠ SBAUDԠK.AUϠSԠMD NBDAPS DBMSG0"PAŠŠNG" SBY SBSKP SBAҠAҠHŠN HԠ56B MPY̬ SPà PNA̠NDADPNԠSS SPà .PԷNPNDADPNԠS DAPS69SԠUPSԠSPN. SASP DBנNDMMAND SBMMD SBSASGԠSAUS ANDMSK9SԠҠNDAPŠBUSY PAMSK9 ASS A SABUƲ SBSASSԠSAUSҠND ANDMSKPUN̠NSHDNDNG PAMSK MP-3 DABUƲ SBSԬɠSPƠNԠNDNGҠBUSY SBSASSԠҠADPNԠSAUS ANDMSK SZA ASS MA SBSԬɠSPƠNԠAԠADPN DABSҠSԠMMANDԠAԠB òAMMD SBSASGԠSAUSSԠԠB PSBBԠADPNԠԠS SZASS MP.PԷ SBAUDԠK.AUϠSԠMD DASP SBSBPUԠNNŠBU DASP NAUNԠSԠN. SBV SBBUԠPNԠN SBSKP MP.PԷ HD90DAGNSà-PGAMNSANS-300-9000 PAGŠBUҠ HDSDUA̠ASŠSԠSN G500B DAD Ҡ.Z SA.Z DAD Ҡ.ZNGUANSN SA.Z DAD Ҡ.Z3 SA.Z3 DAD Ҡ.Z SA.Z DAD Ҡ.Z5 SA.Z5 DAD NA Ҡ.Z0 SA.Z0 DAD Ҡ.Z SA.Z SAԠASGADNPUԠMSHGS. (SSASԠSH5ϠPAUS. MPSAԠP. DAN.UNҠҠ00BYŠPAN. SAUNԠSŠMPAY. SZGGGŠADŠUN. SBAҠAҠHŠN. SBGԠAԠҠMMANDHANN̠AG. DBG"B"GGŠUN. SBANԠϠŠ? DBàYS"B"3. SBSSANԠϠAD? DBƠYS"B"3. SBMDSAԠMVNGAP. .ZSàDAAàA 13042-80001 1349 S 0122 13184A/7970E MAGNETIC TAPEDIAGNOSTIC             H0101 ?_ ASMBABì̠0633VàDAGNSàHP30 HDHP-3V.àDAGNSà30-9000 GB GMPNɬ NP HԠB HԠ5B UN P6 Ԡ0 S GB NP SPà G00B SAԠMPN̬ G0B DƠY. AU0 BU DAAU0 MMDU YU0B .NBƠU500B G05B ABSNDSԠDAVAAB G0B SPà ANBUƠBSS ANPAԠBSS AGBSS AG0BSS AGBSS AGBSS BASűBSS BGBSS BGBSS BUADBSS NԱBSS NԱBSS UNԠBSS YNԠBSS DMAנBSS DMAU6BDMAHANN̠ BUƠBSS NԠBSS AGBSS MŠBSS DBSS NԠBSS NNԠBSS NԠBSS SMBSS SAԱBSS SAUBSS SGBSS B00BSS B0BSS B0BSS B0BSS B05BSS B06BSS B0BSS B09BSS BƱ0BSS NUMBBSS MŠBSS HԠBSS DNԠBSS SPà HDDà-3 NDà- NDà- N3Dà-3 NDà- N5Dà-5 N6Dà-6 NDà- N9Dà-9 N0Dà-0 N3Dà-3 N6Dà-6 N6Dà-6 N0Dà-0 N00Dà-00 N0Dà-0 N0Dà-0 N0KDà-0000 D0Dà0 DDà DDà DDà DDà D6Dà6 D3Dà3 D3Dà3 D5Dà5 D6Dà6 DDà DDà DDà D0Dà0 DDà D6Dà6 D9999Dà9999 SPà .ADƠA .AS̠DƠAS ADDDƠNұ ADDDƠNҲ ADD3DƠN3 ADDDƠNҴ ADD5DƠN5 ADD6DƠN6 ADDDƠNҷ ADDDƠNҸ ANS.DƠANS .ANSADƠANSA .ANSBDƠANSB BAS.DƠBAS MDS0DƠ MDSDƠBS .SBDƠSB D0DƠDY0 DƠDY0+ DƠDY0+ DƠDY0+6 DH55DƠH55 BƠFDƠB DPԠDƠD NBUƠDƠ.NB .DϠDƠD N̠DƠNZ NɠDƠSYY MDAɠDƠMDAG MSG0DƠ.MS0 MSG03DƠ.MS03 MSG0DƠ.MS0 MSG05DƠ.MS05 MSG06DƠ.MS06 MSG0DƠ.MS0 MSGDƠ.MS NSDƠD0 PHɠDƠPHA PYɠDƠPY PSɠDƠPSA Y̠DƠY SԠDƠAS SMSDƠAS SKPɠDƠSKP SBUƠDƠ.MS6+6 SNDƠSN MPDDƠ.MP SPà DDƠD .KYPDƠKY KYPԠDƠKY .SBDƠSB .SAנDƠSA .SAנDƠSA SPà MMDàNP DAAàNP DGNP PYàNP NYNP DDNP DPNP SPà BԠ BԠ B3Ԡ3 B0Ԡ0 BԠ B00Ԡ00 B00Ԡ00 B0Ԡ0 B3Ԡ3 B00Ԡ00 B500Ԡ500 B00Ԡ00 B000Ԡ000 B3000Ԡ3000 B000Ԡ000 B3Ԡ3 B0KԠ0000 DMAMSԠ6 MASKԠ3 MSKMԠ0000 MSKԸԠ00 NԱ5Ԡ NԠԠ3 NMԠ5 PADAԠԠ0 SPԠ3 H55Ԡ0055 SPà AS̠U Ԡ00 Ԡ00 Ԡ00 Ԡ000 Ԡ0 ƠԠ3 SҠԠ3 SƠԠ03 Ԡ0 BSҠԠ BSƠԠ נԠ0 ҠԠ0 ϠԠ05 PŠԠ003 SPà DY0Dà-93600Pɠ5.0PS Dà-06"""" Dà-900""" Dà-9"""" Dà-556""" Dà-30"""" Dà-900""" Dà-6"""" .MPҠDà-56 Dà- Dà-93 SPà SBU Ԡ00 Ԡ0000 Ԡ000 Ԡ0000 Ԡ00 Ԡ0 Ԡ0 Ԡ000 Ԡ00 SAנU Ԡ3 Ԡ535 9Ԡ5 Ԡ500 Ԡ0 SAנU Ԡ5 Ԡ33 Ԡ0 Ԡ0 Ԡ3 SBU Ԡ0 Ԡ00 Ԡ000 Ԡ000 MSGNԠ00000 DԠ55 SPà SUBASBANS. SUBҠSBAND ADSBADD ADSBADD AD3SBADD3 ADSBADD AD5SBADD5 AD6SBADD6 ADSBADD ADSBADD SPà MAԠDABŠ SPà DҠԠ00009AKPŠ600P Ԡ0009AKNZ00P Ԡ000AKNZɠ00PɠVNPAY Ԡ0003"""556""" Ԡ000"""00""" Ԡ0005"""00"DD" Ԡ0006"""556""" Ԡ000"""00""" Ԡ0SAԠV SKP ANSɠMAԠ"A"PANDS SPà ANSAU Ԡ Ԡ655 Ԡ000 Ԡ3060 Ԡ660 Ԡ60 Ԡ05 Ԡ303 SPà ANSɠMAԠ"B"PANDS SPà ANSBU Ԡ Ԡ36 Ԡ0 Ԡ050 Ԡ50 Ԡ3000 Ԡ6 Ԡ0 SPà KYU Ԡ60 Ԡ533 Ԡ6555 Ԡ00 Ԡ05 Ԡ6 Ԡ00 Ԡ005 Ԡ3 Ԡ3 Ԡ6353 Ԡ3 Ԡ60 Ԡ6 Ԡ60 Ԡ6 Ԡ60 Ԡ6 Ԡ0 Ԡ60 Ԡ00 Ԡ6003 Ԡ3635 Ԡ055 Ԡ55 Ԡ3500 SKP SHGSҠADNGUNŠ SPà SGANP ABADAGHSנGNNS MPSGA SPà SGBNP BBGADBGHSנGNNS MPSGB SPà SGϠNP ABUPUԠ"A"ϠHŠSHGS MPSGϬ SPà DMNԠHŠSԠNUMBҠ SPà DNϠNP DBNUMB MBNB MB SBNUMB MPDNϬ SPà SHԠBUҠ̠UNŠ SPà A: "A"HŠDAAD "B"HŠBU'SS.A. SPà ̱NP SAB NB MP̱ SPà ANDMNUMBҠGNAҠ SPà ANDNP DABASŠADHŠBAS ADAPMŠSUBAԠHŠPM SSASKPƠ'SS̠PSV DABASŠHŠBASŠSN'ԠBGNUGH ŬADUBŠHŠBASŠҠMAND SABASŠ-ҠHŠNԠY MPAND SPà PMŠDà-3069 BASŠBSS SKP SNP SBSASGԠSAUS ANDB0SԠҠ PAB0 MPN0HKҠHŠHA SZSԠP+ MPS N0SBSGAADHŠSHGSҠAND AƠ-HKSH SSASSSԠSԠ? MPDNϬNDHŠAP MPSɠYSԠANDSP DDAנSAԠHŠDVŠNDNG SBAMMD SBDԠAԠҠԠϠNSH SBYKHKҠAPN MPY̬ɠHŠSN'ԠNŬNNU DADPN: DBMSG06 SBY SBPYɬɠADDHŠYŠUN MPY̬ SPà DԠNPNDDԠUN SBGԠAԠҠHŠMMANDAG SBSASGԠSAUS ANDB000 PAB000 MP-3PUN̠NSHDNDNG MPDԬ SPà DԠNP SSMMDAԠҠHŠN MP- SBSASGԠHŠSAUSANDKP ANDB000-HKNGҠNDSAUS PAB000 MP-3PUN̠NSHDNDNG DASAUVŠHŠSAUSAND SA-HKHŠ-NŠB MPBN0'SSԬHA MPDԬ SPà PGAM'SMAԠAGSԠ SPà ̠NP A SBDHKHŠDNGMA MP+3'S9AK NASS'SAKVNPAY ҠMSGN'S""DD" SAAGSԠHŠPGAM'SMAԠAG MP̬ SKP APŠMAKSAUSHK SPà A:"A"-NANSHŠUNԠSAUSD "B"-NNSNԠSGNAN UN:P+-NϠAPŠMAKUNDҠHASASAUS P+-GDAPŠMAKUND "A"-NNSAŠS "B"-NANSHŠUNԠMA'SD. SPà MAKNP SAAGHDHŠ"SPPD"SAUSD SZASSSHŠANYSAUS? MPMAKɠNϬԠP+ DAAGSŠHŠ"SPPD"SAUS ANDNMMASKUԠHŠAPŠMAKB SZASSSHŠANYHҠSAUS? N39SZMAKNϬNMNԠHŠUNADDSS MPMAK SPà SPà PNҠHKUNŠ SPà UN:P+-HŠSN'ԠAPNҠNHŠSYSM P+-HŠSAPNҠNHŠSYSM SPà YKNP SAAGSAVŠHŠNNSƠ"A" DBNY SZBSS SZYK DAAGSŠHŠ"A"GS MPYK SPà SH5HKUNŠ SPà S5KNP SBSGAADHŠSHGSҠAND SSASS-HKSH5 MPS5Kɠ'SNԠSԬ DASAUVŠHŠASԠSAUSAKN DBNUMB-ANDHŠASԠS'SNUMB HԠ6BSP! MPS5K SKP MMANDSŠUNŠ SPà Sנ0ADNŠDAD(Ʃ SנADSPAŠNŠD(Sҩ SנADSPAŠNŠŠ(SƩ Sנ3AҠHŠNҠ(ҩ ----------------- SנBAKSPAŠNŠD(BSҩ Sנ5BAKSPAŠNŠŠ(BSƩ Sנ6NDϠADPNԠ(ש SנAҠHŠNҠ(ҩ ----------------- SנNDANDGϠƠNŠ(ϩ ANYƠHŠSԠUҠMMANDSANBŠMBNDHANY ƠHŠNԠUҬҠANYƠHŠNNŠANBŠUSDAN. SPà G000B BGNAMMDàADHŠSAUSANDHK ANDB0-ҠND--APŠB SZASSSԠSԠ? MPBNԱNϬNNU DAנYSNDHŠAP MPNԱ+ BNԱDBMDS0ADHŠMMANDSAK'SS.A. SBSGAGԠSHGSҠSNGS ANDB3SAŠMMANDD SZASSANYMMANDPNSND? MPBN0NϬAKŠNMA̠HAԠMMDAY ANDBYSSAŠSԠMMANDD SZASSANYƠHSŠPNSAND? MPNԷNϬGϠHKҠNDPN NԷSAAҠSԠҠHŠMMANDSH MPNԱUPUԠHŠMMAND SZBADVANŠPN MPNԷ NԱDABɠGԠHŠMMAND SBAMMDUPUԠHŠMMD SBDԠSԠҠNDNGPAN SBMҠSԠҠMNGPN NԷSBSGAHKҠHŠNDMMANDPN AƬA A ANDB3 SZASSANYSNDMMDS? MPNԱ6NϬSԠҠHA DBMDSYSSԠNDMMDSAKS.A. NԱSAAҠSԠҠHŠMMANDSH MPNԱ5MMANDUNDUPUԠ SZBNԠHSNŬADVANŠPN MPNԱ NԱ5DABɠGԠHŠMMAND SBAMMDUPUԠMMD SBDԠSԠlVҠHŠNDNGPAN SBMҠSԠҠMNGPN NԱ6SBSGAADHŠSHGS SSASH5S? BN0HԠBYSNMA̠HA MPBGNGϠϠSA SPà MҠNPMNGPDUN SBSGASԠҠMNGPD ANDB0K SZASSSHŠGSҠZ? MPMҬɠYSUSŠAG DBMPDSԠMNGNSAN A A̬SAHSMŠ? MPNԱYSSAԠHŠDAY SZBNϬYN MP-3 NԱDBBɠGԠHŠNSAN SBDAY MPMҬɠUN+ SPà DAYNPMŠPDNSANԠSHUDB SBMŠNHŠ"B"G. SZM MP-YŠUN̠Z MPDAY SPà GԠNPHSUNŠ̠AԠAPP. SAAG-NŠSNDҠHŠMMAND DAN3-HANN̠AGϠBŠS. SBBG NԱ9B SàMMD MPNԲ0 SZB MP-3 SZA MPNԱ9 SBSASGԠHŠSAUSHD SBYKHKҠAPN MPN0HŠSN'ԠNŬNNU DAD0PN:AGMŠU DBMSG SBY SBSNɠPNԠHŠSԠNUMB SBSKPɬɠSPAŠNŠN N0U DAҠAҠHŠNA SBAMMD NԲ0SBSASGԠHŠSAUSANDHD DAAGSŠHŠ"A"G DBBGSŠHŠ"B"G MPGԬ SKP MMANDUԠPUԠϠMAGAPŠSUBUN SPà MMDNPMMDSHUDBŠNHŠ"B"G. BMMD SBSASGԠHŠSAUS SBBԠSԠԠB SZASS MP SàMMD MPMMD SPà AMMDNPMMANDNHŠ"A"G AMMD SàMMD MEPAMMD SPà SASNP AMMD ANDSPGԠDƠHŠABS SASAUHDHŠSAUSMPAY MPSAS SPà AҠNPAҠHŠN DAҠUԠPUԠAҠMMD SBAMMD SBGԠAԠҠHŠPANϠNSH MPAҬ SPà BSƠNPBAKSPAŠDHAGP DABSҠBAKSPAŠMMAND SBAMMDDϠHŠMMAND SBGԠAԠҠHŠMMDAG MPBSƬ SPà BSϠNPBAKSPAŠDׯϠAGP DABS SBAMMD MPBSϬ SPà DSPNPADSPAŠNŠD DBS SBMMD MPDSP SPà ԠUNS SPà A:"A"-NANSHŠSAUSD UN:"A"ƠHŠԠBԠSNԠS 0ƠHŠԠBԠSS SPà BԠNPԠSAUSBԠS ANDD PAD ASS A MPBԬ SPà ԠSBYKHKҠAPN MP0HŠSN'ԠNŬNNU DAD0PNԠMMANDASD DBMSG0 SBY 0BHŠPDSAUSSA A SBS SBDNϠDMNԠHŠSԠNUMB SBSGAHKҠSH A SSASSSנSԠ? MPY̬ɠNϬSAԠDAGNSàV SBSASYSGԠSAUS DBNUMBADHŠS'SNUMB HԠ55BҠHAԠNDA SBPNSԠҠPPN MPY̬ɠSAԠDAGNS SPà PGAMSԠUNŠ SPà SԠNP SBBGHDHŠPDSAUS SZNUMBNMNԠHŠS'SNUMB SZASSASHŠSԠN MPSԲNϬHKSH5 SBSGAADHŠSHGSҠAND A̬A̠-HKSH3 SSASԠSԠ? MPSԱYSDN'ԠPNԠҠS AƬSANϬHKSH0 MPSԱ'SSԬDN'ԠPNԠҠS DANYHKHŠNϠYPGAMAG SZASԠSԠ? MPSԴYSSŠHŠMSSAG SBSNɠHŠSAYPNԠH DBBG-ҠMSSAG DASAUADBHSAUSANDPN SBPSɬɠ-HM DADPHKHŠADPANP- SZASS-GAMAG MPS0ԠASN'ԠSԬSPAŠNŠN DABƱ0ADHŠGDDPN SBPHɬɠ-ANDPNԠBHDS ASԠHŠADPANP- SADPGAMAG S0SBSKPɬɠSPAŠNŠN SԱSBSGAADHŠSHGSҠAND A̠-HKSH SSASSSԠSԠ? MPSԲNϬHKSH5 DAҠYSAҠHŠNA SBAMMD DBNUMBADHŠS'SNUMBҠANDS DASAU-SAUS HԠ55B SԲSBS5KHKSH5 S3SBSHKҠHŠNDƠAP NP MPSԬɠ SԴDAYNԠGԠHŠYŠUNԠANDPS- AƬAƠ-NԠϠHŠUPPҠHAƠ DBNUMB-DHHŠS'SNUMB ҠB-NHŠҠHA SABUƬɠPUԠԠNHŠSԠDƠH SZBUƠҠMSSAGŠMVŠHŠPN DASAUGԠHŠS'SSAUSANDPUԠ SABUƬɠ-NHŠNDDƠHŠ SZBUƠ-MSSAGŠANDMVŠHŠPN DADPHKHŠPGAM'SADP- SZA-ANAG =c<:66< /> 13042-80002 1349 S 0122 13184A/7970E MAGNETIC TAPEDIAGNOSTIC             H0101 @_ MPS5ԠASSԬSŠHŠDS ANϠADSŠZS SABUƬɠHŠ3DD SZBUƠMVŠHŠPN SABUƬɠHŠHD SZBUƠMVŠHŠPN MPS6HKHŠҠUN S5DAB05ɠGԠHŠDNҠANDS SABUƬɠ-ԠNHŠ3DD SZBUƠMVŠHŠPN DABƱ0ADHŠGDD'SPN DAB0ɠGԠHŠGDDANDSŠ SABUƬɠ-NHŠHD SZBUƠMVŠHŠPN S6SZNԠNMNԠHŠҠMSSAGŠUN MPSԱHKHŠN̠SHS HԠ56BHŠҠBUҠSU MPMDAɬɠGϠBAKϠHŠSA SPà SԠPNGADDSSUNS SPà SAVADNPSAVŠSԠSANGADDSS SZPYàPNGNDA MPSAVAD SZPY MPSAVAD SPà PNNPSԠSנ3ҠPPN SBSGB B̬B SSBP? MPNԲ9YSGԠHŠS.A. DBPYàNϬKAԠPNGNDA SZBPNGBŠ? MPPNɠNϬNNUŠHNԠS MPY̬ɠYSSAԠDAGNSàV NԲ9SBSSԠҠHŠNDƠAP NP B SBPYàSԠPNGNDA MPSAVAD SPà MAԠD.HK SPà A:"A"-NNSNԠSGNAN "B"-""" UN:P+-HŠDNGMDŠSA9AKMA P+-HŠDNGMDŠSAAKMAԠVN PAY P+3-HŠDNGMDŠSAAKMAԠDD PAY "A"-NNSMNYAŠUNHANGD "B"-NANSHŠUNԠMA'SD. SPà DNP SAAG0SAVŠHŠNNSƠ"A"Ҡ DAD@ADHŠUNԠMA'SD. DBD""""" ANDD6MASKƠA̠BUԠBS SZASSSԠAҠ9AKMAԠ? MPNԴ'S9AK SZD'SAKBUԠHHNŠ? DADADHŠUNԠD.AGAN ANDBMASKƠA̠BUԠBS0 AҬAҠPSNBԠ SASSSԠSԠ? MPNԴNϬ'SVNPAYԠP+ ANDMSKMMASKƠGNA̠BԠ(0Nש SZASԠVNҠDDPAY SZD'SDDPAYԠP+3 NԴDAAG0SŠHŠNNSƠ"A" MPD SPà BUҠ̠UNŠ SPà A:"A"-NANSHŠNUMBҠƠPANSNHŠSUN "B"-NANSHŠS.A.ƠHŠPANSUN SPà .̠NP SAAGHDHŠS.A.ƠHŠPAN SAB0 SBBGHDHŠNUMBҠƠPANSN SBNԱ-HŠSUNŠSԠSUN DAN0̠HŠŠBU SAUNԠSԠHŠDUN DANBUƠSԠHŠNPUԠBU'SS.A. MŠDBB0 SBAɠSAԠNGHŠBU SZB0 NA SZNԱNMNԠHŠPANUN MP.N0 DBBGSԠHŠPANSUN SBNԱ-UN DBAGSԠHŠPANSUN SBB0-PN .N0SZUNԠNMNԠHŠBUҠD MPMŠ-UN MP.̬ SPà BUҠAҠUNŠ SPà BƠNP SBB06SAVŠHŠNNSƠ"B" SAB0SAVŠHŠNNSƠ"A" DADH55HA55'S DBN SB.̠ADHŠHASNϠHŠBU DAB0SŠHŠ"A"GS DBB06SŠHŠ"B"GSҠAS MPBƬ SKP ANSɠSԠASŠPANGNAN' SPà ANSɠNP SBBGSAVŠHŠNNSƠ"B" SZNԠNMNԠHŠANUN MPN6USŠHŠSAMŠPANAGAN SZHDNMNԠHŠHDUN MPN6GϠϠHŠSAMŠKYD DAN3SԠHŠHDUN SAHD SZKYPԠADVANŠHŠKYDPN N6DAHDGԠHŠHDUN MA'SMPMN SASԠHŠNDHD? MPN69YSGԠHŠANUN AҬSANϬSԠHŠSԠHD? MPNԷ0YSGԠHŠANUN DAKYPԬɠADHŠKYDGԠH AҬAҠ-UN A NԷDBAHDHŠD ANDD3GԠHŠANUN MA SANԠSԠHŠANUN DABSԠUPϠGԠHŠPAN AƬAҠ-D ANDB DBANPAԠGԠHŠANSɠPANBU'S ADBA-S.A.SԠHŠPAND DABɠGԠHŠPAND SAANBUƠHDԠҠHŠNԠMŬMAYB MPNԸNNU N69DAKYPԬɠADHŠKYDANDGԠH AƬAƠ-UN MPNԷGϠGԠHŠANUN NԷ0DAKYPԬɠADHŠKYDANDG AƬAҠ-UN MPNԷGϠGԠHŠANUN N6DAANBUƠUSŠHŠSAMŠPANDAGAN DBKYPԬɠADHŠKYDANDHK SSBSS-HŠASԠDNDA MPNԸNNU DBHDADHŠUNԠҠHŠKYD MB-PAK SBSSSHŠUNԠ? MPNԸNϬNNU DBNԠGԠHŠANUNԠAND PBN-HKԠҠHŠASԠN SS MPNԸԠASN'ԬNNU DB.KYPSԠHŠKYDPN SBKYP DBN3SԠHŠHDUN SBHD DBN5PSԠHŠANUN SBN BPSԠHŠSԠPAND SBANBU NԸDBBGSŠ"B" MPANSɬ SPà ANDMDAAANDANSɠPANDAAMPAŠ SPà DMNP DA.ASԠHŠPNҠҠHŠPN SAB0 DABUADSԠHŠBU'SS.A. SAB05 DADNԠSԠHŠDUN SANԱ SADPSԠHŠADPANAG N0NPGԠHŠDANDMPA DBAGHKHŠPGAM'SMAԠAG SZBSSSԠSԠ? MPNԲNϬ'S9AKDAA ANDMASKYS'SAKDAA SBSSHHAKPAY? MPNԲ'SDDPAY SABHDHŠNNSƠ"A" ANDMSKԸMASKƠHŠҠBS SZASSAŠA̠BSNHŠBYŠZϠ? MPN3YSADDHŠDAAPAD DABSŠHŠNNSƠ"A" ANDB3MASKƠHŠHGHҠBS SZASSSHSBYŠZϠ? MPN3YS DABSŠHŠNNSƠ"A" MPNԲN N3DABSŠHŠNNSƠ"A" ҠPADAԠADDHŠBԠPAD NԲPAB05 MPNԱԠMPASNNU SABƱ0HDHŠANDMDMPAY A BHŠPDSAUSSA SBS SZNԱNMNԠHŠDUN SS MPDM NԷNPYŠHŠUN SZNԱ MP- MPDM NԱSZB05ADVANŠHŠBU'SPN SZNԱNMNԠHŠDUN MPN0MPAŠHŠNԠDS SZNUMBNMNԠHŠSԠNUMB ASԠHŠADPANAG SADP :SBS5KHKSH5 MPDM SKP PAN-DAAMPAŠUNŠ SPà A:"A"-NANSHŠS.A.ƠHŠDAAPANSUN "B"-NANSHŠNUMBҠƠDSNHŠSUN UN:"A"-NNSAŠS "B"-""" PAMNP SAAGHŠS.A.ƠHŠPAN SAB0 SBBGHŠƠDSNHŠPA.S. SBNԱSԠHŠPANSUNŠUN DBBUADSԠHŠBU'SS.A. SBB05 DADNԠSԠHŠDUN SANԱ SADPSԠHŠADPAN'SAG NԱDAB05ɠGԠHŠNPUԠBUҠDAND DBAGHKHŠPGAM'SMAԠAG SZBSSSԠSԠ? MPPN0NϬ'S9AKDAA SAB0'SAKHD"A" DADGADHŠPGAM'SAG SZASSSHSHŠ"D"SԠ? MPNP0N DAB0ɠADHŠPAND ANDMASKSPHŠPBS MPNP0 NP0DAB0ɠADHŠPAND ANDMASKMASKƠHŠABS SBSSHHAKPAY MPPNԲ'SDDPAY NP0SABHDHŠNNSƠ"A" ANDMSKԸMASKƠHŠҠBS SZASSAŠA̠BSNHŠBYŠZϠ? MPPN3YSADDHŠBԠPAD DABSŠHŠNNSƠ"A" ANDB3MASKƠHŠHGHҠBS SZASSSHSBYŠZϠ? MPPN3YS DABSŠHŠNNSƠ"A" MPPNԲN PN3DABSŠHŠNNSƠ"A" ҠPADAԠADDHŠDAABԠPAD PNԲPAB0MPAŠHŠϠDS MPN0HYMPA MPPNԱNN-MPA PN0PAB0ɠMPAŠHŠDAAϠHŠPAN MPN0ԠMPASNNU PNԱnAԠDDN'ԠMPA DBDDHKHŠDDBYŠNDA SZBSS MPNԷ9'SNԠS DBB000SԠHŠPDSAUSAS"B" SS NԷ9BHŠPDSAUSSA SBS MPPAMɠ-HŠASԠNŠNHŠBU N0SZNԱNMNԠHŠPANS.UN MPNԱ0 DAAGSԠHŠPANBU'S SAB0-PN DBBGSԠHŠPANSUNŠUN SBNԱ SS NԱ0SZB0ADVANŠHŠPANPN SZB05ADVANŠHŠBU'SPN SZNԱ MPNԱGϠMPAŠHŠNԠDS SZNUMBNMNԠHŠSԠNUMB ASԠHŠADPAN'SAG SADP SBS5KHKSH5 MPPAM ҠBUҠAҠUNŠ ҠNP AAҠAG. DBBƠADBHҠBUҠ. űU SABɠSŠAZϠNҠBU SZBNMNԠҠBUҠPN PBNɠNSHD? MPŲYS- MPűN-GϠZϠUԠNԠAN ŲU MPҬ SKP G000B MDAGà0àUNƠA̠NUPS DADMAנSԠHŠDMA'SN̠D A6B DANYADNϠYAG SZASHŠAY? SBҠN-ZϠUԠҠBU DABƠSԠHŠҠBU'SS.A. SABU DAN0SԠHŠҠMSSAGŠUN SAN DAN6SԠHŠPN'SPAGŠN SANNԠ-UN DA.DϠSԠHŠMAԠDPN SADP MN0A SAYNԠSԠHŠYŠUNҠϠZ MPN3 Yàà0àAҠHŠNS SBSGAHKҠUkSH A SASSPNԠYŠUN? MPN3NϬSAԠHŠMANPGAM SBYKHKҠAPN MPMNԱHŠSN'ԠNŬNNU SBPYɬɠYSPNԠHŠYŠUN MNԱAAҠHŠ"A"GS DBYNԠADHŠYŠUN HԠBYS 0à0 N3ASԠA̠UNSAVŠBU SANԠAҠHŠMANDҠUNԠBU SANUMBSԠHŠSԠNUMBҠUN SAHԠAPŠHAAҠUN SZYN DAYNԠGԠHŠYŠUN PAD9999SԠҠUNԠ̠V MPMN0GϠBAKSԠHŠYŠUN SBSGAADHŠSHGSҠAND AƬAƠ-GԠHŠNNDDMAԠD A ANDB ҠD SADSAVŠHŠDƠHSMA SPà NA̠AҠANDUNԠSԠSԠSN SPà SBSAVADSԠHŠPGAMPS.A. DAҠAҠHŠN SBAMMD DAN0KAԠҠAPPMAY50MS NASZA MP- SBSASGԠHŠSAUSANDHK ANDB00-NҠBUSY SZA ASSHŠSԠAD A BHŠPDSAUSSA SBSԠ( SBPNHKҠHŠPPN SPà SBSAVADSԠHŠPGAM'SPS.A. SN0SBSGAADHŠSHGSҠAND ANDBHKHŠUNԠSԠSHS SZAHASANYBNSԠ? MPSNԲYSNNU SBYKNϬHKҠAPN MPSNԱHŠSN'ԠNŬNNU DAD6PNԠNϠUNԠSԠSHS DBMSG0 SBY SNԱHԠBUNԠSԠHA MPSN0AԠҠHŠPA SNԲSASSSHSHŠS DNŠ? MPSNԴNϬYHŠNԠN DBSMSɠYSADSSԠMMANDAND SBSM-PUԠԠNHŠMMANDBU MPSN5MVŠHŠABŠPN SNԴSZSMSMVŠHŠAB'SPN AҠ-ANDPSN MPSNԲ SN5DASԠSԠHŠSԠMMANDD SASMS-ABŠPN DAB00UPUԠANϠSԠMMANDD AMMD SBSASADHŠSAUSANDHK SA-ANYN-NS ASSHŠSԠPASSD AHŠSԠAD DBB00HŠPDSAUSS(ƬB SBSԠ( SBPNHKҠHŠUN'SP SBSAVADSԠHŠUN'SPS.A. DASҠADHŠADSPAŠMMAND AMMD-ANDUPUԠ SBSASADHŠSAUSANDHK ANDD-ҠHŠԠB SZASԠSԠ? ASSYSHŠSԠPASSD ANϬHŠSԠAD DBB00HŠPDSAUSS(ƬҬ ADBD-B SBSԠ(3 SBPNHKҠAPGAMP SBSAVADSԠHŠPGAM'SPS.A. DASMADHŠSԠMMANDANDU AMMD-PUԠ SBSASADHŠSAUSANDHK ANDB00-HŠSDUNԠNN SZA AHŠSԠAD BHŠPDSAUSSA SBSԠ( SBPNHKҠAPGAMP DASAUVŠHŠASԠS'SSAUS ANDB00-ANDHKҠNN SZASS MPSNԷԠSHKUNԠBUSYSAUS HԠ5BUNԠSԠHAԬAԠҠH MPMDAG-PA SNԷU SPà -ϠHANN̠SԠ?SN SPà SBSAVADSԠHŠPGAM'SPS.A. SƠDAASԠHŠDAAHANN̠AG ƠDAAAҠHŠDAAHANN̠AG SàDAA-ANDHK ASS'SNԠAҬHŠSԠAD AHŠSԠPASSD BHŠPDSAUSSA SBSԠ(5 SSDAASHŠDAAAGSԠ? ASSNϬHŠSԠPASSS AHŠSԠAD BHŠPDSAUSSA SBSԠ(6 SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. SƠDAASԠHŠDAAHANN̠AG SSDAASԠSԠ? ASSNϬHŠSԠAD AHŠSԠPASSD BHŠPDSAUSSA SBSԠ( SàDAASԠSԠ? ASSNϬHŠSԠPASSS AHŠSԠAD BHŠPDSAUSSA SBSԠ( SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. SƠMMDSԠHŠMMANDHANN̠AG ƠMMDAҠHŠMMANDHANN̠AG SàMMD-ANDHK ASS'SNԠAҬHŠSԠAD AHŠSԠPASSD BHŠPDSAUSSA SBSԠ(9 SSMMDHKHŠMMANDAG ASS'SNԠSԬHŠSԠPASSS AHŠSԠAD BHŠPDSAUSSA SBSԠ(0 SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. SƠMMDSԠHŠMMANDHANN̠AG SSMMD-ANDHK AS!<:6S'SNԠSԬHŠSԠAD AHŠSԠPASSD D< 0? 13042-80003 1349 S 0122 13184A/7970E MAGNETIC TAPEDIAGNOSTIC             H0101 A_ BHŠPDSAUSSA SBSԠ( SàMMDSԠAҠ? ASSNϬHŠSԠPASSS AHŠSԠAD BHŠPDSAUSSA SBSԠ( SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. DAADSԠHŠAP̠ҠADAA SADAAìɠ-HANN̠NUP SàDAASԠHŠN̠ANDHŠAG SƠDAA-NHŠHANN S00SƠ0UNNHŠNUPԠSYSM NP AƠHŠPGAMDSHSN- MPNԱ-SUNHŠSԠAD NұNPHŠNMA̠NUPԠ-NY 00Ơ0AҠHŠNUPԠSYSM DAADSԠHŠDAAHANN̠AP SADAAìɠ-ҠANYMUɠNUPS S0SƠ0UNHŠNUPԠSYSMAGAN NP AHŠSԠPASSD MPNԱ NҲNPMUɠNUPԠ-NYPN 0à0àAҠHŠNUPԠSYSM AHŠSԠAD NԱU 03à0àSԠA̠N̠BUS BHŠPDSAUSSA SBSԠ(3 SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. DAAD3SԠHŠAP̠ҠAMMAND SAMMDìɠ-HANN̠NUP DAҠPMAAҠMMANDϠS SBAMMD-MMANDHANN̠NUP S0SƠ0UNNHŠNUPԠSYSM DAN0KAנAPPMAY50MS NASZA-ҠHŠҠMMANDϠMP MP- SBSASSԠADGԠҠSAUS A MPNԱ3 N3NPHŠNMA̠NUPԠ-NY 0Ơ0AҠHŠNUPԠSYSM DAADSԠHmŠMMANDHANN̠AP SAMMDìɠ-̠ҠANYMUɠNUPS S03SƠ0UNNHŠNUPԠAGAN NP AHŠSԠPASSD MPNԱ3 NҴNPMUɠNUPԠ-NYPN 0à0àAҠHŠNUPԠSYSM SBSASSԠADGԠҠSAUS A AMVŠHSADAҠؠϠҠ NԱ3U 05à0àSԠA̠HŠN̠BUS BHŠPDSAUSSA SBSԠ( SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. à6BàMAKŠSUŠHAԠHŠDMAHANN SƠ6B-SAD DANSSԠHŠSNGŠDBU'S àB-S.A. AB DANANSҠNYNŠDUԠ SàB-HŠDAAHANN AB DAAD5SԠHŠDMAAP SA6B DAAD6SԠHŠDAAHANN'SAP SADAAìɠ- S0SƠ0UNNHŠNUPԠSYSM Sà6BSAԠHŠDMA SƠDAASAԠHŠANS SàDAA NP AƠHSSNƠHŠPGAM SZNUMB-SUDHNNH MPN00-HANN̠NUPD N5NPHŠDMA'SNUPԠ-NY 0Ơ0AҠHŠNUPԠSYSM AHŠSԠPASSS MPN0 N6NPDAAHANN'S-NY 03Ơ0AҠHŠNUPԠSYSM AHŠSԠAD N0à6BUNƠHŠDMA SƠ6BZϠHŠDUN àDAA BHŠPDSAUSSA SBSԠ(5 SZNUMBNMNԠHŠSԠNUMB MPN05 N00à6BUNƠHŠDMA SƠ6BZϠHŠDUN  àDAA BHŠPDSAUSSA SBSԠ(6 N05U 06à0àAҠHŠNUPԠSYSM SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A. DAADSԠHŠDAAHANN'SAP SADAAì DAADSԠHŠMMANDHANN'SAP SAMMDìɠ- S05SƠ0UNNHŠNUPԠSYSM SàDAASԠHŠDAAHANN̠N SƠDAA-ANDAG SàMMDSԠHŠMMANDHANN̠N SƠMMD-ANDAG NP AƠHSSNƠHŠPGAM SZNUMB-SUDNHҠHANN MP0-NUPD NҷNPDAAHANN̠NUPԠ-NY 0Ơ0AҠHŠNUPԠSYSM AHŠSԠPASSS MP0 NҸNPMMANDHANN'SNUPԠ- 05Ơ0AҠHŠNUPԠSYSM A-NYHŠSԠAD 0à0àUNƠHŠNUPԠSYSM BHŠPDSAUSSA SBSԠ( SZNUMBNMNԠHŠSԠNUMB MPN35 0à0àUNƠHŠNUPԠSYSM BHŠPDSAUSSA SBSԠ( N35SBPNHKHŠPGAMPPN SBAҠSԠHŠNA SPà PNA̠NDADPNԠSS SPà SBSGAADHŠSHHŠSH AƬAƠ-GSҠANDHK AƬSA-SH MPN3'SSԬNNU SBSAVADSԠHŠPGAM'SPS.A. SBDSPMVŠAAYMHŠADPN SBGԠAԠҠHŠMMANDAG DBנNDMMAND SBMMD SBGԠAԠҠHŠMMAND3AG SBSASGԠSAUS SAB0HDHŠUNԠSAUS ANDB3000SԠҠNDUNԠBUSY PAB3000 ASS A SAB0 SBDԠPUN̠NDSNSHD DAB0SŠHŠSԠSAUS SASAU DAB0 DBB3000SԠHŠPDSAUS- ADBB00-(׬BB- SBSԠ(9 SBPNHKHŠPPN SBSAVADSԠHŠPGAMPS.A. SBSASSԠҠADPNԠSAUS ANDB00 SZA ASS MA DBB00SԠHŠPDSAUS(P SBSԠ(0 SBPNHKҠHŠPPN SBSAVADSԠHŠPGAMPS.A. DABSҠSԠMMANDԠAԠB AMMD SBSASGԠSAUSSԠԠB SBBԠHKҠAԠAԠAD SZA-PNԬA0NϠ ASS A DBҠADHŠPDSAUS(ҬP SBSԠ( SBPNHKҠHŠPPN SBSAVADSԠHŠPS.A. DB BMMD SàMMD SBSASGԠHŠSAUSANDHK ANDB00-NҠBUSY PAB00 ASSSԠPASSD ASԠAD DBB500HŠPDSAUSS(PB SBSԠ( SBSASGԠHŠSAUSANDHK ANDB00-NԠBUSY PAB00 ASSHŠSԠAD ASԠPASSD DBB00ADHŠPDSAUS(P SBSԠ(3 SBPNHKHŠPGAMPPN MP+ SPà MAԠSAԠANDVAANSN SPà N3DANUMB&SԠHŠԠSԠNUMB ADAD5 SANUMB DAN6SԠHŠSAHNSAN SAUN MMNSBDSPSPAŠADNŠD SZUNԠNMNԠHŠSAHUN SSKPYNG MPN03PN:UDN'ԠNDYŠSA SBGԠAԠҠHŠPANϠNSH SBSHKҠHŠND--AP MPNԴ0SԠUPHŠNԠMA SBSASGԠHŠSAUSANDSԠHK ANDB00-ҠAAPŠMAK SZASS MPMMNNϬYHŠNԠSUN SBDSPSPAŠADNŠMŠD SBGԠAԠҠHŠPANϠNSH SBSASGԠHŠSAUSANDHK ANDB00-ANHҠAPŠMAK PAB00 MPNԴNNUŠϠHŠMAԠDD MPMMNNϠAPŠMAKYAGAN NԴ0SZDPԠADVANŠHŠDABŠPN DADPԬɠGԠHŠNԠMAԠD SZASSASHSHŠASԠNŠ? MPNԴYSSԠHŠABŠPN SA+NϬHAԠANDDSPAYHŠNԠD NPMAԠҠHA MPMN0SAԠHŠPGAMAGAN NԴDA.DϠSԠHŠDABŠPN SADP MPNԴ0+GԠHŠSԠNY SBYKHKҠAPN MPMNԲHŠSN'ԠNŬNNU N03DAD6PN:UDN'ԠNDYŠSA DBMSG0 SBY MNԲA DBB00HŠPDSAUSSM SBSԠ( DADGԠHŠMAԠDANDSP SA+3MAԠҠHA SBSASADHŠSAUSANDH DBNUMB-S'SNUMB NPHAԠANDAԠҠHŠPA MPMDAGSAԠV G( NԴSZNUMBNMNԠHŠSԠNUMB SBS5KHKSH5  SBSGAADHŠSHGS'S SASG-NNSANDHDHM ҠB00SԠSH6 SBSG DANBUƠSԠHŠNPUԠBU'SS.A. DBNSԠHŠNUMBҠƠDS SBBƠAҠHŠADBU SBADADHŠD SBSAԠHKHŠADSAUS SBADHADDAASAD DANBUƬɠGԠHŠMAԠDMHŠAP ҠDҠADDHŠHAԠMASKHAAS PAD-DMPAŠϠHŠSנG MPNԸ0ԠMAHSNNU SBYKHKҠAPN MP+HŠSN'ԠNŬNNU A BHŠPDSAUSSA SBSԠ(5 DBDGԠHŠDHAԠASADDN SB+3-HŠSHGSҠANDHA SBSASADHŠS'SSAUSANDS DBNUMB-NUMB NP MPMDAGSAԠAGAN G(3 NԸ0SZNUMBNMNԠHŠSԠNUMB SBS5KHKSH5 DASGSŠHŠSHGS SBSGϠ-SNGS AƬA A ANDBUPDAŠHŠMAԠD.PN DB.D ADBA SBDPԠSԠHŠPNҠҠUNԠD SB̠SԠHŠPGAM'SMAԠAG SPà ADMNANDSAUSSԠSN SPà SBSAVADSԠHŠPGAM'SPS.A. AMMDADHŠSAUSANDHK ANDNԱ5MASKUԠBԠ5 SASAUSŠHŠSAUSANDHK ANDD-HŠŠPԠB SZA ASSHŠSԠPASSD AHŠSԠAD DBDHŠPDSAUSS(P SBSԠ(6 SBPNHKHŠPGAMP SBSAVADSԠHŠPGAM'SPS.A.  SBDSPSPAŠVҠHŠAPŠMAK SBGԠAԠҠHŠPANϠNSH SBSASGԠHŠSAUSANDHK ANDB00-HŠAPŠMAK SZA ASSHŠSԠPASSD AHŠSԠAD DBB00HŠPDSAUSSM SBSԠ( G( SBSGAADHŠSHGSҠAND SASG-SAVŠSNNS ANDDMAMSAҠSH6ƠS SBSG DANBUƠSԠHŠNPUԠBU'SS.A. DBNSԠHŠNUMBҠƠDS SBBƠAҠHŠADBU SBADADHŠD DANԠADHŠDMA'SDUN SZASSDDԠNSHHŠANSҠ? MPNԸYSNNU BHŠPDSAUSSA SBSԠ( MP+3 NԸSZNUMBNMNԠHŠS'SNUMB SBS5KHKSH5 SBSAԠHKHŠADSAUS SBADHADDAAS-AD DANBUƬɠSԠHŠBASŠҠHŠANDM SABASű-NUMBҠUN SZNUMBNMNԠHŠSԠNUMB (9 SBS5KHKSH5 DASGSŠHŠSHGS'S SBSGϠ-SNGS G(5 DASƠADSPAŠVҠHŠAP AMMD-MAK SàMMD SBGԠAԠҠHŠPANϠNSH G(6 SBSASGԠHŠSAUSANDHK ANDB00-HŠAPŠMAK SZA ASSHŠSԠPASSD AHŠSԠAD DBB00HŠPDSAUSSM SBSԠ(30 SBDHKҠҠ9AKMA MP+3'S9AK MPNԴ'SAK MPNԴ'SAK PBDҠSԠ9AKPŠ? ASSYSAҠHŠDDBYŠDAG ANϬSԠHŠDDBYŠAG SADD DANBUƠSԠHŠNPUԠBU'SS.A. DBN5SԠHŠNUMBҠƠDS SBBƠAҠHŠADBU SBADADHŠD DADDHKHŠDDBYŠDAG SZASS MPNԴ3HSSNԠANDDBYŠD G( ASԠHŠDMAMANDҠUN SAN SBSASGԠHŠSAUSANDHK AƠ-HŠDDBYŠSAUSB SSA ASSHŠSԠPASSD AHŠSԠAD DBB000HŠPDSAUSSB SBSԠ(3 MP+ NԴ3SZNUMBNMNԠHŠS'SNUMB SBSAԠHKHŠAD'SSAUS SBADHADDAAS-AD DA.SBGԠHŠSNGŠAKPAN DBNSԠHŠNUMBҠƠDSNH SBDNԠ-PANSUN SBPAM(3 A-PANDAAHNAҠH SADD-DDBYŠDNDA DANUMBԠHŠS'SNUMB ADAD SANUMB MPN6 NԴSZNUMBNMNԠHŠSԠNUMBҠ SZNUMB ASԠHŠPGAM'S"D"S SADG-AG DANBUƠSԠHŠADBU'SS.A.AND DBN-HŠDUN SBBƠAҠHŠADBU SBADADHŠDHUԠPAY SBSAԠ-NABŠANDHKHŠSAUS G( ASSHADSHŠSԠPASSD ANϬSHŠSԠAD DBDHŠPDSAUSS(DŠ SBSԠ(33 DA.SBHŠSNGŠAKPAN'SS.A. DBNSԠHŠNUMBҠƠDSNH SBPAM(3 AAҠHŠPGAM'S"D"S SADG-AG DBBSҠBAKSPAŠHŠD SBMMD SBGԠAԠҠHŠPANϠNSH G(6 DANBUƠSԠHŠBU'SS.A. DBNSԠHŠDUN SBBƠAҠHŠADBU SABUADSAVŠHŠBU'SS.A.ANDH SBDNԠ-DUN ҠMSGNADDHŠANSҠDNB àB-ϠHŠADBU'SS.A.AND AB-SԠԠNHŠDMA'SAD.BU SàBSԠHŠDMA'SDUN BB DBPŠSAԠHŠPAYNABŠAD SBMMD SàDAAàSԠHŠDAAANSҠN Sà6BàSAԠHŠDMA DAN3SԠHŠAGM NԴ5B SàMMDAԠҠHŠAG MPN6HŠAGHASBNSԬNNU NBSZB MP-3 NASZAƠ"A"0HŠPDHASNDD MPNԴ5KPMNG SBSASADHŠSAUSANDHD SBAҠAҠANYUNAAYNDN SS N6SBSASADHŠSAUS à6BAҠHŠDMAHANN SƠ6B G( SBSAԠHKHŠAD'SSAUS ASSHADSHŠSԠPASSD ANϠSHŠSԠAD DBDHŠPDSAUSS(DŠ SBSԠ(35 ASԠHŠPGAMAGҠA9 SAAG-AKPANMPA DADSԠHŠPAYҠD C<:66< 1@ 13042-80004 1349 S 0122 13184A/7970E MAGNETIC TAPEDIAGNOSTIC             H0101 B_ DBNMPAŠHŠDAAϠHŠPAN SBPAM(36 SB̠SԠHŠPGAM'SMAԠAG N6U DBBSƠBAKSPAŠHŠ SBMMD SBGԠAԠҠHŠPANϠNSH G(5 SBSASGԠHŠSAUSANDHD SASAԱ-ԠMPAY DBBSƠBAKSPAŠHŠNԠ SBMMD SBGԠAԠҠHŠPANϠNSH G(3 SBSASGԠHŠSAUSANDHK SBMAK-AAPŠMAK ŬSSNϠAPŠMAK ŠHŠSAUSSK DASAԱHKHŠSԠSAUSҠM ANDN3MASKUԠ"D"MHŠDDBY SBMAK-DS MPNԴ6NϠAPŠMAKMHŠS SZSS-PNHKHŠSND MPNԴ+BHPNSPASSD MPNԴADHŠSNDPN NԴ6DBSAԱADHŠSAUSƠHŠS SBSAUPNNHŠSAUSBU NԴASSHŠSԠAD AHŠSԠPASSD DBB00PDSAUSSM SBSԠ(3 SBPNHKHŠPGAMP DBSҠADSPAŠVҠHŠAPŠMAK SBMMD SBGԠAԠҠHŠPANϠNSH G( SBSASGԠHŠSAUSANDHD SASAԱ-MPAY DANBUƠSԠHŠNPUԠBU'SS.A. DBNHŠNUMBҠƠDSϠBŠAD SBBƠAҠHŠADBU SBADADHŠD G(5 SBSAԠHKHŠADSAUS SBADHADDAAS-AD DANBUƬɠHKҠHŠԠD PABASű MPNԴ9VYHNGSK DANBUƠSԠUPϠPNԠHŠPD SAB-05-ANDADHAAS DABAS. SAB0 ASԠHŠPGAM'SADAG SADP DASAԱMBNŠBHSAUS ҠSAU SASAU ASS NԴ9A DBB00PDSAUSSM SBSԠ(3 DBBSҠBAKSPAŠHŠϠHAAS SBMMD-D SBGԠAԠҠHŠPANϠNSH G( SBSASGԠHŠSAUSƠHŠPAN SZASHŠSAUSAҠ? ASSNϬHŠSԠAD AYSHŠSԠPASSD BHŠPDSAUSSA SBSԠ(39 SBDSPADSPAŠNŠD SBSGAADHŠSHGSҠAND ANDB-HKHŠSԠMMAND A̠SԠUPANDSԠHŠN SZASS-SԠMMANDD DAD DB.AS ADBA DABɠGԠHŠNԠSԠMMANDD SBAMMD SBSASGԠHŠSAUSANDHD ANDD-HKHŠMMANDԠB PAD ASSHŠSԠPASSD AHŠSԠAD DBDHŠPDSAUSS SBSԠ(0 SBGԠAԠҠHŠMMANDAG G(5 SBDSPSAԠSPANGVҠHŠAPŠMAK DABSҠSSUŠANHҠMNMMANDAND AMMD-HKHŠԠSAUSB SBSASGԠHŠSAUSANDHD DASAUVŠHŠSԠSAUSAND ANDD-HKHŠԠSAUSB PAD ASSHŠSԠPASSD AHŠSԠAD DBDHŠPDSAUSS"" SBSԠ( SBGԠAԠҠHŠMMANDAG ~G(6 DBƠSAԠAADPAN SBMMD SàDAAàSԠHŠDAAANSҠN SBGԠAԠҠHŠPANϠNSH G( SBSASGԠHŠSAUSANDHKҠH ANDD-DAAҠANDMNGSAUS PAD ASSHŠSԠPASSD AHŠSԠAD DBDHŠPDSAUSS"D""" SBSԠ( SBDHKHŠDNGMA MP+3'S9AK MPN36'SAK MPN36'SAAKMD PBD+HH9AKMAԠ? MPN3'S00P DBD0'S600PɬADHŠMNG MPN5-NSANS N36PBD+SԠ00Pɠ? MPN3YSSԠHŠNSAN PBD+5SԠ00Pɠ? MPN3YSSԠHŠNSAN PBD+3NϬY556P MPN65'S556PɬSԠHŠNSAN PBD+6YHŠHҠ556P MPN65'SHS556P DBD0+3'S00PɬADHŠMNG MPN5-NSANS N65DBD0+'S556PɬADHŠMNG MPN5-NSANS N3DBD0+'S00PɬADHŠMNG N5DAƠ-NSANS AMMDSAԠAADPAN SBSASADHŠSAUSANDHK SBBԠ-HŠԠB SZASSASԠSԠ? MPԠYS SàMMDàNϬSAԠHŠAP SàDAAàUNNHŠDAAHANN̠AS DANBUƠNAZŠDMAҠA00D ҠMSGN-AD àDMA- ADMA- DAN00 SàDMA- ADMA- A SAUNԠNAZŠMNGUN SàDAAAԠAPP.SND MPSDMA-ҠSԠDAAAG NASZA pO MP-3 MPNԷ5MŠUԬPNԠҠMSSAG SDMASàDMAàAGUNDSAԠDMA SàDMADAAANSҠMNGP MPDNŠ-USVN00MAHN NP-YS.DUNGHŠADDMA NP-SAS00YS.HŠMNG SZUNԠ-NSANSNHŠABŠ MPSDMA+-HS MPNԷ5ҬNϠADAKSHSNG DNŠDABɠADDNŬHKMNG ADAUNԠ(MUSԠBŠ+Ҡ-5 SSA MPNԷ5<-5 NB DABɠPKUP+5NSAN ADAUN SZA SSA MP+3<+5SԠPASSS NԷ5SBSASҬADHŠS'SSAUS G( ASSHŠSԠAD A BHŠPDSAUSSA SBSԠ(3 SBGԠAԠҠHŠPANϠNSH SBBSƠBAKSPAŠHŠD G( SPà DAAANSҠSԠSN SPà DAN5SԠHŠNA̠ANUN SAN ANAYSԠHŠSԠPAN SAANBUƠ-D DA.ANSASԠHŠMAԠ"A"PAN SAANPA DAN0SԠHŠDUN SADN DASUBASԠHŠMPAŠUNŠH SAN0-HŠANSɠDAASUBA SANԷ DANBUƠGԠHŠNPUԠBU'SS.A. SBDAASAԠHŠDAAANS SBDM( DAN5SԠHŠNA̠ANUN SAN ANAYSԠHŠSԠPAN SAANBUƠ-D DA.ANSBSԠHŠMAԠ"B"PAN SAANPA DAN0SԠHŠDUN SADN DANBUƠGԠHŠNPUԠBU'SS.A. SBDAASAԠHŠDAAԇ$ANS SBDM(5 DASUBҠSԠHŠMPAŠUNŠH SAN0-HŠANDMDAASUBA SANԷ DBNGԠHŠSANGDUN N60SBDNԠSԠHŠDUNԠҠDAA DABASűSԠHŠBASŠNUMBҠҠH SABASŠ-ANDMNUMBҠGNA DANBUƠGԠHŠNPUԠBU'SS.A. SBDAASAԠHŠDAAANS SBDM(6-5 SBNHGϠϠHŠDNGHN MPN60A̠DSHAVN'ԠBNAD SBSGAADHŠSHGSҠAND ANDB0-HKSH5 SZASԠSԠ? MPN63YSNNU SBDSPADSPAŠHŠASԠDS SZNUMBNMNԠHŠSԠNUMB SBGԠ-NHŠSS.HŠMPUҠS SBDSP-NYK SZNUMBNMNԠHŠSԠNUMB SBG MPNԷ6 N63DANSԠHŠUN'SPASSUN SAM N59DABASűSԠHŠBASŠNUMBҠҠH SABASŠ-ANDMNUMBҠGNA DANBUƠSԠHŠADBU'SS.A. SBDAADϠHŠDAAANS SBDM(55-56 DBDNԠDUBŠHŠDUN BS SZMŠNMNԠHŠUN'SPASS MPN59-UNԠANDDϠԠNŠMŠM NԷ6U DA.SBHŠAKSNGŠANGB DBN9-PAN9DSNG SBPAϠDϠHŠANSҠANDMPA DA.SAנHŠAKSAHPAN DBN5HŠPANS5DSNG SBPAϠDϠHŠANSҠANDMPA DA.SAנHŠHANN̠SAHPAN DBN5HŠPANS5DSNG SBPAϠDϠHŠANSҠANDMPA SPà MPYàNDƠHŠMANPGAM SPà PANDAAMPAŠ SPà A:"A"-PANS.A. "B"-NUMBҠƠDSNHŠPANSUN SPà PAϠNP SAAGHDHŠS.A.ƠHŠPAN SBBGHDHŠNUMBҠƠDS DBNSԠHŠNUMBҠƠDSNH N6SBDNԠ-SԠD DANBUƠSԠHŠNPUԠBU'SS.A. SBDAASAԠHŠDAAANS DAAG DBBG SBPAM(5-3 SBNHHKHŠNԠDNGH MPN6A̠DSHAVN'ԠBNAD MPPAϬ SPà DNGHN̠UNŠ SPà A:DNԠSASSUMDϠBŠADDPҠϠUSNGDAA UN:P+-NNUŠHHŠDUNԠDUBD P+-A̠HŠDSNHŠSSHAVŠBNAD "B"-HŠNԠDUN SPà NHNP DADNԠADHŠDUN ASDUBŠ SADNԠSŠԠϠHŠUN SABSԠ"B" ANDB3SHŠDUNԠGAҠHAN SZA-0DS? MPNHɠNϬGԠHŠNԠD SZNHYSԠANDHANGŠPANS MPNH SKP DAAANSҠUNŠ SPà A:DNԠHASϠBŠSԠPҠϠNNGHSUN "A"HŠS.A.ƠHŠNPUԠBU SPà DAANP SABUADSԠHŠBU'SS.A. DBDNԠADHŠPSԠDUN SBBƠAҠHŠADBU SBADADHŠD SBSAԠHKHŠADSAUS SBADHADS-ADHŠD MPDAA SPà ADSAUSUNŠ SPà UN:P+-DAAS P+-NϠS SPà SAԠNP DASAUVŠHŠSAUSƠHŠAD AҬSAHKHŠDAAҠSAUSB MPSAԬɠHADS+hP+ SZASS MPN50NϠHҠSAUSԠP+ AƠPSNHŠBSNHŠG. SSASSSBԠ(SũSԠ? MPN09N AYS BHŠPDSAUSSA SBS SBDNϠDMNԠHŠS'SNUMB N09DASAUVŠHŠUNԠSAUS ANDNԠMASKUԠHŠ(0ԩSAUSB SZASS N50SZSAԠNϠSAUSUNPN MPSAԬ SKP ADNP SABUADSAVŠHŠNPUԠBU'SS.A. SBDNԠSAVŠHŠDUN MPN5 ADNP-ADNYPN DAADSԠHŠUNŠUNPN SAAD N5SBSGAADHŠSHGSҠAND ANDB00-HKSH6 SZASS MPN55DϠADMAANS DBƠSAԠHŠAD SBMMD SàDAAàSԠHŠDAAANSҠN DABUADVŠHŠBU'SS.A. SAB0 DBDNԠVŠHŠDUN N5A SàDAAAԠҠHŠDAAAG MPN5 NASZANMNԠHŠMNGUN MP-3 MPN53ADHŠAG N5ADAAàADHŠSAԠDAND SAB0ɠ-SŠԠNHŠBU SZB0ADVANŠHŠBUҠPN NBSZBNMNԠHŠDUN MPN5ADHŠNԠϠBYS àDAAàAҠHŠDAAN SBGԠAԠҠHŠPANϠNSH SBSASADHŠSAUSANDHD MPAD N53SBSASGԠHŠSAUSANDHD SBAҠAҠANDUNAAYNDNS àDAA MPADɠ N55DABUADVŠHŠBU'SS.A. ҠMSGNSԠHŠANSҠDNB àSԠHŠBU'SS.A. A SàSԠHŠCDUN B DBƠSAԠHŠAD SBMMD SàDAAàSԠHŠDAAANSҠN Sà6àSAԠHŠDMA DAN3SԠHŠAGM N56B SàMMD MPN5HŠAGHASBNSԬNNU NBSZB MP-3 NASZAƠA0HŠPDHASNDD MPN56KPMNG SBSASGԠHŠSAUSANDHD SBAҠAҠANYUNAAYNDN SS N5SBSASGԠHŠSAUSANDHD à6BUNƠHŠDMAHANN ABSAVŠHŠDMADUN SAN SƠ6BSԠHŠDMAHANN̠AG MPAD SPà ADNP DASAUVŠHŠGNA̠SAUS SASAԱ-HDMPAY DAN3SԠHŠ-ADUN SAB06 N0SBBSƠBAKSPAŠHŠD SBAD-ADHŠD SBSAԠHKHŠADSAUS MPN0ԠS̠HASS SBYKHKҠAPN MPN0HŠSN'ԠNŬNNU DAD6PN:-ADUD DBMSG03 SBY SBS MPAD N0U DASAԱVŠHŠS'SSAUS SASAU SBDNϠDASŠHŠSԠNUMBҠUN MPAD N0SZB06NMNԠHŠ-ADUN MPN0GϠBAKANDYAGAN DASAUADHŠS'SSAUSAND DBNUMB-SNUMB SBYKHKҠAPN MPNԱHŠSN'ԠNŬNNU DADPN:UNABŠϠADD DBMSG05 SBY SBS SS NԱHԠ5B DBנNDϠHŠADPN SBMMD-ANDSAԠV DADGԠHŠMAԠD SA+a3 DASAUVŠHŠS'SSAUSAND DBNUMB-SNUMB NPHAԠANDAԠҠHŠPA NDMPY̬ɠGϠBAKϠHŠSA SPà SKP ҠBUҠҠMSSAGŠUPUԠSN SPà G000B BҠU SPà PNҠUNŠ SPà A:"A"-NANSHŠPSVŠHAAҠUNԠƠHŠN "B"-NANSHŠPNԠBU'SS.A. SPà Y.NP SBPBUƠSԠHŠPNԠBU'SS.A. SABADHŠHAAҠUNԠN"B" SZNNԠNMNԠHŠPAGŠNŠUN SS MPN3SKPϠHŠNԠPAG N0MBNBSZBNVԠϠANGAVŠUNԠAND MPNԴ-Ơ0UPUԠAN-D ASԠHŠUNԠϠSKPN SASKNԠ-N MPNԱ NԴSBHNԠSԠHŠHAAҠUN DBH̠ADHŠDHAƠNDA NԲDAPBUƬɠADHŠDMHŠBU SSBSSHHHAƠƠHŠDNԠ? AƬAƠHŠUPPҬGԠNϠPSN ANDB3MASKUԠHŠPGHԠBS ҠDŠPUԠNHŠMMANDDŠAND SBMMD-HŠGHHBԬHNUPUԠ B̬SBHANGŠHŠHAƠNDAҠAND SZPBUƠ-ADVANŠHŠBUҠPNҬ -ԠASHŠҠHAƠAS SZHNԠNMNԠHŠHAAҠUN MPNԲPNԠHŠSԠƠHŠN DAANADHŠAAGŠUND SBMMD-ANDUPUԠ BSԠ"B"ҠNGHŠUN ASԠHŠNŠSKPUNԠҠA SASKNԠ-SNGŠNŠSKP MPNԱUPUԠANŠD L<:66< 2A 13042-80005 1349 S 0122 13184A/7970E MAGNETIC TAPEDIAGNOSTIC             H0101 C_ N3DAN6SԠHŠNŠDUNԠ SASKNԠ-SؠNS DAN6SԠHŠPAGŠNŠUN SANN NԱDANDADHŠNŠMMANDDŠAND SBMMD-UPUԠ SZSKNԠNMNԠHŠSKPUN MPNԱSPAŠANHҠN SZBSSHKHŠHAAҠUN MPY.ɠ'SNSHDUN SZNNԠNMNԠHŠPAGŠNŠUN MPN0GϠPNԠHŠN SKP MMDNPHŠ-ϠUPUԠUNŠҠH 0A.Y ñA.Y-PN òSà.Y 3SS.Y MP- MPMMD SPà SKP̠NPSPAŠNŠN A SBY MPSKP̬ SPà BNAYϠDMA̠NVSN SPà A:A-NANSHŠBNAYNUMBҠϠBŠNVD B-NANSHŠPNҠDGԠNMAN Š-AҬSSHŠHAAҠUNԠBU -SԬAVSHŠHAAҠUNԠBUҠASS UN:A-S B-S SPà VԠNP SAB0HDHŠNUMBҠҠNVSN DAN ADAB SAB0 BS SBB03 BAҠSԠDGԠNDA SBB00SԠDGԠNDA SZ MP+ SBNԠAҠHŠNŠBUҠUN DBSBƠSԠHŠMSSAGŠBU SB.BƠ-PN DAB0VŠHŠNUMB SZASSHKҠAZϠNUMB MPDZADHŠZϠNUMBҠNHŠBU NԲDBNSԠHŠDD-VNDGԠSUN SBDNԠ: NԲBAҠHŠDGԠBU SBDGBUƠ: DAB0GԠNUMBҠҠNVSN NԲ3ADAB0ɠADDNVSNAҠϠHŠN. SSASGN+? MPNԲNϬHANGŠAS SAB0YSSAVŠHŠNUMBҠAND SZDGBUƠ-ARLDVANŠHŠPN MPNԲ3 NԲDBB00SԠҠHŠSԠDG SBNBSԠ? MPNԲ5 SBB00YSSԠSԠDGԠNDA SSASSSHŠSԠDGԠZϠ? ASSNϬAҠHŠBANKNDA SSYSNNUŠNMAY SABNKSԠHŠBANKNDA NԲ5SZB0ADVANŠHŠNVSNPN DBDGBUƠGԠDG SZBSSDGԠ0? MPNԲ6YSHKHŠBANKNDA BNϬAҠBANKNDA SBBNK NԲ6DADGBUƠGԠHŠDG DBBNKSHŠBANKNDAҠSԠ? SZBSS ҠASMSKNϬVAYHASɠMASK SZDNԠDDҠVNDG MPNԲVNSŠԠMPAY DBSAVADDGԠVNDG BƬBƠPAKVN-DDDGS ҠB SASAVASAVŠHŠASԠϠASɠDGS SBSAMBNSԠDGSNN SZB03ASԠϠDGS? MPNԲNϬGϠBAK ANA SABNKSŠHŠBANKNDA DANDAUԠNUMBҠƠPD SAB03-DGS. DASAVAASԠASɠDGSNVD MPVԬ NԲSASAVASAVŠHŠVNDG MPNԲNVԠHŠDDDG DZANASԠHŠBANKNDA SABNK DANSԠHŠDAUԠNUMBҠ SAB03-PDDGSҠNVSN DAASMSKGԠHŠASɠZϠHAA SBSAMBSŠԠNHŠMSSAGŠBU MPVԬ SPà NŠBUҠADNGUN SPà SAMBNP SA.BƬɠNҠHASɠHA'SN"A" SZ.BƠGϠϠNԠϠHA.ANS NP SZNԠNMNԠNŠPSNUN MPSAMB SKP BNAYN.UN SPà BNϠNPNҠHN.N"A/"G. DBN SBDGNԠSԠDGԠUN DBN SBB0HŠDGԠMAԠUNS DBN SBB00 NԲDBAPUԠHŠN.NHŠ"B"G.AS A B̬B SBB0SAVŠSHDNUMB ANDD SAAGSAVŠҠ DAB ANDD DBASԠUPҠPAKNG DAAGSԠUPҠPAKNG AƬAƠPNHŠVNDGԠϠH ҠB-UPPҠHAƠƠHŠDANDADD ҠASZ-HŠDDDGԬHNPUԠԠN SBSAMB-ASɠMAԠBŠSNG SZDGNԠNMNԠDGԠUN MP+UNԠNԠ0NNU MPBNϬ DAB0 SZB00NMNԠHŠDGԠMAԠUN MPNԲGԠHŠNԠϠDGS DASPAŠBANKMAԠHA. SBSAMB DAB0SŠ"A" SZB0NMNԠHŠDGԠMAԠUN MPNԲ-GԠHŠNԠϠDGS DASPAŠBANKMAԠHA. SBSAMB DAB0SŠ"A" MPNԲ-GԠHŠNԠϠDGS SKP PNԠYŠUN SPà PYԠNP DAMSG00SԠHŠMSSAGŠBU'S SA.BƠ-PN DAYNԠGԠHŠYŠNUMB DBN SBVԠNVԠPUԠNNŠBU DADPNԠHŠNUMBҠƠYS DBMSG00 SBY DASBƠSԠHŠBU'SPN SA.B B SBN SBMSG00 SBSKP MPPYԬ SPà SNϠNP DAMSG9SԠHŠBUҠPN SA.B DAYNԠGԠHŠYŠNUMB DBN SBVԠNVԠADNNŠBU DAMS96SԠHŠMSSAGŠBUҠPN SA.B DANUMBGԠHŠSԠNUMB DBN SBVԠNVԠADNNŠBU DAD6 DBMSG9 SBY BSԠHŠMSSAGŠHAA SBNԠ-UNҠANDBUҠPN SBMSG9 DBSB SB.B MPSNϬ SKP PNԠHŠGDANDBADHAAS SPà PHAҠNP SAAG DAMS09SԠHŠBU'SPN SA.B DANԱADHŠDUN MA ADADN MANA DBN SBVԠNVԠHŠNUMBҠANDSŠ DADPNԠHŠNUMBҠƠHŠD DBMSG0 SBY B SBMS09+ɠAҠHŠMSSAGŠBU SBMS09+ DBPH+SԠHŠMSSAGŠBU'SPN SB.B DAAG DAB0ɠADHŠGDD SBBNϠNVԠԠSŠԠNHŠMSS DBPHҠSԠHŠMSSAGŠBUҠPN SB.B DAB05ɠADHŠDN SBBNϠNVԠSŠNHŠMSSAG DASBƠSŠHŠMSSAGŠBU SA.BƠ-PN ASԠHŠMSSAGŠHAA SANԠ-UN DAD0PNԠH DBMSG3 SBYɠGDAND DAD0 DBMSGBADDS SBY MPPHAҬ SKP PNԠHŠSAUSUNŠ SPà A: "B"HŠPDSAUS SPà PSANPSԠUPANDPNԠHŠSAUS SBBGHDHŠSAUSMPAY DAPH+SԠUPHŠBUҠPN SA.B SZBS'B'Z MPN06NϬADHŠMSSAGŠBU DBN3 SBNԱ DBMSG SBB0SԠUPHŠPN DBB0ɠGԠϠBYS SBAɠSŠHMNHŠMSSAG NA SZB0ADVANŠHŠPN SZNԱNMNԠHAAҠUN &MP-5GԠHŠS BADDϠABANKS SBA DADSԠHŠMSSAGŠHAA SAB09-UN MPN0 N06DABGVŠHŠSAUS SBDSSADHŠPDSAUS DAUNԠNUMBҠƠSAUSSYMBSADD SAB09 N0DASBUƠSԠHŠBUҠPN SA.B DASAUVŠHŠSAUSDUS SBDSS-AKNADԠNHŠMSSAG DAUNԠMPUŠHŠMSSAGŠNGH A̬A ADAD DBMSG6PNԠHAԠHŠSAUSAS SBY DAB09MPUŠHŠMSSAGŠNGH A̬A ADAD DBMSGPNԠHAԠHŠSAUSSHUD SBYɠ-HAVŠBN DASBƠSԠHŠ.B SA.B AAҠHŠMSSAGŠHAA SANԠ-UN MPPSA SKP SAUSSYMB̠UN SPà DSSNPADSAUSNPNDN ANDSPSPƠHŠPHŠBS B SBUNԠSYMB̠UN DBN3SԠHŠSAUSUN SBNԱ N30SASԠƠNŠ? MPN3YSNҠSYMBSNN N3SZSB̠NϬNMNԠHŠSYMB̠PN AҠSHԠϠNԠB SZNԱHASA̠BSBNSD? MPN30NϬSԠHŠNԠSAUSB DASB. SASB A PAUNԠHKϠSŠƠHŠSAUSAS MPN33-A MPDSSɠYSUN N3SAB0SAVŠHŠ"A"GS DASB̬ɠGԠSAUSSYMB SBSAMBPUԠHAASNNŠBU DAMMA SBSAMB DAB0SŠ"A"BŠUNNG SZUNԠNMNԠHŠSYMB̠UN MPN3 N33DBN3 SBNԱ DBMSGS.A.ƠHŠAҠMSSAG DABɠGԠHAAS SBSAMBSŠHMNHŠMSSAG NBADVANŠHŠPN SZNԱNMNԠHŠHAAҠUN MP-GԠHŠNԠHAAS DASPAŠSԠHŠASԠHAASBANK SBSAMB DADSԠHŠSYMB̠UN SAUN MPDSS SPà .YU0B HNԠBSS DNԠNP DGNԠBSS DGBUƠBSS NԠBSS PBUƠBSS SKNԠBSS SAVABSS SPà ASZԠ30060 ASMSKԠ60 ANԠ305 DŠԠ3000 H̠Ԡ555 NDԠ30 Ԡ00000 Dà-0000 Dà-000 Dà-00 Dà-0 Dà- ZDà0 B03Dà- BNKDà DDà D0Dà0 SPà NԠDƠZ .BƠDƠB MSG00DƠ.MS00 MSG0DƠ.MS0 MSG3DƠ.MS3 MSGDƠ.MS MSG6DƠ.MS6 MSGDƠ.MS MSG9DƠ.MS9 MS96DƠ.MS9+6 MS09DƠ.MS0+ DƠ.MS0+9 DƠ.MS0+0 PHҠDƠ.MS3+9 DƠ.MS+9 SBƠDƠB SB̠DƠ.SB SB.DƠ.SB SUP MMAASà SPAŠASà .MS00ASàY(S .MS3ASà9DNҠS BSS .MSASà9ANDԠSHUDB BSS .MS9ASàSԠ .MS0ASà0MMANDASD .MS0ASàҠND .MS03ASà-ADUD .MS0ASà3UDN'ԠNDYŠSA .MS05ASàUNABŠϠADD .MS06ASà .MS0ASà3NϠUNԠSԠSHS .MSASà3MMDAGAԠMDUԠ! .MS6ASà6SAUSAS BSS .MSASà3A .SBASà3DPPMBBBS SPà BƠU SKP PGAMNAZANANDNGUAN SPà G6000B SYYSBSGAADHŠSHGSҠAND ANDB3-HKҠHŠY'SS.. SZAASHŠNŠND? MPN0YSNNU HԠBNϬSPANDԠHŠPA MPSYY-NҠNŭ N0SASYSԠHŠY'SS.. HԠBSPANDԠHŠPAҠN MPNԱ-HŠHҠS..ANDMNG NZASԠHŠNϠYPGAMAG SANY NԱSBSGAADHŠSHGSҠANDG SAB-HŠ3'SS..ANDHŠDV'S ANDB3-SPD SZAASHŠAS..ND? MPNԲYSNNU HԠ3BNϬSPANDԠHŠPA MPNԱ-SԠNŠNHŠSHGS NԲSASñSAVŠHŠ3'SSԠD SADAAàASϠSAVŠHŠDAAANDMMAND NA-HANN̠-ϠADDSSS SAMMD DABSŠ"A"HHŠSHG- AƬAƠ-SҠNNSANDPSNH A̬A̠-DV'SSPDNDA ANDB3 SZAASHŠSPDNDAҠND? MPN3YSNNU HԠBNϬSPANDԠHŠPA MPNԱ-NҠN N3SASSSHŠSPD.5PS MPNԴNϬYHŠN DBԱ.5YSSԠHŠMNGNSANS MPNԷ NԴA SASSSԠ5.0PS MPN5NϬYHŠNԠN DBԲ5.0YSSԠHŠMNGNSANS MPNԷ N5A SASSSSԠ3.5PS MPN9NϬ'S5.0PSNNU DB3.5YSSԠHŠMNGNSANS MPNԷ NԷDAԴ5.0SԠHŠS.A.ƠHŠMNGAB SAB00 DANSԠHŠNUMBҠƠNSANSHA SAUNԠ-AŠNHŠAB DABɠGԠHŠNSANԠANDSŠԠN SAB00ɠ-HŠAB NBADVANŠHŠNSANԠPN SZB00ADVANŠHŠMNGABŠPN SZUNԠNMNԠHŠNSANԠUN MP-5NԠDNŠY N9U DAB0KSԠ„HŠN̠DҠHŠDMA ҠSñ-HANN SADMAנSAVŠHŠN̠D DANDNGUŠA̠HŠPGAM- MANA-NSUNS DBDSԠS.A.ƠHŠSԠ-0NSUN ADABAUAŠHŠNUMBҠƠNSUNS SAN00-NHŠPGAMANDSԠHŠUN N0NBADVANŠHŠADDSSPN DABɠADHŠNSUNANDHK SSASS-ҠAN-ϠNSUN MPNԱԠSNԬGԠHŠNԠN ANDMSKMAKŠSUŠ'SNԠANDND SZA-NSUN MPNԱԠASGԠHŠNԠNSUN DABɠԠASN'ԬNSԠHŠ- ADADAAàADDSSANDSŠԠϠS SABɠ-PGAMAN NԱSZN00NMNԠHŠNSUNUN MPN0NSHHŠNGUAN DASD+SŠHŠS..0NSUNS MANAGԠHŠNUMBҠƠNSUNS DBSD-ϠBŠSD ADAB SAN00SԠHŠNSUNUN NԲDABɠGԠHŠ-ϠNSUNSS'S SAB00-S.A. DAAɠGԠHŠNSUNANDMAK ANDB.M-HŠSԠDŠ0 SAB00ɠSŠHŠNSUN NBADVANŠHŠS'SPN SZN00NMNԠHŠUN MPNԲDϠHŠS DANSԠHŠNUMBҠƠY-ϠN- SAN00-SUNSϠBŠNGUD DBSD+ N3DABɠSԠHŠS'SS.A. SAB00 DAAɠSԠHŠY'SSԠDŠN ҠSY-HŠ-ϠNSUNAND- SAB00ɠ-SŠԠϠSAN NBADVANŠHŠS'SPN SZN00NMNԠHŠUN MPN3DϠHŠS HԠ0BNMA̠NZANHA DAàW640ADAUMPϠHŠMANPGAM SASAԠ-NAN00B AAҠHŠUMPNANB SAG MPSD0ɠGϠϠHŠMANPGAM àMPY̬ SKP N00BSS SñBSS SYBSS B.MԠ00 B0KԠ0000 MSKԠ0036 DSԠDƠDN NDDƠND SDDƠSD0 DƠSD DƠND0 SD0U DƠMDAG DƠY DƠ0 DƠ0 DƠ03 DƠ0 DƠ05 DƠ06 DƠ0 DƠ0 DƠS0 DƠS03 DƠS0 DƠS05 DƠ00 DƠ0 DƠ0 DƠ03 DƠ0 DƠ05 DƠS00 DƠS0 SDU DƠ0 DƠñ DƠò DƠ3 ND0U Ա.5DƠS.5 Բ5.0DƠS5.0 3.5DƠS3.5 Դ5.0DƠDY0 SKP S3.5Dà-39600P Dà-63"" Dà-300" Dà-56"" Dà-335556" Dà-30"" Dà-93600" Dà-035"" S5.0Dà-600P Dà-9"" Dà-3900" Dà-360"" Dà-5036556" Dà-550"" Dà-0600" Dà-55"" S.5Dà-39600P Dà-360"" Dà-000" Dà-56"" Dà-00556" Dà-6"" Dà-600" Dà-333"" G00B NDU SPà ND !<6 3 A 13181-18001 1629 S 0146 13181/13183 MAG TAPE DG              H0101 9ASMB,A,B,L,C HED 7970 (13181-13183) MAGNETIC TAPE DIAGNOSTIC * REVISION DATE 30 JUNE 76 * HP PART NO. 13181-19001 * ORG 0 SUP * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD 7970 MAGNETIC TAPE DIAGNOSTIC * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE AND OPTIONS * ACCORDING TO THE TABLE BELOW: * * SWITCH REGISTER SPEED/INTERFACE * 15 45 * 14 37.5 * 13 25 * 12 12.5 * 11 13183 * 10 13181 * 9 NON DMA FOR 13183 * 8-6 NOT USED * 5-0 SELECT CODE * * E. PRESS RUN AND WAIT FOR HALT 107074. * F. LOAD SWITCH REGISTER * IF SET =: * 15 = HALT AT END OF EACH TEST * 14 = SUPRESS ERROR HALTS * 13 = LOOP ON LAST TEST * 12 = LOOP ON DIAGNOSTIC * (SUPPRESS ALL OPERATOR INTERVENTION) * 11 = SUPRESS ERROR MESSAGES * 10 = SUPRESS NON-ERROR MESSAGES * 9 = GO TO USER CONTROL SECTION * AT END OF PRESENT TEST * 8 = SUPPRESS OPERATOR INTERVENTION TESTS * 7 = DELETE CRCC AND LRCC CHECK (13181) * 6 = INHIBIT ALL TESTS WITH EMBEDDED * REWINDS * 5 = USE DMA CHANNEL 2 ON ALL READ/WRITE * 4 = USE DMA CHANNEL 1 ON ALL READ/WRITE * 3 = USE MAGNETIC TAPE UNIT 3 * 2 = USE MAGNETIC TAPE UNIT 2 * 1 = USE MAGNETIC TAPE UNIT 1 * 0 = USE MAGNETIC TAPE UNIT 0 * =* NOTE: STANDARD RUN SHOULD BE WITH SW. REG. = 0 * USER CONTROL WILL ASK FOR A 32 BIT WORD. * EACH BIT WILL = 1 TEST * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B * I. RECONFIGURE IF TESTING I/O INTERFACE - LOAD ADDRESS 100B * NOTE: THE DIAGNOSTIC CAN NOT BE RECONFIGURED * WHEN USING AN 8K MACHINE. * * GENERAL COMPUTER HALTS * * 1020XX E OR H 000 TO 067 * 1060XX E OR H 100 TO 167 * 1030XX E OR H 200 TO 267 * 1070XX E OR H 300 TO 367 * * CONTROL PROGRAM HALT MESSAGES * * 102077 END OF DIAG (A = PASS COUNT) * 102076 END OF TEST (A = TEST #) * 102075 USER SELECTION REQUEST * 102074 SELECT CODE INPUT COMPLETE * 102073 USER SELECT CODE ERROR * 102072 USER TAPE OPTION ERROR * 102071 NO DMA AVAILABLE FOR 13183 * 102070 ATTEMPTED RECONFIGURATION * WITH 8K MACHINE * * 106077 TRAP CELL HALT * * * HED PROGRAM ORGANIZATION CHART * ******************************************* * * CONFIGURATOR 100B * * * LINKAGE TABLE * * ******************************************* * * EXECUTIVE 130B * * * LINKAGE * * ******************************************* * * CONSTANTS 150B * * * AND * * * STORAGE * * ******************************************* * * 2000B * * * EXECUTIVE CONTROL * * * * * ******************************************* * * IF USED K- * * * BASIC I/O TESTS (TEST 00) * * * ZCEND * * ******************************************* * * TABLE OF TEST POINTERS * * * TABLE OF I/O INSTR POINTERS * * ******************************************* * * * * * * * * * * * * * * * * * MAIN DIAGNOSTICS (1-31) * * * * * * * * * * * * * * * * * ******************************************* * * * * * * * * * * * * * * * * * * * * HED CONFIGURATOR LINKAGE TABLE A EQU 0 A REGISTER REFERENCE B EQU 1 B REGISTER REFERENCE SW EQU 1 SWITCH REGISTER REFERENCE INTP EQU 0 INTERRUPT CHANNEL REFERENCE * * ORG 100B * JMP CFIG,I GO TO CONFIGURATION SECTION FAIN BSS 1 FAST INPUT (PHOTO READER) SLOP BSS 1 SLOW OUTPUT (LIST) FAOP BSS 1 FAST OUTPUT (DUMP OR PUNCH) SLIN BSS 1 SLOW INPUT (KEYBOARD) FWAM DEF FWAA FIRST WORD OF AVBL. MEMORY LWAM BSS 1 LAST WORD OF AVBL. MEMORY BSS 1 NOT USED (MAG TAPE) OTMC BSS 1 1 MILL SEC TIME OUT COUNT BSS 4 SELECT CODES FOR I/O CPTO BSS 1 COMPUTER TYPE/OPTIONS USSC BSS 1 USER CARD TYPE AND SELECT CODE MEMO BSS 1 MEMORY SIZE AND TYPE ISWR BSS 1 INTERNAL SWITCH REGISTER TMRR BSS 1 1 MILL SEC TIMER SWRCX BSS 1 < CONFIGURATOR SWITCH CK PTR I2AS BSS 1 INTEGER TO ASCII CONVERSION O2AS BSS 1 OCTAL TO ASCII CONVERSION AS2N BSS 1 ASCII CONVERSION DSNL BSS 1 DIAGNOSTIC SERIAL NUMBER FMTR BSS 1 FORMATTER * * * CONTROL LINKAGE AND DATA REFERENCES * CFIG DEF ZCONF CONFIGURATION SECTION MSGC DEF ZMSGC MESSAGE WITH NO HALT MSGH DEF ZMSGH MESSAGE WITH HALT ERMS DEF ZERMS ERROR MESSAGE SWRT DEF ZSWRT SWITCH REGISTER CHECK ROUTINE TSTN OCT 0 CURRENT TEST NUMBER EXRT DEF ZEXRT RETURN TO CONTROL PROGRAM NOP RESERVED * * * * * * * * * * * * * HED EXECUTIVE CONTROL ORG 2000B ZSTEX CLC INTP,C TURN I/O SYSTEM OFF JSB MSGC,I DO CRLF DEF ZRTLF LDA HDMP GET INTRODUCTORY MESSAGE STA *+2 JSB MSGC,I OUT PUT IT NOP CLA CLEAR PASS STA ZEOLC COUNT LDB ZSW9 CHECK FOR USER SELECTION REQ JSB SWRT,I JMP ZUSR IT'S USERS CHOICE ZNUSR LDA STDA GET STANDARD TEST RUN LDB STDB * JMP ZEXC * ZUSR LDA ZSINA RETRIEVE PREVIOUS RUN LDB ZSINB HLT 75B WAIT FOR USER INPUT NOP NOP NOP ZEXC STA ZUINA SAVE STB ZUINB USER STA ZSINA INPUT STB ZSINB PROGRAM LDB ZSW9 CHECK IF SW9 IS DOWN JSB SWRT,I JMP ZUSR NO GO AND WAIT CCA SET TEST NUMBER STA TSTN =-1 CLA STA ZTSTA CLEAR TEST RUN FLAG * * * * * * * * * * * * * * * * SKP ZEXCL LDA ZUINA RESTORE A REG. LDB ZUINB RESTORE B REG. ERA,RAL ROTATE ERB FIRST ERA TEST BIT STA ZUINA SAVE POSITIONS STB ZUINB ISZ TSTN MOVE TEST UP ONE NOP ZXCL1 LDA TSTN ADA TS;TP GET IT'S LDA A,I ADDRESS CPA Z.M1 IS IT END OF LIST JMP ZEOL YES LDB ZUINB SSB,RSS SHOULD IT BE RUN? JMP ZEXCL NO STA ZTSTA YES - SAVE TEST ADDRESS JSB ZITCH INITIALIZE TRAP CELL HALTS JSB ZTSTA,I GO DO TEST ZEXRT LDA TSTN DISPLAY TEST NUMBER IF HALTED LDB ZSW15 CHECK FOR HALT AT END OF TEST JSB SWRT,I HLT 76B YES WAIT FOR OPERATOR LDB ZSW9 CHECK FOR ABORT JSB SWRT,I JMP ZUSR YES LDB ZSW13 CHECK FOR LOOP ON ROUTINE JSB SWRT,I JMP ZXCL1 YES - LOOP JMP ZEXCL CONTINUE * ZEOL LDA ZTSTA CHECK IF ANY TESTS WERE RUN SZA,RSS ? JMP ZNUSR NO SO PICK UP STANDARD RUN LDA ZEOLC UP DATE PASS COUNT INA STA ZEOLC CCE LDB ZPSCA GET PASS COUNT ADB Z.2 ADDRESS JSB O2AS,I CONVERT IT JSB MSGC,I CALL PRINT ROUTINE ZPSCA DEF ZPSC LDB ZSW12 CHECK FOR LOOP ON DIAG. JSB SWRT,I JMP *+3 YES LDA ZEOLC HLT 77B NO WAIT AND DISPLAY PASS COUNT LDA ZSINA RESTORE ORIGINAL LDB ZSINB PROGRAM JMP ZEXC DO IT ALL AGAIN * SKP * MESSAGE OUTPUT WITH OUT HALT * ZMSGC NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK JMP ZMSGC,I RETURN TO CALLER * * MESSAGE OUTPUT WITH HALT * ZMSGH NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 2000 SWITCH 10 CHECK LDA ZHLT GET HALT CODE STA *+2 PUT IT IN PLACE LDA ZSAVA RESTORE A REGISTER NOP HALT FOR DISPLAY JMP ZMSGH,I RETURN TO CALLER * * ERROR MESSAGE WITH HALT * ZERMS NOP ENTRY JSB ZMSG OUTPUT MESSAGE OCT 4000 SWITCH 11 CHECK CLA LDB ZSW14 CHECK SWR BIT 14 TO SUPPRESS JSB SWRT,I HALT STA *+3 PUT HALT IN PLACE LDA ZSAVA RESTORE A & B LDB ZSAVB ZHLT NOP WAIT FOR OPERATOR JMP ZERMS,I RETURN TO CALLER * * * * * * * * * * * * * SKP * OUTPUT MESSAGE * ZMSG NOP STA ZSAVA SAVE A AND B REGISTERS STB ZSAVB LDB ZMSG,I GET SWITCH REGISTER BIT LDA ZMSG ADA Z.M2 DECREMENT RETURN ADDRESS STA ZMSG JSB SWRT,I CHECK TO SUPPRESS MESSAGE JMP ZMSG0 YES LDA ZMSG,I CHECK IF ERROR LDA A,I LDA A,I IF SO ALF,ALF AND Z.177 CPA ZA.E JSB ZCFTN CHECK TO OUTPUT TEST NUMBER LDA ZMSG,I NO RETRIEVE FORMAT LDB A,I ADDRESS CLA,CLE JSB FMTR,I ZMSG0 LDA ZMSG,I CONVERT HALT CODE LDB A,I FROM ASCII STRING CCA,CCE JSB AS2N,I STA ZN2AO SAVE RESULT AND Z.300 DECODE LDB ZH2 HALT CODE CPA Z.100 LDB ZH6 CPA Z.200 LDB ZH3 CPA Z.300 LDB ZH7 LDA ZN2AO GET HALT NUMBER AND Z.77 IOR B STA ZHLT SAVE IT ISZ ZMSG,I ADJUST RETURN POINTERS ISZ ZMSG ISZ ZMSG ISZ ZMSG LDA ZSAVA RESTORE A AND B REGISTERS LDB ZSAVB JMP ZMSG,I * * * * * * SKP ZCFTN NOP LDA TSTN GET TEST NUMBER CPA ZCFTT IS IT THE SAME ONE? JMP ZCFTN,I YES SKIP OUTPUT STA ZCFTT NO - THEN UPDATE IT JSB ZN2AO CONVERT IT STA ZTSTN PUT IT IN STRING CLA DO A CRLF JSB SLOP,I CLA,CLE INDICATE START OF FORMAT LDB ZTSTF JSB FMTR,I JMP ZCFTN,I RETURN * * * * ZSAVA NOP ZSAVB NOP ZEOLC NOP ZTSTA NOP ZSINA NOP ZSINB NOP ZUINA NOP ZUINB NOP ZBTMP NOP Z.2 "OCT 2 Z.7 OCT 7 Z.10 OCT 10 Z.60 OCT 60 Z.77 OCT 77 Z.177 OCT 177 Z.M1 DEC -1 Z.M2 DEC -2 ZD100 DEC -100 ZIOM OCT 177700 ZSW15 OCT 100000 ZSW14 OCT 40000 ZSW13 OCT 20000 ZSW12 OCT 10000 ZS812 OCT 010400 ZSW9 OCT 1000 Z.100 OCT 100 Z.200 OCT 200 Z.300 OCT 300 ZH2 OCT 102000 ZH6 OCT 106000 ZH3 OCT 103000 ZH7 OCT 107000 ZCFTT DEC -1 ZTSTF DEF *+1 ASC 3,TEST ZTSTN ASC 2,XX// ZRTLF ASC 1,// ZPSC ASC 6,PASS XXXXXX/ ZA.E OCT 105 HED GENERAL ROUTINES * * ZN2AO NOP STA ZIOAD SAVE NUMBER AND Z.7 CONVERT FIRST IOR Z.60 NUMBER STA B SAVE IT LDA ZIOAD GET RAR,RAR SECOND RAR NUMBER AND Z.7 CONVERT IOR Z.60 IT ALF,ALF MOVE TO UPPER HALF IOR B ADD LOWER JMP ZN2AO,I AND RETURN * * * * SWITCH REGISTER CHECK * ZSWRT NOP STA ZN2AO SAVE A REGISTER LIA SW GET SWITCH REG. AND B MASK OUT BIT SZA,RSS IS IT UP? ISZ ZSWRT NO LDA ZN2AO RESTORE A REGISTER LIB SW LET B = SWITCH REGISTER JMP ZSWRT,I RETURN TO CALLER * * * * INITIALIZE TRAP CELL HALTS * ZITCH NOP LDA ZTSH GET STARTING TRAP CELL HALT LDB Z.2 GET FIRST TRAP CELL LOCATION ZTSHL STA B,I PUT IT IN PLACE CPB Z.77 AM I FINISHED JMP ZITCH,I YES INB NEXT ADDRESS JMP ZTSHL * ZTSH OCT 106077 * * * SKP * PUT JSB INSTRUCTION IN TRAP CELL * ZTCJI NOP LDB ZJSBI GET INSTRUCTION STB ZIOSC,I PUT IT IN TRAP CELL LDA ZTCJI,I GET LOCATION STA 3B SAVE IT FOR JSB INSTRUCTION ISZ ZTCJI ADJUST RETURN JMP ZTCJI,I RETURN TO CALLER * ZJSBI JSB 3B,I JSB INSTRUCTION * * * INITIALIZE SELECT CODE I/O INSTRUCTIONS * ZI SC NOP STA ZIOSC SAVE SELECT CODE STB ZIOAD SAVE TABLE ADDRESS ZIOL LDB ZIOAD,I GET ADDRESS OF LOCATION CPB Z.M1 IS IT THE TERMINATOR JMP ZISC,I YES RETURN TO CALLER LDA B,I NO - GET CONTENTS AND ZIOM MASK OFF OLD SELECT CODE IOR ZIOSC ADD IN NEW SELECT CODE STA B,I RESTORE IT ISZ ZIOAD MOVE TO NEXT ADDRESS JMP ZIOL DO IT * ZIOSC NOP ZIOAD NOP * * * * SKP * CONFIGURATION SECTION * ZCONF CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE THEM AND Z.77 ELIMINATE OPTIONS LDB A CMB,INB CHECK THAT SC > 7 ADB Z.7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP ZCONF TRY AGAIN LDB IOIP INITIALIZE TEST I/O JSB ZISC INSTRUCTIONS HLT 74B ALLOW OPERATOR TO CHANGE SWIT JMP ZSTEX GO TO EXEC CONTROL SECTION * * * * * * * * * * * * * * * * * * * * * * * HED BASIC I/O TESTS CH EQU 10B * TST00 EQU * NOP LDA USSC GET CELL LOCATION AND Z.77 JSB ZBIO DO BASIC I/O JMP TST00,I * ZBIO NOP CLC INTP,C TURN OFF ALL I/O LDB ZBIOD INITIALIZE BASIC I/O JSB ZISC INSTRUCTIONS * * INTERRUPT FLAG CHECK * ZBIO1 STF INTP CLF INTP SFC INTP RSS JMP *+3 E000 JSB ERMS,I E000 CLF 0-SFC 0 ERROR DEF ZBE00 SFS INTP JMP *+3 E001 JSB ERMS,I E001 CLF 0-SFS 0 ERROR DEF ZBE01 STF INTP SFC INTP JMP *+4 CLF INTP TURN OFF INTS E002 JSB ERMS,I E002 STF 0-SFC 0 ERROR DEF ZBE02 SFS INTP JMP *+3 CLF INTP TURN OFF INTERRUPTS JMP ZBIO2 CLF INTP TURN OFF INTS E003 JSB ERMS,I 640E003 STF 0-SFS 0 ERROR DEF ZBE03 JMP ZBIO2 * ZBE00 ASC 12,E000 CLF 0-SFC 0 ERROR/ ZBE01 ASC 12,E001 CLF 0-SFS 0 ERROR/ ZBE02 ASC 12,E002 STF 0-SFC 0 ERROR/ ZBE03 ASC 12,E003 STF 0-SFS 0 ERROR/ * * SKP * CARD FLAG CHECK * ZBIO2 EQU * ZBS21 STF CH ZBS22 CLF CH ZBS23 SFC CH RSS JMP *+3 E005 JSB ERMS,I E005 CLF CH-SFC CH ERROR DEF ZBE05 ZBS24 SFS CH JMP *+3 E006 JSB ERMS,I E006 CLF CH-SFS CH ERROR DEF ZBE06 ZBS25 STF CH ZBS26 SFC CH JMP *+3 E007 JSB ERMS,I E007 STF CH-SFC CH ERROR DEF ZBE07 ZBS27 SFS CH RSS JMP ZBIO3 E010 JSB ERMS,I E010 STF CH-SFS CH ERROR DEF ZBE10 JMP ZBIO3 * ZBE05 ASC 13,E005 CLF CH-SFC CH ERROR/ ZBE06 ASC 13,E006 CLF CH-SFS CH ERROR/ ZBE07 ASC 13,E007 STF CH-SFC CH ERROR/ ZBE10 ASC 13,E010 STF CH-SFS CH ERROR/ * * * * * * * * * * * * * * * * * * * SKP * INTERRUPT CONTROL * ZBIO3 JSB ZTCJI SET JSB INSTRUCTION DEF ZB3E ZBS31 STF CH SET THE FLAG ZBS32 STC CH SET THE CONTROL STF INTP TURN I/O SYSTEM ON THEN CLF INTP TURN I/O SYSTEM OFF NOP GIVE IT A CHANCE TI INTERRUPT NOP ZBS33 CLF CH RESET CH FLAG JMP ZBIO4 * ZBE04 ASC 16,E004 CLF 0 DID NOT INHIBIT INT/ * ZB3E NOP CLF INTP TURN OFF INTS E004 JSB ERMS,I E004 DEF ZBE04 * * * * * * * * l6 4 B 13181-18002 1629 S 0146 13181/13183 MAG TAPE DG              H0101 :* * * * * * * * * * * * * * * * SKP * SELECT CODE SCREEN TEST * ZBIO4 LDB Z.10 START WITH LOWEST ADDRESS ZB40 LDA USSC GET SELECT CODE AND Z.77 CPB A IS IT THE CH? JMP Z.CLF+1 YES - SKIP TEST LDA Z.STF SET UP AND ZIOM IOR B STF INSTRUCTION STA Z.STF PUT IT IN PLACE LDA Z.CLF SET UP AND ZIOM IOR B CLF INSTRUCTION STA Z.CLF PUT IT IN LINE ZBS41 CLF CH CLEAR CHANNEL FLAG Z.STF STF CH EXECUTE STF CH INSTRUCTION ZBS42 SFC CH TEST CHANNEL FLAG JMP ZB41 Z.CLF CLF CH CLEAR TEST FLAG CPB Z.77 IS TEST FINISHED? JMP ZBIO5 YES INB NO JMP ZB40 DO NEXT CHANNEL * ZBE11 ASC 14,E011 STF XX SET CARD FLAG// * ZB41 STB ZBTMP SAVE NUMBER LDA B CONVERT CH FOR MESSAGE JSB ZN2AO STA ZBE11+5 LDA ZBTMP RETRIEVE NUMBER E011 JSB ERMS,I E011 DEF ZBE11 * * * * * SKP * CHECK INTERRUPT & HOLD OFF * ZBIO5 JSB ZTCJI DEF ZBI5 CLA SET UP STA ZBF5 FLAGS STA ZBI5 FOR TEST STA ZBTMP ZBS51 STC CH TURN ON ZBS52 STF CH CARD STF INTP AND INTERRUPTS STC 1 * STF 1 * CLC 1 * CLF 1 * NO INTERRUPT JMP *+1,I * SHOULD OCCURR DEF *+1 * HERE JSB *+1,I * DEF *+1 * ZBF5 NOP * ISZ ZBTMP INT. SHOULD BE HERE ISZ ZBTMP CLF INTP TURN I/O SYSTEM OFF LDA ZBI5 DID IT INTERRUPT? SZA JMP *+4 E014 JSB ERMS,I E014 NO INT DEF ZBE14 JMP ZBIO6 ABORT REST OF SECTION LDA ZBTMP CHECK FOR CORRECT INTERRUPT CPA Z.2 ? JMP *+3 E026 JSB ERMS,I E026 INT EXE(CUTION ERROR DEF ZBE26 ZBS53 CLF CH TURN OFF CH FLAG JMP ZBIO6 GO TO NEXT SECTION * ZBD5 DEF ZBF5-1 ZBD5A DEF ZBF5+1 * ZBE12 ASC 16,E012 INT DURING HOLD OFF INSTR/ ZBE13 ASC 12,E013 SECOND INT OCURRED/ ZBE14 ASC 06,E014 NO INT/ ZBE15 ASC 12,E015 INT RTN ADDR ERROR/ ZBE26 ASC 13,E026 INT EXECUTION ERROR/ * * * * SKP ZBI5 NOP CLF INTP TURN I/O SYSTEM OFF LDA ZBD5 CHECK TO SEE IF ALL CPA ZBF5 INSTRUCTION COMPLETED JMP *+3 YES E012 JSB ERMS,I E012 INT DURING HOLD OFF DEF ZBE12 LDA ZBD5A CHECK RETURN ADDRESS LDB CPTO IF 210X SSB ADD ONE INA CPA ZBI5 JMP ZBI5A E015 JSB ERMS,I E015 INT RTN ADDR ERROR DEF ZBE15 JMP ZBIO6 ZBI5A JSB ZTCJI SET SECOND INT TRAP DEF ZBT5 STF INTP TURN I/O SYSTEM ON JMP ZBI5,I CONTINUE TEST * * ZBT5 NOP CLF INTP TURN I/O SYSTEM OFF E013 JSB ERMS,I E013 SECOND INT OCURRED DEF ZBE13 * * * * * SKP * CLC CH AND CLC 0 * ZBIO6 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI61 ZBS61 STC CH SET CH CONTROL ZBS62 STF CH SET CH FLAG STF INTP TURN ON INTERRUPTS ZBS63 CLC CH CLEAR CH CONTROL NOP GIVE IT A CHANCE NOP CLF INTP TURN INTS OFF ZB60 JSB ZTCJI SET JSB INSTRUCTION DEF ZBI62 ZBS64 CLF CH CLEAR CH FLAG ZBS65 STC CH SET CH CONTROL ZBS66 STF CH SET CH FLAG STF INTP TURN ON INTS CLC INTP CLEAR I/O SYSTEM NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTS JMP ZBIO7 * * ZBI61 NOP CLF INTP TURN OFF INTS E016 JSB ERMS,I E016 CLC CH ERROR DEF ZBE16 JMP ZB60 * ZBI62 NOP CLF INTP TURN OFF INTS E017 JSB ERMS,I E017 CLC 0 ERROR DEF ZBE17 x JMP ZBIO7 * ZBE16 ASC 9,E016 CLC CH ERROR/ ZBE17 ASC 9,E017 CLC 0 ERROR/ * * * * * SKP * EXTERNAL & INTERNAL PRESET TEST * ZBIO7 LDB ZS812 CHECK TO SUPPRESS JSB SWRT,I ? JMP H025 YES - SKIP PRESET TEST H024 JSB MSGC,I TELL OPERATOR DEF ZBM24 PRESS PRESET * ZBS71 CLF CH CLEAR CH FLAG STF INTP TURN ON INTS JSB ZTCJI SET TRAP CELL JSB INSTRUCTION DEF ZBI70 HLT 24B WAIT FOR OPERATOR CLA,INA SET UP FLAGS FOR TESTS SFS INTP CHECK INTP FLAG CLA NOT SET SO CLEAR FLAG RAL MOVE TO NEXT FLAG CLF INTP TURN OFF ONTPS ZBS72 SFS CH CHECK CHANNEL FLAG INA NOT SET SO FLAG IT RAL MOVE TO NEXT FLAG LIB 0 CHECK I/O BUSS SZB SHOULD BE ZERO INA NOT SO FLAG IT RAL MOVE TO NEXT FLAG STF INTP CHECK CONTROL ON CARD NOP GIVE IT A CHANCE NOP CLF INTP TURN OFF INTPS * * * * * * * * * * * * * * * * * * * * * * * SKP ZB70 SLA,RSS CHECK FOR ERRORS JMP *+3 E022 JSB ERMS,I E022 DID NOT CLEAR CONTROL DEF ZBE22 RAR SLA,RSS JMP *+3 E023 JSB ERMS,I E023 I/O LINES NOT CLEAR DEF ZBE23 RAR SLA,RSS JMP *+3 E020 JSB ERMS,I E020 FLAG NOT SET DEF ZBE20 RAR SLA,RSS JMP *+3 E021 JSB ERMS,I E021 DID NOT DIABLE INTS DEF ZBE21 H025 JSB MSGC,I TELL OPERATOR DEF ZBM25 BASIC I/O IS COMPLETE JMP ZBIO,I RETURN TO CALLER * ZBI70 NOP CONTROL FAILED CLF INTP TURN OFF INTPS INA JMP ZB70 * ZBE20 ASC 17,E020 PRESET(EXT) DID NOT SET FLAG/ ZBE21 ASC 19,E021 PRESET(INT) DID NOT DISABLE INTS/ ZBE22 ASC 20,E022 PRESET(EXT) DID NOT CLEAR TCONTROL/ ZBE23 ASC 21,E023 PRESET(EXT) DID NOT CLEAR I-O LINES/ ZBM24 ASC 17,H024 PRESS PRESET (EXT&INT),RUN/ ZBM25 ASC 08,H025 BI-O COMP/ SKP ZBIOD DEF *+1 DEF ZBS21 DEF ZBS22 DEF ZBS23 DEF ZBS24 DEF ZBS25 DEF ZBS26 DEF ZBS27 DEF ZBS31 DEF ZBS32 DEF ZBS33 DEF ZBS41 DEF ZBS42 DEF ZBS51 DEF ZBS52 DEF ZBS53 DEF ZBS61 DEF ZBS62 DEF ZBS63 DEF ZBS64 DEF ZBS65 DEF ZBS66 DEF ZBS71 DEF ZBS72 DEC -1 * ZCEND EQU * * * * * * * * * * * * * * * * * * * * * * * * * * HED OPERATOR DESIGN SECTION * OPERATOR DESIGN SECTION * ORG 4000B OPDSN NOP LDA 112B CHECK FOR CONSOLE DEVICE SZA,RSS JMP OPDSN,I NO SO DONT DO OPDSN JSB .FMT TELL OP HE'S IN OPDSN DEF MSG1 LDA SUPA SET STA PRPLA LAST STATEMENT ADDRESS CLA CLEAR STA SUPA,I SOURCE STATEMENT FILE STA DBC USER BUFFER * IRQ JSB .FMT OUTPUT @ DEF .MSG1 JSB GIFO GET INPUT FROM OPERATOR JSB GETB GET INPUT BLOCK JMP INER NO INPUT SEZ,RSS IF IT'S ASCII JMP PCMD IT'S A COMMAND STA TMP SAVE IT SZA,RSS IF IT'S A ZERO JMP INER THEN IT'S AN ERROR SSA IF NEG THEN ERROR JMP INER LDA MXNM CHECK FOR MAX NUMBER CMA ADA TMP SSA,RSS IF OVER 999 JMP INER THEN ERROR JSB GETB GET STATEMENT TYPE JMP DLL DELETE LINE SEZ SHOULD BE ASCII JMP INER NO-SO ERROR SKP JSB FNDST FIND STATEMENT TYPE JMP INER NOT FOUND STA SVB STB TMP+1 ALF,ALF INPRN AND .177 CPA AA IS IT ASCII? ") JMP TAA YES CPA AI IS IT INTEGER? JMP TAI YES CPA AK IS IT OCTAL? JMP TAK YES JMP INPRC-1 * TAA JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ IS IT ASCII JMP INER NO - THEN ERROR JMP INPRC OK * TAI JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR JMP INPRC OK * TAK JSB GETB GET NEXT BLOCK JMP INPRC-1 NO MORE DATA SEZ,RSS IS IT A NUMBER JMP INER NO - THEN ERROR LDA B OK JMP INPRC CLA NO DATA SO MAKE IT ZERO * INPRC LDB SVB SZB STA TMP+2 SZB,RSS STA TMP+3 LDA SVB IS THIS FIRST PRAM SZA,RSS ? JMP *+4 CLB STB SVB JMP INPRN SKP * PUT STATEMENT IN QUE * SYNTX RSS (BAY BE OVERLAYED BY JSB) JMP INER JSB FNDLN FIND LINE NUMBER JMP INSTR NOT FOUND ISZ PRPTR FOUND IT LDA TMP+1 JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+2 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT LDA TMP+3 JUST REPLACE IT ISZ PRPTR JUST REPLACE IT STA PRPTR,I JUST REPLACE IT JMP IRQ ASK FOR MORE * INSTR LDA PRPLA CHECK ADA .5 TO CMA,INA SEE IF ADA EUPA QUEUE FULL SSA,RSS ? JMP .STR NO - OK STORE IT JSB .FMT YES TELL OPERATOR DEF MSG4 JMP IRQ MSG4 ASC 6,QUEUE FULL/ * .STR LDA TMP MOVE LINE NUMBER LDB PRPTR,I INTO PLACE STA PRPTR,I SZA,RSS IF NUMBER=0 THEN JMP SVLA SAVE LAST ADDRESS STB TMP ELSE ISZ PRPTR MOVE BLOCK LDA TMP+1 IN LDB PRPTR,I TO END STA PRPTR,I OF STB TMP+1 PROGRAM ISZ PRPTR LDA TMP+2 LDB PRPTR,I STA PRPTR,I STB TMP+2 ISZ PRPTR LDA TMP+3 LDB PRPTR,I STA PRPTR,I STB TMP+3 ISZ PRPTR JMP .STR SKP * FIND STATEMENT * FNDST NOP STA SVA SAVE TYPE STB SVB "" LDB STTBD STATEMENT TABLE DEF FNDSL LDA B,I CPA .M2 END OF STANDARD TABLE RSS YES JMP *+3 LDB STUD GET STANDARD USER TABLE JMP FNDSL TRY IT CPA .M1 IS IT THE TERMINATOR JMP FNDST,I YES - NOT FOUND CPA SVA IS IT THIS CHARACTER JMP *+3 YES ADB .4 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT INB MOVE TO SECOND CHARACTERS LDA B,I CPA SVB DO THESE COMPARE JMP *+3 YES ADB .3 NO - MOVE TO NEXT STATEMENT JMP FNDSL AND TRY IT ISZ FNDST FOUND - ADJUST RETURN INB LDA B,I RETRIEVE PARAMETER TYPES INB AND PROCESSOR POINTER JMP FNDST,I * * * FIND LINE NUMBER IN QUE =TMP * FNDLN NOP LDB SUPA START AT FIRST STATEMENT STB PRPTR LDA B,I SZA,RSS IF ZERO JMP FNDLN,I THEN NOT FOUND CMA,INA ADD THE TWO ADA TMP NUMBERS SZA,RSS IF EQUAL JMP *+5 THEN FOUND SSA IF IT GOES NEG. JMP FNDLN,I THEN NOT FOUND ADB .4 TRY NEXT STATEMENT JMP FNDLN+2 ISZ FNDLN JMP FNDLN,I SKP * GET INFORMATION FROM OPERATOR * GIFO NOP LDA .D72 INPUT COUNT LDB IBUFD JSB SLIN,I GET INPUT FROM OPERATOR SZA,RSS WAS THERE ANY INPUT JMP *-4 NO - SO ASK AGAIN CPA .D72 DO I NEED A CR-LF?  RSS JMP *+4 NO CLA YES JSB SLOP,I LDA .D72 RESTORE COUNT LDB IBUFD * RBL * STB IBUFP * ADD CR TO ADB A * LDA .15 * END OF BUFFER JSB A2BUF * JMP GIFO,I RETURN TO CALLER * * * * * * * * * * SKP * GET A CHARACTER FROM INPUT BUFFER * GETC NOP LDB IBUFP JSB BUF2A CPA .15 IF CR RETURN P+1 JMP GETC,I YES ISZ IBUFP MOVE POINTER TO NEXT CHARACTER ISZ GETC ADJUS GOOD RETURN P+2 JMP GETC,I RETURN * * BUF2A NOP CLE,ERB E _ UPPER LOWER FLAG LDA B,I 2CHR TO AREG SEZ,RSS UPPER OR LOWER? ALF,ALF UPPER AND .177 MASK UNWANTED CHARACTER JMP BUF2A,I RETURN. * * A2BUF NOP STA GETC SAVE CHARACTER SLB,INB OPPSITE ADB .M2 CHARACTER JSB BUF2A ALF,ALF IOR GETC ADD NEW CHARACTER SEZ SHOULD IT BE SWAPPED? ALF,ALF YES STA B,I STORE IT JMP A2BUF,I * * PUTC NOP AND .177 MASK UPPER BITS SZA,RSS IF IT'S ZERO JMP PUTC,I DON'T PUT IN BUFFER LDB IBUFP GET ADDRESS JSB A2BUF PUT CHATACTER IN BUFFER ISZ IBUFP MOVE TO NEXT CHARACTER JMP PUTC,I RETURN TO CALLER * * * * * SKP * GET INPUT BLOCK FROM INPUT BUFFER * GETB NOP CLA CLEAR PARAMETERS STA AIN STB BIN JSB GETC GET A CHARACTER JMP GETB,I NO DATA CPA SPC CHECK IF IT'S A SPACE JMP GETB,I YES SKIP IT ISZ GETB ADJUST RETURN CPA MINUS IF IT'S NEG SIGN JMP NUMIN+1 THEN PROCESS AS A NUMBER JSB DGCK IF IT'S A NUMBER JMP NUMIN THEN PROCESS AS A NUMBER CLB & STB SVA JSB GETA CONVERT 2 CHARACTERS STA AIN SAVE IT LDA SVA CHECK IF SPACE HAS BEEN SZA,RSS ? JSB GETC NO GET NEXT CHARACTER LDA SPC NO DATA USE SPACE CPA SPC IS IT A SPACE? STA SVA YES SET FLAG JSB GETA CONVERT NEXT 2 CHARACTERS STA BIN SAVE IT LDA SVA CHECK FOR SAPC SZA ? JMP *+6 JSB GETC MOVE TO NEXT SPACE LDA SPC NO DATA USE SPACE CPA SPC SPACE? RSS YES JMP *-4 NO GET NEXT CHARACTER CLE INDICATE ASCII LDA AIN RETRIEVE CHR LDB BIN JMP GETB,I RETURN * * GETA NOP STA BIN LDA SVA SZA,RSS JSB GETC LDA SPC CPA SPC STA SVA ALF,ALF IOR BIN ALF,ALF JMP GETA,I SKP NUMIN CCB,RSS INDICATE POSITIVE CLB INDICATE NEGATIVE STB NFLG SAVE FLAG ADB IBUFP MOVE POINTER BACK IF NECESSARY CLE,ERB SET UPPER LOWER FLAG CLA CALL FOR INTEGER JSB AS2N,I CONVERT IT STA AIN SAVE IT LDB NFLG ADB IBUFP CLE,ERB CCA CALL FOR OCTAL JSB AS2N,I CONVERT IT STA BIN SAVE IT LDA AIN RETRIEVE LDB BIN NUMBERS ISZ NFLG WAS A NEG ENTERED? RSS JMP *+3 NO CMA,INA YES CMB,INB STA AIN SAVE NUMBER STB BIN JSB GETC GET NEXT CHARACTER LDA SPC NO DATA USE SPACE CPA SPC READ TO NEXT SPACE RSS JMP *-4 NO MOVE TO NEXT ONE CCE INDICATE IT'S A NUMBER LDA AIN RETRIEVE PRAMETERS LDB BIN JMP GETB,I RETURN AIN NOP BIN NOP NFLG NOP * * CHECK IF AREG = DIGIT * DGCK NOP 8640 STA BUF2A SAVE CHARACTER ADA .M60 ADD -60 OCTAL SSA SHOULD STILL BE POS.? ISZ DGCK NO - NOT A DIGIT ADA .M10 ADD -10 SSA,RSS SHOULD GO NEG? ISZ DGCK NO - ADJUST RETURN LDA BUF2A RETRIEVE CHARACTER JMP DGCK,I RETURN SKP * SELECT FAST OR SLOW OUTPUT DEVICE * PDVC NOP LDA JSBSD CPB AP CHECK IF LINE PRINTER? INA YES LDB 113B CHECK IF THERE IS A FAST DEVICE SZB,RSS ? LDA JSBSD NO STA FDF JMP PDVC,I RETURN 6 5 C 13181-18003 1629 S 0146 13181/13183 MAG TAPE DG              H0101 ;* * * * OUTPUT TO FORMATTER * .FMT NOP CLF INTP LDB .FMT,I GET ADDRESS ISZ .FMT ADJUST RETURN CLA,CLE INDICATE STARTING FORMAT JSB FMTR,I GO TO FORMATTER JMP .FMT,I RETURN * * * * * SKP * PROGRAM COMMAND * PCMD CPA ABY EXIT OPDSN? JMP OPDSN,I EXIT CPA ALF LIST SOURCE FILE JMP PLF YES CPA ACF CLEAR SOURCE FILE? JMP PCF YES CPA ADB DEFINE BUFFER? JMP PDB YES CPA ALO LIST OUTPUT BUFFER? JMP PLO YES CPA ALI LIST INPUT BUFFER? JMP PLI YES CPA ACB CLEAR BUFFER? JMP PCB YES CPA AGO START EXECUTION? JMP PGO YES * CMDL NOP (MAY BE OVERLAYED BY A JSB) RSS JMP IRQ * INER JSB .FMT INPUT ERROR DEF MSG2 JMP IRQ TRY AGAIN MSG1 ASC 3,OPDSN/ .MSG1 ASC 1,@_ MSG2 ASC 6,INPUT ERROR/ SKP * LIST PROGRAM * PLF JSB PDVC CHECK FOR FAST DEVICE LIST LDA SUPA SET STARTING OF LIST STA PRPTR POINTER PLFL LDA PRPTR,I CHECK TO PRINT STATEMNET SZA,RSS IS IT THE END OF LIST JMP IRQ YES LDB SW9 CHECK TO JSB SWRT,I ABORT LIST JMP IRQ YES CCB CONVERT AND ADB IBUFD PACK CLE STATEMENT JSB I2AS,I NUMBER LDB IBUFD ADD NUMBER TO POINTER ADB .2 RBL STB IBUFP LDA SPC PUT SPACE IN BUFFER JSB PUTC ISZ PRPTR LDA PRPTR,I * ISZ PRPTR * ADA .M1 * LDB A,I * GET PRAM TYPES STB SVB * SAVE PRAM TYPES ADA .M1 * LDB A,I * STB TMP+3 * ADA .M1 * LDA A,I * AND STATEMENT STA TMP+2 * SAVE STATEMENT ALF,ALF * JSB PUTX * PUT STATEMENT TYPE LDA TMP+2 * IN JSB PUTX * BUFFER LDA TMP+3 * AND SECOND CHATACTERS ALF,ALF JSB PUTX * LDA TMP+3 * JSB PUTX * JMP *+7 * PUTX NOP AND .177 CPA SPC IF IT'S A SPACE JMP *+3 SKIP IT JSB PUTC PUT IT IN BUFFER JMP PUTX,I TRY NEXT CHARACTER LDA SPC ADD SPACE TO BUFFER JSB PUTC SKP LDA SVB RETRIEVE PRMS TYPES ALF,ALF MOVE TO FIRST PARAMETER PLFP LDB PRPTR,I CHECK IF NO PARAMETER SZB,RSS ? JMP PLFC NO SO DON'T PROCESS IT AND .177 CPA AA IS IT ASCII? JMP PAA YES CPA AI IS IT INTEGER? JMP PAI YES CPA AK IS IT OCTAL? JMP PAK YES JMP PLFC TYPE NOT FOUND SO SKIP IT * PAA LDA PRPTR,I GET CHARACTERS ALF,ALF JSB PUTC FIRST ONE TO BUFFER LDA PRPTR,I AND .177 SKIP IF SPACE CPA SPC RSS JSB PUTC SECOND ONE TO BUFFER JMP PLFC * PAI LDA PRPTR,I CLB SSA,RSS IF POS CCB MOVE BUFFER POINTER BACK ONE ADB IBUFP STB IBUFP CLE,ERB JSB I2AS,I * PAE LDA IBUFP ADA .6 STA IBUFP JMP PLFC * PAK LDA PRPTR,I LDB IBUFP CLE,ERB JSB O2AS,I JMP PAE SKP PLFC ISZ PRPTR MOVE TO NEXT PARAMETER LDA SPC ADD SPACE TO BUFFER JSB PUTC LDA SVB SZA,RSS JMP *+4 CLB STB SVB JMP PLFP LDA IBUFP DETERMINE BUFFER COUNT LDB IBUFD * RBL * CMB,INB * ADA B * LDB IBUFD JSB DVIC OUTPUT BUFFER JMP PLFL DO NEXT INSTRUCTION EQ SKP * DELETE A LINE * DLL JSB FNDLN FIND IT JMP IRQ NOT FOUND ADB .4 PDLL LDA .M4 SET COUNT FOR COMPARE STA TMP PDLL0 LDA B,I MOVE NEXT LINE UP STA PRPTR,I ISZ PRPTR INB ISZ TMP TIME FOR A COMPARE JMP PDLL0 NO LDA B,I YES CHECK FOR END OF LIST SZA ? JMP PDLL NO STA PRPTR,I CLEAR LAST STATEMENT SVLA LDA PRPTR SAVE LAST STATEMENT ADDRESS STA PRPLA JMP IRQ * * * CLEAR SOURCE FILE * PCF CLA STA SUPA,I LDA SUPA JMP SVLA+1 SKP * PROCESS GO * PGO NOP (MAY BE OVERLAYED BY A JSB) LDA GSPTS CLEAR GO SUB TABLE STA GSPTR LDB SUPA START AT BEGINNING STB PRPTR LDA PRPTR,I STA TMP PGOL1 ISZ PRPTR LDA PRPTR,I LDA A,I STA TMP+1 POINTER TO ROUTINE ISZ PRPTR LDA PRPTR,I STA TMP+2 PARAM A ISZ PRPTR LDA PRPTR,I STA TMP+3 PARAM B ISZ PRPTR LDA TMP STA CULN SAVE CURRENT LINE NUMBER SZA,RSS JMP IRQ LDA PRPTR,I STA TMP NEXT LINE NUMBER LDA TMP+2 GET PARAM A LDB TMP+3 GET PARAM B JSB TMP+1,I GO TO ROUTINE CLA NO LINE CHANGE LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP IRQ SZA,RSS CHECK FOR LINE CHANGE JMP PGOL1 NO STA TMP JSB FNDLN JMP OPLNE LINE NUMBER NOT FOUND JMP PGOL1 FOUND * * OPLNE JSB .FMT OUTPUT NO LINE NO. DEF OPLMD OPLNN JSB .FMT OUTPUT LINE # DEF OPLND LDB CULN CURRENT LINE NUMBER OPLN. CLA,INA JSB FMTR,I JMP IRQ RETURN TO OPERATOR OPLMD ASC 3,LINE?_ OPLND ASC 5, (LINE #)/ SKP * DEFINE BUFFER * PDB STB TMP SAVE TYPE LDA B CPA AIK INSERT? JMP DBI YES CPA AIA JMP DBI YES CPA ARK REPLACE? JMP DBR YES CPA ARA JMP DBR YES JMP DBBC GIVE OPERATOR BUFFER COUNT * * DBIN NOP JSB DBN GET FIRST NUMBER STA TMP+1 SAVE IT JSB DBN GET SECOND NUMBER STA TMP+2 SAVE IT SZA,RSS IF IT'S NOT ZERO JMP DBIN,I CMA,INA CHECK FRST < SEC ADA TMP+1 SSA,RSS JMP INER JSB GETB EMPTY BUFFER JMP DBIN,I JMP *-2 * * DBN NOP JSB GETB GET A BLOCK OF DATA CLA,CCE NO INPUT SO FAKE IT SEZ,RSS IF IT'S ASCII JMP INER THEN ERROR SSA IF IT'S NEGATIVE JMP INER THEN ERROR SZA,RSS IF ZERO JMP DBN,I RETURN LDB LDBC IS IT A LIST? SZB,RSS YES LDB DBC CHECK AGAINST BUFFER COUNT CMB ADB A SSB IF LESS THAN COUNT JMP DBN,I OK JMP INER NO THEN ERROR SKP * CLEAR BUFFER * PCB JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK IF DELETE ALL SZA ? JMP *+3 STA DBC YES CLEAR COUNT JMP DBBC JSB CLSE NO CLOSE UP AREA JMP DBBC * * * REPLACE * DBR JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK, IF SZA,RSS ZERO? JMP INER IF SO THEN ERROR JSB CLSE CLOSE AREA THATS REPLACED JMP DBI. GOTO INSERT SECTION * * * OUTPUT BUFFER COUNT * DBBC JSB .FMT OUTPUT BUFFER COUNT DEF DBBCM LDB DBC JMP OPLN. DBBCM ASC 4,BF CT #/ SKP * CLOSE UP BUFFER * CLSE NOP ADA .M1 BACK UP ONE STA TMP+1 FOR INSERT LDB TMP+2 CHECK FOR SECOND SZB NUMBER  JMP *+4 YES LDB A NO- THEN USE FIRST+1 INB STB TMP+2 SAVE IT CMB,INB * ADB A * CORRECT BUFFER ADB DBC * COUNT STB DBC * LDB TMP+2 SET ADDRESSES ADB DBD ADA DBD STA TMP+3 CLSE1 JSB DBENC LAST ADDRESS? JMP CLSE2 YES LDA B,I MOVE DATA STA TMP+3,I ISZ TMP+3 INB LDA B JMP CLSE1 NO MOVE NEXT WORD CLSE2 LDA TMP+3 JSB DBENC LAST ADDRESS? JMP CLSE,I CLA STA TMP+3,I ISZ TMP+3 MOVE TO NEXT ADDRESS JMP CLSE2 * DBENC NOP CMA IS A < THAN ADA DBD END-OF-BUFFER ADA DBCO SSA,RSS ? ISZ DBENC YES JMP DBENC,I SKP DBI JSB DBIN GET ANY PARAMETERS LDA TMP+1 CHECK IF INSERT SZA,RSS AFTER END OF BUFFER LDA DBC YES STA TMP+1 DBI. LDA TMP+1 IF NO LINE ADA DBD ADD ADDRESS STA TMP+1 SAVE IT JSB DBENC IS BUFFER FULL JMP DBBF YES JSB GIFO CALL FOR INPUT DBI0 LDA TMP+1 STA TMP+2 LDA TMP+1,I SAVE CURRENT CONTENTS STA TMP+3 JSB GTI GET INPUT LDB A LDA DBC ADA DBD JSB DBENC IS BUFFER FULL? JMP DBBF STB TMP+1,I STORE IT ISZ TMP+1 MOVE UP ADDRESSES DBI1 ISZ TMP+2 LDA TMP+2 JSB DBENC LAST ADDRESS? JMP DBI2 YES LDB TMP+3 MOVE REST OF BUFFER LDA TMP+2,I DOWN STB TMP+2,I STA TMP+3 JMP DBI1 NO MOVE MORE DBI2 ISZ DBC ADD ONE TO COUNT JMP DBI0 NO DBBF JSB .FMT YES TELL OPERATOR DEF DBFLM JMP DBBC EXIT DBFLM ASC 6,BUFFER FULL/ SKP * GET INPUT * GTI NOP LDA TMP DOES HE WANT AND .177 CPA AA ASCII? JMP GTI0 YES JSB GETB GET A BLOCK JMP DBDNE ASK IF DONE SEZ IF IT'S ASCII DONT SWAP A&B LDA B JMP GTI,I GTI0 JSB GETC GET A CHARACTER JMP DBDNE ASK IF DONE JMP GTI,I DBDNE JSB .FMT OUTPUT DONE? DEF DNEM JSB GIFO CALL FOR INPUT JSB GETB GET ANSWER JMP DBDNE NO INPUT CPA AYE YES JMP DBBC CPA ANO NO JMP *+2 JMP DBDNE NO ASK AGAIN. JSB GIFO CALL FOR ANOTHER INPUT JMP GTI+1 DNEM ASC 3,DONE?_ ANO ASC 1,NO AYE ASC 1,YE SKP PLO LDA DBC SET FOR OUTPUT BUFFER STA LDBC LDA DBD STA LDBD JMP PLB GO OUTPUT IT * PLI LDA DBCI SET FOR INPUT BUFFER STA LDBC LDA DBDI STA LDBD * PLB JSB PDVC CHECK FOR FAST DEVICE LIST LDA LDBC IS BUFFER EMPTY? SZA,RSS ? JMP IRQ YES JSB DBIN GET ANY PARAMETERS LDA TMP+1 IF FIRST = ZERO SZA JMP *+5 INA DO ALL OF BUFFER STA TMP+1 LDA LDBC STA TMP+2 LDB TMP+2 IF SEC = ZERO SZB,RSS LDB A USE INPUT COUNT STB TMP+2 CLA CLEAR LIST FLAG STA LDBC SKP DBL0 LDA FDF ERA CLA LDB DBLFM GET FORMAT JSB FMTR,I CLA,INA LDB TMP+1 OUTPUT PARAMETER JSB FMTR,I LDA .M4 SET MAX LINE NUM. CNT STA TMP+3 DBL1 LDA FDF NO OUTPUT OCTAL LISTING ERA CLA LDB DBLO JSB FMTR,I CCA LDB TMP+1 ADB LDBD ADB .M1 LDB B,I JSB FMTR,I LDB SW9 CHECK FOR ABORT JSB SWRT,I JMP DBL2 ISZ TMP+1 LDA TMP+1 CMA,INA ADA TMP+2 SSA JMP DBL2 OUTPUT COMPLETE ISZ TMP+3 ͂ JMP DBL1 CLA JSB DVIC JMP DBL0 DBL2 CLA JSB DVIC JMP IRQ FINISHED DBLFM DEF *+1 ASC 2,(#)_ DBLO DEF *+1 ASC 2, #_ SKP * WAIT FOR OPERATOR * WAP NOP JSB .FMT OUTPUT MESSAGE DEF WAPM LDB CULN WITH CURRENT LINE NUMBER CLA,INA JSB FMTR,I WAPL JSB GIFO CALL FOR INPUT LDA IBUFD,I CHECK IF "CO" CPA ACO ? JMP WAP,I CONTINUE CPA AST STOP JMP IRQ YES JSB .FMT TELL OPERATOR OF ERROR DEF MSG2 JMP WAPL AND TRY AGAIN * WAPM ASC 7,WAIT (LINE #)/ * * * * PROCESS GO TO STATEMENT * GTP NOP ISZ GTP ADJUST RETURN FOR LINE CHANGE JMP GTP,I SKP * PROCESS GOSUB * GSP NOP ISZ GSPTR MOVE TO NEXT BLOCK STB SVB SAVE REP COUNT LDB GSPTR CHECK CMB,INB IF THERE IS ADB GSPTE ROOM SSB ? JMP GSPE NO - SO ERROR LDB PRPTR SAVE PROGRAM POINTER STB GSPTR,I LOCATION ISZ GSPTR LDB SVB GET REP COUNT SZB,RSS INB SSB,RSS IF NOT NEG. CMB,INB MAKE IT NEG STB GSPTR,I ISZ GSP ADJUST RETURN FOR LINE CHANGE JMP GSP,I GSPTR NOP GSPTS DEF GSPB GSPTE DEF GSPB+30 GSPB BSS 32 * GSPE JSB .FMT DEF GSPEM JMP OPLNN GSPEM ASC 3,GS OV_ SKP * PROCESS RTN STATEMENT * RTP NOP LDA GSPTR CHECK IF THERE HAS CPA GSPTS BEEN A GOSUB JMP OPLNE NO - THEN ERROR ISZ GSPTR,I FINISHED WITH LOOP JMP RTPN NO LDA GSPTR YES ADA .M2 MOVE POINTER BACK TWO STA GSPTR INA RESET LINE NUMBER LDA A,I STA PRPTR LDA PRPTR,I STA TMP JMP RTP,I RTPN CCA ADA GSPTZR LDA A,I ADA .M2 LDA A,I ISZ RTP ADJUST RETURN FOR LINE CHANGE JMP RTP,I SKP * OUTPUT A MESSAGE * MSP NOP STA MSPM+2 CLA SFC INTP SAVE INTERRUPT STATUS CCA STA DTP CLF INTP TURN OFF INTERRUPTS LDA .4 LDB MSPM JSB SLOP,I LDA DTP SZA RESTORE INTERRUPT STATUS STF INTP JMP MSP,I MSPM DEF *+1 ASC 2,* XX * * * PROCESS DELAY STATEMENT * DTP NOP SZA IF IT'S ZERO FORGET IT JSB TMRR,I GO WAIT JMP DTP,I NOW RETURN TO CALLER * * * TEST EXECUTION * TEP NOP CMA MAKE IT NEG. STA TEPA SAVE IT LDB TSTP GET POINTER TO TEST LIST TEP0 LDA B,I GET ADDRESS CPA .M1 IS IT THE TERMINATOR JMP TEP,I YES - EXIT INB ISZ TEPA IS THIS THE TEST? JMP TEP0 NO TRY NEXT ONE CPA OPNO IF IT'S OPDSN THEN FORGET IT JMP PSTOP+1 JSB A,I YES - EXICUTE IT JMP TEP,I RETURN TO CONTROL OPNO DEF OPDSN TEPA EQU * * * * STOP EXECUTION * PSTOP NOP JSB .FMT OUTPUT STOP MESSAGE DEF STPM JMP OPLNN STPM ASC 3,STOP_ SKP MXNM DEC 9999 * AA OCT 101 AI OCT 111 AK OCT 113 AP ASC 1,P AIK ASC 1,IK AIA ASC 1,IA ARK ASC 1,RK ARA ASC 1,RA ACB ASC 1,CB ABY ASC 1,BY ALO ASC 1,LO ALI ASC 1,LI ALF ASC 1,LF ACF ASC 1,CF AGO ASC 1,GO ADB ASC 1,DB ACO ASC 1,CO AST ASC 1,ST * MINUS OCT 55 SPC OCT 40 SVA NOP SVB NOP PRPTR NOP PRPLA NOP LDBC NOP LDBD NOP * IBUFP NOP IBUFD DEF IBUF NOP IBUF BSS 37 * STTBD DEF STTBP * DVIC NOP FDF NOP JMP DVIC,I JSBSD JSB SLOP,I SKP STTBP EQU * * ASC 2,WAIT ASC 1, DEF WAP * ASC 2,GOTO ASC 1,I ˊ640 DEF GTP * ASC 2,GOSB ASC 1,II DEF GSP a6 6 D 13181-18004 1629 S 0146 13181/13183 MAG TAPE DG              H0101 <* ASC 2,RTN ASC 1, DEF RTP * ASC 2,MSG ASC 1,A DEF MSP * ASC 2,DLY ASC 1,I DEF DTP * ASC 2,TEST ASC 1,K DEF TEP * ASC 2,STOP ASC 1, DEF PSTOP * DEC -2 * OPEND EQU * SKP ORG 1760B .5 OCT 5 .6 OCT 6 .177 OCT 177 .D72 DEC 72 .M1 DEC -1 .M2 DEC -2 .M3 DEC -3 .M4 DEC -4 .M10 DEC -10 .M60 OCT -60 DBC NOP CULN NOP * * TMP NOP LINE NUMBER NOP POINTER TO STATEMENT TABLE NOP PRAM A NOP PRAM B HED 7970 (13181-13183) TAPE DIAGNOSTIC * REVISION DATE 06/15/76 * SETUP: * * 1. LOAD DIAGNOSTIC CONFIGURATOR * * 2. LOAD THE 7970 MAG TAPE DIAGNOSTIC * * 3. SET P TO 100 * * 4. LOAD THE SWITCH REGISTER ACCORDING TO THE TABLE BELOW: * * SWITCH REG SPEED /INTERFACE * 15 45 * 14 37.5 * 13 25 * 12 12.5 * 11 13183 * 10 13181 * 9 NON DMA FOR 13183 * 8-6 NOT USED * 5-0 SELECT CODE * * 5. PRESS PRESET; PRESS RUN * * 6. IF HALT 102074, GO TO STEP 7. * * 7. LOAD SWITCH REGISTER WITH OPTIONS ACCORDING TO * TABLE BELOW: * * THE FOLLOWING SWITCH REGISTER SETTINGS ARE USED * FOR PROGRAM CONTROL: * * SWITCH MEANING IF SET * 0 USE MAGNETIC TAPE UNIT 0 * 1 USE MAGNETIC TAPE UNIT 1 * 2 USE MAGNETIC TAPE UNIT 2 * 3 USE MAGNETIC TAPE UNIT 3 * 4 USE DMA CHANNEL 1 ON ALL READ/WRITE * 5 USE DMA CHANNEL 2 ON ALL READ/WRITE * 6 INHIBIT ALL TESTS WITH EMBEDDED REWINDS * 7 DELETE CRCC AND LRCC CHECK (13181) * 8 SUPPRESS TEST WHICH REQUIRE OPERATOuR * 9 ABORT * 10 SUPPRESS NON-ERROR MESSAGES * 11 SUPPRESS ERROR MESSAGES * 12 LOOP ON DIAGNOSTIC * 13 LOOP ON LAST TEST * 14 SUPPRESSES ERROR HALTS * 15 HALT AT END OF EACH TEST(102076) * * * * 8. PRESS PRESET; AND RUN * * ERROR HALTS/NORMAL HALTS * 102075 HALT AFTER SETTING SWITCH 9 * 102073 BAD SELECT CODE-GOTO STEP 4 * 102072 BAD TAPE OPTIONS-GOTO STEP 4 * 102070 P-100 ENTRY IN 8K MODE * 102071 NO DMA FOR 13183-GOTO STEP 4 * 106077 BAD INTERRUPT TRAP CELL-RELOAD GOTO STEP 1 * 102077 END OF PASS * 102076 HALT AT END OF TEST * * * ORG PGO SETUP OVERLAY PRIOR TO OPDSN JSB OPSET,I ORG CMDL COMMAND OVERLAY FOR OPDSN JSB PCMND,I OVERLAY FOR OP DESIGN * ORG 2000B .BEGN EQU * BEGIN THE DIAGNOSTIC JSB SETUP,I ORG 100B JMP START,I GO TO CONFIGURATION ORG 126B DSN OCT 112100 DIAGNOSTIC SERIAL NUMBER ORG 133B DEF .ERMS OVERLAY ERROR MESSAGE POINTER ORG 140B IOIP DEF IOID POINTER TO I/O LIST (COMMAND CH) IOIP2 DEF IOID2 POINTER TO I/O LIST (DATA CH) TSTP DEF TSTD POINTER TO TESTS STDA OCT 177777 STD. TESTS O-15 STDB OCT 007777 STD. TEST 16-27 HDMP DEF HDMS1 POINTER TO HEADER MESSAGE SWRC DEF .SWRG ORG 150B * STATU NOP CURRENT TAPE UNIT STATUS SUBTS NOP CURRENT SUBTEST NUMBER UNIT NOP CURRENT TAPE UNIT NUMBER OCMD4 NOP LAST EXECUTED COMMAND EXPST NOP EXPECTED STATUS RECNO NOP #OF RECORDS FROM BOT * * * LIST OF POINTERS * .TST0 DEF TST00 POINTER TO TEST ZERO (TST00) .ZBIO DEF ZBIO POINTER TO START OF BASIC I/O .EXEC DEF EXE01 POINT TO EXECUTIVE EXTENSION MOD MS DEF MSG NON ERROR MESSAGE REPORTINwG .ZERM DEF ZERMS POINTER TO ERROR MESSAGE .FMT3 DEF FMT03 POINTER TO FORMATTER SPECIAL SIOR DEF SIOTR POINTER TO SIO READ ROUTINE SIOW DEF SIOTW POINTER TO SIO WRITE ROUTINE FILL DEF .FILL POINTER TO FILL BUFFER ROUTINE READ DEF .READ POINTER TO READ ROUTINE .RDGP DEF RDGAP POINTER TO READ GAP SPACE ROUTINE .DMUP DEF DMAUP POINTER TO DMA SETUP ROUTINE DMAWT DEF .DMWT POINTER TO DMA WRITE ROUTINE DMARD DEF .DMRD POINTER TO DMA READ ROUTINE LONGW DEF .LONG POINTER TO SUBROUTINE LONGW LONGR DEF .LONR POINTER TO SUBROUTINE LONGR .RD10 DEF RD10 POINTER TO READ COMMAND CHANGE .CLBF DEF CLRBF POINTER TO ROUTINE CLRBF .RWSL DEF RWSLO POINTER SLOW REWIND ROUTINE .ALCP DEF ALLCP POINTER TO ALL UNIT COMPARE ROUTINE .ALRW DEF ALLRW POINTER TO ALL UNIT REWIND ROUTINE .ALWR DEF ALLWR POINTER TO ALL UNIT WRITE ROUTINE .ALBS DEF ALLBS POINTER TO ALL UNIT BACKSPACE START DEF .STAR POINTER TO START OF CONFIGURATION BEGIN DEF .BEGN POINTER TO START OF DIAGNOSTIC SCIN DEF ZISC POINTER TO I/O SETUP ROUTINE .WCC DEF WCC POINTER TO WCC COMMAND .RRF DEF RRF POINTER TO RRF COMMAND SETUP DEF .SETU POINTER TO 2000 OCTAL CONFIG. .LRCC DEF LRCC POINTER TO LRCC ROUTINE .CRCC DEF CRCC POINTER TO CRCC ROUTINE ..TIM DEF .TIME POINTER TO TIME CONTSTANTS .PRIT DEF PARIT POINTER TO PARITY ROUTINE DCODE DEF .DCOD UPDATES RECORD COUNT .CKIN DEF CKIN POINTER TO CKIN .CKOT DEF CKOUT POINTER TO CKOUT .CMPQ DEF COMPQ POINTER TO COMPQ .ZUSR DEF ZUSR NOP * * * * * LINKS TO OPERATOR DESIGN *********************** * OPSET DEF .OPST POINTER TO PODSN SETUP .IRQ DEF IRQ POINTER TO INPUT REQUEST .SNTX DEF SYNTX PRE-PROCESSOR FOR STATEMENTS. .END OCT 3777 END OF PROGRAM AREA SUPA DEF ZCEND START OF USER TABLE EUPA EQU .END END OF USER PROGRAM AREA STUD DEF STUDD START OF USER STATEMENT 0TABLE DBD EQU FWAM START OF USER BUFFER CNT01 NOP COUNTER FOR OPERATOR DESIGN .OPLN DEF OPLNE POINTER TO LINE MISSING ROUTINE FMTR2 DEF .FMTR POINTER TO FORMATTER PCMND DEF .PCMD POINTER TO PROG EXTENSION * * * * LINKS TO INTERRUPT ROUTINES * INTJP DEF TCJMP POINTER TO LOAD TRAP WITH JMP INTJB DEF TCJSB POINTER TO LOAD TRAP WITH JSB JMPI JMP *+1,I JMP INSTRUCTION JMPIL NOP JUMP OR JSB DESTINATION JSBI JSB JMPIL,I JSB INSTRUCTION INTON DEF .INTN POINTER TO INTERRUPT TURN ON INTOF DEF .INTF POINTER TO INTERRUPT TURN OFF LDINT DEF .LDIT POINTER TO LOAD TRAP WITH ERROR MESSAGES TCCMD NOP INTERRUPT LINK TO COMMAND CH TCDAT NOP INTERRUPT LINK TO DATA CH TCDA1 NOP INTERRUPT LINK TO DMA CH 1 TCDA2 NOP INTERRUPT LINK TO DMA CH 2 .ZTCH DEF ZITCH OPDSN-PUTS HALTS IN TRAP CELLS * * * * * CONSTANTS AND STORAGE * * PAGING CONSTANTS FOR ORG-S * PAG06 EQU OPEND PAG10 EQU 10000B PAG12 EQU 12000B PAG14 EQU 14000B PAG16 EQU 16000B * SC NOP CURRENT SELECT CODE DATA EQU 10B LOAD DUMMY SELECT CODE IN DATA CHANNEL CMMD EQU DATA+1 LOAD DUMMY SELECT CODE INTO COMMAND CHANNEL * * SWITCH REGISTER MASKS SWALL OCT 17 * SWITCH REGISTER MASKS * SW00 OCT 1 BIT 0 SW01 OCT 2 BIT 1 SW02 OCT 4 BIT 2 SW03 OCT 10 BIT 3 SW04 OCT 20 BIT 4 SW05 OCT 40 BIT 5 SW06 OCT 100 BIT 6 SW07 OCT 200 BIT 7 SW08 OCT 400 BIT 8 SW09 OCT 1000 BIT 9 SW10 OCT 2000 BIT 10 SW11 OCT 4000 BIT 11 SW12 OCT 10000 BIT 12 SW13 OCT 20000 BIT 13 SW14 OCT 40000 BIT 14 SW15 OCT 100000 BIT 15 SW68 OCT 10500 BIT 6,8,AND 12 * * BASE PAGE VARIABLES * TMP1 NOP TMP2 NOP DMAFG NOP DMA CHANNEL FLAG FGDMA NOP FLAG FOR DMA R}EAD OR WRITE * BREG NOP B REG CONTENTS AREG NOP A REG CONTENTS DTA NOP LOCATION OF DATA CHANNEL SC CMD NOP LOCATION OF COMMAND CHANNEL SC ORGSC NOP FG183 NOP IF FG183=0,THEN IT IS 13181 * IF FG183=-1,THEN IS 13183 DIAG. FGINT NOP INTERRUPT FLAG INTFG NOP TEMPORARY INTERRUPT FLAG TST0F NOP TEST 0 FLAG- -1=IN TEST 0 * * CNTR NOP COUNT NOP BUFFER LENGTH COUNTER DBCI NOP INPUT BUFFER LENGTH DBDI NOP INPUT BUFFER ADDRESS * BUFLG EQU DBC BUFFER LENGTH INBUF EQU DBDI INPUT BUFFER ADDRESS INBFL EQU DBCI LENGTH OF INPUT BUFFER RDERR NOP READ ERROR FLAG (CONTENTS= STATUS) WRERR NOP WRITE ERROR FLAG (CONTENTS= STATUS) .RDCT NOP .RDTP NOP TEMPORARY STORAGE BFMAX NOP MAX BUFFER SIZE DBCO EQU BFMAX DMASK NOP DMA MASK FOR INPUT BUFFER LENGTH OLDTN NOP OLD TEST NUMBER DTIME NOP TIME FOR DMA FLAG TO SET CRCFG NOP CRCC SKIP FLAG INSWR NOP INTERNAL SWITCH REG.-TEST 30 ERSKP NOP ERROR MESSAGE SKIP FLAG SKPSW NOP SKIP SWITCH REGISTER CHECK FLAG * * NUMERICAL CONSTANTS * .1 OCT 1 .7 OCT 7 .09D DEC 9 .10 OCT 10 .17 OCT 17 .37 OCT 37 .77 OCT 77 .100 OCT 100 .100D DEC 100 .200 OCT 200 .M6 OCT -6 .N100 OCT -100 .PAGE DEC 1024 .MPAG DEC -1024 PAGE LENGTH CONSTANTS .ME3 DEC -1000 * * COMMAND SET FOR 13183 INTERFACE ATSEL DEF *+1 ADDRESS OF SELECT COMMANDS SL0 OCT 1400 SELECT UNIT ZERO SL1 OCT 2400 SELECT UNIT 1 SL2 OCT 4400 SELECT UNIT 2 SL3 OCT 10400 SELECT UNIT 3 WCC OCT 31 WRITE COMMAND WFM OCT 211 WRITE FILE MARK RRF OCT 23 READ RECORD FORWARD FSR OCT 3 FORWARD SPACE RECORD FSF OCT 203 FORWARD SPACE FILE GAP OCT 15 WRITE GAP BSR OCT 41 BACKSPACE RECORD BSF OCT 241 BACKSPACE FILE REW OCT 101 REWIND RWO OCT 105 REWIND OFF-LINE CLR OCT 110 CLEAR CONTROLLER GFM OCT 215 GAP FILE MARK RFF OCT 223 READ FORWARD UNTIL NEXT FILE MARK RRR OCT 61 READ RECORD IN REVERSE * * * INSTRUCTION LIST * .LDB LDB A POINTER TO LDB INSTRUCTION * * STATUS WORD BIT MASKS * MSKOL OCT 1 OFFLINE MSKDE OCT 2 DATA ERROR MSKFP OCT 4 FILE PROTECTED MSKCR OCT 10 CMMD REJECT MSKTE OCT 20 TIMING ERROR MSKET OCT 40 EOT MSKLP OCT 100 LOAD POINT MSKEF OCT 200 END OF FILE MSKIB OCT 400 INTERFACE BUSY MSKTB OCT 1000 TAPE UNIT BUSY MSKRW OCT 2000 REWINDING MSKOB OCT 4000 ODD BYTE MSKST OCT 10000 SINGLE TRACK ERROR MSKDN OCT 100000 DENSITY MSKSL OCT 60000 SEL. TAPE UNIT BITS 13+14 MK377 OCT 377 MASK FOR BITS 7-0 MK77K OCT 77400 MASK FOR BITS 14-8 MSK77 OCT 77777 MASK NOP TEMPORARY MASK MSKIO OCT 4033 OB,TE,DE,OL,CR CHECK MASK MSKCL OCT 14632 BITS CLEARED BY CLEAR COMMAND MSKDT OCT 22 DATA AND TIMING ERROR MASK MSKRT OCT 3000 REWIND AND TAPE BUSY MASK .2 EQU SW01 .3 EQU FSR .4 EQU SW02 .15 EQU GAP SW9 EQU SW09 S128 EQU SL3 * * * EQUIPMENT TABLE (EQT) * UNICT NOP CURRENT UNIT UNITS NOP # OF UNITS ON-LINE UNITX NOP TEMPORARY UNIT NUMBER * * TIME DELAY TABLE * TIME DEF *+1 RWTIM DEC 1 REWIND RESET TIME-45IPS WRTIM DEC 8 WRITE STARTUP- 45IPS CLTIM DEC 10 MAXIMUM CLEAR TIME GAPTM DEC 96 GAP TIME IGTIM DEC 9 IRG TIME MINBY DEC 13 MINIMUM BYTE TIME (100 WORDS) MAXBY DEC 16 MAXIMUM BYTE TIME (100 WORDS) DELTA NOP DELTA TIME CONSTANT-MAX TIME * * * COMMONLY USED SUBROUTINES * * * CHECK TO SEE THAT AT LEAST ONE UNIT ON-LINE *  REPORTS ERROR IF NO UNITS ARE ON-LINE * COUNTS UP # OF UNITS ONLINE * AND UPDATES EQT. *CALL: * JSB UNIUP * * UNIUP NOP UNIU1 EQU * CLA SELECT UNIT ZERO STA UNITS CLEAR UNITS COUNTER JSB UPDAT UPDATE EQT LDA .1 JSB UPDAT SELECT UNIT 1 LDA .2 JSB UPDAT SELECT UNIT 2 LDA .3 JSB UPDAT SELECT UNIT 3 LDA UNITS GET THE # OF UNITS ON-LINE SZA IF ZERO UNITS-REPORT ERROR UNIU2 EQU * ON-LINE JMP UNIUP,I EXIT UNIU5 EQU * ERROR- ALL UNITS ARE OFF-LINE CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT ERROR DEF E032 JMP UNIU1 GO TRY AGAIN E032 EQU * ASC 09,E032 NO UNITS UP/ * * UPDAT-UPDATES EQT * UPDAT NOP JSB UNISL GO SELECT TAPE UNIT JMP UNIU8 OFF-LINE RETURN JMP UNIU7 ON-LINE RETURN UNIU7 EQU * ISZ UNITS INCREMENT # OF UNITS ONLINE UNIU8 EQU * JMP UPDAT,I EXIT * * * CLRCH- CLEARS DATA AND COMMAND CHANNELS * *CALL: * JSB CLRCH * * CLRCH NOP CLRC1 CLC DATA,C CLRC2 CLC CMMD,C CLC CHAN+4,C CLEAR DMA CHANNELS STF CHAN+4 CLC CHAN+5,C STF CHAN+5 JMP CLRCH,I * * * AOTA- OTA ON COMMAND CHANNEL * LOAD A REGISTER WITH THE COMMAND *CALL: * LDA * JSB AOTA * * EFCK NOP LDA MSKEF JSB BITCK CHECK FOR EF JMP EFCK1 YES-EXIT LDB MSKEF SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT ERROR DEF E053 JMP EFCK1 E053 EQU * ASC 11,E053 FILE MARK ERROR/ EFCK1 JMP EFCK,I EXIT * * OCMMD NOP COMMD SHOULD BE IN THE 'B' REG. STB OCMD4 SAVE COMMAND OCMD1 OTB CMMD * * CHECK FOR COMMAND REJECT BIT SET * JSB STATS GET STATUS AND MSKCR IS COMMAND REJECT BIT SET SZA,RSS JMP OCMD3 CLB SETUP EXPECTED STATUS JSB ERMS,I YES-REPORT ERROR DEF E027 JMP OCMMD,I EXIT E027 EQU * ASC 10,E027 COMMAND REJECT/ * OCMD3 EQU * JSB DCODE,I GO UPDATE RECORD COUNT OCMD2 STC CMMD,C JMP OCMMD,I * * * CLEAR NOP CLEAR THE CONTROLLER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT SET? JMP CLEA3 NO-SKIP OVER INTERRUPT SETUP JSB LDINT,I LOAD TRAP CELLS WITH ER MSG LDA CMD JSB INTJP,I LOAD COMMAND CH TRAP CELL DEF TCCMD INTERRUPT LINK TO BASE PAGE DEF CLEA2 DESTINATION OF INTERRUPT JUMP CLEA3 EQU * LDB CLR LOAD A CLEAR INSTRUCTION JSB OCMMD OUTPUT COMMAND LDA CLTIM GET MAX CLEAR TIME JSB TMRR,I GO WAIT CLEA1 EQU * SFC CMMD IS CLEAR COMMAND FINISHED? JMP CLEA2 YES-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT ERROR DEF E030 JMP CLEA2 E030 EQU * ASC 9,E030 CLR TIME OUT/ CLEA2 EQU * JSB LDINT,I LOAD TRAP CELLS WITH ER MSG JSB STATS GET STATUS AND MSKCL ARE PROPER STATUS BITS CLEAR? SZA,RSS JMP CLEA5 YES-OK TO EXIT LDA MSKRT CHECK RW BITS JSB BITCK ARE THEY SET? JMP CLEA5 YES-EXIT JMP CLEA4 NO-REPORT ERROR CLEA5 EQU * CLB CLEAR B REGISTER FOR RETURN JMP CLEAR,I NO-EXIT CLEA4 EQU * JSB STATS GET STATUS AND MSKLP  ISOLATE LOAD PT BIT LDB A SETUP EXPECTED STATUS JSB ERMS,I EPORT ERROR DEF E043 JMP CLEAR,I EXIT E043 EQU * ASC 8,E043 CLR ERROR/ * * * FLGWT NOP THIS ROUTINE WILL WAIT APPROX. STA AREG -SECOND FOR THE COMMAND CHANNEL STB BREG LDB .ME3 SET COUNTER FOR 1 SEC. TIME OUT STB FLGW2 SETUP TIME OUT COUNTER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT SET? JMP FLGW3 NO-CONTINUE IN NON-INTERRUPT JSB LDINT,I YES-LOAD TRAP CELLS WITH ERROR MSG LDA CMD JSB INTJP,I LOAD COMMAND CH TRAP CELL DEF TCCMD INTERRUPT LINK TO BASE PAGE DEF EPT01 DESTINATION OF INTERRUPT JUMP JMP FLGW4 GO WAIT FOR INTERRUPT FLGW3 EQU * JSB IBTB GO CHECK BUSY BITS FLGW1 SFC CMMD IS COMMAND FLAG SET? JMP EPT01 YES-EXIT ROUTINE LDA .1 NO- JSB TMRR,I GO WAIT 1 MILLI-SECOND ISZ FLGW2 IS TIME OUT COUNTER ZERO? JMP FLGW1 NO-LOOP FLGW5 EQU * JSB CLEAR CLEAR CONTROLLER CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT LOST COMND FLAG DEF E145 POINTER TO MESSAGE JMP EPT01 ERROR-EXIT E145 EQU * ASC 10,E145 LOST CMND FLAG/ EPT01 EQU * JSB LDINT,I LOAD TRAP CELLS WITH ER MSG LDA AREG RESTORE THE "A" REGISTER LDB BREG RESTORE THE "B" REG JMP FLGWT,I * FLGW2 NOP TIME OUT COUNTER * FLGW4 EQU * WAIT FOR INTERRUPT ROUTINE LDA .1 GO WAIT FOR 1 MILL-SEC JSB TMRR,I ISZ FLGW2 INCREMENT TIME OUT COUNTER JMP FLGW4 NOT FINISHED-LOOP JMP FLGW5 TIME OUT-GO REPORT ERROR * * BSRWF NOP BACKSPACE RECORD WITH FLAG LOOP LDB BSR BACKSPACE RECORD JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT JMP BSRWF,I EXIT * BSRWO NOP BACKSPACE RECORD W/O FLAG LOOP LDB BSR BACKSPACE RECORD JSB OCMMD OUTPUT COMMAND JMP BSRWO,I EXIT * * FORWARD SPACE RECORD ROUTINE * FSRWF NOP FORWARD SPACE RECORD WITH FLAG LDB FSR LOAD FORWARD SPACE RECORD JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT FOR FLAG JSB LPCK CHECK FOR LP CLEAR JMP FSRWF,I RETURN TO USER * REWIND SUBROUTINES * * * * REWIND UNIT ROUTINE * REWND NOP LDB REW LOAD REWIND JSB OCMMD OUTPUT REWIND COMMAND JSB FLGWT WAIT FOR COMMAND FLAG REW4 EQU * LDA MSKOL LOAD OFF-LINE BIT JSB BITCK IS THE BIT SET? JMP REW1 YES-REPORT ERROR LDA MSKRT IS TAPE BUSY AND REWINDING? JSB BITCK JMP REW4 YES-BITS SET LDA MSKLP LOAD LP BIT JSB BITCK IS IT SET? JMP REW3 YES-GO CHECK FOR LP EXIT JMP REW1 GO REPORT ERROR REW3 EQU * JSB STATS GET TAPE STATUS LDB MSKET LOAD EOT,TAPE BUSY, RW BITS ADB MSKRT AND B ISOLATE BITS IN STATUS SZA,RSS ARE ANY BITS SET? JMP REW2 NO-EXIT REW1 EQU * LDB MSKLP YES-REPORT ERROR JSB ERMS,I REPORT REWIND FAILURE DEF E035 JMP REW5 EXIT E035 EQU * ASC 09,E035 REWIND ERROR/ REW2 EQU * STA RECNO CLEAR RECORD COUNT REW5 EQU * JMP REWND,I EXIT * * STATUS ROUTINE * A REG.=STATUS * STATS NOP STA1 LIA CMMD STA STATU HOLD THE STATUS TEMPORARILY JMP STATS,I * * * * LPREW - ROUTINE REWINDS TAPE TO LP IF UNIT IS * NOT ALREADY AT LP * * CALL: * JSB LPREW * NORMAL RETURN (P+1) * LPREW NOP JSB CLEAR CLEAR CONTROLLER LDA MSKLP JSB BITCK IS LP BIT SET? JMP LPR01 YES-SKIP REWIND JSB REWND NO-REWIND UNIT LPR01 EQU l\B@<* JMP LPREW,I RETURN TO USER * WTGAP NOP JSB FPCK CHECK FOR NO WRITE RING LDB GAP LOAD GAP COMMAND JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT FOR OPERATION TO FINISH LDA MSKLP CHECK FOR LOAD POINT JSB BITCK IS IT SET? ]B 7G 13181-18005 1629 S 0146 13181/13183 MAG TAPE DG              H0101 = JMP WTGP1 YES-REPORT ERROR JSB LPCK CHECK FOR LP CLEAR JMP WTGAP,I EXIT WTGP1 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT ERROR DEF E036 -GAP FAILED JMP WTGAP,I EXIT * * * * ROUTINE TO BACK SPACE FILE * BSFWF NOP LDB BSF BACK SPACE FILE JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT FOR OPERATION TO FINISH JSB EFCK CHECK FOR EF MARK JMP BSFWF,I EXIT * * ROUTINE TO FOREWARD SPACE FILE * FSFWF NOP LDB FSF LOAD FORWARD SPACE FILE JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT FOR OPERATION TO FINISH JSB LPCK CHECK FOR LP CLEAR JSB EFCK CHECK FOR EF MARK JMP FSFWF,I EXIT * * * WRITE FILE MARK ROUTINE * WRTFM NOP JSB FPCK CHECK FOR NO WRITE RING LDB WFM LOAD WRITE FILE MARK JSB OCMMD OUTPUT COMMAND JSB FLGWT WAIT FOR OPERATION TO FINISH JSB EFCK CHECK EF SET JSB LPCK CHECK FOR LP CLEAR JMP WRTFM,I EXIT * CHECK FILE MARK AT END OF READ * SEE TEST 34 7970/181 P33 * * ROUTINE TO CHECK FOR EOT * CALL: * JSB EOTCK * JMP * (EOT BIT NOT SET) * . * . * EOTCK NOP LDA MSKET LOAD EOT MASK JSB BITCK IS IT SET? JMP EOT01 YES-GO CHECK LP NOT SET ISZ EOTCK NO-ADJUST RETURN JMP EOTCK,I EXIT EOT01 EQU * JSB LPCK CHECK LP NOT SET JMP EOTCK,I EXIT * * * ROUTINE TO CHECK EOT AND REWIND IF EOT BIT IS SET * CALL: * JSB EOTRW * EOTRW NOP JSB EOTCK IS EOT BIT SET? JSB LPREW YES-REWIND UNIT JMP EOTRW,I EXIT * * * ROUTINE TO * SETUP COMPARISON BUFFER FLUXX NOP LDA .1 SINGLE PATTERN SEQUENCE LDB HLFRQ PATTERN S.A.3(1600 FLUX REVERSALS) JSB FILL,I DEF FLUX1 DEC 100 BUFFER LENGTH DEF FLUX2 ERROR RETURN FLUX1 EQU * FLUX2 EQU * ERROR RETURN JMP FLUXX,I EXIT HLFRQ DEF HALFQ HALFQ OCT 125125 * * BUFFER COMPARE ROUTINE * * COMPR NOP * NEED A ROUTINE TO GIVE BAD AND GOOD WORD AND WORD COUNT LDA BUFLG SET THE COMPARE WORD COUNTER LDB INBFL GET INPUT BUFFER LENGTH CPA B ARE THEY EQUAL? JMP COMP6 YES-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT ERROR DEF E050 JMP COMP6 E050 EQU * ASC 11,E050 REC LENGTH ERROR/ COMP6 EQU * LDA BUFLG LOAD BUFFER LENGTH CMA,INA MAKE IT NEGATIVE STA COUNT STORE IT IN COUNT LDA FWAM SET THE BUFFER POINTER STA TMP1 -FOR THE OUT PUT BUFFER LDB INBUF SET THE POINTER FOR THE STB TMP2 -INPUT BUFFER ENT05 LDA TMP1,I GET THE OUTPUT WORD AND CPA TMP2,I -COMPARE IT TO INPUT JMP ENT04 LDB BUFLG GET RECORD LENGTH ADB COUNT GET WORD COUNT INB GET CORRECT WORD COUNT * NOTE NUMBER WILL PRINT OUT IN OCTAL RBL MULTIPLY BY 2 FOR BYTE COUNT STB COMP3 JSB MS,I REPORT BYTE IN ERROR DEF COMP7 RETURN DEF H101 POINTER TO MESSAGE COMP3 NOP BYTE IN ERROR H101 EQU * ASC 12,H101 TAPE BYTE COUNT #/ COMP7 EQU * * LDB TMP2,I GET BAD WORD STB COMP2 LDA TMP1,I LOAD GOOD WORD STA COMP1 JSB MS,I ERROR MESSAGE DEF COMP5 RETURN DEF H067 POINTER TO MESSAGE COMP2 NOP BAD WORD COMP1 NOP GOOD WORD H067 EQU * ASC 19,H067 DATA WORD IS= # AND SHOULD BE= #/ COMP5 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT DATA TRANSFER ERROR DEF E062 JSB ERRCK CHECK [yFOR READ AND WRITE ERRORS COMP4 EQU * JMP COMPR,I EXIT ENT04 ISZ TMP1 ADVANCE THE BUFFER POINTERS ISZ TMP2 ISZ COUNT INCREMENT THE WORD COUNTER JMP ENT05 COMPARE THE NEXT LOCATIONS JMP COMP4 EXIT E062 EQU * ASC 08,E062 DATA ERROR/ * * RANDOM NUMBER GENERATOR * RAND NOP LDA BASE LOAD THE BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF IT'S STILL POSITIVE LDA BASE THE BASE ISN'T BIG ENOUGH CLE,ELA DOUBLE THE BASE OR REMAINDER STA BASE -FOR THE NEXT TRY JMP RAND,I SPC 1 PRIME DEC -31069 BASE ABS 034512B SKP * * ROUTINE TO FILL OUTPUT BUFFER WITH BIT PATTERN * * CALLING SEQUENCE (NOTE VARIABLE BUFFER LENGTH) * JSB FILL,I * "A" CONTAINS THE NUMBER OF PATTERNS IN THE SEQUENCE * "B" CONTAINS THE S.A. OF THE PATTERN SEQUENCE * DEF RETURN TO USER * DEF BUFFER LENGTH * DEF ERROR RETURN * . * . * RTN EQU * * LIMITATIONS: * NOTE BUFFER STARTING ADDRESS = FWA * MAXIMUM LENGTH OF BUFFER=1/2(LWA-FWA) * .FILL NOP BEGIN STB .PATT STORE ADDRESS OF BIT PATTERN STB TMP1 CMA,INA GET NEG OF BIT PATTERN REPEAT # STA AREG SAVE THE NUMBER OF PATTERNS STA CNT1 SET THE PATTERN SEQUENCE COUNT LDA .FILL INA SETUP LOCATION OF BUFFER LENGTH LDB A,I GET BUFFER LENGTH STB TMP2 STORE IT INA LDB A,I GET ERROR RETURN STB ERRRT STORE IT LDA .FILL,I STA .FILL ADJUST USER RETURN LDB TMP2 LOAD BUFFER LENGTH SSB IS IT POSITIVE? JMP FILL2 NO-REPORT BUFFER TOO LONG LDA BFMAX GET MAX BUFFER SIZE INA ADD ONE CMA,INA GET NEG OF LWA ADB A ADD A TO B REG.  SSB,RSS IS IT POSITIVE ? JMP FILL2 YES-ERROR * NO OK CONTINUE LDA TMP2 GET BUFFER STA BUFLG AND SETUP BUFFER LENGTH CMA,INA MAKE IT NEGATIVE STA COUNT SETUP COUNTER LDA FWAM GET BUFFER STARTING LOCATION MORE EQU * LDB TMP1,I STB A,I START FILLING ISZ TMP1 INCREMENT BIT PATTERN LOCATION INA INCREMENT BUFFER ADDRESS ISZ CNT1 INCREMENT PATTERN COUNTER JMP ENT00 LDB AREG GET NUMBER OF PATTERNS IN SEQUENCE STB CNT1 RESET # OF PATTERN IN SEQUENCE LDB .PATT RELOAD BIT PATTERN ADDRESS STB TMP1 SETUP TEMPORARY ADDRESS ENT00 ISZ COUNT IS BUFFER FULL? JMP MORE NO- GO GET NEXT PATTERN JMP .FILL,I YES-RETURN TO USER .PATT NOP POINTER TO BIT PATTERN CNT1 NOP BIT PATTERN SEQUENCE COUNTER ERRRT NOP ERROR RETURN FILL2 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT ERROR DEF E061 JMP ERRRT,I ERROR RETURN E061 EQU * ASC 11,E061 BUFFER TOO LONG/ * * * ** DATA BIT PATTERNS ** SPC 1 * SINGLE ROTATING BIT PATTERN TSRB DEF *+1 OCT 002001 OCT 010000 OCT 020100 OCT 100002 OCT 004004 OCT 000420 OCT 000040 OCT 040200 OCT 001010 * TRACK SAWTOOTH PATTERN TSAW DEF *+1 OCT 177773 OCT 175352 OCT 145212 OCT 005010 OCT 000000 * CHANNEL SAWTOOTH PATTERN CSAW DEF *+1 OCT 177577 OCT 037437 OCT 007407 OCT 001401 OCT 000377 * POINTER TO ALL 1'S ALL1 DEF *+1 OCT 177777 * POINTER TO ALL 2'S ALL2 DEF *+1 OCT 022222 * * UNISL- ROUTINE TO SELECT TAPE UNIT * * CALL: * A REG. UNIT # * JSB UNISL * * * IE: * JMP OFF * . * . * . *OFF EQU * * UNISL NOP STA AREG SAVE A REG.=UNIT # LDB AREG ADB ATSEL GET ADDRESS OF SELECT COMMAND LDA B,I GET COMMAND JSB AOTA OUTPUT COMMAND JSB STATS GET STATUS AND MSKCR IS COMMAND REJECT BIT SET? SZA,RSS JMP UNI03 NO-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I YES-REPORT ERROR DEF E027 JMP UNI04 UNI03 EQU * LDA RECNO GET THE CURRENT RECORD # LDB .RECU LOAD POINTER TO RECORD TABLE ADB UNIT COMPUTE POSITION IN TABLE STA B,I SAVE RECORD COUNT LDA AREG GET CURRENT UNIT # STA UNIT SAVE IT LDB .RECU GET POINTER TO RECORD TABLE ADB UNIT COMPUTE TABLE ADDRESS LDA B,I GET NEW RECORD COUNT STA RECNO SAVE IT FOR NEXT TEST UNI04 EQU * JSB STATS GET STATUS AND MSKOL CHECK OFFLINE BIT SZA IS IT ZERO? JMP UNI02 NO- EXIT OFFLINE ISZ UNISL YES-ADJUST RETURN FOR ON-LINE UNI02 EQU * JMP UNISL,I EXIT ROUTINE * * * RECORD NUMBER TABLE-CONTAINS CURRENT RECORD BY UNIT * .RECU DEF *+1 POINTER TO TABLE RECU0 NOP RECORD COUNT FOR UNIT 0 RECU1 NOP RECORD COUNT FOR UNIT 1 RECU2 NOP RECORD COUNT FOR UNIT 2 RECU3 NOP RECORD COUNT FOR UNIT 3 * * * * SUBROUTINE VARBF - FILLS OUTPUT WITH RANDOM DATA * - BUFFER LENGTH IS ALSO RANDOM *CALL: * JSB VARBF * * VARBF NOP JSB RANLG GET RANDOM BUFFER LENGTH JSB RADBF FILL BUFFER WITH RANDOM DATA JMP VARBF,I EXIT * * * SUBROUTINE ERRCK - CHECKS READ AND WRITE ERROR FLAGS *CALL: * JSB ERRCK * * ERRCK NOP LDA RDERR CHECK READ AND WRITE FLAGS ADA WRERR SZA,RSS IS IT ZERO?  JMP ERRCK,I YES-EXIT LDA RDERR CHECK READ ERROR FLAG SZA,RSS IS IT NON ZERO? JMP ERK05 NO-GO CHECK WRITE ERROR FLAG CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT READ ERROR DEF E066 POINTER TO MESSAGE ERK05 EQU * LDA WRERR CHECK WRITE ERROR FLAG SZA,RSS IS IT NON ZERO? JMP ERK11 NO-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I YES-REPORT WRITE ERROR DEF E065 POINTER TO MESSAGE ERK11 EQU * JMP ERRCK,I EXIT * E065 EQU * ASC 09,E065 WRITE ERROR/ E066 EQU * ASC 08,E066 READ ERROR/ * * * * SUBROUTINE RADBF-FILLS BUFFER WITH RANDOM #S * -BUFFER LENGTH IS VARIBLE * -LENGTH=BUFLG *CALL: * JSB RADBF * * RADBF NOP LDA FWAM SETUP START OF BUFFR STA TMP1 LDA BUFLG GET BUFFER LENGTH CMA,INA MAKE IT NEGATIVE STA CNTR SETUP LOOP COUNTER RADB1 EQU * JSB RAND GET RANDOM NUMBER STA TMP1,I ISZ TMP1 INCREMENT STORAGE ADDRESS ISZ CNTR INCREMENT COUNTER JMP RADB1 LOOP IF COUNTER NOT = 0 JMP RADBF,I EXIT * * * SUBROUTINE RANLG- SETUP TO MAKE BUFLG VARIABLE * *CALL: * JSB RANLG * * RANLG NOP RANG1 EQU * JSB RAND GET RANDOM LENGTH SSA IS IT POSITIVE? CMA NO-MAKE IT POSITIVE STA BUFLG SETUP BUFFER LENGTH CMA,INA MAKE A NEGATIVE LDB BFMAX GET MAX BUFFER ADB A SUBTRACT SSB IS IT POSITIVE? JMP RANG1 NO-GO GET A NEW RANDOM # JMP RANLG,I EXIT * * * SUBROUTINE DATFG- REPORTS ERROR WHEN CONTROLLER LOSES * - DATA FLAG. *CALL: - NOTE ALSO CLEARS CONTROLLER * JSB DATFG * * DATFG NOP JSB CLEAR CLEARS CONTROLLER CLB SETUP EXPECTED STATUS JSB ERMS,I DEF E144 JMP DATF3 E144 EQU * ASC 10,E144 LOST DATA FLAG/ DATF3 EQU * JMP DATFG,I EXIT * * * SUBROUTINE BITCK - USES MASK IN A REGISTER *CALL: - TO CHECK BIT/OR BITS IN STATUS * LDA MASK * JSB BITCK * JMP * * BITCK NOP STA MASK SAVE A REG. MASK JSB STATS GET STATUS AND MASK CHECK BIT PATTERN CPA MASK ARE THE BITS SET? JMP BTCK1 YES-GO TO BIT SET RETURN ISZ BITCK NO- ADJUST RETURN ADDRESS BTCK1 EQU * JMP BITCK,I EXIT * * * * KCORE ROUTINE- DETERMINES MAX BUFFER LENGTH * KCORE NOP LDA LWAM GET LAST WORD AVAILABLE ADA .M1 LDB FWAM GET FIRST WORD AVAILABLE CMB,INB NEG NEGATIVE IN B REG ADA B ADD THEM AND MSK77 ARS DIVIDE A BY 2 STA BFMAX STORE MAX BUFFER SIZE ADA FWAM ADD ADDRESS OF FWAM STA DBDI SAVE INPUT STARTING ADDRESS JMP KCORE,I RETURN * * * DMAC1 ROUTINE TO CHECK COMPUTER FOR DMA * -DMAFG=0 NO DMA * -DMAFG=1 1 CHANNEL DMA * -DMAFG=2 2 CHANNEL DMA DMACK NOP CLA STA DMAFG CLEAR DMA FLAG LDA CPTO LOAD COMPUTER TYPE AND OPTIONS AND .200 MASK OUT DMA1 ONLY SZA,RSS IS IT ZERO? JMP DMA11 YES-EXIT LDA .1 NO STA DMAFG SET DMA FLAG DMA11 EQU * * * DMAC2 ROUTINE TO CHECK COMPUTER FOR * -DMA 2 CHANNELS * LDA CPTO LOAD COMPUTER TYPE AND OPTIONS AND .4 MASK OUT 2 CHANNEL DMA SZA,RSS IS IT ZERO? JMP DMA21 YES-EXIT LDA .2 NO STA DMAFG SETUP DMA FLAG DMA2.1 EQU * JMP DMACK,I RETURN * * * CHECK SWITCH REGISTER ROUTINE * * CALL * LDB * JSB SWRC,I * P+1 * P+2 * .SWRG NOP LDA SKPSW LOAD SKIP SWITCH REG FLAG SZA IS IT ZERO? JMP .SWR1 NO-FLAG SET-SKIP OVER LIA SW LOAD SWITCH REGISTER AND B MASK OUT UNWANTED BITS SZA,RSS ANY BITS SET? .SWR1 EQU * ISZ .SWRG NO RETURN P+2 JMP .SWRG,I YES- EXIT * * * * LPCK- CHECKS LP BIT IN STATUS * WORD IS NOT SET AFTER A FORWORD *CALL: MOTION COMMAND HAS BEEN EXECUTED * JSB LPCK * * LPCK NOP LDA MSKLP JSB BITCK IS UNIT STILL AT LP? JMP LPCK1 YES-REPORT ERROR LPCK2 JMP LPCK,I NO-EXIT LPCK1 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT ERROR DEF E103 JMP LPCK2 E103 EQU * ASC 06,E103 LP SET/ * * * IBTB-CHECKS THAT IB BIT IS SET. *CALL: * JSB IBTB * * IBTB NOP LDA MSKIB LOAD INTERFACE BUSY BIT JSB BITCK IS THE BIT SET? JMP IBTB1 YES-EXIT LDB MSKIB NO-REPORT ERROR JSB ERMS,I REPORT ERROR DEF E164 * IBTB1 EQU * JMP IBTB,I EXIT * * * FPCK-REPORTS ERROR IS FILE PROTECT BIT IS * SET (NO WRITE RING). * *CALL: * JSB FPCK * * FPCK NOP LDA MSKFP JSB BITCK IS FILE PROTECT BIT SET? JMP FPCK1 YES-REPORT NO WRITE RING FPCK2 EQU * JMP FPCK,I EXIT FPCK1 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT NO WRITE RING DEF E042 JMP FPCK2 EXIT * * * WRITES A RECORD USING A SINGLE DATA PATTERN *CALL: * LDA * LDB * JSB WT00 * * WT00 NOP STA WT002 LDA .1 SINGLE PATTERN SEQUENCE JSB FILL,I GO FILL OUTPUT BUFFER DEF WT001 NORMAL RETURN WT002 NOP BUFFER LENGTH DEF WT001 ERROR RETURN WT001 EQU * JSB SIOW,I WRITE A RECORD JSB BSRWF BACKSPACE THE RECORD LDA WT00 RETURN ADDRESS CPA .T15 IS CALL FROM ST 5/6 IN TEST15? RSS YES JMP WT003 NO - SKIP 31 MS DELAY LDA .37 MAX DELAY FOR BS REC TO STOP JSB TMRR,I WT003 JSB SIOR,I READ THE RECORD JSB COMPR IS IT CORRECT- JMP WT00,I EXIT SUBROUTINE .T15 DEF T15RT RET ADD IN TEST15(DEC) * HDMS1 EQU * ASC 09,7970-13181 DIAG./ ENDBP EQU * END OF BASE PAGE * * * * * SKP ORG PAG06 * SKIP TO NEXT PAGE OF MEMORY ******************************** * * * HDMS2 EQU * ASC 09,7970-13183 DIAG./ * IOID EQU * DEF STA1 COMMAND CHANNEL STATS DEF OCMD1 COMMAND CHANNEL OCMMD DEF OCMD2 COMMAND CHANNEL OCMMD DEF CLEA1 COMMAND CHANNEL CLEAR DEF FLGW1 COMMAND CHANNEL FLGWT DEF .RD06 COMMAND CHANNEL .READ DEF .WR06 COMMAND CHANNEL .WRIT DEF CMD COMMAND CHANNEL DEF RWSL1 COMMAND CHANNEL RWSLO-T49 DEF CLRC2 COMMAND CHANNEL CLRCH DEF AOTA1 COMMAND CHANNEL AOTA DEF LON14 COMMAND CHANNEL LONGW DEF LOR15 COMMAND CHANNEL LONGR DEF FGCK1 COMMAND CHANNEL CH CHECK DEF OTCD5 COMMAND CHANNEL OUTCD DEF T0205 COMMAND CHANNEL TEST 02 DEF T1002 COMMAND CHANNEL TEST 10 DEF WTDM4 COMMAND CHANNEL WTDMA DEC -1 IOID2 EQU * DEF DTA DATA CHANNEL DEF .RD01 DATA CHANNEL .READ DEF .RD02 DATA CHANNEL .READ DEF .RD03 DATA CHANNEL9 .READ DEF .RD04 DATA CHANNEL .READ DEF .RD14 DATA CHANNEL .READ DEF .WR17 DATA CHANNEL .WRIT DEF .WR01 DATA CHANNEL .WRIT DEF .WR02 DATA CHANNEL .WRIT DEF .WR04 DATA CHANNEL .WRIT DEF .WR05 DATA CHANNEL .WRIT DEF RGP01 DATA CHANNEL RDGAP DEF RGP02 DATA CHANNEL RDGAP DEF RGP03 DATA CHANNEL RDGAP DEF RGP06 DATA CHANNEL RDGAP DEF RGP07 DATA CHANNEL RDGAP DEF DMP09 DATA CHANNEL DMAUP DEF CWDMA DATA CHANNEL DMA CONTROL DEF T0406 DATA CHANNEL TEST 04 DEF T0408 DATA CHANNEL TEST 04 DEF CLRC1 DATA CHANNEL CLRCH DEF T0404 DATA CHANNEL TEST 04 DEF T0603 DATA CHANNEL TEST 6 DEF T0604 DATA CHANNEL TEST 6 DEF T1005 DATA CHANNEL TEST 10 DEF T1007 DATA CHANNEL TEST 10 DEF T1009 DATA CHANNEL TEST 10 DEF T1104 DATA CHANNEL TEST 11 DEF LONG1 DATA CHANNEL LONGW DEF LONG3 DATA CHANNEL LONGW DEF LONG4 DATA CHANNEL LONGW DEF LON12 DATA CHANNEL LONGW DEF LOR01 DATA CHANNEL LONGR DEF LOR03 DATA CHANNEL LONGR DEF LOR04 DATA CHANNEL LONGR DEF LOR14 DATA CHANNEL LONGR DEF CRC1 DATA CHANNEL CRCC DEF FGCK3 DATA CHANNEL CH CHECK DEF SIO27 DATA CHANNEL SIOCR DEF SIO29 DATA CHANNEL SIOCR DEF T1503 DATA CHANNEL TEST 15 DEF T1508 DATA CHANNEL TEST 15 DEC -1 TSTD EQU * DEF TST.0 BASIC I/O ( DATA + COMMAND CH) DEF TST01 INITIAL CLEAR CONTROLLER + UNIT DEF TST02 BEGINING OF TAPE (BOT) CHECK DEF TST03 COMMAND REJECT TEST DEF TST04 REWIND AND WRITE COMMAND EXECUTE DEF TST05 GAP COMMAND TEST DEF TST06 FILE MARK COMMAND TEST DEF TST07 MULTI-FILE MARK TEST DEB@ DEF TST15 INTERRCORD GAP CREEP TEST DEF TST16 WRITE-READ SINGLE ROTATING BIT DEF TST17 WRITE-READ CHANNEL SAW-TOOTH DEF TST18 WRITE-READ TRACK SAW-TOOTH DEF TST19 WRITE-READ RANDOM DATA DEF TST20 DMA CHANNEL 1 WRITE-READ RANDOM DATA DEF TST21 DMA CHANNEL 2 WRITE-READ RANDOM DATA DEF TST22 RAPID WRITE TEST DEF TST23 ECHO CHECK ON ALL UNITS ON-LINE DEF TST24 CONTROLLER CHECK FOR MULTI-UNIT OPERATION DEF TST25 INTER-UNIT COMPATIBILITY (REEL EXCHANGE) DEF TST26 WRITE RING ENABLE TEST DEF TST27 REWIND OFF-LINE CHECK DEF TST28 WRITE ALL ONES RECORD DEF TST29 READ ALL ONES RECORD DEF TST30 OPERATOR SERVICE ROUTINES DEF OPDSN OPERATOR DESIGN DEC -1 * * * * SETUP- THIS ROUTINE IS USED WHENEVER DIAGNOSTIC * IS RESTARTED AT 2000. * .SETU NOP * JSB INTOF,I TURN OFF I/O SYSTEM * * CHECK SWITCH 9 FOR ABORT LIA SW LOAD SWITCH REGISTER AND SW09 MASK FOR BIT 9 SZA IS BIT 9 SET? JMP .ZUSR,I YES-EXIT TO TCP LDA .M1 STA .ZCFT,I CORECTION TO TCP*********** CLA CLEAR CONTANTS STA UNICT CLEAR UNIT #,RESET=0 STA UNIT CLEAR UNIT # STA OLDTN CLEAR OLD TEST # STA SUBTS CLEAR SUBTEST COUNTER STA ERSKP CLEAR ERROR MESSAGE SKIP FLAG STA TSTN CLEAR TEST NUMBER STA TST0F CLEAR TEST 0 FLAG JSB UNISL GO SELECT A TAPE UNIT NOP JSB CLEAR CLEAR THE CONTROLLER JSB .ALRW,I REWIND ALL UNITS JMP .SETU,I GO TO 2000 .ZCFT DEF ZCFTT POINTER TO ZCFTT IN TCP *********** * * * EXECUTIVE EXTENSION MODULE * * EXECUTIVE CONTROL FOR TAPE UNIT SELECTION * *** NOTE: THE JSB .EXEC,I CALL MUST BE THE FIRST STATEMENT * AFTER TSTXX NOP INF EVERY TEST. * CURRENT TAPE UNIT UNDER TEST=UNIT * COUNTER WHICH KEEPS UNIT NUMBER UPDATE=UNICT * BASIC OPERATION OF THIS SECTION * 1. UNICT IS INCREMENTED AFTER EACH PASS * 2. UNICT IS INCREMENTED IF CURRENT UNIT IS OFF-LINE * 3. IF THERE IS NO TAPE SELECTED BY SWITCH REG. ALL * TAPES ARE CYCLED (4 PASSES IF 4 UNITS UP)IN SEQUENCE. * 4. IF SWITCH REG. SELECTION IS MADE,ONLY THOSE UNITS * WILL BE CYCLED. * 5. IF UNIT IS SELECTED BY SWITCH REG.AND NOT ON-LINE, * AN ERROR MESSAGE WILL RESULT. * 6. THE NUMBER OF TAPES REQUESTED IS EQUAL TO THE NUMBER OF * PASSES. * 7. TAPE UNITS ARE SELECTED IN NUMERICAL ORDER I.E. 0,1,2,3 * IF 2 WERE NOT SELECTED THE SEQUENCE WOULD BE 0,1,3 (3 PASSES) * * EXE01 NOP JSB INTOF,I TURN OFF INTERRUPT SYSTEM CLA STA TST0F CLEAR TEST 0 FLAG STA RDERR CLEAR READ AND STA WRERR WRITE ERROR FLAG STA SKPSW CLEAR SKIP SW REG CHECK FLAG STA ERSKP CLEAR ERROR MESSAGE SKIP FLAG STA SUBTS CLEAR THE SUBTEST COUNTER JSB KCORE GET MAX BUFFER LENGTH LDA BFMAX ADA .MPAG SSA IS THE MAXIMUM BUFFER>2048? JMP TAP24 NO-OK TO CONTINUE LDA .PAGE YES-TOO LARGE STA BFMAX RESET MAX BUFFER TO 2048 BYTES TAP24 EQU * * LDA ORGSC LOAD ORGINAL SELECT CODE STA SC SETUP CURRENT SELECT CODE * * CHECK SWITCH 4 FOR DMA CH 1 LDA FG183 IS IT A 13183? SZA,RSS JMP TAP25 NO-GO CLEAR DMA FLAG CPA .1 IS IT A 13183-NO DMA? JMP TAP25 YES-GO CLEAR DMA FLAG LDA DMAFG NO-RESTORE DMA FLAG STA FGDMA JMP TAP19 SKIP DMA FLAG CLEAR * TAP25 EQU * CLA STA FGDMA CLEAR DMA FLAG TAP19 EQU * LIA SW LOAD SWITCH REGISTER AND SW04 MASK OUT BIT 4 SZA,RSS IS BIT 4 SET? YJMP TAP13 NO-EXIT LDA DMAFG CHECK DMA FLAG SZA,RSS IS IT ZERO? JMP TAP14 YES-EXIT LDA .2 YES-SET UP DMA FLAG STA FGDMA SET DMA FLAG TAP13 EQU * * * CHECK SWITCH 5 FOR DMA CH2 * LIA SW LOAD SWITCH REGISTER AND SW05 MASK FOR BIT 5 SZA,RSS IS BIT 5 SET? JMP TAP14 NO-EXIT LDA DMAFG CHECK DMA FLAG CPA .2 IS THERE A 2ND DMA CHANNEL? JMP *+2 YES-CONTINUE JMP TAP14 NO-EXIT LDA .3 YES-SET UP DMA FLAG STA FGDMA SET DMA FLAG TAP14 EQU * * * CHECK FOR SWITCH 7-CRCC SUPPRESS * LIA SW LOAD THE SWITCH REGISTER AND SW07 ISOLATE SWITCH 7 SZA IS SWITCH 7 SET? CCA YES-SET CRCC SKIP FLAG STA CRCFG SET CRCC FLAG * * * * THIS SECTION SELECTS THE NEXT ON-LINE TAPE * UNIT IF THE PASS COUNTER HAS INCREMENTED. * THE CURRENT TEST NUMBER (TSTN) IS COMPARED * TO THE TEST NUMBER USED DURING THE LAST * PASS THRU THIS ROUTINE.IF THE NEW TEST NUMBER * IS SMALLER THAN THE OLD TEST # (OLDTN), THE * ASSUMPTION IS A PASS WAS COMPLETED AND THEREFORE, * THE NEXT ON LINE UNIT IS SELECTED. * LDA TSTN LOAD CURRENT TEST NUMBER LDB OLDTN LOAD OLD TEST # CMB,INB MAKE IT NEGATIVE ADA B TSTN-OLDTN SSA IS IT POSTIVE? JMP TAP15 NO-JMP TO NEW PASS SETUP TAP17 EQU * YES-NOT A NEW PASS LDA TSTN GET TEST# STA OLDTN SET OLD TEST #= TO CURRENT # JMP TAPUP CONTINUE TAP15 EQU * ISZ UNICT GOTO NEXT UNIT NOP LDA UNICT LOAD THE NEXT UNIT # ADA .M4 SUBTRACT 4 SSA IS IT POSITIVE? JMP TAP17 NO-NOT = T^O OR GREATER THAN 4 CLA YES-CLEAR UNICT STA UNICT CLEAR UNIT # JMP TAP17 * * TAPUP EQU * * * CHECK SWITCH 9 FOR ABORT LIA SW LOAD SWITCH REGISTER AND SW09 MASK FOR BIT 9 SZA,RSS IS BIT 9 SET? JMP TAP26 NO-CONTINUE LDA TSTN LOAD TEST NUMBER CPA .37 IS IT OP DESIGN? JMP .IRQ,I YES-EXIT TO OP DESIGN JMP .ZUSR,I NO-EXIT TO TCP TAP26 EQU * * JSB UNIUP CHECKS IF ANY UNITS ARE ON-LINE LIA SW LOAD SWITCH REGISTER AND .17 LOAD BITS 0-3 (TAPE UNITS) SZA IS THERE A SWITCH REG.SELECTION JMP TAPU1 YES- GOTO SWITCH REG CHECK LDA UNICT LOAD UNIT COUNTER JSB UNISL GO SELECT TAPE UNIT JMP TAPU2 OFF-LINE RETURN JMP TAPU3 ON-LINE- EXIT TAPU2 EQU * ISZ UNICT GO TO NEXT UNIT LDA UNICT CPA .4 IS IT LOGICAL UNIT 4 JMP TAPU4 YES. GO RESET IT JMP TAPUP NO- GO TRY NEW SELECTION TAPU4 EQU * CLA STA UNICT SET TAPE UNIT =0 JMP TAPUP GO CHECK SWITCH REGISTER * * * BEGIN SWITCH REG. CHECK FOR UNIT SELECTION * TAPU1 EQU * STA TMP1 SAVE SWITCH REG.SETINGS AND .1 SZA,RSS IS BIT 0 SET? (UNIT=0) JMP TAPU5 NO-TRY NEXT BIT CLA CPA UNICT IS IT UNIT 0 JMP TAPU9 YES TAPU5 LDA TMP1 AND .2 SZA,RSS IS BIT 1 SET? (UNIT=1) JMP TAPU6 NO-TRY NEXT BIT LDA .1 IS IT UNIT 1 CPA UNICT JMP TAPU9 YES TAPU6 LDA TMP1 AND .4 SZA,RSS IS BIT 2 SET? (UNIT=2) JMP TAPU7 NO-TRY NEXT BIT LDA .2 CPA UNICT IS IT UNIT 2 JMP TAPU9 YES TAPU7 LDA TMP1 AND .10 SZA,RSS IS BIT 3 SET? (UNIT=3) JMP TAPU2 GO TRY NEXT UNIT LDA .3 CPA UNICT  IS IT UNIT3? JMP TAPU9 YES JMP TAPU2 NO-GO INCREMENT UNITCT * * A MATCH HAS BEEN FOUND BETWEEN * UNICT(UNIT #) AND SWITCH REGISTER * TAPU9 EQU * A REG HAS TAPE UNIT # JSB UNISL GO SELECT UNIT JMP TAP12 GO REPORT ERROR JMP TAPU3 UNIT ON-LINE- EXIT * ERROR- UNIT SELECTED BY SWITCH REG. * BUT UNIT IS OFF-LINE TAP12 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I SELECTED UNIT IS OFF-LINE DEF E033 JMP TAPUP TAPU3 EQU * JSB CLEAR CLEAR THE CONTROLLER LDA MSKRW JSB BITCK IS THE UNIT REWINDING? JMP TAP27 YES-GO CHECK TAPE BUSY BIT JSB EOTCK CHECK FOR EOT JMP TAP18 SET-GO REWIND THE UNIT TAP21 EQU * YES-EXIT * END OF EXECUTIVE TAPE SELECTION JMP EXE01,I * TAP18 EQU * JSB MSGC,I REPORT EOT DETECTED DEF H037 POINTER TO MESSAGE JMP TAP22 JUMP OVER MESSAGE H037 EQU * ASC 05,H037 EOT/ TAP22 EQU * JSB WTGAP WRITE A GAP JSB CLEAR TRY TO CLEAR EOT BIT JSB EOTCK IS EOT BIT STILL ON? JMP TAP23 YES-CONTINUE LDB MSKET SETUP EXPECTED STATUS JSB ERMS,I NO REPORT ERROR DEF E056 POINTER TO MESSAGE JMP TAP23 JUMP OVER MESSAGE E056 EQU * ASC 10,E056 EOT BIT CLEAR/ TAP23 EQU * LDB REW JSB OCMMD GO REWIND THE UNIT JSB FLGWT WAIT FOR COMMAND TO FINISH LDA MSKRT JSB BITCK IS TAPE BUSY AND REW BITS SET? JMP TAP27 YES-GO WAIT TAP28 EQU * LDB MSKRT SETUP EXPECTED STATUS JSB ERMS,I REPORT REWIND FAILURE DEF E035 JMP TAP15 GO SELECT THE NEXT UNIT TAP27 EQU * LDA MSKRT LOAD REWIND AND T BUSY BITS JSB BITCK IS IT SET? JMP TAP27 YES - WAIT TILL ;DONE JMP TAP21 NO - DONE SO CONTINUE * * * TEST 00 * USE TST00 TO CHECK COMMAND AND DATA CHANNEL * TST.0 EQU * * NOP CCA STA TST0F SET TEST 0 FLAG LDA ORGSC LOAD COMMAND SC STA SC SETUP CURRENT SELECT CODE STA USSC ******************** JSB .TST0,I CALL JSB MSGC,I REPORT DATA CH COMPLETE DEF T.001 POINTER TO MESSAGE LDA ORGSC LOAD COMMAND SC INA CONVERT IT TO DATA SC STA SC SETUP CURRENT SELECT CODE STA USSC ******************** JSB .ZBIO,I GO REPEAT BASIC I/O JSB MSGC,I REPORT CMND CH COMPLETE DEF T.002 POINTER TO MESSAGE CLA STA TST0F CLEAR TEST 0 FLAG JMP TST.0,I EXIT T.001 ASC 09,H025 FOR DATA CH/ T.002 ASC 09,H025 FOR CMND CH/ * * END OF TEST 0 * * TEST 01 INITIAL CLEAR CONTROLLER + UNIT SELECTON * TST01 NOP * * * SUBTEST 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB CLEAR GO CLEAR CONTROLLER * * SUBTEST 2 * LDA .2 STA SUBTS SETUP SUBTEST # * * CHECK UNIT 0 CLA LOAD UNIT# 0 JSB UNICK GO CHECK UNIT * END OF SELECT UNIT 0 * * CHECK UNIT=1 * LDA .1 LOAD UNIT # 1 JSB UNICK GO CHECK UNIT * * END OF SELECT UNIT=1 * * * CHECK UNIT =2 * LDA .2 LOAD UNIT # JSB UNICK GO CHECK UNIT * * END OF SELECT UNIT=2 * * * CHECK UNIT=3 * LDA .3 LOAD UNIT # JSB UNICK GO CHECK UNIT * * END OF SELECT UNIT=3 JMP T0101 GOTO NEXT SECTION * * * UNICK- OUTPUTS MESSAGE IF UNIT * IS ON-LINE OR OFF-LINE. *CALL: ALSO,CHECK UNIT ID IF 13183 * LDA * JSB UNICK * * JSB UNIRD * UNIRD NOP JSB UNISL GO SELECT A UNIT JMP UNIRD,I OFF-LINE RETURN JSB BSRWF BACKSPACE A RECORD JSB SIOR,I READ A RECORD LDA INBUF,I GET CONTENTS OF FIRST WORD CPA T2301 COMPARE UNIT TO RECORD JMP UNIRD,I THEY COMPARE-OK TO EXIT CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT BAD ECHO DEF E125 JMP UNIRD,I EXIT * E125 EQU * ASC 08,E125 ECHO ERROR/ * * * UNIWR-WRITES 100 WORDS USING UNIT # * *CALL: * LDA * JSB UNIWR * UNIWR NOP STA UNIW1 SAVE UNIT # JSB UNISL GO SELECT UNIT JMP UNIWR,I UNIT OFF-LINE EXIT LDA UNIW2 GET UNIT # ADDRESS LDA .1 SINGLE PATTERN SEQUENCE LDB UNIW2 GET POINTER TO UNIT # JSB FILL,I FILL THE OUTPUT BUFFER DEF UNIW3 RETURN ADDRESS DEC 100 BUFFER LENGTH DEF UNIW3 ERROR RETURN UNIW3 EQU * JSB SIOW,I WRITE RECORD JMP UNIWR,I EXIT ROUTINE UNIW2 DEF *+1 UNIW1 NOP UNIT # T2303 NOP UNIT # COUNTER T2301 NOP CURRENT UNIT # * * END OF TEST 23 * * * TEST 24(30) CONTROLLER CHECK FOR MULTI-UNIT OPERATION * * DELETE THIS TEST IF ONLY ONE UNIT ON-LINE ************* * -TWO OR MORE ON-LINE UNITS ARE REQUIRED * TST24 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA UNITS GET # OF UNITS ON-LINE CPA .1 IS THERE ONLY ONE UNIT UP? JMP TST24,I YES-EXIT TEST * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB VARBF FILL OUTPUT BUFFER WITH RANDOM DATA JSB .ALWR,I WRITE OUTPUT BUFFER * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB .ALBS,I BACKSPACE ALL UNITS JSB .ALCP,I COMPARE ALL UNITS(FIRST RECORD) JMP TST24,I EXIT TEST * * SUBROUTINE ALLBS-BACKSPACES ALL ON-LINE * ONE RECORD *CALL: * JSB ALLBS * * ALLBS NOP CLA STA UNITX TEMPORARY UNIT NUMBER ALBS1 EQU * JSB UNISL GO SELECT A UNIT JMP ALBS2 OFF-LINE RETURN JSB BSRWF BACKSPACE THE UNIT ALBS2 EQU * ISZ UNITX INCREMENT UNIT # LDA UNITX LOAD UNIT # CPA .4 IS IT THE LAST UNIT? JMP ALLBS,I YES-EXIT JMP ALBS1 NO-LOOP * * * END OF TEST 24 * * * TEST 25(31) INTER-UNIT COMPATIBILITY (REEL EXCHANGE) * * -TWO OR MORE ON-LINE UNITS8 ARE REQUIRED * -THIS TEST REQUIRES OPERATOR INTERVENTION * * -REEL EXCHANGE TST25 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDA UNITS GET # OF UNITS ON-LINE CPA .1 IS THERE ONLY ONE UNIT UP? JMP TST25,I YES-EXIT TEST LDB SW68 CHECK SWITCH 6,8, AND 12 JSB SWRC,I GO CHECK SWITCH REGISTER JMP TST25,I ON-EXIT TEST * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # JSB VARBF FILL OUTPUT BUFFER WITH RANDOM DATA JSB .ALRW,I REWIND ALL UNITS JSB .ALWR,I WRITE OUTPUT BUFFER T2501 EQU * JSB .ALRW,I REWIND ALL UNITS * OUTPUT REEL EXCHANGE MESSAGE * * SUBTEST # 2 * LDA .2 STA SUBTS SETUP SUBTEST # JSB MSGH,I OUTPUT MESSAGE DEF H126 POINTER TO MESSAGE JMP T2502 CONTINUE H126 EQU * ASC 10,H126 EXCHANGE REELS/ T2502 EQU * * * SUBTEST # 3 * LDA .3 STA SUBTS SETUP SUBTEST # JSB .ALRW,I REWIND ALL UNITS JSB .ALCP,I COMPARE ALL UNITS(FIRST RECORD) * * SUBTEST # 4 * LDA .4 STA SUBTS SETUP SUBTEST # JSB MSGH,I OUTPUT LOOP MESSAGE DEF H127 JMP T2504 EXIT H127 EQU * ASC 12,H127 SET SW 13 TO LOOP/ T2504 EQU * JMP TST25,I EXIT TEST * * END OF TEST 25 * * * TEST 26(32) WRITE RING ENABLE TEST * * -THIS TEST REQUIRES OPERATOR INTERVENTION * TST26 NOP JSB .EXEC,I GO SELECT A TAPE UNIT LDB SW68 CHECK SWITCH 6,8, AND 12 JSB SWRC,I GO CHECK SWITCH REGISTER JMP TST26,I ON-EXIT TEST * OFF-CONTINUE JSB LPREW REWIND UNIT * * SUBTEST # 1 B@< * WORD NOP .LONG NOP STA WORD SAVE WORD CLA STA RDERR CLEAR READ ERROR FLAG STA WRERR CLEAR WRITE ERROR FLAG LDB WCC START THE WRITE JSB OCMMD OUTPUT COMMAND LONG1 STC DATA,C START DATA TRANSFER LONG2 EQU * LON10 LDA WORD LOAD OUTPUT WORD CLB SETUP TIME OUT COUNTER LONG3 SFC DATA IS DATA FLAG CLEAR JMP LONG4 NO-OUTPUT A WORD LIA SW GET SWITCH REGISTER AND SW09 CHECK SWITCH 9 SZA IS IT SET? JMP LON12 YES - TERMINATE RECORD LDA WORD RELOAD THE WORD ISZ B INCREMENT TIME OUT COUNTER JMP LONG3 GO CHECK FLAG JSB DATFG DATA FLAG TIME OUT- REPORT ERROR LON13 EQU * JSB EOTCK CHECK EOT BIT JMP LONG5 YES-EOT BIT SET JSB STATS GECT STATUS STA WRERR SET WRITE ERROR FLAG LONG5 EQU * LON12 CLC DATA,C TERMINATE RECORD JSB FLGWT WAIT FOR COMMAND FLAG JSB ERRCK GO REPORT ANY ERROR FLAGS JSB EOTRW REWIND IF AT EOT JMP .LONG,I EXIT LONG4 EQU * OTA DATA,C LON14 EQU * LIA CMMD GET THE STATUS AND LONG6 CHECK THE DE AND EOT BIT SZA IS IT ZERO? JMP LON13 NO-REPORT ERROR * YES-CONTINUE JMP LON10 GO CHECK DATA FLAG * LONG6 OCT 4073 TEMPORARY MASK * * END OF TEST 28 * * * TEST 29(35) READ ALL ONES RECORD * TST29 NOP JSB .EXEC,I GO SELECT A TAPE UNIT * LDA FG183 SZA IS IT A 13183? JMP TST29,I YES-EXIT TEST * * ALL ONE'S CHECK-READ * * * SUBTEST # 1 * LDA .1 STA SUBTS SETUP SUBTEST # LDA MSKLP JSB BITCK GO CHECK STATUS FOR LP JMP T2901 BIT SET- CONTINUE JSB .RWSL,I BIT RESET-GO BACK SPACE RECORD JMP TST29,I ERROR EXIT T2901 EQU * CCA LOAD WORD TO BE READ JSB LONGR,I GO READ RECORD TO EOT JMP TST29,I EXIT TEST * * SUBROUTINE LONR-READS RECORD TO EOT *CALL * LDA * JSB LONGR,I GO READ RECORD * .LONR NOP STA LOR16 SAVE WORD CLA STA RDERR CLEAR READ ERROR FLAG STA WRERR CLEAR WRITE ERROR FLAG LDB RRF JSB OCMMD OUTPUT COMMAND LOR01 STC DATA,C START DATA TRANSFER LOR02 EQU * CLB SETUP TIME OUT COUNTER LOR03 EQU * SFC DATA IS DATA FLAG CLEAR JMP LOR04 NO-GO GET WORD LIA SW LOAD THE SWITCH REGISTER AND SW09 CHECK SWITCH 9 SZA IS IT SET? JMP LOR14 YES-GO TERMINATE RECORD LDA WORD RELOAD WORD ISZ B INCREMENT TIME OUT COUNTER ; JMP LOR03 YES-GO WAIT FOR NEXT WORD JSB DATFG DATA FLAG TIME OUT- REPORT ERROR LOR12 EQU * JSB EOTCK CHECK EOT BIT JMP LOR14 YES-EOT BIT SET JSB STATS GET STATUS AND MSKIO ISOLATE BITS STA RDERR SET READ ERROR FLAG JSB MS,I ERROR MESSAGE DEF LOR05 RETURN DEF H067 POINTER TO MESSAGE LOR07 NOP BAD WORD LOR16 NOP GOOD WORD LOR05 EQU * CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT DATA TRANSFER ERROR DEF E062 JMP LOR17 GO CHECK FOR READ ERROR LOR14 EQU * CLC DATA,C TERMINATE RECORD JSB FLGWT WAIT FOR COMMAND FLAG LOR17 EQU * JSB ERRCK CHECK READ ERROR FLAGS JSB .RWSL,I SLOW REWIND JMP .LONR,I ERROR RETURN JMP .LONR,I RETURN TO CALLER LOR04 EQU * LIB DATA,C STB LOR07 SAVE THE INPUT DATA CPB LOR16 IS INPUT SAME AS STORED WORD? JMP LOR13 YES-CONTINUE JMP LOR12 NO-GO REPORT ERROR LOR13 EQU * LOR15 EQU * LIA CMMD GET THE STATUS AND LOR06 CHECK THE DE AND EOT BIT SZA IS IT ZERO JMP LOR12 NO-GO REPORT ERROR JMP LOR02 GO CHECK DATE FLAG * LOR06 OCT 4073 TEMPORARY MASK * * * END OF TEST 29 * * * * TEST 30(36) OPERATOR SERVICE ROUTINES * * * BIT 0 = WRITE A TAPE BYTE * * BIT 1 = WRITE COMPUTER WORD * * BIT 2 = COMMAND EXERCISE * * BIT 3 = DMA TRANSFER * * * TST30 NOP * * * BEGIN SWITCH REG SELECTION OF OPERATOR SERVICE ROUTINES ** * JSB .EXEC,I GO SELECT A TAPE UNIT LIA SW SAVE THE SWITCH REGISTER STA INSWR AND SW09 SZA IS SWITCH 9 SET? JMP TST30,I YES-EXIT TEST CCA STA ERSKP SET ERROR MESSAGE SKIP FLAG STA CRCFG SET CRCC SKIP FLAG T3001 EQU * CLA  CLEAR THE SWITCH REGISTER OTA SW JSB CLEAR CLEAR CONTROLLER JSB MSGH,I OUTPUT OPERATOR SERVICE MSG DEF H146 AND HALT LIA SW LOAD SWITCH REGISTER SZA ARE ANY SW BITS SET? JMP T3002 YES-GO CHECK T3054 EQU * LDA INSWR RESTORE THE SWITCH REGISTER OTA SW CLA STA SKPSW CLEAR SKIP SW REG CHECK FLAG STA ERSKP CLEAR ERROR MESSAGE SKIP FLAG JMP TST30,I NO-EXIT TEST T3002 EQU * LDB SW00 CHECK BIT 0 JSB SWRC,I IS IT SET? JMP T3050 YES-GO WRITE A TAPE BYTE LDB SW01 NO-CHECK BIT 1 JSB SWRC,I IS IT SET? JMP T3051 YES-WRITE COMPUTER WORD LDB SW02 NO-CHECK BIT 2 JSB SWRC,I IS IT SET? JMP T3052 YES-GO TO COMMAND EXERCISE LDB SW03 NO-CHECK BIT 3 JSB SWRC,I IS IT SET? JMP T3053 YES-GOTO DMA TRANSFER JMP T3054 NO-EXIT TEST * T3050 EQU * JSB .T303,I WRITE A TAPE BYTE JMP T3001 T3051 EQU * JSB .T304,I WRITE A COMPUTER WORD JMP T3001 T3052 EQU * JSB .T305,I COMMAND EXERCISE JMP T3001 T3053 EQU * JSB .T306,I DO A DMA TRANSFER JMP T3001 * * .T303 DEF T3003 POINTER TO TAPE BYTE .T304 DEF T3004 POINTER TO COMPUTER WORD .T305 DEF T3005 POINTER TO COMMAND EXER. .T306 DEF T3006 POINTER TO DMA TRANSFER * H146 EQU * ASC 11,H146 SELECT OP. SER./ H147 EQU * ASC 09,H147 SELECT BYTE/ * * * * * END OF SWITCH REG SELECTION * SKP ORG PAG12 * SKIP TO NEXT PAGE OF MEMORY ******************************** * H150 EQU * ASC 09,H150 SELECT WORD/ H151 EQU * ASC 10,H151 SELECT COMMAND/ * * * WRITE RECORDS FROM THE SWITCH REGISTER * SPC 1 * (1) THE CHARACTERS WRITTEN ON TAPE ARE DEFINED BY * SWITCHES 0 - 7 OF THE SWITCH REGISTER. * * (2) THE RECORD LENGTHS ARE DETERMINED BY SETTING * SWITCHES 8 - 14 OF THE SWITCH REGISTER. * SW 8 = 2 CHARACTERS * SW 9 = 4 CHARACTERS * SW 10 = 8 CHARACTERS * . * . * . * SW 14 = 128 CHARACTERS * IF SWITCHES 8 - 14 ARE ALL SET, (1), THE RECORD * LENGTH IS 255 CHARACTERS. * IF SWITCHES 8 - 14 ARE ALL RESET, (0), THE RECORD * LENGTH IS LIMITED BY AVAILABLE CORE MEMORY. * * (3) SWITCH 15 TERMINATES THE WRITE PROGRAM AT THE * END OF THE CURRENT RECORD. SPC 1 ******************************************************** T3003 NOP * * WRITE TAPE BYTE FROM SWITCH REQISTER * JSB MSGH,I OUTPUT MESSAGE DEF H147 AND HALT T3049 EQU * LDB SW15 CHECK BIT 15 OF SW JSB SWRC,I IS BIT 15 SET? JMP T3003,I EXIT TO CONTROL SECTION JSB EOTRW NO-CHECK FOR EOT * SHOULD HAVE A BIT 15 CHECK * DURING REWIND FOR ABORT LIA SW LOAD SWITCH AND MK377 GET BITS 7-0 STA T3007 SAVE IT ALF,ALF ROTATE BYTE TO UPPER ADA T3007 SETUP COMPUTER WORD STA T3007 SAVE IT LIA SW AND MK77K GET BITS 8-14 ALF,ALF ROTATE TO BIT 0-7 STA T3008 KEEP WORD COUNT SZA ARE BITS 14-8 ZERO? JMP T3010 GO FILL OUTPUT BUFFER T3011 EQU * LDA BFMAX GET MAX BUFFER STA T3008 SAVE IN WORD COUNT T3010 EQU * LDA .1 ONE WORD PATTERN LDB T3007-1 LOCATION OF BUFFER JSB FILL,I FILL THE OUT PUT BUFFER DEF T3013 RETURN ADDRESS T3008 NOP BUFFER LENGTH DEF T3011 ERROR RETURN DEF *+1 POINTER TO WORD T3007 NOP COMPUTER WORD * OUTPUT BUFFER T3013 EQU * CCA STA SKPSW SET SW REG SKIP FLAG JSB SIOW,I WRITE A RECORD JSB BSRWF BACKSPACE RECORD JSB SIOR,I READ THEs RECORD CLA STA SKPSW CLEAR SW REG CHECK FLAG JMP T3049 GO BACK AND DO IT AGAIN * * * * * WRITE COMPUTER WORD ROUTINE * * * --PROGRAM OPERATION-- * * 1. LOAD SWITCH REGISTER BIT 1 AT HLT 106046 * * 2. LOAD THE SWITCH REGISTER (0-15) WITH THE PATTERN OF * THE WORD TO BE WRITTEN. * * 3. PRESS RUN * * --------------------- * * THE PROGRAM WRITES A 2048 (MAX SIZE) BYTE RECORD, THEN BACK- * SPACES AND READS THE RECORD . * * CHANGING ANY SWITCH ON THE SWITCH REGISTER, BRINGS * THE PROGRAM TO A NORMAL HALT (106046B). * OTHER WISE THE PROGRAM CONTINUES TRANSFERRING RECORDS UN- * TIL AN END-OF-TAPE IS DETECTED, AT WHICH TIME THE TAPE IS * AUTOMATICALLY REWOUND. * SPC 1 ********************************************************* T3004 NOP * * WRITE A COMPUTER WORD * JSB MSGH,I OUTPUT MESSAGE DEF H150 AND HALT T3014 EQU * LIA SW LOAD A WITH SW REG STA T3016 SAVE IT LDA BFMAX GET MAX BUFFER STA T3017 SAVE IT LDA .1 ONE WORD PATTERN LDB T3016-1 POINTER TO COMPUTER WORD JSB FILL,I FILL THE OUTPUT BUFFER DEF T3018 RETURN ADDRESS T3017 NOP BUFFER LENGTH DEF T3001 ERROR RETURN DEF *+1 POINTER TO WORD T3016 NOP COMPUTER WORD T3018 EQU * CCA STA SKPSW SET SW REG SKIP FLAG JSB SIOW,I WRITE A RECORD JSB BSRWF BACKSPACE RECORD JSB SIOR,I READ THE RECORD CLA STA SKPSW CLEAR SW REG CHECK FLAG JSB EOTRW REWIND IF AT BOT LDB FWAM,I GET FIRST WORD IN OUTPUT BUFFER LIA SW GET THE SWITCH REGISTER CONTENTS CPA B HAS THE SWITCH REGISTER CHANGED? JMP T3014 NO-LOOP ON ROUTINE JMP T3004,I YES-EXIT * * * COMMAND EXERCISE ROUTINE * SPC 1 * SW 0 WRITE (WCC) * SW 1  WRITE TAPE MARKS (WFM) * SW 2 READ ONE RECORD FORWARD (RRF) * SW 3 FORWARD SPACE ONE RECORD (FSR) * SW 4 FORWARD SPACE ONE FILE (FSF) * SW 5 CLEAR THE CONTROLLER (CLR) * - - - - - - - - - - - - - - - - - * SW 6 WRITE A GAP (GAP) * SW 7 BACKSPACE ONE RECORD (BSR) * SW 8 BACKSPACE ONE FILE (BSF) * SW 9 REWIND TO LOAD POINT (REW) * SW 10 REWIND AND OFF-LINE (RWO) * SW 11 CLEAR THE CONTROLLER (CLR) * SW 12 ALLOWS APPROX. 10 MS DELAY BETWEEN COMMANDS * SW 13 ALLOWS APPROX. 15 MS DELAY BETWEEN COMMANDS * SW 14 ALLOWS APPROX. 30 MS DELAY BETWEEN COMMANDS * SW 15 TERMINATES OPERATION * * ANY OF THE FIRST SIX COMMANDS CAN BE COMBINED WITH ANY * OF THE LAST SIX, OR ANY OF THE TWELVE CAN BE USED ALONE. SPC 1 ********************************************************* * * COMMAND EXERCISE * T3005 NOP JSB MSGH,I OUTPUT MESSAGE DEF H151 AND HALT T3021 EQU * LDB SW15 CHECK SW BIT 15 JSB SWRC,I IS IT SET? JMP T3022 CLEAR ROUTINE JSB EOTRW RW IF AT EOT * BEGIN COMMAND DECODER LDB SW00 CHECK BIT 0 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3023 NO-GO TRY NEXT BIT LDA WCC WRITE JSB OUTCD OUTPUT IT T3023 EQU * LDB SW01 CHECK BIT 1 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3024 NO-GO TRY NEXT BIT LDA WFM WRITE FILE MARK JSB OUTCD OUTPUT IT T3024 EQU * LDB SW02 CHECK BIT 2 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3025 NO-GO TRY NEXT BIT LDA RRF READ A RECORD JSB OUTCD OUTPUT IT T3025 EQU * LDB SW03 CHECK BIT 3 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3026 NO-G^nO TRY NEXT BIT LDA FSR FORWARD SPACE FILE JSB OUTCD OUTPUT IT T3026 EQU * LDB SW04 CHECK BIT 4 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3027 NO-GO TRY NEXT BIT LDA FSF FORWARD SPACE FILE JSB OUTCD OUTPUT IT T3027 EQU * LDB SW05 CHECK BIT 5 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3028 NO-GO TRY NEXT BIT LDA CLR CLEAR JSB OUTCD OUTPUT IT T3028 EQU * LDB SW06 CHECK BIT 6 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3030 NO-GO TRY NEXT BIT LDA GAP GAP JSB OUTCD OUTPUT IT T3030 EQU * LDB SW07 CHECK BIT 7 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3031 NO-GO TRY NEXT BIT LDA BSR BACKSPACE RECORD JSB OUTCD OUTPUT IT T3031 EQU * LDB SW08 CHECK BIT 8 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3032 NO-GO OUTPUT COMMAND LDA BSF BACKSPACE FILE JSB OUTCD OUTPUT IT T3032 EQU * LDB SW09 CHECK BIT 9 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3033 NO-GO TRY NEXT BIT LDA REW REWIND JSB OUTCD OUTPUT IT T3033 EQU * LDB SW10 CHECK BIT 10 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3034 NO-GO TRY NEXT BIT LDA RWO REWIND OFF-LINE JSB OUTCD OUTPUT IT T3034 EQU * LDB SW11 CHECK BIT 11 JSB SWRC,I IS IT SET? JMP *+2 YES-GO OUTPUT COMMAND JMP T3035 NO-GO TRY NEXT BIT LDA CLR CLEAR JSB OUTCD OUTPUT IT. T3035 EQU * JMP T3021 LOOP T3022 EQU * JSB CLEAR CLEAR CONTROLLER JMP T3005,I EXIT * MB@<* SUBROUTINE OUTCD (OUTPUT A COMMAND) * OUTCD NOP STA AREG SAVE A REGISTER LDB AREG LOAD COMMAND INTO B REGISTER JSB OCMMD OUTPUT A COMMAND IN B LIA SW LOAD A WITH SW ALF ROTATE BITS 15-12 TO 0-4 AND .7 MASK OFF BITS 3-0 SZA,RSS IS IT ZERO? JMP OTCD1 YES-SKIP TIMER LDB SW14 CHECK BIT 14 JSB SWRC,I IS IT SET? JMP *+2 YES-WAIT 30 MILLI-SEC JMP OTCD2 NO-GOTO NEXT BIT LDA .30D JSB TMRR,I WAIT 30 MILLI-SEC JMP OTCD3 OTCD2 EQU * LDB SW13 CHECK BIT 13 JSB SWRC,I IT SET? JMP *+2 YES-WAIT 15 MILLI-SEC JMP OTCD4 NO-GOTO NEXT BIT B <L 13181-18010 1629 S 0146 13181/13183 MAG TAPE DG              H0101 8 LDA .17 JSB TMRR,I WAIT 15 MILLISEC JMP OTCD3 OTCD4 EQU * LDB SW12 CHECK BIT 12 JSB SWRC,I IS IT SET? JMP *+2 YES-WAIT 10 MS JMP OTCD1 GO-WAIT FOR FLAG LDA .10D JSB TMRR,I WAIT 10 MILLISEC OTCD3 EQU * LDA MSKRW JSB BITCK IS THE UNIT REWINDING? JMP *-2 YES-GO WAIT FOR IT TO CLEAR JMP OUTCD,I EXIT OTCD1 EQU * OTCD5 SFC CMMD WAIT FOR COMMAND FLAG JMP OTCD3 FLAG SET-EXIT LDB SW15 FLAG NOT SET JSB SWRC,I IS BIT 15 SET? JMP T3022 YES ABORT JMP OTCD5 NO-GO CHECK FLAG AGAIN * .10D DEC 10 .30D DEC 30 * * DMA TRANSFER ROUTINE * * * --PROGRAM OPERATION-- * * 1. LOAD SWITCH REGISTER BIT 3 * * 2. LOAD THE SWITCH REGISTER (0-7) WITH THE PATTERN OF * THE BYTE TO BE WRITTEN. * * 3. PRESS RUN * * --------------------- * * THE PROGRAM WRITES A 2048(MAXIMUM) BYTE RECORD, THEN BACK- * SPACES AND READS THE RECORD . * * SETTING SWITCH 15 TO ONE ON THE SWITCH REGISTER, BRINGS * THE PROGRAM TO A NORMAL HALT (106046). * OTHER WISE THE PROGRAM CONTINUES TRANSFERRING RECORDS UN- * TIL AN END-OF-TAPE IS DETECTED, AT WHICH TIME THE TAPE IS * AUTOMATICALLY REWOUND. * SPC 1 ********************************************************* * * * DMA TRANSFER * T3006 NOP JSB MSGH,I OUTPUT MESSAGE DEF H152 AND HALT JMP T3036 SKIP OVER MESSAGE H152 EQU * ASC 11,H152 SELECT DMA BYTE/ * T3036 EQU * LDB SW15 CHECK BIT 15 JSB SWRC,I IS IT SET? JMP T3006,I YES-EXIT TO CONTROL LDA DMAFG CHECK IF COMPUTER HAS DMA SZA,RSS IS IT ZERO? JMP T3006,I YES- NO DMA LDA FGDMA GET DMA FLAG STA T3047 SAVE IT FOR EXIT SZA WAS THE FLAG SET? JMP T3045 YES-GO USE THAT CHANNEL LDA .2 5 NO - SETUP DMA CH 2 STA FGDMA GO SET FLAG T3045 EQU * LDB SW15 JSB SWRC,I IS SWITCH 15 SET FOR ABORT JMP T3048 YES-GO TO EXIT ROUTINE LIA SW LOAD A WITH SWITCH REG AND MK377 GET BITS 7-0 STA T3037 SAVE IT ALF,ALF ROTATE BYTE TO UPPER ADA T3037 SETUP COMPUTER WORD STA T3037 SAVE IT LDA BFMAX GET MAX BUFFER STA T3038 SAVE IT LDA .1 ONE WORD PATTERN LDB T3037-1 POINTER TO COMPUTER WORD JSB FILL,I FILL THE OUTPUT BUFFER DEF T3039 RETURN ADDRESS T3038 NOP BUFFER LENGTH DEF T3001 ERROR RETURN DEF *+1 POINTER TO WORD T3037 NOP COMPUTER WORD T3039 EQU * CONTINUE CCA STA SKPSW SET SW REG SKIP FLAG JSB SIOW,I WRITE A RECORD JSB BSRWF BACKSPACE RECORD JSB SIOR,I READ THE RECORD CLA STA SKPSW CLEAR SW REG CHECK FLAG JSB EOTRW CHECK FOR EOT JMP T3045 LOOP * T3048 EQU * LDA T3047 LOAD OLD DMA FLAG STA FGDMA RESTORE DMA FLAG JMP T3006,I EXIT ROUTINE * T3047 NOP SAVE FOR OLD DMA FLAG * * * * END OF TEST 30 * * * * * STANDARD I/O WRITE TRANSFER ROUTINE * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE OUTPUT BUFFER'S S.A.='FWA' * SIOTW NOP LDA .M3 STA SIOW7 SETUP RECORD COUNTER LDA .M10 SETUP GAP COUNTER STA SIOW8 CLA STA SIOW9 CLEAR REWRITE COUNTER STA SIOW1 CLEAR TOTAL # OF REWRITES STA ERRFG CLEAR ERROR MESSAGE FLAG * JSB STATS GET STATUS AND MSKFP IS FILE PROTECTED (NO RING)? SZA,RSS JMP SIOW4 NO-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I YES - REPORT ERROR DEF E042 JMP SIOW4 CONTINUE E042 EQU * ASC 10,E042 NO WRITE RING/ SIOW4 EQU * LDA FGDMA CHECK DMA I/O FLAG SZA IS IT ZERO? JMP SIOW2 YES-GOTO DMA WRITE JSB .WRIT WRITE THE RECORD JMP SIOW3 SKIP OVER DMA ROUTINE SIOW2 EQU * JSB DMAWT,I WRITE RECORD UNDER DMA SIOW3 EQU * LDA FWAM BUFFER ADDRESS LDB BUFLG BUFFER LENGTH JSB SIOCR GO COMPARE CRCC + LRCC LDA WRERR LOAD WRITE ERROR FLAG SZA IS THERE A WRITE ERROR? JMP SIOW5 YES-GOTO REWRITE ROUTINE SIOW6 EQU * LDA SIOW1 LOAD TOTAL # OF REWRITES SZA,RSS IS IT ZERO? JMP SIOW. YES-OK TO CONTINUE JSB MS,I NO-REPORT # OF REWRITES DEF SIOW. RETURN DEF H057 POINTER TO MESSAGE SIOW1 NOP REWRITES COUNTER SIOW. EQU * JMP SIOTW,I EXIT * SIOW5 EQU * LDA ERRFG LOAD SKIP ERROR MSG FLAG CPA WRERR IS IT = TO WRITE ERROR FLAG? JMP SIW10 YES-SKIP ERROR MESSAGE CLB NO-SETUP EXPECTED STATUS JSB ERMS,I REPORT WRITE ERROR DEF E065 LDA WRERR LOAD CURRENT WRITE ERROR STA ERRFG STORE IT IN SKIP-ERROR MSG SIW10 EQU * LDB SW09 CHECK SWITCH 9 JSB SWRC,I IS IT SET? JMP SIOW6 YES-EXIT JSB BSRWF BACKSPACE THE RECORD ISZ SIOW1 INCREMENT TOTAL # OF REWRITES ISZ SIOW9 INCREMENT REWRITE COUNTER ISZ SIOW7 IS THIS THE 3RD TIME? JMP SIOW4 NO-GO TRY AGAIN LDA .M3 YES-RESET RECORD COUNTER STA SIOW7 JSB WTGAP GAP OVER BAD SPOT ISZ SIOW8 INCREMENT GAP COUNTER JMP SIOW4 LOOP IF NOT THE 10TH TIME JMP SIOW6 ERROR EXIT * H057 EQU * ASC 09,H057 # REWRITE(S)/ * SIOW9 NOP REWRITE COUNTER SIOW8 NOP GAP COUNTER SIOW7 NOP 3 X RECORD COUNTER ERRFG NOP SKIP-ERROR MESSAGE FLAG * * =* COMPARES CRCC FROM TAPE WITH CRCC FROM BUFFER *CALL: * LDA * LDB * JSB SIOCR * SIOCR NOP STA AREG SAVE A AND B REG. STB BREG LDA ERRFG LOAD ERROR MESSAGE SKIP FLAG SZA IS IT ZERO? JMP SIOCR,I NO-SKIP CRCC CHECK LDB CRCFG LOAD CRCC SKIP FLAG SZB IS IT SET? JMP SIOCR,I YES-EXIT LDB BREG NO-CONTINUE SZB,RSS IS BUFFER LENGTH ZERO? JMP SIOCR,I YES-EXIT LDA FG183 IS IT A 13183? SZA JMP SIOCR,I YES-EXIT LDA AREG NO-LOAD A AND B REG. LDB BREG * JSB .CRCC,I GENERATES CRCC FROM BUFFER STA SIO26 SAVE IT SIO27 EQU * LIA DATA LOAD CRCC FROM TAPE CPA SIO26 COMPARE TAPE AND BUFFER CRCC JMP SIO29 THEY COMPARE-CONTINUE CLB SETUP EXPECTED STATUS JSB ERMS,I FAILED-REPORT ERROR DEF E141 JMP SIO29 E141 EQU * ASC 08,E141 CRCC ERROR/ SIO29 EQU * LIA DATA CHECK LRCC AND MK377 ISOLATE LOWER BYTE SZA,RSS IS LRCC RESIDUAL ZERO? JMP SIO28 YES-EXIT CLB SETUP EXPECTED STATUS JSB ERMS,I NO-REPORT ERROR DEF E135 JMP SIO28 E135 EQU * ASC 08,E135 LRCC ERROR/ SIO28 EQU * JMP SIOCR,I EXIT * SIO26 NOP GENERATED CRCC * * * STANDARD I/O READ TRANSFER ROUTINE * * * CALL: * THE INPUT BUFFER'S S.A. IS IN BWAL THEN ADD 1='INBUF' * THE RECORD WORD LENGTH IS ALREADY LOADED IN "BUFLG" * SIOTR NOP LDA .M10 STA SIO31 SETUP MAXIMUM REREADS COUNTER CLA STA SIO32 CLEAR REREADS COUNTER STA ERRFG CLEAR ERROR MESSAGE FLAG LDB FWAM GET FWAM ADB BFMAX COMPUTE LWA ADDRESS SIO34 EQU * STB INBUF STORE INPUT BUFFER ADDRESS SIO30 EQU * LDA FGDMA CHECK DMA I/O FL˶AG SZA IS IT ZERO? JMP SIO14 YES-GOTO DMA READ JSB .READ READ THE RECORD JMP SIO15 SKIP OVER DMA ROUTINE SIO14 EQU * JSB DMARD,I READ RECORD UNDER DMA SIO15 EQU * * ALLOWS SKIP OF CRCC FOR EOF LDA MSKEF JSB BITCK WAS AN EOF READ? JMP SIO35 YES-SKIP OVER CRCC LDA INBUF BUFFER ADDRESS LDB INBFL BUFFER LENGTH JSB SIOCR GO COMPARE CRCC + LRCC SIO02 EQU * LDB SW09 CHECK SWITCH 9 FOR ABORT JSB SWRC,I IS IT SET? JMP SIO04 YES-EXIT LDA RDERR SZA,RSS IS READ ERROR FLAG SET? JMP SIO33 NO-CONTINUE LDA ERRFG LOAD SKIP ERROR MSG FLAG CPA RDERR IS IT = TO READ ERROR FLAG? JMP SIO36 YES-SKIP ERROR MESSAGE CLB NO-SETUP EXPECTED STATUS JSB ERMS,I REPORT READ ERROR DEF E066 LDA RDERR LOAD CURRENT WRITE ERROR STA ERRFG STORE IT IN SKIP-ERROR MSG SIO36 EQU * JSB BSRWF YES-BACKSPACE RECORD ISZ SIO32 INCREMENT REREAD COUNTER ISZ SIO31 IS THIS THE LAST TIME? JMP SIO30 NO-DO IT AGAIN JSB FSRWF SPACE OVER BAD RECORD JMP SIO33 ERROR EXIT H060 EQU * ASC 09,H060 # REREAD(S)/ * SIO31 NOP MAXIMUM REREADS COUNTER * SIO33 EQU * LDA SIO32 LOAD REREAD COUNTER SZA,RSS IS IT ZERO? JMP SIO35 YES-EXIT JSB MS,I NO-REPORT # OF REREADS DEF SIO35 RETURN DEF H060 POINTER TO MESSAGE SIO32 NOP REREAD COUNTER SIO35 EQU * SIO04 EQU * YES-CONTINUE JMP SIOTR,I EXIT * * * NON-DMA WRITE DRIVER * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE OUTPUT BUFFER'S S.A.='FWA' * .WRIT NOP CLA STA WRERR CLEAR WRITE ERROR FLAG LDB FWAM SETUP FOR OUTPUT BUFFER ADDRESS LDA BUFLG GET LENGTH ADA B SETUP LWA +1 OF BUFFER STA COUNT SET THE WORD COUNTER LDB WCC START THE WRITE JSB OCMMD LDB FWAM .WR01 STC DATA,C SET THE DATA TRANSFER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP .WR12 NO-CONTINUE IN NON-INTERRUPT JSB LDINT,I LOAD ERROR MESSAGES INTO TRAP CELLS LDA CMD SETUP FOR COMMAND CHANNEL JSB INTJP,I INTERRUPT DEF TCCMD INTERRUPT BASE PAGE LINK DEF .WR11 POINTER TO INTERRUPT JMP LDA DTA SETUP FOR DATA CHANNEL JSB INTJB,I INTERRUPT SERVICE ROUTINE DEF TCDAT INTERRUPT BASE PAGE LINK DEF .WR13 POINTER TO DATA TRANSFER ROUTINE LDB FWAM LOAD BUFFER ADDRESS JMP .WR15 GO WAIT FOR INTERRUPTS * .WR12 EQU * NON-INTERRUPT CONTINUATION MORWT CLA CLEAR TIME OUT COUNTER .WR02 SFS DATA IS DATA FLAG SET JMP .WR08 NO-GO WAIT FOR FLAG LDA B,I LOAD A WITH OUTPUT WORD .WR04 OTA DATA,C WRITE THE WORD INB ADVANCE THE BUFFER POINTER CPB COUNT IS THIS THE LWA OF THE BUFFER? JMP .WR05 YES-GO TO END OF RECORD ROUTINE JMP MORWT NO- GO GET NEXT WORD .WR08 EQU * WAIT FOR DATA FLAG LOOP .WR06 EQU * SFC CMMD IS THE COMMAND FLAG SET? JMP .WR11 YES-GO REPORT ERROR INA,SZA INCREMENT TIME OUT COUNTER JMP .WR02 NOT ZERO-GO CHECK DATA FLAG .WR10 EQU * TIME OUT-EXIT JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT DATA FLAG LOST .WR05 CLC DATA,C NORMAL END OF RECORD JSB FLGWT WAIT FOR THE OPERATION TO FINISH JSB LDINT,I LOAD TRAP CELLS WITH ERROR MSG JSB STATS GET STATUS AND MSKIO CHECK FOR PARITY AND DATA ERRORS SZA,RSS IS IT NON ZERO? JMP .WR07 NO-STATUS OK-CONTINUE WRITE LDA STATU GET STATUS STA WRERR YES-SAVE STATUS .WR07 EQU * JMP .WRIT,I EXIT .WR11 EQU * JSB CLEAR CLEAR CONTROLLER JSB CMDFG GO REPORT ERROR JMP .WR07 EXIT * * INTERRUPT-DATA TRANSFER ROUTINE .WR13 NOP LDA B,I .WR17 EQU * OTA DATA,C OUTPUT DATA WORD INB CPB COUNT IS IT THE LAST WORD? JMP .WR05 YES-EXIT THRU NORMAL END CLA CLEAR TIME OUT COUNTER JMP .WR13,I EXIT * * INTERRUPT WAIT ROUTINE .WR15 EQU * CLA CLEAR TIME OUT COUNTER .WR16 EQU * INA,SZA IS THE DATA TIME-OUT COUNTER=0? JMP .WR16 NO- WAIT FOR INTERRUPT JMP .WR10 YES-REPORT DATA FLAG TIME OUT ERROR * * * CMDFG-REPORTS SPURIOUS COMMAND FLAG * CMDFG NOP CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT COMMAND FLAG SET DEF E133 JMP CMDFG,I EXIT * E133 EQU * ASC 09,E133 COMMAND FLAG/ * * * * NON-DMA READ DRIVER * * * CALL: * THE RECORD WORD LENGTH='BUFLG' * THE INPUT BUFFER S.A.='INBUF' * .READ NOP JSB .CLBF,I CLEAR INPUT BUFFER AREA CLA STA RDERR CLEAR READ ERROR FLAG STA INBFL CLEAR INPUT BUFFER LENGTH LDA BFMAX YES-LOAD MAX BUFFER SIZE ADA INBUF COMPUTE LWA OF BUFFER STA .RDCT STORE IT IN READ COUNTER LDB RD10,I START THE READ JSB OCMMD .RD01 STC DATA,C START THE DATA TRANSFER LDA FGINT LOAD INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP .RD15 NO-CONTINUE IN NON-INTERRUPT JSB LDINT,I LOAD ERROR MESSAGES INTO TRAP CELLS LDA CMD SETUP FOR COMMAND CHANNEL JSB INTJP,I INTERRUPT DEF TCCMD INTERRUPT BASE PAGE LINK DEF .RD05 POINTER TO INTERRUPT JMP LDA DTA SETUP FOR DATA CHANNEL JSB INTJB,I INTERRUPT SERVICE ROUTINE DEF TCDAT INTERRUPT BASE PAGE LINK gn DEF .RD09 POINTER TO DATA TRANSFER ROUTINE LDB INBUF LOAD BUFFER ADDRESS JMP .RD16 GO WAIT FOR INTERRUPTS * .RD15 EQU * NON-INTERRUPT CONTINUATION * LDB INBUF GET INPUT BUFFER ADDRESS MORED CLA .RD02 SFS DATA WAIT FOR DATA FLAG JMP .RD08 FLAG CLEAR-GOTO WAIT LOOP .RD03 LIA DATA,C LOAD DATA WORD STA B,I STORE WORD IN BUFFER INB ADVANCE THE BUFFER POINTER CPB .RDCT IS IT LWA IN BUFFER? JMP .RD04 YES-GO TO END OF RECORD JMP MORED NO-GO GET NEXT WORD .RD08 EQU * CHECK FOR DATA FLAG TIME OUT .RD06 EQU * SFC CMMD IS COMMAND FLAG SET? JMP .RD05 YES-GO TERMINATE RECORD INA,SZA INCREMENT AND CHECK FOR ZERO JMP .RD02 NO TIME OUT-GO CHECK FLAG AGAIN * YES- TIME OUT EXIT .RD13 EQU * STB .RDTP SAVE LWA OF BUFFER JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT DATA FLAG LOST JMP .RD17 GO COMPUTE BUFFER LENGTH .RD04 EQU * CLC DATA,C END OF RECORD STB .RDTP SAVE LWA OF BUFFER JSB FLGWT WAIT FOR THE OPERATION TO FINISH .RD05 EQU * STB .RDTP SAVE LWA OF BUFFER .RD17 EQU * JSB LDINT,I PUT ERROR MSG IN TRAP CELLS LDA MSKEF JSB BITCK IS EF BIT SET? JMP .RD07 YES-JUMP OVER DATA ERROR CHECK JSB STATS GET STATUS AND MSKIO CHECK FOR DATA ERRORS SZA,RSS IS IT NON ZERO? JMP .RD07 NO- STATUS OK-CONTINUE READ LDA STATU GET STATUS STA RDERR YES-SAVE STATUS .RD07 EQU * LDB .RDTP GET LWA OF BUFFER LDA INBUF GET FWA OF BUFFER CMA,INA MAKE IT NEGATIVE ADA B COMPUTE BUFFER LENGTH STA INBFL SAVE INPUT BUFFER LENGTH JMP .READ,I * RD10 EQU * DEF RRF READ COMMAND ADDRESS * * DATA TRANSFER ROUTINE FOR INTERRUPT * z .RD09 NOP .RD14 EQU * LIA DATA,C LOAD IN THE DATA STA B,I STORE IT IN THE BUFFER* INB INCREMENT BUFFER POINTER CPB .RDCT IS RECORD LARGER THAN AVAILABLE CORE? JMP .RD04 YES-EXIT RECORD CLA NO-RESET DATA FLAG TIME OUT COUNTER. JMP .RD09,I GO WAIT FOR NEXT INTERRUPT * * WAIT FOR INTERRUPT ROUTINE * .RD16 EQU * CLA CLEAR DATA FLAG TIME OUT COUNTER .RD12 EQU * INA,SZA IS IT A TIME OUT? JMP .RD12 NO-WAIT FOR INTERRUPT JMP .RD13 YES-GO TERMINATE READ * * * NON-ERROR MESSAGES REPORTING * * CALLING SEQUENCE: * JSB MSG (MS,I) * DEF RTN * DEF * NOP * . * RTN EQU * * MSG NOP LDA ERSKP CKECK ERROR MSG SKIP FLAG SZA IS IT SET? JMP MSGEX YES-EXIT LDB SW10 CHECK IF SUPRESSED JSB SWRC,I JMP MSGEX YES LDA MSG NO - OUTPUT MESSAGE JSB OPMSG OUTPUT MESSAGE MSGEX LDA MSG,I GET RETURN ADDRESS JMP A,I RETURN TO CALLER * SKP OPMSG NOP ENTRY TO OUTPUT A MESSAGE INA LDB A,I GET FORMAT ADDRESS INA STA NUA SAVE NUMBER ADDRESS STB FPTA SAVE FORMAT STARTING ADDRESS SZB,RSS IS THERE A MESSAGE JMP OPMSG,I NO CLA,CLE SLOW OUTPUT DEVICE MSGA LDB FPTA RETRIEVE MESSAGE JSB FMTR2,I START FORMAT MSGL0 SZA,RSS IS THERE ANY NUMBERS REQUESTED JMP OPMSG,I NO LDB NUA,I YES GET NUMBER CCA JSB FMTR2,I OUTPUT IT ISZ NUA MOVE TO NEXT NUMBER JMP MSGL0 NUA NOP FPTA NOP * * * DMA READ DRIVER *CALL: * JSB DMARD,I HIGH CORE CALL * JSB .DMRD LOW CORE CALL * THE RECORD WORD LENGTH~='BUFLG' * THE INPUT BUFFER S.A. ='INBUF' * N.B. IF BUFFER LENGTH IS ZERO, LENGTH IS SET TO MAX BUFFER * .DMRD NOP JSB .CLBF,I CLEAR INPUT BUFFER AREA CLA STA RDERR CLEAR READ ERROR FLAG LDA FGDMA FETCH CHANNEL # STA .DMR1 SETUP CHANNEL NUMBER LDA INBUF GET INPUT BUFFER ADDRESS ADA ..1MG SETUP BUFFER FOR INPUT FROM DMA STA .DMR2 LDA INBFL LOAD INPUT BUFFER LENGTH CPA BUFLG IS IT PRESET TO OUTPUT BUFFER LENGTH? JMP *+2 YES-READ IN ONLY BUFLG AMOUNT LDA BFMAX SET BUFFER LENGTH TO MAXIMUM STA .DMR3 CLA STA INBFL CLEAR INPUT BUFFER LENGTH JSB .DMUP,I GO TO DMA READ ROUTINE .DMR1 NOP CHANNEL NUMBER .DMR2 NOP BUFFER ADDRESS .DMR3 NOP BUFFER LENGTH JMP .DMR5 ERROR RETURN .DMR4 EQU * JMP .DMRD,I EXIT .DMR5 EQU * JSB STATS GET STATUS STA RDERR SET READ ERROR FLAG JMP .DMR4 GOTO EXIT ROUTINE * * * DMA WRITE DRIVER *CALL: * JSB DMAWT,I HIGH CORE CALL * JSB .DMWT LOW CORE CALL * * * THE RECORD WORD LENGTH ='BUFLG' * THE OUTPUT BUFFER'S S.A='FWA' * .DMWT NOP CLA STA WRERR CLEAR WRITE ERROR FLAG LDA FGDMA FETCH CHANNEL # STA .DMW1 SETUP CHANNEL NUMBER LDA FWAM GET INPUT BUFFER ADDRESS STA .DMW2 LDA BUFLG GET BUFFER LENGTH STA .DMW3 JSB .DMUP,I GOTO DMA WRITE ROUTINE .DMW1 NOP CHANNEL NUMBER .DMW2 NOP BUFFER ADDRESS .DMW3 NOP BUFFER LENGTH JMP .DMW5 ERROR RETURN .DMW4 EQU * JMP .DMWT,I EXIT .DMW5 EQU * JSB STATS GET STATUS STA WRERR SET WRITE ERROR FLAG JMP .DMW4 * * * DMAUP- SETUP DMA FOR READ OR WRITE * NOTE INTERRUPTS ARE NOT USED *CALL: * B@

* P+2 * P+3 * P+4 * P+5 * DMAUP NOP LDA DMAUP,I GET CHANNEL # STA CHNUM LDA FGINT GET INTERRUPT FLAG SZA,RSS IS IT ZERO? JMP DMP23 YES-JUMP OVER TRAP CELL SETUP LDA CMD GET SELECT FOR TRAP CELL JSB INTJP,I SETUP JMP IN TRAP CELL DEF TCCMD BASE PAGE LINK DEF DMP20 DESTINATION OF JMP LDA DTA GET SELECT CODE FOR TRAP CELL JSB INTJP,I SETUP JMP IN TRAP CELL DEF TCDAT BASE PAGE LINK DEF DMP10 DESTINATION OF JMP LDA CHNUM GET DMA CHANNEL # ADA .4 CPA .7 IS IT DMA CH 3? JMP DMP22 YES-GO SET IT UP JSB INTJP,I SETUP TRAP CELL FOR DMA DEF TCDA1 INTERRUPT BASE PAGE LINK DEF DMP11 POINTER TO DMA COMPLETION JMP DMP23 JUMP OVER CH 3 SETUP DMP22 EQU * JSB INTJP,I SETUP TRAP CELL FOR DMA DEF TCDA2 INTERRUPT BASE PAGE LINK DEF DMP11 POINTER TO DMA COMPLETION DMP23 EQU * LDA DMP02 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP02 REPLACE DMA COMMAND LDA DMP03 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP03 REPLACE DMA COMMAND STA DMP05 REPLACE DMA COMMAND STA DMP12 REPLACE DMA COMMAND LDA DMP04 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP04 REPLACE DMA COMMAND LDA DMP13 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP13 REPLACE DMA COMMAND STA DMP14 REPLACE DMA COMMAND OB =M 13181-18011 1629 S 0146 13181/13183 MAG TAPE DG              H0101 9 LDA CHNUM GET CHANNEL # ADA .4 ADD 4 TO IT STA CHNUM SAVE NEW # LDA DMP01 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP01 REPLACE DMA COMMAND LDA DMP10 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP10 REPLACE DMA COMMAND LDA DMP11 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA DMP11 REPLACE DMA COMMAND LDA WTDM2 LOAD DMA COMMAND JSB SETCH ADD NEW CHANNEL # STA WTDM2 REPLACE DMA COMMAND * END OF DMA INITALIZATION * ISZ DMAUP ADJUST TO START ADDRESS LDA DMAUP,I GET STARTING ADDRESS STA DMUP1 SAVE IT ISZ DMAUP LDA DMAUP,I GET WORD COUNT SZA,RSS IS IT ZERO? LDA BFMAX YES-LOAD MAXIMUM BUFFER SIZE STA DMPW SAVE WORD COUNT CMA,INA MAKE IT NEGATIVE STA DMPCT SAVE IT ISZ DMAUP ADJUST RETURN FOR POSSIBLE ERROR LDA CWDMA GET DMA CONTROL WORD DMP01 OTA CHAN+4 OUTPUT CONTROL WORD DMP02 CLC CHAN SETUP THE DMA BUFFER ADDRESS LDA DMUP1 GET BUFFER ADDRESS DMP03 OTA CHAN OUTPUT THE ADDRESS TO DMA DMP04 STC CHAN SETUP THE DMA WORD COUNT * CHECK FOR DMA * CCA CHECK FOR DMA DMP12 OTA CHAN OUTPUT MASK DMP13 LIB CHAN LOAD MASK COMPLEMENT SZB NO DMA IF B=0 JMP DMP17 YES-CONTINUE JSB CLEAR CLEAR CONTROLLER JSB ERMS,I REPORT NO DMA DEF E157 POINTER TO MESSAGE JMP DMAUP,I ABORT-ERROR EXIT E157 EQU * ASC 06,E157 NO DMA/ DMP17 EQU * CMB PATCH FOR 2114/15/16 DMA STB DMASK SAVE IT * END OF DMA CHECK LDA DMPCT GET BUFFER LENGTH DMP05 OTA CHAN OUTPUT NEG WORD COUNT TO DMA * * DMA SETUP COMPLETE * SETUP FOR A READ OR WRITE LDA ..1MG LOAD BIT 15 MASK LDB DMUP1 GET BUFFER STARTING ADDRESS AND B IS BIT 15 SET? SZA,RSS JMP DMP06 NO-SETUP WRITE LDA .RRF YES-SETUP READ JMP DMP07 GOTO READ ROUTINE DMP06 EQU * LDA .WCC SETUP WRITE INSTRUCTION DMP07 EQU * ADA .LDB STA DMP08 STORE IT DMP08 LDB RRF LOAD READ/OR WRITE COMMAND JSB OCMMD OUTPUT READ COMMAND DMP09 STC DATA,C SET THE DATA TRANSFER DMP10 STC CHAN+4,C START DMA LDA DTA GET SELECT CODE OF TRAP CELL JSB INTJB,I LOAD TRAP CELL WITH JSB DEF TCDAT BASE PAGE LINK DEF .DATI DESTINATION OF JSB JSB WTDMA WAIT FOR DMA TRANSFER DMP11 CLC CHAN+4,C TURN OFF DMA JSB FLGWT WAIT FOR COMMAND FLAG DMP20 EQU * JSB CLRCH CLEAR ALL FLAGS JSB LDINT,I FILL TRAP CELL WITH ERROR MSG DMP14 LIB CHAN LOAD DMA WORD COUNT SZB,RSS IS IT ZERO? JMP DMP15 YES-DMA COMPLETE ADB DMASK ADB DMPW NO-COMPUTE WORD COUNT STB DMPW SAVE WORD COUNT DMP15 EQU * LDA DMPW STA INBFL SAVE INPUT BUFFER LENGTH LDA MSKEF JSB BITCK IS EOF BIT SET? JMP DMP19 YES-EXIT JSB STATS GET STATUS AND MSKIO ISOLATE I/O ERROR BITS SZA ANY I/O ERRORS? JMP DMAUP,I YES-ERROR RETURN DMP19 EQU * ISZ DMAUP OK-GO TO NORMAL RETURN JMP DMAUP,I EXIT * DMP24 EQU * JSB CLEAR CLEAR CONTROLLER JSB DATFG REPORT NO DATA FLAG JMP DMAUP,I ERROR EXIT * ..1MG EQU MSKDN CHAN EQU 2 DMA CHANNEL SET TO DMA CHANNEL 1 CWDMA EQU SW13 CHNUM NOP 1 OR 2 CHANNEL DMUP1 NOP BUFFER STARTING ADDRESS DMPCT NOP DMA WORD COUNT DMPW NOP DMA WORD COUNT (POSITIVE) MSKLS OCT 177770 MASK OFF LSD * * WTDMA_WAITS FOR DMA FLAG AND * STORES THE TeRANSFER TIME IN DTIME *CALL: * JSB WTDMA * * WTDMA NOP CLA SET UP MILLI-SEC COUNTER STA DTIME CLEAR TRANSFER TIME COUNTER LDB .ME3 SETUP TIME OUT COUNTER FOR 1 SEC. STB WTDM1 WTDM2 EQU * SFC CHAN+4 IS DMA FLAG SET? JMP WTDM3 YES-EXIT WTDM4 EQU * SFC CMMD IS THE COMMAND FLAG SET? JMP DMP20 YES-EXIT LDA .1 NO-CHECK FOR TIME OUT JSB TMRR,I GO WAIT FOR 1 MILLI-SEC ISZ DTIME INCREMENT TIME TRANSFER COUNT ISZ WTDM1 INCREMENT TIME OUT COUNTER JMP WTDM2 NO TIME OUT-GO CHECK FLAG JSB CLEAR TIME OUT-CLEAR CONTROLLER JSB ERMS,I REPORT DMA FLAG LOST DEF E163 POINTER TO MESSAGE JMP WTDM3 JUMP OVER MESSAGE * E163 EQU * ASC 10,E163 LOST DMA FLAG/ WTDM3 EQU * JMP WTDMA,I EXIT * WTDM1 NOP TIME OUT COUNTER * SETCH - SETUP CHANNEL NUMBER IN DMA CMDS. *CALL: * JSB SETCH * * SETCH NOP AND MSKLS MASK OFF CHANNEL # ADA CHNUM ADD NEW CHANNEL # JMP SETCH,I RETURN * * * * * * RWSLO - REWINDS TAPE UNIT TO LP AND CHECKS FOR * LP ONLY STATUS * NOTE: SLOW REWIND USING BSR COMMAND *CALL: * JSB RWSLO (P ) * JMP ERROR RETURN (P+1) * NORMAL RETURN(P+2) * RWSLO NOP JSB BSRWO BSR TO REACH LP RWSL1 SFC CMMD IS IT FINISHED? JMP RWSL2 YES-GO CHECK LP LDA MSKOL NO- CHECK FOR OFF-LINE JSB BITCK IS UNIT OFF-LINE? JMP RWSL3 YES-GO REPORT ERROR JMP RWSL1 NO- GO CHECK COMMAND FLAG RWSL2 EQU * JSB BSRWF BACK SPACE TO LP LDA MSKLP IS UNIT AT LP? JSB BITCK JMP RWSL4 YES-OK TO EXIT JMP RWSL1 NO-GO BSR AGAIN RWSL3 EQU * LDB MSKLP SETUP EXPECTED STATUS & JSB ERMS,I REPORT UNIT OFF-LINE DEF E140 * JMP RWSLO,I GO TO ERROR RETURN RWSL4 EQU * ISZ RWSLO ADJUST RETURN FOR NORMAL EXIT JMP RWSLO,I EXIT * * * * SUBROUTINE ALLCP- COMPARES EACH ON-LINE UNIT * - TO CONTENTS OF INPUT BUFFER *CALL: - (CLEARS INPUT BUFFER AND READS A RECORD) * JSB ALLCP * * ALLCP NOP CLA STA UNITX TEMPORARY UNIT NUMBER ALCP1 EQU * JSB UNISL GOTO SELECT UNIT ROUTINE JMP ALCP2 OFF-LINE RETURN JSB .CLBF,I CLEAR INPUT BUFFER JSB SIOR,I READ A RECORD JSB COMPR COMPARE INPUT AND OUTPUT BUFFERS ALCP2 EQU * LDA UNITX GET CURRENT UNIT # INA INCREMENT UNIT # STA UNITX SAVE IT CPA .4 IS IT LAST UNIT? JMP ALCP3 YES-EXIT ROUTINE JMP ALCP1 NO-GO TRY NEXT UNIT ALCP3 EQU * JMP ALLCP,I EXIT * * * SUBROUTINE ALLRW- REWINDS ALL UNITS * *CALL: * JSB ALLRW * ALLRW NOP CLA STA ARW01 CURRENT UNIT NUMBER ARW02 EQU * JSB UNISL GOTO SELECT UNIT SUBROUTINE JMP ARW03 OFF-LINE RETURN JSB LPREW REWIND TO LOAD POINT ARW03 EQU * LDA ARW01 GET CURRENT UNIT # INA INCREMENT UNIT # STA ARW01 SAVE IT CPA .4 IS IT THE LAST UNIT? JMP ALLRW,I YES-EXIT JMP ARW02 NO-GOTO NEXT UNIT * ARW01 NOP UNIT NUMBER * * * SUBROUTINE ALLWR- WRITES OUTPUT BUFFER ON ALL UNITS * *CALL: * JSB ALLWR * ALLWR NOP CLA STA AWR01 CURRENT UNIT NUMBER AWR02 EQU * JSB UNISL GOTO SELECT UNIT SUBROUTINE JMP AWR03 OFF-LINE RETURN JSB SIOW,I WRITE A RECORD AWR03 EQU * LDA AWR01 GET CURRENT UNIT # INA INCREMENT UNIT # STA AWR01 SAVE IT CPA .4 V IS IT THE LAST UNIT? JMP ALLWR,I YES-EXIT JMP AWR02 NO-GOTO NEXT UNIT AWR01 NOP * * * * * * * SUBROUTINE CLRBF - ROUTINE CLEARS INPUT BUFFER *CALL: * JSB CLRBF * * CLRBF NOP LDA FWAM GET FIRST WORD OF AVAILABLE MEMORY ADA BUFLG COMPUTE FW OF INPUT BUFFER STA TMP1 STORE INPUT BUFFER ADDRESS LDA LWAM GET LAST WORD AVAILABLE LDB .M1 ADA B GET LAST WORD - 1 STA TMP2 CBF01 EQU * CLA STA TMP1,I PUT ZERO IN LOCATION ISZ TMP1 INCREMENT POINTER LDA TMP2 LOAD LAST WORD AVAILABLE CPA TMP1 IS POINTER=LWA JMP CLRBF,I YES-EXIT JMP CBF01 NO-LOOP * * * * * INTERRUPT ROUTINES * * TCJMP- PUT JMP INSTRUCTION IN TRAP CELL *CALL: * LDA * JSB TCJSB * DEF

* DEF * * *INDIRECT CALL USE: * JSB INTJB,I * TCJSB NOP STA TCJS1 SAVE TRAP CELL SELECT CODE LDA JSBI GET JSB INSTRUCTION AND MKADD MASK OFF ADDRESS ADA TCJSB,I ADD ON NEW ADDRESS STA TCJS1,I PUT IT IN TRAP CELL LDB TCJSB,I GET ADDRESS OF BASE PAGE LINK ISZ TCJSB ADJUST POINTER TO NEXT PARAMETER LDA TCJSB,I GET DESTINATION OF JSB STA B,I PUT IT IN BASE PAGE LINK ISZ TCJSB SKIP OVER ADDRESS-ADJUST RETURN JMP TCJSB,I RETURN TO CALLER * TCJS1 NOP TRAP CELL SELECT CODE * * * * INTON- TURN ON INTERRUPTS *CALL: * JSB INTON,I * * .INTN NOP CCA SET INTERRUPT FLAG STA FGINT JSB CLRCH CLEAR DMA,COMMAND, AND DATA CHANNELS STF INTP TURN ON INTERRUPT SYSTEM JMP .INTN,I RETURN TO CALLER * * * INTOF- TURN OFF INTERRUPTS *CALL: * JSB INTOF,I * * .INTF NOP CLA CLEAR INTERRUPT FLAG STA FGINT CLF INTP TURN OFF INTERRUPTS JMP .INTF,I RETURN TO USER * * * * * CMMDI- REPORT INTERRUPT ERROR ON * COMMAND CHANNEL *CALL: * JSB CMMDI,I * .CMDI NOP JSB CMDSV SAVE THE A AND B REG CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT COMMAND INTERRUPT ERROR DEF E160 JSB CMDRS RESTORE A AND B REG JMP .CMDI,I RETURN TO CALLER * * CMDSV NOP STA CDSV1 SAVE THE A REG STB CDSV2 SAVE THE B REG JMP CMDSV,I EXIT ROUTINE * CMDRS NOP LDA TSTN GET CURRENT TEST # CPA .37 IS IT OP DESIGN? JMP .IRQ,I YES-EXIT LDA CDSV1 LDB CDSV2 RESTORE A AND B REG JMP CMDRS,I EXIT ROUTINE * * CDSV1 NOP CDSV2 NOP * * DATAI-REPORT INTERRUPT ERROR ON * DATA CHANNEL * *CALL: * JSB DATAI,I * .DATI NOP JSB CMDSV SAVE THE A AND B REG CLB SETUP EXPECTED STATUS JSB ERMS,I REPORT DATA INTERRUPT ERROR DEF E161 JSB CMDRS RESTORE A AND B REG JMP .DATI,I RETURN TO CALLER * * * DMAI- REPORT INTERRUPT ERROR ON * DMA CHANNEL *CALL: * JSB DMAI,I * .DMAI NOP CLB SETUP EXPECTED STATUS JSB CMDSV SAVE THE A AND B REG JSB ERMS,I REPORT DMA INTERRUPT ERROR DEF E162 JSB CMDRS RESTORE A AND B REG JMP .DMAI,I RETURN TO CALLER * E160 EQU * ASC 09,E160 COMMAND INT/ E161 EQU * ASC 07,E161 DATA INT/ * SKP ORG PAG14 LST * SKIP TO NEXT PAGE OF MEMORY ******************************** E162 EQU * ASC 07,E162 DMA INT/ * * * LDINT-LOADS ALL INTERRUPT CHANNELS * (COMMAND,DATA,AND DMA) WITH * ERROR MESSAGES *CALL: * JSB LDINT,I * * .LDIT NOP LDA CMD GET SELECT CODE OF COMMAND CH JSB INTJB,I GO INSERT JSB IN TRAP CELL DEF TCCMD BASE PAGE LINK DEF .CMDI ADDRESS OF SUBROUTINE LDA DTA GET SELECT CODE OF DATA CH JSB INTJB,I GO INSERT JSB IN TRAP CELL DEF TCDAT BASE PAGE LINK DEF .DATI ADDRESS OF SUBROUTINE LDA .LDI1 GET ADDRESS OF DMA CHANNEL JSB INTJB,I GO INSERT JSB IN TRAP CELL DEF TCDA1 BASE PAGE LINK DEF .DMAI ADDRESS OF SUBROUTINE LDA .LDI1 INA GET ADDRESS OF DMA CHANNEL JSB INTJB,I GO INSERT JSB IN TRAP CELL DEF TCDA2 BASE PAGE LINK DEF .DMAI ADDRESS OF SUBROUTINE JMP .LDIT,I EXIT * .LDI1 DEF CHAN+4 * * * * RDGAP-ISSUES A RFF COMMAND AND WAITS FOR FIRST * DATA FLAG THEN CLEARS IT. * CALL: * JSB RDGAP * P+1 * P+2 * RDGAP NOP LDB RFF GET RFF COMMAND JSB OCMMD OUTPUT THE COMMAND RGP01 STC DATA,C SETUP DATA TRANSFER CLB SETUP TIME OUT COUNTER RGP02 SFC DATA IS DATA FLAG SET? JMP RGP03 YES-EXIT ROUTINE INB,SZB NO-HAS COUNTER TIMED OUT JMP RGP02 NO-GO CHECK FLAG AGAIN JSB CLEAR YES-CLEAR CONTROLLER JSB DATFG REPORT NO DATA FLAG JMP RDGAP,I ERROR EXIT RGP03 CLF DATA CLEAR DATA FLAG ISZ RDGAP SETUP FOR NORMAL RETURN JMP RDGAP,I EXIT * * DCODE-UPDATES RECORD COUNT * RECNO IS SET TO ZERO WHENEVER BOT OCCURS * *CALL: * JSB DCODE,I * * .DCOD NOP LDA MSKLP JSB BITCK IS IT AT BOT? JMP DCOD1 YES-CLEAR RECORD COUNT JMP DCOD2 NO-GO DECODE THE COMMAND DCOD1 EQU * CLA STA RECNO CLEAR RECORD COUNTER DCOD2 EQU * LDA OCMD4 GET THE LAST COMMAND AND BSR CHECK FOR 41 CODE CPA BSR IS IT A REVERSE COMMAND? JMP DCOD3 YES-GO DECREMENT REC NO. JMP DCOD4 NO-GO CHECK FORWARD MOTION * DCOD3 EQU * LDA RECNO GET RECORD NUMBER SZA SKIP IF RECORD COUNT =0 ADA .M1 SUBTRACT A RECORD STA RECNO UPDATE RECORD COUNTER JMP DCOD9 EXIT DCOD4 EQU * LDA OCMD4 GET LAST COMMAND AND .3 ISOLATE FORWARD MOTION BITS CPA .3 IS IT FORWARD MOTION? JMP DCOD8 YES-INCREMENT COUNTER LDA OCMD4 NO-GET LAST COMMAND AND .09D ISOLATE WRITE COMMAND BITS CPA .09D IS IT A WRITE COMMAND? DCOD8 EQU * ISZ RECNO YES-INCREMENT RECORD COUNTER NOP DCOD9 EQU * JMP .DCOD,I EXIT ROUTINE * * * * EXTENDED ERROR MESSAGE ROUTINE * .ERMS NO P STA .ER17 SAVE REGISTERS-STATUS STB .ER18 -EXPECTED STATUS LDA FGINT LOAD INTERRUPT SYS ON FLAG STA INTFG SAVE INTERRUPT FLAG LDA .ERMS,I GET POINTER TO ERROR MSG STA .ER01 SAVE IT FOR ERROR MESSAGE ISZ .ERMS ADJUST RETURN LDA ERSKP LOAD ERROR MSG SKIP FLAG SZA IS IT SET? JMP .ERMS,I YES-EXIT SUBROUTINE * LDB SW11 GO CHECK SWITCH 11 JSB SWRC,I IS IT SET? JMP .ER15 YES-DO NOT OUTPUT MESSAGE LDA TST0F GET TEST 0 FLAG SZA IS IT TEST 0? JMP .ER15 YES-DELETE MESSAGES JSB STATS GET STATUS STA .ER14 SAVE STATUS LDA FG183 LOAD 13183 FLAG SZA,RSS IS IT A 13183? JMP .ER05 NO-SKIP OVER UNIT ID SETUP LDA .ER18 LOAD A WITH EXPECTED STATUS LDB UNIT GET THE UNIT NUMBER BLF,BLF MOVE UNIT # TO BITS 13-14 RBL,BLF ADB MSKDN ADD DENSITY BIT IOR B ADD ID TO EXPECTED STATUS STA .ER18 RESTORE EXPECTED STATUS .ER05 EQU * * BEGIN SETUP FOR NON ERROR MESSAGES LDA UNIT LOAD CURRENT UNIT # STA .ER02 SAVE IT LDA RECNO LOAD CURRENT RECORD # STA .ER03 SAVE IT LDA OCMD4 GET THE LAST COMMAND EXECUTED STA .ER04 SAVE IT LDA .ER18 GET EXPECTED STATUS STA EXPST SAVE IT ON BASE PAGE JSB INTOF,I TURN OFF THE INTERRUPT ROUTINE * BEGIN MESSAGE OUTPUT ROUTINE JSB MS,I OUTPUT MESSAGE-CURRENT UNIT DEF .ER07 RETURN DEF .ER08 POINTER TO MESSAGE .ER02 NOP CURRENT UNIT H154 EQU * .ER08 EQU * ASC 06,H154 UNIT #/ .ER07 EQU * JSB MS,I OUTPUT MESSAGE-RECORD NUMBER DEF .ER09 RETURN DEF H102 POINTER TO MESSAGE .ER03 NOP CURRENT RECORD NUMBER H102 EQU * ASC 07,H102 RECORD #/ .ER09 EQU * JSB MS,I OUTPUT MESSAGE-COMMAND DEF .ER11 RETURN DEF .ER12 POINTER TO MESSAGE .ER04 NOP LAST EXECUTED COMMAND H054 EQU * .ER12 EQU * ASC 08,H054 COMMAND #/ .ER11 EQU * LDA .ER14 GET STATUS IN A REGISTER JSB FMT03 GO OUTPUT MESSAGE DEF H155 POINTER TO MESSAGE JMP .ER13 JUMP OVER MESSAGE H155 EQU * ASC 11,H155 STATUS IS _ .ER13 EQU * LDA .ER18 LOAD A WITH EXPECTED STATUS JSB FMT03 OUTPUT THE MESSAGE DEF H1551 POINTER TO MESSAGE JMP .ER15 JUMP OVER MESSAGE H1551 EQU * ASC 11,H155 AND SHOULD BE _ .ER15 EQU * * ERROR MESSAGE LDA SUBTS GET CURRENT SUBTEST # ALF,ALF MOVE TO UPPER BYTE ADA TSTN LOAD CURRENT TEST # IN LOWER BYTE LDB .ER14 LOAD CURRENT STATUS JSB .ZERM,I REPORT ERROR .ER01 NOP LDA INTFG LOAD THE INTERRUPT FLAG SZA IS IT SET? JSB INTON,I YES-TURN IT BACK ON LDB SW09 CHECK SWITCH REG. BIT 9 JSB SWRC,I IS IT SET? JMP .ER16 YES-GO CHECK RETURN LDA .ER17 RESTORE A AND B REGISTER LDB .ER18 JMP .ERMS,I EXIT ROUTINE .ER16 EQU * LDA TSTN GET THE CURRENT TEST # CPA .37 IS IT OPDSN? JMP .IRQ,I YES-EXIT TO OPDSN JMP .ZUSR,I EXIT TO HALT 75 * * .ER17 NOP A REG CONTENTS .ER18 NOP B REG CONTENTS .ER14 NOP CURRENT STATUS * * SUBROUTINE FMT02-SETUP FOR CALL TO FMTR * *CALL: * JSB .FMT2,I INDIRECT CALL * DEF * * FMT02 NOP LDB FMT02,I GET MESSAGE ADDRESS ISZ FMT02 ADJUST RETURN CLA,CLE SETUP FOR OUTPUT JSB FMTR,I OUTPUT THE MESSAGE JMP FMT02,I EXIT * * * SUBROUTINE FMT03-SETUP FOR CALL TO FMTR WITH A # * MB@< *CALL: * LDA <# FOR MESSAGE> * JSB .FMT3,I INDIRECT CALL-OUTPUT THE MESSAGE * DEF * * * * FMT03 NOP STA FM01 SAVE OCTAL NUMBER OUTPUT LDB SW10 CHECK SWITCH 10 JSB SWRC,I IS IT SET? JMP FM08 YES-SKIP OVER MESSAGE LDA FMT03,I GET ADDRESS OF MESSAGE STA FM03 SAVE IT ISZ FMT03 ADJUST RETURN JSB FMT02 OUTPUT THE MESSAGE FM03 NOP POINTER TO MESSAGE CLE CLEAR THE E REGISTER JSB BINC OUTPUT BIT 15 OF # LDA .M5 SET UP BIT COUNTER STA COUNT FM04 EQU * JSB FMT02 OUTPUT A SPACE DEF FMTSP POINTER TO MESSAGE JSB BINC OUTPUT THE #'S BITS JSB BINC -THREE IN A ROW B >N 13181-18012 1629 S 0146 13181/13183 MAG TAPE DG              H0101 : JSB BINC ISZ COUNT FINISHED? JMP FM04 NO-GO OUTPUT NEXT OCTAL # JSB FMT02 OUTPUT CR-LF DEF FMTCR POINTER TO MESSAGE JMP FMT03,I EXIT FM08 EQU * ISZ FMT03 ADJUST RETURN JMP FMT03,I EXIT * * * * * SUBROUTINE BINC-DECODES OCTAL # TO BINARY OUTPUT * *CALL: * JSB BINC * * BINC NOP LDA FM01 GET THE NUMBER ELA ROTATE # INTO E STA FM01 RESTORE THE # SEZ IS THE BIT = 0? JMP FM06 NO-GO OUTPUT A 1 JSB FMT02 OUTPUT A 0 DEF FMT00 POINTER TO THE MESSAGE JMP FM07 GOTO EXIT FM06 EQU * JSB FMT02 OUTPUT A 1 DEF FMT01 POINTER TO THE MESSAGE FM07 EQU * JMP BINC,I EXIT * * * * FM01 NOP NUMBER FOR OUTPUT MESSAGE .M5 DEC -5 -5 FMT00 ASC 01,0_ 0 OUTPUT MESSAGE FMT01 ASC 01,1_ 1 OUTPUT MESSAGE FMTSP ASC 01, _ OUTPUTS A SPACE FMTCR ASC 01, / OUTPUTS A CR-LF * * * HED 7970 OPERATOR DESIGN * * OPERATOR DESIGN EXTENTION SECTION **************************** * * * * * FMTR2- * POINTS TO FMTR *CALL: * LDA * LDB * JSB FMTR2,I * * ON ENTRY THE INTERRUPT SYSTEM WILL BE TURNED OFF IF "A" * IS POSITITVE. ON EXIT THE INTERRUPT SYSTEM WILL BE CHECKED * IF THE RETURN FROM FMTR INDICATES THAT A NUMBER IS NOT * EXPECTED TO BE PASSED BACK TO THE FMTR. .FMTR NOP SSA IS IT INITIAL CALL? JMP .FMTX NO - SO DO NOT LOOK AT INT SYS STA .FTR1 SAVE A AND B REG STB .FTR2 LDA FGINT LOAD THE INTERRUPT FLAG STA .FTR3 SAVE IT JSB INTOF,I TURN INTERRUPT SYSTEM OFF LDA .FTR1 RESTORE A AND B REGISTER LDB .FTR2 .FMTX JSB FMTR,I OUTPUT THE MESSAGE SZA IS A NUMBER BEING REQUESTED? JMP .FMTR,I YES - BYPASS CHECK OF INT SYS STA .FTR1 SAVE A AND B REG STB .FTR2 LDA .FTR3 LOAD INTERRUPT FLAG SZA WAS THE INTERRUPT SYS ON? JSB INTON,I YES-TURN IT BACK ON ************************ LDA .FTR1 RESTORE A AND B REGISTER LDB .FTR2 JMP .FMTR,I EXIT * .FTR1 NOP CONTENTS OF A REG .FTR2 NOP CONTENTS OF B REG .FTR3 NOP INTERRUPT FLAG * * SETUP FOR OPERATOR DESIGN * .OPST NOP SETUP PRIOR TO EXECUTING OPDSN JSB INTOF,I TURN OFF INTERRUPT SYSTEM JSB KCORE SETUP MAXIMUM CORE SIZE JSB .ZTCH,I LOAD ALL TRAP CELLS WITH HALTS JSB LDINT,I LOAD TRAP CELLS WITH ER MSG CLA STA CNT01 CLEAR COUNTER STA FGDMA CLEAR DMA FLAG STA FGINT CLEAR INTERRUPT FLAG STA SKPSW CLEAR SKIP SW REG CK FLAG JMP .OPST,I * * * OPERATOR DESIGN STATEMENT DEFINITIONS * AND ROUTINE POINTERS * STUDD EQU * * ASC 2,SR STATUS REPORT ASC 1,AA DEF SR0 * ASC 2,SC STATUS COMPARE ASC 1,IK DEF SC0 * ASC 2,SFC SKIP FLAG CLEAR ASC 1,IA DEF SFC0 * ASC 2,SD STANDARD DATA PATTERN ASC 1,AI DEF SD0 * ASC 2,RD READS A RECORD ASC 1,KK DEF RD0 * ASC 2,WR WRITES A RECORD ASC 1,KK DEF WR0 * * ASC 2,SEL0 SELECT UNIT 0 ASC 1,II DEF SL00 * ASC 2,SEL1 SELECT UNIT 1 ASC 1,II DEF SL10 * ASC 2,SEL2 SELECT UNIT 2 ASC 1,II DEF SL20 * ASC 2,SEL3 SELECT UNIT 3 ASC 1,II DEF SL30 * ASC 2,WCC WRITE RECORD ASC 1,II DEF WCC0 * ASC 2,WFM WRITE FILE MARK ASC 1,II DEF WFM0 * ASC 2,RRF READ RECORD ASC 1,II DEF RRF0xE * ASC 2,FSR FORWARD SPACE RECORD ASC 1,II DEF FSR0 * ASC 2,FSF FORWARD SPACE FILE ASC 1,II DEF FSF0 * ASC 2,GAP WRITE GAP ASC 1,II DEF GAP0 * ASC 2,BSR BACKSPACE RECORD ASC 1,II DEF BSR0 * ASC 2,BSF BACK SPACE FILE ASC 1,II DEF BSF0 * ASC 2,REW REWIND ASC 1,II DEF REW0 * ASC 2,RWO REWIND OFF-LINE ASC 1,II DEF RWO0 * ASC 2,CLR CLEAR ASC 1,II DEF CLR0 * ASC 2,GFM GAP-FILE MARK ASC 1,II DEF GFM0 * * ASC 2,CRC READ AND OUTPUT CRCC ASC 1,KI DEF CRC0 * * ASC 2,DMA READ OR WRITE UNDER DMA ASC 1,II DEF DMA0 * ASC 2,INTR READ OR WRITE UNDER INTERRUPT ASC 1,II DEF INTR0 * * ASC 2,FLAG READ OR WRITE UNDER FLAG ASC 1,II DEF FLAG0 * * READ AND OUTPUT DMA WORD COUNT * ASC 2,DMAW ASC 1,II DEF DMAW0 * * ASC 2,CRCI COMPUTE CRCC FROM INPUT BUFFER ASC 1,KK DEF CRCI0 * ASC 2,CRCO COMPUTE CRCC FROM OUTPUT BUFFER ASC 1,KK DEF CRCO0 * ASC 2,COMP COMPARE INPUT AND OUTPUT BUFFERS ASC 1,KK DEF COMP0 * ASC 2,CNT COUNTER- USE ONLY ONE TIME ASC 1,II DEF CNT0 * ASC 2,WORD FILL OUTPUT BUFFER WITH A SPECIAL ASC 1,KI WORD DEF WORD0 * ASC 2,LRCI COMPUTE LRCC FOR INPUT BUFFER ASC 1,II DEF LRCI0 * ASC 2,LRCO COMPUTE LRCC FOR OUTPUT BUFFER ASC 1,II DEF LRCO0 * * ASC 2,TRAP FILL INTERRUPT TRAP CELL WITH JMP ASC 1,KI DEF TRAP0 * ASC 2,STC SET CONTROL ASC 1,KK DEF STC0 * ASC 2,CLC CLEAR CONTROL ASC 1,KK DEF CLC0 * ASC 2,STF SET FLAG ASC 1,KK ] DEF STF0 * ASC 2,CLF CLEAR FLAG ASC 1,KK DEF CLF0 * * DEC -1 END OF LIST * * * * SR0 NOP * * STATUS REPORT * JSB STATS GET STATUS STA AREG SAVE STATUS CLA,CLE BEGIN OUTPUT LDB SR01 LOAD POINTER TO MESSAGE JSB FMTR2,I OUTPUT IT CCA LDB UNIT LOAD TAPE UNIT # JSB FMTR2,I OUTPUT IT CCA LDB AREG LOAD STATUS JSB FMTR2,I OUTPUT IT JMP SR0,I EXIT * SR01 DEF *+1 ASC 09,UNIT # STATUS #/ * * * * STATUS COMPARE * SC0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZA,RSS IS A REG ZERO? JMP SC02 YES-REPORT ERROR AND EXIT JSB STATS GET STATUS CPA BREG COMPARE STATUS JMP SC0,I THEY ARE =, EXIT * SETUP JMP TO NEXT STATEMENT ROUTINE ********* LDA AREG GET NEW LINE NUMBER ISZ SC0 ADJUST RETURN TO NEW LINE # JMP SC0,I EXIT SC02 EQU * JMP .OPLN,I GO REPORT NO LINE # * * * * SKIP FLAG CLEAR SFC0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZA,RSS IS A ZERO? JMP SFC01 GO REPORT LINE # MISSING CPB SFC03 IS IT "D"? JMP SFC04 YES- GO CHECK DATA CHANNEL CPB SFC05 NO-CHECK FOR "C" JMP SFC06 YES-GO CHECK COMMAND CHANNEL JMP SFC06 NO-NEITHER C OR D - GO CHECK C SFC04 EQU * * DATA CHANNEL CHECK CLA O-FOR DATA CHANNEL JSB FLGCK IS FLAG SET? SFC08 EQU * YES-EXIT JMP SFC0,I EXIT SFC07 EQU * LDA AREG GET LINE # ISZ SFC0 ADJUST RETURN FOR LINE CHANGE JMP SFC0,I EXIT * COMMAND CHANNEL CHECK * SFC06 EQU * CCA ALL 1'S FOR COMAND CHANNEL JSB FLGCK IS FLAG 9SET? JMP SFC08 YES-EXIT JMP SFC07 NO SFC01 EQU * REPORT LINE # MISSING JMP .OPLN,I GO REPORT NO LINE # SFC03 ASC 1,D ASCII D SFC05 ASC 1,C ASCI C * * * COMMAND OR DATA CHANNEL CHECK * *CALL: * CLA OR CCA CLA=DATA CHANNEL * CCA=COMMAND CHANNEL * JSB FLGCK * FLAG SET RETURN * FLAG NOT SET RETURN * : * . * . FLGCK NOP SZA,RSS IS A REG ZERO? JMP FGCK0 YES-GO CHECK DATA CHANNEL FGCK1 SFS CMMD NO- GO CHECK COMMAND CHANNEL JMP FGCK2 FLAG NOT SET JMP FLGCK,I FLAG SET-EXIT FGCK0 EQU * FGCK3 EQU * SFS DATA IS DATA FLAG SET? JMP FGCK2 NO JMP FLGCK,I YES-EXIT FGCK2 EQU * FLAG NOT SET ISZ FLGCK INCREMENT RETURN JMP FLGCK,I EXIT * * * STANDARD DATA PATTERN * * A REG. CONTAINS THE RECORD LENGTH * B REG. CONTAINS SPECIAL DATA PATTERN (OPTIONAL) * SD0 NOP STA AREG SAVE A AND B REGISTER STB BREG SZB,RSS IS THERE A BUFFER LENGTH? LDB BFMAX NO-GET MAXIMUM BUFFER LENGTH STB SD020 SAVE IT LDA AREG RESTORE A CPA SD0RA IS IT RANDOM DATA? JMP SD001 YES-DO IT CPA SD0SR IS IT ROTATING 1? JMP SD002 YES- CPA SD0TR IS IT TRACK SAWTOOTH? JMP SD003 YES- CPA SD0CH IS IT CHANNEL SAWTOOTH? JMP SD004 YES CPA SD012 IS IT ALL 125125? JMP SD005 YES CPA SD015 IS IT ALL 1'S? JMP SD006 YES CPA SD00S IS IT ALL 0'S? JMP SD007 YES- STA SD017 NO-ASSUME SPECIAL PATTERN LDA .1 LDB SD018 POINTER TO PATTERN JMP SD016 SD018 DEF *+1 SD017 NOP PATTERN * JMP SD0,I EXIT SD0RA ASC 1,RA SD0SR ASC 1,SR SD0TR ASC 1,TR SD0CH ASC 1,oCH SD012 ASC 1,FR 125125 PATTERN SD015 ASC 1,ON ALL ONES PATTERN SD00S ASC 1,ZE ALL ZEROS PATTERN * SD001 EQU * STB TMP1 SAVE THE BUFFER LENGTH SD008 EQU * SSB IS BUFFER LENGTH POSITIVE JMP SD022 NO-REPORT BUFFER LENGTH ERROR LDA BFMAX GET MAXIMUM BUFFER SIZE INA ADD ONE TO IT CMA,INA MAKE IT NEGATIVE ADB A COMPUTE AVAILABLE CORE SSB IS BUFFER TOO LARGE? JMP SD009 NO GOTO BUFFER SETUP SD022 EQU * CLB YES-SETUP ERROR MESSAGE JSB ERMS,I REPORT ERROR DEF E061 POINTER TO BUFFER FULL MSG JMP .IRQ,I EXIT SD009 EQU * LDB TMP1 GET BUFFER LENGTH STB BUFLG SAVE THE BUFFER LENGTH JSB RADBF FILL BUFFER WITH RANDOM DATA JMP SD0,I EXIT SD002 EQU * LDA .09D NINE PATTERNS IN SEQUENCE LDB TSRB ROTATING BIT PATTERN JMP SD016 SD003 EQU * LDA .5 FIVE PATTERNS IN SEQUENCE LDB TSAW TRACK SAWTOOTH PATTERN JMP SD016 SD004 EQU * LDA .5 FIVE PATTERNS IN SEQUENCE LDB CSAW CHANNEL SAWTOOTH PATTERN JMP SD016 SD005 EQU * LDA .1 LDB HLFRQ 125125 PATTERN JMP SD016 SD006 EQU * LDA .1 LDB ALL1 ALL 1'S PATTERN JMP SD016 SD007 EQU * LDA .1 LDB .00 ALL O'S PATTERN JMP SD016 SD016 EQU * JSB FILL,I FILL THE OUTPUT BUFFER DEF SD019 RETURN SD020 NOP BUFFER LENGTH DEF IRQ ERROR RETURN SD019 EQU * JMP SD0,I EXIT * .00 DEF *+1 NOP * * * TAPE COMMAND * * * SELECT UNIT 0 * SL00 NOP CLA STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL00,I EXIT * * SELECT UNIT 1 SL10 NOP LDA .1 STA UNICT SETUP UNIT C$OUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL10,I EXIT * * SELECT UNIT 2 SL20 NOP LDA .2 STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL20,I EXIT * * SELECT UNIT 3 SL30 NOP LDA .3 STA UNICT SETUP UNIT COUNTER JSB UNISL SELECT TAPE UNIT NOP JMP SL30,I EXIT * WCC0 NOP LDB WCC JSB OCMMD OUTPUT COMMAND JMP WCC0,I EXIT * WFM0 NOP LDB WFM JSB OCMMD OUTPUT COMMAND JMP WFM0,I EXIT * RRF0 NOP LDB RRF JSB OCMMD OUTPUT COMMAND JMP RRF0,I EXIT * FSR0 NOP LDB FSR JSB OCMMD OUTPUT COMMAND JMP FSR0,I * FSF0 NOP LDB FSF JSB OCMMD OUTPUT COMMAND JMP FSF0,I EXIT * GAP0 NOP LDB GAP JSB OCMMD OUTPUT COMMAND JMP GAP0,I EXIT * BSR0 NOP LDB BSR JSB OCMMD OUTPUT COMMAND JMP BSR0,I EXIT * BSF0 NOP LDB BSF JSB OCMMD OUTPUT COMMAND JMP BSF0,I EXIT * REW0 NOP LDB REW JSB OCMMD OUTPUT COMMAND JMP REW0,I EXIT * RWO0 NOP LDB RWO JSB OCMMD OUTPUT COMMAND JMP RWO0,I EXIT * * CLR0 NOP LDB CLR JSB OCMMD OUTPUT COMMAND JMP CLR0,I EXIT * GFM0 NOP LDB GFM JSB OCMMD OUTPUT COMMAND JMP GFM0,I EXIT * * * * READ CRCC * CRC0 NOP CRC1 EQU * LIA DATA,C LOAD CRCC FROM LAST RECORD STA CRC2 SAVE IT CLA,CLE LDB CRC3 OUTPUT CRCC WORD MESSAGE JSB FMTR2,I CCA LDB CRC2 OUTPUT WORD JSB FMTR2,I JMP CRC0,I EXIT * CRC3 DEF *+1 ASC 07,CRCC = # TAPE/ CRC2 NOP CRCC WORD * * * SET DMA FLAG * DMA0 NOP CPA .2 IS IT CHANNEL 2? JMP DMA1 YES-OK CPA .3 NO-IS IT CHANNEL 3? JMP DMA1 YES-OK LDA .2 NO-DEFAULT TO CHANNEL 2 STA AREG SAVE IT DMA1 EQU * STA FGDMA SET DMA FLAG WITH CHANNEL # JMP DMA0,I * * SET INTERRUPT FLAG * INTR0 NOP JSB INTON,I TURN ON INTERRUPTS JMP INTR0,I * * * READ AND WRITE UNDER FLAG * (CLEAR ALL READ AND WRITE FLAGS) * * FLAG0 NOP JSB INTOF,I TURN OFF INTERRUPTS CLA STA FGDMA CLEAR FLAGS STA FGINT JSB CLRCH CLEAR CMND AND DATA CHANNELS JMP FLAG0,I EXIT * * * READ AND OUTPUT DMA WORD COUNT * DMAW0 NOP STA AREG SAVE A REGISTER CPA .2 IS IT CHANNEL 2? JMP DMAW4 YES-OK CPA .3 NO-IS IT CHANNEL 3? JMP DMAW4 YES-OK LDA .2 NO-DEFAULT TO CHANNEL 2 STA AREG SAVE IT DMAW4 EQU * LDA DMAW1 SETUP DMA CHANNEL ADA AREG STA *+1 NOP EXECUTE LIA FROM DMA CHANNEL STA DMAW2 SAVE DMA WORD COUNT CLA,CLE LDB DMAW3 OUTPUT DMA WORD COUNT MESSAGE JSB FMTR2,I CCA LDB DMAW2 OUTPUT DMA WORD JSB FMTR2,I JMP DMAW0,I EXIT DMAW1 OCT 103500 LIA CH,C-COMMAND DMAW2 NOP DMA WORD COUNT DMAW3 DEF *+1 ASC 09,DMA WORD COUNT #/ * * * READ RECORD RD0 NOP * * CHECK FOR SWITCH 7-CRCC SUPPRESS * LIA SW LOAD THE SWITCH REGISTER AND SW07 ISOLATE SWITCH 7 SZA IS SWITCH 7 SET? CCA YES-SET CRCC SKIP FLAG STA CRCFG SET CRCC FLAG * CLA STA WRERR CLEAR WRITE ERROR FLAG JSB SIOR,I READ A RECORD JSB ERRCK CHECK FOR ERROR FLAG JMP RD0,I EXIT * * WRITE RECORD * WR0 640NOP JSB .CKOT,I CHECK FOR OUTPUT BUFFER * * CHECK FOR SWITCH 7-CRCC SUPPRESS * LIA SW LOAD THE SWITCH REGISTER AND SW07 ISOLATE SWITCH 7 SZA IS SWITCH 7 SET? CCA YES-SET CRCC SKIP FLAG STA CRCFG SET CRCC FLAG * CLA STA RDERR CLEAR READ ERROR FLAG JSB SIOW,I WRITE A RECORD JSB ERRCK CHECK FOR ERROR FLAG JMP WR0,I EXIT * * * COMPUTE CRCC FROM OUTPUT BUFFER * CRCO0 NOP JSB .CKOT,I CHECK FOR OUTPUT BUFFER LDA FWAM LOAD BUFFER ADDRESS &6 ? M 13181-18013 1629 S 0146 13181/13183 MAG TAPE DG              H0101 ; LDB BUFLG LOAD B WITH BUFFER LENGTH JSB .CRCC,I GO COMPUTE BUFFER CRCC STA CRCO1 SAVE CRCC CLA,CLE LDB CRCO2 OUTPUT CRCC MESSAGE JSB FMTR2,I CCA LDB CRCO1 OUTPUT CRCC WORD JSB FMTR2,I JMP CRCO0,I EXIT * CRCO1 NOP CRCO2 DEF *+1 ASC 12,CRCC = # OUTPUT BUFFER/ * * * CRCC ROUTINE *CALL: COMPUTES CYCLIC REDUNDANCY CHECK CHARACTER * LDA * LDB * JSB .CRCC,I * * * SEE 7970B MAGNETIC TAPE UNIT MAINTENANCE * TRAINING MANUAL PAGE C5 FOR EXPLAINATION * CRCC NOP STA TMP1 SAVE BUFFER ADDRESS CMB,INB MAKE B NEGATIVE STB COUNT SAVE BUFFER LENGTH CRCC1 EQU * LDB TMP1 LDA B,I LOAD DATA ALF,ALF SHIFT UPPER BYTE TO LOWER AND MK377 ISOLATE UPPER BYTE JSB PARIT GO ADD PARITY BIT JSB CRCR INPUT TO CRC REGISER LDB TMP1 LDA B,I LOAD DATA AGAIN AND MK377 ISOLATE LOWER BYTE JSB PARIT GO ADD PARITY BIT JSB CRCR INPUT TO CRC REGISTER ISZ TMP1 INCREMENT ADDRESS TO NEXT DATA ISZ COUNT IS IT THE LAST DATA? JMP CRCC1 NO-DO IT AGAIN CLA YES- COMPLETE CRC JSB CRCR INPUT TO CRC REGISTER XOR MSK24 COMPLEMENT ALL EXCEPT IBM 2&4 STA CRCC2 SAVE NON-INVERTED CRCC * * INVERT CRCC IN A REGISTER AND STORE IN B WITHOUT PARITY CLB,CLE CLEAR B AND E REG CRCC3 EQU * ALF,ALF MOVE TO UPPER BYTE ELA,CLE DROP OUT PARITY RAR,ERA SAVE BIT 0 ALF,ALF MOVE TO LOWER BYTE RAL,ELA INSERT BIT 0 ALF,ALF SHIFT TO UPPER BYTE JMP CRCC,I EXIT * CRCC2 NOP NON-INVERTED CRCC MSK24 OCT 753 COMPLEMENT CONSTANT (IBM 2&4) 5O * * * * ADD PARITY BIT TO BYTE ROUTINE * *CALL: * JSB PARIT * LDA * * * * PARIT NOP CCE PRESET-E-TO"1" LDB .M8 LOAD B WITH MINUS 8 PARI1 EQU * SLA,RAR COMPLEMENT-E-FOR CME EVERY"1" IN INPUT DATA. AT ISZ B END,-E- CONTAINS PARITY BIT. JMP PARI1 RAR INSERT PARITY BIT INTO BYTE ELA ALF,ALF MOVE TO LOWER BYTE JMP PARIT,I EXIT * .M8 DEC -8 * * * SIMULATE CRCR- CRC REGISTER *CALL: * LDA * JSB CRCR * * * * * CRCR NOP STA CRCR3 SAVE A LDA CRCR1 LOAD OLD CRCC AND MK400 SZA IS IT ZERO? JMP CRCR4 NO-JUMP JMP CRCR5 CRCR4 EQU * LDA CRCR3 LOAD NEW BYTE XOR MSK74 OR WITH MASK 74B XOR CRCR1 OR WITH OLD CRCC JMP CRCR6 CRCR5 EQU * LDA CRCR3 LOAD NEW BYTE XOR CRCR1 OR WITH OLD CRCC CRCR6 EQU * CLE * REMOVE PARITY BIT FROM CRCC AND * SHIFT BACK ONE BIT ERA MOVE BIT 0 TO E ALF,ALF SHIFT TO UPPER BYTE ERA,RAL INSERT BIT 7 IN PARITY ALF,ALF SHIFT TO LOWER BYTE STA CRCR1 LDB CRCR3 CHECK A REG INPUT SZB IS IT ZERO? JMP CRCR,I NO-EXIT STB CRCR1 YES-CLEAR OLD CRCC JMP CRCR,I EXIT- CRCC IS IN A REG. * MSK74 OCT 74 COMPLEMENTS ITS 2-5 MK400 OCT 400 MASK FOR BIT 7 CRCR1 NOP OLD CRCC CRCR3 NOP TEMPORARY CRCR * * * COMPUTE CRCC FROM INPUT BUFFER * CRCI0 NOP JSB .CKIN,I CHECK FOR INPUT BUFFER LDA INBUF LOAD BUFFER ADDRkESS LDB INBFL GET INPUT BUFFER LENGTH JSB .CRCC,I GO COMPUTE BUFFER CRCC STA CRCI1 SAVE CRCC CLA,CLE LDB CRCI2 OUTPUT CRCC MESSAGE JSB FMTR2,I CCA LDB CRCI1 OUTPUT CRCC WORD JSB FMTR2,I JMP CRCI0,I EXIT * CRCI1 NOP CRCI2 DEF *+1 ASC 11,CRCC = # INPUT BUFFER/ * * * * * COUNTER-INCREMENTS AND PRINTS A * NUMBER EACH TIME IT IS EXECUTED * CNT0 NOP STA AREG SAVE PERSET COUNT LDB AREG LDA CNT01 LOAD COUNTER SZA IS COUNTER ZERO? JMP CNT03 NO-CONTINUE SZB,RSS YES-IS THERE A PRESET VALUE? JMP CNT03 NO-EXIT ADB .M1 YES- SUBTRACT 1 STB CNT01 SAVE IT CNT03 EQU * ISZ CNT01 NO-INCREMENT COUNTER NOP CLA,CLE LDB CNT02 OUTPUT CURRENT COUNT JSB FMTR2,I CLA,INA LDB CNT01 OUTPUT # JSB FMTR2,I JMP CNT0,I EXIT * CNT02 DEF *+1 ASC 1,#/ * * FILLS OUTPUT BUFFER WITH A SPECIAL * WORD * WORD0 NOP STA AREG SAVE SPECIAL WORD STB BREG SAVE # OF TIMES TO BE REPEATED SZB,RSS IS THERE A BUFFER LENGTH? LDB BFMAX NO-GET MAX BUFFER STB WORD1 SETUP BUFFER LENGTH STA WORD2 SETUP DATA WORD LDA .1 LDB WORD3 JSB FILL,I GO FILL UP BUFFER DEF WORD4 RETURN WORD1 NOP BUFFER LENGTH DEF IRQ ERROR RETURN WORD4 EQU * JMP WORD0,I EXIT * WORD3 DEF *+1 POINTER TO DATA WORD2 NOP DATA WORD * * * COMPUTE LRCC FOR INPUT BUFFER * LRCI0 NOP JSB .CKIN,I CHECK FOR INPUT BUFFER LDA INBUF LOAD BUFFER ADDRESS LDB INBFL LOAD BUFFER LENGTH JSB .LRCC,I GO COMPUTE LRCC STA LRCI1 SAVE LRCC CLA,CLE LDB LRCI2 OUTPUT LRCC JSB FMTR2,I CCA LDB LRCI1 JSB FMTR2,I JMP LRCI0,I EXIT * LRCI1 NOP LRCC LRCI2 DEF *+1 ASC 11,LRCC = # INPUT BUFFER/ * * * COMPUTE LRCC FOR OUTPUT BUFFER * LRCO0 NOP JSB .CKOT,I CHECK FOR OUTPUT BUFFER LDA FWAM LOAD BUFFER ADDRESS LDB BUFLG LOAD BUFFER LENGTH JSB .LRCC,I GO COMPUTE LRCC STA LRCO1 SAVE LRCC CLA,CLE LDB LRCO2 OUTPUT LRCC JSB FMTR2,I CCA LDB LRCO1 JSB FMTR2,I JMP LRCO0,I EXIT * LRCO1 NOP LRCC LRCO2 DEF *+1 ASC 12,LRCC = # OUTPUT BUFFER/ * * * * COMPUTE LRCC *CALL * LDA * LDB * JSB LRCC * * * LRCC NOP STA LRCC1 SAVE ADDRESS STB LRCC2 SAVE LENGTH JSB .CRCC,I GO COMPUTE CRCC ALF,ALF SHIFT CRCC TO LOWER BYTE JSB .PRIT,I ADD PARITY STA LRCC3 SAVE CRCC CLA STA MASK SETUP MASK LDA LRCC1 GET ADDRESS STA TMP1 SETUP ADDRESS LDB LRCC2 CMB,INB STB COUNT SETUP COUNTER LRCC4 EQU * LDB TMP1 LDA B,I GET DATA ALF,ALF AND MK377 ISOLATE UPPER BYTE JSB .PRIT,I ADD PARITY XOR MASK INPUT TO LRCC REGISTER STA MASK LDB TMP1 LDA B,I GET DATA AND MK377 ISOLATE LOWER BYTE JSB .PRIT,I ADD PARITY XOR MASK COMPUTE LRC STA MASK ISZ TMP1 SETUP NEXT DATA ISZ COUNT FINISHED? JMP LRCC4 NO-LOOP LDA LRCC3 YES-GET CRCC XOR MASK COMPUTE LRC STA LRCC5 SAVE LRCC JMP LRCC,I EXIT-WITH CRCC IN A REG. * LRCC1 NOP BUFFER ADDRESS LRCC2 NOP BUFFER LENGTH LRCC3 NOP CRCC LRCC5 NOP  FINAL LRCC * * TRAP0 NOP SETUP TRAP CELLS FOR INTERRUPTS STA AREG SAVE CHANNEL SELECT CODE ADA .N100 SUBTRACT 100 FROM SELECT CODE SSA,RSS IS THE SELECT CODE < 100 JMP TRAP4 NO-GO USE COMMAND CHANNEL LDA AREG RELOAD INPUT SELECT CODE ADA .M6 SUBTRACT 6 FROM SELECT CODE SSA,RSS IS THE SELECT CODE > 6? JMP TRAP5 YES-CONTINUE TRAP4 EQU * NO-USE COMMAND CHANNEL LDA CMD GET COMMAND CHANNEL SELECT CODE STA AREG SAVE IT FOR USE LATER TRAP5 EQU * STB TRAP2 SAVE LINE # FOR JMP SZB,RSS IS THE LINE # MISSING? JMP .OPLN,I YES-GO REPORT IT LDA AREG NO-SETUP TRAP CELL JSB INTJP,I FOR INTERRUPT DEF JMPIL BASE PAGE LINK DEF TRAP1 POINTER TO INTERRUPT ROUTINE JMP TRAP0,I EXIT * * TRAP1 EQU * LDA TRAP0 GET RETURN ADDRESS INA ADJUST RETURN STA TRAP3 SETUP RETURN FOR NEW LINE # LDA TRAP2 GET NEW LINE # JMP *+1,I GOTO NEW LINE NUMBER TRAP3 NOP RETURN ADDRESS TRAP2 NOP NEW LINE NUMBER * * SKP ORG PAG16 * SKIP TO NEXT PAGE OF MEMORY ******************************** * * COMPARE INPUT AND OUTPUT BUFFER ROUTINE * COMP0 NOP JSB .CKIN,I CHECK FOR INPUT BUFFER JSB .CKOT,I CHECK FOR OUTPUT BUFFER CLA CLEAR READ AND WRITE ER FLAGS STA RDERR STA WRERR JSB COMPR GO COMPARE BUFFERS JMP COMP0,I EXIT * * STC0 NOP SET CONTROL ROUTINE AND .77 GET SELECT CODE ADA STC01 ADD INSTRUCTION STA *+1 SAVE FOR EXECUTION NOP EXECUTE INSTRUCTION JMP STC0,I EXIT STC01 STC 0 * * CLC0 NOP CLEAR CONTROL ROUTINE AND .77 GET SELECT CODE ADA CLC01 ADD INSTRUCTION STA *+1 SAVE FOR EXECUTION NOP EXECUTE INSTRUCTION JMP CLC0,I EXIT CLC01 CLC 0 * * STF0 NOP SET FLAG ROUTINE AND .77 GET SELECT CODE ADA STF01 ADD INSTRUCTION STA *+1 SAVE FOR EXECUTION NOP EXECUTE INSTRUCTION JMP STF0,I EXIT STF01 STF 0 * * CLF0 NOP CLEAR FLAG ROUTINE AND .77 GET SELECT CODE ADA CLF01 ADD INSTRUCTION STA *+1 SAVE FOR EXECUTION NOP EXECUTE INSTRUCTION JMP CLF0,I EXIT CLF01 CLF 0 * * * * CKIN- CHECKS FOR INPUT BUFFER * IF IT DOES NOT EXIST-THEN EXITS * TO IRQ. * CKIN NOP STA AREG SAVE A AND B REGISTER STB BREG LDA INBFL CHECK INPUT BUFFER LENGTH SZA IS IT ZERO? JMP CKIN1 NO-CONTINUE JMP CKIN2 YES-ERROR EXIT CKIN1 EQU * LDA AREG RESTORE A AND B REGISTER LDB BREG JMP CKIN,I EXIT CKIN2 EQU * CLA,CLE LDB CKIN3 JSB FMTR2,I OUTPUT ERROR MESSAGE CLA,INA LDB CULN GET CURRENT LINE # JSB FMTR2,I OUTPUT IT JMP .IRQ,I ERROR EXIT * CKIN3 DEF *+1 ASC 13,NO INPUT BUFFER (LINE #)/ * * * CKOUT-CHECKS FOR OUTPUT BUFFER * IF IT DOES NOT EXIST-THEN EXITS * TO IRQ. * CKOUT NOP STA AREG SAVE A AND B REGISTER STB BREG LDA BUFLG CHECK OUTPUT BUFFER LENGTH SZA,RSS IS IT ZERO? JMP CKOT2 YES-ERROR EXIT LDA AREG RESTORE A AND B REGISTER LDB BREG JMP CKOUT,I EXIT CKOT2 EQU * CLA,CLE YES-ERROR LDB CKOT1 JSB FMTR2,I OUTPUT ERROR MESSAGE CLA,INA LDB CULN GET CURRENT LINE # JSB FMTR2,I OUTPUT IT JMP .IRQ,I ERROR EXIT * CKOT1 DEF *+1 ASC 13,NO OUTPUT BUFFER H(LINE #)/ * * * * PCMND-EXTENDS NUMBER OF PROGRAM COMMANDS IN * OPERATOR DESIGN * .PCMD NOP CPA AIL IS IT AN INPUT BUFFER LENGTH JMP PBL0 YES-GO DO IT JMP .PCMD,I ERROR RETURN PBL0 EQU * CLA,CLE BEGIN FORMAT LDB BFCT1 JSB FMTR2,I OUTPUT MESSAGE CLA,INA SETUP INTEGER OUTPUT LDB INBFL GET BUFFER LENGTH JSB FMTR2,I OUTPUT NUMBER ISZ .PCMD ADJUST RETURN JMP .PCMD,I NORMAL EXIT * * AIL ASC 01,IL BUFFER LENGTH REQUEST * * BFCT1 DEF *+1 ASC 04,BF CT #/ * * HED 7970 (13181-13183) TAPE DIAGNOSTIC * * .STAR EQU * CLC INTP,C TURN I/O SYSTEM OFF LIA SW GET SELECT CODE AND OPTIONS STA USSC SAVE IT AND .77 ELIMINATE OPTIONS STA ORGSC SAVE SELECT CODE (DATA CHANNEL) LDB A CMB,INB CHECK THAT SC>7 ADB .7 SSB ? JMP *+3 OK GO ON HLT 73B NO JMP .STAR TRY AGAIN STA SC SETUP CURRENT SELECT CODE LDB IOIP2 SETUP DATA CHANNEL I/O JSB SCIN,I INSTRUCTIONS LDA ORGSC INA GET COMMAND CHANNEL SC STA SC SETUP CURRENT SELECT CODE LDB IOIP LOAD POINTER TO IO TABLE JSB SCIN,I GO SETUP I/O INSTRUCTIONS JSB DMACK CHECKS FOR DMA OPTIONS JSB ..TIM,I GO SETUP TIMING CONSTANTS JMP .STAR ERROR RETURN * HLT 74B ALLOW CHANGE IN SWITCH REGISTER LDA MEMO GET COMPUTER SIZE AND MK77K ISOLATE COMPUTER SIZE BITS CPA SW12 IS IT AN 8K COMPUTER? RSS YES-GO SETUP FOR 8K JMP .STR1 NO-SKIP OVER LDA .STR2 GET FIRST WORD OF RELEASABLE CORE STA FWAM SAVE IT AS FWAM LDA .STR3 GET HALT 102070 STA .STAR SAVE IT FOR HALT ON ENTRY R LDA .STR1 GET JUMP TO 2000K INSTRUCTION STA .STAR+1 SAVE IT - TO PREVENT REENTRY .STR1 JMP BEGIN,I GO TO START OF DIAGNOSTIC * * .STR2 DEF .STAR+2 .STR3 OCT 102070 * * HED 7970 TIMING SUBROUTINES AND TABLES * * * .TIME-SETUP FOR TIMING TABLES ON BASE PAGE *CALL: * JSB ..TIM,I * * * .TIME NOP LDA USSC LOAD OPTIONS ALF,ALF MOVE 13181/183 OPTIONS TO LOW BYTE AND .17 MASK OFF 13183/181 BITS CPA .10 IS IT 13183 WITH DMA? JMP .TI11 YES-GO SET IT UP CPA .4 IS IT 13181? JMP .TI12 YES-GO SET IT UP CPA .12 IS IT 13183 WITHOUT DMA? JMP .TI13 YES-GO SET IT UP JMP .TI14 NONE OF THE ABOVE-ERROR EXIT * .12 OCT 12 MASK CONSTANT * .TI11 EQU * LDA .TI18 SETUP 13183 HEADER MESSAGE STA HDMP LDA DMAFG IS THERE ANY DMA? SZA JMP .TI15 YES-CONTINUE HLT 71B NO-HALT JMP .TIME,I ERROR EXIT .TI15 EQU * CCA SETUP TAPE TYPE FLAG-13183 STA FG183 LDA MSKIO LOAD IO MASK ADA MSKST ADD IN SINGLE TRACK ERROR BIT STA MSKIO SAVE MASK LDA .2 STA FGDMA SETUP CHANNEL 2 DMA LDB .TIM2 LOAD 13183 TIME TABLE POINTER JMP .TI16 GO CHECK SPEED * .TI12 EQU * LDA .TI17 LOAD 13181 HEADER MESSAGE STA HDMP CLA STA FGDMA CLEAR DMA FLAG STA FG183 SETUP TAPE TYPE FLAG-13181 LDA MKIO GET IO MASK STA MSKIO SAVE MASK LDB .TIM1 JMP .TI16 SETUP 13181 TIME TABLE POINTER MKIO OCT 4022 * .TI13 EQU * LDA .TI18 SETUP 13183 HEADER MESSAGE STA HDMP CLA STA FGDMA SETUP NO DMA FLAG LDA .1 STA FG183 SETUP TAPE TYPE FLAG-13183 LDB .TIM2 SETUP 13183 TIME TABLE POINTER W  JMP .TI16 GO CHECK SPEED * .TI17 DEF HDMS1 POINTER TO 13181 HEADER MESSAGE .TI18 DEF HDMS2 POINTER TO 13183 HEADER MESSAGE * .TI16 EQU * BEGIN SPEED CHECK ROUTINE LDA USSC GET OPTIONS ALF MOVE TAPE SPEEDS TO LOWER BITS AND .17 ISOLATE TAPE SPEED BITS CPA .10 IS IT 45 IPS? JMP .TIM3 YES-GO LOAD TABLE CPA .4 IS IT 37.5 IPS? JMP .TIM4 YES-GO LOAD TABLE CPA .2 IS IT 25 IPS? JMP .TIM5 YES-GO LOAD TABLE CPA .1 IS IT 12.5 IPS? JMP .TIM6 YES - GO LOAD TABLE * .TI14 EQU * NO-NONE OF THE ABOVE-ERROR EXIT HLT 72B ERROR HALT JMP .TIME,I ERROR EXIT * .TIM6 EQU * 12.5 IPS TABLE ADB .7 ADJUST POINTER ADDRESS .TIM5 EQU * 25 IPS TABLE ADB .7 ADJUST POINTER ADDRESS .TIM4 EQU * 37.5 IPS TABLE ADB .7 ADJUST POINTER ADDRESS .TIM3 EQU * 45 IPS TABLE * LOAD UP TIMING TABLE TO BASE PAGE LDA TIME STA .TIM8 SETUP POINTER TO BASE PAGE LDA .M7 STA .TIM9 SETUP LOOP COUNTER .TI10 EQU * LDA B,I LOAD TIMING CONSTANT STA .TIM8,I TRANSFER TO BASE PAGE INB INCREMENT TABLE POINTER ISZ .TIM8 INCREMENT BASE PAGE POINTER ISZ .TIM9 IS THIS THE 7TH TRANSFER? JMP .TI10 NO-GO DO IT AGAIN ISZ .TIME YES-ADJUST POINTER FOR RETURN JMP .TIME,I EXIT ROUTINE * .M7 DEC -7 LOOP CONSTANT .TIM8 NOP BASE PAGE POINTER .TIM9 NOP LOOP COUNTER * * * * * * MANY OF THE TIME CONSTANTS WERE EMPIRICALLY DETERMINED * * TIME DELAY TABLES * * UNIT TYPE SPEED * .TIM1 DEF *+1 DEC 1 13181 REW 45 IPS DEC 8 " WRITE " DEC 10 " CLEAR " DEC 104  " GAP " DEC 14 " IRG " DEC 15 " MIN BYTE " DEC 19 " MAX BYTE " * DEC 1 " REW 37.5 IPS DEC 10 " WRITE " DEC 12 " CLEAR " DEC 125 " GAP " DEC 16 " IRG " DEC 18 " MIN BYTE " DEC 23 " MAX BYTE " * DEC 2 " REW 25.0 IPS DEC 14 " WRITE " DEC 18 " CLEAR " DEC 187 " GAP " DEC 24 " IRG " DEC 27 " MIN BYTE " DEC 35 " MAX BYTE " * DEC 3 " REW 12.5 IPS DEC 29 " WRITE " DEC 35 " CLEAR " DEC 374 " GAP " DEC 48 " IRG " DEC 54 " MIN BYTE " DEC 69 " MAX BYTE " * * .TIM2 DEF *+1 DEC 1 13183 REW 45.0 IPS DEC 11 " WRITE " DEC 10 " CLEAR " DEC 60 " GAP " DEC 15 " IRG " DEC 11 " MIN BYTE " DEC 15 " MAX BYTE " * DEC 1 " REW 37.5 IPS DEC 13 " WRITE " DEC 12 " CLEAR " DEC 72 " GAP " DEC 17 " IRG " DEC 13 " MIN BYTE " DEC 18 " MAX BYTE " * DEC 2 " REW 25.0 IPS DEC 20 " WRITE " DEC 18 " CLEAR " DEC 108 " GAP " DEC 26 " IRG " DEC 20 " MIN BYTE B@< " DEC 27 " MAX BYTE " * DEC 3 " REW 12.5 IPS DEC 40 " WRITE " DEC 35 " CLEAR " DEC 216 " GAP " DEC 52 " IRG " DEC 39 " MIN BYTE " DEC 54 " MAX BYTE " * * FWAA EQU * FIRST WORD OF AVAILABLE MEMORY END f-B @P 13184-18001 1629 S 0146 READ ONLY I/F DG              H0101 !ASMB,A,B,C,L 06/30/76 13184A/7970E DIAGNOSTIC HED ** HP - 13184A/7970E DIAGNOSTIC ** 13184 - 19001 ** * * GENERAL OPERATING PROCEDURE * * A. LOAD DIAGNOSTIC CONFIGURATOR AND SET IT UP. * B. LOAD DIAGNOSTIC MAIN PROGRAM. * C. LOAD ADDRESS 100B. * D. LOAD SWITCH REG. WITH SELECT CODE, TAPE SPEED AND * DMA CHANNEL DESIRED. * * BITS 0 - 5 SELECT CODE * BIT 6 12.5 IPS * " 7 25.0 " * " 8 37.5 " * " 9 45.0 " * " 11 SET - USE DMA CHANNEL 2 * NOT SET - USE DMA CHANNEL 1 * * E. PRESS RUN AND WAIT FOR HALT 102074B. * F. LOAD SWITCH REGISTER: * * IF SET: * * 15 = HALT AT END OF EACH TEST * 14 = SUPPRESS ERROR HALTS * 13 = LOOP ON TEST(S) * 12 = LOOP ON DIAGNOSTIC * 11 = SUPPRESS ERROR MESSAGES * 10 = HALT AT EOT WITH MEMORY DATA REGISTER = * NEXT FORMAT I.D. * 9 = NOT USED * 8 * = FORMAT I.D. * 6 * 5 = INHIBIT DMA TRANSFERS, USE SKIP-FLAG READ * 4 = SUPPRESS REWIND TO LOAD POINT TESTS * 3 = SELECT UNIT 3 * 2 = SELECT UNIT 2 * 1 = SELECT UNIT 1 * 0 = SELECT UNIT 0 * * G. PRESS RUN. * H. RESTART - LOAD ADDRESS 2000B. * I. RECONFIGURE - LOAD ADDRESS 100B. * * CONTROL PROGRAM HALTS * * 102077 DIAGNOSTIC COMPLETED * 102076 NORMAL HALT AFTER CURRENT TEST(A=TEST #) * 102074 CONFIGURATION COMPLETED * 102073 CONFIGURATION HALT,NO SELECT CODE ENTERED * IN SWITCH REGISTER * 102072 CONFIGURATION HALT,NO TAPE DRIVE SPEED * ENTERED IN SWITCH REGISTER * 102071 UNIT SELECTED IS BUSY OR OFF-LFINE * 102070 NO UNIT SELECTED IN SWITCH REGISTER * * 102057 DATA RECORD COULD NOT BE READ SUCCESSFULLY * 102056 ERROR BUFFER IS FULL * 102055 ERROR HALT (A= TEST #) * * 10200X FORMAT ERROR HALT, EXCEPT IF SWITCH REGISTER * BIT 10 IS SET * * 106077 TRAP CELL HALT * ORG 100B SUP START JMP INITI,I * * LINKS TO DIAGNOSTIC CONFIGURATOR * FSTIN BSS 1 FAST INPUT DEVICE SLWOT BSS 1 SLOW OUTPUT DEVICE FSTOT BSS 1 FAST OUTPUT DEVICE SLWIN BSS 1 SLOW INPUT DEVICE FWAM DEF END FIRST WORD AVAIL. MEMORY LWAMX BSS 1 LAST WORD AVAIL. MEMORY MGTP BSS 1 MAGNETIC TAPE LINK TMC BSS 1 1 MILL. SEC. TIME OUT CONSTANT BSS 1 FAST INPUT SELECT CODE OTSC1 BSS 1 SLOW OUTPUT SELECT CODE BSS 1 FAST OUTPUT SELECT CODE BSS 1 SLOW INPUT SELECT CODE CPTO BSS 1 COMPUTER TYPE & OPTIONS BSS 1 USERS CARD TYPE & SC MEM BSS 1 MEMORY SIZE BSS 1 INTERNAL SWITCH REGISTER TIMR BSS 1 1 MILL. SEC. TIMER SWRC BSS 1 SWITCH REGISTER CHECK I2ASC BSS 1 INTEGER TO ASCII CONVERSION O2ASC BSS 1 OCTAL TO ASCII CONVERSION ASCIO BSS 1 ASCII TO OCTAL OR INTEGER DSN OCT 112102 DIAG. SERIAL NUMBER FMTR BSS 1 FORMATTER ROUTINE EWORD OCT 125252 PARITY ERROR WORD SPC 1 A EQU 0 A - REGISTER B EQU 1 B - REGISTER DATA EQU 0 DATA CHANNEL CMMD EQU DATA+1 COMMAND CHANNEL SWRG EQU 1 SWITCH REGISTER DMA EQU 6 DMA CHANNEL 1 .INBF EQU 5700B INPUT BUFFER SPC 1 ANBUF BSS 1 ANPAT BSS 1 AREG BSS 1 AREG0 BSS 1 AREG1 BSS 1 AREG2 BSS 1 AREG3 NOP BASE1 BSS 1 BREG BSS 1 BREG1 BSS 1 BREG2 NOP BUFAD BSS 1 CURRENT INPUT BUFFER STARTING ADDR. CNT1 BSS 1 CNT11 BSS 1 COUNT BSS 1 CYCNT BSS 1 CYCLE COUNT DGCNT NOP DMACW aBSS 1 DMA CONTROL WORD 1 ERBUF BSS 1 EXSTA NOP FLAG7 BSS 1 ID BSS 1 CURRENT TAPE FORMAT I.D. ITCNT BSS 1 RECNT BSS 1 DMA WORD COUNT AFTER READ ..SEP NOP SELCM BSS 1 SPACE ASC 1, STAT1 BSS 1 STAT2 NOP STATU BSS 1 CURRENT STATUS SWREG BSS 1 TBF00 BSS 1 TBF01 BSS 1 TBF02 BSS 1 TBF04 BSS 1 TBF05 BSS 1 TBF06 BSS 1 TBF08 BSS 1 TBF09 BSS 1 TMCN1 BSS 1 TMCN2 BSS 1 TNUMB BSS 1 CURRENT TEST NUMBER TIME BSS 1 WDCNT BSS 1 - (CURRENT EXPECTED RECORD LENGTH) SPC 1 THIRD DEC -3 N1 DEC -1 N2 DEC -2 N3 DEC -3 N4 DEC -4 N5 DEC -5 N8 DEC -8 N9 DEC -9 N11 DEC -11 N64 DEC -64 N400 DEC -400 N408 DEC -408 N1024 DEC -1024 D0 DEC 0 D1 DEC 1 D2 DEC 2 D4 DEC 4 D8 DEC 8 D16 DEC 16 D3 DEC 3 D6 DEC 6 D10 DEC 10 D12 DEC 12 D13 DEC 13 D14 DEC 14 D18 DEC 18 D19 DEC 19 D20 DEC 20 D21 DEC 21 D23 DEC 23 D25 DEC 25 D26 DEC 26 D39 DEC 39 D50 DEC 50 D9999 DEC 9999 N4000 DEC -4000 LWAM DEF IENT1 SWRCK DEF SW TG NOP * ADD1 DEF INTR1 ADD2 DEF INTR2 ADD3 DEF INTR3 ADD4 DEF INTR4 ADD5 DEF INTR5 ADD6 DEF INTR6 ADD7 DEF INTR7 ADD8 DEF INTR8 ANSI. DEF ANSI .ANSA DEF ANSIA .ANSB DEF ANSIB BASE. DEF BASE CMDS0 DEF RRF CMDS1 DEF BSR .CSRB DEF CSRB DEL0 DEF DELY0 DEF DELY0+2 DEF DELY0+4 DEF DELY0+6 DHT55 DEF HLT55 ERRBF DEF ERBFR .HEAD DEF HEAD IDPT DEF IDFOR INBUF DEF .INBF .IDFO DEF IDFOR INITI DEF IENT1 .LBF DEF LBF ..LBF DEF LBF MDIAI DEF STRT1 .MS00 DEF MS00 .MS01 DEF MS01 .MS02 DEF MS02 .MS03 DEF MS03 .MS04 DEF MS04 .MS05 DEF MS05 .MS06 DEF MS06 .MS07 DEF MS07 .MS12 DEF MS12 .MS13 DEF MS13 .MS14 DEF MS14 .MS16 DEF MS16 .MS17 DEF MS17 .MS19 DEF MS19 .MS20 DEF MS20 NTSTI DEF NTEST ONES DEF D0 PRSTI DEF PRSTA RECYL DEF RECYC SELCT DEF ATSEL SLCMS DEF ATSEL TBF10 DEF TBF09 TMPRD DEF .TMPR SPC 1 ERWRD DEF EWORD .KEYP DEF KEY KEYPT DEF KEY .TSRB DEF TSRB .TSAW DEF TSAW .CSAW DEF CSAW SPC 1 DATAC NOP DATA CHANNEL SELECT CODE CMMDC NOP COMMAND CHANNEL SELECT CODE DEFLG NOP DATA ERROR RECORD FLAG LPCYC NOP LOOP ENABLE FLAG ODD NOP ODD BYTE RECORD FLAG RDOP NOP READ OPERATION FLAG SPC 1 ASCZ OCT 30060 B7 OCT 7 B17 OCT 17 B37 OCT 37 B40 OCT 40 B100 OCT 100 B200 OCT 200 B377 OCT 377 B400 OCT 400 B500 OCT 500 B760 OCT 760 B1001 OCT 1001 B2000 OCT 2000 B3000 OCT 3000 B4000 OCT 4000 B3777 OCT 3777 B70K OCT 70000 DMAMS OCT 177737 MASK7 OCT 37477 MSK2M OCT 140000 MSKT8 OCT 177400 NOT15 OCT 77777 NOTET OCT 17737 NOTTM OCT 17577 PADAT OCT 401 STRIP OCT 17773 HLT55 OCT 102055 BHLT OCT 106077 SPC 1 * * SWITCH REGISTER MASKS * SW4 EQU D16 SW5 EQU B40 SW10 EQU B2000 SW11 EQU B4000 SW12 OCT 10000 SW13 OCT 20000 SW14 OCT 40000 SW15 OCT 100000 SPC 1 ATSEL EQU * OCT 1400 OCT 2400 OCT 4400 OCT 10400 OCT 0 RRF OCT 23 FSR OCT 3 FSF OCT 203 OCT 110 BSR OCT 41 BSF OCT 241 REW OCT 101 CLR OCT 110 RWO OCT 105 RRFPE OCT 20023 SPC 1 * THESE VALUES OVERLAID BY CONFIGURATION SECTION * DELY0 DEC 10 1600 CPI 45.0 IPS DEC 2 " " " " DEC 20 800 " " " DEC 3 " " " " DEC 30 556 " " " DEC 4 " " " " DEC 84 200 " " " DEC 10 " " " " * TIM1 NOP THESE VALUES USED BY TESTS TIM2 NOP 28-30 TIM3 NOP * * * TIMING CONSTANTS FOR COMMAND EXERCISE TIMER * .TMPR DEC 30 30 MSEC. FOR CMMD EXERCISE DEC 15 15 MSEC. FOR CMMD EXERCISE DEC 10 10 MSEC. FOR CMM=D EXERCISE SPC 1 SKP * TRACK SINGLE ROTATING BIT PATTERN * TSRB EQU * OCT 2001 OCT 10000 OCT 20100 OCT 100002 OCT 4004 OCT 420 OCT 40 OCT 40200 OCT 1010 * * TRACK SAWTOOTH PATTERN * TSAW EQU * OCT 177773 OCT 175352 OCT 145212 OCT 5010 OCT 0 * * CHANNEL SAWTOOTH PATTERN * CSAW EQU * OCT 177577 OCT 37437 OCT 7407 OCT 1401 OCT 377 * * CHANNEL SINGLE ROTATING BIT PATTERN * CSRB EQU * OCT 402 OCT 2010 OCT 10040 OCT 40200 * MSIGN EQU SW15 SPC 1 JSUBA JSB ANSI.,I JSUBR JSB RAND TRAD1 JSB ADD1,I TRAD2 JSB ADD2,I TRAD3 JSB ADD3,I TRAD4 JSB ADD4,I TRAD5 JSB ADD5,I TRAD6 JSB ADD6,I TRAD7 JSB ADD7,I TRAD8 JSB ADD8,I SKP * FORMAT ID TABLE * SPC 1 IDFOR OCT 102000 9 TRACK PE 1600 CPI OCT 102001 9 TRACK NRZ 800 CPI OCT 102002 7 TRACK NRZI 800 CPI EVEN PARITY OCT 102003 " " " 556 " " " OCT 102004 " " " 200 " " " OCT 102005 " " " 800 " ODD " OCT 102006 " " " 556 " " " OCT 102007 " " " 200 " " " OCT 0 START OVER SPC 1 * ANSI FORMAT "A" PATTERN WORDS * SPC 1 ANSIA EQU * OCT 177777 OCT 67557 OCT 20040 OCT 130260 OCT 177660 OCT 67440 OCT 20157 OCT 130377 SPC 1 * ANSI FORMAT "B" PATTERN WORDS * SPC 1 ANSIB EQU * OCT 177777 OCT 137276 OCT 0 OCT 40501 OCT 177501 OCT 137000 OCT 276 OCT 40777 SKP KEY EQU * OCT 61470 OCT 22533 OCT 65552 OCT 22004 OCT 20452 OCT 26412 OCT 22004 OCT 20045 OCT 22413 OCT 4312 OCT 6353 OCT 4312^ OCT 6740 OCT 2642 OCT 6740 OCT 2642 OCT 6740 OCT 2642 OCT 140 OCT 6042 OCT 2100 OCT 6003 OCT 73635 OCT 20755 OCT 22554 OCT 134500 * * DECREMENT THE TEST NUMBER * SPC 1 DECNO NOP LDB TNUMB ADB N1 STB TNUMB JMP DECNO,I SPC 1 * RANDOM NUMBER GENERATOR * SPC 1 RAND NOP LDA BASE LOAD THE BASE ADA PRIME SUBTRACT THE PRIME SSA SKIP IF IT'S STILL POSITIVE LDA BASE THE BASE ISN'T BIG ENOUGH CLE,ELA DOUBLE THE BASE OR REMAINDER STA BASE -FOR THE NEXT TRY JMP RAND,I SPC 1 PRIME DEC -31069 BASE BSS 1 SKP EOTTS NOP JSB STATS GET STATUS AND B40 TEST FOR EOT CPA B40 JMP EENT0 CHECK FOR THE HALT ISZ EOTTS EXIT P+2 JMP EOTTS,I EENT0 LDB SW10 SWITCH 10 SET? JSB SWRCK,I RSS JMP REWD NO, REWIND THE TAPE JMP EOTTS,I YES, EXIT AND STOP REWD LDA REW START THE DRIVE REWINDING JSB ACMMD JSB RWDET WAIT FOR IT TO FINISH CLA,CLE LDB .MS06 JSB FMTR,I 'EOT' JSB PCYCT ADD THE CYCLE COUNT JMP RECYL,I SPC 1 RWDET NOP REWIND DETECT ROUTINE JSB FLGWT WAIT FOR THE COMMAND FLAG JSB STATS GET STATUS AND B3000 CPA B3000 JMP *-3 LOOP UNTIL FINISHED REWINDING JMP RWDET,I * RWDWT NOP JSB FLGWT WAIT FOR COMMAND FLAG JSB STATS GET THE STATUS AND KEEP AND B3000 -CHECKING FOR REWIND STATUS CPA B3000 JMP *-3 LOOP UNTIL FINISHED REWINDING LDA STATU RETRIEVE THE STATUS AND SLA -CHECK THE OFF-LINE BIT JMP BENT0 IT'S SET, HALT JMP RWDWT,I SPC 1 * ** PROGRAM'S FORMAT FLAG SET ** SPC 1 FORFL NOP CLA *($ JSB FORID CHECK THE RECORDING FORMAT JMP *+3 IT'S 9 TRACK INA,RSS IT'S 7 TRACK EVEN PARITY IOR MSIGN IT'S " " ODD " STA FLAG7 SET THE PROGRAM'S FORMAT FLAG JMP FORFL,I SKP * ** TAPE MARK STATUS CHECK ** SPC 1 * CALL: "A" - CONTAINS THE CURRENT STATUS WORD * * RETURN: P+1 - NO TAPE MARK FOUND OR HAS EXTRA STATUS * P+2 - GOOD TAPE MARK FOUND * "A" - CONTENTS ARE LOST SPC 1 TMARK NOP SZA,RSS IS THERE ANY STATUS ? JMP TMARK,I NO, EXIT P+1 AND NOTTM MASK OUT THE TAPE MARK BIT SZA,RSS IS THERE ANYOTHER STATUS ? ENT39 ISZ TMARK NO, INCREMENT THE RETURN ADDRESS JMP TMARK,I SPC 1 * TELEPRINTER CHECK ROUTINE * SPC 1 * RETURN: P+1 - THERE ISN'T A TELEPRINTER IN THE SYSTEM * P+2 - THERE IS A TELEPRINTER IN THE SYSTEM SPC 1 TTYCK NOP STA AREG1 SAVE A REGISTER LDA OTSC1 CPA D0 IS THERE A TTY SELECT CODE? JMP *+2 NO TTY ISZ TTYCK LDA AREG1 RESTORE A REG. JMP TTYCK,I SPC 1 * ** SWITCH 15 CHECK ROUTINE ** SPC 1 S15CK NOP LDB SW15 JSB SWRCK,I SWITCH 15 SET? RSS YES JMP S15CK,I IT'S NOT SET, EXIT LDA TNUMB LOAD TEST NUMBER LDB STATU AND STATUS HLT 76B STOP ! JMP S15CK,I SPC 1 * * SWITCH 11 CHECK * * JSB S11CK * < SWITCH 11 SET > * < SWITCH 11 NOT SET > * * A M 13184-18002 1629 S 0146 READ ONLY I/F DG              H0101 "S11CK NOP LDB SW11 SWITCH 11 SET? JSB SWRCK,I * RSS YES ISZ S11CK NO, ADJUST RETURN JMP S11CK,I * * SWITCH 14 CHECK * * JSB S14CK * < SWITCH 14 SET > * < SWITCH 14 NOT SET > * S14CK NOP LDB SW14 SWITCH 14 SET? JSB SWRCK,I * RSS N--YES ISZ S14CK NO, ADJUST RETURN JMP S14CK,I SPC 1 SPC 1 * PRINT CYCLE COUNT SPC 1 PCYCT NOP CLA,CLE LDB .MS00 JSB FMTR,I 'CYCLE(S)' CLA,INA LDB CYCNT JSB FMTR,I CYCLE COUNT JMP PCYCT,I SKP * ** COMMAND EXERCISE ROUTINE ** SPC 1 * SW 0 READ ONE RECORD FORWARD (RRF) * SW 1 FORWARD SPACE ONE RECORD (FSR) * SW 2 FORWARD SPACE ONE FILE (FSF) * SW 3 CLEAR THE CONTROLLER (CLR) * - - - - - - - - - - - - - - - - - * SW 4 BACKSPACE ONE RECORD (BSR) * SW 5 BACKSPACE ONE FILE (BSF) * SW 6 REWIND TO LOAD POINT (REW) * SW 7 CLEAR THE CONTROLLER (CLR) * - - - - - - - - - - - - - - - - - * SW 8 REWIND AND GO OFF LINE (RWO) * * ANY OF THE FIRST FOUR COMMANDS CAN BE COMBINED WITH ANY * OF THE NEXT FOUR, OR ANY OF THE NINE CAN BE USED ALONE. * * SW 12 10 MILL. SEC. DELAY * SW 13 15 MILL. SEC. DELAY * SW 14 30 MILL. SEC. DELAY * * THESE TIMING DELAYS BETWEEN COMMANDS CAN BE USED * AT ANY TIME. ONLY THE LEFTMOST SET SWITCH WILL BE * EXECUTED (I.E. SW 14 HAS PRIORITY OVER SW 13, ETC.). * * SW 15 HALT AFTER COMMAND(S) HAS(HAVE) BEEN EXECUTED. * SPC 1 ORG 1000B BEGIN LIA CMMD,C LOAD THE STATUS AND CHECK AND B40 -FOR END-OF-TAPE BIT SZA,RSS IS IT SET ? JMP BENT1 NO, CONTINUE LDA REW YES, REWIND THE TAPE JMP ENT17+1 BENT1 LDB B377 ANY COMMAND OPTIONS JSB SWRCK,I ENTERED? QoRSS YES JMP BENT0 NO, TAKE NORMAL HALT IMMEDIATELY AND B17 YES, ISOLATE FIRST COMMAND FIELD SZA,RSS ANY OF THESE OPTIONS WANTED? JMP ENT77 NO, GO CHECK FOR 2ND OPTION LDB CMDS0 YES, GET POINTER TO COMMAND LIST ENT72 SLA,RAR TEST FOR THE COMMAND, SHIFT JMP ENT17 OUTPUT THE COMMAND ISZ B ADVANCE POINTER JMP ENT72 ENT17 LDA B,I GET THE COMMAND JSB ACMMD OUTPUT THE CMMD JSB RWDWT TEST FOR REWINDING OPERATION JSB TIMER TEST FOR TIMING OPTION ENT77 LDB B760 ANY COMMANDS IN JSB SWRCK,I SECOND FIELD? RSS YES JMP ENT16 NO ALF,ALF ALF LDB CMDS1 YES, SET 2ND CMMD STACK S.A. ENT14 SLA,RAR TEST FOR THE COMMAND, SHIFT JMP ENT15 COMMAND FOUND, OUTPUT IT ISZ B NOT THIS ONE, ADVANCE POINTER JMP ENT14 ENT15 LDA B,I GET THE COMMAND JSB ACMMD OUTPUT CMMD JSB RWDWT TEST FOR THE REWINDING OPERATION JSB TIMER TEST FOR TIMING OPTION ENT16 LDB SW15 JSB SWRCK,I IS SWITCH 15 SET? BENT0 HLT 77B YES, NORMAL HALT JMP BEGIN GO TO START SPC 1 TIMER NOP TIMING PERIOD ROUTINE LDB B70K ANY TIMING BITS SET? JSB SWRCK,I * RSS YES JMP TIMER,I NO, USE FLAG LDB TMPRD SET TIMING CONSTANT RAL RAL,SLA THIS TIME ? JMP ENT18 YES, START THE DELAY ISZ B NO, TRY NEXT JMP *-3 ENT18 LDA B,I GET THE CONSTANT JSB TIMR,I JMP TIMER,I RETURN +1 SPC 1 FLGWT NOP THIS ROUTINE WILL WAIT APPROX. STA AREG -ONE SECOND FOR THE COMMAND STB BREG LDB N4000 4000 MS COUNT STB TG CIO2 SFC CMMD JMP ENT20 GOT THE FLAG ISZ TG DO 1MS WAIT FOR 4000 TIMES RSS NOT DONE YET! JMP ENT19 ^ERROR ON COMMAND FLAG LDA D1 JSB TIMR,I WAIT FOR 1 MS JMP CIO2 GO BACK AND CHECK AGAIN ENT19 JSB STATS GET THE STATUS & HOLD JSB S11CK SUPPRESS ERROR MESSAGE? JMP ENT20-2 ISZ TNUMB UPDATE TEST NUMBER JSB TSTNI,I PRINT TEST NUMBER JSB DECNO UPDATE TEST NUMBER CLA,CLE LDB .MS12 JSB FMTR,I 'CMMD FLAG WAIT TIMED OUT !' JSB SKPL CR/LF LDA CLR CLEAR THE INTERFACE JSB ACMMD ENT20 JSB STATS GET THE STATUS AND HOLD LDA AREG RESTORE THE "A" REG LDB BREG RESTORE THE "B" REG JMP FLGWT,I SPC 2 * COMMAND OUT PUT TO MAG TAPE SUBROUTINE SPC 1 OCMMD NOP CMMD SHOULD BE IN THE "B" REG. CIO3 OTB CMMD JSB STATS GET THE STATUS JSB REJBT TEST REJECT BIT SZA,RSS JMP REJCT CIO4 STC CMMD,C JMP OCMMD,I SPC 1 ACMMD NOP COMMAND IN THE "A" REG CIO5 OTA CMMD CIO6 STC CMMD,C JMP ACMMD,I SPC 1 STATS NOP CIO7 LIA CMMD AND STRIP GET RID OF THE EXTRA BITS STA STATU HOLD THE STATUS TEMPORARILY STA B * JMP STATS,I SPC 1 CLEAR NOP CLEAR THE CONTROLLER LDA CLR OUT PUT CLEAR CMMD JSB ACMMD JSB FLGWT WAIT FOR THE OPERATION TO FINISH JMP CLEAR,I SPC 1 BSRWF NOP BACKSPACE RECORD WITH FLAG LOOP LDA BSR BACK SPACE COMMAND JSB ACMMD DO THE COMMAND JSB FLGWT WAIT FOR THE CMMD FLAG JMP BSRWF,I SPC 1 FWDSP NOP FORWARD SPACE ONE RECORD LDB FSR JSB OCMMD JMP FWDSP,I SKP * ** REJECT ROUTINES ** SPC 1 * CALL: "A" - CONTAINS THE STATUS WORD * * RETURN: "A" = 1 IF THE REJECT BIT IS NOT SET * = 0 IF THE REJECT BIT IS SET SPC 1 REJBT NOP REJECT STATUS BIT TEST AND D8 CPA D8 CLQA,RSS CCA JMP REJBT,I SPC 1 REJCT JSB S11CK SUPPRESS ERROR MESSAGE? JMP REJC0 YES CLA,CLE LDB .MS01 JSB FMTR,I 'COMMAND WAS REJECTED' REJC0 CLB THE EXPECTED STATUS IS CLEAR CCA JSB TEST * * JSB DECNO DECREMENT THE TEST NUMBER JSB S14CK SUPPRESS ERROR HALT? JMP RECYL,I YES,START DIAGNOSTIC OVER JSB STATS NO, GET STATUS LDA TNUMB GET TEST NUMBER HLT 55B ERROR HALT INDICATOR JSB LOPTN TEST FOR LOOP OPTION JMP RECYL,I RESTART DIAGNOSTIC SPC 1 * ** PROGRAM TEST ROUTINE ** SPC 1 TEST NOP STB BREG HOLD THE EXPECTED STATUS ISZ TNUMB INCREMENT THE TEST'S NUMBER SZA,RSS WAS THE TEST IN ERROR JMP TEST2 NO, CHECK SWITCH 15 JSB S11CK SUPPRESS ERROR MESSAGE? JMP TEST1 IT'S SET, DON'T PRINT OR STORE JSB TTYCK CHECK FOR TELEPRINTER JMP TEST4 NO, STORE THE MESSAGE JSB TSTNI,I THERE IS A TTY, PRINT THE LDB BREG -ERROR MESSAGE JSB PRSTI,I -THEM LDA RDOP CHECK THE READ OPERATION PRO- SZA,RSS -GRAM FLAG JMP TEST0 IT WASN'T SET, SPACE ONE LINE JSB PCHRI,I -AND PRINT BOTH WORDS CLA RESET THE READ OPERATION PRO- STA RDOP GRAM FLAG TEST0 JSB SKPL SPACE ONE LINE TEST1 JSB S14CK SUPPRESS ERROR HALT? JMP TEST2 YES CHECK SWITCH 15 LDA CLR NO, CLEAR THE INTERFACE JSB ACMMD LDA TNUMB LOAD TEST NUMBER LDB STATU AND STATUS HLT 55B TEST2 JSB S15CK CHECK SWITCH 15 TEST3 JSB EOTTS CHECK FOR THE END OF TAPE NOP JMP TEST,I EXIT TEST4 LDA ERBUF CPA INBUF ERROR BUFFER FULL? JMP TEST6 YES, CONTINUE LDA CYCNT GET CYCLE COUNT AND POS- ALF,ALF -ITION IT TO THE UPPER HALF OF  LDB TNUMB -WORD, WITH THE TEST'S NUMBER IOR B -IN THE LOWER HALF STA ERBUF,I PUT IT IN THE 1ST WORD OF THE ISZ ERBUF ERROR MESSAGE & MOVE THE POINTER LDA STATU GET THE TEST'S STATUS AND PUT IT STA ERBUF,I -IN THE 2ND WORD OF THE ERROR ISZ ERBUF -MESSAGE AND MOVE THE POINTER LDA RDOP CHECK THE PROGRAM'S READ OPER- SZA -ATION FLAG JMP TEST5 IT WAS SET, STORE THE WORDS CLA NO READ, STORE ZEROS STA ERBUF,I THE 3RD WORD ISZ ERBUF MOVE THE POINTER STA ERBUF,I THE 4TH WORD ISZ ERBUF MOVE THE POINTER JMP TEST1 CHECK CONTROL SWITCHES TEST5 LDA TBF05,I GET THE WORD IN ERROR AND STORE STA ERBUF,I -IT IN THE 3RD WORD ISZ ERBUF MOVE THE POINTER LDA TBF04,I GET THE GOOD WORD AND STORE IT STA ERBUF,I -IN THE 4TH WORD ISZ ERBUF MOVE THE POINTER JMP TEST1 CHECK CONTROL SWITCHES TEST6 HLT 56B JMP MDIAI,I GO BACK TO THE START SKP * TEST LOOPING ADDRESS ROUTINES SPC 1 SAVAD NOP SAVE TEST STARTING ADDRESS ISZ LPCYC LOOPING INDICATOR JMP SAVAD,I ISZ LPCYC JMP SAVAD,I SPC 1 LOPTN NOP TEST SW 13 FOR LOOP OPTION LDB SW13 JSB SWRCK,I SWITCH 13 SET? JMP ENT29 YES, GET THE S.A. LDB LPCYC NO, LOOK AT LOOPING INDICATOR SZB LOOPING BEFORE ? JMP LOPTN,I NO, CONTINUE WITH NEXT TEST JMP RECYL,I YES, START DIAGNOSTIC OVER ENT29 JSB EOTTS TEST FOR THE END OF TAPE NOP CLB STB LPCYC RESET LOOPING INDICATOR JMP SAVAD,I SPC 1 * ** FORMAT ID. CHECK ** SPC 1 * CALL: "A" - CONTENTS NOT SIGNIFICANT * "B" - " " " * * RETURN: P+1 - THE RECORDING MODE IS A 9 TRACK FORMAT * P+2 - THE RECORDING MODE IS A 7 TRACK FORMAT EVEN * 7PARITY * P+3 - THE RECORDING MODE IS A 7 TRACK FORMAT ODD * PARITY * "A" - CONTENTS FROM ENTRY ARE UNCHANGED * "B" - CONTAINS THE CURRENT FORMAT'S ID. SPC 1 FORID NOP STA AREG0 SAVE THE CONTENTS OF "A" FOR EXIT LDA ID LOAD THE CURRENT FORMAT'S ID. LDB ID " " " " " AND D6 MASK OFF ALL BUT BITS 1&2 SZA,RSS IS IT A 7 OR 9 TRACK FORMAT ? JMP ENT48 IT'S 9 TRACK ISZ FORID IT'S 7 TRACK, BUT WHICH ONE ? LDA ID LOAD THE CURRENT ID. AGAIN AND B7 MASK OFF ALL BUT BITS 0,1,& 2 RAR,RAR POSITION BIT 2 SLA,RSS IS IT SET ? JMP ENT48 NO, IT'S EVEN PARITY, EXIT P+2 AND MSK2M MASK OFF ORGINAL BIT 2 (0 NOW) SZA IS IT EVEN OR ODD PARITY ISZ FORID IT'S ODD PARITY, EXIT P+3 ENT48 LDA AREG0 RESTORE THE CONTENTS OF "A" JMP FORID,I SKP * BUFFER FILL ROUTINE * SPC 1 * CALL: "A" - CONTAINS THE NUMBER OF PATTERNS IN THE SEQUENCE * "B" - CONTAINS THE S.A. OF THE PATTERN SEQUENCE SPC 1 .FILL NOP STA AREG HOLD THE S.A. OF THE PATTERN STA TBF01 STB BREG HOLD THE NUMBER OF PATTERNS IN STB CNT1 -THE SEQUENCE & SET ITS COUNT LDA N1024 FILL THE CORE BUFFER STA COUNT SET THE WORD COUNTER LDA INBUF SET THE INPUT BUFFER'S S.A. MORE LDB TBF01,I STB A,I START FILLING THE BUFFER ISZ TBF01 INA ISZ CNT1 INCREMENT THE PATTERN COUNT JMP .ENT0 LDB BREG RESET THE PATTERN SEQUENCE STB CNT1 -COUNTER LDB AREG RESET THE PATTERN SEQUENCE STB TBF01 -POINTER .ENT0 ISZ COUNT INCREMENT THE BUFFER WORD JMP MORE - COUNT JMP .FILL,I SPC 1 * BUFFER CLEAR ROUTINE * SPC 1 CLRBF NOP STB TBF06 SAVE THE CONTENTS OF "B" STA TBF02 SAVE THE CONTENTS OF "A" LDA DHT55 HALT55'S LDB N1 JSB .FILL LOAD THE HALTS INTO THE BUFFER LDA TBF02 RESTORE THE "A" REGISTER LDB TBF06 RESTORE THE "B" REGISTER ALSO JMP CLRBF,I SKP * ANSI WORST CASE PATTERN GENERATION * SPC 1 ANSI NOP STB BREG SAVE THE CONTENTS OF "B" ISZ ITCNT INCREMENT THE ITERATION COUNT JMP ENT67 USE THE SAME PATTERN AGAIN ISZ THIRD INCREMENT THE THIRD COUNT JMP ENT68 GO TO THE SAME KEY WORD LDA N3 RESET THE THIRD COUNTER STA THIRD ISZ KEYPT ADVANCE THE KEY WORD POINTER ENT68 LDA THIRD GET THE THIRD COUNT CMA 1'S COMPLEMENT SLA IS IT THE 2ND THIRD ? JMP ENT69 YES, GET THE ITERATION COUNT RAR,SLA NO, IS IT THE 1ST THIRD? JMP ENT70 YES, GET THE ITERATION COUNT LDA KEYPT,I LOAD THE KEY WORD & GET THE RAR,RAR -COUNT RAR ENT71 LDB A HOLD THE WORD AND D3 GET THE ITERATION COUNT CMA STA ITCNT SET THE ITERATION COUNTER LDA B SET UP TO GET THE PATTERN ALF,RAR -CODE AND B7 LDB ANPAT GET THE ANSI PATTERN BUFFER'S ADB A -S.A. & SELECT THE PATTERN WORD LDA B,I GET THE PATTERN WORD STA ANBUF HOLD IT FOR THE NEXT TIME, MAYBE JMP ENT81 CONTINUE ENT69 LDA KEYPT,I LOAD THE KEY WORD AND GET THE ALF,ALF -COUNT JMP ENT71 GO GET THE ITERATION COUNT ENT70 LDA KEYPT,I LOAD THE KEY WORD AND GET ALF,RAR -COUNT JMP ENT71 GO GET THE ITERATION COUNT ENT67 LDA ANBUF USE THE SAME PATTERN WORD AGAIN LDB KEYPT,I LOAD THE KEY WORD AND CHECK FOR SSB,RSS -THE LAST WORD INDICATOR JMP ENT81 CONTINUE LDB THIRD LOAD THE COUNT FOR THE KEY WORD CMB -PACK SLB,RSS IS THE COUNT = 1 ? JMP ENT81 NO, CONTINUE LDB ITCNT GET THE ITERATION COUNT AND CPB N1 -CHECK IT FOR THE LAST ONE RSS JMP ENT81 IT WASN'T, CONTINUE LDB .KEYP RESET THE KEY WORD POINTER STB KEYPT LDB N3 RESET THE THIRD COUNTER STB THIRD LDB N5 PRESET THE ITERATION COUNTER STB ITCNT CCB PRESET THE FIRST PATTERN WORD STB ANBUF ENT81 LDB BREG RESTORE "B" JMP ANSI,I SPC 1 * ** RANDOM DATA AND ANSI PATTERN DATA COMPARE ** SPC 1 WDCOM NOP LDA TBF10 SET POINTER FOR PCHAR STA TBF04 LDA BUFAD SET THE BUFFER'S S.A. STA TBF05 LDA WDCNT SET THE WORD COUNT STA CNT11 STA RDOP SET THE READ OPERATION FLAG WENT0 NOP GET THE WORD AND COMPARE LDB FLAG7 CHECK THE PROGRAM'S FORMAT FLAG SZB,RSS IS IT SET ? JMP WENT2 NO, IT'S 9 TRACK DATA AND MASK7 YES, IT'S 7 TRACK DATA SLB,RSS WHICH 7 TRACK PARITY ? JMP WENT2 IT'S ODD PARITY STA B HOLD THE CONTENTS OF "A" AND MSKT8 MASK OFF THE 8 LOWER BITS SZA,RSS ARE ALL BITS IN THE BYTE ZERO ? JMP WENT3 YES, ADD THE DATA PAD LDA B RESTORE THE CONTENTS OF "A" AND B377 MASK OFF THE 8 HIGHER BITS SZA,RSS IS THIS BYTE ZERO ? JMP WENT3 YES LDA B RESTORE THE CONTENTS OF "A" JMP WENT2 NO WENT3 LDA B RESTORE THE CONTENTS OF "A" IOR PADAT ADD THE BIT PAD WENT2 CPA TBF05,I JMP WENT1 IT COMPARES, CONTINUE STA TBF10,I SAVE WORD IN ERROR CCA CLB THE EXPECTED STATUS IS CLEAR JSB TEST * * ISZ CNT11 INCREMENT THE WORD COUNTER RSS JMP WDCOM,I ENT74 NOP CYCLE THE ROUTINE ISZ CNT11 JMP *-2 JMRP WDCOM,I WENT1 ISZ TBF05 ADVANCE THE BUFFER'S POINTER ISZ CNT11 INCREMENT THE WORD COUNTER JMP WENT0 COMPARE THE NEXT WORDS CLA RESET THE READ OPERATION FLAG STA RDOP JSB TEST JMP WDCOM,I SKP * ** PATTERN - DATA COMPARE ROUTINE ** SPC 1 * CALL: "A" - CONTAINS THE S.A. OF THE DATA PATTERN SEQUENCE * "B" - CONTAINS THE NUMBER OF WORDS IN THE SEQUENCE * * RETURN: "A" - CONTENTS ARE LOST * "B" - " " " PATCM NOP STA AREG THE S.A. OF THE PATTERN STA TBF04 STB BREG THE # OF WORDS IN THE PAT. SEQ. STB CNT1 SET THE PATTERN SEQUENCE COUNT LDB BUFAD SET THE BUFFER'S S.A. STB TBF05 LDA WDCNT SET THE WORD COUNT STA CNT11 STA RDOP SET THE READ OPERATION'S FLAG ENT11 LDA TBF05,I GET THE INPUT BUFFER WORD AND LDB FLAG7 CHECK THE PROGRAM'S FORMAT FLAG SZB,RSS IS IT SET ? JMP PENT0 NO, IT'S 9 TRACK DATA STA TBF08 IT'S 7 TRACK, HOLD "A" LDA DEFLG LOAD THE PROGRAM'S FLAG SZA,RSS IS THIS THE "DE" TEST ? JMP ENP01 NO LDA TBF04,I LOAD THE PATTERN WORD AND MASK7 STRIP THE TOP 2 BITS OFF JMP ENP02 ENP01 LDA TBF04,I LOAD THE PATTERN WORD AND MASK7 MASK OFF THE EXTRA BITS SLB,RSS WHICH 7 TRACK PARITY JMP PENT2 IT'S ODD PARITY ENP02 STA B HOLD THE CONTENTS OF "A" AND MSKT8 MASK OFF THE 8 LOWER BITS SZA,RSS ARE ALL BITS IN THE BYTE ZERO ? JMP PENT3 YES, ADD THE BIT PAD LDA B RESTORE THE CONTENTS OF "A" AND B377 MASK OFF THE 8 HIGHER BITS SZA,RSS IS THIS BYTE ZERO ? JMP PENT3 YES LDA B RESTORE THE CONTENTS OF "A" JMP PENT2 NO PENT3 LDA B RESTORE THE CONTENTS OF "A" IOR PADAT ADD THE DATA BIT PAD PENT2 CPA TB?<:6F08 COMPARE THE TWO WORDS JMP ENT08 THEY COMPARE JMP PENT1 NON-COMPARE PENT0 CPA TBF04,I COMPARE THE DATA TO THE PATTERN JMP ENT08 IT COMPARES, CONTINUE PENT1 CCA IT DIDN'T COMPARE LDB ODD CHECK THE ODD BYTE INDICATOR SZB,RSS JMP ENT79 IT'S NOT SET LDB B4000 SET THE EXPECTED STATUS AS "OB" RSS ENT79 CLB THE EXPECTED STATUS IS CLEAR JSB TEST * * JMP PATCM,I -THE LAST ONE IN THE BUFFER ENT08 ISZ CNT1 INCREMENT THE PATTERN SEQ. COUNT JMP ENT10 LDA AREG RESET THE PATTERN BUFFER'S STA TBF04 -POINTER LDB BREG RESET THE PATTERN SEQUENCE COUNTER STB CNT1 RSS ENT10 ISZ TBF04 ADVANCE THE PATTERN POINTER ISZ TBF05 ADVANCE THE BUFFER'S POINTER ISZ CNT11 JMP ENT11 GO COMPARE THE NEXT WORDS CLA RESET THE READ OPERATION'S FLAG STA RDOP JSB TEST JMP PATCM,I * * ** ERROR BUFFER CLEAR ROUTINE ** * CLRER NOP CLA CLEAR A REG. LDB ERRBF LOAD B WITH ERROR BUFFER LOC. CLRE1 EQU * STA B,I STORE A ZERO IN ERROR BUFFER ISZ B INCREMENT ERROR BUFFER POINTER CPB INITI FINISHED? JMP CLRE2 YES- EXIT JMP CLRE1 NO-GO ZERO OUT NEXT LOCATION CLRE2 EQU * JMP CLRER,I < BQ 13184-18003 1629 S 0146 READ ONLY I/F DG              H0101 #* SKPL NOP SPACE ONE LINE CLA,CLE LDB SLASH JSB FMTR,I CR/LF JMP SKPL,I * TSTNI DEF TSTNO PCHRI DEF PCHAR * SLCDD DEF SLCD0 POINTERS TO DATA CHANNEL DEF SLCD1 I/O POINTER LIST SLCDC DEF SLCD2 POINTERS TO COMMAND CHANNEL DEF SLCD3 I/O POINTER LIST * * POINTERS TO TIMING TABLES * T12.5 DEF S12.5 T25.0 DEF S25.0 T37.5 DEF S37.5 TT45 DEF S45.0 * T45.0 DEF DELY0 SLASH DEF *+1 ASC 1,/ SPC 2 * TESTS 28 - 30 (34B - 36B) * NTEST NOP LDB RRF ISSUE READ RECORD JSB OCMMD COMMAND DIO25 STC DATA,C LDA TIM1 DATA FLAG SHOULD NOT BE JSB TIMR,I SET YET DIO26 SFC DATA * CCA,RSS IS IS SET,ERROR CLA IT ISN'T SET CLB EXPECTED STATUS (CLEAR) JSB TEST (28) (34B) CLA DIO27 SFS DATA WAIT UNTIL DATA FLAG SETS RSS JMP ENT91 INA,SZA JMP *-4 ISZ TNUMB DATA FLAG TIME OUT JSB S11CK SUPPRESS ERROR MESSAGE? JMP ENT91-2 YES JSB TSTNI,I PRINT TEST NUMBER CLA,CLE LDB .MS20 JSB FMTR,I 'DATA FLAG TIMED OUT' ISZ TNUMB JMP ENT92 ENT91 EQU * LDA TIM2 COMMAND FLAG JSB TIMR,I SHOULD NOT BE SET YET CIO31 SFC CMMD CCA,RSS IT IS SET,ERROR CLA IT ISN'T SET LDB D18 EXPECTED STATUS (TE,DE) JSB TEST (29) (35B) LDA TIM3 COMMAND FLAG SHOULD BE JSB TIMR,I SET AFTER THIS TIME OUT CIO32 SFS CMMD CCA,RSS IT ISN'T SET,ERROR CLA LDB D18 EXPECTED STATUS (DE,TE) JSB TEST (30) (36B) ENT92 EQU * JSB BSRWF BACKSPACE RECORD JSB FLGWT WAIT FOR COMMAND FLAG JMP NTEST,I SKP ORG 2000B STRT1 CLA,CLE LDB .HEAD JSB FMTR,I '13184A-7970E MAG. TAPE DIAG.' MDIAG LDA D2u| SET FIRST ADDRESS FOR TRAP CELLS LDB BHLT LOAD B-REG. WITH HALT CODE STB A,I STORE TRAP CELL HALT INA ADVANCE POINTER CPA B100 FINISHED? JMP *+2 YES JMP *-4 NO * CLC 0,C TURN OFF ALL INTERRUPTS LDA DMACW SET THE DMA'S CONTROL WORD DMA1 OTA DMA JSB TTYCK CHECK FOR TELEPRINTER JSB CLRER NO- ZERO OUT ERROR BUFFER * LDA ERRBF SET THE ERROR BUFFER'S S.A. STA ERBUF LDA .IDFO RESET THE FORMAT ID POINTER STA IDPT MENT0 CLA STA CYCNT SET THE CYCLE COUNTER TO ZERO JMP ENT34 RECYC CLC 0,C CLEAR THE CONTROLS LDB SW12 JSB SWRCK,I SWITCH 12 SET? JMP ENT34 YES, RESTART MAIN PROGRAM JSB PCYCT NO, PRINT THE CYCLE COUNT MENT1 CLB LDA CYCNT LOAD CYCLE COUNT HLT 77B YES CLC01 CLC 0,C ENT34 CLA RESET ALL COUNTERS & ACTIVE BUFF STA RECNT CLEAR THE REMAINDER COUNT BUFFER ISZ CYCNT LDA CYCNT GET THE CYCLE COUNT CPA D9999 TEST FOR COUNT ROLL OVER JMP MENT0 GO BACK & RESET THE CYCLE COUNT LIA SWRG LOAD SWITCH REGISTER AND ALF,ALF -GET THE INTENDED FORMAT ID RAL,RAL AND B7 IOR IDFOR STA ID SAVE THE ID OF THIS FORMAT SPC 1 * ** INITIAL CLEAR AND UNIT SELECT TEST SECTION ** SPC 1 JSB SAVAD SET THE PROGRAM LOOP S.A. CLA STA TNUMB UPDATE TEST NUMBER LDA CLR CLEAR THE CONTROLLER JSB ACMMD LDA D50 JSB TIMR,I TIME OUT 50 MSEC. JSB STATS GET THE STATUS AND CHECK FOR AND B400 -CONTROLLER BUSY SZA CCA,RSS THE TEST FAILED CLA CLB THE EXPECTED STATUS IS CLEAR JSB TEST (1) * * JSB LOPTN CHECK FOR THE LOOP OPTION SPC 1 JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D1 STA TNUMB UPDATE TEST NUMBER SENT0 LDB B17 ANY UNIT SELECT JSB SWRCK,I SWITCHES SET? JMP SENT2 YES, CONTINUE JSB S11CK SUPPRESS ERROR MESSAGE? JMP *+4 YES CLA,CLE LDB .MS07 JSB FMTR,I 'NO UNIT SELECT SWITCH SET' JSB S14CK SUPPRESS ERROR HALT? RSS YES SENT1 HLT 70B NO, UNIT SELECT HALT JMP SENT0 WAIT FOR THE OPERATOR SENT2 SLA,RSS IS THIS THE SELECTED ONE ? JMP SENT4 NO, TRY THE NEXT ONE LDB SLCMS,I YES, LOAD ITS SELECT COMMAND AND STB SELCM -PUT IT IN THE COMMAND BUFFER JMP SENT5 MOVE THE TABLE POINTER SENT4 ISZ SLCMS MOVE THE TABLE'S POINTER RAR -AND POSITION IT JMP SENT2 SENT5 LDA SELCT RESET THE SELECT COMMAND CODE STA SLCMS -TABLE POINTER LDA B400 OUTPUT A NO SELECT COMMAND CODE CIO8 OTA CMMD JSB STATS LOAD THE STATUS AND CHECK FOR SLA -ANY ON-LINES CLA,RSS THE TEST PASSED CCA THE TEST FAILED LDB B1001 THE EXPECTED STATUS IS (OF, TB) JSB TEST (2) * * JSB LOPTN CHECK FOR THE ROUTINE'S LOOP JSB SAVAD SET THE ROUTINE'S LOOP S.A. LDA D2 STA TNUMB UPDATE TEST NUMBER LDA FSR LOAD THE FORWARD SPACE COMMAND CIO9 OTA CMMD -AND OUTPUT IT JSB STATS LOAD THE STATUS AND CHECK AND D8 -FOR THE REJECT BIT SZA IS IT SET ? CLA,RSS YES, THE TEST PASSED CCA NO, THE TEST FAILED LDB B1001 THE EXPECTED STATUS IS (OF, CR, ADB D8 -TB) JSB TEST (3) * * JSB LOPTN CHECK FOR A PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D3 STA TNUMB UPDATE TEST NUMBER LDA SELCM LOAD THE SELECT COMMAND AND OUT CIO10 OTA CMMD -PUT IT JSB STATS LOAD THE STATUS AND CHECK FOR AND B1001 -THE SELECTED UNIT ON LINE SZA CCA THE TEST FAILED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (4) * * JSB LOPTN CHECK FOR A PROGRAM LOOP LDA STATU RETRIEVE THE LAST TEST'S STATUS AND B1001 -AND CHECK FOR ON LINE SZA,RSS JMP SENT7 IT IS, CHECK UNIT BUSY STATUS JSB S14CK SUPPRESS ERROR HALT? RSS YES HLT 71B UNIT SELECT HALT, WAIT FOR THE JMP MDIAG -OPERATOR SENT7 EQU * SPC 1 * ** I-O CHANNEL TEST SECTION ** SPC 1 LDA D4 STA TNUMB UPDATE TEST NUMBER DIO1 STF DATA SET THE DATA CHANNEL FLAG DIO2 CLF DATA CLEAR THE DATA CHANNEL FLAG DIO3 SFC DATA -AND CHECK IT CCA,RSS IT'S NOT CLEAR, THE TEST FAILED CLA THE TEST PASSED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (5) * * DIO4 SFS DATA IS THE DATA FLAG SET? CLA,RSS NO, THE TEST PASSES CCA THE TEST FAILED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (6) * * JSB LOPTN CHECK THE PROGRAM LOOP LDA D6 STA TNUMB UPDATE TEST NUMBER DIO5 STF DATA SET THE DATA CHANNEL FLAG DIO6 SFS DATA IS IT SET? CCA,RSS NO, THE TEST FAILED CLA THE TEST PASSED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (7) * * DIO7 SFC DATA IS IT SET? CLA,RSS NO, THE TEST PASSES CCA THE TEST FAILED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (8) (10B) * * JSB LOPTN CHECK THE PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D8 STA TNUMB UPDATE TEST NUMBER CIO11 STF CMMD SET THE COMMAND CHANNEL FLAG CIO12 CLF CMMD CLEAR THE COMMAND CHANNEL FLAG CIO13 SFC CMMD -AND CHECK IT CCA,RSS IT'S NOT CLEAR, THE TEST FAILED CLA THE TEST PASSED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (9) (11B) * * CIO14 SFS CMMD CHECK THE COMMAND FLAG CLA,RSS IT'S NOT SET, THE TEST PASSES CCA THE TEST FAILED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (10) (12B) * * JSB LOPTN CHECK THE PROGRAM LOOP LDA D10 STA TNUMB UPDATE TEST NUMBER CIO15 STF CMMD SET THE COMMAND CHANNEL FLAG CIO16 SFS CMMD -AND CHECK IT CCA,RSS IT'S NOT SET, THE TEST FAILED CLA THE TEST PASSED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (11) (13B) * * CIO17 SFC CMMD IS IT CLEAR? CLA,RSS NO, THE TEST PASSES CCA THE TEST FAILED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (12) (14B) * * JSB LOPTN CHECK THE PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D12 STA TNUMB UPDATE TEST NUMBER LDA TRAD1 SET THE TRAP CELL FOR A DATA STA DATAC,I -CHANNEL INTERRUPT DIO8 STC DATA SET THE CONTROL AND THE FLAG DIO9 STF DATA -IN THE CHANNEL STF00 STF 0 TURN ON THE INTERRUPT SYSTEM NOP CCA IF THE PROGRAM DOES THIS IN- JMP ENT12 -STRUCTION, THE TEST FAILED INTR1 NOP THE NORMAL INTERRUPT RE-ENTRY CLF00 CLF 0 CLEAR THE INTERRUPT SYSTEM LDA TRAD2 SET THE DATA CHANNEL TRAP CELL STA DATAC,I -FOR ANY MULTI INTERRUPTS STF01 STF 0 TURN THE INTERRUPT SYSTEM AGAIN NOP CLA THE TEST PASSED JMP ENT12 INTR2 NOP ~2 MULTI INTERRUPT RE-ENTRY POINT CLC02 CLC 0,C CLEAR THE INTERRUPT SYSTEM CCA THE TEST FAILED ENT12 EQU * CLC03 CLC 0,C RESET ALL CONTROL BUFFERS CLB THE EXPECTED STATUS IS CLEAR JSB TEST (13) (15B) * * JSB LOPTN CHECK THE PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D13 STA TNUMB UPDATE TEST NUMBER LDA TRAD3 SET THE TRAP CELL FOR A COMMAND STA CMMDC,I -CHANNEL INTERRUPT LDA CLR PERFORM A CLEAR COMMAND TO TEST JSB ACMMD -COMMAND CHANNEL INTERRUPT STF02 STF 0 TURN ON THE INTERRUPT SYSTEM LDA D50 TIME OUT 50 MSEC. JSB TIMR,I * JSB STATS TEST FAILED, GET ERROR STATUS CCA JMP ENT13 INTR3 NOP THE NORMAL INTERRUPT RE-ENTRY CLF01 CLF 0 CLEAR THE INTERRUPT SYSTEM LDA TRAD4 SET THE COMMAND CHANNEL TRAP STA CMMDC,I -CELL FOR ANY MULTI INTERRUPTS STF03 STF 0 TURN ON THE INTERRUPT AGAIN NOP CLA THE TEST PASSED JMP ENT13 INTR4 NOP MULTI INTERRUPT RE-ENTRY POINT CLC04 CLC 0,C CLEAR THE INTERRUPT SYSTEM JSB STATS TEST FAILED, GET ERROR STATUS CCA ENT13 EQU * CLC05 CLC 0,C RESET ALL THE CONTROL BUFFERS CLB THE EXPECTED STATUS IS CLEAR JSB TEST (14) (16B) * * JSB LOPTN CHECK THE PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D14 STA TNUMB UPDATE TEST NUMBER DMA2 CLC DMA,C MAKE SURE THAT THE DMA CHANNEL DMA3 STF DMA - IS CLEARED LDA ONES SET THE SINGLE WORD BUFFER'S DAM1 CLC DMA-4 -S.A. DAM2 OTA DMA-4 LDA N1 TRANSFER ONLY ONE WORD OUT TO DAM3 STC DMA-4 -THE DATA CHANNEL DAM4 OTA DMA-4 LDA TRAD5 SET THE DMA TRAP CELL DMA4 STA DMA LDA TRAD6 SET THE DATA CHANNEL'S TRAP STA DATAC,I -CELL STF04 STF 0 TURN ON THE INTERRUPT SYSTEM DMA5 STC DMA START THE DMA DIO10 STF DATA START THE TRANSFER DIO11 STC DATA NOP CCA IF THIS SECTION OF THE PROGRAM ISZ TNUMB -IS EXECUTED, THEN NEITHER JMP ENT00 -CHANNEL INTERRUPTED INTR5 NOP THE DMA'S INTERRUPT RE-ENTRY CLF02 CLF 0 CLEAR THE INTERRUPT SYSTEM CLA THE TEST PASSES JMP ENT04 INTR6 NOP DATA CHANNEL'S RE-ENTRY CLF03 CLF 0 CLEAR THE INTERRUPT SYSTEM CCA THE TEST FAILED ENT04 CLC DMA TURN OFF THE DMA DMA6 STF DMA ZERO THE WORD COUNT DIO12 CLC DATA,C CLB THE EXPECTED STATUS IS CLEAR JSB TEST (15) (17B) * * JMP ENT05 ENT00 CLC DMA TURN OFF THE DMA DMA7 STF DMA ZERO THE WORD COUNT DIO13 CLC DATA,C CLB THE EXPECTED STATUS IS CLEAR JSB TEST (16) (20B) * * ENT05 EQU * CLC06 CLC 0,C CLEAR THE INTERRUPT SYSTEM JSB LOPTN CHECK THE PROGRAM LOOP JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D16 STA TNUMB UPDATE TEST NUMBER LDA TRAD7 SET THE DATA CHANNEL'S TRAP CELL STA DATAC,I LDA TRAD8 SET THE COMMAND CHANNEL'S TRAP STA CMMDC,I -CELL STF05 STF 0 TURN ON THE INTERRUPT SYSTEM DIO14 STC DATA SET THE DATA CHANNEL CONTROL DIO15 STF DATA -AND FLAG CIO18 STC CMMD SET THE COMMAND CHANNEL CONTROL CIO19 STF CMMD -AND FLAG NOP CCA IF THIS SECTION OF THE PROGRAM ISZ TNUMB -IS EXECUTED, NEITHER CHANNEL JMP CLC08 -INTERRUPTED INTR7 NOP DATA CHANNEL INTERRUPT RE-ENTRY CLF04 CLF 0 CLEAR THE INTERRUPT SYSTEM CLA THE TEST PASSES JMP CLC07 INTR8 NOP COMMAND CHANNEL'S INTERRUPT RE- CLF05 CLF 0 CLEAR THE INTERRUPT SYSTgEM CCA -ENTRY, THE TEST FAILED CLC07 CLC 0,C TURN OFF THE INTERRUPT SYSTEM CLB THE EXPECTED STATUS IS CLEAR JSB TEST (17) (21B) * * JMP ENT35 CLC08 CLC 0,C TURN OFF THE INTERRUPT SYSTEM CLB THE EXPECTED STATUS IS CLEAR JSB TEST (18) (22B) * * ENT35 JSB LOPTN CHECK THE PROGRAM LOOP OPTION JSB CLEAR RESET THE INTERFACE SPC 1 * OPTIONAL REWIND & LOAD POINT TESTS * SPC 1 LDB SW4 JSB SWRCK,I IS SWITCH 4 SET? JMP ENT38 IT'S SET, CONTINUE JSB SAVAD SET THE PROGRAM'S LOOP S.A. LDA D18 STA TNUMB UPDATE TEST NUMBER JSB FWDSP MOVE AWAY FROM THE LOAD POINT JSB FLGWT WAIT FOR THE COMMAND FLAG LDB REW REWIND COMMAND JSB OCMMD JSB FLGWT WAIT FOR THE COMMAND FLAG JSB STATS GET STATUS STA TBF01 HOLD THE CURRENT STATUS AND B3000 TEST FOR REWIND & UNIT BUSY CPA B3000 CLA,RSS CCA STA TBF02 JSB RWDET LOOP UNTIL REWIND IS FINISHED LDA TBF01 RESTORE THE TEST STATUS STA STATU LDA TBF02 LDB B3000 SET THE EXPECTED STATUS- ADB B400 -(RW, TB, CB)- JSB TEST (19) (23B) * * JSB LOPTN CHECK THE LOOP OPTION JSB SAVAD SET THE PROGRAM LOOP S.A. LDA D19 STA TNUMB UPDATE TEST NUMBER JSB STATS TEST FOR LOAD POINT STATUS AND B100 SZA CLA,RSS CMA LDB B100 SET THE EXPECTED STATUS (LP) JSB TEST (20) (24B) * * JSB LOPTN CHECK FOR THE LOOP OPTION JSB SAVAD SET THE PROGRAM LOOP S.A. LDA D20 STA TNUMB UPDATE TEST NUMBER LDA BSR TEST COMMAND REJECT AT BOT CIO20 OTA CMMD JSB STATS GET STATUS & TEST REJECT B|IT JSB REJBT CHECK FOR A REJECT AT LOAD SZA -POINT, A > 0, NO REJECT CCA,RSS CLA LDB CLR LOAD THE EXPECTED STATUS (CR, LP) JSB TEST (21) (25B) * * JSB LOPTN CHECK FOR THE LOOP OPTION JSB SAVAD SET THE LOOP S.A. LDA D21 STA TNUMB UPDATE TEST NUMBER LDB REW CIO21 OTB CMMD CIO22 STC CMMD,C JSB STATS GET THE STATUS AND CHECK FOR AND B400 -CONTROLLER BUSY CPA B400 CLA,RSS TEST PASSED CCA TEST FAILED CLA ** TEST 22 BYPASSED ** FIX************** LDB B500 THE EXPECTED STATUS IS (LP, CB) JSB TEST (22) (26B) * * LDA D1 WAIT 1 MILL. SEC. JSB TIMR,I * JSB STATS GET THE STATUS AND CHECK FOR AND B400 -NOT BUSY CPA B400 CCA,RSS THE TEST FAILED CLA TEST PASSED LDB B100 LOAD THE EXPECTED STATUS (LP) JSB TEST (23) (27B) * * JSB LOPTN CHECK THE PROGRAM LOOP OPTION SPC 1 * ** FORMAT START AND VERIFICATION SECTION ** SPC 1 ENT38 LDA D23 STA TNUMB UPDATE TEST NUMBER LDA N64 SET THE SEARCH CONSTANT STA COUNT COMMN JSB FWDSP SPACE FORWARD ONE RECORD ISZ COUNT INCREMENT THE SEARCH COUNT RSS KEEP TRYING JMP ENT03 PRINT: COULDN'T FIND CYCLE START JSB FLGWT WAIT FOR THE OPERATION TO FINISH JSB EOTTS CHECK FOR THE END-OF-TAPE JMP ENT40 SET UP THE NEXT FORMAT JSB STATS GET THE STATUS AND FIRST CHECK AND B200 -FOR A TAPE MARK SZA,RSS JMP COMMN NO, TRY THE NEXT SEQUENCE JSB FWDSP SPACE FORWARD ONE MORE RECORD JSB FLGWT WAIT FOR THE OPERATION TO FINISH JSB STATS GET THE STATUS AND CHECK FOR AND B200 -ANOTHER TpAPE MARK CPA B200 JMP ENT42 CONTINUE TO THE FORMAT ID RECORD JMP COMMN NO TAPE MARK, TRY AGAIN ENT40 ISZ IDPT ADVANCE THE ID TABLE POINTER LDA IDPT,I GET THE NEXT FORMAT ID SZA,RSS WAS THIS THE LAST ONE ? JMP ENT41 YES, RESET THE TABLE POINTER STA *+1 NO, HALT AND DISPLAY THE NEXT ID NOP FORMAT ERROR HALT JMP MENT0 START THE PROGRAM AGAIN ENT41 LDA .IDFO RESET THE ID TABLE POINTER STA IDPT JMP ENT40+1 GET THE FIRST ENTRY ENT03 JSB S11CK SUPPRESS ERROR MESSAGE? JMP MENT2 YES CLA,CLE LDB .MS04 JSB FMTR,I 'COULDN'T FIND CYCLE START' MENT2 CCA LDB B200 THE EXPECTED STATUS IS TM JSB TEST (24) (30B) * * LDA ID GET THE FORMAT ID AND STOP STA *+3 FORMAT ERROR HALT JSB STATS LOAD THE STATUS AND THE LDA TNUMB LOAD TEST NUMBER NOP HALT AND WAIT FOR THE OPERATOR JMP MDIAG START OVER * IRG (2) ENT42 ISZ TNUMB INCREMENT THE TEST NUMBER JSB S15CK CHECK SWITCH 15 * * LIA SWRG LOAD THE SWITCH REGISTER'S STA SWREG -CONTENTS AND HOLD THEM IOR SW5 SET SWITCH 5 OTA SWRG LDA INBUF SET THE INPUT BUFFER'S S.A. LDB N1 SET THE NUMBER OF WORDS JSB CLRBF CLEAR THE READ BUFFER JSB READ READ THE RECORD JSB RSTAT CHECK THE READ STATUS JSB RREAD HAD DATA ERRORS, REREAD LDA INBUF,I GET THE FORMAT ID FROM THE TAPE IOR IDFOR ADD THE HALT MASK CHARACTERS CPA ID -RECORD & COMPARE TO THE SW REG JMP ENT80 IT MATCHES, CONTINUE CCA CLB THE EXPECTED STATUS IS CLEAR JSB TEST (25) (31B) * * LDB ID GET THE ID THAT WAS LOADED IN <4B@<ED CLB THE EXPECTED STATUS IS CLEAR JSB TEST (42) (52B) * * JSB FWDSP FORWARD SPACE ONE RECORD LDA SELCM ISSUE A UNIT SELECT COMMAND JSB ACMMD JSB STATS GET THE STATUS AND HOLD IT AND D8 -CHECK THE COMMAND REJECT BIT CPA D8 CLA,RSS THE TEST PASSED CCA THE TEST FAILED LDB D8 THE EXPECTED STATUS IS CR JSB TEST (43) (53B) * * JSB FLGWT WAIT FOR THE COMMAND FLAG * IRG (5) JSB FWDSP START SPACING OVER THE TAPE MARK LDA BSR ISSUE ANOTHER MOTION COMMAND AND CIO27 OTA CMMD -CHECK THE REJECT STATUS BIT JSB STATS GET THE STATUS AND HOLD IT AND D8 -CHECK THE REJECT STATUS BIT CPA D8 CLA,RSS THE TEST PASSED CCA THE TEST FAILED LDB D8 THE EXPECTED STATUS IS "CR" JSB TEST (44) (54B) * * JSB FLGWT WAIT FOR THE COMMAND FLAG * IRG (6) LDB RRF START A READ OPERATION JSB OCMMD DIO17 STC DATA,C SET THE DATA TRANSFER CONTROL JSB FLGWT WAIT FOR THE OPERATION TO FINISH * IRG (7) JSB STATS GET THE STATUS AND CHECK FOR THE AND D18 -DATA ERROR AND TIMING STATUS CPA D18 CLA,RSS THE TEST PASSED CCA THE TEST FAILED LDB D18 THE EXPECTED STATUS IS "DE","TE" JSB TEST (45) (55B) * * JSB FORID CHECK THE RECORDING FORMAT JMP *+3 IT'S 9 TRACK JMP ENT36 IT'S 7 TRACK JMP ENT36 IT'S A 7 TRACK MODE CPB IDFOR+1 WHICH 9 TRACK FORMAT ? JMP ENT37 IT'S 800 CPI LDB DEL0 IT'S 1600 CPI, LOAD THE TIMING JMP ENT58 -CONSTANTS ENT36 CPB IDFOR+2 IS IT 800 CPI ? JMP ENT37 YES, SET THE CONSTANT O CPB IDFOR+5 IS IT 800 CPI ? JMP ENT37 YES, SET THE CONSTANT CPB IDFOR+3 NO, TRY 556 CPI JMP ENT65 IT'S 556 CPI, SET THE CONSTANT CPB IDFOR+6 TRY THE OTHER 556 CPI JMP ENT65 IT'S THIS 556 CPI LDB DEL0+3 IT'S 200 CPI, LOAD THE TIMING JMP ENT58 -CONSTANTS ENT65 LDB DEL0+2 IT'S 556 CPI, LOAD THE TIMING JMP ENT58 -CONSTANTS ENT37 LDB DEL0+1 IT'S 800 CPI, LOAD THE TIMING ENT58 LDA B,I -CONSTANTS STA TMCN1 STORE FIRST CONSTANT (-10%) INB GET 'WINDOW' CONSTANT LDA B,I STA TMCN2 STORE SECOND CONSTANT (+10%) LDA RRF CIO28 OTA CMMD START A READ OPERATION JSB STATS LOAD THE STATUS AND CHECK JSB REJBT -THE REJECT BIT SZA,RSS WAS IT SET ? JMP REJCT YES CIO29 STC CMMD,C NO,START THE TAPE DIO18 STC DATA,C TURN ON DATA CHANNEL ALSO LDA INBUF INITIALIZE DMA FOR A 400 WORD IOR MSIGN -READ DAM9 CLC DMA-4 DAM10 OTA DMA-4 LDA N400 DAM11 STC DMA-4 DAM12 OTA DMA-4 CLA STA COUNT INITIALIZE TIMING COUNTER DIO19 SFC DATA WAIT APPROX. 1/4 SECOND JMP STDMA -FOR FIRST DATA FLAG INA,SZA JMP *-3 JSB S11CK SUPPRESS ERROR MESSAGE? JMP STDMA-2 YES ISZ TNUMB UPDATE TEST NUMBER JSB TSTNI,I PRINT CYCLE COUNT AND TEST NO. CLA,CLE LDB .MS20 JSB FMTR,I 'DATA FLAG WAIT TIMED OUT' JSB S15CK IS SWITCH 15 SET? JMP ENT90 STDMA STC DMA,C FLAG FOUND, START DMA LDA TMCN1 WAIT WHILE DMA IS WORKING JSB TIMR,I DMA11 SFC DMA DMA SHOULDN'T BE FINISHED JMP ENT75 IT IS FINISHED,ERROR LDA TMCN2 ADDITIONAL WAIT, DMA SHOULD JSB TIMR,I COMPLETE DURING THIS WAIT DMA12 SFS DMA IS DMA FINISHED? JMP ENT75 NO,ERROR JMP *+3 YES ENT75 JSB STATS ERROR, LOAD THE TEDST'S STATUS * IRG (8) CCA,RSS THE TEST FAILED CLA CLB THE EXPECTED STATUS IS CLEAR JSB TEST (46) (56B) * * ENT90 EQU * JSB FLGWT WAIT FOR THE OPERATION TO FINISH JSB BSRWF BACK SPACE THE RECORD * IRG (7) SPC 1 * ** DATA TRANSFER TEST SECTION ** SPC 1 LDA N5 SET THE INITIAL ITERATION COUNT STA ITCNT CCA INITIALLY SET THE FIRST PATTERN STA ANBUF -WORD LDA .ANSA SET THE FORMAT "A" PATTERN STA ANPAT LDA N408 SET THE WORD COUNT STA WDCNT LDA JSUBA SET THE COMPARE ROUTINE WITH STA WENT0 -THE ANSI DATA SUB CALL STA ENT74 LDA INBUF GET THE INPUT BUFFER'S S.A. JSB RDATA START THE DATA TRANSFER JSB WDCOM (47) (57B) * * LDA N5 SET THE INITIAL ITERATION COUNT STA ITCNT CCA INITIALLY SET THE FIRST PATTERN STA ANBUF -WORD LDA .ANSB SET THE FORMAT "B" PATTERN STA ANPAT LDA N408 SET THE WORD COUNT STA WDCNT LDA INBUF GET THE INPUT BUFFER'S S.A. JSB RDATA START THE DATA TRANSFER JSB WDCOM (48) (60B) * * LDA JSUBR SET THE COMPARE ROUTINE WITH STA WENT0 -THE RANDOM DATA SUB CALL STA ENT74 LDB N4 GET THE STARTING WORD COUNT ENT60 STB WDCNT SET THE WORD COUNT FOR RDATA LDA BASE1 SET THE BASE NUMBER FOR THE STA BASE -RANDOM NUMBER GENERATOR LDA INBUF GET THE INPUT BUFFER'S S.A. JSB RDATA START THE DATA TRANSFER JSB WDCOM (49-57) (61B-71B) * * JSB LENCH GO TO THE RECORD LENGTH CONTROL JMP ENT60 ALL RECORDS HAVEN'T BEEN READ ENT63 LDA N2 SET THE ROUTINE'S PASS COUNT STA TIME ENT59 LDA BASE1 SET THE BASE NUMBER FOR THE STA BASE -RANDOM NUMBER GENERATOR LDA INBUF SET THE READ BUFFER'S S.A. JSB RDATA DO THE DATA TRANSFER JSB WDCOM (58-59) (72B-73B) * * LDB WDCNT DOUBLE THE WORD COUNT BLS ISZ TIME INCREMENT THE ROUTINE'S PASS JMP ENT59 -COUNT AND DO IT ONE MORE TIME ENT76 EQU * LDA .TSRB THE TRACK SINGLE ROTATING BIT LDB N9 -PATTERN, 9 WORDS LONG JSB PATCO DO THE TRANSFER AND COMPARE LDA .TSAW THE TRACK SAWTOOTH PATTERN LDB N5 THE PATTERN IS 5 WORDS LONG JSB PATCO DO THE TRANSFER AND COMPARE LDA .CSAW THE CHANNEL SAWTOOTH PATTERN LDB N5 THE PATTERN IS 5 WORDS LONG JSB PATCO DO THE TRANSFER AND COMPARE SPC 1 JMP RECYC END OF THE MAIN PROGRAM SPC 1 * PATTERN DATA COMPARE * SPC 1 * CALL: "A" - PATTERN S.A. * "B" - NUMBER OF WORDS IN THE PATTERN SEQUENCE SPC 1 PATCO NOP STA AREG2 HOLD THE S.A. OF THE PATTERN STB BREG1 HOLD THE NUMBER OF WORDS LDB N4 SET THE NUMBER OF WORDS IN THE ENT64 STB WDCNT -FIRST RECORD LDA INBUF SET THE INPUT BUFFER'S S.A. JSB RDATA START THE DATA TRANSFER LDA AREG2 LDB BREG1 JSB PATCM (60-86) (74B-126B) * * JSB LENCH CHECK THE NEXT RECORD LENGTH JMP ENT64 ALL RECORDS HAVEN'T BEEN READ JMP PATCO,I SPC 1 * RECORD LENGTH CONTROL ROUTINE * SPC 1 * CALL: WDCNT IS ASSUMED TO BE LOADED PRIOR TO USING RDATA * * RETURN: P+1 - CONTINUE WITH THE WORD COUNT DOUBLED * P+2 - ALL THE RECORDS IN THE SERIES HAVE BEEN READ * "B" - THE NEXT WORD COUNT SPC 1 LENCH NOP LDA WDCNT LOAD THE WORD COUNT ALS DOUBLE IT STA WDCNT RESTORE IT TO THE COUNTER STA B SET "B" AND B3e777 IS THE WORD COUNT GREATER THAN SZA -1024 WORDS ? JMP LENCH,I NO, GET THE NEXT RECORD ISZ LENCH YES, EXIT AND CHANGE PATTERNS JMP LENCH,I SKP * DATA TRANSFER ROUTINE * SPC 1 * CALL: WDCNT HAS TO BE SET PRIOR TO ENTERING THIS ROUTINE * "A" = THE S.A. OF THE INPUT BUFFER SPC 1 RDATA NOP STA BUFAD SET THE BUFFER'S S.A. LDB WDCNT LOAD THE PRESET WORD COUNT JSB CLRBF CLEAR THE READ BUFFER JSB READ READ THE RECORD JSB RSTAT CHECK THE READ STATUS JSB RREAD HAD ERRORS RE-READ THE RECORD JMP RDATA,I SPC 1 * READ STATUS ROUTINE * SPC 1 * RETURN: P+1 - DATA ERRORS * P+2 - NO ERRORS SPC 1 RSTAT NOP LDA STATU RETRIEVE THE STATUS OF THE READ RAR,SLA CHECK THE DATA ERROR STATUS BIT JMP RSTAT,I HAD ERRORS, EXIT P+1 SZA,RSS JMP ENT50 NO OTHER STATUS, EXIT P+2 ALF REPOSITION THE BITS IN THE REG. SSA,RSS IS BIT 12 (SE) SET ? JMP ENT09 NO CCA YES CLB THE EXPECTED STATUS IS CLEAR JSB TEST * * JSB DECNO DECREMENT THE TEST'S NUMBER ENT09 LDA STATU RETRIEVE THE CURRENT STATUS AND NOTET MASK OUT THE (E0T) STATUS BIT SZA,RSS ENT50 ISZ RSTAT NO STATUS RETURN POINT JMP RSTAT,I SKP READ NOP STA BUFAD SAVE THE INPUT BUFFER'S S.A. STB WDCNT SAVE THE WORD COUNT JMP ENT51 READ1 NOP RE-READ ENTRY POINT LDA READ1 SET THE ROUTINE RETURN POINT STA READ ENT51 LDB SW5 SWITCH 5 SET? JSB SWRCK,I * RSS YES, DO SKIP FLAG READ JMP ENT55 DO A DMA TRANSFER LDB RRF START THE READ JSB OCMMD DIO20 STC DATA,C SET THE DATA TRANSFER CONTROL LDA BUFAD RETRIEVE THE BUFFER'S S.A. STA TBF01 LDB WD=B@ * LDB * JSB STMSK * * * STMSK NOP STA STAT2 AND B SZA,RSS ISZ STMSK LDA STAT2 JMP STMSK,I * .SEP DEF *+1 ASC 2,SE,_ ASC 2,OB,_ ASC 2,RW,_ ASC 2,TB,_ ASC 2,CB,_ ASC 2,TM,_ ASC 2,LP,_ ASC 2,ET,_ ASC 2,TE,_ ASC 2,CR,_ ASC 2,FP,_ ASC 2,DE,_ ASC 2,OF,_ SPC 1 SPC 1 MS00 ASC 6,# CYCLE(S)/ MS01 ASC 11,COMMAND WAS REJECTED/ MS02 ASC 10,ERROR IN WORD NO. #/ MS03 ASC 9,RE-READ REQUIRED/ MS04 ASC 13,COULDN'T FIND CYCLE START/ MS05 ASC 11,UNABLE TO READ RECORD/ MS06 ASC 2,EOT/ MS07 ASC 13,NO UNIT SELECT SWITCH SET/ MS12 ASC 14,CMMD FLAG WAIT TIMED OUT !/ MS13 ASC 9,WORD IN ERROR IS _ MS14 ASC 9,AND IT SHOULD BE _ MS16 ASC 6,STATUS WAS _ MS17 ASC 3,CLEAR/ MS19 ASC 5,# TEST #/ MS20 ASC 14,DATA FLAG WAIT TIMED OUT!/ HEAD ASC 15,13184A-7970E MAG. TAPE DIAG./ SPC 1 END EQU * SKP * ** PROGRAM INITIALIZATION AND CONFIGURATION ** SPC 1 ORG 16000B IENT1 LIA SWRG LOAD THE SWITCH REGISTER AND GET STA B -THE 131Q84'S S.C. AND THE DRIVE'S AND B37 -SPEED SZA WAS THERE A S.C. ENTERED? JMP IENT2 YES, CONTINUE HLT 73B NO,STOP AND LET THE OPERATOR JMP IENT1 -SET ONE IN THE SWITCH REGISTER IENT2 STA SC184 SAVE THE 13184'S SELECT CODE STA DATAC ALSO SAVE THE DATA AND COMMAND INA -CHANNEL I-O ADDRESSES STA CMMDC LDA B RESTORE "A" WITH THE SWITCH REG- ALF,ALF -ISTER CONTENTS AND POSTITION THE RAL,RAL -DRIVE'S SPEED INDICATOR AND B37 SZA WAS THE SPEED INDICATOR ENTERED ? JMP IENT3 YES, CONTINUE HLT 72B NO,STOP AND LET THE OPERATOR JMP IENT1 -ENTER ONE IENT3 SLA,RSS IS THE SPEED 12.5 IPS JMP IENT4 NO, TRY THE NEXT LDB T12.5 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT4 RAR SLA,RSS IS IT 25.0 IPS JMP IENT5 NO, TRY THE NEXT ONE LDB T25.0 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT5 RAR SLA,RSS IS IST 37.5 IPS JMP IENT8 LDB T37.5 YES, SET THE TIMING CONSTANTS JMP IENT7 IENT8 LDB TT45 IT'S 45.0 IPS,SET TIMING CONSTANTS IENT7 LDA T45.0 SET THE S.A. OF THE TIMING TABLE STA TBF00 LDA N11 SET THE NUMBER OF CONSTANTS THAT STA COUNT -ARE IN THE TABLE LDA B,I GET THE CONSTANT AND STORE IT IN STA TBF00,I -THE TABLE INB ADVANCE THE CONSTANT POINTER ISZ TBF00 ADVANCE THE TIMING TABLE POINTER ISZ COUNT INCREMENT THE CONSTANT COUNTER JMP *-5 NOT DONE YET IENT9 EQU * * * LDA B20K SET THE CONTROL WORD FOR THE DMA IOR SC184 -CHANNEL STA DMACW SAVE THE CONTROL WORD LDA SLCDD+1 CONFIGURE DATA CHANNEL LDB SLCDD SELECT CODES JSB CNFG * DEF DATAC * LDA SLCDC+1 CONFIGURE COMMAND CHANNEL LDB SLCDC SELECT CODES JSB CNFG * DEF CMMDC * LDB SW11 DMA CHANNEL 1 OR JSB SWRCK,I CHANNEL 2? JMP CONT7 CHANNEL 2 LDA SLCDM+1 CONFIGURE DMA CHANNEL 1 LDB SLCDM * JSB CNFG * DEF D6 * LDA SLCDA+1 CONFIGURE DMA CONTROL CHANNEL 1 LDB SLCDA * JSB CNFG * DEF D2 JMP CONT2 CONT7 LDA SLCDM+1 CONFIGURE DMA CHANNEL 2 LDB SLCDM * JSB CNFG * DEF D7 * LDA SLCDA+1 CONFIGURE DMA CONTROL CHANNEL 2 JSB CNFG * DEF D3 * CONT2 HLT 74B CONFIGURATION COMPLETE HALT JMP MDIAI,I GO TO MAIN PROGRAM * CNT00 BSS 1 SC184 BSS 1 D7 DEC 7 TEMP NOP * * CONFIGURE I/O INSTRUCTIONS * CNFG NOP CMA,INA ADA B STA CNT00 - (NUMBER OF POINTERS) LDA CNFG,I LDA A,I STA TEMP GET SELECT CODE CNFG1 LDA B,I GET I/O INSTRUCTION STA TBF00 LDA A,I AND B.17M ADA TEMP INSERT SELECT CODE STA TBF00,I INB ADVANCE POINTER ISZ CNT00 FINISHED? JMP CNFG1 NO ISZ CNFG YES JMP CNFG,I * * B.17M OCT 177700 B20K OCT 20000 * * POINTERS TO DATA CHANNEL SC * SLCD0 EQU * DEF DIO1 TEST 5 DEF DIO2 TEST 5 DEF DIO3 TEST 5 DEF DIO4 TEST 6 DEF DIO5 TEST 7 DEF DIO6 TEST 7 DEF DIO7 TEST 8 DEF DIO8 TEST 13 DEF DIO9 TEST 13 DEF DIO10 TEST 15 DEF DIO11 TEST 15 DEF DIO12 TEST 15 DEF DIO13 TEST 16 DEF DIO14 TEST 17 DEF DIO15 TEST 17 DEF DIO16 TEST 38 DEF DIO17 TEST 45 DEF DIO18 TEST 46 DEF DIO19 TEST 46 DEF DIO20 READ DE2F DIO21 READ DEF DIO22 READ DEF DIO23 READ DEF DIO24 READ DEF DIO25 TEST 28 DEF DIO26 TEST 28 DEF DIO27 TEST 29 DEF ENT54 READ SLCD1 EQU * * * POINTERS TO COMMAND CHANNEL * SLCD2 EQU * DEF BEGIN COMMAND EXERCISE DEF CIO2 FLGWT DEF CIO3 OCMMD DEF CIO4 OCMMD DEF CIO5 ACMMD DEF CIO6 ACMMD DEF CIO7 STATS DEF CIO8 TEST 2 DEF CIO9 TEST 3 DEF CIO10 TEST 4 DEF CIO11 TEST 9 DEF CIO12 TEST 9 DEF CIO13 TEST 9 DEF CIO14 TEST 10 DEF CIO15 TEST 11 DEF CIO16 TEST 11 DEF CIO17 TEST 12 DEF CIO18 TEST 17 DEF CIO19 TEST 17 DEF CIO20 TEST 21 DEF CIO21 TEST 22 DEF CIO22 TEST 22 DEF CIO23 TEST 26 DEF CIO24 TEST 33 DEF CIO25 TEST 33 DEF CIO26 TEST 38 DEF CIO27 TEST 44 DEF CIO28 TEST 46 DEF CIO29 TEST 46 DEF CIO30 READ DEF CIO31 TEST 29 DEF CIO32 TEST 30 SLCD3 EQU * * * POINTERS TO DMA CHANNEL * DEF DMA1 DEF DMA2 TEST 15 DEF DMA3 TEST 15 DEF DMA4 TEST 15 DEF DMA5 TEST 15 DEF DMA6 TEST 15 DEF DMA7 TEST 16 DEF DMA8 TEST 38 DEF DMA9 TEST 38 DEF DMA10 TEST 38 DEF DMA11 TEST 46 DEF DMA12 TEST 46 DEF DMA13 READ DEF DMA14 READ DEF DMA15 READ DEF ENT00 TEST 16 DEF ENT04 TEST 15 DEF STDMA TEST 46 * * POINTERS TO DMA CONTROL CHANNEL * SLCD5 EQU * DEF DAM1 TEST 15 DEF DAM2 TEST 15 DEF DAM3 TEST 15 DEF DAM4 TEST 15 DEF DAM5 TEST 38 DEF DAM6 TEST 38 DEF DAM7 TEST 38  DEF DAM8 TEST 38 DEF DAM9 TEST 46 DEF DAM10 TEST 46 DEF DAM11 TEST 46 DEF DAM12 TEST 46 DEF DAM13 READ DEF DAM14 READ DEF DAM15 READ DEF DAM16 READ DEF DAM17 READ SLCD6 EQU * * SLCDM DEF SLCD3 POINTERS TO DMA CHANNEL DEF SLCD5 I/O POINTER LIST SLCDA DEF SLCD5 POINTERS TO DMA CONTROL CHANNEL DEF SLCD6 I/O POINTER LIST * * DMA TIMING WINDOWS FOR 400 WORD TRANSFER * (TEST 46). THE ODD POSITION (1ST, 3RD, ETC.) * IS THE TIME BEFORE THE DMA FLAG IS DUE TO * SET, AND THE EVEN POSITION IS THE ADDITIONAL * TIME (WINDOW) DURING WHICH THE DMA FLAG * SHOULD SET. * * S45.0 DEC 10 1600 CPI 45.0 IPS DEC 2 " " " " DEC 20 800 " " " DEC 3 " " " " DEC 30 556 " " " DEC 4 " " " " DEC 84 200 " " " DEC 10 " " " " * * THE FINAL THREE CONSTANTS OF EACH TIMING * SECTION (S45.0, S37.5, S25.0,S12.5) ARE * USED FOR TESTS 28 - 30 (34B - 36B). * DEC 7 " DEC 1 " DEC 3 " * S37.5 DEC 12 1600 CPI 37.5 IPS DEC 2 " " " " DEC 25 800 " " " DEC 3 " " " " DEC 36 556 " " " DEC 4 " " " " DEC 101 200 " " " DEC 10 " " " " * DEC 8 " DEC 1 " DEC 4 " * S25.0 DEC 18 1600 " 25.0 " DEC 3 " " " " DEC 37 800 " " " DEC 4 " " " " DEC 54 556 " " " J640 DEC 7 " " " " DEC 151 200 " " " DEC 17 " " " " * DEC 12 " DEC 2 " DEC 5 " * S12.5 DEC 37 1600 " 12.5 " DEC 4 " " " " DEC 75 800 " " " DEC 8 " " " " DEC 109 556 " " " DEC 12 " " " " DEC 304 200 " " " DEC 33 " " " " * DEC 25 " DEC 4 " DEC 11 " * SPC 1 LBF EQU * SPC 1 END $6 E S 13185-18001 1449 S 0122 0113185A MICROFILMER INTFC. DIAGNOSTIC             H0101 ? ASMBABì̠35MDAGNS HDHP-35MDAGNS VSNDAŠ0 HPPAԠN.35-900 G0 SUP GNA̠PANGPDU A.ADDAGNSàNGUAҠANDSԠԠUP. B.ADDAGNSàMANPGAM .ADADDSS00B. D.ADSHG.HSԠDŠANDPNS .AD35SԠDŠNBS0-5. .AD566SԠDŠNBS6-. .PSSUNANDAԠҠHAԠ00. .ADSHGS ƠSԠ: 5HAԠAԠNDƠAHS SUPPSSҠHAS 3PNASԠS PNDAGNS (SUPPSSA̠PAҠNVNN SUPPSSҠMSSAGS 0SUPPSSNN-ҠMSSAGS 9SUPPSSHAԠAҠ56SԠYS G.PSSUN. H.SAԠ-ADADDSS000B .NGUŠƠSNGɯϠNAŠ-ADADDSS00B GNA̠MPUҠHAS 00ؠŠҠH000Ϡ06 060ؠŠҠH00Ϡ6 030ؠŠҠH00Ϡ6 00ؠŠҠH300Ϡ36 N̠PGAMHAԠMSSAGS 00NDƠDAG(APASSUNԩ 006NDƠSԠ(ASԠ 005ANAŠMDŠHA 00SԠDŠNPUԠMP 003USҠSԠDŠҠҠMU 00USҠSԠDŠҠҠM 00NϠDMANNGUAҠҠHADA 000NMA̠HAԠAҠ56SԠYS 060AP̠HA HDPGAMGANZANHA NGUAҠ00B NKAGŠABŠ UVŠ30B NKAGŠ NSANS50B AND SAGŠ 000B UVŠN̠ MANDAGNSS(-39 NAZANSN ABŠƠɯϠNSҠPNS HDNGUAҠNKAGŠAB AU0AGSҠN BUBGSҠN SנUSHGSҠN NPU0NUPԠHANN̠N G00B BGNMPGɠGϠϠNGUANSN ANBSSASԠNPUԠ(PHϠADҩ SPBSSRSנUPUԠ(Sԩ APBSSASԠUPUԠ(DUMPҠPUNH SNBSSSנNPUԠ(KYBAD AMDƠAASԠDƠAVB.MMY AMBSSASԠDƠAVB.MMY BSSNԠUSD(MAGAPũ MàBSSM̠SàMŠUԠUN BSSSԠDSҠɯ PϠBSSMPUҠYPůPNS USSàBSSUSҠADYPŠANDSԠD MMϠBSSMMYSZŠANDYP SҠBSSNNA̠SHGS MҠBSSM̠SàM SàBSSNGUAҠSHKP ɲASBSSNGҠϠASɠNVSN ϲASBSSA̠ϠASɠNVSN ASNBSSASɠNVSN DSN̠BSSDAGNSàSA̠NUMB MҠBSSMA PK3Ԡ55PAYҠHKD N̠NKAGŠANDDAANS GDƠZNƠNGUANSN SNԠ0UNԠSԠNUMB Z.Ԡ Z.Ԡ Z.MDà- NAZŠAP̠HAS ZHNP DAZSHGԠSANGAP̠HA DBZ.GԠSԠAP̠AN ZSH̠SABɠPUԠԠNPA PBZ.AMɠNSHD MPZHɠYS NBNԠADDSS MPZSH ZSHԠ060 NAZŠSԠDŠɯϠNSUNS ZSàNP SAZSàSAVŠSԠD SBZADSAVŠABŠADDSS Z̠DBZADɠGԠADDSSƠAN PBZ.MSԠHŠMNA MPZSìɠYSUNϠA DABɠNϠ-GԠNNS ANDZMMASKƠDSԠD ҠZSàADDNNנSԠD SABɠSŠ SZZADMVŠϠNԠADDSS MPZ̠DϠ ZSàNP ZADNP ZMԠ00 ZNDU HDHP-35MDAGNS GB DƠ.SGNKϠSHG.HK G6B DSNԠ3000DAGNSàSA̠ GZND BASŠPAGŠVAABS NU0566MUԠS.. DAAU0DAAHANN̠S.. MMDUDAA+MMANDHANN̠S.. HANUDMAHANN̠ AUԠUM+3SԠDŠƠUPUԠDV BUԠUM+SԠDŠƠUPUԠDV B.U6550BҠBUҠSANGADDSS NB.U000BNPUԠBUҠSANGADDSS UB.U5000BUPUԠBUҠSANGADDSS PAB.U6000BPAKBUҠSANGADDSS AGBSS BGBSS UNԠBSS YNԠBSSYŠUN DMAñBSSS..ƠMUԠAD DMAòBSSS..Ơ35AD NԠBSSUNԠҠBUҠUN BUƠBSSUNԠҠBUҠADDSS SԱBSSMPAYPAYHK NBUƠBSSPNҠϠNPUԠBU BUƠBSSPNҠϠUPUԠBU PAKBBSSPNҠϠPAKBU SAUNPSAUS-NԠUSD SGBSSMPAYSHGSAV NԠBSSDUNԠҠDMAANS NUMBUSNUNԠSԠNUMB NנNPDUNԠN GDנNPGDD BADנNPBADD B3Ԡ3 B00Ԡ00 B60KԠ60000 BKԠ000 GϠԠ00000"G"MMAND PKԠ00DDPAYD PKԠVNPAYD SHGSҠMASKS S0Ԡ00BԠ S09Ԡ000BԠ9 Sױ0Ԡ000BԠ0 SױԠ000BԠ SױԠ0000BԠ Sױ3Ԡ0000BԠ3 SױԠ0000BԠ Sױ5Ԡ00000BԠ5 NUMA̠NSANS .Ԡ .00Ԡ00 D0Dà0 D3Dà3 D3Dà3 NDà- NDà- NDà- NDà-ҠBUҠNGH N56Dà-56MAMUMYŠUN MŠDAYAB DY0NP30USDAY DYNP00USDAY DYNP00USDAY DY3NP35USDAY BƠDƠB.PNҠϠҠBU ADDDƠNұ ADDDƠNҲ ADD3DƠN3 ADDDƠNҴ ADD5DƠN5 ADD6DƠN6 ADDDƠNҷ ADDDƠNҸ NBҠDƠNB. NKSϠSUBUNS MSDƠMSGPNҠϠMSSAGŠUN .ZHDƠZHPUSHASNAPS .ZSàDƠZSàPNҠϠHANGŠSԠD MҲDƠ.MҠNKϠSPA̠MA M3DƠM03NKϠSPA̠MA MԲDƠM0NKϠSPA̠MA NSDƠD0 PNDƠPN PNDƠPN9 PNDƠPNPAҠMDŠUNҠANS UBƠDƠUB. PAK.DƠPAB. PHSDƠPHA PԠDƠPY .BGNDƠBGNPNҠϠSAԠƠDAGNS .SAҠDƠSAԠ000BSAԠƠDAGNS SNDƠSNϠPNҠϠPNԠSԠ SPà MMDàNPNUPԠNKҠMMANDHANN DAAàNPNUPԠNKҠDAAHANN NYNPNϠYAG GNPANSҠAG SPà PԠMPPN PN6MPPN ADSBADD ADSBADD AD3SBADD3 ADSBADD AD5SBADD5 AD6SBADD6 ADSBADD ADSBADD SGANP ASנADSHG.ϠA MPSGA A DBeUMB-ANDNUMBҠBŠSPPNG NANMNԠSԠ HԠ5BHAԠNҠSP N3U MPDAGɠ MSG0ASà3DAAAGAԠMDUԯ NDU PGAMNAZANSN SPà NGUANSN ZNƠàNPàUNɯϠSYSM MŠDAYABŠSUP DAMàGԠMNGMNGUA MANAMAKŠԠPSV ASDVDŠBY(500US ASDVDŠԠBY(50US SABSAVŠԠMPAY ASDVDŠԠBY(5US ADABMPUŠ35USDAY MANAMAKŠԠNGAV SADY3SAVŠԠҠ35USDAY DABGԠ50USDAY ASDVDŠBY(5US ASDVDŠBY(6.5US SABSAVŠԠMPAY ASDVDŠBY(3.US NANASŠDAYM NA MANAMAKŠԠNGAV SADY0SAVŠ3USDAY MANAMAKŠԠPSV ADABSUP90USDAY MANAMAKŠԠNGAV SADYSAVŠԠҠ90USDAY SADY NDƠMŠDAYSUP SԠDMAHK HKNGUA DAPϠADMPUҠANDPNS AND.00HKҠHANN̠DMA SZASSSԠZ? MPDMAYS-KϠNNU MPDMAN-PԠNϠDMA DMAU DAPϠADMPUҠANDPNS AND.HKҠHANN̠DMA SZASHŠANYDMA? MPDMA3YS-NNU MPDMAN-PԠNϠDMA DMA3U NDDMAHK HKHADA SàHANSUPDUNԠGS SàHAN+ҠBHHANNS ASUPUPUԠDUN ,VAHANUPUԠԠHANN̠ AHAN+UPUԠԠϠHANN̠ BHANADBAKNHANN̠ PABSԠHŠSAMŠD? MPDMAYS-NNU MPDMAN-PԠNϠDMA DMAU BHAN+ADBAKNHANN̠ PABSԠHŠSAMŠD? MPDMA5YS-KϠNNU DMAUN-PԠNϠDMA SBMSɠPԠ DƠDMA6UN DƠ055PNҠϠMSSAG 055U ASà0NϠDMA DMA6U AAҠA BAҠB HԠBHAԠAҠMSSAG MPZNƠYϠNGUŠAGAN DMA5U NDƠDMAHK SUPNϠUPUԠDVŠAG BSUPAGVAU DABUԠADUPUԠDVŠSԠD SZASSSԠZ? SBNYYS-SԠAG DAAUԠN-YNԠDV SZASSSԠZ? SBNYYS-SԠAG NDƠHK SB.ZHɠPUԠҠHASNAPS N5SBSGAADHŠSHGS SABHDԠMPAYN"B" ANDB3MASKHŠ5SB'S SZAASHŠASԠDŠND MPN0YSNNU HԠBNϬSPANDԠHŠPA MPN5SԠHŠSHGS N0SASñ5SAVŠHŠ35'SSԠD SADAAàSAVŠHŠDAAANDMMAND NA-HANN̠-ϠADDSSS SAMMD DABSŠ"A"HHŠSHG- AƬAƠ-S'SNANSANDPSN A̬A̠-HŠ566B'S-ϠSԠD ANDB3MASKHŠ5SB'S SZAASHŠASԠDŠND? MPNԱYSNNU HԠ3BNϬSPANDԠHŠPA MPN5-SԠHŠS+HGS NԱSASMàSAVŠHŠ566B'SSԠD DMASUP DAB0KSԠHŠN̠DҠH ҠSMà-SԠDMAHANN̠ϠHAND SADMAñ A6B-HŠ566BM-UԠAD DAB0KSԠHŠN̠DҠH ҠSñ5-SNDDMAHANN̠ϠHAND SADMAò AB-HŠ35NAŠAD SUPɯϠNSUNS DASñ5GԠSԠDŠҠDAAHANN DB.DAԠGԠPNҠϠS SB.ZSìɠGϠHANGŠSԠDS DASñ5GԠDAAHANN̠SԠD NAMPUŠMMANDHANN̠S.. DB.MDGԠPNҠS SB.ZSìɠGϠHANGŠSԠDS DASMàGԠS..ƠMϠUԠAD DB.MàGԠPNҠϠɯϠS SB.ZSìɠGϠHANGŠSԠDS HԠBNZANMPŠHA MP.SAҬɠUMPϠHŠMANPGAM SPà Sñ5BSS35SԠD SMàBSSMUԠSԠD SPà B3Ԡ3 B0KԠ0000 .DAԠDƠ+PNҠϠDAAHS DƠDA0 DƠDA0 DƠDA03 DƠDA0 DƠDA05 DƠDA06 DƠDA0 DƠDA0 DƠDA09 DƠDAԱ0 DƠDAԱ DƠDAԱ DƠDAԱ3 DƠDAԱ DƠDAԱ5 DƠDAԱ6 DƠDAԱ DƠDAԱ DƠDAԱ9 DƠDAԲ0 DƠDAԲ DƠDAԲ DƠDAԲ3 DƠDAԲ DƠDAԲ5 DƠDAԲ6 DƠDAԲ DƠDAԲ DƠDAԲ9 Dà-NDƠS .MDDƠ+PNҠϠMMANDS DƠMD0 DƠMD0 DƠMD03 DƠMD0 DƠMD05 DƠMD06 DƠMD0 DƠMD0 DƠMD09 DƠMD0 DƠMD 'DƠMD DƠMD3 DƠMD DƠMD5 DƠMD6 DƠMD DƠMD DƠMD9 DƠMD0 DƠMD DƠMD DƠMD3 DƠMD DƠMD5 DƠMD6 DƠMD DƠMD DƠMD9 DƠMD30 DƠMD3 DƠMD3 DƠMD33 DƠMD3 Dà- .MàDƠ+PNҠϠMϠADS.. DƠM00 DƠM0 DƠM0 DƠM03 DƠM0 DƠM06 DƠM0 DƠM0 DƠM09 DƠMñ0 DƠMñ DƠMñ DƠMñ3 DƠMñ DƠMñ5 DƠMñ6 DƠMñ Dà-NDƠS PNԠYŠUN SPà PYԠNP DAYNԠGԠHŠYŠNUMB SAPYñSAVŠԠҠMSSAG DBSױ0 SBSìɠSSH0S? MPPYԬɠYS- SBMSɠUPUԠYŠ DƠPYòUN DƠMSG00PNҠϠMSSAG PYñNPYŠNUMB MSG00ASà6Y(S PYòU SBMԲɠDϠ DƠM MPPYԬ SNϠNP DAYNԠGԠHŠYŠNUMB SASNSAVŠYŠҠMSG DANUMBGԠHŠSԠNUMB SASNSAVŠSԠҠMSG SBMSɠUPUԠMSSAG DƠSN3UN DƠMSG9PNҠϠMSSAG SNNPYŠ SNNPSԠ MSG9ASà5SԠ SN3U MPSNϬ PNԠHŠGDANDBADHAAS SPà PHAҠNP DAUNԠGԠDUN ADAB00ADD00A NAGԠDN SANנSAVŠ SAPHAPUԠDUNԠNMSSAG SBMSɠGϠUPUԠMSSAG DƠPHAUN DƠMSGPNҠAMSSAG PHANPDN-UN PHAU DAPAKBɠADHŠDN SABADנSAVŠBADD SBM3ɠUPUԠMSSAG DƠMSG3PNҠϠMSSAG DABUƬɠADHŠGDD SAGDנSAVŠGDD SBM3ɠUPUԠMSSAG DƠMSGPNҠϠMSSAG MPPHAҬ MSGASà0DNҠ MSG3ASà9DNҠS_ MSGASà9ANDԠSHUDBŠ_ SUBUNŠM0-SUPҠA̠ϠM A: SBMԲɠNDԠA DƠ * JSB I.36 * * EXIT: * A=0: OPERATION INITIATED. XFER CONTROL TO C.36 ON DMA OR * TIMER INTERRUPT * 1: (NOT USED) * 2: ILLEGAL RQ OR CONTROL-RQ SUBFUNC CODE * 3: "INOPERABLE DEVICE" -- NO CORRESPONDING ST ENTRY. * HIGHLY UNLIKELY ERROR; OCCURS ONLY WHEN THERE ARE * MORE THAN 32 SUBCHANNELS * 4: IMMEDIATE COMPLETION * B=TRANSMISSION LOG (ONLY IF A=4) * * * OCT 113 VERSION NUMBER: YEAR OCT 1425 BITS 9-6=MONTH...BITS 5-0=DAY I.36 NOP ?I1 JMP FIRST ZAPPED AFTER FIRST TIME STA SC SAVE SELECT CODE CLA CLEAR DYNAMIC STATUS STA &XSTA,I * GET STATE TABLE ADDRESS LDA &UNIT,I GET SCHNL LSR 6 AND =B37 STA SCHNL ADA STX PTR TO ST ENTRY OFFSET LDB &STAD,I SZB,RSS JMP NOST NO ST ENTRY (VERY RARE) ADB A,I PTR TO ST ENTRY STB @ST * GO TO APPROPRIATE I/O SECTION LDA &CNTL,I GET RQ CODE AND =B77 CPA =D1 JMP IREAD CPA =D2 JMP IW+RIT CPA =D3 JMP ICNTL * *************************** * EXIT INITIATION SECTION * *************************** * BADRQ EQU * ILL RQ CODE LDA =D1 JMP I.36,I ABORT * NOST EQU * NO ST ENTRY LDA =D3 JMP I.36,I ABORT * BADAD EQU * BAD WCS ADDR LDA =B3 STA &XSTA,I JMP IEXIT * VIOL EQU * WCS ADDR CONFLICT (ASSIGN/ENABLE) LDA =B7 STA &XSTA,I JMP IEXIT * NOBUF EQU * BUFFER TOO SMALL (READ STATE) LDA =B13 STA &XSTA,I JMP IEXIT * BADST EQU * I/O OR ENABLE RQ ON UNKNOWN SCHNL LDA =B15 STA &XSTA,I JMP IEXIT * NRESP EQU * NON-RESPONDING DMA LDA =B17 STA &XSTA,I * IEXIT EQU * NO XMISSN: CONTROL (& STATE) EXIT CLA RETURN 0 XMISSION STA &WCNT,I DDONE EQU * DMA XMISSN COMPLETE CLA FAKE XMISSN RESIDUE STA COUNT IDONE EQU * COMPLETION EXIT JSB TIO B=XMISSN LOG LDA =D4 JMP I.36,I DONE * IPAUS EQU * TIME-OUT EXIT JSB SAVE CLA JMP I.36,I WAIT FOR INTERRUPT * * *************** * LOGICAL I/O * *************** * * ****************************** * * I R E A D * * EXEC CALL: * JSB EXEC * DEF *+6 * DEF RCODE * DEF CONWD * DEF BUFR * DEF LEN * DEF WCSAD * : * RCODE DEC 1 * CONWD DEC * BUFR BSS <2W, W=# MICROWORDS> * LEN DEC <2W OR -4W> * WCSAD OCT * IREAD EQU * READ OR STATUS RQ LDA &CNTL,I GET SUBFUNC FIELD AND ENSURE CLB EXTRANEOUS BITS ARE NOT SET LSR 6 CPA =D1 JMP STATE READ STATE RQ SZA JMP BADRQ ILL RQ CODE JSB UNKN? DOWN STATE OR DOWN 12978'S? JMP BADST YES: DON'T ALLOW I/O JSB SIO LDA &UNIT,I DMA ASSIGNED? SSA,RSS JMP IR.1 NO JSB GTSC GO TO APPROPRIATE DMA DVR DEF DR1K DEF DR1K DEF IR256 ALWAYS NON-DMA IR.1 EQU * JSB GTSC GO TO APPROPRIATE NON-DMA DVR DEF IR1K DEF IR1K DEF IR256 * DR1K EQU * DMA 1K READ JSB SET1K SET UP 1K BOARD CLA,CCE A=CWD1 INDICATES NO STC/CLC JSB DMA E=1 FOR READ JSB XFR1K DO DMA TRANSFER JMP DDONE * IR1K EQU * NON-DMA 1K READ JSB SIO1K INITIALIZE TRANSFER JSB NR1K JMP IDONE DONE JMP IPAUS TIME-OUT * IR256 EQU * NON-DMA 1/4K READ JSB NODMA RETURN DMA CHANNEL JSB NR256 JMP IDONE DONE JMP IPAUS TIME-OUT * * ****************************** * * I W R I T * * EXEC CALL: * JSB EXEC * DEF *+6 * DEF RCODE * DEF CONWD * DEF BUFR * DEF LEN * DEF WCSAD * : * RCODE DEC 2 * CONWD OCT * BUFR BSS <2W, W=# MICROWORDS> * LEN DEC <2W OR -4W> * WCSAD OCT * IWRIT EQU * JSB UNKN? DOWN STATE OR DOWN 12978'S? JMP BADST YES: DON'T ALLOW I/O LDA &CNTL,I ENSURE EXTRANEOUS BITS ARE NOT SET AND =B177600 SZA JMP BADRQ JSB SIO LDA &UNIT,I DMA ASSIGNED? SSA,RSS JMP IW.1 NO JSB GTSC GO TO APPROPRIATE DMA DVR DEF DW1K DEF DW1K DEF IW256 ALWAYS NON-DMA IW.1 EQU * JSB GTSC GO TO APPROPRIATE NON-DMA DVR DEF IW1K DEF IW1K DEF IW256 * DW1K EQU * DMA 1K WRITE JSB SET1K SET UP 1K BOARD CLA,CLE A=CWD1 INDICATES NO STC/CLC JSB DMA E=0 FOR WRITE JSB XFR1K DO DMA TRANSFER JSB VERF? CHECK FOR VERIFY OPTION JMP DDONE NO VERIFY RQ JSB NODMA RETURN DMA TO SYSTEM JSB SIO1K RE-INITIATE I/O JMP IPAUS * IW1K EQU * NON-DMA 1K WRITE JSB SIO1K INITIALIZE TRANSFER JSB NW1K JMP *+2 DONE--CHECK FOR VERIFY RQ JMP IPAUS TIME-OUT JSB VERF? JMP IDONE NO VERIFY RQ JSB RESET JSB SIO1K RE-INITIATE I/O JMP IPAUS TIME-OUT * IW256 EQU * NON-DMA 1/4K WRITE JSB NODMA RETURN DMA CHANNEL JSB NW256 JMP *+2 DONE--CHECK FOR VERIFY RQ JMP IPAUS TIME-OUT JSB VERF? JMP IDONE NO VERIFY RQ JSB RESET JMP IPAUS TIME-OUT * * ****************************** * * I C N T L * ICNTL EQU * LDA &CNTL,I GET SUBFUNC FIELD AND ENSURE CLB EXTRANEOUS BITS ARE NOT SET LSR 6 CPA =D1 JMP ASSGN CPA =D2 JMP ENAB CPA =D3 JMP DISAB CPA =D4 JMP DNRQ JMP BADRQ ILL CNTL RQ * * ****************************** * * A S S G N * * EXEC CALL: * JSB EXEC * DEF *+4 * DEF RCODE * DEF CONWD * DEF WCSAD * : * RCODE DEC 3 * CONWD OCT * WCSAD OCT * * FOR HP12978A, ACCEPT ASSIGN REQUEST ONLY IF 1/4K BOARD IS IN DOWN STATE * OR ADDRESS IS SAME AS CURRENT BASE ADDRESS. SET HP12978A ENABLED. FOR * HP13197A IS IN DOWN STATE, SET DISABLED. * * NOTE THAT WCSAD WILL BE PASSED THROUGH &BUFR IN THE EQT. * * WE USE 'FLAG' HERE TO INDICATE WHETHER ADDRESS CONTENTION CHECK * SHOULD BE MADE ON DOWNED BOARD. FOR HP13197A, WE DON'T HAVE TO * SINCE BOARD WILL COME UP DISABLED. BUT FOR HP12978A, WE MUST * SINCE BOARD IS ALWAYS ENABLED. * ASSGN EQU * JSB GTSC CASE ON SCHNL DEF A.1K DEF A.1K DEF A.256 1/4K BOARD * A.1K EQU * PHYSICALLY ASSIGN ADDR TO 1K BOARD CLA SET 'FLAG' FOR "DISABLED" STA FLAG LDA =B177000 JSB A.BA+S ADJUST BASE ADDR AND CHECK JSB A.SET SET BASE ADDR IN ST ENTRY JSB DOWN? JSB DABLE YES: LOGICALLY DISABLE ALL SCHNLS JSB BASES A=SCHN1 BASE ADDR, B=SCHN0 BASE ADDR ALF,ALF RAR,RAR (WE SHIFT AGAIN BELOW) IOR B RAR JSB A1K SEND BLOCK NUMBERS JMP IEXIT * A.256 EQU * CLA,INA SET 'FLAG' FOR "PSEUDO-DISABLED" STA FLAG LDA =B177400 JSB A.BAS ADJUST BASE ADDR AND CHECK JSB DOWN? JMP A.OK LDA @ST,I NO: CHECK FOR SAME BASE ADDR AND =B177 ALF,ALF CPA BASE JMP IEXIT THE SAME: BOARD IS ALREADY ENABLED JMP BADAD NOT THE SAME: REJECT ASSIGN RQ A.OK EQU * LOGICALLY ALTER STATE OF 1/4K BOARD JSB A.SET ON RETN, A=ST ENTRY AND =B117777 (ASSUME PRIOR DOWN STATE) STA @ST,I LDA #UNKN REDUCE UNKN COUNTER SSA,INA STA #UNKN JMP IEXIT * A.BAS NOP INTERNAL SUBR. A=BASE ADDR MASK. AND &BUFR,I ISOLATE BLOCK/MODULE NUMBER SSA JMP BADAD ERROR: WCS ADDR<0 STA BASE LDB @ST,I SCHNL ENABLED? BLF,RBR SSB,SLB DOWN (NEITHER BIT 0)? LDB FLAG YES: USE FLAG CMB,SSB,SLB ENABLED OR PSEUDO-DISABLED? JMP A.BAS,I NO--OK TO PROCEED LDB @ST CHECK FOR CONFLICTS WITH OUR SCHNL JSB DUPE? (SISTER SCHNLS WERE CHECKED PREVIOUSLY) JMP VIOL ERROR: CONFLICTING ADDR SPACES JMP A.BAS,I * A.SET NOP SET BASE ADDR IN ST ENTRY LDA @ST,I AND =B177600 LDB BASE BLF,BLF IOR B STA @ST,I JMP A.SET,I A=ST ENTRY * * ****************************** * * D I S A B * * EXEC CALL: * JSB EXEC * DEF *+3 * DEF RCODE * DEF CONWD * : * RCODE DEC 3 * CONWD OCT * * ALGORITHM: * 1.0 IF DOWN, IGNORE REQUEST WITHOUT ERROR (ESSENTIALLY DISABLED * ALREADY) * 1.1 IF 12978A (AND NOT DOWN), REQUEST HAS NO AFFECT SINCE CANNOT * DYNAMICALLY ALTER CONTROL STATE. RETURN PSEUDO-DISABLE ERROR * BUT DO NOT ALTER STATE TABLE. * 1.2 IF 13197A (AND NOT DOWN), DYNAMICALLY DISABLE BOARD OR SET * PSEUDO-DISABLE SUBCHANNEL IF BROTHER SUBCHANNEL IS ENABLED. * (IF THERE ARE UNKNOWN 12978A'S, WE DON'T HAVE TO DO THIS * SINCE WE KNOW THAT NO ENABLE REQUEST HAS BEEN HONORED. * NONETHELESS, WE IGNORE THIS DEGENERATE CASE.) * DISAB EQU * JSB DOWN? INACTIVE SCHNL? JMP IEXIT YES: IGNORE RQ WITHOUT NOTICE JSB GTSC CASE ON SCHNL DEF D.1K DEF D.1K DEF D.2 1/4K BOARD: RETURN PSEUDO-DISABLE ERROR * D.1K EQU * JSB EN? BROTHER SCHNLS ENABLED? JMP D.PSD YES: PSEUDO-DISABLE THIS ONE JSB DABLE NO: LOGICALLY DISABLE ALL SCHNLS JSB DS1K PHYSICALLY DISABLE 1K BOARD JMP IEXIT * D.PSD EQU * PSEUDO-DISABLE BOARD LDA @ST,I AND =B147777 CLEAR ENABLE BIT IOR =B060000 SET PSEUDO-DISABLE BIT STA @ST,I D.2 EQU * SET PSEUDO-DISABLE ERROR LDA =B11 STA &XSTA,I JMP IEXIT * * ******************************** * * E N A B * * EXEC CALL: * JSB EXEC * DEF *+3 * DEF RCODE * DEF CONWD * : * RCODE DEC 3 * CONWD OCT * * WE FILTER "UNKNOWN" SUBCHANNELS FIRST: NO SUBCHANNEL MAY BE ENABLED * UNTIL THE STATE OF ALL 12978A BOARDS IS KNOWN (BY ASSIGNING A BASE * ADDRESS OR DISABLING) AND UNTIL THE STATE OF THE CURRENT SUBCHANNEL * IS KNOWN (BY ASSIGNING A BASE ADDRESS). THESE RESTRICTIONS ARE * NEEDED: (1) TO ENSURE THE INTEGRITY OF THE ADDRESS CONTENTION CHECKS * (SINCE THE 12978A BOARD IS ALWAYS ENABLED, WE CANNOT PREVENT ADDRESS * CONFLICTS UNTIL WE ARE MADE AWARE OF THEIR ADDRESS SPACE), AND (2) TO * ENSURE THAT DYNAMICALLY CONFGIGUARABLE BOARDS (EG., 13197A) HAVE BEEN * ASSIGNED BLOCK NUMBERS PRIOR TO ENABLING. * * IF 12978A (1/4K) BOARD, WE ACCEPT REQUEST BUT IT HAS NO AFFECT. THIS * IS BECAUSE BOARD MUST ALREADY BE ENABLED (SINCE WE ENABLED BOARD WHEN * ADDRESS WAS ASSIGNED). * ENAB EQU * JSB UNKN? DOWN STATE OR DOWN 12978'S JMP BADST YES: DON'T ALLOW ENABLE JSB #SCHN GET # SCHNLS (NEGATIVE) STA CNT1 STA CNT2 FOR E.PSD SUBR LDB &STAD,I STB @PTR E.LP1 EQU * CHK FOR CONFLICTS WITH EACH SISTER SCHNL LDA @PTR,I IF SCHNL IS NOT DISABLED, NO NEED ALF,RAR TO CHECK FOR CONFLICTS: DONE BEFORE CMA,SSA,SLA,RSS BOTH BITS RESET (=DISABLED)? JMP E.NX1 NO: IGNORE NON-DISABLED SCHNL LDA @PTR,I ST ENTRY AND =B177 CONVERT MODULE NUMBER... ALF,ALF ...TO BASE ADDR LDB @PTR PTR TO ST ENTRY JSB DUPE? JMP VIOL CONFLICT E.NX1 EQU * ISZ @PTR ISZ CNT1 JMP E.LP1 JSB GTSC CASE ON SCHNL DEF E.1K DEF E.1K DEF IEXIT 1/4K BOARD: ALREADY ENABLED * E.1K EQU * 1K BOARD JSB BASES A=SCHNL1 MOD#, B=SCHNL0 MOD# ALF,ALF CONVERT MODULE NUMBERS... BLF,BLF ...TO BASE ADDRS JSB DJNT? CONFLICT BETWEEN SCHNLS? DEC 1 DEC 0 JMP VIOL YES: NOT DISJOINT JSB E.PSD NO: PSEUDO-DISABLE SISTER SCHNLS JSB EN1K PHYSICALLY ENABLE BOARD LDA @ST,I LOGICALLY ENABLE SCHNL AND =B147777 IOR =B010000 STA @ST,I JMP IEXIT * * INTERNAL SUBROUTINE: SET DISABLED SISTER SCHNLS TO PSEUDO-DISABLE. * THIS ROUTINE IS CALLED ONLY FOR DEVICES WITH INTERDEPENDENT SCHNLS * WHICH CANNOT BE INDIVIDUALLY DISABLED/ENABLED. * E.PSD NOP LDB &STAD,I E.LP2 EQU * PSEUDO-DISABLE OTHER SCHNLS LDA B,I ENABLED? ALF,SLA JMP E.NX2 LDA B,I NO: SET PSEUDO-DISABLE BIET IOR =B020000 STA B,I E.NX2 EQU * INB ISZ CNT2 JMP E.LP2 JMP E.PSD,I * * ****************************** * * D N R Q * * EXEC CALL: * JSB EXEC * DEF *+3 * DEF RCODE * DEF CONWD * : * RCODE DEC 3 * CONWD OCT * * CALLED BEFORE :DN'ING BOARD (IE., REMOVING FROM MAINFRAME). WE SET DOWN * STATE FOR TWO REASONS: (1) EXCLUDE SUBCHANNELS FROM ADDRESS CONTENTION * CHECKS, AND (2) PREVENT SUBSEQUENT ACCESS TO BOARD WITHOUT PRIOR ASSIGNMENT * OF BASE ADDRESS. FOR 13197A (1K) BOARD, WE ALSO PHYSICALLY DISABLE BOARD. * WE DO NOT REQUIRE THAT BOARD IS IN INACTIVE STATE AT THE TIME ON THE * ASSUMPTION THAT IF USER IS ABOUT TO REMOVE BOARD, HE MUST HAVE FULL * CONTROL OVER IT. FOR 12978A (1/4K) BOARD, WE MUST INCREMENT "UNKN" * COUNTER. * DNRQ NOP JSB SETST SET ALL SCHNLS TO DOWN STATE OCT 030000 JSB GTSC CASE ON SCHNL DEF DN.1K DEF DN.1K DEF DN256 1/4K BOARD * DN.1K EQU * PHYSICALLY DISABLE 1K BOARD JSB DS1K JMP IEXIT * DN256 EQU * DECREMENT "UNKN" COUNTER LDA #UNKN SSA,INA INCREMENT IF NEGATIVE STA #UNKN JMP IEXIT * * ****************************** * * S T A T E * * EXEC CALL: * JSB EXEC * DEF *+5 * DEF RCODE * DEF CONWD * DEF STATE * DEF LEN * : * RCODE DEC 1 * CONWD OCT * STATE BSS 2 * LEN DEC <2 OR -4 (OR GREATER)> * * NOTE THAT THIS IS A READ REQUEST. THIS IS SO THAT WE CAN * RETURN INFORMATION TO THE CALLER. THE LENGTH OF STATE AND * THE SIZE OF LEN MAY EXCEED TWO WORDS. * STATE EQU * LDA &LEN,I CHECK BUFLEN SSA,RSS BYTE COUNT? JMP S.CHK CMA,INA YES INA ROUND UP TO WORD ARS S.CHK EQU * ADA =D-2 BUFLEN>=2? SSA JMP NOBUF NO i640 LDA @ST,I FORMAT SCHNL & STATUS LSR 7 AND =B177 LDB &BUFR,I STA B,I INB LDA @ST,I FORMAT BASE ADDR AND =B177 ALF,ALF STA B,I JMP IEXIT * * *************** * SUBROUTINES * *************** * * ****************************** * * B A S E S * * EXIT: * A= BASE ADDR FOR SCHNL 1 * B= BASE ADDR FOR SCHNL 0 * * PICKS UP BASE MODULE #'S FOR 2-SCHNL DEVICE (EG., 1K BOARD) AND PUTS INTO * A & B REGISTERS. * BASES NOP LDB &STAD,I PTR TO ST ENTRIES LDA B,I FIRST ST ENTRY AND =B177 BASE ADDR FOR SCHNL 0 SWP INA LDA A,I SECOND ST ENTRY AND =B177 BASE ADDR FOR SCHNL 1 JMP BASES,I * * ****************************** * * D A B L E * * LOGICALLY DISABLE ALL SISTER SUBCHANNELS. APPLIES TO ALL INTERCONNECTED * SUBCHANNELS (EG., 13197A). * DABLE NOP JSB SETST DISABLE ALL SCHNLS OCT 0 JMP DABLE,I * * ****************************** * * D J N T ? * d6* ENTRY: * LDA * LDB * JSB DJNT? * DEC * DEC * * * VERIFIES THAT THE TWO SCHNLS FORM DISJOINT ADDR SPACES. * THAT IS: * NOT (BASE1<=BASE2 * DOWN? NOP LDA @ST,I GET ST ENTRY ALF,RAR SSA,SLA,RSS BOTH BITS SET? ISZ DOWN? NO: NOT IN DOWN STATE JMP DOWN?,I * * ****************************** * * D U P E ? * * ENTRY: * LDA * LDB * JSB DUPE? * * * VERIFIES THAT SCHNL ADDR SPACE IS DISJOINT FROM ANY OTHER * NON-DISABLED (NOT UNKNOWN) SCHNLS * DUPE? NOP STA D.BAS STB D.ST LDA D.ST,I GET SCHNL LSR 7 AND =B37 STA DU.1+2 LDA ST PTR TO START OF ST STA D.PTR D.LP EQU * LDA D.PTR,I NEXT ST ENTRY ALF,RAR SSA,SLA,RSS UNKNOWN STATE (BOTH BITS SET)... CMA,SSA,SLA ...OR DISABLED (NEITHER SET)? JMP DU.NX YES: IGNORE LDA D.PTR,I GET SCHNL # LSR 7 AND =B37 STA DU.1+1 LDA D.PTR,I GET BASE ADDR ALF,ALF AND =B77400 LDB D.BAS DU.1 JSB DJNT? DEC 0 SCHNL 1 DEC 210 SCHNL 2 JMP *+2 SKIP IF CONFLICT JMP DU.NX DISJOINT: NO CONFLICT LDA D.PTR CURRENT SCHNL? CPA D.ST JMP DU.NX YES: IGNORE "CONFLICT" JMP DUPE?,I ERROR DU.NX EQU * LDA D.PTR,I LAST ST ENTRY? ISZ D.PTR SSA,RSS JMP D.LP ISZ DUPE? JMP DUPE?,I OKAY D.BAS BSS 1 D.PTR DEF 0 D.ST DEF 0 * * ****************************** * * E N ? * * ENTRY: * JSB EN? * * * CHECKS FOR ENABLED BROTHER SUBCHANNELS (FOR INTERRELATED SUBSCHANNELS). * EN? NOP JSB #SCHN GET # SCHNLS FOR BOARD STA N.CNT LDB &STAD,I N.LP EQU * ANY SISTER SCHNLS ENABLED? CPB @ST JMP N.NXT (IGNORE OURSELF) LDA B,I ALF,SLA JMP EN?,I ENABLED BROTHER SUBCHANNEL N.NXT EQU * INB ISZ N.CNT JMP N.LP ISZ EN? NO ENABLED BROTHER SUBCHANNELS JMP EN?,I N.CNT BSS 1 * * ****************************** * * I N C L ? * * ENTRY: * LDA * LDB * JSB INCL? * DEC * * * EXIT (IF NO ERROR): * A=REMAINING SPACE ON BOARD * B=STARTING RAM ADDR * * VERIFIES THAT BASE<=ADDR 0<=LEN-(ADDR-BASE)-1 * INCL? NOP CMB,INB BASE<=ADDR? ADA B ADDR-BASE STA I.RA SAVE RAM OFFSET CMA,SSA,RSS A=-(ADDR-BASE)-1 JMP I.ERR ADDR * * SETS ALL INTERRELATED SUBCHANNELS TO STATE SPECIFIED IN STATE MASK. MASK * MUST CONTAIN STATE IN BITS 13-12 (ZEROES ELSEWHERE). * SETST NOP JSB #SCHN COMPUTE # BROTHER SCHNLS STA S.CNT LDB &STAD,I PTR TO ST ENTRIES S.LP EQU * TRAVERSE ST SUB-TABLE LDA B,I ST ENTRY AND =B147777 CLEAR STATE BITS IOR SETST,I INCLUDE NEW STATE STA B,I INB ISZ S.CNT JMP S.LP ISZ SETST DONE: SKIP PARAMETER JMP SETST,I S.CNT BSS 1 * * ****************************** * * S I O * * ALGORITHMS: * * 1.0 ADDR+BUFLEN<=BASE+LEN * 1.1 0<=LEN-(ADDR-BASE)-BUFLEN (=DELTA) * * 2.0 IF DELTA<0 THEN BUFLEN=BUFLEN-DELTA, WHERE BUFLEN<0 * SIO NOP * * COMPUTE LENGTH OF WCS TRANSFER. BYTE- AND ODD-LENGTH WORD COUNTS ARE * ROUNDED UP TO MICROWORD (EVEN-LENGTH) COUNT. WE SET SIGN * IN &CNTL IN EQT TO REMEMBER WHETHER BYTE OR WORD COUNT WAS * GIVEN. NOTE THAT SIGN MUST BE RESET (OR SET) EXPLICITLY * SINCE BITS MAY BE SET ACCORDING TO REQUEST TYPE (STANDARD, * BUFFERED, SYSTEM, CLASS). * LDA &LEN,I CLE,SSA,INA,RSS SKIP IF BYTE COUNT JMP S.0 E=0 FOR WORD COUNT CMA,CCE,INA E=1 FOR BYTE COUNT ADA =D4 ROUND UP: ADD 3 PLUS 1 AT SKIP ARS S.0 EQU * A=WORD COUNT+1, E=BYTE-COUNT FLAG ARS ROUND UP TO WORD PAIR BOUNDARY CMA,INA NEGATIVE WCS COUNT STA &WCNT,I A=-WCS COUNT LDB &CNTL,I SET SIGN FOR BYTE CNT ELB,RBR STB &CNTL,I * * BOUNDS CHECK ON WCSAD * LDA SCHNL STA S.2+1 LDA @ST,I GET BASE ADDR AND =B177 ALF,ALF STA B B=BASE ADDR LDA &WCS,I USER'S WCS ADDR SSA JMP BADAD S.2 JSB INCL? DEC 0 ho SCHNL # JMP BADAD ADDR NOT IN SCHNL * A=REMAINING # MICROWORDS * B=RAM ADDR (PRESERVE B-REG) ADA &WCNT,I BUFLEN<=AVAIL LEN? CMA,SSA,INA A=+RESIDUE JMP S.3 IN-BOUNDS ADA &WCNT,I NO: TRUNCATE BUFLEN (-VE) STA &WCNT,I LDA =B5 SET STATUS: DATA OVERRUN STA &XSTA,I * SET UP LOCALS. NOTE THAT WE DO NOT PUT RAMAD & COUNT INTO &WCS AND * &LEN HERE. THIS IS DONE IN SAVE (AND TIO USES THE LOCALS). S.3 EQU * LDA OFF ADJUST RAM OFFSET (B=RAM ADDR) ADA SCHNL ADB A,I STB RAMAD LDA &BUFR,I STA BUFR LDA &WCNT,I STA COUNT SZA,RSS ZERO LENGTH: TRANSFER COMPLETE! JMP IDONE JMP SIO,I * * ******************** * * U N K N ? * * ENTRY: * * JSB UNKN? * * * RETURNS TO IF CURRENT BOARD IS IN UNKNOWN STATE OR * IF THERE STILL EXISTS AT LEAST ONE 1/4K BOARD IN AN UNKNOWN STATE. * UNKN? NOP JSB DOWN? JMP UNKN?,I YES: TAKE ERROR EXIT LDA #UNKN UNKNOWN 1/4K BOARDS? SZA,RSS ISZ UNKN? NO: TAKE GOOD EXIT JMP UNKN?,I * * ********************** * * X F R 1 K * * HANDLES DMA TRANSFER TO HP13197A. SINCE DMA CONTROLLER ALWAYS * DOES A CLF TO THE DEVICE AFTER EACH TRANSFER, DMA WILL DISABLE * BOARD. CONSEQUENTLY, WE MUST RE-ENABLE BOARD AFTER TRANSFER IF * APPROPRIATE. FOR THE SAME REASON, WE MUST REMAIN IN DRIVER DURING * DMA TRANSFER TO PREVENT CONCURRENT ACCESS (EXECUTION) TO THE BOARD. * XFR1K NOP JSB STC1K INITIATE TRANSFER JSB WAIT SFS ON DMA LDA @ST,I WAS BOARD ENABLED OR PSEUDO-DISABLED? ALF,RAR CMA,SSA,SLA,RSS JSB EN1K YES: RE-ENABLE IT JMP XFR1K,I * * ****************************** * * F I R S T * * ENTRY: * LDA * JMP FIRST * * EXIT: * A= WCS SELECT CODE * FIRST EQU * STA ORGSC SAVE WC1pS SC LDA &DRTS CMA,INA STA CNT1 LDA &DRT STA @PTR F.LP EQU * WALK DOWN DRT LDA @PTR,I GET EQT # AND =B77 SZA,RSS UNDEFINED EQT? JMP F.NXT YES ADA =D-1 COMPUTE EQT ADDR MPY =D15 ADA &EQT PTR TO EQT ENTRY STA B ADB =D3 GET SELECT CODE (BITS 5-0) LDA B,I EQT &UNIT ENTRY AND =B77 (FOR ASSIGNING ADDR TO 1K BOARD) STA SC INB GET DVR # (BITS 13-8) LDA B,I EQT &STAT ENTRY ALF,ALF AND =B77 CPA =B36 WCS DVR? JMP *+2 JMP F.NXT NO ADB =D8 GET ST ADDR STB @EQST SAVE PTR TO EQT &STAD ENTRY LDA B,I SZA ST ENTRY DEFINED? JMP F.NXT YES LDB @ST NO: ADD TO ST INB CPB LIMST JMP F.FIN TABLE OVERFLOW * ADD SUBCHNL(S) TO ST TABLE -- PRESERVE B-REG LDA @PTR,I GET SCHNL # (BITS 15-11) ALF,RAL AND =B37 JSB GOTO CASE ON SCHNL DEF F.SC0 DEF F.SC0 DEF F.SC2 * F.SC0 EQU * FOR 1K BOARD LDA =B12 DISABLE,SCHNL=0,ADDR=5000B STA B,I INB CPB LIMST JMP F.NXT TABLE OVERFLOW LDA =B214 DISABLE,SCHNL=1,ADDR=6000B STA B,I STORE ENTRY STB BREG SAVE B-REGISTER LDA =B605 PHYSICALLY ASSIGN BASE ADDR JSB A1K LDB BREG RESTORE B-REGISTER JMP F.1 * F.SC2 EQU * FOR 1/4K BOARD ISZ #UNKN LDA =B30400 DOWN,SCHNL=2,ADDR=0B STA B,I STORE ENTRY * F.1 EQU * B=PTR TO LAST WORD OF ST ENTRY LDA @ST PUT ST ADDR INTO EQT INA STA @EQST,I STB @ST UPDATE ST PTR (PTS TO LAST ENTRY) F.NXT EQU * ISZ @PTR ISZ CNT1 JMP F.LP CONTINUE DRT WALK F.FIN EQU * TABLE COMPLETE LDA @ST,I MARK LAST ENTRY IOR =B100000 ST+A @ST,I LDA #UNKN NEGATE FOR USE AS COUNT-DOWN CMA,INA STA #UNKN CLA ZAP JUMP TO HERE STA ?I1 LDA ORGSC RESTORE WCS SELECT CODE JMP ?I1+1 RETURN @EQST DEF 0 ORGSC BSS 1 INITIAL WCS SELECT CODE BREG BSS 1 FOR B-REG (TEMPRORARY) HED RTE DVR36 WCS DRIVER -- CONTINUATION SECTION ********************************************* * * * C O N T I N U A T I O N S E C T I O N * * * ********************************************* * * ENTRY: * LDA * JSB C.36 * * * * EXIT: * A=0 (NO ERROR) * B=TRANSMISSION LOG (FOR COMPLETION RETURN ONLY) * * NOTE THAT THE SELECT CODE WILL BE FOR THE DMA CHANNEL IF WE COME HERE * FROM A DMA TRANSFER. * * NORMALLY, LOCALS SAVED IN EQT (FROM LAST CALL TO DVR) CONTAIN ADJUSTED * STATE OF DVR. THAT IS, THEY REFLECT THE FACT THAT TRANSMISSION HAS * TAKEN PLACE. (FOR VERIFY OPERATION AFTER NON-DMA TRANSFER, LOCALS * MUST BE RESET IN INITIATION SECTION.) * * C.36 NOP JSB CIO RESET LOCAL STATE IFZ LDA &UNIT,I TIMED-OUT? (BIT 12) ALF SSA JMP CTIME YES JSB VERF? VERIFY RQ? JMP DDONE NO: TERMINATE DMA XFER JSB NODMA RETURN DMA CHANNEL JSB SIO1K RE-INITIATE I/O * CTIME EQU * CONTINUE OPERATION XIF LDA &CNTL,I CASE ON RQ CODE AND =B77 JSB GOTO DEF CVERF DEF CREAD DEF CWRIT * ***************************** * EXIT CONTINUATION SECTION * ***************************** * VERR EQU * VERIFY ERROR LDA &XSTA,I IOR =B41 STA &XSTA,I * IFZ DDONE EQU * TERMINATE DMA TRANSFER CLA FAKE TRANSMISSION LOG STA COUNT XIF CDONE EQU * JSB TIO CLA L B=XMISSION LOG JMP C.36,I * CPAUS EQU * JSB SAVE CLA ISZ C.36 JMP C.36,I * * ****************************** * * C R E A D * CREAD EQU * CONTINUE NON-DMA READ LDA SCHNL GO TO APPROPRIATE DRIVER ADA CRIO JSB A,I JMP CDONE DONE JMP CPAUS TIME-OUT * CRIO DEF *+1,I DEF NR1K DEF NR1K DEF NR256 * * ****************************** * * C W R I T * CWRIT EQU * CONTINUE NON-DMA WRITE LDA SCHNL GO TO APPROPRIATE DRIVER ADA CWIO JSB A,I JMP *+2 DONE: CHECK FOR VERIFY RQ JMP CPAUS TIME-OUT JSB VERF? JMP CDONE NO VERIFY RQ JSB RESET JSB GTSC CASE ON SCHNL DEF CW1K DEF CW1K DEF CPAUS * CW1K EQU * JSB SIO1K RE-INITIATE I/O JMP CPAUS * CWIO DEF *+1,I DEF NW1K DEF NW1K DEF NW256 * * ****************************** * * C V E R F * CVERF EQU * CONTINUE (NON-DMA) VERIFY LDA SCHNL GO TO APPROPRIATE DRIVER ADA CVIO JSB A,I JMP CDONE DONE JMP CPAUS TIME-OUT * CVIO DEF *+1,I DEF NV1K DEF NV1K DEF NV256 * * ****************************** * * C I O * * ENTRY: * JSB CIO * CIO NOP CONTINUATION: SET UP LOCALS LDA &UNIT,I GET WCS SELECT CODE AND =B77 STA SC LDA &BUFR,I STA BUFR LDA &LEN,I STA COUNT LDA &WCS,I STA RAMAD LDA &UNIT,I LSR 6 AND =B37 STA SCHNL JMP CIO,I HED RTE DVR36 WCS DRIVER -- GLOBAL SUBROUTINES * * ****************************** * * G O T O * * ENTRY: * LDA * JSB GOTO * DEF * DEF * : * * NOTE THAT INDEXING IS ZERO-ORIGINED. * GOTO NOP ADA GOTO IOR =B100000 SET INDIRECT BIT JMP A,I * * **********0.********************* * * G T S C * * ENTRY: * JSB GTSC * DEF * DEF * : * * NOTE THAT INDEXING IS ZERO-ORIGINED. * GTSC NOP PRESERVE B-REG LDA SCHNL ADA GTSC IOR =B100000 SET INDIRECT BIT JMP A,I * * ****************************** * * N O D M A * NODMA NOP RELEASE DMA DLD &INT,I NB: WE MAY NOT HAVE A DMA CHNL CPA &EQT1 CLA CPB &EQT1 CLB DST &INT,I JMP NODMA,I * * ****************************** * * R E S E T VE0* * ENTRY: * JSB RESET * * NOTE THAT FOR HP13197A (1K) I/O, RAM ADDR IS SET UP ONLY ONCE. * CONSEQUENTLY, WE DON'T NEED TO UPDATE/RESET IT FOR CONTINUATION * & VERIFY OPERATIONS. THIS IS PREDICATED ON THE ASSUMPTION THAT * I/O TO A BOARD IS DONE THROUGH ONE & ONLY ONE EQT. THEREFORE, WE * CAN PROCESS ONLY ONE I/O REQUEST AT A TIME. * * ON THE OTHER HAND, THE BUFR ADDR AND COUNT ARE UPDATED FOR ALL * NON-DMA I/O AND, THEREFORE, BE RESET PRIOR TO VERIFY OPERATION. * RESET NOP RESET COUNTERS JSB GTSC DEF RS.1 HP13197A: DON'T RESET RAM ADDR DEF RS.1 DEF RS.0 RS.0 EQU * LDA RAMAD BACK-UP RAM ADDR ADA &WCNT,I STA RAMAD RS.1 EQU * LDA &WCNT,I STA COUNT ALS ADA BUFR BACK-UP BUFR ADDR STA BUFR JMP RESET,I * * ****************************** * * S A V E * * SAVE LOCAL VARIABLES IN PREPARATION FOR TIME-OUT. ALSO SET UP * TIME-OUT VALUES. * SAVE NOP LDA BUFR SAVE LOCALS STA &BUFR,I LDA COUNT STA &LEN,I LDA RAMAD STA &WCS,I LDA =D-2 # 10-MSEC FOR TIME-OUT STA &TIMR,I SET UP TIMER LDA &UNIT,I SET TIME-OUT RQ BIT IOR =B010000 STA &UNIT,I JMP SAVE,I * * ****************************** * * T I O * * EXIT: * B=TRANSMISSION LOG (ALWAYS >=0) * * SETS UP STATUS FIELD AND TURNS OFF TIMER-RQ BIT. RETURNS * TRANSMISSION LOG IN BYTES OR WORDS DEPENDING ON ORIGINAL * LENGTH PARAMETER IN EXEC CALL (INDICATED BY SIGN OF &CNTL * IN EQT). * TIO NOP TERMINATE I/O LDA &STAT,I SET STATUS FIELD IN EQT AND =B177000 IOR &XSTA,I STA &STAT,I LDA &UNIT,I CLEAR TIME RQ BIT AND =B167777 STA &UNIT,I LDB &WCNT,I COMPUTE XMISSION LOG CMB,INB RETURN POSITIVE VALUE ADB COUNT COUNT<0 IN CASE OF VERIFY ERROR LDA &CNTL,I SSA SKIP IF WORD COUNT FDESIRED BLS BLS JMP TIO,I * * ****************************** * * V E R F ? * * ENTRY: * JSB VERF? * * VERF? NOP LDA &CNTL,I VERIFY RQ? AND =B177 CPA =B102 JMP *+2 JMP VERF?,I XOR &CNTL,I SET VERIFY STATE STA &CNTL,I ISZ VERF? JMP VERF?,I HED RTE DVR36 WCS DRIVER -- PHYSICAL DRIVERS ************************************* * * * P H Y S I C A L D R I V E R S * * * ************************************* * * * ******************** * TIMING CONSTANTS * ******************** * * CONSTANTS DERIVED FROM LOOP TIMINGS FOR EACH NON-DMA DRIVER. * WE ENSURE THAT TIME SPENT IN PHYSICAL DRIVER IS LESS THAN * 2.1 MSEC (IE., ABOUT 2 MSEC), BASED ON 21MX INSTRUCTION TIMES * (10/1975). * .DTIM ABS -250 .R1K ABS -72 .W1K ABS -74 .V1K ABS -58 .R256 ABS -45 .W256 ABS -45 .V256 ABS -39 * * *************** * DMA DRIVERS * *************** * * ****************************** * * D M A * * ENTRY: * E=1 FOR READ; E=0 FOR WRITE * * LDA * JSB DMA * * IS THE DMA CONTROL WORD SANS SELECT CODE (ADDED IN THIS * ROUTINE). * * FOR TRANSFER TO 13197A (1K) BOARD, WE ASSUME THAT "CLC WCS" * PRECEDES THIS. OTHERWISE, SRQ REMAINS HIGH FROM LAST DMA * TRANSFER, AND TRANSFER WOULD BEGIN PREMATURELY WITH "STC DMA" * HERE. * * BECAUSE THE DRIVER NO LONGER RETURNS TO RTE DURING THE DMA * TRANSFER, WE DON'T HAVE TO MAKE A SPECIAL CASE FOR PRIVILEGED * INTERRUPT ROUTINES. WE ALWAYS CLC DMA TO IGNORE THE DMA INTERRUPT * AND SFS ON THE DMA FLAG. (THE CODE BRACKETED BETWEEN THE IFZ-XIF * STATEMENTS WAS FOR THE PRIVILEGED INTERRUPT PROCESSING.) * * WE USE THE FOLLOWING TEMPORARIES: * DVR1 = COMPLETED CWD1 * DVR2 = DMA BUFFER ADDR WITH READ/WRITE FLAG SET. * DMA NOP IOR SC ADD WCS SELECT CODE STA j'DVR1 LDA BUFR SET I/O FLAG IN DMA BUFR ADDR ELA,RAR STA DVR2 LDA &CHAN CONFIGURE HIGH-DMA INSTRUCTIONS JSB CONFG DEF ?H1 DEF ?H2 DEF ?H3 DEF ?H4 DEF ZERO LDA &CHAN ADA =D-4 JSB CONFG CONFIGURE LOW-DMA INSTRUCTIONS DEF ?L1 DEF ?L2 DEF ?L3 DEF ?L4 DEF ZERO LDA DVR1 SEND CWD1: CONTROL WORD ?H1 OTA .DMAH ?L1 CLC .DMAL SEND CWD2: BUFFER ADDR LDA DVR2 ?L2 OTA .DMAL ?L3 STC .DMAL SEND CWD3: XFER LENGTH LDA COUNT MINUS NUMBER OF MICROWORDS ALS ...TIMES 2 ?L4 OTA .DMAL IFZ * FOLLOWING IS REQUIRED IN CASE OF PRIV INTERRUPT ROUTINE. * IN THAT CASE, WE MUST LEAVE INTERRUPTS ENABLED AND CLEAR * DMA CLF 0 DISABLE INTERRUPT SYSTEM XIF ?H2 STC .DMAH,C INITIATE DMA IFZ LDA &DMMY PRIV ROUTINE? SZA,RSS JMP DMA,I NO: LEAVE INTERRUPTS OFF XIF ?H4 CLC .DMAH YES: IGNORE DMA INTERRUPT IFZ LDB &INT GET PTR TO INT ENTRY LDA &CHAN CPA =D7 INB LDA B,I SET SIGN IOR =B100000 STA B,I STF 0 RE-ENABLE INTERRUPT SYSTEM XIF JMP DMA,I * * ******************** * * W A I T * * FOR HP13197A, WAIT FOR DMA COMPLETION (INDICATED BY DMA FLAG BEING * SET). SINCE DMA TRANSFER DISABLES BOARD (WITH CLF TO DEVICE), * WE MUST REMAIN IN DRIVER DURING TRANSFER TO PREVENT CONCURRENT * ACCESS (EXECUTION) TO BOARD. THIS IS OKAY SINCE TRANSFER SHOULD * TAKE UNDER 900 MSECS (FOR 512 WORDS). WATCHDOG TIMER IN A-REG * IS SET JUST IN CASE DMA FAILS. * * I/O INSTRUCTIONS USED HERE MUST BE SET UP BY "DMA" ROUTINE. * WAIT NOP LDA .DTIM SET UP WATCHDOG TIMER WAIT0 EQU * INA,SZA,RSS JMP NRESP OOPS: NON-RESPONDING DMA ?H3 SFS .DMAH JMP WAIT0 JMP WAIT,I * * **************************M* * 13197A (1K WCS) DRIVERS * *************************** * * ******************** * * S I O 1 K * * COMPOSITE OF SET1K AND STC1K, CALLED WHEN NOT SETTING UP DMA * BETWEEN BOARD SET-UP AND TRANSFER INITIATION. * SIO1K NOP JSB SET1K JSB STC1K JMP SIO1K,I * * ****************************** * * S E T 1 K * SET1K NOP INITIATE 1K READ/WRITE TRANSFER LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W16 DEF ?W17 DEF ?W18 CONFIGURE STC IN STC1K DEF ZERO LDA RAMAD SET RAM ADDR ?W16 CLC .WCS SET COMMAND MODE ?W17 OTA .WCS JMP SET1K,I ALSO INITIATES DMA XFER * * ******************** * * S T C 1 K * * ACTUALLY INITIATES WCS TRANSFER. DMA SET-UP MUST PRECEDE THIS. * "STC WCS" MUST BE CONFIGURED BY SET1K (ASSUMED TO HAVE ALREADY * BEEN CALLED). * STC1K NOP ?W18 STC .WCS JMP STC1K,I * * ****************************** * * A 1 K * * ENTRY: * LDA * JSB A1K * * FORM OF BLOCK MASK: * BITS 11-6: BLOCK # FOR RAM ADDR 512-1023 * BITS 5-0: BLOCK # FOR RAM ADDR 0-511 * * DYNAMICALLY ALTER BLOCK NUMBERS ON 1K BOARD. * WE USE THE FOLLOWING TEMPORARY: * DVR1 = BLOCK MASK. * A1K NOP STA DVR1 SAVE BLOCK MASK LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W22 DEF ?W23 DEF ?W24 DEF ZERO LDA DVR1 BLOCK MASK ?W22 CLC .WCS SET COMMAND MODE ?W23 OTA .WCS (ANOMALY) ?W24 OTA .WCS SEND BLOCK NUMBER JMP A1K,I * * ****************************** * * D S 1 K * * PHYSICALLY DISABLE 1K BOARD * DS1K NOP LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W21 DEF ZERO ?W21 CLF .WCS JMP DS1K,I * * ****************************** * * E N 1 K * * PHSYICALLY ENABLE 1K BOARD * EN1K NOP LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W20 DEF ZERO ?W20 STF .WCS JMP EN1K,I * * ****************************** * * N R 1 K * * ENTRY: * JSB NR1K * * * NR1K NOP NON-DMA 1K READ LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W1 DEF ?W2 DEF ZERO LDA .R1K SET LOOP "TIMER" STA TIMER NR.1 EQU * ?W1 LIA .WCS READ MICROWORD ?W2 LIB .WCS DST BUFR,I ISZ BUFR ISZ BUFR ISZ COUNT JMP *+2 JMP NR1K,I DONE ISZ TIMER JMP NR.1 ISZ NR1K JMP NR1K,I * * ****************************** * * N W 1 K * * ENTRY: * JSB NR1K * * * NW1K NOP NON-DMA 1K WRITE LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W3 DEF ?W4 DEF ZERO LDA .W1K SET LOOP "TIMER" STA TIMER NW.1 EQU * DLD BUFR,I WRITE MICROWORD ?W3 OTA .WCS ?W4 OTB .WCS ISZ BUFR ISZ BUFR ISZ COUNT JMP *+2 JMP NW1K,I DONE ISZ TIMER JMP NW.1 ISZ NW1K JMP NW1K,I * * ****************************** * * N V 1 K * * ENTRY: * JSB NR1K * * * NV1K NOP NON-DMA 1K VERIFY LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W5 DEF ?W6 DEF ZERO LDA .V1K STA TIMER NV.1 EQU * ?W5 LIA .WCS READ MICROWORD ?W6 LIB .WCS JSB CMP COMPARE JMP VERR ERROR ISZ COUNT JMP *+2 JMP NV1K,I DONE ISZ TIMER JMP NV.1 ISZ NV1K JMP NV1K,I * * ***************************** * 12978A (1/4K WCS) DRIVERS * ***************************** * * ****************************** * * N R 2 5 6 * * ENTRY: * JSB NR1K * * * NR256 NOP NON-DMA 1/4K READ JSB CFRD CONFIGURE WCS INSTRUCTIONS LDA .R256 SET LOOP "TIMER" STA TIMER NR.2 EQU * JSB READ READ MICROWORD DST BUFR,I ISZ BUFR ISZ BUFR ISZ COUNT JMP *+2 JMP NR256,I DONE ISZ TIMER JMP NR.2 ISZ NR256 JMP NR256,I * * ****************************** * * N W 2 5 6 * * ENTRY: * JSB NR1K * * * NW256 NOP NON-DMA 1/4K WRITE LDA SC CONFIGURE WCS INSTRUCTIONS JSB CONFG DEF ?W7 DEF ?W8 DEF ?W9 DEF ?W10 DEF ZERO LDA .W256 SET LOOP "TIMER" STA TIMER NW.2 EQU * LDA BUFR,I GET 1ST 8 BITS OF MICROWORD AND =B377 IGNORE UPPER BYTE LDB RAMAD ADD WCS ADDR TO HIGH BYTE BLF,BLF IOR B ISZ BUFR LDB BUFR,I GET REMAINDER OF MICROWORD ?W7 STF .WCS WRITE MICROWORD ?W8 OTA .WCS ?W9 OTB .WCS ?W10 STC .WCS ISZ BUFR ISZ RAMAD ISZ COUNT JMP *+2 JMP NW256,I DONE ISZ TIMER JMP NW.2 ISZ NW256 JMP NW256,I * * ****************************** * * N V 2 5 6 * * ENTRY: * JSB NR1K * * * NV256 NOP NON-DMA 1/4K VERIFY JSB CFRD CONFIGURE WCS INSTRUCTIONS LDA .V256 SET LOOP "TIMER" STA TIMER NV.3 EQU * JSB READ READ MICROWORD JSB CMP COMPARE JMP VERR ERROR ISZ COUNT JMP *+2 JMP NV256,I DONE ISZ TIMER JMP NV.3 ISZ NV256 TIME-OUT JMP NV256,I * * *************** * SUBROUTINES * *************** * * ****************************** * * C F R D * * CONFIGURE WCS INSTRUCTIONS IN "READ" FOR 12978A ONLY. * CFRD NOP LDA SC JSB CONFG DEF ?W11 DEF ?W12 DEF ?W13 DEF ?W14 DEF ?W15 DEF ZERO JMP CFRD,I * * ****************************** * * C M P * * ENTRY: * LDA <1ST MICROWORD> * LDB <2ND MICROWORD> * JSB CMP * * CMP NOP COMPARE WCS & BUFR MICROWORDS XOR BUFR,I COMPARE 1ST 8 BITS... AND =B377 ...IGNORING HIGH BYTE ISZ BUFR SZA JMP CMP2 DIFFER CPB BUFR,I COMPARE REMAINING 16 BITS ISZ CMP OKAY CMP2 EQU * ISZ BUFR JMP CMP,I * * ****************************** * * C O N F G * * ENTRY: * LDA