; SAVE#D:MDUP.M65 ; ORIGIN = $1AE4 .OPT NO LIST .OPT NO EJECT .TITLE "MYDOS UTILITIES" ; ; ; LIST I ; ; Copyright 1984 ; Charles Marslett ; Wordmark Systems ; ; Permission is granted by the ; author for any use whatsoever ; of this code, so long as this ; notice remains in the source ; code, and so long as the ; source code of this routine, ; however modified or ; unmodified, is made available ; for a nominal cost. ; ; ;*FMS ENTRY POINTS (These should ; not be changed lightly!) ; ; ; [Data ; ; FILES = $0709 ; ; MAX NUMBER OF ; ; OPEN DISK FILES RAMDKU = $070A ; ; RAM DISK ; ; DRIVE # DFUNIT = $070B ; ; CURRENT ; ; DEFAULT D:# SECDAT = $070E ; ; CURRENT I/O ; ; SECTOR SIZE ; ; 1=128, 2=256 DLINK = $0711 ; ; OFFSET TO THE ; ; LINK FIELD IN ; ; EACH SECTOR ANDCD = $0734 ; ; OFFSET TO THE ; ; MASK EXTRACTING ; ; NEXT SECTOR BITS DKIO2 = $0769 ; ; SECTOR I/O ; ; SUBROUTINE ENTRY ; ; POINT WRCMD = $0779 ; ; ADDRESS OF ; ; WRITE COMMAND ; ; BYTE (50/57) STATE = $07BE ; ; CURRENT STATE ; ; OF DUP/MEM/AUTORUN DKTYPE = $07C4 ; ; DISK SECTOR ; ; SIZE TABLE ; ; (8 BYTES) DRVDEF = $07CC ; ; FLOPPY DRIVE ; ; CONFIGURATION ; ; TABLE (8-BYTES) MAPBUF = $0908 ; ; 512-BYTE BUFFER ; ; DOWN IN ; ; RESIDENT AREA HDTAB = $0B15 ; ; HARD DISK DRIVE ; ; SIZE TABLE ; ; (0 = FLOPPY) WOTDCB = $0B25 ; ; PROTOTYPE DRIVE ; ; MODE SET TABLE MAPAGE = $0BBA ; ; Bank ; ; configuration ; ; table (64-bytes) ; ; in MYDOS ; ; [Code ; ; MDINIT = $07E0 ; ; MYDOS ; ; initialization ; ; code CONFIGR = $0B2F ; ; CONFIGURE ; ; DRIVE SUBROUTINE ; ; ENTRY RDCONF = $0B9A ; ; READ ; ; CONFIGURATION ; ; STATE SUBROUTINE ; ; ENTRY STEPBP = $0C5D ; ; STEP TO THE ; ; NEXT BOOT SECTOR ; ; BUFFER ADDRESS ; ; ;*RAM disk I/O driver patch ; locations ; RDKLMT = $0C3A ; ; Size of ram ; ; disk (# of 16k ; ; banks) RDAD1 = $0C0D RDAD2 = $0C19 RDAD3 = $0C4C ; ; Three locations ; ; where the ; ; control address ; ; is stored ; NMLMAP = $0C14 ; ; Mask (1=part ; ; of mapping ; ; register) ; ;*Starting location for the MDUP ; code ; ; ;*Patches linking MDUP into MDOS ; *= $070C .WORD RESEND ; START OF FREE ; ; MEMORY (end ; ; of resident stuff) ; *= $085E JMP INIT ; DUP ; ; INITIALIZATION ; ; ENTRY POINT ; ; ;*DEFINED VALUES ; CR = $9B EOF = $88 ; OPEN = 3 GETREC = 5 GETCHR = 7 PUTCHR = 11 CLOSE = 12 RENAME = 32 DELETE = 33 LOCK = 35 UNLOCK = 36 FORMAT = 254 ; ;*ROM AND RAM ADDRESSES ; CARTST = $BFFA ; AUDF1 = $D200 AUDCTL = $D208 SKRES = $D20A SERIN = $D20D SEROUT = $D20D IRQEN = $D20E SKCTL = $D20F PBCTL = $D303 ; FASCII = $D8E6 IFP = $D9AA EDITRV = $E400 DSKIO = $E453 CIOV = $E456 SIOV = $E459 SETVBV = $E45C CIOINV = $E46E ; WARMST = $08 DOSVEC = $0A DOSINI = $0C POKMSK = $10 BRKKEY = $11 RAMLO = $1A ; DUNITZ = $21 DCMDZ = $22 DBUFZ = $24 DLENZ = $28 DAUX1Z = $2A DAUX2Z = $2B DAUX3Z = $2C ; LMARGN = $52 RMARGN = $53 ; FR0 = $D4 VECTOR = $D4 HDBUF = $D6 BUFAD = $DA BUFLEN = $DC FNPTR = $DE TEMP = $E0 TEMP2 = $E1 ; INBUFF = $F3 ; VSERIN = $020A VIMIRQ = $0216 CDTMV3 = $021C CDTMF3 = $022A SHFLOK = $02BE RUNAD = $02E0 INITAD = $02E2 MEMTOP = $02E5 MEMLO = $02E7 DVSTAT = $02EA ; SYSTEM STATUS ; ; BUFFER ; DDEVIC = $0300 DUNIT = $0301 DCMD = $0302 DSTAT = $0303 DBUF = $0304 DTIMEO = $0306 DLEN = $0308 DAUX = $030A HATABS = $031A ; IOCB = $0340 ICDNO = $0341 ICMD = $0342 ISTAT = $0343 IBUF = $0344 ILEN = $0348 IAUX = $034A ; *= ORIGIN ; ; START OF MDUP ; .INCLUDE #D:MDUP1.M65 ; ; RESIDENT CODE ; MSBASE = * ; ; START OF ; ; NON-RESIDENT CODE ; .INCLUDE #D:MDUP2.M65 ; ; DATA AREAS AND ; ; THE MAIN MENU ; .INCLUDE #D:MDUP3.M65 ; ; COPY, LIST, ; ; CREATE, AND ; ; DELETE FUNCTIONS ; .INCLUDE #D:MDUP4.M65 ; ; ENTIRE DISK ; ; FUNCS (FORMAT, ; ; COPY, WRT BOOT) ; .INCLUDE #D:MDUP5.M65 ; ; PROGRAM LOAD ; ; AND SAVE ; ; FUNCTIONS ; .INCLUDE #D:MDUP6.M65 ; ; CONFIGURATION ; ; FUNCTIONS ; .INCLUDE #D:MDUP7.M65 ; ; MISC. ; ; SUBROUTINES ; DUPEND = * DUPLEN = DUPEND-DUPBASE MSLEN = DUPEND-MSBASE