mirror of
				https://gitlab.com/freepascal.org/fpc/source.git
				synced 2025-10-31 08:11:29 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			33 lines
		
	
	
		
			911 B
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			911 B
		
	
	
	
		
			ObjectPascal
		
	
	
	
	
	
| { example for :
 | |
|           realintr()
 | |
|           flags constants
 | |
|           trealregs record
 | |
| }
 | |
| { This example demonstrates the use of the flag constants in conjunction with
 | |
|   an interrupt call
 | |
| 
 | |
|   In detail it checks if APM (advanced power management) is available.
 | |
| 
 | |
|   Int 15h 5300h - APM specification : Installation check
 | |
|   Input : AX = 5300h
 | |
|           BX = device id of system BIOS (= 0000h)
 | |
|   Return : Carry clear if successful
 | |
|            AH = major version (BCD)
 | |
|            AL = minor version (BCD)
 | |
| }
 | |
| 
 | |
| uses go32;
 | |
| 
 | |
| var r : trealregs;
 | |
| 
 | |
| begin
 | |
|      { set register values and issue real mode interrupt call }
 | |
|      r.ax := $5300;
 | |
|      r.bx := 0;
 | |
|      realintr($15, r);
 | |
|      { check if carry clear and write a suited message }
 | |
|      if ((r.flags and carryflag)=0) then begin
 | |
|         Writeln('APM v', (r.ah and $f), '.', (r.al shr 4), (r.al and $f), ' detected');
 | |
|      end else
 | |
|          Writeln('APM not present');
 | |
| end. | 
