/ DF TEST / STOLEN FROM MCTEST. *10 XR0, .-. /AUTO-INDEX #0 XR1, .-. /AUTO-INDEX #1 PAGE START, JMP I (TEST) /FOR START AT 00200 PAGE *1600 /FOR COMPATIBILITY TEST, LAS /GET SWITCHES AND [7] /JUST FIELD COUNT CIA /INVERT IT DCA INLIN1 /STORE IN-LINE JMS I PMOVIT/(MOVIT) /CALL MOVING ROUTINE INLIN1, .-. /CONTAINS THE TEST FIELD COUNT LIST1-LIST1END /COUNT OF WORDS TO MOVE LIST1-1 /POINTER TO LIST OF WORDS TO MOVE DCA WRDCNT /CLEAR WORD COUNT TAD L5404/(JMP I 4) /GET IT AS AN INSTRUCTION DCA 1 /STORE AS INTERRUPT HANDLER TAD PINTHND/(INTHND)/GET OUR INTERRUPT ADDRESS DCA 4 /SHOVE IT THERE LOOP1, CDF 00 /GOTO FIELD 0 DCA FLDNUM /CLEAR CDF-TYPE BITS COUNT TAD INLIN1 /GET TEST FIELD COUNT DCA TSTCNT /STASH IT LOOP2, TAD FLDNUM /GET CDF-TYPE BITS COUNT TAD [10] /UPDATE CDF-TYPE BITS BY A FIELD DCA FLDNUM /STORE BACK TAD FLDNUM /GET UPDATED VALUE BACK CIA /INVERT FOR TESTING DCA FLDTST /STORE IT THERE TAD [-10] /SETUP TEST OF DCA AFLDCNT /ALL POSSIBLE FIELDS TAD [-10] /SETUP A COUNT OF DCA CNTFLDS /ALL POSSIBLE FIELDS LOOP3, TAD CNTFLDS /GET CURRENT FIELD COUNT TAD [10] /COUNT UP A FIELD DCA CNTFLDS /STORE BACK TAD CNTFLDS /GET UPDATED VALUE CIA /INVERT IT FOR TESTING DCA FLDSVALUE /STASH IT THERE TAD INLIN1 /GET TEST FIELD COUNT DCA INLIN2 /STORE FOR OTHER ROUTINE CALL JMS I PMOVIT/(MOVIT) /CALL MOVING ROUTINE INLIN2, .-. /WILL BE TEST FIELD COUNT LIST2-LIST2END /MOVE COUNT LIST2-1 /LIST POINTER CDF 00 /ENSURE OUR FIELD TAD [CDF] /GET CDF CONSTANT TAD CNTFLDS /MAKE IT CDF LATEST TEST FIELD DCA INLNCDF /STORE IN-LINE TAD [CIF] /GET CIF CONSTANT TAD FLDNUM /MAKE IT CIF LATEST TEST FIELD DCA INLNCIF /STORE IN-LINE FLDAGN, TSF /FLAG UP FOR INTERRUPT? JMS I [MAKETTYFLAGUP] /NO, MAKE IT HAPPEN / **** MAKE SURE THAT 6040 SETS THE TTY OUTPUT FLAG **** INLNCDF,CDF 00+.-. /WILL BE CDF TO LATEST FIELD INLNCIF,CDF 00+.-. /WILL BE CIF TO LATEST FIELD JMP LIST1 /CONTINUE THERE IN TEST FIELD / COMES HERE IF AN INTERRUPT. INTHND, RMF /RESTORE INTERRUPT FIELDS AND /INHIBIT INTERRUPTS ***** JMP INTMORE /CONTINUE THERE FLDOK3, ISZ AFLDCNT /DONE ALL POSSIBLE FIELD VALUES? JMP LOOP3 /NO, KEEP GOING ISZ TSTCNT /DONE ALL REQUESTED FIELD? JMP LOOP2 /NO, KEEP GOING ISZ WRDCNT /DONE 4K WORDS WORTH OF 'EM YET? JMP LOOP1 /NO, KEEP GOING JMP I PNEXT/(NEXT) /ON TO NEXT TEST PINTHND,INTHND /POINTER TO OUR INTERRUPT HANDLER WRDCNT, .-. /TEST WORD COUNTER TSTCNT, .-. /TEST FIELD COUNTER AFLDCNT,.-. /COUNT OF ALL FIELDS PMOVIT, MOVIT /POINTER TO MOVIT ROUTINE PNEXT, NEXT /NEXT PIECE OF CODE POINTER L5404, JMP I 4 /CONSTANT 5404 / THIS IS EXECUTED IN EXT MEM TEST FIELD(S). LIST1, ION /TURN INTERRUPT ON NOW NOP /WASTE A CYCLE IOF /TURN INTERRUPT OFF NOW IF GETS HERE HLT /HALT IF IT GETS HERE JMP ERRCOMMON /CONTINUE THERE / THIS CONTINUES THE INTERRUPT HANDLING, THE FIELD ZERO COPY IS / LOADED INTO EACH TEST FIELD! INTMORE,CLA /CLEAN UP RDF /GET THE CURRENT DATA FIELD TAD FLDSVALUE /COMPARE TO EXPECTED VALUE SNA CLA /SKIP IF NOT CORRECT VALUE JMP FLDOK /JUMP IF OK VALUE TAD CNTFLDS /GET EXPECTED COUNT HLT /BARF WITH BAD VALUE JMP ERRCOMMON /CONTINUE THERE FLDOK, RIF /GET OUR OWN FIELD TAD FLDTST /COMPARE TO EXPECTED VALUE SNA CLA /SKIP IF NOT IN RIGHT FIELD JMP FLDOK2 /JUMP IF OK TAD FLDNUM /GET BITS FOR LATEST FIELD HLT /SHOW PROBLEMATIC FIELD JMP ERRCOMMON /CONTINUE THERE FLDOK2, CDF 00 /BACK TO FIELD 00 CIF 00 /GOING TO FIELD 00 JMP I .+1/(FLDOK3) /GO THERE FLDOK3 /THROUGH HERE ERRCOMM,CDF 00 /BACK TO FIELD 00 CIF 00 /GOING TO FIELD 00 JMP I .+1/(FLDAGN) /GO THERE FLDAGN /THROUGH HERE LIST1END=. /END OF LIST HERE / THE 4 COUNTERS ARE ALSO MOVED TO THE EXTENDED MEMORY FIELDS. LIST2= . /SECOND LIST OF STUFF TO MOVE CNTFLDS,.-. /COUNTER FOR ALL POSSIBLE FIELDS FLDSVAL,.-. /FIELD-RELATED VALUE FLDNUM, .-. /LATEST FIELD BITS VALUE STORED HERE FLDTST, .-. /-(EXPECTED FIELD BITS) VALUE STORED HERE LIST2END=. /END OF LIST HERE PAGE / MOVING SUBROUTINE. MOVES WORDS FROM WHERE THEY ARE CURRENTLY / IN FIELD ZERO TO ALL THE SELECTED EXTENDED FIELDS AT THE SAME / RELATIVE ADDRESS. MOVIT, .-. /MOVING ROUTINE CLA /CLEAN UP TAD I MOVIT /GET THE FIELD COUNT DCA MVTMP1 /STASH IT ISZ MOVIT /BUMP TO NEXT ARGUMENT TAD I MOVIT /GET MOVE COUNT DCA MVTMP2 /STASH IT ISZ MOVIT /BUMP TO NEXT ARGUMENT TAD I MOVIT /GET POINTER-1 DCA MVTMP3 /STASH IT ISZ MOVIT /BUMP PAST LAST ARGUMENT TAD [CDF] /GET CDF 00 DCA MVINS1 /STORE IN-LINE TAD MVTMP1 /GET FIELD COUNT DCA MVCNT1 /STASH IT FOR COUNTING MVLUP1, TAD MVTMP3 /GET MOVE POINTER DCA XR0 /STASH IT TAD MVTMP3 /GET MOVE POINTER DCA XR1 /STASH IT TAD MVTMP2 /GET MOVE COUNT DCA MVCNT2 /STASH IT FOR COUNTING TAD MVINS1 /GET CDF INSTRUCTION TAD [10] /BUMP TO NEXT FIELD DCA MVINS1 /STORE IN-LINE MVLUP2, CDF 00 /GOTO OUR FIELD TAD I XR0 /GET A WORD MVINS1, CDF 00+.-. /WILL BE CDF TO LATEST FIELD DCA I XR1 /PUT A WORD ISZ MVCNT2 /DONE ENOUGH WORDS? JMP MVLUP2 /NO, GO BACK ISZ MVCNT1 /DONE ENOUGH FIELDS? JMP MVLUP1 /NO, GO BACK CDF 00 /YES, BACK TO OUR FIELD JMP I MOVIT /RETURN TO CALLER MVTMP1, .-. /HOLDS FIELD COUNT MVTMP2, .-. /HOLDS MOVE COUNT MVTMP3, .-. /HOLDS MOVE POINT MVCNT1, .-. /MOVE FIELD COUNTER MVCNT2, .-. /MOVE WORD COUNTER PAGE NEXT, HLT /GOOD HALT HERE JMP I (7600) /EXIT IF WE GET HERE MAKETTY,.-. CLA /CLEAN UP TFL /SET THE FLAF\G NOW TSF /FLAG UP? JMP .-1 /NO, WAIT FOR IT JMP I MAKETTY /RETURN $ /THAT'S ALL FOLK