;DCX-PC100 CONTROLLER PROGRAM ;COPYRIGHT (c) PRECISION MICRO CONTROL CORPORATION 1989-1996 ;ALL RIGHTS RESERVED ;FILE DCXPC1.ASM .PMOD .EXT SETUP .PUB VER,COPY JMP SETUP ;RAM BASED FIRMWARE STARTS HERE ; JUMP TO SETUP VER: .BYTE 'DCX-PC100 ' .BYTE 'VER. PM1 ' .BYTE 'REV. 4.9c ' .BYTE 0 COPY: .BYTE 'COPYRIGHT PRECIS' .BYTE 'ION MICRO CONTRO' .BYTE 'L CORPORATION' .BYTE ' 1989-1997' .BYTE 0 ; ;FILE: DCXPC1.ASM ; ; ; DCXPC1R.HEX - DCX firmware for RAM based operation, use DCXBOOT program to ; load hex file into DCX (starting address 8000 hex). See ; batch file BOOTDCX.BAT for example. ; ; DCXPC1E.HEX - DCX firmware for ROM based operation, load code into EPROM ; starting at offset 0. In order to create this file, start ; with copy of DCXPC1.ASM and look for all occurances of ; keyword 'EPROM' in source code. Make changes described at ; those locations. ; ; ; CHANGES FROM PREVIOUS REVISION 1.0 ; DATE CHANGE ;======================================================================= ; 1/13/89 CORRECTED INITIALIZATION OF CMDSTAT IN SETUP ; 1/13/89 ADDED TEST FOR GPIB ENABLED BEFORE WRITING TO AUXCMD IN CRLF ; ; CHANGES FROM PREVIOUS REVISION 1.0A ; DATE CHANGE ;======================================================================= ; 1/27/89 FIXED BUG IN ANALOG TO DIGITAL CONVERTER INPUT ROUTINE AT ADIN: ; ; CHANGES FOR REVISION 1.1A ; DATE CHANGE ;======================================================================= ; 2/15/89 FIXED BUG IN REPEAT COMMAND SO THAT IT WOULD REPEAT INDEFINATLY ; 2/15/89 INITIALIZE 'SOFT' VARIABLE SO THAT NVRAM IS USED ; 2/15/89 PUT REPEAT COUNT ON STACK SO THAT IT IS SAVED ACROSS MACRO CALLS ; 2/15/89 IMPLEMENTED JOG FUNCTIONS FOR DC SERVO MODULE ; SEE COMMANDS JV,JA,JN,JF ; 2/15/89 PLACED ENABLED SWITCHES AND TRIPPED FLAGS ON LIMIT SWITCHES AND ; ENCODER ERROR INPUT, SEE COMMANDS FN,FF,LN,LF,LS ; 2/20/89 CHANGED INITIALIZATION OF PORT 0 TO MAKE COUNTER AN INPUT ; 2/20/89 CHANGED INTERNAL COMMAND STORAGE FORMAT, 7 BYTE COMMAND TO 6 ; 2/20/89 ADDED DIRECT COMMAND WRITE FOR IBM COMMUNICATION ; 2/20/89 REMOVED SENDING OF LINEFEED AFTER RECEPTION OF CARRIAGE RETURN ; FROM IBM PORT INTERFACES ; 2/23/89 ADDED SUPORT FOR RS232 MODULE ; 2/27/89 CREATED HANDSHAKE ON/OFF (HN,HF) COMMANDS FOR RS232 MODULE ; 2/27/89 ADDED INSTRUCTION TO DISABLE INTERRUPTS WHILE READING SERVO ; DATA FOR TELL COMMANDS, ELLIMINATE FALSE DATA ; 2/27/89 CREATED TELL FOLLOWING ERROR (TF) COMMAND FOR DC SERVO MODULE ; 2/27/89 CREATED STOP ON ERROR (SE) COMMAND FOR DC SERVO MODULE ; 3/2/89 CREATED STEPPER MODULE COMMANDS SF,SH,FC,HC ; 3/2/89 IMPLEMENTED EXECUTION OF MACRO 0 ON POWER UP ; 3/3/89 CREATED IN,IF,NL,BK COMMANDS ; 3/6/89 ADDED CODE TO IMPLEMENT GH COMMAND ; ; CHANGES FOR REVISION 1.1B ; DATE CHANGE ;======================================================================= ; 3/23/89 CHANGED THE FORMAT OF RETURN VALUES IN REPLY BUFFER FOR DIRECT ; ACCESS COMMANDS, AXIS NUMBER IS NOW 16 BIT VALUE ; 3/24/89 CHANGED TF COMMAND DISPLAY TO BE CONSISTANT WITH OTHER 32 ; BIT DISPLAYS ; 3/24/89 CHANGED TF, TC, TA AND CC COMMANDS TO REPLY IN BINARY WHEN USING ; DIRECT ACCESS ; ; CHANGES FOR REVISION 1.1C ; DATE CHANGE ;======================================================================= ; 4/11/89 ADDED CODE TO CLEAR NON-VOLATILE RAM IF ROTARY SWITCH IN ; POSITION "F" ; ; CHANGES FOR REVISION 1.2A ; DATE CHANGE ;======================================================================= ; 4/13/89 ADDED SUPPORT FOR DIGITAL I/O MODULE (MC-400) ; 5/2/89 ADDED MASTER/SLAVE CAPABILITY TO DC SERVO MODULES ; (SEE SM COMMAND) ; 5/2/89 IMPLEMENTED INTERRUPT ON POSITION COMMANDS, IP AND IR ; 5/2/89 IMPLEMENTED WAIT FOR POSITION COMMANDS, WP AND WR ; 5/2/89 REMOVED EXTRA INSTRUCTIONS FROM SE COMMAND CODE ; 5/3/89 MODIFIED CODE IN ESCAPE ROUTINE. PREVIOUS CODE DID NOT PERFORM ; PROPERLY WHEN USER ABORTED MACRO EXECUTION AND THEN RESTARTED ; COMMAND WITH A RETURN. ALSO IMPLEMENTED PAUSE/RESTART OF ; COMMANDS WITH SPACE BAR. ; ; CHANGES FOR REVISION 1.2B ; DATE CHANGE ;======================================================================= ; 5/15/89 REMOVED UNUSED VARIABLES BUFF1-4 ; 5/15/89 MODIFIED DISPLAY OF DIGITAL AND ANALOG CHANNELS IN TC AND TA ; COMMANDS, NEW CODE WILL DISPLAY CHANNEL NUMBER WITHOUT LEADING ; ZEROS FOLLOWED BY SPACE FOLLOWED BY VALUE ( 0 OR 1 FOR DIGITAL) ; ; CHANGES FOR REVISION 1.2C ; DATE CHANGE ;======================================================================= ; 5/19/89 ADDED CODE TO CLEAR TRAJECTORY COMPLETE BIT IN MR628: ; ; CHANGES FOR REVISION 1.2D ; DATE CHANGE ;======================================================================= ; 5/31/89 ADDED CODE TO SAVE REGISTERS DURING CALLS TO ESC: ; 5/31/89 FIXED BUG IN FE COMMAND FOR STEPPER MODULE, OLD CODE USED DATA ; AT LOCATION $F TO MASK HIGH BYTE FROM ENCODER INSTEAD OF ; IMMEDIATE VALUE OF #$F ; ; CHANGES FOR REVISION 1.3A ; DATE CHANGE ;======================================================================= ; 6/5/89 CHANGED DC SERVO MODULE SERVICE TO USE 30 BIT ENCODER POSITION ; FROM LM628. PREVIOUS CODE USED ONLY 16 LOWER BITS FROM LM628, ; MITSUBISHI MAINTAINED UPPER 16 BITS. THIS REQUIRED LARGE AMOUNTS ; OF CPU OVERHEAD THAT WAS UNAVAILABLE AS MORE AND MORE TASKS WERE ; PLACED ON CPU. ; 6/5/89 ADDED CODE TO GENERATE TRAJECTORY COMPLETE BIT FOR MODULES ; BASED ON LM628. THIS IS DONE BY COMPARING DESIED POSITION TO ; TARGET IN INTERRUPT SERVICE. ; 6/5/89 REMOVED READING OF DC SERVO VELOCITY FROM INTERRUPT SERVICE. ; CHANGED TELL VELOCITY COMMAND TO READ VALUE FROM LM628. ; 6/7/89 MODIFIED DC SERVO MODULE INITIALIZATION TO MEET SPEC. ; 6/7/89 REMOVED INITIALIZATION OF TARGET FROM FI AND FE COMMANDS ; 6/7/89 ADDED CODE TO ALLOW ESCAPE TO BE INITIATED FROM IBM DIRECT ; COMMAND INTERFACE. WRITE #$FF TO CMDCNT ; ; CHANGES FOR REVISION 1.3B ; DATE CHANGE ;======================================================================= ; 6/8/89 FIXED BUG IN DN,DF,IN,IF COMMANDS, CODE USED 7 INSTEAD OF #7 ; ; CHANGES FOR REVISION 1.4A ; DATE CHANGE ;======================================================================= ; 6/22/89 CHANGED NAME OF FILE TO DCXPC1 TO MATCH PRODUCT P.N. ; 6/22/89 MODIFIED CODE TO WAIT UNTIL WATCHDOG TIMER CHANGES FROM ; $0 TO $FF WHICH IS WHEN WD OUTPUT (MODULE BUS RESET) WILL ; GO FALSE. SEE SET6: ; 6/23/89 CHANGED INITIALIZATION OF CMDCNT FOR IBM DIRECT ACCESS COMMAND ; INTERFACE. PREVIOUS VERSION SET CMDCNT TO $FF IN IIBMPT:, ; THIS CONFLICTED WITH ESCAPE TEST OF IBM PORT IN ESC: CODE. ; MODIFIED CODE TO INITIALIZE CMDCNT TO 1 TO HOLD OFF PC HOST ; FROM SENDING FIRST COMMAND UNTIL DCX READY. ; 6/23/89 CREATED CH AND CL COMMANDS FOR SETTING CHANNELS AS HIGH TRUE ; OR LOW TRUE LOGIC. CHANGES MADE TO FOLLOWING COMMANDS: ; TC,CN,CF,WN,WF,DN,DF,IN,IF. ; 6/23/89 MOVED START OF CODE A000H TO AVOID CONFLICT WITH DEBUGGER ; LOADED AT FC00H. ; ; CHANGES FOR REVISION 1.4B ; DATE CHANGE ;======================================================================= ; 7/11/89 FIXED BUG IN WN AND WF COMMANDS, CODE USED 7 INSTEAD OF #7 ; ; CHANGES FOR REVISION 1.4C ; DATE CHANGE ;======================================================================= ; 7/26/89 FIXED BUG IN RP COMMAND, COUNTS ABOVE 255 REPEATED INDEFINATLY ; ; CHANGES FOR REVISION 1.5A ; DATE CHANGE ;======================================================================= ; 8/21/89 COPIED CURRENT COMMAND TO PAGE ZERO VARIABLES FOR EASIER ACCESS ; BY COMMAND ROUTINES. MODIFIED COMMANDS TO GET PARAMETER FROM ; THESE VARIABLES. ; 8/21/89 MODIFIED DEBUG (DE) COMMAND TO DISPLAY 100H BYTES OF MEMORY ; 8/21/89 CHANGED PC MAILBOX INTERFACE TO BUFFERED INPUT ; 8/21/89 CHANGED SERIAL PORT INTERFACE TO BUFFERED INPUT ; 8/21/89 CHANGED GPIB INTERFACE TO BUFFERED INPUT ; 8/21/89 ADDED CONTOURING MODE FOR DC SERVO MODULES ; 8/21/89 ADDED COMMANDS CR,CX AND SB TO SUPPORT CONTOURING ; 8/21/89 INCREASED ALLOWABLE NUMBER OF MACROS TO 256 ; 8/21/89 INCREASED AMOUNT OF MACRO STORAGE TO 8K ; ; CHANGES FOR REVISION 2.0A ; DATE CHANGE ;======================================================================= ; 9/7/89 ADDED CHECK FOR MOTOR ON IN GO COMMAND. ; 9/11/89 ADDED REGISTER CAPABILITY ; AL - ACCUMULATOR LOAD WITH CONSTANT ; AI - ACCUMULATOR LOAD WITH REGISTER ; AR - COPY ACCUMULATOR TO REGISTER ; AA - ACCUMULATOR ADD ; AS - ACCUMULATOR SUBTRACT ; AC - ACCUMULATOR COMPLEMENT ; AN - ACCUMULATOR AND ; AO - ACCUMULATOR OR ; AE - ACCUMULATOR EOR ; TR - TELL REGISTER ; IE - IF EQUAL ; IN - IF NOT EQUAL ; IG - IF GREATER THAN ; IB - IF BELOW (LESS THAN) ; IS - IF BIT SET ; IC - IF BIT CLEAR ; 9/11/89 MODIFIED DECOUT, HEXOUT AND DISPL1 ROUTINES SO THAT AT LEAST ; ONE '0' DIGIT WILL BE DISPLAYED WHEN LEADING ZERO'S ARE TURNED ; OFF ; 9/12/89 INCREASED MAXIMUM NUMBER OF COMMANDS TO 256 ; 9/12/89 ADDED SUPPORT FOR INDIRECT PARAMETERS IN COMMANDS USING '@' ; MODIFIER. EG. 1MR@10 CAUSES MOVE RELATIVE BY COUNT IN REG. 10 ; 9/14/89 ADDED FULL STEP AND FULL CURRENT STATUS FLAGS FOR STEPPER MOTORS ; 9/14/89 CREATED IF INTERMEDIATE (IF) COMMAND FOR MONITORING NULL INPUT ; ON STEPPER MODULES. THIS COMMAND ADJUSTS NULL STATUS FLAG. ; 9/14/89 GENERATED LIMIT SWITCH FLAGS FOR STEPPER MODULE. CHECK FOR ; POSITION AND TARGET NOT BEING THE SAME WHEN TRAJECTORY COMPLETE. ; HAD TO MOVE CLEARING OF TRAJ. COMPLETE IN MOVE RELATIVE COMMAND. ; 9/15/89 CHANGED NAME OF CONTOURING MODE COMMAND FROM CR TO CM. MODIFIED ; THE WAY CONTOURING WAS IMPLEMENTED FROM INITIAL RELEASE IN 1.5A. ; ADDED COMMAND TELL CONTOURING COUNT, TX. ; 9/18/89 ADDED SHIFT LEFT AND SHIFT RIGHT ACCUMULATOR COMMANDS, SL AND SR. ; 9/19/89 ADDED IF CONTOURING COMMAND, IX. ; ; CHANGES FOR REVISION 2.0B ; DATE CHANGE ;======================================================================= ; 10/9/89 FIXED BUG IN SET VELOCITY COMMAND FOR LM628 MODULES. OLD CODE ; MIGHT SWITCH AXIS MODE (VELOCITY VS. POSITION). ; 10/10/89 FIXED BUG IN DEFINE HOME COMMAND THAT PREVENTED ENCODER OFFSET ; FROM BEING SET PROPERLY WHEN COMMAND ISSUED WITH NO AXIS ; SPECIFIED. ; ; CHANGES FOR REVISION 2.1A ; DATE CHANGE ;======================================================================= ; 10/17/89 CHANGED SERIAL PORT RECEIVE TO INTERRUPT DRIVEN. ; 10/19/89 CREATED COMACT VARIABLE TO KEEP TRACK OF WHICH PORT COMMAND ; CAME FROM. REORGANIZED CKIN: TO SET AND CLEAR FLAGS IN THIS ; VARIABLE. ; 10/19/89 INITIALIZE CMDCNT TO 0 INSTEAD OF 1, LET PC START LOADING ; COMMANDS IMMEDIATLY. ; 10/20/89 FIXED BUG ASSOCIATED WITH GPIB MODULE. IN INTSVC: DME WAS ; RESTORED BEFORE SERVICING GPIB. THIS CAUSED PROBLEMS WITH ALL ; COMMAND PORTS. ; 10/20/89 CREATED COMMANDS XF AND XN TO SET THE CODES SENT OVER THE ; ASCII COMMAND PORTS WHEN A COMMAND IS RECEIVED AND AFTER IT IS ; EXECUTED. THESE CODE DEFAULT TO 0 WHICH IS INTERPRETED AS SEND ; NOTHING. ; ; CHANGES FOR REVISION 2.1B ; DATE CHANGE ;======================================================================= ; 11/9/89 FIXED BUG IN ASCII COMMAND INTERPRETER THAT ALLOWED CHARACTERS ; OTHER THAN CARRIAGE RETURN AND COMMA TO TERMINATE COMMANDS. ; SEE CODE AT ENDCHK:. ; ; CHANGES FOR REVISION 2.1C ; DATE CHANGE ;======================================================================= ; 11/10/89 ADDED EXTRA READ OF STEPPER MODULE ENCODER LO BYTE IN ORDER TO ; RESET DATA LATCH OF THE CHIP. BEFORE THIS CHANGE, THE LAST ; READING OF HI BYTE WOULD ACTIVATE THE LATCH CAUSING THE COUNT ; TO BE HELD UNTIL THE NEXT ENCODER READING. THIS RESULTED IN ; ENCODER READING FOR STEPPER TO BE ONE SERVICE PERIOD OLD. ; THIS CAUSED FALSE LIMIT SWITCH FLAG SETTINGS. ; ; CHANGES FOR REVISION 2.2A ; DATE CHANGE ;======================================================================= ; 11/15/89 CHANGED CODE TO BE ASSEMBLED UNDER RASM745 RELOCATABLE ASSEMBLER ; CREATED FILES: ; DCXPC1.ASM, ZVAR.ASM, VAR.ASM, SETUP.ASM, CMDINT.ASM ; CMD1.ASM CMD2.ASM CMDTBL.ASM INTSVC.ASM MISC.ASM VEC.ASM ; NOTE THAT WHEN USING RAM ONLY DCX, MUST USE REVISION 1.1A OF ; DCXBOOT PROGRAM TO PROPERLY LOAD HEXFILE. ; 11/15/89 MODIFIED SETUP: TO MOVE VECTORS WHETHER FIRMWARE IS RAM OR EPROM ; BASED. MOVING VECTORS IS REQUIRED FOR RAM VERSION AND HAS NO ; EFFECT IN EPROM VERSION. MAKING THIS CHANGE ELLIMINATES ONE ; STEP IN CREATING OBJECT CODE. ; 11/17/89 ADDED INTERRUPT DISABLE IN TX COMMAND TO PREVENT FALSE READING ; OF CONTOURING COUNT. ; 11/17/89 CREATED LIMIT MODE COMMAND (LM) TO CONFIGURE THE WAY A DC SERVO ; IS STOPPPED WHEN A LIMIT SWITCH IS ACTIVATED. THIS COMMAND ; REPLACES LS COMMAND WHICH DID NOTHING (OLD DC8 COMMAND) AND ; WILL HAVE THE SAME CODE. PARAMETER VALUES FOR LM COMMAND ; ARE, 0 FOR MOTOR OFF (DEFAULT), 1 FOR ABRUPT STOP, 2 FOR SMOOTH. ; ALLOCATED AN AUXILIARY STATUS VARIABLE, AUXSTAT, IN MOTOR ; PARAMETERS TO SAVE LIMIT SWITCH MODE (BIT 0 = ABRUPT, ; BIT 1 = SMOOTH). AUXSTAT IS AT OFFSET 54H IN MOTOR TABLE. ; NOTE THAT MOTOR ON FLAG WILL BE CLEARED IN ALL MODES WHEN A ; LIMIT SWITCH IS ACTIVATED. THIS PREVENTS FURTHER MOVES UNTIL ; USER INTERVENES. ; 11/17/89 ADDED CODE TO SET DI FLAG IN MOTOR STATUS TO PROVIDE A MORE ; DEFINATE WAY OF KNOWING IF DC SERVO IS MOVING IN DIRECTION OF ; ACTIVATED LIMIT SWITCH. PREVIOUS CODE LOOKED AT ENCODER CHANGE. ; ALSO CHANGED CODE THAT SETS LIMIT SWITCH FLAGS FOR STEPPERS SO ; THAT ONLY ONE LIMIT SWITCH FLAG WILL BE ACTIVATED. ; 11/20/89 MODIFIED CODE THAT IMPLEMENTS MOTOR ON COMMAND FOR DC SERVOS. ; NEW CODE ISSUES ABSOLUE POSITION COMMANDS TO LM628 UNTIL ; INTERNAL TRAJECTORY EQUALS EXTERNAL TARGET. PREVIOUS CODE ; ISSUED COMMAND ONCE WHICH DID NOT ALWAYS SET INTERNAL TARGET ; TO THE DESIRED VALUE. ; ; CHANGES FOR REVISION 2.3A ; DATE CHANGE ;======================================================================= ; 11/21/89 ADDED CODE TO SUPPORT MC160 MODULE (STEPPER WITH ENCODER) ; SECOND ENCODER INDEX ENABLED WITH FIND INDEX (FI) COMMAND. ; 11/21/89 CREATED TELL OPTIMAL COMMAND TO DISPLAY TRAJECTORY GENERATOR ; FOR DC SERVO AND ENCODER POSITION FOR MC160 MODULES ; 11/27/89 MODIFIED CODE FOR REPORTING COMMANDS SO THAT REPLY FORMAT IS ; CONSISTENT WITH COMMAND FORMAT WHEN COMMUNICATING THROUGH ; DIRECT ACCESS COMMAND PORT. ; ; CHANGES FOR REVISION 2.3B ; DATE CHANGE ;======================================================================= ; 2/26/90 FIXED WP,WR,IP AND IR COMMANDS. THESE COMMANDS WOULD NOT WORK ; FOR ANY AXIS EXCEPT 1 IN PREVIOUS REVISION. ; 2/26/90 CHANGED SLAVE MODE COMMAND TO ALLOW PARAMETER OF ZERO TO TAKE ; AXIS OUT OF SLAVE MODE. ; ; CHANGES FOR REVISION 2.4A ; DATE CHANGE ;======================================================================= ; 3/5/90 INCREASED SIZE OF CONTOURING COUNTER FROM 16 BIT TO 32 BIT. ; CX COMMAND CAN NOW HAVE A PARAMETER FROM 0 TO 2147483647. ; CONTOURING COUNT MAX. WAS MOVED FROM 824H TO 828H AND ; CONTOURING COUNT WAS MOVED FROM 826H TO 82CH IN DUAL PORT RAM. ; 3/5/90 CHANGED VE COMMAND RESPONSE FROM "DCX" TO "DCX-PC100". ; ; ; CHANGES FOR REVISION 2.4B ; DATE CHANGE ;======================================================================= ; 3/13/90 FIXED TELL CONTOURING (TX) COMMAND WHEN RESPONDING IN BIANRY ; FORMAT. ; 3/13/90 CHANGED INTERRUPT SERVICE FOR DC SERVOS TO ALLOW DIFFERENCES ; OF ONE COUNT BETWEEN LM628 INTERNAL TRAJECTORY AND EXTERNAL ; TARGET. PREVIOUS CODE REQUIRED TWO NUMBERS TO BE THE SAME ; IN ORDER TO SET TRAJ. COMPLETE BIT. UNFORTUNATLY VALUE ; REPORTED BY LM628 CAN BE OFF BY ONE (PRESUMABLY DUE TO ; ROUNDING). ; 3/13/90 MODIFIED CODE THAT IMPLEMENTS MOTOR ON COMMAND FOR DC SERVOS. ; REMOVED CHECK OF INTERNAL TRAJECTORY AGAINST EXTERNAL TARGET. ; PREVIOUS CODE ISSUED MOVE ABSOLUTES UNTIL NUMBERS WERE EQUAL. ; THIS WAS UNNECESSARY AFTER MODIFING TRAJ. COMPLETE BIT CODE ; IN INTERRUPT SERVICE. ; ; ; CHANGES FOR REVISION 2.4C ; DATE CHANGE ;======================================================================= ; 3/15/90 CHANGED INTERRUPT SERVICE FOR DC SERVOS TO USE TRAJECTORY ; COMPLETE FLAG FROM LM628. THIS FLAG SHOULD BE RELIABLE IF ; MOTOR OFF COMMAND IS ISSUED PRIOR TO CHANGING ACCELERATION. ; 3/15/90 MODIFIED SA COMMAND FOR DC SERVOS TO ISSUE MOTOR OFF TO LM628 ; PRIOR TO SETTING ACCELERATION. LM628 PID LOOP WILL BE TURNED ; BACK ON AT THE END OF THE COMMAND IN AXIS IS IN MOTOR ON STATE. ; 3/16/90 CHANGED CODE WHICH IMPLEMENTS DC SERVO JOGGING IN INTERRUPT ; SERVICE. NEW CODE OBEYS LM628 ACCELERATION SETTING REQUIREMENTS. ; 3/16/90 FIXED TELL VELOCITY COMMAND FOR BINARY MODE. ; ; ; CHANGES FOR REVISION 2.5A ; DATE CHANGE ;======================================================================= ; 4/18/90 FIXED LIMIT SWITCH STATUS FLAGS DURING CONTOURING MODE. ; 4/18/90 ADDED ACCUMULATOR MULTIPLY COMMAND (AM, CODE=135). ; 32 X 32 BIT = 64 BIT SIGNED PRODUCT, LOW 32 BITS IN ; ACCUMULATOR (REG. 0), HIGH 32 BITS IN REG. 1. ; ; ; CHANGES FOR REVISION 2.6A ; DATE CHANGE ;======================================================================= ; 4/25/90 ADDED MACRO JUMP (MJ, CODE=5), JUMP TO COMMAND ABSOLUTE (JP, ; CODE=6) AND JUMP TO COMMAND RELATIVE (JR, CODE=7) COMMANDS. ; ; ; CHANGES FOR REVISION 2.7A ; DATE CHANGE ;======================================================================= ; 5/15/90 IMPLEMENTED HOST INTERRUPTS FOR IP AND IR COMMANDS. FOR FAST ; RESPONSE, SERVO MODULE INTERRUPTS ARE ENABLED TO ALERT ; MITSUBISHI MICRO-CONTROLLER WHEN AXIS REACHES BREAKPOINT. ; CREATED ENABLE INTERRUPT (EI, CODE=124) COMMAND TO ALLOW ; INTERRUPTS TO BE SELECTIVELY ENABLED. ; HOST INTERRUPT LINE WILL GO HIGH WHEN ENABLED INTERRUPT SOURCE ; OCCURS. TO COMPLETE INTERRUPT, HOST SHOULD READ DCX ATTENTION ; REGISTER. THIS CAUSES MICRO-CONTROLLER INTERRUPT WHICH INTURN ; RETURNS INTERRUPT LINE LOW. SEE MODINT: AND PCATTN: IN ; CMDINT.ASM AND MS6RSI: IN INTSVC.ASM. ; ; CHANGES FOR REVISION 2.8A ; DATE CHANGE ;======================================================================= ; 6/1/90 IMPLEMENTED SYNCRONIZED STARTING OF MULTIPLE AXES. THIS FEATURE ; USES SYNCRONIZATION ON (SN, CODE=170) COMMAND TO SET SYNC FLAG ; IN AUXILIARY STATUS WORD. MOVE COMMANDS CAN THEN BE USED TO ; ADJUST AXIS TARGET, BUT MOTION WILL NOT BE STARTED UNTIL GO ; COMMAND IS ISSUED. CONTROLLER USES READY FLAG IN AUXILIARY ; STATUS TO MARK WHICH AXES, MOVE COMMANDS HAVE BEEN ISSUED TO. ; INTERRUPTS ARE DISABLED DURING EXECUTION OF ENTIRE GO COMMAND ; TO INSURE MINIMAL LATENCY BETWEEN AXES. SYNCRONIZATION CAN BE ; TURNED OFF WITH THE NO SYNCRONIZATION (NS, CODE=171) COMMAND. ; ; CHANGES FOR REVISION 2.9A ; DATE CHANGE ;======================================================================= ; 6/20/90 ADDED SERVO INDEXING COMMANDS TO ALLOW INDEXING MULTIPLE AXES ; IN THE SAME MOTION. INDEX ARM (IA, CODE=93) ACTIVATES INDEX ; FUNCTION OF LM628 ON SERVO MODULES. IN CONTRAST TO FIND INDEX ; COMMAND, INDEX ARM DOES NOT WAIT FOR THE INDEX PULSE TO BE ; OBSERVED. WAIT FOR INDEX (WI, CODE=94) COMMAND CAN BE USED ; TO DETERMIN WHEN INDEX HAS BEEN COMPLETED, AND TO READ INDEX ; REGISTER OF LM628. ; 6/20/90 ADDED NEW ASSEMBLY FILE CMD3.ASM ; 6/20/90 REMOVED UNUSED CODE FOR GPIB ADDRESS CHANGE COMMAND, THIS IS ; DONE BY DIP SWITCH SETTING ON MODULE ; ; CHANGES FOR REVISION 3.0A ; DATE CHANGE ;======================================================================= ; 8/30/90 ADDED SUPPORT FOR MC200 MODULE. ; 8/30/90 MODIFIED RB,RW,RL,WB,WW AND WL COMMANDS TO PROVIDE EASY ACCESS ; TO SERVO DATA. EXAMPLE: 1RL4 READS SERVO AXIS 1 POSITION ; ; CHANGES FOR REVISION 3.1A ; DATE CHANGE ;======================================================================= ; 10/19/90 FIXED ALLOWABLE PARAMETER LENGTH FOR MACRO JUMP COMMAND. ; 10/19/90 IMPLEMENTED MASTER/SLAVE MODE FOR MC200 MODULES. CREATED NEW ; COMMAND SET SLAVE (SS, CODE=29) TO USE WITH SET MASTER. ; 10/19/90 REMOVED UNUSED ASCII MODE CODE FROM MC200, MODULE NOW DEFAULTS ; TO BINARY MODE. HOST DCX-PC NO LONGER ISSUES ATTENTION TO PUT ; MODULE IN BINARY MODE. SEE RT200: IN SETUP.ASM. ; ; CHANGES FOR REVISION 3.3A ; DATE CHANGE ;======================================================================= ; 3/3/91 GENERIC VERSION FOR SHIPMENT WITH STANDARD DCX-PC100/A. USED ; MOTHERBOARD CODE FROM REV 3.1A. SKIPPED 3.2A SINCE IT WAS ; EXPERIMENTAL. SWITCHED TO DCX-MC200 REV. 2.0A WHICH IS BUILT ; WITH VERSION 3 OF 78310 ASSEMBLER. CREATED MAKE FILE FOR USE ; WITH MICROSOFT NMAKE UTILITY. ; ; CHANGES FOR REVISION 3.3B ; DATE CHANGE ;======================================================================= ; 4/1/91 MODIFIED CHANGE ACCELERATION COMMAND TO BE COMPATIBLE WITH ; NEW VERSION OF LM628. OLD CODE ISSUED LOAD TRAJ. COMMAND TO ; CHIP WITH MOTOR OFF BIT SET FOLLOWED BY LOAD TRAJ. COMMAND ; WITH NEW ACCELERATION VALUE. THIS WAS DONE TO BE SURE CHIP ; WAS OFF BEFORE CHANGING ACCELERATION (THIS WAS REQUIRED IN ; OLD VERSION OF LM628). IN NEW VERSION OF LM628, ISSUING SECOND ; LOAD TRAJ. COMMAND WITHOUT WAITING OVERWRITES FIRST COMMAND. ; THIS HAS THE UNDESIRABLE EFFECT OF STARTING THE MOTOR IN MOTION. ; NEW VERSION OF CODE TEST FOR MOTOR ALREADY OFF, AND DOES NOT ; ISSUE THE FIRST LOAD TRAJ. COMMAND IF IT IS. IF THE MOTOR IS ; ON, IT ISSUES THE FIRST LOAD TRAJ. COMMAND TO TURN IT OFF AND ; THEN WAITS FOR THE LM628 STATUS TO CHANGE. ONCE THE STATUS ; CHANGES IT ISSUES THE SECOND LOAD TRAJ.. THE FINAL STEP IS TO ; TURN THE MOTOR BACK ON. IF THE AXIS IS IN POSITION MODE, THIS ; IS DONE BY ISSUING THE START COMMAND. IF IT IS IN VELOCITY MODE, ; A LOAD TRAJECTOY WITH THE CURRENT POSITION IS ISSUED. THIS NEW ; VERSION OF CODE IS ALSO COMPATIBLE WITH OLD VERSION OF LM628. ; ; CHANGES FOR REVISION 3.3C ; DATE CHANGE ;======================================================================= ; 5/23/91 MODIFIED LM628 JOG CODE TO WAIT FOR STATUS TO CHANGE TO MOTOR ; OFF BEFORE ISSUEING LOAD TRAJECTORY COMMAND. THIS IS REQUIRED ; BY THE LATEST MASK OF THE LM628 (SEE CHANGE FOR 3.3B). ; ; CHANGES FOR REVISION 3.4A ; DATE CHANGE ;======================================================================= ; 8/14/91 ADDED CONVERT ASCII COMMAND (CA, CODE=129) FOR CONVERTING ; REGISTER CONTENTS TO ASCII. ON COMPLETION REG. 0 CONTAINS ; ADDRESS OF NULL TERMINATED ASCII BUFFER. ; 8/15/91 REMOVED CODE THAT CHECKED FOR EXCEEDING MAXIMUM PARAMETER LENGTH ; IN COMMAND INTERPRETER. THIS WAS A PROBLEM IN HEX MODE. ; 8/16/91 FIXED DIRECTION COMMAND FOR MC200 MODULE. ; 8/19/91 IMPLEMENTED JOG VELOCITY CONTROL BASED ON ANALOG INPUT FOR MC200. ; ALSO USED FOR TENSION CONTROL APPLICATIONS. ADDED 4 NEW COMMANDS ; ADJUST JOGGING/TENSION CONTROL: ; JG - JOG GAIN (CODE=220) ; JD - JOG DERIVATIVE (CODE=221) ; JO - JOG OFFSET (CODE=222) ; JB - JOG DEADBAND (CODE=223) ; 8/19/91 IMPLEMENTED POSITION RECORD (PR, code = 212) COMMAND FOR MC200. ; THIS COMMAND CAN BE ISSUED SPECIFYING ONE OR MORE AXES. THIS ; COMMAND WILL CAUSE THE CURRENT AND OPTIMAL POSITIONS FOR THOSE ; AXES TO BE COPIED TO POINT MEMORY EVERY SERVO UPDATE. THE ; PARAMETER TO THIS COMMAND IS THE NUMBER OF POINTS TO BE ; COLLECTED. USE THE DISPLAY RECORDED POSITION (DR, code = 213) ; AND THE DISPLAY RECORDED OPTIMAL POSITION (DO, CODE=214) COMMANDS ; TO RETRIEVE THE RECORDED DATA. THE PARAMETER TO THESE COMMANDS IS ; THE DATA INDEX. ; 11/8/91 MODIFIED USE OF CMDSTAT VARIABLE TO PREVENT RACE CONDITION ; WHEN PC SENDS LAST CHARACTER OF A COMMAND AND DCX SETS CMDSTAT ; TO INDICATE BUSY. NEW CODE WILL SET CMDSTAT TO INDICATE BUSY ; BEFORE ACCEPTING LAST CHARACTER FROM PC. ; ; CHANGES FOR REVISION 3.4B ; DATE CHANGE ;======================================================================= ; 11/12/91 MODIFIED MC200 CODE TO MOVE DIRECTION STATUS BIT FROM MASTER TO ; SLAVE AXIS. THIS IS NECESSARY FOR VELOCITY GAIN TERM TO WORK ; CORRECTLY. ; ; CHANGES FOR REVISION 3.5A ; DATE CHANGE ;======================================================================= ; 11/12/91 ADDED SUPOORT FOR MC200 CONTOURING MODE ; ADDED FOLLOWING COMMANDS: ; GL - GET MODULE LONG FROM ABSOLUTE ADDRESS (CODE = 242) ; PL - PUT MODULE LONG TO ABSOLUTE ADDRESS (CODE = 245) ; ; CHANGES FOR REVISION 3.5B ; DATE CHANGE ;======================================================================= ; 11/18/91 FIXED GPIB INTERFACE CODE TO ONLY SEND NULL WHEN DCX IS ADDRESSED ; AS TALKER. PREVIOUS CODE PUT NULL INTO OUTPUT REGISTER OF 9914 ; WHENEVER IT WAS EMPTY. ; ; CHANGES FOR REVISION 3.6A ; DATE CHANGE ;======================================================================= ; 1/2/92 MODIFIED MC200 LIMIT SWITCH CODE SO THAT THEY TRIP REGARDLESS OF ; DIRECTION IN "NON-POSITION" MODES. THIS WAS NECESSARY BECAUSE ; OF ALL THE MODES WHERE THE DIRECTION OF TRAVEL IS NOT KNOWN. ; ; CHANGES FOR REVISION 3.7A ; DATE CHANGE ;======================================================================= ; 1/6/92 ADDED DELAYS TO MC200 LIMIT SWITCH AND ENCODER ERROR INPUT ; CHECKING CODE. ADDED TWO NEW COMMANDS TO SET RESPECTIVE DELAY ; PERIODS IN MILLISECONDS (0-255): ; FD - FAIL (ENCODER ERROR) INPUT DELAY (CODE = 204) ; LD - LIMIT SWITCH INPUT DELAY (CODE = 205) ; 1/7/92 ADDED FOLLOWING COMMANDS: ; GB - GET MODULE BYTE FROM ABSOLUTE ADDRESS (CODE = 240) ; GW - GET MODULE WORD FROM ABSOLUTE ADDRESS (CODE = 241) ; PB - PUT MODULE BYTE TO ABSOLUTE ADDRESS (CODE = 243) ; PW - PUT MODULE WORD TO ABSOLUTE ADDRESS (CODE = 244) ; ; CHANGES FOR REVISION 3.8A ; DATE CHANGE ;======================================================================= ; 2/11/92 FIXED HALF CURRENT COMMAND FOR MC150 MODULES. CODE FOR COMMAND ; WAS CORRUPTED IN VERSIONS 3.4A ; ; CHANGES FOR REVISION 3.9A ; DATE CHANGE ;======================================================================= ; 3/31/92 IMPLEMENTED "MOTOR ON" ACTIVE LOW OUTPUT FROM STEPPER MODULES. ; THIS SIGNAL WAS DEFINED AS "MOTOR OFF" IN USERS'S MANUAL, BUT ; SIGNAL DEFAULTS TO INPUT WITH PULL-UP RESISTOR ON BOARD RESET. ; THE STATE OF THE PIN ON RESET SHOULD BE THE SAME AS MOTOR OFF. ; 3/31/92 MODIFIED VE COMMAND OUTPUT TO "VER. XXX REV. YYY", REMOVED DATE. ; 3/31/92 ADDED CODE TO LOOK FOR ROM BASED MACROS. A MACRO POINTER TABLE ; STARTING AT FC00 IS SCANNED FOR VALID ADDRESSES (NON FFFF). ; VALID POINTERS ARE COPIED TO THE MACRO POINTER TABLE IN RAM. ; THE MACRO DATA ITSELF CAN BE LOCATED ANYWHERE IN MEMORY, BUT ; WILL NORMALLY BE LOCATED AFTER THE CODE IN ROM. ; 3/31/92 CREATED CMD4.ASM FILE, CMD1.ASM AND CMD2.ASM HAVE TO MANY REF'S. ; ; ; CHANGES FOR REVISION 3.9B ; DATE CHANGE ;======================================================================= ; 7/7/92 FIXED CONTOURING MODE COMMAND IN MC200 MODULE CODE. ; ADDED CODE TO CONTOURING MODE COMMAND OF MOTHERBOARD TO SET ; EXTERNAL TARGET TO ZERO FOR CONTOURING MODE MOVE COMMANDS. ; ; ; CHANGES FOR REVISION 3.9C ; DATE CHANGE ;======================================================================= ; 7/22/92 FIXED MOTOR OFF COMMAND FOR MC200 MODULES SO THAT TRAJECTORY ; VELOCITY IS SET TO 0. PREVIOUS CODE LEFT TRAJECTORY VELOCITY ; AT CURRENT LEVEL WHICH COULD BE NON-ZERO IF SERVO WAS MOVING ; WHEN MF COMMAND WAS ISSUED. THIS CAUSED VELOCITY TO JUMP TO ; THAT LEVEL WHEN MOTOR ON COMMAND WAS ISSUED. ISSUEING THE ABORT ; COMMAND AFTER THE MOTOR OFF WAS A WORK AROUND IN PREVIOUS CODE. ; 7/22/92 INCREASED MAXIMUM POSITION RECORDING COUNT FOR MC200 MODULES FROM ; 512 TO 1024. ; ; ; CHANGES FOR REVISION 4.0A ; DATE CHANGE ;======================================================================= ; 10/7/92 ADDED SUPPORT FOR MC500 ANALOG I/O MODULE ; 10/8/92 DISABLED SYNCRONIZATION COMMANDS FOR ALL MODULES EXCEPT MC200. ; SYNCRONIZED START FEATURE WAS NOT COMPATIBLE WITH CHANGING ; VELOCITY ON THE FLY FOR LM628 BASED MODULES. ; ; ; CHANGES FOR REVISION 4.1A ; DATE CHANGE ;======================================================================= ; 2/18/93 FIXED TX COMMAND FOR LM628 BASED MODULES. CLI INSTRUCTION LEFT ; OUT. ; 2/18/93 ADDED FOLLOWING COMMANDS TO ACCESS SECOND ENCODER ON MC200 MODULES: ; AT - AUXILIARY ENCODER TELL POSITION (CODE = 233) ; AH - AUXILIARY ENCODER DEFINE HOME (CODE = 234) ; ; ; CHANGES FOR REVISION 4.2A ; DATE CHANGE ;======================================================================= ; 5/25/93 MODIFIED CONTOUR MODE COMMAND TO CLEAR VELOCITY MODE BIT AND TO ; SET TARGET POSITION TO COMMAND PARAMETER ; 5/25/93 FIXED MC200 CODE SO THAT NO FALSE TRAJECTORY GENERATOR READINGS ; WERE RECEIVED BY MOTHERBOARD. UPDATED MC200 REVISION TO 2.7a. ; ; ; CHANGES FOR REVISION 4.3A ; DATE CHANGE ;======================================================================= ; 7/28/93 CHANGED MC200 CODE TO ALLOW FOLLOWING ERRORS IN EXCESS OF 32767. ; THE FOLLOWING ERROR VALUE REPORTED BY THE TELL FOLLOWING ERROR ; COMMAND WILL NOT EXCEED +/-32767. BY USING THE SE COMMAND TO ; SET THE MAXIMUM POSITION ERROR TO 32767, FOLLOWING ERROR ; CHECKING CAN BE DISABLED. UPDATED MC200 REVISION TO 2.8a. ; ; ; CHANGES FOR REVISION 4.4A ; DATE CHANGE ;======================================================================= ; 9/3/93 CHANGED MC200 CODE TO IMPLEMENT INTEGRATION MODE (IM, CODE=114) ; COMMAND. THIS COMMAND SELECTS BETWEEN TWO DIFFERENT MODES OF ; THE INTEGRAL TERM IN THE PID LOOP. A PARAMETER OF 0 CAUSES THE ; INTEGRAL TERM ONLY TO BE ACTIVE WHILE A SERVO IS NOT MOVING. ; THIS WAS THE ONLY MODE IN THE PREVIOUS VERSIONS OF CODE, AND ; IS THE DEFAULT IN THE NEW VERSION. A PARAMETER OF 1 CAUSES THE ; INTEGRAL TERM TO BE ACTIVE AT ALL TIMES. ; ; ; CHANGES FOR REVISION 4.5A ; DATE CHANGE ;======================================================================= ; 9/28/93 CHANGED MC200 MODULE CODE SO THAT INCORRECT OPTIMAL POSITIONS ARE ; NOT TRANSMITTED TO MOTHERBOARD WHEN MODULE IS IN CONTOURING MODE. ; UPDATED MC200 CODE REVISION TO 3.0a ; ; ; CHANGES FOR REVISION 4.6A ; DATE CHANGE ;======================================================================= ; 1/31/95 ADDED SUPPORT FOR MC260 STEPPER MODULE. ADDED FOLLOWING COMMANDS ; FOR MC260 MODULES: ; OM - OUTPUT MODE (CODE = 216) ; LS - LOW SPEED (CODE = 230) ; MS - MEDIUM SPEED (CODE = 231) ; HS - HIGH SPEED (CODE = 232) ; AT - AUXILIARY ENCODER TELL POSITION (CODE = 233) ; AH - AUXILIARY ENCODER DEFINE HOME (CODE = 234) ; AF - AUXILIARY ENCODER FIND INDEX (CODE = 235, USES MTRLFI STATUS) ; AZ - AUXILIARY ENCODER TELL INDEX (CODE = 236) ; NOTE THAT THE SET VELOCITY AND ACCELERATION COMMANDS FOR THE ; MC260 MODULE USE THE SAME COMMAND PARAMETER UNITS AS THE MC200 ; SERVO MODULE (SEE MC200 APPENDIX FOR DETAILS). ; ; ; CHANGES FOR REVISION 4.7A ; DATE CHANGE ;======================================================================= ; 5/3/95 FIXED FE COMMAND FOR MC200 MODULES. PREVIOUS CODE DID NOT SET ; MTRLFE FLAG CORRECTLY. ; 5/3/95 FIXED FE, IA, AF, IP AND IR COMMANDS FOR MC260 MODULE. PREVIOUS ; CODES HAD THE CAPTURE AND COMPARE FUNCTIONS REVERSED BETWEEN ; THE PULSE COUNTER AND THE AUXILIARY ENCODER INPUTS. MOTHERBOARD ; CODE FOR AF COMMAND DIDN'T SET MTRLFI FLAG CORRECTLY EITHER. ; 5/4/95 ADDED FOLLOWING COMMANDS FOR MC200 AND MC260 MODULES: ; GN - GO UNTIL COARSE INPUT ON (CODE = 166) ; GF - GO UNTIL COARSE INPUT OFF (CODE = 167) ; GI - GO UNTIL ENCODER INDEX OCCURS (CODE = 168) ; GE - GO UNTIL EDGE OCCURS (CODE = 169) ; 5/4/95 ADDED CODE TO MC200 AND MC260 MOVE COMMANDS TO WAIT FOR MODULE ; NOT BUSY BEFORE CLEARING TRAJECTORY COMPLETE FLAG IN STATUS ; REGISTER. THIS PREVENTS THE MOTHERBOARD CLOCK INTERRUPT SERVICE ; FROM READING THE MODULES TRAJECTORY COMPLETE FLAG AS CLEARED ; BEFORE THE MOVE COMMAND ISSUED TO THE MODULE TAKES EFFECT. ; 5/5/95 IMPLEMENTED JOGGING FOR MC260 MODULE. USES JG,JO,JB AND JA ; COMMANDS TO SET JOG GAIN, JOG OFFSET, JOG DEADBAND AND JOG ; ACCELERATION (AND DECELERATION) RESPECTIVELY. AFTER PLACING ; AXIS IN VELOCITY MODE WITH VM COMMAND, AND CHANGING TO NON-ZERO ; JOG GAIN, AXIS WILL RUN IN VELOCITY MODE USING ANALOG INPUT TO ; ADJUST MAXIMUM VELOCITY. TO TERMINATE JOGGING, SET JOG GAIN TO ; ZERO AND RESET VELOCITY, ACCELERATION AND DECELERATION VALUES. ; DON'T FORGET TO ISSUE MOTOR ON (MN) COMMAND AFTER RUNNING ; IN JOGGING/VELOCITY MODE TO RESET TARGET POSITION TO CURRENT. ; ; ; CHANGES FOR REVISION 4.7B ; DATE CHANGE ;======================================================================= ; 3/4/96 FIXED VM,PM,GM AND QM COMMANDS FOR MC200/260 MODULES. PREVIOUS ; CODE DID NOT SET OR CLEAR VELOCITY MODE BIT IN STATUS REGISTER. ; 3/4/96 FIXED FIND EDGE COMMAND FOR MC150/160 MODULES SO THAT MOTOR ; OFF SIGNAL IS RESET AFTER OPERATION IS COMPLETE. ; ; ; CHANGES FOR REVISION 4.8A ; DATE CHANGE ;======================================================================= ; 6/3/96 IMPLEMENTED OUTPUT MODE COMMAND (OM, CODE=216) FOR MC200 MODULE. ; ACCEPTS A PARAMETER OF 0 FOR BIPOLAR ANALOG OUTPUT (THE DEFAULT), ; OR 1 FOR UNIPOLAR ANALOG OUTPUT. FOR UNIPOLAR OUTPUT, MODULE ; PIN 7 ON J3 PROVIDES A TTL DIRECTION SIGNAL. THE PHASING OF ; THE MODULE OUTPUT (DIRECTION SIGNAL LEVEL) CAN BE REVERSED ; WITH THE PHASE COMMAND. ; ; 6/3/96 MADE FOLLOWING FIXES FOR MC260 MODULE: ; - ADDED CODE TO DISABLE PULSES WHEN LIMIT SWITCH HIT UNDER STOP ; ABRUPT AND TURN MOTOR OFF MODES ; - FIXED JOGGING SO THAT LIMIT TRIPS UNDER STOP SMOOTHLY MODE ; WORK CORRECTLY ; ; ; CHANGES FOR REVISION 4.9A ; DATE CHANGE ;======================================================================= ; 3/26/97 Implemented RS232 networking. Use board select byte with MSBit ; set. Select byte must match rotary switch setting. ID 0 ; selects all boards, but no transmit capability. ID F should ; not be used since this causes non-volatile RAM to be cleared ; on power up. Board will be deselected when a select byte with ; unmatching ID is received. Note that default setting of RS232 ; handshaking is now off. This allows RS232 networking without ; requiring HF command to be issued. ; ; 3/26/97 Changed RS232 buffer to wrap around to allow reception of ; characters while commands are being executed. This is required ; to support XON/XOFF protocol. Commands can only be aborted by ; escape key. Removed transmission of linefeed characters from ; serial port. ; ; 3/26/97 Implemented logical to physical axis reassignment using the ; Use Physical axis command (UP, code=157). If this command is ; issued with no axis specified, and a command parameter of 0, ; it will unassign all axes. If this command is issued specifying ; a axis number, but with a command parameter of 0, it will ; unassign just that axis. A logical axis that has no physical ; axis assigned to it will have no control capability. Issuing ; the UP command with an axis and a non-zero parameter will assign ; the physical axis specified by the command parameter to the ; logical axis specified by the command axis specifier. The physical ; axis numbers that can be used match the module positions that ; have motor control modules installed (1-6). The module positions ; are numbered in the silkscreen printing on the DCX motherboard. ; ; To alert the user when a command is issued with a bad axis number, ; the following command codes have been added: ; -14 = NO AXIS SPECIFIED ; -15 = AXIS NOT ASSIGNED ; -16 = AXIS ALREADY ASSIGNED ; -17 = AXIS DUPLICATE ASSIGNMENT ; ; When a command is with no axis specified, and the command supports ; this, the command will only affect axes that have current physical ; assignments. If a command is issued specifying a logical axis that ; has no current physical assignment, a command error will be ; generated when the command executes. ; ; The default logical to physical assignments that are setup when ; the board is powered up or reset, will be the same as before. ; That is, the logical axes will be assigned to consecutive ; physical axes (motor modules) as they are located on the board. ; ; It is best to reassign the axes before issuing any other motion ; commands just after power up. Any parameter setup that has been ; done for an axis wil be lost when it is reassigned. Prior to ; reassigning a logical or physical axis it must be unassigned. ; This can be for all axes by issuing the UP command with no axis ; specified, and a command parameter of 0. ; ; Example: If MC200 modules are installed in positions 1, 3 and 5 ; on the motherborad, on power up they will be assigned to logical ; axes 1, 2 and 3 respectively . Issuing the following commands: ; UP,4UP1,5UP3,6UP5 will reassign the axes as 4, 5 and 6. ; ; 3/26/97 Modified Auxiliary encoder define Home command (AH, code=234) and ; Auxiliary encoder Find index command (AF, code=235) to accept a ; parameter specifying an offset for the auxiliary encoder's ; position. The value reported by succeeding Auxiliary encoder ; Tell commands (AT, code=233) will have the offset value added ; to it. The 32 bit offset value is stored in the motor table at ; offset 40 (28hex). ; ; ; CHANGES FOR REVISION 4.9B ; DATE CHANGE ;======================================================================= ; 4/14/97 Added tests to Move Absolute, Move Relative and Go Home commands ; to elliminate moves of zero distance. This fixes problem with ; MC260 modules trying to perform a move of zero distance. This ; test is done for all motor and module types, so additional ; processing time may affect existing application code. ; ; ; CHANGES FOR REVISION 4.9C ; DATE CHANGE ;======================================================================= ; 6/24/97 Added instuction to disable interrupts at the end of timer ; interrupt service. This prevents nested timer interrupts from ; occuring. ; ; ;---------------------------------------------------------------- ; CONTENTS: ; ; CONSTANTS ; SERVO PARAMETERS ; SERVO STATUS BITS ; GENERAL ; CPU ADDRESSES ; NATIOAL CHIP CONSTANTS ; CIO REGISTER ADDRESSES ; MEMORY MAP ; ; VARIABLES ; PAGE ZERO RAM ; COMMAND ; MISC. ; MODULE POINTERS ; SYSTEM RAM ; LARGE BLOCKS ; ; CODE ; SETUP: INITIALIZATION ; START: START OF COMMAND INTERPRETER ; SECOND: ; VAR: ; COMMA: ; EXECUTE: ; NEXT: ; RTGPIB: RESET GPIB MODULE ; RSTMOD: RESET MOTOR MODULES ; CKIN: CHECK FOR INCOMMING ; ; ADRTBL1: COMMAND ADDRESS TABLE 1 ; ADRTBL2: COMMAND ADDRESS TABLE 1 ; .END