
                     * PAG
                     **********************************************************
                     *  SAVE - SAVED UTILITY                                  *
                     **********************************************************
                     * OPT PAG
                     *
                     * 'SAVE' UTILITY COPYRIGHT (C), 1979 BY
                     *
                     *   TECHNICAL SYSTEMS CONSULTANTS, INC.
                     *   BOX 2570
                     *   WEST LAFAYETTE, INDIANA  47906
                     *   USA
                     
                     * BY FLD ON 27-11-2011 FOR VEGAS
                     * DISASSEMBLY BY DYNAMITE OF 1.SAVE.CMD
                     
                     * STANDARD PRE-NAMED LABEL EQUATES
                     
               C840  SYSFCB  EQU    $C840
               CD03  WARMS   EQU    $CD03
               CD15  GETCHR  EQU    $CD15
               CD1E  PSTRNG  EQU    $CD1E
               CD2D  GETFIL  EQU    $CD2D
               CD33  SETEXT  EQU    $CD33
               CD3F  RPTERR  EQU    $CD3F
               CD42  GETHEX  EQU    $CD42
               D403  FMSCLS  EQU    $D403
               D406  FMS     EQU    $D406
                     
                     * ASCII CODE EQUATES
                     
               0004  EOT     EQU    $04
                     
                     
  C100                       ORG    $C100
                     
  C100 20   14       CMDADR  BRA    SAVE1
  C102 01                    FCB    $01
  C103 00            MEM1    FCB    $00
  C104 00            MEM2    FCB    $00       COUNTER FOR WRITING BYTES
  C105 00            MEM3    FCB    $00       HI PART OF MEMORY ADDRESS START
  C106 00            MEM4    FCB    $00       LO PART OF MEMORY ADDRESS START
  C107 00            MEM5    FCB    $00       HI PART OF MEMORY ADDRESS END
  C108 00            MEM6    FCB    $00       LO PART OF MEMORY ADDRESS END
  C109 00 00         MEM7    FCB    $00,$00
  C10B 00 00         MEM8    FCB    $00,$00
  C10D 8E   C230     SAVE19  LDX    #TXTADI   LOAD TEXT ADDRESS FORBIDEN
  C110 BD   CD1E             JSR    PSTRNG    PRINT IT
  C113 7E   CD03             JMP    WARMS     EXIT
  C116 7F   C103     SAVE1   CLR    MEM1      CLEAR MEM1
  C119 8E   C840             LDX    #SYSFCB   LOAD FCB ADDRESS
  C11C BD   CD2D             JSR    GETFIL    GET FILE SPECIFICATION
  C11F 24   07               BCC    SAVE2     JUMP IF NO ERROR
  C121 C6   15               LDB    #$15      LOAD ERROR CODE $15 ILLEGAL FILE SPEC
  C123 E7   01               STB    1,X       STORE IT
  C125 7E   C1E0             JMP    SAVE12    JUMP ON ERROR PROCESSING
  C128 8E   C840     SAVE2   LDX    #SYSFCB   LOAD FCB ADDRESS
  C12B 86   00               LDA    #0        CODE FOR .BIN EXTENTION
  C12D BD   CD33             JSR    SETEXT    SET BI EXTENSION
  C130 BD   C1E9             JSR    SAVE14    GET THE START ADDRESS FROM LINE BUFFER
  C133 23   D8               BLS    SAVE19    JUMP IF ERROR
  C135 BF   C105             STX    MEM3      STORE IN MEM3 & MEM4
  C138 BD   C1E9             JSR    SAVE14    GET THE END ADDRESS FROM LINE BUFFER
  C13B 23   D0               BLS    SAVE19    JUMP IF ERROR
  C13D BF   C107             STX    MEM5      STORE IN MEM5 & MEM6
  C140 BD   C1E9             JSR    SAVE14    GET THE TRANSFER ADDRESS FROM LINE BUFFER
  C143 25   C8               BCS    SAVE19    JUMP IF ERROR
  C145 27   03               BEQ    SAVE3     JUMP IF ADDRESS PROVIDED
  C147 7C   C103             INC    MEM1      INCREMENT MEM1
  C14A BF   C109     SAVE3   STX    MEM7      STORE IN MEM7
  C14D B6   C107             LDA    MEM5      LOAD END ADDRESS
  C150 F6   C108             LDB    MEM6
  C153 B1   C105             CMPA   MEM3      COMPARE WITH START ADDRESS 
  C156 22   19               BHI    SAVE5     JUMP OF HIGHTER
  C158 25   05               BCS    SAVE4     EXCHANGE THE ADDRESS IF NECESSARY
  C15A F1   C106             CMPB   MEM4
  C15D 24   12               BCC    SAVE5     PROCESS IF OK
                     * EXCHANGE THE START AND END ADDRESS
  C15F BE   C107     SAVE4   LDX    MEM5
  C162 BF   C10B             STX    MEM8
  C165 BE   C105             LDX    MEM3
  C168 BF   C107             STX    MEM5
  C16B BE   C10B             LDX    MEM8
  C16E BF   C105             STX    MEM3
                     * OPEN FILE FOR SAVING
  C171 8E   C840     SAVE5   LDX    #SYSFCB   LOAD FCB ADDRESS
  C174 86   02               LDA    #2        CODE FOR OPEN FOR WRITE
  C176 A7   84               STA    0,X       SET THE CODE
  C178 BD   D406             JSR    FMS       CALL FMS
  C17B 26   5D               BNE    SAVE11    JUMP ON ERROR
  C17D 86   FF               LDA    #$FF      LOAD NO SPACE COMPRESSION FLAG
  C17F A7   88 3B            STA    59,X      STORE THE FLAG
  C182 B6   C108     SAVE6   LDA    MEM6      COMPUTE THE LENTH OF THE DATA 
  C185 B0   C106             SUBA   MEM4      GET LO PART IN A
  C188 F6   C107             LDB    MEM5
  C18B F2   C105             SBCB   MEM3      GET HI PART IN B
  C18E 26   04               BNE    SAVE7     JUMP IF HI PART NOT NUL
  C190 81   FF               CMPA   #$FF      COMP LO PART WITH $FF
  C192 25   02               BCS    SAVE8     IF LESS TAKE THE NUMBER
  C194 86   FE       SAVE7   LDA    #$FE      iF MORE TAKE $FE
  C196 4C            SAVE8   INCA             INCREMENT A
  C197 B7   C104             STA    MEM2      STORE THE NUMBER TO SAVE IN MEM2
  C19A 86   02               LDA    #2        CODE FOR TRANSFER ADDRESS
  C19C 8D   59               BSR    SAVE16    CALL FMS CO WRITE CODE
  C19E 8E   C105             LDX    #MEM3     LOAD START ADDRESS
  C1A1 8D   4F               BSR    SAVE15    WRITE HI PART
  C1A3 8D   4D               BSR    SAVE15    WRITE LO PART
  C1A5 B6   C104             LDA    MEM2      LOAD THE NUMBER OF BYTES TO TRANSFER
  C1A8 8D   4D               BSR    SAVE16    WRITE IT
  C1AA BE   C105             LDX    MEM3      LOAD THE VALUES
  C1AD 8D   43       SAVE9   BSR    SAVE15    WRITE THE VALUES
  C1AF 7A   C104             DEC    MEM2      DECREMENT COUNTER
  C1B2 26   F9               BNE    SAVE9     LOOP IF NOT DONE
  C1B4 BF   C105             STX    MEM3      LOAD X WITH THE NEW START ADDRESS
  C1B7 30   1F               LEAX   -1,X      SUBSTRACT 1
  C1B9 BC   C107             CMPX   MEM5      CHECK IF THE END ADDRESS IS REACHED
  C1BC 26   C4               BNE    SAVE6     LOOP IF NOT
  C1BE 7D   C103             TST    MEM1      IS IT FINISHED
  C1C1 27   0B               BEQ    SAVE10    SKIP IF YES
  C1C3 86   16               LDA    #$16      CODE FOR TRANSFER ADDRESS INDICATOR
  C1C5 8D   30               BSR    SAVE16    WRITE IT
  C1C7 8E   C109             LDX    #MEM7     LOAD TRANSFER ADDRESS
  C1CA 8D   26               BSR    SAVE15    SAVE HI PART
  C1CC 8D   24               BSR    SAVE15    SAVE LO PART
                     * CLOSE FILE
  C1CE 86   04       SAVE10  LDA    #4        CODE FOR FMS CLOSE
  C1D0 8E   C840             LDX    #SYSFCB   LOAD FCB ADDRESS
  C1D3 A7   84               STA    0,X       SET THE CODE
  C1D5 BD   D406             JSR    FMS       CALL FMS
  C1D8 27   0C               BEQ    SAVE13    JUMP TO EXIT IF OK
                     * ERROR WHILE OPPENING/CLOSING THE FILE
  C1DA A6   01       SAVE11  LDA    1,X
  C1DC 81   03               CMPA   #3
  C1DE 27   23               BEQ    SAVE17
  C1E0 BD   CD3F     SAVE12  JSR    RPTERR
  C1E3 BD   D403             JSR    FMSCLS
  C1E6 7E   CD03     SAVE13  JMP    WARMS
                     * GET THE ADDRESS FROM LINE BUFFER
  C1E9 8E   C840     SAVE14  LDX    #SYSFCB   LOAD FCB ADDRESS
  C1EC BD   CD42             JSR    GETHEX
  C1EF C5   FF               BITB   #$FF
  C1F1 39                    RTS
  C1F2 A6   80       SAVE15  LDA    0,X+
  C1F4 BF   C10B             STX    MEM8
                     * CALL FMS SUBROUTINE
  C1F7 8E   C840     SAVE16  LDX    #SYSFCB
  C1FA BD   D406             JSR    FMS
  C1FD 26   DB               BNE    SAVE11
  C1FF BE   C10B             LDX    MEM8
  C202 39                    RTS
                     * FILE ALREADY EXISTING
  C203 8E   C251     SAVE17  LDX    #TXTDET   TEXT FOR DESTROY EXISTING FILE
  C206 8D   1D               BSR    SAVE18    PRINT IT AND GET ANSWER
  C208 26   DC               BNE    SAVE13    JUMP TO EXIT IF NOT YES
  C20A 8E   C27C             LDX    #TXTSUR   TEXT ARE YOU SURE
  C20D 8D   16               BSR    SAVE18    PRINT IT AND GET ANSWER
  C20F 26   D5               BNE    SAVE13    JUMP TO EXIT IF NOT YES
  C211 8E   C840             LDX    #SYSFCB   LOAD FCB ADDRESS
  C214 86   0C               LDA    #$0C      CODE TO DELETE FILE
  C216 A7   84               STA    0,X       SET THE CODE
  C218 BD   D406             JSR    FMS       CALL FMS
  C21B 26   C3               BNE    SAVE12    JUMP ON ERROR
  C21D A6   88 24            LDA    36,X      COPY THE ERASED CHARACTER
  C220 A7   04               STA    4,X       PASTE ON THE FILE NAME
  C222 7E   C171             JMP    SAVE5     RETRY
                     * PRINT TEXT AND GET ANSWER
  C225 BD   CD1E     SAVE18  JSR    PSTRNG
  C228 BD   CD15             JSR    GETCHR
  C22B 84   5F               ANDA   #$5F
  C22D 81   4F               CMPA   #$4F
  C22F 39                    RTS
  C230 4C 27 41 44   TXTADI  FCC    "L'ADRESSE INDIQUEE EST I"
  C234 52 45 53 53   
  C238 45 20 49 4E   
  C23C 44 49 51 55   
  C240 45 45 20 45   
  C244 53 54 20 49   
  C248 4E 54 45 52           FCC    "NTERDITE",EOT
  C24C 44 49 54 45   
  C250 04            
  C251 4C 45 20 46   TXTDET  FCC    "LE FICHIER EXISTANT PEUT"
  C255 49 43 48 49   
  C259 45 52 20 45   
  C25D 58 49 53 54   
  C261 41 4E 54 20   
  C265 50 45 55 54   
  C269 2D 49 4C 20           FCC    "-IL ETRE DETRUIT? ",EOT
  C26D 45 54 52 45   
  C271 20 44 45 54   
  C275 52 55 49 54   
  C279 3F 20 04      
  C27C 45 54 45 53   TXTSUR  FCC    "ETES VOUS SUR ? "
  C280 20 56 4F 55   
  C284 53 20 53 55   
  C288 52 20 3F 20   
  C28C 04                    FCB    $04
                     
                             END    CMDADR

0 ERROR(S) DETECTED

SYMBOL TABLE:

CMDADR C100   EOT    0004   FMS    D406   FMSCLS D403   GETCHR CD15   
GETFIL CD2D   GETHEX CD42   MEM1   C103   MEM2   C104   MEM3   C105   
MEM4   C106   MEM5   C107   MEM6   C108   MEM7   C109   MEM8   C10B   
PSTRNG CD1E   RPTERR CD3F   SAVE1  C116   SAVE10 C1CE   SAVE11 C1DA   
SAVE12 C1E0   SAVE13 C1E6   SAVE14 C1E9   SAVE15 C1F2   SAVE16 C1F7   
SAVE17 C203   SAVE18 C225   SAVE19 C10D   SAVE2  C128   SAVE3  C14A   
SAVE4  C15F   SAVE5  C171   SAVE6  C182   SAVE7  C194   SAVE8  C196   
SAVE9  C1AD   SETEXT CD33   SYSFCB C840   TXTADI C230   TXTDET C251   
TXTSUR C27C   WARMS  CD03   




