DEFINITION MODULE FASTO;
FROM SYSTEM IMPORT ADDRESS;
VAR XUDGS:ADDRESS;
PROCEDURE FASTOUT;
PROCEDURE WRITEAT(X,Y:CARDINAL;S:ARRAY OF CHAR);
(*
  PROCEDURE FUNCURS(C:CHAR);
  PROCEDURE FCURSOR(C:CHAR);
  PROCEDURE FWRCHAR(c:CHAR);
  PROCEDURE FWRLN;
  PROCEDURE FWRSTR(S:ARRAY OF CHAR);
  PROCEDURE FGOTOXY(X,Y:CARDINAL);
  PROCEDURE FGETXY(VAR X,Y:CARDINAL);
  PROCEDURE FMOVEX(X:INTEGER);
  PROCEDURE FCLS;
*)
END FASTO.
 
IMPLEMENTATION MODULE FASTO;
 
FROM STDIO IMPORT WRSTR,WRCHAR,WRLN,GOTOXY,UNCURS,CURSOR,MOVEX,GETXY,CLS;
IMPORT GRAPH0;
VAR SCRPOS:ADDRESS;
VAR [5C36H] CHARS:ADDRESS;
VAR [5C7BH] UDG:ADDRESS;
 
PROCEDURE WCH;HEX
FE 80 30 20 ED 4B (@CHARS) 87 6F 26 00 29 29 09 0E
08 41 7E 12 2C 14 10 FA 7A 91 1C 20 05 FE 50 28
01 81 57 C9 D6 90 30 08 47 CD 38 0B 2E 92 18 DF
ED 4B (@UDG) FE 15 38 D0 ED 4B (@XUDGS) D6 1B 30 C8
C6 06 01 10 BD 18 C1 END WCH;
 
PROCEDURE FUNCURS(C:CHAR);
HEX 06 38 18 02 END FUNCURS;
PROCEDURE FCURSOR(C:CHAR);
HEX 06 07 A7 C8 ED 5B (@SCRPOS) 08 7A 0F 0F 0F E6 03 C6
58 67 6B 70 08 18 04 END FCURSOR;
PROCEDURE FWRCHAR(c:CHAR);HEX
ED 5B (@SCRPOS) CB AA CD (@WCH) ED 53 (@SCRPOS) C9 END FWRCHAR;
PROCEDURE FWRSTR(S:ARRAY OF CHAR);HEX
D9 ED 5B (@SCRPOS) CB AA D9 CD (@WRITEAT+16) D9 18 ED END FWRSTR;
 
PROCEDURE SETPOS;HEX
7B 0F 0F 0F E6 E0 B1 6F 7B E6 18 F6 40 67 C9 END SETPOS;
 
PROCEDURE FGOTOXY(X,Y:CARDINAL);HEX
E1 D1 C1 C5 D5 E5 CD (@SETPOS) CB EC 22 (@SCRPOS) C9 END FGOTOXY;
PROCEDURE FMOVEX(X:INTEGER);HEX
ED 5B (@SCRPOS) 7D 83 6F 3E 00 8C 87 87 87 82 67 18
E9 END FMOVEX;
 
PROCEDURE FWRLN;HEX
21 (@SCRPOS+1) CB 6E CB EE 2B 7E 20 04 E6 1F C8 7E E6
E0 C6 20 77 D0 23 7E FE 70 C8 C6 08 77 C9 END FWRLN;
 
PROCEDURE FGETXY(VAR X,Y:CARDINAL);HEX
E1 C1 ED 5B (@SCRPOS) 7B 07 07 07 E6 07 B2 E6 1F 02
03 AF 02 7B E6 1F C1 02 03 AF 02 C5 C5 E9 END FGETXY;
 
PROCEDURE WRITEAT(X,Y:CARDINAL;S:ARRAY OF CHAR);HEX
D1 E1 C1 D9 D1 C1 C5 D5 CD (@SETPOS) EB D9 C5 E5 D5
03 7E A7 C8 D9 CD (@WCH) D9 ED A1 E0 18 F3 END WRITEAT;
 
PROCEDURE FCLS;
BEGIN
GRAPH0.CLS2;
SCRPOS:=6000H
END FCLS;
 
PROCEDURE FASTOUT;
BEGIN
WRSTR:=FWRSTR;
WRCHAR:=FWRCHAR;
WRLN:=FWRLN;
GOTOXY:=FGOTOXY;
UNCURS:=FUNCURS;
CURSOR:=FCURSOR;
MOVEX:=FMOVEX;
GETXY:=FGETXY;
CLS:=FCLS;
SCRPOS:=6000H
END FASTOUT;
 
BEGIN
FASTOUT;
XUDGS:=0C000H
END FASTO.
