; SAVE#D:MDUP3.M65 ; ; ;** AND 1-8. FAST DIRECTORY LIST ; FASTDD STA PAR+2 LDA #': STA PAR+1 BNE DOFDD ; FASTDIR STA PAR+1 LDA #': STA PAR+2 DOFDD LDA #'* STA PAR+3 STA PAR+4 LDA #'D STA PAR LDA #$9B STA PAR+5 ; fix the 174 ; ; errors in menu ; ; [Bob Puff] STA CPYTYP STA DELIM BNE DODIRL ; ;*A. DIRECTORY LIST ; DIRLST .BYTE "Files to list, " .BYTE "Destination?",$9B,0 LDA #$9B STA CPYTYP JSR GETFN JSR DEFPAR DODIRL LDA # PAR JSR DBUF10 LDX #$10 STX CSRC ; IOCB10 IS ; ; SOURCE JSR OPDIR ; OPEN IOCB10 AS ; ; DIRECTORY ; LDA # >TEMPBUF+1 STA BUFAD+1 LDA # DELMSG LDA #DELETE BNE DOCMD ; ;*F. LOCK FILES ; LKFIL .BYTE "Lock whic" .BYTE "h file?",$9B,0 LDY # LKMSG LDA #LOCK BNE DOCMD ; GET FILE NAME ; ; THEN LOCK IT ; ;*G. UNLOCK FILES ; ULKFIL .BYTE "Unlock wh" .BYTE "ich file?",$9B,0 LDY # ULMSG LDA #UNLOCK ; DOCMD STY SECSIZ STX SECSIZ+1 PHA JSR GETFN JSR CKDSK LDX OPT CPX #'N ; IF '/N' THEN ; ; DO IT THE EASY ; ; WAY BEQ AFTCHK JSR PRINT .BYTE "Answer ",$27,"Y",$27 .BYTE " or ",$27,"N" .BYTE $27,$9B,0 PLA JSR SETSCN ; RDFN JSR SCNDIR BCS DELX ; IF END OF ; ; DIRECTORY LDA SECSIZ LDX SECSIZ+1 JSR PRTMSG LDA # PAR JSR PRTMSG JSR PRINT .BYTE "?",0 JSR CHRGET CMP #'Y BNE NODELT LDX #$20 JSR CIOCL ; DELETE THE ; ; FILE THEN NODELT JMP RDFN ; SMPLCMD PHA JSR GETFN ; GET FILE NAME JSR CKDSK ; VERIFY A DISK ; ; FILE AFTCHK PLA ISSCMD STA ICMD+$10 LDX #$10 JSR CIOCL LDA ICMD+$10 CMP #41 BEQ SETFNJ DELX JMP MENUSL SETFNJ JMP SETFNM JCANTDV JMP CANTDV JBADRN JMP BADRN ; ;*E. RENAME FILE(S) ; RENFIL .BYTE "File to rename," .BYTE " new name?",$9B,0 JSR GETFN JSR CKDSK LDY PTR LDA DELIM CMP #', BEQ CKNAM2 CMP #' BNE JBADRN CKNAM2 INY LDA (FNPTR),Y CMP #': BEQ JCANTDV CMP #'> ; check for ; ; sparta type BEQ JCANTDV CMP #'0 BCC DOREN CMP #'z+1 BCC CKNAM2 DOREN LDA #RENAME BNE ISSCMD ; ;*Q. MAKE A DIRECTORY ; MKDIR .BYTE "Full directory" .BYTE " name?",$9B,0 LDX #8 STX IAUX+$10 LDA #34 ; MAKE DIR ; ; COMMAND JMP SMPLCMD ; ;*R. SET DIRECTORY ; SETDIR .BYTE "Directory to be" .BYTE " used as ",$27,"D:" .BYTE $27,"?",$9B,0 JSR GETFN JSR CKDSK LDY PTR ; DRIVE OR NULL? CPY #4 BCC CPYDNE LDA #41 JMP ISSCMD ; SETFNM LDX #0 LDA PTR EOR #4 BEQ ZAPNAM LDY #1 LDA #': CMP (FNPTR),Y BNE ALLNEW ; IF NOT ; ; SUBDIRECTORY FNDEND INX LDY FNAME-1,X BNE FNDEND ; END OF OLD ; ; DIR? STA FNAME-1,X ; ALLNEW INY BEQ CPYDNE CMP (FNPTR),Y BNE ALLNEW DEX ; POINT BACK AT ; ; ':' BEQ CPY1ST ; IF START, NO ; ; ':' TO PRESERVE ; CPYNAM INX CPY1ST INY LDA (FNPTR),Y ZAPNAM STA FNAME,X BNE CPYNAM JMP MENUSL ; CPYDNE JSR ERRXIT .BYTE "Invalid " .BYTE "directory!",$9B,0 ; ;*SINGLE FILE (DEVICE) COPY ; TOERR1 JMP CIOER1 SGCOPY LDX #$10 STX CSRC ; SOURCE IS ; ; IOCB10 JSR SOPEN .BYTE 4 ; INPUT .BYTE OPEN ; OPEN FUNCTION .WORD PAR ; INPUT DEVICE ; ; NAME BMI TOERR1 JMP SGFCPY ; ;*C. COPY FILES ; DUPFIL = * CPYFIL .BYTE "File source, " .BYTE "destination?",$9B,0 LDA #' STA PAR3+2 ; DEFINE CHAR 3 ; ; OF DEVICE NAME LDA #$9B STA CPYTYP JSR GETFN ; GET SOURCE ; ; FILE NAME ; LDA # >DUPEND STA BUFAD+1 LDA # DUPEND STA BUFLEN+1 ; JSR DEFPAR LDA DELIM BMI SFNAME JSR GETFN2 ;* LDA #0 ; fix /X bug ;*SFNAME STA SWAPFLG ; Lee SFNAME ASL WARMST LDA FNPTR+1 STA IBUF+1+$20 LDA FNPTR STA IBUF+$20 LDA PAR ; DISK DEVICE? CMP #'D BNE SGCOPY LDA # PAR JSR DBUF10 ; LDA #'? LDY #11 QQQ STA PAR2-1,Y DEY BNE QQQ ; JSR CWFSD LDX #$10 JSR OPDIR ; OPEN IOCB10 AS ; ; DIRECTORY ; LDY #$FF CPSCL1 INY LDA (FNPTR),Y STA PAR3,Y BNE CPSCL1 CPSCL2 DEY LDA (FNPTR),Y CMP #'> ; account for ; ; sparta type BEQ CPSCL3 CMP #': BNE CPSCL2 CPSCL3 INY STY FNPT2 LDA (FNPTR),Y BEQ OPINP ; LDX #0 ; SCAN -PAR- ; ; STARTING AT 1-ST ; ; BYTE MVMSK LDA (FNPTR),Y BMI WCOPYB ; 1 FILESPEC ; ; COPY?? CMP #'* BEQ MVNML CMP #'. BCC WCOPYB BNE DOSTOR LDA #' DEY DOSTOR STA PAR2,X INY MVNML INX CPX #8 BCC MVMSK SKPPRD INY MVEXT LDA (FNPTR),Y BEQ WCOPYB CMP #'. BEQ SKPPRD ; IF A PERIOD, ; ; SKIP OVER IT CMP #'* BEQ OPINP CMP #' BEQ WCOPYB CMP #', BEQ WCOPYB CMP #$9B BEQ WCOPYB INY SAVBLK STA PAR2,X INX CPX #11 BCC MVEXT BCS OPINP ; WCOPY JSR CWFSD OPINP JSR SCNDIR BIT CBYTE BMI OPINP BCC WCNEXT JMP MENUSL ; WCOPYB LDA #$20 BNE SAVBLK WCNEXT LDA # >PAR3 STA IBUF+$30+1 LDA # PAR JSR PRTMSG JSR PRINT .BYTE "--> ",0 LDA # PAR3 JSR PRTMSG LDA OPT CMP #'Q BNE DOONE JSR CHRGET CMP #'Y BNE SKPCOP DOONE LDA IAUX+5+$10 STA IAUX+5+$20 LDX #$20 STX CSRC LDA #4 STA IAUX,X LDA # PAR JSR DEFBUF LDA #OPEN JSR SCMD ; OPEN THE ; ; SOURCE FILE BMI CPYERR ; LDX #7 CKFDOS LDA CKDTST-1,X ; File name = ; ; DOS.SYS? CMP PAR3+2,X BNE NOXDOS ; No, handle it ; ; normally then DEX BNE CKFDOS ; ;*COPYING DOS.SYS, SET UP FOR ; RENAME AND LOAD BOOT SECTORS ; LDA PAR3+1 STA DOSRNM+1 ; Stash the ; ; unit number in ; ; the rename buffer STA DOSSYS+1 LDA #$60 ; Change ; ; destination name ; ; to diamond-OS STA PAR3+3 ; CLC ; READ BOOT ; ; SECTORS JSR DOBOOT ; DO BOOT I/O ; ; THIS REALLY COPIES THE FILE... ; NOXDOS LDA # >PAR3 STA IBUF+$30+1 LDA #