{File name: Extensions.dfn
Definitions for initialization, escape code configuration, and bank switching
Created: July 16, 1986 by JPM
Last Revised:
1-Apr-88 17:51:27 -- jt -- remove kernel reserve
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}
{***** db
Reserve[0F6F, 0FFF]; {Kernel}
***** db}
{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}