|
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»