***************************************                                    **          Transgalactic             **            Instruments             **                                    *******************************************          MCAD09**     EDITING COMMANDS VOL.2**       OPT    REL*       XREF   GETCW       XREF   REGEN1,NOPLIN       XREF   CDMODE,VL1DFT       XREF   GTNUMB,DECHEX,HEXDEC,DVI,DVR,DVU,DVUR,PRINTD       XREF   GCMD,GETTA,BADCMD,PRERR,SCROLL,UPDSCR       XREF   REWIND,SPLIT,GETDEF       XREF   PUTCSR,PUTCXU,INWCRD,IWNSTR,SCOORD       XREF   INLINE,WINDOW,COORDS,SHOCDS       XREF   SPLITL,INXPNT,INXP1,INNAME       XREF   MPIXD,MPIXDR,MPXDS,MPXDSR       XREF   UNMARK,LVCOMM*       XREF   BLCONT,ERASRT,CNTMOV,CNTCOP,CNTARR,CCHANG       XREF   PSCT:SRCHOB,WSRCH**  OFFSETS TO LOCAL DATA ON STACK.NTBE  SET    0        NAME TABLE END ADDRESS.BSX   SET    2        INSERTION POINT X.BSY   SET    4        INSERTION POINT Y.DFTOP SET    6        DEFTOP BEFORE ATTEMPT TO MERGE.NMLEN SET    8        INPUT NAME LENGTH.NPTR  SET    9        INPUT NAME BASE ADDRESS**       PSCT       XDEF   SELECT,ERASE,BLOCK,CLOADV       XDEF   MOVE,COPY,ARRAY,CHANGE***IPMSG  EQU    *       FCC    "Base point"       FCB    EOT*REDEF  EQU    *       LDB    #E$DUPL       SKIP2BCOVFL EQU    *       LDB    #E$OVFL  OVERFLOW MESSAGE       LEAS   .NPTR+2,S       LBRA   PRERR**  BLOCK COMMAND - CONCATENATE OBJECTS BEING SELECTED* IN A BLOCK,THAT COULD BE REFERENCED WITH DIFFERENT SCALE * FACTORS AND INSERTION ANGLE.*BLOCK  EQU    *       LEAS   -(.NPTR+2),S   WORK ROOM       LBSR   INNAMENEWBL  EQU    *       BCS    EXBLCK     IF BAD NAME OR CANCEL       STX    .NPTR,S    SAVE NAME POINTER       STB    .NMLEN,S   AND LENGTH       LBSR   GETDEF     CHECK IF EXISTING       BCC    REDEF      IF TO BE RE-DEFINED       LDB    .NMLEN,S   NEW NAME'S LENGTH* Y POINTS TO NAME TABLE END ADDRESS       LEAX   4,Y      ADD THE NON-NAME LENGTH       ABX             AND THE NAME NOW       CMPX   #DFBEG   OVERFLOWING?       BHI    BCOVFL   BRANCH YES*       STY    .NTBE,S  SAVE TABLE END POINTER*       LEAX   <IPMSG,PCR          LBSR   SCOORD    ENTER INSERTION POINT       BCS    EXBLCK   IF CANCEL OR BAD COORDS       STX    .BSX,S   SAVE COORDS ON STACK       STU    .BSY,S       BSR    SELECT   SELECT OBJECTS TO INCLUDE IN THAT BLOCK       LEAX   BLCONT,PCR  CONTINUE IN OVERLAY 4       BHI    BLCNT1      IF NO CANCEL AND NON-ZERO COUNTEXBLCK LEAS   .NPTR+2,S   REMOVE WORK ROOM       RTS****  ERASE OBJECTS FROM THE FILE*ERASE  EQU    *       BSR    SELECT   SELECT THE OBJECTS       BHI    *+3      IF NEITHER CANCEL NOR 0 COUNT       RTS             ELSE RETURN*       LEAX   ERASRT,PCR  POINT TO OTHER OVERLAY ENTRY POINTBLCNT1 LDB   #3          OVERLAY NUMBER;OVERLAY #4** FALL INTO LOAD THE OTHER OVERLAY*       SPC    4**  ENTER HERE TO CONTINUE IN ANOTHER OVERLAY.**  INPUT: X - ADDRESS TO CONITNUE FROM*         B - (OVERLAY NUMBER -1) TO CONTINUE INTO*CLOADV EQU    *       STX    SLEVL0   PREPARE CONTINUE ADDRESS       LDY    #SLEVL0  POINT TO IT       LBRA   LVCOMM   CONTINUE IN THE NEXT OVERLAY***SELMSG EQU    *       FCC    "Select or W"       FCB    EOT** SELECT OBJECTS*SELECT EQU    *       CLR    -S       CLR    -S            RESET TOTAL COUNTER       BSR    PSHMOD        SAVE CURRENT DRAWING MODESLOOP  EQU    *       LEAX   <SELMSG,PCR   POINT TO SELECT MESSAGE       CLR    BADCFL        ENABLE EXIT WITH NO ERROR MESSAGE       LBSR   INWCRD        GO INPUT THE COORDS/STRING       BCC    *+6          IF NORMAL DATA GOT       BNE    TRMSL1       IF TERMINATOR       BRA    TRMSL2       IF CANCEL       TSTB                JUST AN OBJECT?       BEQ    SLOBJ1       YES,GO SELECT IT       LEAY   <SELJTB,PCR  POINT TO JUMP TABLE       LBSR   GCMD         GO EXECUTE THE PROPER COMMAND       BCS    SLOOP        IF BAD WINDOW* COUNT OF FOUND OBJECTS IS RETURNED IN D       BSR    PCOUNT      PRINT THE COUNT FOUND       BRA    SLOOP        GO SELECT FURTHERBADSL2 EQU    *       LDB    #E$BADC     BAD COMMAND MESSAGE       LBSR   PRERR       COMA       RTS** SAVE CURRENT DRAWING MODE ON STACK;SETUP COMPLEMENT MODE*PSHMOD EQU    *       PULS   D        RETURN ADDRESS       LDX    DRMODE   GET CURRENT DRAWING MODE       PSHS   D,X      SAVE ON STACK       LDB    #1              STB    DCOLOR       LBSR   CDMODE   SETUP COMPLEMENT MODE       RTS**SLOBJ1 EQU    *       BSR    SELOBJ   SELECT A SINGLE OBJECT       BSR    PCOUNT   PRINT THE COUNT GOT       BRA    SLOOP    GO SELECT MOREPCOUNT EQU    *       LDX    4,S      GET TOTAL COUNT       LEAX   D,X      ADD THE NEW ARRIVALS       STX    4,S      UPDATE TOTAL COUNT       LBSR   PRINTD       PRINT THE COUNT GOT       LEAX   <FDMSG,PCR       SCALL  .DSPLY       LBRA   SHOCDS   PROVIDE MESSAGE SHOWN & RETURNFDMSG  FCC    " found."       FCB    CR*SELJTB EQU    *       JTB    1,W,SWDW   SELECT A WINDOW       JTB    BADSL2     BAD MENU LETTER*SELOBJ EQU    *       LEAS   -8,S     ROOM TO MAKE A WINDOW       CLRA       CLRB       SUBD   STEP     NEGATIVE STEP       ASRA       RORB            STEP/2       LEAY   0,U      Y COORD IN Y       LEAU   D,X      GET WINDOW LX       STU    0,S      UPDATE       LEAU   D,Y      GET WINDOW LY       STU    2,S      UPDATE       LDD    STEP       LSRA       RORB       LEAU   D,X      GET SWDRX       STU    4,S      UPDATE       LEAU   D,Y       STU    6,S      SAME WITH SWDUY*       LBSR   SRCHOB   RETURNS COUNT IN DRETS3  EQU    *       ANDCC  #$FE       RTS*TRMSL2 EQU    *       LBSR   UNMARK   UNMARK THE OBJECTS FIXED;REDRAW THEM       PULS   D        PREVIOUS DRAWING MODE & COLOR       STB    DCOLOR       TFR    A,B       LBSR   CDMODEBADRT1 COM    S++      SET CARRY       RTS             *RETURN**TRMSL1 EQU    *       PULS   D        RECALL PREVIOUS DRAWING MODE & COLOR       STB   DCOLOR    RESTORE COLOR       TFR    A,B       LBSR   CDMODE   RESTORE MODE       CLRA            RESET CARRY       LDD    S++      TOTAL COUNT       RTS**  SEARCH INSIDE A WINDOW*SWDW   EQU    *       LBSR   WINDOW   INPUT THE WINDOWABMOV  BCC    *+3       RTS       LBSR   WSRCH    SEARCH INSIDE THE WINDOW       BRA    RETS3    TERMINATE** CHANGE*CHANGE EQU    *       LBSR   SELECT       BLS    ABARR       LEAX   CCHANG,PCR       LDB    #4       BRA    CLODV1** MOVE OBJECTS*MOVE   EQU    *       LBSR   INLINE   INPUT DISPLACEMENT       BCS    ABMOV    IF CANCELED OR 0       LBSR   SELECT       BLS    ABMOV1       LEAX   CNTMOV,PCR  POINT TO DESTINATION IN NEXT OVERLAY*CLDV5  LDB    #4       OVERLAY 5CLODV1 LBRA   CLOADV*ABMOV1 LEAS   8,S      DISCARD DISTANCE ON STACKABARR  RTS** COPY OBJECTS*COPY   EQU    *       LBSR   INLINE   GET THE DISTANCE       BCS    ABMOV    IF CANCEL       LBSR   SELECT   WHAT TO COPY       BLS    ABMOV1   ON CANCEL OR NOTHING       LEAX   CNTCOP,PCR       BRA    CLDV5** REPEAT OBJECTS IN AN ARRAY*ARRAY  EQU    *       LBSR   SELECT   INPUT THE OBJECTS       BLS    ABARR       LEAX   CNTARR,PCR       BRA    CLDV5    CONTINUE IN OVERLAY 5*       END*