|
DataMuseum.dkPresents historical artifacts from the history of: CP/M |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about CP/M Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - download
Length: 1664 (0x680) Types: TextFile Names: »PINI.SRC«
└─⟦c9df7130d⟧ Bits:30005915 Pascal MT+ Release 5.2 (Jet-80) └─ ⟦this⟧ »PINI.SRC«
MODULE INITIALIZE; CONST HW_STACK_SIZE = 128; (* NUMBER OF BYTES RESERVED FOR HARDWARE STACK *) (* CHANGE IS HEAVY RECURSION IS USED *) (*$I FIBDEF.LIB*) VAR SYSMEM : EXTERNAL INTEGER; (* TOP OF HEAP *) @SFP : EXTERNAL INTEGER; (* TOP OF RECURSION STACK *) @EFL : ^INTEGER; (* USED BY FULLHEAP *) @FRL : RECORD LINK : ^INTEGER; SIZE : INTEGER END; (* USED ALSO BY FULLHEAP *) INPUT, OUTPUT: FIB; (* DEFAULT CONSOLE FILES *) @TFN: STRINGÆ2Å; (* FOR TEMP. FILE NAMES *) @SYSIN, @SYSOU: INTEGER; (* I/O VECTORS *) @RNC, @WNC: EXTERNAL INTEGER; (* REALLY SUBROUTINES BUT JUST *) (* NEED THESE TO GET THEIR ADDRESSES *) (*$E-*) (* HIDE GETSP *) FUNCTION GETSP:INTEGER; VAR TEMPINT: INTEGER; (* FOR CAPTURING STACK POINTER *) BEGIN INLINE("LXI H / 0 / 0 / "DAD SP / "SHLD / TEMPINT); GETSP := TEMPINT END; (*$E+*) PROCEDURE @INI; BEGIN @FRL.LINK := NIL; @FRL.SIZE := 0; @EFL := NIL; SYSMEM := ADDR(SYSMEM) + 2; (* SO SYSMEM POINTS TO FREE AREA *) @SFP := GETSP - HW_STACK_SIZE; @TFN := '00'; WITH INPUT DO BEGIN IOSIZE := 1; BUFLEN := 1; OPTION := FCONIO; FTEXT := TRUE; FBUFFERÆ0Å := ' '; FBUFADR := WRD(ADDR(INPUT.FBUFFER)) END; WITH OUTPUT DO BEGIN IOSIZE := 1; BUFLEN := 1; OPTION := FCONIO; FTEXT := TRUE; FBUFFERÆ0Å := ' '; FBUFADR := WRD(ADDR(OUTPUT.FBUFFER)) END; @SYSIN := ADDR(@RNC); @SYSOU := ADDR(@WNC) END; MODEND. «eof»