|
|
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 - metrics - download
Length: 4352 (0x1100)
Types: TextFile
Names: »NY005.PAS«
└─⟦29e35ddf2⟧ Bits:30003931/CCPM_Tegn.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline)
└─⟦this⟧ »NY005.PAS«
function space(diskdrev:char):integer;
TYPE
REGISTRE = RECORD AX,BX,CX,DX,BP,SI,DI,DS,ES,FLAGS:INTEGER; END;
STR15=STRINGÆ15Å;
VAR FCB :STRING(.13.);
DIRCODE :ARRAY(.0..3,0..31.) OF BYTE;
REGS :REGISTRE;
DRIVE,A :INTEGER;
BEGIN
drive:=ord(diskdrev)-65;
FCB:=CHR(DRIVE+1); FCB(.13.):='?';
(* F_DMAOFF *)
REGS.CX:=26; REGS.DX:=OFS(DIRCODE); SWINT(224,REGS);
(* F_DMASEG *)
REGS.CX:=51; REGS.DX:=SEG(DIRCODE); SWINT(224,REGS);
(* F_SFIRST *)
REGS.CX:=17; REGS.DX:=OFS(FCB)+1; REGS.DS:=SEG(FCB);
SWINT(224,REGS); A:=REGS.AX;
(* DRV_SPACE *) REGS.CX:=46; REGS.DX:= DRIVE; SWINT(224,REGS);
SPACE:=(DIRCODE(.0,0.)DIV 8+DIRCODE(.0,1.)*32+DIRCODE(.0,2.)*8192);
END;
procedure drv_get(var diskdrev : char);
var
d_no :integer;
begin
reg.cx := $19;
swint(224,reg);
d_no := reg.ax;
diskdrev:=chr(65+d_no);
end;
function Skaerm22khz: boolean;
var
nvm : ^byte;
begin
reg.ax:=4;swint($28,reg); nvm:=ptr(reg.es,reg.si+18); Skaerm22khz:=(nvm^>=2);
end;
(* ▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀ *)
function Farveskaerm: boolean;
type
config_array = array(.0..22.) of byte;
var
configptr: ^config_array;
begin
reg.ax:=4; swint($28,reg); configptr:=PTR(reg.es,reg.si);
if (configptr^(.18.)=0) or (configptr^(.18.)=2) then
Farveskaerm:=true
else
Farveskaerm:=false;
end;
procedure fjern(xmin,xmax,ymin,ymax:integer);
var
glymin,soejle,hoejde,
gemindex,k : integer;
p,q : char;
begin
p:=chr(0);
q:=chr(255);
glymin:=ymin;
xmin:=videolinier*round(xmin/xkoordinat_blok);
xmax:=videolinier*round(xmax/xkoordinat_blok);
ymin:=(videolinier-1)-round(ymax/ykoordinat_linie);
ymax:=(videolinier-1)-round(glymin/ykoordinat_linie);
hoejde:=ymax-ymin;
soejle:=xmin+ymin;
gemindex:=0;
repeat
move(pix(.soejle.),temp(.gemindex.),2*hoejde);
fill(pix(.soejle.),2*hoejde,p);
soejle:=soejle+videolinier;
gemindex:=gemindex+hoejde;
until soejle>xmax;
end;
(* ▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀▶88◀ *)
procedure retur(xmin,xmax,ymin,ymax:integer);
var
glymin,soejle,hoejde,
gemindex : integer;
begin
glymin:=ymin;
xmin:=videolinier*round(xmin/xkoordinat_blok);
xmax:=videolinier*round(xmax/xkoordinat_blok);
ymin:=(videolinier-1)-round(ymax/ykoordinat_linie);
ymax:=(videolinier-1)-round(glymin/ykoordinat_linie);
hoejde:=ymax-ymin;
soejle:=xmin+ymin;
gemindex:=0;
repeat
move(temp(.gemindex.),pix(.soejle.),2*hoejde);
soejle:=soejle+videolinier;
gemindex:=gemindex+hoejde;
until soejle>xmax;
end;
procedure transretur(xmin,xmax,ymin,ymax:integer);
var
glymin,soejle,hoejde,
mi,mj,rest1,rest2,gemindex : integer;
farve1,farve2:array(.1..8.) of 0..3;
begin
glymin:=ymin;
xmin:=videolinier*round(xmin/xkoordinat_blok);
xmax:=videolinier*round(xmax/xkoordinat_blok);
ymin:=(videolinier-1)-round(ymax/ykoordinat_linie);
ymax:=(videolinier-1)-round(glymin/ykoordinat_linie);
hoejde:=ymax-ymin;
soejle:=xmin+ymin;
gemindex:=0;
gotoxy(70,20);write('Mogens');
repeat
mi:=0;
repeat
(* pix(.soejle+mi.):=pix(.soejle+mi.) exor temp(.gemindex+mi.);
*) rest1:=pix(.soejle+mi.);
rest2:=temp(.gemindex+mi.);
for mj:=1 to 7 do
begin
farve1(.mj.):=rest1 mod 4;
rest1:=rest1 div 4;
end;
for mj:=1 to 7 do
begin
farve2(.mj.):=rest2 mod 4;
rest2:=rest2 div 4;
end;
if rest2=0 then rest2:=rest1;
for mj:=7 downto 1 do
begin
if farve2(.mj.)=0 then
rest2:=4*rest2+farve1(.mj.)
else
rest2:=4*rest2+farve2(.mj.);
end;
pix(.soejle+mi.):=rest2;
mi:=mi+1;
until mi=hoejde-1;
(*move(temp(.gemindex.),pix(.soejle.),2*hoejde);
*) soejle:=soejle+videolinier;
gemindex:=gemindex+hoejde;
until soejle>xmax;
end;
«eof»