Код:
DEFINITION Laser2; (* non-portable *)
(***************************)
(* LASER 2 Graphic Engine *)
(* Coded by Oleg N. Cher *)
(* zx.oberon2.ru/forum *)
(***************************)
TYPE
ADR = LONGINT;
BUFFER = ARRAY OF CHAR;
SPRITES = ARRAY OF CHAR;
UBYTE = INTEGER;
(* New procedures: *)
PROCEDURE SCRL (adr: ADR) (* Init sprites *) ;
PROCEDURE SCRLv (adr: ADR) (* in variable *) ;
PROCEDURE SCRLa (buf: BUFFER) (* in array *) ;
PROCEDURE SPRT (adr: ADR) (* Init sprites *) ;
PROCEDURE SPRTv (adr: ADR) (* in variable *) ;
PROCEDURE SPRTa (sprites: SPRITES) (* array *) ;
PROCEDURE SCRN (adr: ADR) (* Set screen *) ;
(* Synonyms for the new procedures: *)
PROCEDURE InitScroll (adr: ADR) ;
PROCEDURE InitScrollV (adr: ADR) (* in var *) ;
PROCEDURE InitScrollA (buf: BUFFER) ;
PROCEDURE InitSprites (adr: ADR) ;
PROCEDURE InitSpritesV (adr: ADR) (* in var *) ;
PROCEDURE InitSpritesA (sprites: SPRITES) ;
PROCEDURE SetScreen (adr: ADR) ;
(* Sprite manipulations: *)
PROCEDURE ATOF ;
PROCEDURE ATON ;
PROCEDURE INVM (spn: UBYTE) ;
PROCEDURE PTBL (col, row: SHORTINT; spn: UBYTE) ;
PROCEDURE PTND (col, row: SHORTINT; spn: UBYTE) ;
PROCEDURE PTNV (col, row: SHORTINT; spn: UBYTE) ;
PROCEDURE PTOR (col, row: SHORTINT; spn: UBYTE) ;
PROCEDURE PTXR (col, row: SHORTINT; spn: UBYTE) ;
(* Screen windows processing: *)
PROCEDURE CLSV (col, row, len, hgt: UBYTE) ;
PROCEDURE INVV (col, row, len, hgt: UBYTE) ;
PROCEDURE MIRV (col, row, len, hgt: UBYTE) ;
PROCEDURE SDNV (col, row, len, hgt, npx: UBYTE) ;
PROCEDURE SUPV (col, row, len, hgt, npx: UBYTE) ;
PROCEDURE SL1V (col, row, len, hgt: UBYTE) ;
PROCEDURE SL4V (col, row, len, hgt: UBYTE) ;
PROCEDURE SL8V (col, row, len, hgt: UBYTE) ;
PROCEDURE SR1V (col, row, len, hgt: UBYTE) ;
PROCEDURE SR4V (col, row, len, hgt: UBYTE) ;
PROCEDURE SR8V (col, row, len, hgt: UBYTE) ;
PROCEDURE WL1V (col, row, len, hgt: UBYTE) ;
PROCEDURE WL4V (col, row, len, hgt: UBYTE) ;
PROCEDURE WL8V (col, row, len, hgt: UBYTE) ;
PROCEDURE WR1V (col, row, len, hgt: UBYTE) ;
PROCEDURE WR4V (col, row, len, hgt: UBYTE) ;
PROCEDURE WR8V (col, row, len, hgt: UBYTE) ;
PROCEDURE WU1V (col, row, len, hgt: UBYTE) ;
(* Attribute windows processing: *)
PROCEDURE AWLV (col, row, len, hgt: UBYTE) ;
PROCEDURE AWRV (col, row, len, hgt: UBYTE) ;
PROCEDURE MARV (col, row, len, hgt: UBYTE) ;
PROCEDURE SETV (col, row, len, hgt: UBYTE) ;
END Laser2.