; ; * 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 DB 'Files to list, Destination?',$9B,0 LDA #$9B STA CPYTYP JSR GETFN JSR DEFPAR DODIRL LDA #LOW[PAR] LDY #HIGH[PAR] JSR DBUF10 LDX #$10 STX CSRC ;IOCB10 IS SOURCE JSR OPDIR ;OPEN IOCB10 AS DIRECTORY ; LDA #HIGH[TEMPBUF+1] STA BUFAD+1 LDA #LOW[TEMPBUF+1] STA BUFAD ; LDA #38 STA BUFLEN LDA #0 STA BUFLEN+1 ; LDX #$00 ;CDES=IOCB00 LDA DELIM BMI CPY1FSP LDA DELIM BMI SGFCPY JSR GETFN2 STY IBUF+$20 STA IBUF+1+$20 SGFCPY LDX #$20 LDA #GETCHR BNE DOCALL ; CPY1FSP LDA #GETREC DOCALL STX CDES JSR COPYF JMP MENUSL ;THEN RETURN TO CMD. LINE ; BADRN JSR ERRXIT DB 'Need new file name!',$9B,0 CANTDV JSR ERRXIT DB 'No drive or directories allowed in new name!',$9B,0 ; LKMSG DB 'Lock ',0 ULMSG DB 'Unlock ',0 DELMSG DB 'Delete ',0 ; ; D. DELETE FILE(S) ; DELFIL DB 'Delete what file?',$9B,0 LDY #LOW[DELMSG] LDX #HIGH[DELMSG] LDA #DELETE BNE DOCMD ; ; F. LOCK FILES ; LKFIL DB 'Lock which file?',$9B,0 LDY #LOW[LKMSG] LDX #HIGH[LKMSG] LDA #LOCK BNE DOCMD ;GET FILE NAME THEN LOCK IT ; ; G. UNLOCK FILES ; ULKFIL DB 'Unlock which file?',$9B,0 LDY #LOW[ULMSG] LDX #HIGH[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 DB 'Answer ',$27,'Y',$27 DB ' or ',$27,'N',$27,$9B,0 PLA JSR SETSCN ; RDFN JSR SCNDIR BCS DELX ;IF END OF DIRECTORY LDA SECSIZ LDX SECSIZ+1 JSR PRTMSG LDA #LOW[PAR] LDX #HIGH[PAR] JSR PRTMSG JSR PRINT DB '?',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 DB 'File to rename, 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 DB 'Full directory name?',$9B,0 LDX #8 STX IAUX+$10 LDA #34 ;MAKE DIR. COMMAND JMP SMPLCMD ; ; R. SET DIRECTORY ; SETDIR DB 'Directory to be used as ',$27,'D:',$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 DB 'Invalid directory!',$9B,0 ; ; SINGLE FILE (DEVICE) COPY ; TOERR1 JMP CIOER1 SGCOPY LDX #$10 STX CSRC ;SOURCE IS IOCB10 JSR SOPEN DB 4 ;INPUT DB OPEN ;OPEN FUNCTION DW PAR ;INPUT DEVICE NAM BMI TOERR1 JMP SGFCPY ; ; C. COPY FILES ; DUPFIL = * CPYFIL DB 'File source, destination?',$9B,0 LDA #' ' STA PAR3+2 ;DEFINE CHAR 3 OF DEVICE NAME LDA #$9B STA CPYTYP JSR GETFN ;GET SOURCE FILE NAME ; LDA #HIGH[DUPEND] STA BUFAD+1 LDA #LOW[DUPEND] STA BUFAD ; LDA MEMTOP SEC SBC #LOW[DUPEND] STA BUFLEN LDA MEMTOP+1 SBC #HIGH[DUPEND] STA BUFLEN+1 ; JSR DEFPAR LDA DELIM BMI SFNAME JSR GETFN2 LDA #0 SFNAME STA SWPFLG ASL WARMST LDA FNPTR+1 STA IBUF+1+$20 LDA FNPTR STA IBUF+$20 LDA PAR ;DISK DEVICE? CMP #'D' BNE SGCOPY LDA #LOW[PAR] LDY #HIGH[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 #' ' BNE SAVBLK WCNEXT LDA #HIGH[PAR3] STA IBUF+$30+1 LDA #LOW[PAR3] STA IBUF+$30 ; LDX #0 LDY FNPT2 WCNBLD LDA PAR2,X BEQ TERMX CMP #'?' BNE STWCC LDA DATA+2,X STWCC STA PAR3,Y CMP #' ' BEQ OVWRTC INY OVWRTC INX CPX #8 BCC WCNBLD LDA #'.' STA PAR3,Y INY WCEBLD LDA PAR2,X BEQ TERMX CMP #'?' BNE STWCEC LDA DATA+2,X STWCEC STA PAR3,Y CMP #' ' BEQ OVWRTE INY OVWRTE INX CPX #11 BCC WCEBLD TERMX LDA #'.' CMP PAR3-1,Y BNE NOTOVP DEY NOTOVP LDA #$9B LDX OPT CPX #'Q' BNE NOQUERY LDA #'?' NOQUERY STA PAR3,Y LDA #0 STA PAR3+1,Y ; LDA CPYTYP BNE DOONE LDA #LOW[PAR] LDX #HIGH[PAR] JSR PRTMSG JSR PRINT DB '-->',0 LDA #LOW[PAR3] LDX #HIGH[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 #LOW[PAR] LDY #HIGH[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 #HIGH[PAR3] STA IBUF+$30+1 LDA #LOW[PAR3] STA IBUF+$30 ; LDX #8 ;IOCB $30 set up for writing STX IAUX+$30 LDX #$30 STX CDES LDA #GETCHR JSR COPYF ;COPY FILE ; LDA DOSRNM+1 ;NEED TO RENAME DOS.SYS? BEQ SKPCOP ; ; WRITE THE BOOT SECTORS OUT TO THE DESTINATION AND RENAME BACK TO DOS.SYS ; JSR FIXUPDOS ;FIX BOOT SECTORS, WRITE THEM, AND RENAME FILE LDA #0 ;CLEAR RENAME FLAG STA DOSRNM+1 ; SKPCOP LDA CPYTYP BNE TOEXIT JMP WCOPY TOEXIT JMP MENUSL CPYERR JMP CIOER1