; SAVE#D:MDUP2.M65 ; ; ;================================ ;================================ ; ;*START OF NONRESIDENT PORTION OF ; DUP.SYS ; DATA *= *+80 ; ALLOCATE ; ; BUFFER FOR BIT ; ; MAP, ETC. DELIM *= *+1 PAR2 *= *+20 ; PAR* BUFFERS ; ; EXPANDED TO 80 ; ; BYTES FROM 32 PAR3 *= *+80 ; BY BOB PUFF, ; ; VERSION 4.5 ; ; (PAR2 WAS OK) BOOTBUF *= *+384 ; SPACE FOR 3 ; ; BOOT SECTORS TEMPBUF *= *+128 ; TEMPORARY ; ; BUFFER FOR FILE ; ; OPEN DENSITY INIT ; ;**= DATA+512 ;USE THIS*= ONLY ; IF ABOVE ALLOCS < 512 BYTES ; UNNO *= *+1 PTR *= *+1 PTRSAV *= *+1 IPTR *= *+1 IPSAV *= *+1 CBYTE *= *+1 SECTOR *= *+2 CSRC *= *+1 CDES *= *+1 CPYTYP *= *+1 SWPFLG *= *+1 RCNT *= *+1 SECSIZ *= *+2 FNPT *= *+1 FNPT2 *= *+1 PAR *= *+80 ; REAL PARAMETER ; ; (LAST) DUPBASE = * DOSSYS .BYTE "D1:DOS.SYS",$9B ; ;*CLOSE (BRUTALLY) ALL IOCBS AND ; REOPEN SCREEN ; INITIO JSR CIOINV LDX #0 JSR SOPEN ; OPEN SCREEN AS ; ; IOCB #0 .BYTE $0C .BYTE OPEN .WORD EC STX CDTMV3 ; CLEAR TIMER #3 STX CDTMV3+1 LDY #1 LDA #3 STA CDTMF3 ; SET TIMER NOT ; ; DONE FLAG JSR SETVBV WAITIM LDA CDTMF3 ; DONE? BNE WAITIM ; NO, CONTINUE ; ; LOOPING RTS ; ;*DISK UTILITY PROGRAM ENTRY ; DOSOS CLC CLD LDX #-3 HATLP INX INX INX LDA HATABS,X ; REINSTALL E: ; ; HANDLER TO CMP #'E ; AVOID DELETING ; ; BASIC PROGRAMS BNE HATLP ; STARTED UP BY ; ; AUTORUN.SYS LDA # EDITRV ; REMOVED BY ; ; BOB PUFF IN 4.5 ; ; [Change for scripts] STA HATABS+2,X LDX #$FF STX BRKKEY ; ENABLE BREAK ; ; KEY ; LDA # >MDINIT STA DOSINI+1 LDA # FNAME JSR PRTMSG ; JSR PRINT .BYTE $9B,$9B .BYTE "1-8.Dir of D1:-D8: *" .BYTE ". Dir of D:",$9B .BYTE "A. Disk Directory K" .BYTE ". Save Memory",$9B .BYTE "B. Run Cartridge L" .BYTE ". Load Memory",$9B .BYTE "C. Copy File(s) M" .BYTE ". Run at Address",$9B .BYTE "D. Delete File(s) N" .BYTE ". Load MEM.SAV",$9B .BYTE "E. Rename File(s) O" .BYTE ". Change Config.",$9B .BYTE "F. Lock File(s) P" .BYTE ". Set Density",$9B .BYTE "G. Unlock File(s) Q" .BYTE ". Make Directory",$9B .BYTE "H. Write DOS Files R" .BYTE ". Pick Directory",$9B .BYTE "I. Initialize Disk S" .BYTE ". Set RAMdisk #",$9B .BYTE "J. Duplicate Disk V" VER = *-1 .BYTE ". Set Verify Flag" .BYTE $9B," ",$9B,0 LDY CBSAV BPL MENUSL JSR CIOER1 ; IF LOAD ERROR, ; ; REPORT IT ; ;*SELECT MENU FUNCTION ; MENUSL LDX #$FF TXS INX STX OPT ; OPT=00 IF NO ; ; OPTIONS STX SWPFLG STX CBSAV ; FOR DIR SCANS, ; ; SKIP NO EXTNS. JSR CLOSX ; CLOSE IOCBs 10 ; ; AND 20 LDX #$30 JSR CLOS2 ; AND IOCB 30 LDA #$15 ;* fix David's STA COLMN ;* galloping ; ;* columns -Lee JSR PRINT .BYTE "Select Item (" .BYTE +$80,"RETURN" .BYTE " for menu):",0 LDA #$40 ; FORCE UPPER ; ; CASE STA SHFLOK ORA STATE STA STATE ; SAY DUP.SYS IN ; ; MEMORY JSR CHRGET CMP #$9B BNE CKITEM JMP SHMEN ; CKFDIR CMP #'1 BCC CKFDD JMP FASTDIR CKFDD CMP #'* BNE BADITM JMP FASTDD ; CKITEM CMP #'9+1 BCC CKFDIR CMP #'A+NFUNC BCS BADITM SBC #'A-1 BCS ITEMV BADITM LDA #NFUNC ITEMV ASL A TAY LDA DUPJT,Y STA RAMLO LDA DUPJT+1,Y STA RAMLO+1 JMP PRTMEN ; GO TO MENU ; ; EXIT (WITH ; ; MESSAGE) ; TCOMND = * UCOMND = * NSI .BYTE "No such item!",$9B,0 JMP MENUSL ; DUPJT .WORD DIRLST-1,STCAR-1 .WORD CPYFIL-1,DELFIL-1 .WORD RENFIL-1,LKFIL-1 .WORD ULKFIL-1,WBOOT-1 .WORD FMTDSK-1,DUPDSK-1 .WORD SAVFIL-1,LDFIL-1 .WORD BRUN-1,MEMSAV-1 .WORD CONFGR-1,CHDISK-1 .WORD MKDIR-1,SETDIR-1 .WORD RAMDRV-1,TCOMND-1 .WORD UCOMND-1,VERIFY-1 NFUNC = [*-DUPJT]/2 .WORD NSI-1