{xI display.inc } { include file display.inc for dtc510.pas } procedure puthex( n : byte); begin write(hexdigit[ n and $0F]); end; { puthex } procedure putbyte (n : byte); var hinibble : byte; lownibble : byte; begin hinibble:= n div 16; lownibble:= n mod 16; puthex(hinibble); puthex(lownibble); end; { puthex } procedure putoctal(x : byte ); begin write( x div 64 ); write ( ( x mod 64 ) div 8); write ( x mod 8); end; procedure putword( n: integer ); begin putbyte(hi(n)); { use Turbo intrinsics hi and lo } putbyte(lo(n)); end; { putword } procedure putwordrev(n : integer); begin putbyte(lo(n)); putbyte(hi(n)); end; procedure putbinary( x : byte ); var i,j : integer; begin j:=$80; for i:=0 to 7 do begin if (j and x) <> 0 then write('1') else write('0'); j:=j div 2; end; { i } end; { putbinary } procedure puthexln(y,z : integer); { print 16 bytes, with label starting at z} var i,j,u : integer; begin putword(z); write(' '); for i:=0 to 3 do begin for j:=0 to 3 do begin u:=bufptr^[y + j + 4*i]; putbyte(u); end; { j } write(' '); end; { i } end; { puthexln } function makeascii( x : byte ) : char; begin x:= x and 127; if (x < 32) or (x = 127) then x:=46; makeascii:= chr(x); end; { makeascii } procedure putasciiln(y : integer); { displays 16 bytes of memory in ascii } var i,u : integer; begin write(' *'); for i:=0 to 15 do begin u:=bufptr^[y+i]; write(makeascii(u)); end; {i} writeln('&'); end; { putasciiln } procedure hexdsply( y ,z : integer); { displays z bytes starting at y } var i,index : integer; begin if z mod 16 = 0 then index:=(z div 16)-1 else index :=z div 16; writeln(' 0 4 8 C Ascii'); for i:=0 to index do begin puthexln(y+16*i,16*i); putasciiln(y+16*i); end; { i } end; { hexdsply }