; SAVE#D:MDOS.ASM ; ; .OPT NO LIST ; .OPT NO EJECT ; .TITLE "LARGE DISK FMS" ; ; ; ; ; ; 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. ; ; ; LIST C,G,I ; ;*DISK I/O EQUATES ; DKADDR = $31 ; ; SIO NUMBER OF ; ; FIRST DISK DRIVE (D1:) TODK = $80 ; ; STATUS BYTE ; ; FOR DATA WRITE TO THE DISK FROMDK = $40 ; ; STATUS BYTE ; ; FOR DATA READ FROM THE DISK ; READ = 'R ; ; SIO COMMAND ; ; EQUATE FOR READING A DISK WRITE = 'P ; ; SIO COMMAND ; ; EQUATE FOR WRITING A DISK RDSTAT = 'S ; ; SIO COMMAND ; ; EQUATE FOR READING ; ; THE DRIVE STATUS WRITEV = 'W ; ; SIO COMMAND ; ; EQUATE FOR WRITING ; ; WITH VERIFY FMTCMD = '! ; ; SIO COMMAND ; ; TO FORMAT A DISKETTE ; LK128 = 125 ; ; LOCATION OF ; ; 128 BYTE SECTOR LINK LK256 = 253 ; ; LOCATION OF ; ; 256 BYTE SECTOR LINK ; WARMST = $08 DOSVEC = $0A DOSINI = $0C ; *= $20 ICHIDZ *= *+1 ICDNOZ *= *+1 ICCOMZ *= *+1 ICSTAZ *= *+1 ICBALZ *= *+1 ICBAHZ *= *+1 ICPTLZ *= *+2 ICBLLZ *= *+1 ICBLHZ *= *+1 ICAX1Z *= *+1 ICAX2Z *= *+1 *= *+2 CURFCB *= *+1 DATBYT *= *+1 ; *= $31 CHKSUM *= *+1 BUFR *= *+2 ; *= $43 FMSZPG *= *+2 DIRDSP = FMSZPG DIRSEC = FMSZPG+1 CURFNO *= *+1 FMSBPT *= *+2 TMP1 *= *+1 TMP2 *= *+1 ; ;*DEFINITIONS FOR THE ATARI ROM ; EXECUTIVE ; DSKTIM = $0246 RUNADR = $02E0 INIADR = $02E2 MEMTOP = $02E7 DVSTAT = $02EA ; ;*SIO COMMAND BUFFER DEFINITION ; *= $0300 DDEVIC *= *+1 DUNIT *= *+1 DCOMND *= *+1 DSTATS *= *+1 DBUFLO *= *+1 DBUFHI *= *+1 DTIMLO *= *+2 DBYTLO *= *+1 DBYTHI *= *+1 DAUX1 *= *+1 DAUX2 *= *+1 ; ;*I/O SYSTEM DEFINITIONS ; HATABS = $031A ; ; BASE OF THE ; ; DYNAMIC HANDLER TABLE ; ; ;*CIO COMMAND TABLE BASE ; DEFINITIONS (FOR IOCB #00) ; *= $0340 ICHID *= *+1 ICDNO *= *+1 ICCOM *= *+1 ICSTA *= *+1 ICBAL *= *+1 ICBAH *= *+1 ICPTL *= *+1 ICPTH *= *+1 ICBLL *= *+1 ICBLH *= *+1 ICAX1 *= *+1 ICAX2 *= *+1 ICSPR *= *+4 ; ;*CARTRIDGE SUBSYSTEM EQUATES ; CARINIT = $BFFE ; ; LOCATION OF ; ; INITIALIZATION VECTOR CARTEST = $BFFC ; ; LOCATION OF ; ; CART? FLAG CARRUN = $BFFA ; ; LOCATION OF ; ; CART RUN VECTOR ; ;*800XL MAP CONTROL ; MAPREG = $D301 ; ;*OTHER I/O PORT DEFINITIONS ; NMIEN = $D40E ; ;*ROM VECTORS ; DSKINV = $E453 ; ; SINGLE DENSITY ; ; DISK I/O ENTRY POINT SIOV = $E459 ; ; SERIAL I/O OS ; ; ENTRY POINT ; INCLUDE #D:MDOS1.ASM ; ; DATA AND CODE ; ; THAT REMAINS FIXED ; INCLUDE #D:MDOS2.ASM ; ; FILE SYSTEM ; ; FUNCTIONS ; INCLUDE #D:MDOS3.ASM ; ; INTERNAL DISK I/O ROUTINES ; INCLUDE #D:MDOS4.ASM ; ; UTILITY SUBROUTINES ; ; .OPT LIST BOOTND ; ; START DUP HERE! ; .OPT NO LIST