{File name: Extensions.dfn Definitions for initialization, escape code configuration, and bank switching Created: July 16, 1986 by JPM Last Revised: November 24, 1986 -- JPM -- remove FPTEnabled (correct value in SingleBank.dfn/DualBank.dfn) August 4, 1986 -- JPM -- add BandBLT linkage addresses July 29, 1986 -- JPM -- add addrLinkage and FPTEnabled; reserve kernel space} Reserve[0F6F, 0FFF]; {Kernel} {Hard-wired addresses in bank 0 -- always needed} Set[addrDISPNIonly, 0DA3], Set[addrESCc, 0BEF], Set[addrRefillInt, 0B1E], Set[addrSaveRegs, 0CB6]; Set[addrLinkage, 0004]; IfEqual[thereAreTwoBanks,0,SkipTo[DoneWithBankStuff],]; {Bank constants} Set[bank0, 0], Set[bank1, 0C]; {Hard-wired addresses in bank 0, for conditional BandBLT code} SetLabel[LSEPReturn, 03A8], Set[addrTrapzReturn, Or[03A8{LSEPReturn}, 1{Type.LSEP}]]; {Hard-wired addresses in bank 1} Set[addrBank1ESCx, 00ED{arbitrary choice; may be a better choice}]; SetLabel[tzbHowBigStack, 03B0{arbitrary choice; may be a better choice}], Set[addrBandBLTIntEntry, Or[03B0{tzbHowBigStack}, 9{hbs.E}]]; Set[addrBandBLTNormalEntry, 03C0{arbitrary choice; may be a better choice}]; {Macros for cross-bank jumps} MacroDef[GOTOBANK1,GOTOABS[addr#1]]; MacroDef[GOTOBANK0,GOTOABS[addr#1]]; DoneWithBankStuff! {Escape code configuration: 0 = implemented in bank 0 (see Misc.mc for specifics) 1 = implemented in bank 1 when present (see Bank1Misc.mc for specifics)} {Set[ESC0nInBank1,0], emulator -- always in bank 0} {Set[ESC1nInBank1,0], emulator -- always in bank 0} {Set[ESC2nInBank1,0], emulator -- always in bank 0} {Set[ESC3nInBank1,0], emulator -- always in bank 0} Set[ESC4nInBank1,thereAreTwoBanks], {floating point} Set[ESC5nInBank1,0]; {floating point -- unused} Set[ESC6nInBank1,0], {Cedar} {Set[ESC7nInBank1,0], emulator -- always in bank 0} {Set[ESC8nInBank1,0], processor-dependent -- always in bank 0} {Set[ESC9nInBank1,0], processor-dependent -- always in bank 0} Set[ESCAnInBank1,thereAreTwoBanks], {image processing} Set[ESCBnInBank1,0], {unassigned} Set[ESCCnInBank1,0], {unassigned} Set[ESCDnInBank1,0], {unassigned} Set[ESCEnInBank1,thereAreTwoBanks], {floating point} Set[ESCFnInBank1,0]; {unassigned}