TRUE = $00 ; Lots of code assumes this is $00 ; so it can branch with BEQ, so ; don't change it either! FALSE = $01 ;------------------------------- ;Standard Delivery table indexes ;------------------------------- ID_DOS33p = $00 ID_DOS32 = $01 ID_DOS32LO = $02 ID_RDOS13 = $03 ;------------------------------- ;MECC fast-load variants ;------------------------------- ID_MECC1 = $01 ID_MECC2 = $02 ID_MECC3 = $03 ID_MECC4 = $04 ID_MECC_UNK = $FF ; Zero-page addresses we use for variables nibsrcindex = $EC ; byte nibdestindex = $ED ; byte prbuf = $EE ; word unform = $F0 ; word nibcount = $F2 ; byte modtmp = $F3 ; byte modsrc = $F4 ; word moddest = $F6 ; word cmp1 = $F8 ; word cmp2 = $FA ; word counter = $FC ; byte tmp = $FC ; byte iunit = $FC ; byte tmpa = $FC ; byte tmpx = $FD ; byte tmpy = $FE ; byte flag = $FF ; byte ; Application constants (not zero addresses) !ifdef RELBASE { !set VERBOSE = $00 ; override for make script } else { RELBASE = $2000 ; dummy assignment for first build ; to allow calculation of proper value } LOWPOINT = $4000 ; lowest available address for code HIGHPOINT = $B200 ; highest available address+1 for code BASEPAGE = $10 ; Special Delivery tracer assumes ; this is $10, so don't change it! ;------------------------------- ; globally-accessible variables ; in fixed position to allow ; compressed code to work ;------------------------------- APIEND = HIGHPOINT gMode = APIEND-$01 ; byte gPatchCount = gMode-$01 ; byte gTriedUniv = gPatchCount-$01 ; byte gSaidWriting = gTriedUniv-$01 ; byte gChangedPrefs = gSaidWriting-$01 ; byte gLastTrack = gChangedPrefs-$01 ; byte gDiskVolumeNumber = gLastTrack-$01 ; byte ;FIRSTFILTER ; add new gIs* below this line gIsDOS32 = gDiskVolumeNumber-$01 ; byte gIsBoot0 = gIsDOS32-$01 ; byte gIsBoot1 = gIsBoot0-$01 ; byte gIsMaster = gIsBoot1-$01 ; byte gIsRWTS = gIsMaster-$01 ; byte gCapturedDiskVolumeNumber = gIsRWTS-$01 ; byte gIsProDOS = gCapturedDiskVolumeNumber-$01 ; byte gIsDinkeyDOS = gIsProDOS-$01 ; byte gIsPascal = gIsDinkeyDOS-$01 ; byte gIsProtDOS = gIsPascal-$01 ; byte gIsDavidDOS = gIsProtDOS-$01 ; byte gIsEA = gIsDavidDOS-$01 ; byte gPossibleGamco = gIsEA-$01 ; byte gIsOptimum = gPossibleGamco-$01 ; byte gPossibleD5D5F7 = gIsOptimum-$01 ; byte gIs8b3 = gPossibleD5D5F7-$01 ; byte gIsMilliken1 = gIs8b3-$01 ; byte gAdventureInternational = gIsMilliken1-$01 ; byte gIsLaureate = gAdventureInternational-$01 ; byte gIsDatasoft = gIsLaureate-$01 ; byte gIsSierra = gIsDatasoft-$01 ; byte gIsSierra13 = gIsSierra-$01 ; byte gIsF7F6 = gIsSierra13-$01 ; byte gIsTrillium = gIsF7F6-$01 ; byte gPolarwareTamperCheck = gIsTrillium-$01 ; byte gForceDiskVol = gPolarwareTamperCheck-$01 ; byte gIsAdvent = gForceDiskVol-$01 ; byte gIsPanglosDOS = gIsAdvent-$01 ; byte gIsDavidson = gIsPanglosDOS-$01 ; byte gIsRDOS13 = gIsDavidson-$01 ; byte gIsMUSERWTS = gIsRDOS13-$01 ; byte gIsHolle = gIsMUSERWTS-$01 ; byte gIsPhoenix = gIsHolle-$01 ; byte gIsDiversi = gIsPhoenix-$01 ; byte gIsTSR = gIsDiversi-$01 ; byte gPossibleMECCSwapper = gIsTSR-$01 ; byte gPossibleWoodbury = gPossibleMECCSwapper-$01 ; byte ;LASTFILTER ; add new gIs* above this line ;gIsInfocom18 is a special case whose ID is not in the regular inspection path gIsInfocom18 = gPossibleWoodbury-$01 ; byte ;gIs13Sector is a special case whose ID is not in the regular inspection path gIs13Sector = gIsInfocom18-$01 ; byte ;gMECCFastloadType is a special case integer whose default value cannot be #FALSE gMECCFastloadType = gIs13Sector-$01 ; byte gOnAClearDayYouCanReadForever = gMECCFastloadType-$01 ; byte gUsingRAMDisk = gOnAClearDayYouCanReadForever-$01 ; byte gRAMDiskRef = gUsingRAMDisk-$01 ; byte gDisplayBytes = gRAMDiskRef-$0A ; 10 bytes jcompare = gDisplayBytes-$03 ; 3-byte jmodify = jcompare-$03 ; 3-byte jPrintByID = jmodify-$03 ; 3-byte jSearchTrack = jPrintByID-$03 ; 3-byte jCallRWTS = jSearchTrack-$03 ; 3-byte jCopyMemory = jCallRWTS-$03 ; 3-byte jCopyUniversalAnywhere = jCopyMemory-$03 ; 3-byte jConstructStandardDelivery = jCopyUniversalAnywhere-$03 ; 3-byte gNIBTableFF = jConstructStandardDelivery-1 ; 1 byte gNIBTable = gNIBTableFF-$FF ; accessed by +$80 gNIBTableBase = gNIBTableFF-$7F ; 127 bytes !ifdef MODULE { compare = jcompare modify = jmodify PrintByID = jPrintByID SearchTrack = jSearchTrack CallRWTS = jCallRWTS CopyMemory = jCopyMemory CopyUniversalAnywhere = jCopyUniversalAnywhere ConstructStandardDelivery = jConstructStandardDelivery } !ifdef VERBOSE { !if VERBOSE=1 { !warn "gMode=",gMode !warn "gPatchCount=",gPatchCount !warn "gTriedUniv=",gTriedUniv !warn "gSaidWriting=",gSaidWriting !warn "gChangedPrefs=",gChangedPrefs !warn "gLastTrack=",gLastTrack !warn "gIsDOS32=",gIsDOS32 !warn "gIsBoot0=",gIsBoot0 !warn "gIsBoot1=",gIsBoot1 !warn "gIsMaster=",gIsMaster !warn "gIsRWTS=",gIsRWTS !warn "gCapturedDiskVolumeNumber=",gCapturedDiskVolumeNumber !warn "gIsProDOS=",gIsProDOS !warn "gIsDinkeyDOS=",gIsDinkeyDOS !warn "gIsPascal=",gIsPascal !warn "gIsProtDOS=",gIsProtDOS !warn "gIsDavidDOS=",gIsDavidDOS !warn "gIsEA=",gIsEA !warn "gPossibleGamco=",gPossibleGamco !warn "gIsOptimum=",gIsOptimum !warn "gMECCFastloadType=",gMECCFastloadType !warn "gPossibleD5D5F7=",gPossibleD5D5F7 !warn "gIs8b3=",gIs8b3 !warn "gIsMilliken1=",gIsMilliken1 !warn "gAdventureInternational=",gAdventureInternational !warn "gIsLaureate=",gIsLaureate !warn "gIsDatasoft=",gIsDatasoft !warn "gIsSierra=",gIsSierra !warn "gissierra13=",gissierra13 !warn "gIsF7F6=",gIsF7F6 !warn "gIsTrillium=",gIsTrillium !warn "gPolarwareTamperCheck=",gPolarwareTamperCheck !warn "gForceDiskVol=",gIsForceDiskVol !warn "gIsAdvent=",gIsAdvent !warn "gIsPanglosDOS=",gIsPanglosDOS !warn "gIsDavidson=",gIsDavidson !warn "gIsMUSERWTS=",gIsMUSERWTS !warn "gIsHolle=",gIsHolle !warn "gIsPhoenix=",gIsPhoenix !warn "gIsDiversi=",gIsDiversi !warn "gIsTSR=",gIsTSR !warn "gPossibleMECCSwpper",gPossibleMECCSwapper !warn "gPossibleWoodbury",gPossibleWoodbury !warn "gIsRDOS13=",gIsRDOS13 !warn "gIsInfocom18=",gIsInfocom18 !warn "gIs13Sector=",gIs13Sector !warn "gOnAClearDayYouCanReadForever=",gOnAClearDayYouCanReadForever !warn "gUsingRAMDisk=",gUsingRAMDisk !warn "gRAMDiskRef=",gRAMDiskRef !warn "gDisplayBytes=",gDisplayBytes !warn "jcompare=",jcompare !warn "jmodify=",jmodify !warn "jPrintByID=",jPrintByID !warn "jSearchTrack=",jSearchTrack !warn "jCallRWTS=",jCallRWTS !warn "jCopyMemory=",jCopyMemory !warn "jCopyUniversalAnywhere=",jCopyUniversalAnywhere !warn "jConstructStandardDelivery=",jConstructStandardDelivery !warn "gNIBTableFF=",gNIBTableFF !warn "gNIBTable=",gNIBTable !warn "gNIBTableBase=",gNIBTableBase } }