|
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: 2816 (0xb00) Types: TextFile Names: »SKDUMP.PAS«
└─⟦29e35ddf2⟧ Bits:30003931/CCPM_Tegn.imd Disketter indleveret af Steffen Jensen (Piccolo/Piccoline) └─⟦this⟧ »SKDUMP.PAS«
program skdump; var n : integer; tegn : char; procedure InputJaNej(x,y: integer; var tegn: char); begin gotoxy(x,y); write(@27'b4','N',@27'b3','=nej ',@27'b4','J',@27'b3','=ja '); repeat read(KBD,tegn); until (tegn in (.@13,'N','n','J','j'.)) or (tegn=@27); if (tegn in (.@13,'N','n'.)) then begin tegn:='N'; end else begin if (tegn<>@27) then tegn:='J'; end; end; (* ▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀▶ac◀ *) procedure harddump; var scr_xaddr : array(.0..740.) of integer; scr_yaddr : array(.0..400.) of integer; k1,gr_maxxx,tmax,smax, txt_maxx,txt_maxy,a,b, xmax,ymax : integer; init_ch : string(.6.); gr_str : string(.4.); ii,jj,kk,scr_segm : integer; function get_pixel_config(var xmax,ymax:integer):integer; const xios_int = $28; xios_get_conf = 4; type reg_type=record ax,bx,cx,dx,bp,si,di,ds,es,flags:integer end; var screen_type : ^integer; reg : reg_type; begin reg.ax :=xios_get_conf; swint(xios_int,reg); screen_type :=ptr(reg.es,reg.si+18); if screen_type^ and 2 = 2 then begin (* rc partner *) k1:=1; xmax:=719; ymax:=351; gr_maxxx:=704; get_pixel_config :=$0F000; end else begin (* piccoline *) k1:=2; xmax:=559; ymax := 255; gr_maxxx:=512; get_pixel_config := $0D000; end; end; begin scr_segm:=get_pixel_config(xmax,ymax); a:=-gr_maxxx;b:=0; for ii:=0 to xmax do begin if (ii mod 16)=0 then a:=a+gr_maxxx; if (ii mod 8)=0 then if b=1 then b:=0 else b:=1; scr_xaddr(.ii.):=a+b; end; for ii:=0 to ymax do scr_yaddr(.ymax-ii.):=(ii*2); txt_maxx:=69; txt_maxy:=24; smax:=(ymax+1)*k1; writeln(lst,chr(27)+'T16'+chr(27)+'>'+chr(27)+'E'); str(smax:4,gr_str); for ii:=1 to 4 do if gr_str(.ii.)=' ' then gr_str(.ii.):='0'; init_ch:=chr(27)+'S'+gr_str; tmax:=txt_maxx; for ii:=0 to txt_maxx do begin write(lst,init_ch); for jj:=ymax downto 0 do for kk:=1 to k1 do write(lst,chr(mem(.scr_segm:scr_yaddr(.jj.)+scr_xaddr(.(tmax-ii)*8.).))); writeln(lst); end; writeln(lst,chr(27)+'c1',@12); end; begin repeat write(clrhom); gotoxy(10,10); write('Tryk på en tast, når udskrivningen kan begynde .'); repeat until keypress; write(clrhom); gotoxy(10,10); write('Skift til konsol 0 - nu.'); for n:=1 to 32000 do n:=n; harddump; inputjanej(10,10,tegn); until (tegn='n') or (tegn='N'); end. «eof»