| 1234567891011121314151617181920212223242526272829303132 |
- DEFINITION MODULE Compiler ;
- (* TP3 single-pass Pascal -> 8086 compiler, in GNU Modula-2 (-fiso).
- Mirrors the original Turbo Pascal 3.0 compiler (TPSRC6 'turbo' entry,
- TPSRC7-10): a one-pass parser that reads the shared TextBuf as source
- and emits 8086 machine code directly into an internal code buffer, a
- patch list resolving forward references, TP3-style error reporting
- (error number + relative text position) and code/data size accounting.
- The shell (CmdCompile) will call Compile, then jump the editor to
- errPos on failure - exactly like the original errexit + editor2 path. *)
- FROM SYSTEM IMPORT BYTE ;
- PROCEDURE Compile (VAR errNo, errPos : CARDINAL) : BOOLEAN ;
- (* Compile the current TextBuf as a Pascal program. Returns TRUE on
- success (sizes available via CodeBytes / DataBytes). On failure
- returns FALSE, errNo carries the TP3-style error number and errPos
- the relative source offset (0-based) for the editor. *)
- PROCEDURE CodeBytes () : CARDINAL ;
- (* emitted code size in bytes *)
- PROCEDURE DataBytes () : CARDINAL ;
- (* emitted data size in bytes *)
- PROCEDURE CodeByteAt (i : CARDINAL) : BYTE ;
- (* i-th byte of the emitted image (0 past the end), so tests can check the
- generated 8086 code itself and not only its size *)
- END Compiler.
|