ASMB,L,C *&TSTBC * * EDITED 790111 TO USE ISSAV, NOT IS IN CHKPT,INSEX * TO CLEAR SW ONLY IN STCNF * EDITED 790306 TO ALLOW ERROR RTNS FOR SIS ROUTINES IN RTN TESTS.. * EDITED 790320 TO MODIFY INSEX TO USE BEGINNING OF PAGE... * EDITED 790525 TO CHG TRNL TO DPOLY * * LAST CODE CHANGE 790525 0905 CC * * * BASIC TEST-- PRETESTS TO VERIFY CORRECT PROM/FPP INSTALLATION, * AND CONFIGURES FOR FIRMWARE PRESENT. * ALSO TESTS MOST OPCODES FOR VALID MICROCODE RETURNS. * * NOTE: THE ROUTINE INSEX CONTAINS LOAD POINT SENSITIVE CODE!!! * IT USES ISZ'S WHICH MUST NOT RESIDE ON CERTAIN PAGES. * THE ROUTINE CHECKS FOR THIS ERROR CONDITION AND REPORTS * AN MESSAGE. THIS MUST BE CHEC KED IF ANY MODULES ARE * ARE MODIFIED. !!!!!!!! * * * NAM TSTBC 790525 0905 REV 1913 CC * ENT TSTBC * EXT STDAM EXT ERMS,MSGC,TINIT,STSTE,SWRT,IFBRK,PAUSE,DNPUX EXT MSGD,O2AS,MSGI EXT DBIT0,BIT0 EXT IS * SUP * * MIC FDA,105000B,0 MIC XAD,105001B,0 MIC TAD,105002B,0 MIC EAD,105003B,0 MIC FXS,105100B,0 MIC FXD,105104B,0 MIC FTS,105120B,0 MIC FTD,105124B,0 MIC XXS,105101B,0 MIC XXD,105105B,0 MIC XTS,105121B,0 MIC XTD,105125B,0 MIC TXS,105102B,0 MIC TXD,105106B,0 MIC ETS,105123B,0 MIC ETD,105127B,0 * 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 FFT,105200B,0 MIC DBE,105201B,0 MIC SGL,105202B,0 MIC DNG,105203B,0 MIC DCO,105204B,0 MIC DFR,105205B,0 MIC XPK,105206B,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 XCM,105215B,0 MIC DCM,105216B,0 MIC DDN,105217B,0 MIC XFR,105220B,0 MIC GTO,105221B,0 MIC MAP,105222B,0 MIC ENR,105223B,0 MIC ENP,105224B,0 MIC PWR,105225B,0 MIC FLN,105226B,0 MIC STP,105227B,0 MIC PCK,105230B,0 MIC CFR,105231B,0 * MIC FCM,105232B,0 MIC TCM,105233B,0 * 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 * MIC FPT,105004B,0 MIC SST,105337B,0 * A EQU 0 B EQU 1 SW EQU 1 * SSEN EQU 11 FFP1N EQU 12 FFP2N EQU 13 FFP3N EQU 14 * * * * SKP *S TSTBC NOP JSB MSGI PREFACE MSG DEF BCMBG+0 JSB TINIT INIT PARMS LIA SW GET SWREG STA ISSAV SAVE IT STA IS ALSO SET IS * JSB STSTE EXECUTE SUBTESTS OCT -1 DEF STOVF,I OVERFLOW TEST DEF STCNF,I CONF. TEST DEF STRTB,I BASE SET RETURN TEST DEF STRS1,I SIS1 RETURN TEST DEF STRS2,I SIS2 RETURN TEST DEF STRS3,I SIS3 RETURN TEST DEF STRF1,I FFP1 RETURN TEST DEF STRF2,I FFP2 RETURN TEST DEF STRF3+0 FFP3 RETURN TEST * JSB MSGI POST MSG DEF BCMND+0 LDA ISSAV RESORE SWREG OTA SW JMP TSTBC,I DONE * ISSAV BSS 1 BCMBG ASC 13,BEGIN BASIC CONTROL TEST / BCMND ASC 12,END BASIC CONTROL TEST / * * * * SKP *S * SUBTEST TO TEST CORRECT OVERFLOW FLAG OPERATION * STOVF NOP JSB MSGI MESSAGE DEF IMOV1+0 LDA NEG16 STA OVCNT OVFLP CLO CLEAR OVFLW SOC CHECK IT JMP OVER1 IF SET, ERROR STO SET IT SOS TEST IT JMP OVER2 IF CLEAR, ERROR ISZ OVCNT TEST FOR DONE JMP OVFLP NO, REPEAT JMP STOVF,I YES, DONE * OVER1 JSB ERMS,I FATAL ERROR DEF EMOV1+0 ERROR MSG JSB FATAL JMP STOVF,I * OVER2 JSB ERMS,I FATAL ERROR DEF EMOV2+0 MSG JSB FATAL JMP STOVF,I * NEG16 DEC -16 OVCNT BSS 1 IMOV1 ASC 6,OVFL TEST / EMOV1 ASC 14,E001 OVFL SET AFTER CLEAR/ EMOV2 ASC 14,E001 OVFL CLEAR AFTER SET/ * * SKP *S * ROUTINE TO TEST MICROCODE FOR REVS, AND PRE-CONFIGURE STD. TESTS * STCNF NOP JSB MSGI PRE MSG DEF IMCNF+0 CLA CLEAR SWREG OTA SW JSB INSEB TEST BASE SET PRETEST FPT OCT 3 EITHER RTN OK DEF EMFPT+0 NOP ONLY 1 TO TEST JSB CHKPT CHECK FOR SREG RTN. DEF EMFPT+0 CPA BIT1 IF SKIP ON RTN TEST REVN JMP STCN1 CLA ELSE ORIG. RELEASE F BASE SET STA REVFB SET REV TO 0 JSB IDCNF PUT 0 IN MSG BUF DEF M1CNF+0 JSB MSGC,I TELL OPERATOR DEF M2CNF+0 "NO FFP3 TESTS" LDA STDAM AND DONT TEST FFP3 IOR BIT0+FFP3N STA STDAM JMP STCNB * STCN1 CXA X=REV ID# STA REVFB JSB IDCNF CONF. MSG FOR REV DEF M1CNF+0 JSB MSGD DEF M1CNF+0 * * STCNB CLA CLEAR SWREG OTA SW JSB INSEB TEST SIS PRETEST SST OCT 3 EITHER RTN OK DEF EMSST+0 NOP ONLY 1 JSB CHKPT CHECK FOR SREG RTN DEF EMSST+0 ERROR MSG CPA BIT1 IF NO SKIP, OLD SIS JMP STCN3 CLA OLD SIS, NO REVN STA REVSS JSB IDCNF PUT 0 IN MSG BUF DEF M4CNF+0 JSB MSGC,I TELL OPERATOR DEF M5CNF+0 "NO ENHANCED SIS TESTS" LDA STDAM IOR BIT0+SSEN STA STDAM JMP STCNC * * STCN3 CXA PUT REV ID IN BUF STA REVSS JSB IDCNF CONFIG. MSG DEF M4CNF+0 JSB MSGD TELL OPERATOR IF PRIV. DEF M4CNF+0 * * STCNC CLA CLEAR SWREG OTA SW JSB INSEB TEST FFP PRETEST FFT OCT 3 EITHER RTN OK DEF EMFFT+0 NOP ONLY 1 JSB CHKPT CHECK SREG RTN DEF EMFFT+0 ERROR MSG CPA BIT1 IF NO SKIP, OLD FFP JMP STCN2 CLA OLD FFP, NO REVN STA REVFF JSB IDCNF PUT 0 IN MSG BUF DEF M3CNF+0 JSB MSGC,I TELL OPERATOR DEF M2CNF+0 "NO FFP3 TESTS LDA STDAM NO FFP3 TEST CONF. IOR BIT0+FFP3N STA STDAM JMP STCND * STCN2 CXA PUT REV ID IN BUF STA REVFF JSB IDCNF DEF M3CNF+0 CONF. MSG FOR REV JSB MSGD TELL OPERATOR IF PRIV. DEF M3CNF+0 * * STCND JMP STCNF,I DONE * * BIT1 OCT 2 REVFB BSS 1 REVFF BSS 1 REVSS BSS 1 IMCNF ASC 6,CONF TEST / EMFPT ASC 13,E002 BASE PRETEST ERROR / EMFFT ASC 13,E004 FFP PRETEST ERROR / EMSST ASC 13,E003 SIS PRETEST ERROR / M1CNF ASC 20, REV ID =XXXXXX FOR F SERIES BASE SET/ M3CNF ASC 18, REV ID =XXXXXX FOR F SERIES FFP / M4CNF ASC 18, REV ID =XXXXXX FOR F SERIES SIS / M2CNF ASC 16, NOTE: TST14 NOT CONFIGURED/ M5CNF ASC 16, NOTE: TST11 NOT CONFIGURED/ * * SKP *S * TEST FOR RETURNS FROM MICROCODE ROUTINES * STRTB NOP JSB MSGI DEF IMRB1+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS FDA 2 WORD ADD OCT 2 RTN=I+2 DEF EMFDA+0 ERROR MSG * XAD 3 WORD ADD OCT 10 I+4 DEF EMXAD+0 * EAD 5 WORD ADD OCT 10 DEF EMEAD+0 * FXS FIXS OCT 1 DEF EMFXS+0 * FXD FIXD OCT 1 DEF EMFXD+0 * FTS FLTS OCT 1 DEF EMFTS+0 * FTD FLTD OCT 1 DEF EMFTD+0 * XXS XFXS OCT 2 DEF EMXXS+0 * XXD XFXD OCT 2 DEF EMXXD+0 * XTS XFTS OCT 2 DEF EMXTS+0 * XTD XFTD OCT 2 DEF EMXTD+0 * TXS TFXS OCT 2 DEF EMTXS+0 * TXD TFXD OCT 2 DEF EMTXD+0 * ETS EFTS OCT 2 DEF EMETS+0 * ETD EFTD OCT 2 DEF EMETD+0 * TAD TADD OCT 10 DEF EMTAD+0 * NOP TERMINATOR * JMP STRTB,I * IMRB1 ASC 8,BASE RETN TEST/ EMFDA ASC 17,E005 2 WORD ADD RETURN ERROR / EMXAD ASC 17,E005 3 WORD ADD RETURN ERROR / EMEAD ASC 17,E005 5 WORD ADD RETURN ERROR / EMFXS ASC 17,E005 2 WORD FIXS RETURN ERROR / EMFXD ASC 17,E005 2 WORD FIXD RETURN ERROR / EMFTS ASC 17,E005 2 WORD FLTS RETURN ERROR / EMFTD ASC 17,E005 2 WORD FLTD RETURN ERROR / EMXXS ASC 17,E005 3 WORD FIXS RETURN ERROR / EMXXD ASC 17,E005 3 WORD FIXD RETURN ERROR / EMXTS ASC 17,E005 3 WORD FLTS RETURN ERROR / EMXTD ASC 17,E005 3 WORD FLTD RETURN ERROR / EMTXS ASC 17,E005 4 WORD FIXS RETURN ERROR / EMTXD ASC 17,E005 4 WORD FIXD RETURN ERROR / EMETS ASC 17,E005 5 WORD FLTS RETURN ERROR / EMETD ASC 17,E005 5 WORD FLTD RETURN ERROR / EMTAD ASC 17,E005 4 WORD ADD RETURN ERROR / * * * SKP *S * TEST FOR RETURNS FROM MICROCODE FFP ROUTINES * STRF1 NOP JSB MSGI DEF IMRF1+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS DBE DBLE OCT 10 RTN=I+4 DEF EMDBE+0 ERROR MSG * SGL SNGL OCT 4 I+3 DEF EMSGL+0 * DCM ..DCM OCT 2 DEF EMDCM+0 * PWR PWR2 OCT 2 DEF EMPWR+0 * FLN .FLUN OCT 1 DEF EMFLN+0 * PCK .PACK OCT 2 DEF EMPCK+0 * XPK .XPAK OCT 2 DEF EMXPK+0 * XCM .XCOM OCT 2 DEF EMXCM+0 * DDN DDINT OCT 10 DEF EMDDN+0 * NOP TERMINATOR * JMP STRF1,I * IMRF1 ASC 8,FPP1 RETN TEST/ EMDBE ASC 17,E011 FFP DBLE RETURN ERROR / EMSGL ASC 17,E011 FFP SNGL RETURN ERROR / EMDCM ASC 17,E011 FFP ..DCM RETURN ERROR / EMPWR ASC 17,E011 FFP PWR2 RETURN ERROR / EMFLN ASC 17,E011 FFP .FLUN RETURN ERROR / EMPCK ASC 17,E011 FFP .PACK RETURN ERROR / EMXPK ASC 17,E011 FFP .XPAK RETURN ERROR / EMXCM ASC 17,E011 FFP .XCOM RETURN ERROR / EMDDN ASC 17,E011 FFP DDINT RETURN ERROR / * * * * * SKP *S * TEST FOR RETURNS FROM MICROCODE FFP2 ROUTINES * STRF2 NOP JSB MSGI DEF IMRF2+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS DFR .DFER OCT 4 RTN=I+3 DEF EMDFR+0 ERROR MSG * XFR .XFER OCT 1 I+1 DEF EMXFR+0 * CFR .CFER OCT 4 DEF EMCFR+0 * NOP TERMINATOR * JMP STRF2,I * IMRF2 ASC 8,FFP2 RETN TEST/ EMDFR ASC 17,E012 FFP .DFER RETURN ERROR / EMXFR ASC 17,E012 FFP .XFER RETURN ERROR / EMCFR ASC 17,E012 FFP .CFER RETURN ERROR / * * * * SKP *S * TEST FOR RETURNS FROM MICROCODE FFP3 ROUTINES * STRF3 NOP LDA REVFB IF BASE REV=0, OR LDB REVFF IF FFP REV=0, NO GO SZA SZB,RSS JMP STRF3,I JSB MSGI DEF IMRF3+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS DAD .DAD OCT 2 RTN=I+2 DEF EMDAD+0 ERROR MSG * DSB .DSB OCT 2 I+2 DEF EMDSB+0 * DMP .DMP OCT 2 DEF EMDMP+0 * DDI .DDI OCT 2 DEF EMDDI+0 * DSR .DSBR OCT 2 DEF EMDSR+0 * DDR .DDIR OCT 2 DEF EMDDR+0 * DIN .DIN OCT 1 DEF EMDIN+0 * DDE .DDE OCT 1 DEF EMDDE+0 * DIS .DIS OCT 2 DEF EMDIS+0 * DDS .DDS OCT 2 DEF EMDDS+0 * DNG .DNG OCT 1 DEF EMDNG+0 * DCO .DCO OCT 34 DEF EMDCO+0 * * BLE .BLE OCT 10 DEF EMBLE+0 * NGL .NGL OCT 4 DEF EMNGL+0 * FCM ..FCM OCT 1 DEF EMFCM+0 * TCM ..TCM OCT 2 DEF EMTCM+0 * NOP TERMINATOR * JMP STRF3,I * IMRF3 ASC 8,FFP3 RETN TEST/ EMDAD ASC 17,E013 FFP .DAD RETURN ERROR / EMDSB ASC 17,E013 FFP .DSB RETURN ERROR / EMDMP ASC 17,E013 FFP .DMP RETURN ERROR / EMDDI ASC 17,E013 FFP .DDI RETURN ERROR / EMDSR ASC 17,E013 FFP .DSBR RETURN ERROR / EMDDR ASC 17,E013 FFP .DDIR RETURN ERROR / EMDIN ASC 17,E013 FFP .DIN RETURN ERROR / EMDDE ASC 17,E013 FFP .DDE RETURN ERROR / EMDIS ASC 17,E013 FFP .DIS RETURN ERROR / EMDDS ASC 17,E013 FFP .DDS RETURN ERROR / EMDNG ASC 17,E013 FFP .DNG RETURN ERROR / EMDCO ASC 17,E013 FFP .DCO RETURN ERROR / * EMBLE ASC 17,E013 FFP .BLE RETURN ERROR / EMNGL ASC 17,E013 FFP .NGL RETURN ERROR / EMFCM ASC 17,E013 FFP ..FCM RETURN ERROR / EMTCM ASC 17,E013 FFP ..TCM RETURN ERROR / * * * * SKP *S * TEST FOR RETURNS FROM MICROCODE SIS1 ROUTINES * STRS1 NOP JSB MSGI DEF IMRS1+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS TAN TAN OCT 3 RTN=I+1 OR 2 DEF EMTAN+0 ERROR MSG * ALG ALOG OCT 3 I+1 OR 2 DEF EMALG+0 * ATN ATAN OCT 1 DEF EMATN+0 * COS COS OCT 3 I+1 OR 2 DEF EMCOS+0 * SIN SIN OCT 3 I+1 OR 2 DEF EMSIN+0 * ALT ALOGT OCT 3 I+1 OR 2 DEF EMALT+0 * NOP TERMINATOR * JMP STRS1,I * IMRS1 ASC 8,SIS1 RETN TEST/ EMTAN ASC 17,E006 SIS TAN RETURN ERROR / EMALG ASC 17,E006 SIS ALOG RETURN ERROR / EMATN ASC 17,E006 SIS ATAN RETURN ERROR / EMCOS ASC 17,E006 SIS COS RETURN ERROR / EMSIN ASC 17,E006 SIS SIN RETURN ERROR / EMALT ASC 17,E006 SIS ALOGT RETURN ERROR / * * * * * SKP *S * TEST FOR RETURNS FROM MICROCODE SIS2 ROUTINES * STRS2 NOP JSB MSGI DEF IMRS2+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS SQT SQT OCT 3 RTN=I+1 OR 2 DEF EMSQT+0 ERROR MSG * EXP EXP OCT 3 I+1 OR 2 DEF EMEXP+0 * TNH TANH OCT 1 DEF EMTNH+0 * NOP TERMINATOR * JMP STRS2,I * IMRS2 ASC 8,SIS2 RETN TEST/ EMSQT ASC 17,E007 SIS SQT RETURN ERROR / EMEXP ASC 17,E007 SIS EXP RETURN ERROR / EMTNH ASC 17,E007 SIS TANH RETURN ERROR / * * * * SKP *S * TEST FOR RETURNS FROM MICROCODE SIS3 ROUTINES * STRS3 NOP LDA REVSS IF SIS REV=0, NO SIS3 SZA,RSS JMP STRS3,I JSB MSGI DEF IMRS3+0 JSB INSEB ROUTINE TO HANDLE MULTIPLE INSTRS * TNL /TRNL * OCT 100 RTN=I+7 * DEF EMTNL+0 ERROR MSG * CRT /CMRT OCT 30 I+4 OR 5 DEF EMCRT+0 * ATG /ATLG OCT 2 DEF EMATG+0 * FPW .FPWR OCT 2 DEF EMFPW+0 * TPW .TPWR OCT 4 DEF EMTPW+0 * NOP TERMINATOR * JMP STRS3,I * IMRS3 ASC 8,SIS3 RETN TEST/ EMTNL ASC 17,E010 SIS DPOLY RETURN ERROR / EMCRT ASC 17,E010 SIS CMRT RETURN ERROR / EMATG ASC 17,E010 SIS ATLG RETURN ERROR / EMFPW ASC 17,E010 SIS .FPWR RETURN ERROR / EMTPW ASC 17,E010 SIS .TPWR RETURN ERROR / * * * * * * * SKP *S * ROUTINE TO TEST INSTRUCTIONS FOR RETURNS * * CALLING SEQ: JSB INSEB * OPCODE * VALID RETURN POINTS * DEF ERROR MSG * OPCODE * RTNS * .... * OPCODE=0 => 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 IOR 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 CLCNT 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