home *** CD-ROM | disk | FTP | other *** search
-
- (*
- * vectmap - map system interrupt vectors
- *
- * author: S. H. Smith, 10-May-86
- *
- *)
-
- {$P512,d-}
-
- type
- vector = record
- offset: integer;
- segment: integer;
- end;
-
- anystring = string[40];
-
- var
- interrupt: array[0..$FF] of vector absolute 0:0;
-
-
-
- function hex(i: integer): anystring;
- var
- h: anystring;
- d: integer;
- c: char;
-
- begin
- h := '';
-
- for d := 1 to 4 do
- begin
- if (i and $0f) > 9 then
- c := chr((i and $0f) + ord('0') + 7)
- else
- c := chr((i and $0f) + ord('0'));
-
- h := c + h;
- i := i shr 4;
- end;
-
- hex := h;
- end;
-
-
- procedure display_vector(n: integer);
- var
- s: integer;
- o: integer;
-
- begin
-
- s := interrupt[n].segment;
- o := interrupt[n].offset;
- if (s = 0) and (o = 0) then
- exit;
-
- write( copy(hex(n),3,2), ' ',
- hex(s),':',
- hex(o),' ');
-
- case s of
- $0000: write(' Int vectors ');
- $0040: write(' ROM BIOS data ');
- $0050: write(' DOS data ');
- $0070: write(' IO.SYS drivers ');
- $c800: write(' Fixed disk ROM ');
- $f000: write(' System ROM ');
- $fc00: write(' BIOS ROM ');
-
- else
- if s = cseg then
- write(' User program ')
- else if s = interrupt[$20].segment then
- write(' DOS ')
- else if s = interrupt[$21].segment then
- write(' DOS enhancement ')
- else if s = interrupt[$24].segment then
- write(' COMMAND.COM ')
- else if (s < cseg) and (s > interrupt[$20].segment) then
- write(' Resident utility ')
- else
- write(' ? ');
- end;
-
-
- case n of
- $00: write(' Division by zero');
- $01: write(' Single step');
- $02: write(' Non-maskable interrupt');
- $03: write(' DEBUG breakpoint');
- $04: write(' Arithmetic overflow');
- $05: write(' Print screen');
- $08: write(' Hardware clock tick');
- $09: write(' Keyboard action');
- $0d: write(' Vertical retrace');
- $0e: write(' Diskette attention (completion)');
- $0f: write(' Printer control');
- $10: write(' Video display services');
- $11: write(' Equipment list services');
- $12: write(' Memory size services');
- $13: write(' Diskette services');
- $14: write(' Communication services');
- $15: write(' Cassette tape services');
- $16: write(' Standard keyboard services');
- $17: write(' Printer services');
- $18: write(' Activate ROM basic');
- $19: write(' Boot-strap start-up');
- $1a: write(' Time and date services');
- $1b: write(' Keyboard break handler');
- $1c: write(' Clock tick handler');
- $1d: write(' Video control parameter table');
- $1e: write(' Disk base table');
- $1f: write(' High video graphics character table');
- $20: write(' DOS program terminate service');
- $21: write(' DOS function call services');
- $22: write(' User program terminate handler');
- $23: write(' User keyboard break handler');
- $24: write(' User critical error handler');
- $25: write(' DOS absolute disk read');
- $26: write(' DOS absolute disk write');
- $27: write(' DOS terminate and stay resident');
- $44: write(' Low video graphics character table (PCjr)');
- $48: write(' Translate PCjr keyboard');
- $49: write(' Keyboard-supplement device translation table');
-
- else write(' ?');
- end;
-
- writeln;
- flush(output);
- end;
-
-
- var
- int: integer;
-
-
- begin
- writeln;
- write('VECTMAP - Map of system interrupt vectors');
- writeln(' 10-May-86, S.H.Smith');
- writeln;
-
- writeln;
- writeln('Int Handler Handler Interrupt');
- writeln('no address description description');
- writeln('--- --------- --------------- ----------------------');
-
-
- for int := 0 to $ff do
- display_vector(int);
- end.