Category Archives: C / C++

C++ 과 C의 차이점

0. 스트림 입출력 연산자

C언어에서 입출력을 위해서는 printf와 scanf 가 주로 쓰였다.
C++에서는 cout<<과 cin>>을 주로 쓰는데 함수형태가 아니라 연산자 형태이다
 printf(“%d”,1234);
가 CPP에서는
std::cout << 1234;
로 같은(?)동작을 수행한다
<<, >> 이놈들이  C에서는 쉬프트 연산을 했기때문에
CPP 에서는 따로 구분을 쵸큼 해줘야된다…
std::cout <<  1<<2  <<endl;         -> 12 (1과 2를 순서대로 출력)
std::cout << (1<<2) <<endl;         -> 4  (1을 왼쪽2쉬프트 결과)

1. 블록내 변수선언

C 에서는 항상 함수나 블록의 시작에 변수를 선언해야하나
C++에는 어디서나 가능
ex )  for(int i =0 ; i< loopcount ; i++)

2. 변수 범위지정연산자

지역변수와 같은이름을 가진 전역변수를 구분하여 쓸수있다
ex )
char * str= “global”;
{
    char * str = “what?”;
    {
        char * str = “region”;
        cout<< “Global : ” << ::str << endl;
        cout<< “Region : ” <<   str << endl;
    }
}
output :
Global : global
Region : region

3. bool 자료형

C에서도 쓴거같지만 …. 아니다
참과 거짓을 표현하는게 무려 1바이트나 든다 ( sizeof(bool) == 1 )
true 는 1로 (실제론 0이아닌 모든수가 true이다!)
false 는 0으로

4. 명시적인 형 변환

C에서는 캐스트 연산자를 써서 자료형을 변환하였지만
C++ 에서는 함수타입으로 형변환을 할수있다
(int)ch  ->  int(ch)
앞뒤를 괄호로 감싸줌으로써 어디서 어디까지 캐스팅하는지 정확하게 알수있다

5. enum, struct, union

사용시에
C에서는
enum t_enum a;
struct t_struct b;
union t_union c;
이런식으로 앞에 명시해줘야했지만
 C++에서는 생략하고
t_enum a;
t_struct b;
t_union c;
이런식으로 쓸수가 있다 .

6. 오버로딩

오버로딩이 뭐냐면 함수 재정의 입니다 (초과 적재)
C에서는 같은이름을 가진 함수를 여러개(두개이상) 쓸수없습니다만
C++에서는 구분이 된다면 얼마든지 만들어 쓸수가 있습니다 .
int sum (int a,int b)         {   return a+b; }
int sum (short a, short b) {   return a+b; }
뭐 이런식?

7. 디폴트 매개변수

매개변수를 입력하지 않았을때 기본값을 지정할수있다
int increase(int incnum = 1 )
{
    return (count +=incnum);
}
increase(5); // 호출시 count가 5증가
increase();  // 호출시 count가 default 만큼(1) 증가

8. 인라인 함수 inline

보기는 함수랑 똑같은데
실제 수행하는 함수랑은 다르다 ( 스택프레임이 바뀌지 않는다.  -> 속도가 함수에비해 빠르다 )
매크로의 단점을 보완해주며 코드 최적화(?)에 사용된다
#define SQUARE(x) ( (x) * (x) )
inline int square(int x){    return ( x * x ); }
int main()
{  
    int a=2;
    cout <<“M : ” <<SQUARE(++a)<<endl;
    a=2;
    cout <<“I : ” <<square(++a)<<endl;
    return 0;
}
M : 16  // ((++a) * (++a))  ->  4 * 4
I : 9     // (3 * 3)

9. 레퍼런스 Reference

별명이라고 하는데 그냥 포인터를 변수화 시킨것.
int a = 5 ;
int &b = a ;  // b별명의 본체로 a를 지목
cout << “a : ” << a << “\t” <<  “b : ” << b<< endl ;
b=10;
cout << “a : ” << a << “\t” <<  “b : ” << b<< endl ;
output :
a : 5         b : 5
a : 10        b : 10
참고로 포인터로는
int a=5;
int *  b=&a;  // a의 주소를 b가 가리킴
cout << “a : ” << a << “\t” <<  “b : ” << *b<< endl ;
*b=10; // b=10 요롷케 쓰면 b가 가리키는 주소가 바껴버림
cout << “a : ” << a << “\t” <<  “b : ” << *b<< endl ;
그러니까 *을 줄일수 있다 + 포인터 울렁증엔 이거만큼 좋은게 없지 ㅇㅇ…
근데 이거는 한번 가리킨걸 바꿀수가 없다 b = c 이렇게하면 b의 값을 c로 바꾸는거밖에 더되나.
&b = c ? 컴파일에러 .(error: lvalue required as left operand of assignment) 라는데…
&b 가 b의 주소값이란 뜻이잖아 그 주소값을 c라는 정수로 바꿀수가 없다는뜻이지 (바껴서도 안되고..)
책에 쵸큼 신기한게 있네
int x = 88;
int & func (void )
{
    return x;
}
int main()
{
    cout << “x : “<< func << endl;    // x : 88 을 출력하겠찌
    func() = 100;   // 이게 가능해 !
    cout << “x : “<< func << endl;    // 가능하다니 x : 100 을 출력하겠찌
    return 0;
}

10. 동적메모리 할당 (new , delete)

C언어에서는 void * malloc ( size_t __size ) 를 호출해서 형변환을통해 포인터로 받았다.
예를들어
int * mem = (int*) malloc( sizeof(int) * 100); // int의 크기를 알아내서… 하여튼 귀찮다
free (mem) ; // 해제는 간단하다.
C++에서는 훨씬 간단하게 가능하다
int * mem = new int[100];
delete [] mem ; // 배열을 해제할떄는 꼭 대괄호 써줘야된다!  // 한개만 해제는 안써도됨

11. 네임스페이스

C++ 에서는 비슷한(?)애들을 묶어버릴수 있다
namespace AA
{
    int i;
    void function();
    …
}
이렇게 묶고 AA::i , AA::function() 이런식으로 쓸수가 있다
이게 계속쓰기 귀찮잖아 ? (예를들어 std::cout ..)
그러면
using namespace AA;
를 써주면 i 만써도 알아서 AA::i를 찾아간단 말이지
어휴 끝났따

[변태짓] const 에 대한 고찰

똑같은 코드

#include <stdio.h>
int main()
{
    const int constvalue = 1234;
    *(int*)&constvalue = 1;
    printf(“direct : %d \n”,constvalue);
    printf(“const pointer : %d \n”,*(const int*)&constvalue);
    printf(“int pointer : %d \n”,*(int*)&constvalue);
    return 0;
}
를 gcc(4.4.1), g++(4.4.1), VC2008(cl.exe  15.00.21022.08) 에서 컴파일+ 실행 시켜보았다
먼저
 gcc
– 노에러 노워링
direct : 1
const pointer : 1
int pointer : 1
g++
– 노에러 노워링
direct : 1234
const pointer : 1
int pointer : 1
VS2008(확장자 c)
– 노에러 노워링
direct : 1234
const pointer : 1234
int pointer : 1
VS2008(확장자 cpp)
– 노에러 노워링
direct : 1234
const pointer : 1234
int pointer : 1
너희들 뭐하니 ???

Indent ANSI style

 find ./ -name ‘*.[ch]’ -exec indent -nbad -bap -bbo -nbc -bli0 -c33 -cd33 -ncdb -nce -nlp -ci3 -cli0 -cp33 -cs -d0 -di1 -nfc1 -nfca -hnl -ts4 -i4 -ip0 -l9999 -npcs -nprs -npsl -saf -sai -saw -nsc -nsob -nss {} \;

DOS Interrupt Services

Interrupt Services DOS, BIOS, EMS und Mouse

Intel Defined CPU Exception Table (see notes)

IBM PC Hardware Interrupt Table (in order of priority)

Interrupt Table as Implemented by System BIOS/DOS

INT 5 – Print Screen

INT 8 – System timer

INT 9 – Keyboard Interrupt (Hardware Handler)

INT 10 – Video BIOS Services

INT 10,0 – Set Video Mode

INT 10,1 – Set Cursor Type

INT 10,2 – Set Cursor Position

INT 10,3 – Read Cursor Position and Size

INT 10,4 – Read Light Pen Position

INT 10,5 – Select Active Display Page

INT 10,6 – Scroll Window Up

INT 10,7 – Scroll Window Down

INT 10,8 – Read Character and Attribute at Cursor Position

INT 10,9 – Write Character and Attribute at Cursor Position

INT 10,A – Write Character Only at Current Cursor Position

INT 10,B – Set Color Palette

INT 10,C – Write Graphics Pixel at Coordinate

INT 10,D – Read Graphics Pixel at Coordinate

INT 10,E – Write Text in Teletype Mode

INT 10,F – Get Video State

INT 10,10 – Set/Get Palette Registers (EGA/VGA)

INT 10,11 – Character Generator Routine (EGA/VGA)

INT 10,12 – Video Subsystem Configuration (EGA/VGA)

INT 10,13 – Write String (BIOS versions from 1/10/86)

INT 10,14 – Load LCD Character Font (convertible only)

INT 10,15 – Return Physical Display Parms (convertible)

INT 10,1A – Video Display Combination (VGA)

INT 10,1B – Video BIOS Functionality and State Information (MCGA/VGA)

Video BIOS Dynamic Functionality State Table (MCGA/VGA)

Video BIOS Static Functionality Table

INT 10,1C – Save/Restore Video State (VGA only)

INT 10,FE – Get DESQView/TopView Virtual Screen Regen Buffer

INT 10,FF – Update DESQView/TopView Virtual Screen Regen Buffer

INT 11 – BIOS Equipment Determination / BIOS Equipment Flags

INT 12 – Memory Size Determination

INT 13 – Diskette BIOS Services

For more information see the following topics:

INT 13,0 – Reset Disk System

INT 13,1 – Disk Status

INT 13,2 – Read Disk Sectors

INT 13,3 – Write Disk Sectors

INT 13,4 – Verify Disk Sectors

INT 13,5 – Format Disk Track

INT 13,6 – Format Track and Set Bad Sector Flags (XT & portable)

INT 13,7 – Format Drive Starting at Specified Track (XT & portable)

INT 13,8 – Get Current Drive Parameters (XT & newer)

INT 13,A – Read Long Sector (XT & newer)

INT 13,B – Write Long Sectors (XT & newer)

INT 13,C – Seek to Cylinder (XT & newer)

INT 13,D – Alternate Disk Reset (XT & newer)

INT 13,E – Read Sector Buffer (XT & portable only)

INT 13,F – Write Sector Buffer (XT & portable only)

INT 13,10 – Test for Drive Ready (XT & newer)

INT 13,11 – Recalibrate Drive (XT & newer)

INT 13,12 – Controller RAM Diagnostic (XT & portable only)

INT 13,13 – Drive Diagnostic (XT & portable only)

INT 13,14 – Controller Internal Diagnostic (XT & newer)

INT 13,15 – Read DASD Type (XT BIOS from 1/10/86 & newer)

INT 13,16 – Change of Disk Status (XT BIOS from 1/10/86 & newer)

INT 13,17 – Set DASD Type for Format (XT BIOS from 1/10/86 & newer)

INT 13,18 – Set Media Type for Format (BIOS date specific)

INT 13,19 – Park Fixed Disk Heads (AT & newer)

INT 13,1A – Format Unit (PS/2 model 50+)

INT 14 – BIOS Asynchronous Communications Services

BIOS Asynchronous Communications Services (Status)

INT 14,0 – Initialize Communications Port Parameters

INT 14,1 – Send Character to Communications Port

INT 14,2 – Receive Character from Communications Port

INT 14,3 – Get Serial Port Status

INT 14,4 – Serial Port Extended Initialization (PS/2 & later systems)

INT 14,5 – Extended Communication Port Control (PS/2 & later systems)

INT 15 – System BIOS Services

For more information see the following topics:

INT 15,0 – Turn Cassette Motor On (PC,PCjr only)

INT 15,1 – Turn Cassette Motor Off (PC,PCjr only)

INT 15,2 – Read Blocks from Cassette (PC,PCjr only)

INT 15,3 – Write Blocks to Cassette (PC,PCjr only)

INT 15,F – Format Periodic Interrupt (PS/2 only)

INT 15,20 – PRINT.

INT 15,21 – Power On Self Test (POST) Error Log (PS/2 except 30)

INT 15,40 – Read / Modify Profiles (convertible only)

INT 15,41 – Wait on External Event (convertible only)

INT 15,42 – Request System Power Off (convertible only)

INT 15,43 – Read System Status (convertible only)

INT 15,44 – (De)activate Internal Modem Power (convertible)

INT 15,4F – Keyboard Intercept (BIOS date specific)

INT 15,80 – Device Open

INT 15,81 – Device Close

INT 15,82 – Program Termination

INT 15,83 – Event Wait

INT 15,84 – Joy-Stick Support

INT 15,85 – System Request Key Pressed

INT 15,86 – Elapsed Time Wait (AT and PS/2)

INT 15,87 – Move Block to/from Extended Memory

INT 15,88 – Extended Memory Size Determination

INT 15,89 – Switch Processor to Protected Mode

INT 15,90 – Device Busy

INT 15,91 – Interrupt Complete

INT 15,C0 – Return System Configuration Parameters (PS/2 only)

INT 15,C1 – Return Extended BIOS Data Area Segment (PS/2 only)

INT 15,C2 – Pointing Device BIOS Interface (PS/2 only)

INT 15,C3 – Enable/Disable Watchdog Timer (PS/2)

INT 15,C4 – Programmable Option Select (PS/2)

INT 16 – Keyboard BIOS Services

For more information, see the following topics:

INT 16,0 – Wait for Keypress and Read Character

INT 16,1 – Get Keyboard Status

INT 16,2 – Read Keyboard Flags

INT 16,3 – Set Keyboard Typematic Rate (AT+)

INT 16,4 – Keyboard Click Adjustment (AT+)

INT 16,5 – Keyboard Buffer Write (AT+)

INT 16,10 – Extended Wait for Keypress and Read Character (AT+)

INT 16,11 – Extended Get Keyboard Status (AT+)

INT 16,12 – Extended Get Keyboard Status (AT+)

INT 17 – Printer BIOS Services

INT 17,0 – Print Character

INT 17,1 – Initialize Printer Port

INT 17,2 – Read Printer Port Status

INT 19 – Bootstrap Loader

INT 1A – System and Real Time Clock BIOS Services

INT 1A,0 – Read System Clock Counter

INT 1A,1 – Set System Clock Counter

INT 1A,2 – Read Time From Real Time Clock (XT 286,AT,PS/2)

INT 1A,3 – Set Time on Real Time Clock (XT 286,AT,PS/2)

INT 1A,4 – Read Real Time Clock Date (XT 286,AT,PS/2)

INT 1A,5 – Set Real Time Clock Date (XT 286,AT,PS/2)

INT 1A,6 – Set Real Time Clock Alarm (XT 286,AT,PS/2)

INT 1A,7 – Disable Real Time Clock Alarm (XT,AT,PS/2)

INT 1A,8 – Set RTC Activated Power On Mode (convertible)

INT 1A,9 – Read RTC Alarm Time and Status (convertible,PS/2)

INT 1A,A – Read System Day Counter (PS/2)

INT 1A,B – Set System Day Counter (PS/2)

INT 1A,80 – Setup Sound Multiplexer (PCjr only)

INT 1B – BIOS Ctrl-Break Handler Address

INT 1C – System Timer Tick (User Routine)

INT 1D – Video Initialization Parameter Table Vector

INT 1E – Disk Initialization Parameter Table Vector

INT 1F – Graphics Display Character Bit Map Table

DOS Interrupt Summary

INT 20 – Program Terminate

INT 21 – DOS Function Dispatcher

For more information, see the following topics:

INT 21,0 – Program Terminate

INT 21,1 – Keyboard Input with Echo

INT 21,2 – Display Output

INT 21,3 – Wait for Auxiliary Device Input

INT 21,4 – Auxiliary Output

INT 21,5 – Printer Output

INT 21,6 – Direct Console I/O

INT 21,7 – Direct Console Input Without Echo

INT 21,8 – Console Input Without Echo

INT 21,9 – Print String

INT 21,A – Buffered Keyboard Input

INT 21,B – Check Standard Input Status

INT 21,C – Clear Keyboard Buffer and Invoke Keyboard Function

INT 21,D – Disk Reset

INT 21,E – Select Disk

INT 21,F – Open a File Using FCB

INT 21,10 – Close a File Using FCB

INT 21,11 – Search for First Entry Using FCB

INT 21,12 – Search for Next Entry Using FCB

INT 21,13 – Delete File Using FCB

INT 21,14 – Sequential Read Using FCB

INT 21,15 – Sequential Write Using FCB

INT 21,16 – Create a File Using FCB

INT 21,17 – Rename a File Using FCB

INT 21,19 – Get Current Default Drive

INT 21,1A – Set Disk Transfer Address (DTA)

INT 21,1B – Get Allocation Table Information

INT 21,1C – Get Allocation Table Info for Specified Drive

INT 21,1F – Get Pointer to Current Drive Parameter Table (Undocumented)

INT 21,21 – Random Read Using FCB

INT 21,22 – Random Write Using FCB

INT 21,23 – Get File Size Using FCB

INT 21,24 – Set Relative Record Field in FCB

INT 21,25 – Set Interrupt Vector

INT 21,26 – Create New Program Segment Prefix

INT 21,27 – Random Block Read Using FCB

INT 21,28 – Random Block Write Using FCB

INT 21,29 – Parse a Filename for FCB

INT 21,2A – Get Date

INT 21,2B – Set Date

INT 21,2C – Get Time

INT 21,2D – Set Time

INT 21,2E – Set/Reset Verify Switch

INT 21,2F – Get Disk Transfer Address (DTA)

INT 21,30 – Get DOS Version Number

INT 21,31 – Terminate Process and Remain Resident

INT 21,32 – Get Pointer to Drive Parameter Table (Undocumented)

INT 21,33 – Get/Set System Values (Ctl-Break/Boot Drive)

INT 21,34 – Get Address to DOS Critical Flag INDOS

INT 21,35 – Get Interrupt Vector

INT 21,36 – Get Disk Free Space

INT 21,37 – Get/Set Switch Character (Undocumented, DOS 2.

INT 21,38 – Get/Set Country Dependent Information

INT 21,39 – Create Subdirectory (mkdir)

INT 21,3A – Remove Subdirectory (rmdir)

INT 21,3B – Change Current Directory (chdir)

INT 21,3C – Create File Using Handle

INT 21,3D – Open File Using Handle

INT 21,3E – Close File Using Handle

INT 21,3F – Read From File or Device Using Handle

INT 21,40 – Write To File or Device Using Handle

INT 21,41 – Delete File

INT 21,42 – Move File Pointer Using Handle

INT 21,43 – Get/Set File Attributes

INT 21,44 – I/O Control for Devices (IOCTL)

INT 21,44,0 / IOCTL,0 – Get Device Information

INT 21,44,1 / IOCTL,1 – Set Device Information

Device Data Word

INT 21,44,2 / IOCTL,2 – Read From Character Device

INT 21,44,3 / IOCTL,3 – Write to Character Device

INT 21,44,4 / IOCTL,4 – Read from Block Device

INT 21,44,5 / IOCTL,5 – Write to Block Device

INT 21,44,6 / IOCTL,6 – Get Input Status

INT 21,44,7 / IOCTL,7 – Get Output Status

INT 21,44,8 / IOCTL,8 – Device Removable Query

INT 21,44,9 / IOCTL,9 – Device Local or Remote Query

INT 21,44,A / IOCTL,A – Handle Local or Remote Query

INT 21,44,B / IOCTL,B – Set Sharing Retry Count

INT 21,44,C / IOCTL,C – Generic I/O for Handles

INT 21,44,D / IOCTL,D – Generic I/O for Block Devices

INT 21,44,E / IOCTL,E – Get Logical Drive

INT 21,44,F / IOCTL,F – Set Logical Drive

INT 21,45 – Duplicate File Handle

INT 21,46 – Force Duplicate File Handle

INT 21,47 – Get Current Directory

INT 21,48 – Allocate Memory

INT 21,49 – Free Allocated Memory

INT 21,4A – Modify Allocated Memory Block (SETBLOCK)

INT 21,4B – EXEC/Load and Execute Program

INT 21,4C – Terminate Process With Return Code

INT 21,4D – Get Return Code of Sub-process

INT 21,4E – Find First Matching File

INT 21,4F – Find Next Matching File

INT 21,50 – Set Current Process ID (Undocumented DOS 2.

INT 21,51 – Get Current Process ID (Undocumented DOS 2.

INT 21,52 – Get Pointer to DOS “INVARS” (Undocumented)

DOS 3.

DOS 3.

DOS 4.

INT 21,53 – Generate Drive Parameter Table (Undocumented)

INT 21,54 – Get Verify Setting

INT 21,55 – Create New PSP (Undocumented)

INT 21,56 – Rename File

INT 21,57 – Get/Set File Date and Time Using Handle

INT 21,58 – Get/Set Memory Allocation Strategy (Undocumented, DOS 3.

INT 21,59 – Get Extended Error Information (DOS 3.

INT 21,5A – Create Temporary File (DOS 3.

INT 21,5B – Create File (DOS 3.

INT 21,5C – Lock/Unlock File Access (DOS 3.

INT 21,5D – Critical Error Information (Undocumented, DOS 3.

INT 21,5E AL=0 Get Machine Name (DOS 3.

INT 21,5E AL=01 Set Machine Name (DOS 3.

INT 21,5E AL=02 Set Printer Setup (DOS 3.

INT 21,5E AL=03 Get Printer Setup (DOS 3.

INT 21,5E AL=04 Set Printer Mode (DOS 3.

INT 21,5E AL=05 Get Printer Mode (DOS 3.

INT 21,5F AL=00 Get Redirection Mode (DOS 3.

INT 21,5F AL=01 Set Redirection Mode (DOS 3.

INT 21,5F AL=02 Get Redirection List Entry (DOS 3.

INT 21,5F AL=03 Redirect Device (DOS 3.

INT 21,5F AL=04 Cancel Device Redirection (DOS 3.

INT 21,5F AL=05 Get Redirection List Extended Entry (DOS 4.

INT 21,5F AL=06 Get Redirection List (DOS 4.

INT 21,60 – Get Fully Qualified File Name (Undocumented 3.

INT 21,62 – Get PSP address (DOS 3.

INT 21,63 – Get Lead Byte Table (MSDOS 2.

INT 21,63 – Get Lead Byte Table (Asian DOS 3.

INT 21,64 – Set Device Driver Look Ahead (Undocumented)

INT 21,65 – Get Extended Country Information (DOS 3.

INT 21,66 – Get/Set Global Code Page (DOS 3.

INT 21,67 – Set Handle Count (DOS 3.

INT 21,68 – Flush Buffer Using Handle

INT 21,69 – Get/Set Disk Serial Number (Undocumented DOS 4+)

INT 21,6C – Extended Open/Create (DOS 4.

INT 21,F8 – Set OEM Int 21 Handler (functions F9-FF, Undocumented)

INT 22 – Program Terminate

INT 23 – Control-Break Exit Address

INT 24 – Critical Error Handler

INT 25 – Absolute Disk Read

Control Block Format (DOS 4.

INT 26 – Absolute Disk Write

Control Block Format (DOS 4.

INT 27 – Terminate and Stay Resident

INT 28 – DOS Idle Loop / Scheduler (Undocumented)

INT 29 – DOS Fast Character I/O (Undocumented 2.

INT 2A – DOS Network Critical Section and NETBIOS

INT 2A,0 – Network Installation Query

INT 2A,1 – Execute NETBIOS Request With No Error Retry

INT 2A,3 – Check if Direct I/O Allowed

INT 2A,4 – Execute NETBIOS Request

INT 2A,5 – Get Network Resource Information

INT 2A,6 – Network Print Stream Control

INT 2A,80 – Begin DOS Critical Section

INT 2A,81 – End DOS Critical Section

INT 2A,82 – End DOS Critical Sections 0 thru 7

INT 2A,84 – Keyboard Busy Loop

INT 2A,87 – Critical Section

INT 2E – Execute Command Using Base Level Command Interpreter (Undocumented DOS 2.

INT 2F – DOS Multiplex Interrupt

INT 2F,0 – DOS Multiplex Interrupt – Get Installed State

INT 2F,1 – Multiplex Interrupt – Submit file

INT 2F,2 – Multiplex Interrupt – Cancel file

INT 2F,3 – Multiplex Interrupt – Cancel all files

INT 2F,4 – Multiplex Interrupt – Pause / return status

INT 2F,5 – Multiplex Interrupt – End of Status

INT 2F,6 – PRINT.

INT 2F,8 – DRIVER.

INT 2F,2E – Setup Error Code Translation Tables (undoc.

INT 2F,80 – PRINT.

INT 33 – Mouse Function Calls

Mouse functions can be broken down into the following classes:

INT 33,0 – Mouse Reset/Get Mouse Installed Flag

INT 33,1 – Show Mouse Cursor

INT 33,2 – Hide Mouse Cursor

INT 33,3 – Get Mouse Position and Button Status

INT 33,4 – Set Mouse Cursor Position

INT 33,5 – Get Mouse Button Press Information

INT 33,6 – Get Mouse Button Release Information

INT 33,7 – Set Mouse Horizontal Min/Max Position

INT 33,8 – Set Mouse Vertical Min/Max Position

INT 33,9 – Set Mouse Graphics Cursor

INT 33,A – Set Mouse Text Cursor

INT 33,B – Read Mouse Motion Counters

INT 33,C – Set Mouse User Defined Subroutine and Input Mask

INT 33,D – Mouse Light Pen Emulation On

INT 33,E – Mouse Light Pen Emulation Off

INT 33,F – Set Mouse Mickey Pixel Ratio

INT 33,10 – Mouse Conditional OFF

INT 33,13 – Set Mouse Double Speed Threshold

INT 33,14 – Swap Interrupt Subroutines

INT 33,15 – Get Mouse Driver State and Memory Requirements

INT 33,16 – Save Mouse Driver State

INT 33,17 – Restore Mouse Driver State

INT 33,18 – Set alternate subroutine call mask and address

INT 33,19 – Get User Alternate Interrupt Address

INT 33,1A – Set Mouse Sensitivity

INT 33,1B – Get Mouse Sensitivity

INT 33,1C – Set Mouse Interrupt Rate (InPort only)

INT 33,1D – Set Mouse CRT Page

INT 33,1E – Get Mouse CRT Page

INT 33,1F – Disable Mouse Driver

INT 33,20 – Enable Mouse Driver

INT 33,21 – Reset Mouse Software

INT 33,22 – Set Language for Messages

INT 33,23 – Get Language Number

INT 33,24 – Get Driver Version, Mouse Type & IRQ Number

INT 4A – RTC Alarm Handler Vector

INT 67 – Expanded Memory Specification

INT 67,40 – Get EMM Status (LIM EMS 3.

INT 67,41 – Get Page Frame Base Address (LIM EMS 3.

INT 67,42 – Get Page Counts (LIM EMS 3.

INT 67,43 – Get Handle and Allocate Pages (LIM EMS 3.

INT 67,44 – Map Logical Page Into Physical Page Window (LIM EMS)

INT 67,45 – Release Handle and Memory Pages (LIM EMS)

INT 67,46 – Get EMM Version (LIM EMS)

INT 67,47 – Save Page Map Context (LIM EMS 3.

INT 67,48 – Restore Page Map Context (LIM EMS 3.

INT 67,49 – Get I/O Port Addresses (LIM EMS ¾ 3.

INT 67,4A – Get Logical to Physical Page Mapping (LIM EMS ¾ 3.

INT 67,4B – Get Handle Count (LIM EMS)

INT 67,4C – Get Page Count for Handle

INT 67,4D – Get Page Count for All Handles (LIM EMS)

INT 67,4E – Get/Set Page Map Context (LIM EMS 3.

INT 67,4F – Get/Set Partial Page Map (LIM EMS 4.

INT 67,50 – Map/Unmap Multiple Handle Pages (LIM EMS 4.

INT 67,51 – Reallocate Pages (LIM EMS 4.

INT 67,52 – Get/Set Handle Attributes

INT 67,53 Get/Set Handle Name

INT 67,54 – Get Handle Directory (LIM EMS 4.

INT 67,55 – Alter Page Map and Jump (LIM EMS 4.

INT 67,56 – Alter Page Map and Call (LIM EMS 4.

INT 67,57 – Move/Exchange Memory Region (LIM EMS 4.

INT 67,58 – Get Mappable Physical Address Array (LIM EMS 4.

INT 67,59 – Get Expanded Memory Hardware Information (LIM EMS 4.

INT 67,5A – Allocate Standard/Raw Pages (LIM EMS 4.

INT 67,5B – Alternate Map Register Set (LIM EMS 4.

INT 67,5C – Prepare Expanded Memory for Warm Boot (LIM EMS 4.

INT 67,5D – Enable/Disable OS Functions (LIM EMS 4.

INT 67,60 – LIM EMS Get Physical Window Array

INT 70 – Real Time Clock Interrupt (XT 286,AT,PS/2)

http://www.htl-steyr.ac.at/~morg/pcinfo/hardware/interrupts/inte1at0.htm