<> <> <> <> DIRECTORY LoadState USING [ Handle ], PrincOps USING [ op, BytePC ], Rope USING [ ROPE ]; WorldVM: DEFINITIONS = BEGIN OPEN Rope; <> <> World: TYPE = REF WorldObject; WorldObject: TYPE; GetWorld: PROC[where: ROPE] RETURNS[ World ]; <> <> <> <> <> <> OtherWorld: PROC RETURNS[ World ]; <> LocalWorld: PROC RETURNS[ World ]; <> NoWorld: PROC RETURNS[ World ]; <> InvalidateWorld: PROC[ World ]; <> BadWorld: ERROR; <> <> <> LookupFailed: ERROR; <> Incarnation: TYPE = LONG CARDINAL; CurrentIncarnation: PROC[world: World] RETURNS[ Incarnation ]; <> WorldName: PROC[ World ] RETURNS[ ROPE ]; <> <> <<>> <> Address: TYPE = LONG CARDINAL; <> ShortAddress: TYPE = CARDINAL; <> Long: PROC[world: World, addr: ShortAddress] RETURNS[Address]; <> AddressFault: ERROR[addr: Address]; <> Read: PROC[world: World, addr: Address] RETURNS[ CARDINAL ]; <> Write: PROC[world: World, addr: Address, value: CARDINAL]; <> LongRead: PROC[world: World, addr: Address] RETURNS[ LONG CARDINAL ]; <> LongWrite: PROC[world: World, addr: Address, value: LONG CARDINAL]; <> CopyRead: PROC[world: World, from: Address, nwords: INT, to: LONG POINTER]; <> CopyWrite: PROC[world: World, from: LONG POINTER, nwords: INT, to: Address]; <> <> IllegalPatch: ERROR; <> SetBreak: PROC[world: World, addr: Address, offset: PrincOps.BytePC] RETURNS[oldByte: PrincOps.op]; <> <> <> <> <> ClearBreak: PROC[world: World, addr: Address, offset: PrincOps.BytePC, oldByte: PrincOps.op]; <> <> <> Lock: PROC[world: World]; < 0, the world>> <> Unlock: PROC[world: World]; <> Go: PROC[world: World]; <> <> <> <<>> <> Loadstate: PROC[world: World] RETURNS[ LoadState.Handle ]; END.