| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- IMPLEMENTATION MODULE Global ;
- FROM Memory IMPORT WriteSlot, WriteByte ;
- VAR
- moduleBase : ARRAY [0 .. MaxModules - 1] OF LONGCARD ;
- moduleProcs : ARRAY [0 .. MaxModules - 1] OF LONGCARD ;
- moduleFlags : ARRAY [0 .. MaxModules - 1] OF CHAR ;
- currentModule : CARDINAL ;
- PROCEDURE InitModuleTable ;
- VAR i: CARDINAL ;
- BEGIN
- FOR i := 0 TO MaxModules - 1 DO
- moduleBase [i] := 0 ;
- moduleProcs [i] := 0 ;
- moduleFlags [i] := CHR (0) ;
- END ;
- currentModule := 0 ;
- END InitModuleTable ;
- PROCEDURE GetModuleBase (m: CARDINAL) : LONGCARD ;
- BEGIN
- RETURN moduleBase [m] ;
- END GetModuleBase ;
- PROCEDURE SetModuleBase (m: CARDINAL; base: LONGCARD) ;
- BEGIN
- moduleBase [m] := base ;
- END SetModuleBase ;
- PROCEDURE GetModuleProcs (m: CARDINAL) : LONGCARD ;
- BEGIN
- RETURN moduleProcs [m] ;
- END GetModuleProcs ;
- PROCEDURE SetModuleProcs (m: CARDINAL; procs: LONGCARD) ;
- BEGIN
- moduleProcs [m] := procs ;
- END SetModuleProcs ;
- PROCEDURE GetModuleFlag (m: CARDINAL) : CARDINAL ;
- BEGIN
- RETURN ORD (moduleFlags [m]) ;
- END GetModuleFlag ;
- PROCEDURE SetModuleFlag (m: CARDINAL; f: CARDINAL) ;
- BEGIN
- moduleFlags [m] := CHR (f MOD 256) ;
- END SetModuleFlag ;
- PROCEDURE GetCurrentModule () : CARDINAL ;
- BEGIN
- RETURN currentModule ;
- END GetCurrentModule ;
- PROCEDURE SetCurrentModule (m: CARDINAL) ;
- BEGIN
- currentModule := m ;
- END SetCurrentModule ;
- PROCEDURE FindModuleByBase (base: LONGCARD) : CARDINAL ;
- VAR i: CARDINAL ;
- BEGIN
- i := 0 ;
- WHILE (i < MaxModules) AND (moduleBase [i] # base) DO
- INC (i) ;
- END ;
- IF i >= MaxModules THEN
- RETURN 0 ;
- ELSE
- RETURN i ;
- END ;
- END FindModuleByBase ;
- END Global.
|