2021-04-08 20:11:00 +00:00
|
|
|
TRUE = $00 ; Lots of code assumes this is zero
|
2017-11-09 05:47:12 +00:00
|
|
|
; so it can branch with BEQ, so
|
2021-04-08 20:11:00 +00:00
|
|
|
; don't change it!
|
2017-11-09 05:47:12 +00:00
|
|
|
FALSE = $01
|
|
|
|
|
|
|
|
;-------------------------------
|
|
|
|
;Standard Delivery table indexes
|
|
|
|
;-------------------------------
|
|
|
|
|
|
|
|
ID_DOS33p = $00
|
|
|
|
ID_DOS32 = $01
|
|
|
|
ID_DOS32LO = $02
|
2018-09-26 17:20:03 +00:00
|
|
|
ID_RDOS13 = $03
|
2017-11-09 05:47:12 +00:00
|
|
|
|
2018-07-03 17:46:03 +00:00
|
|
|
;-------------------------------
|
|
|
|
;MECC fast-load variants
|
|
|
|
;-------------------------------
|
|
|
|
|
|
|
|
ID_MECC1 = $01
|
|
|
|
ID_MECC2 = $02
|
|
|
|
ID_MECC3 = $03
|
|
|
|
ID_MECC4 = $04
|
|
|
|
ID_MECC_UNK = $FF
|
|
|
|
|
2017-11-09 05:47:12 +00:00
|
|
|
; 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
|
|
|
|
}
|
2019-04-17 05:56:58 +00:00
|
|
|
LOWPOINT = $4000 ; lowest available address for code
|
2018-09-26 17:20:03 +00:00
|
|
|
HIGHPOINT = $B200 ; highest available address+1 for code
|
2017-11-09 05:47:12 +00:00
|
|
|
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
|
|
|
|
;-------------------------------
|
|
|
|
|
2018-09-26 17:20:03 +00:00
|
|
|
APIEND = HIGHPOINT
|
2017-11-09 05:47:12 +00:00
|
|
|
gMode = APIEND-$01 ; byte
|
|
|
|
gPatchCount = gMode-$01 ; byte
|
|
|
|
gTriedUniv = gPatchCount-$01 ; byte
|
|
|
|
gSaidWriting = gTriedUniv-$01 ; byte
|
|
|
|
gChangedPrefs = gSaidWriting-$01 ; byte
|
|
|
|
gLastTrack = gChangedPrefs-$01 ; byte
|
2017-12-13 00:21:15 +00:00
|
|
|
gDiskVolumeNumber = gLastTrack-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
;FIRSTFILTER ; add new gIs* below this line
|
2017-12-13 00:21:15 +00:00
|
|
|
gIsDOS32 = gDiskVolumeNumber-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
gIsBoot0 = gIsDOS32-$01 ; byte
|
|
|
|
gIsBoot1 = gIsBoot0-$01 ; byte
|
|
|
|
gIsMaster = gIsBoot1-$01 ; byte
|
|
|
|
gIsRWTS = gIsMaster-$01 ; byte
|
2017-12-13 00:21:15 +00:00
|
|
|
gCapturedDiskVolumeNumber = gIsRWTS-$01 ; byte
|
|
|
|
gIsProDOS = gCapturedDiskVolumeNumber-$01 ; byte
|
2017-12-06 19:12:45 +00:00
|
|
|
gIsDinkeyDOS = gIsProDOS-$01 ; byte
|
|
|
|
gIsPascal = gIsDinkeyDOS-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
gIsProtDOS = gIsPascal-$01 ; byte
|
|
|
|
gIsDavidDOS = gIsProtDOS-$01 ; byte
|
|
|
|
gIsEA = gIsDavidDOS-$01 ; byte
|
|
|
|
gPossibleGamco = gIsEA-$01 ; byte
|
|
|
|
gIsOptimum = gPossibleGamco-$01 ; byte
|
2018-07-03 17:46:03 +00:00
|
|
|
gPossibleD5D5F7 = gIsOptimum-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
gIs8b3 = gPossibleD5D5F7-$01 ; byte
|
|
|
|
gIsMilliken1 = gIs8b3-$01 ; byte
|
|
|
|
gAdventureInternational = gIsMilliken1-$01 ; byte
|
|
|
|
gIsLaureate = gAdventureInternational-$01 ; byte
|
|
|
|
gIsDatasoft = gIsLaureate-$01 ; byte
|
2017-12-26 16:40:08 +00:00
|
|
|
gIsSierra = gIsDatasoft-$01 ; byte
|
|
|
|
gIsSierra13 = gIsSierra-$01 ; byte
|
|
|
|
gIsF7F6 = gIsSierra13-$01 ; byte
|
2018-01-04 20:02:27 +00:00
|
|
|
gIsTrillium = gIsF7F6-$01 ; byte
|
2018-01-28 18:11:15 +00:00
|
|
|
gPolarwareTamperCheck = gIsTrillium-$01 ; byte
|
|
|
|
gForceDiskVol = gPolarwareTamperCheck-$01 ; byte
|
2018-05-26 17:54:48 +00:00
|
|
|
gIsAdvent = gForceDiskVol-$01 ; byte
|
2018-06-07 15:18:06 +00:00
|
|
|
gIsPanglosDOS = gIsAdvent-$01 ; byte
|
2018-06-16 15:38:26 +00:00
|
|
|
gIsDavidson = gIsPanglosDOS-$01 ; byte
|
2018-09-26 17:20:03 +00:00
|
|
|
gIsRDOS13 = gIsDavidson-$01 ; byte
|
2019-02-04 22:20:29 +00:00
|
|
|
gIsMUSERWTS = gIsRDOS13-$01 ; byte
|
2019-02-10 04:51:41 +00:00
|
|
|
gIsHolle = gIsMUSERWTS-$01 ; byte
|
2019-04-08 00:02:19 +00:00
|
|
|
gIsPhoenix = gIsHolle-$01 ; byte
|
2019-10-11 20:50:31 +00:00
|
|
|
gIsDiversi = gIsPhoenix-$01 ; byte
|
2020-07-22 23:01:07 +00:00
|
|
|
gIsTSR = gIsDiversi-$01 ; byte
|
2021-02-23 05:42:48 +00:00
|
|
|
gPossibleMECCSwapper = gIsTSR-$01 ; byte
|
2021-03-02 23:23:13 +00:00
|
|
|
gPossibleWoodbury = gPossibleMECCSwapper-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
;LASTFILTER ; add new gIs* above this line
|
2018-12-28 19:46:36 +00:00
|
|
|
;gIsInfocom18 is a special case whose ID is not in the regular inspection path
|
2021-03-02 23:23:13 +00:00
|
|
|
gIsInfocom18 = gPossibleWoodbury-$01 ; byte
|
2018-12-29 06:20:48 +00:00
|
|
|
;gIs13Sector is a special case whose ID is not in the regular inspection path
|
|
|
|
gIs13Sector = gIsInfocom18-$01 ; byte
|
2018-07-03 17:46:03 +00:00
|
|
|
;gMECCFastloadType is a special case integer whose default value cannot be #FALSE
|
2018-12-29 06:20:48 +00:00
|
|
|
gMECCFastloadType = gIs13Sector-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
|
2018-07-03 17:46:03 +00:00
|
|
|
gOnAClearDayYouCanReadForever = gMECCFastloadType-$01 ; byte
|
2017-11-09 05:47:12 +00:00
|
|
|
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
|
2017-12-13 00:21:15 +00:00
|
|
|
!warn "gCapturedDiskVolumeNumber=",gCapturedDiskVolumeNumber
|
2017-11-09 05:47:12 +00:00
|
|
|
!warn "gIsProDOS=",gIsProDOS
|
2017-12-06 19:12:45 +00:00
|
|
|
!warn "gIsDinkeyDOS=",gIsDinkeyDOS
|
2017-11-09 05:47:12 +00:00
|
|
|
!warn "gIsPascal=",gIsPascal
|
|
|
|
!warn "gIsProtDOS=",gIsProtDOS
|
|
|
|
!warn "gIsDavidDOS=",gIsDavidDOS
|
|
|
|
!warn "gIsEA=",gIsEA
|
|
|
|
!warn "gPossibleGamco=",gPossibleGamco
|
|
|
|
!warn "gIsOptimum=",gIsOptimum
|
2018-07-03 17:46:03 +00:00
|
|
|
!warn "gMECCFastloadType=",gMECCFastloadType
|
2017-11-09 05:47:12 +00:00
|
|
|
!warn "gPossibleD5D5F7=",gPossibleD5D5F7
|
|
|
|
!warn "gIs8b3=",gIs8b3
|
|
|
|
!warn "gIsMilliken1=",gIsMilliken1
|
|
|
|
!warn "gAdventureInternational=",gAdventureInternational
|
|
|
|
!warn "gIsLaureate=",gIsLaureate
|
|
|
|
!warn "gIsDatasoft=",gIsDatasoft
|
2018-01-04 20:02:27 +00:00
|
|
|
!warn "gIsSierra=",gIsSierra
|
2018-06-16 15:38:26 +00:00
|
|
|
!warn "gissierra13=",gissierra13
|
2018-01-04 20:02:27 +00:00
|
|
|
!warn "gIsF7F6=",gIsF7F6
|
|
|
|
!warn "gIsTrillium=",gIsTrillium
|
2018-01-28 18:11:15 +00:00
|
|
|
!warn "gPolarwareTamperCheck=",gPolarwareTamperCheck
|
2018-01-04 20:02:27 +00:00
|
|
|
!warn "gForceDiskVol=",gIsForceDiskVol
|
2018-05-26 17:54:48 +00:00
|
|
|
!warn "gIsAdvent=",gIsAdvent
|
2018-06-07 15:18:06 +00:00
|
|
|
!warn "gIsPanglosDOS=",gIsPanglosDOS
|
2018-06-16 15:38:26 +00:00
|
|
|
!warn "gIsDavidson=",gIsDavidson
|
2019-02-04 22:20:29 +00:00
|
|
|
!warn "gIsMUSERWTS=",gIsMUSERWTS
|
2019-02-10 04:51:41 +00:00
|
|
|
!warn "gIsHolle=",gIsHolle
|
2019-04-08 00:02:19 +00:00
|
|
|
!warn "gIsPhoenix=",gIsPhoenix
|
2019-10-11 20:50:31 +00:00
|
|
|
!warn "gIsDiversi=",gIsDiversi
|
2020-07-22 23:01:07 +00:00
|
|
|
!warn "gIsTSR=",gIsTSR
|
2021-02-23 05:42:48 +00:00
|
|
|
!warn "gPossibleMECCSwpper",gPossibleMECCSwapper
|
2021-03-02 23:23:13 +00:00
|
|
|
!warn "gPossibleWoodbury",gPossibleWoodbury
|
2018-09-26 17:20:03 +00:00
|
|
|
!warn "gIsRDOS13=",gIsRDOS13
|
2018-12-28 19:46:36 +00:00
|
|
|
!warn "gIsInfocom18=",gIsInfocom18
|
2018-12-29 06:20:48 +00:00
|
|
|
!warn "gIs13Sector=",gIs13Sector
|
2018-06-07 15:18:06 +00:00
|
|
|
!warn "gOnAClearDayYouCanReadForever=",gOnAClearDayYouCanReadForever
|
2017-11-09 05:47:12 +00:00
|
|
|
!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
|
|
|
|
}
|
|
|
|
}
|