Changeset 63 for GPL/trunk/drv32
- Timestamp:
 - Jan 3, 2006, 11:33:10 PM (20 years ago)
 - Location:
 - GPL/trunk/drv32
 - Files:
 - 
      
- 6 edited
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
      
GPL/trunk/drv32/init.c
r34 r63 44 44 #include "parse.h" 45 45 46 char copyright[]="@#Netlabs:1.13#@.Universal audio driver for OS/2 (c) Netlabs 2005\0x0\0x0\0xb";47 48 46 const char ERR_ERROR[] = "ERROR: "; 49 47 const char ERR_LOCK[] = "Unable to lock 32 bit data & code segments, exiting...\r\r\n"; … … 51 49 const char ERR_NAMES[] = "Query names failed\r\r\n"; 52 50 const char szALSA[] = "\r\n\r\nOS/2 Universal Audio Core Driver v"ALSA_VERSION"\r\n"; 51 53 52 const char szCopyRight1[]= "Copyright 2000-2002 InnoTek Systemberatung GmbH\r\n"; 54 53 const char szCopyRight2[]= "Copyright 2000-2002 The ALSA Project\r\n\r\n"; 54 const char szCopyRight3[]= "Copyright 2005 Netlabs http://www.netlabs.org\r\n"; 55 55 //const char szCopyRight3[]= "Maintained by http://os2.kiev.ua/en/uniaud.php\r\n\r\n"; 56 56 57 const char szCodeStartEnd[] = "Code 0x%0x - 0x%0x\r\n\r\n"; 57 58 const char szMixerFound[]= "Detected Mixer: "; … … 218 219 WriteString(szALSA, sizeof(szALSA)-1); 219 220 WriteString(szCopyRight1, sizeof(szCopyRight1)-1); 221 WriteString(szCopyRight3, sizeof(szCopyRight3)-1); 220 222 WriteString(szCopyRight2, sizeof(szCopyRight2)-1); 221 223 } 222 224 223 // if(fDebug) { 224 if(1) { 225 if(fDebug) { 225 226 sprintf(debugmsg, szCodeStartEnd, OffsetBeginCS32, OffsetFinalCS32); 226 227 WriteString(debugmsg, strlen(debugmsg));  - 
      
GPL/trunk/drv32/irq.cpp
r34 r63 35 35 36 36 // List of handlers here. 37 static FARPTR16 *pISR[ NUM_IRQLEVELS] = {38 NULL,39 NULL,40 NULL,37 static FARPTR16 *pISR[MAX_IRQ_SLOTS] = { 38 &ISR00, 39 &ISR01, 40 &ISR02, 41 41 &ISR03, 42 42 &ISR04, 43 43 &ISR05, 44 NULL, 45 &ISR07, 46 NULL, 47 &ISR09, 48 &ISR10, 49 &ISR11, 50 &ISR12, 51 &ISR13, 52 &ISR14, 53 &ISR15, 44 &ISR06, 45 &ISR07 54 46 }; 55 56 static PFNIRQ pfnAlsaIRQHandler = NULL;57 47 58 48 //****************************************************************************** 59 49 //****************************************************************************** 60 BOOL RMSetIrq(ULONG ulIrq, BOOL fShared, PFNIRQ pfnIrqHandler)50 BOOL ALSA_SetIrq(ULONG ulIrq, ULONG ulSlotNo, BOOL fShared) 61 51 { 62 52 USHORT rc = 1; 63 53 64 if( pISR[ulIrq] == NULL) {54 if( ulSlotNo >= MAX_IRQ_SLOTS ) { 65 55 DebugInt3(); 66 56 return FALSE; 67 57 } 68 if(fShared) 58 59 if(fShared) 69 60 { 70 rc = DevIRQSet((WORD16) *pISR[ ulIrq],61 rc = DevIRQSet((WORD16) *pISR[ulSlotNo], 71 62 (WORD16)ulIrq, 72 63 1 ); // first try shared shared 73 64 } 65 74 66 if (rc != 0) { // If error ... 75 rc = DevIRQSet((WORD16) *pISR[ ulIrq],67 rc = DevIRQSet((WORD16) *pISR[ulSlotNo], 76 68 (WORD16)ulIrq, 77 69 0); // failed, so try exclusive instead 78 70 } 71 79 72 if (rc != 0) { // If error ... 80 dprintf(("ERROR: RMSetIrq %d %d %x FAILED!!", ulIrq, fShared, pfnIrqHandler));73 dprintf(("ERROR: RMSetIrq %d %d %x FAILED!!", ulIrq, fShared, ulSlotNo)); 81 74 DebugInt3(); 82 75 return FALSE; 83 76 } 84 //Always called with the same handler 85 if(pfnAlsaIRQHandler && (pfnAlsaIRQHandler != pfnIrqHandler)) { 86 DebugInt3(); 87 return FALSE; 88 } 89 pfnAlsaIRQHandler = pfnIrqHandler; 77 90 78 return TRUE; 91 79 } 92 80 //****************************************************************************** 93 81 //****************************************************************************** 94 BOOL RMFreeIrq(ULONG ulIrq)82 BOOL ALSA_FreeIrq(ULONG ulIrq) 95 83 { 96 84 return (DevIRQClear((WORD16)ulIrq) == 0); … … 98 86 //****************************************************************************** 99 87 //****************************************************************************** 100 ULONG ALSA_Interrupt(ULONG irqnr);88 ULONG ALSA_Interrupt(ULONG ulSlotNo); 101 89 #pragma aux ALSA_Interrupt "ALSA_Interrupt" parm [ebx] 102 ULONG ALSA_Interrupt(ULONG irqnr)90 ULONG ALSA_Interrupt(ULONG ulSlotNo) 103 91 { 104 if(pfnAlsaIRQHandler == NULL) { 105 DebugInt3(); 106 return FALSE; 107 } 108 #ifdef DEBUG 109 dprintf2(("irq %d",irqnr)); 110 #endif 111 if(pfnAlsaIRQHandler(irqnr)) { 112 cli(); 113 // We've cleared all service requests. Send EOI and clear 114 // the carry flag (tells OS/2 kernel that Int was handled). 115 DevEOI( (WORD16)irqnr ); 116 return TRUE; 92 ULONG ulIrqNo; 93 94 if( process_interrupt(ulSlotNo, &ulIrqNo) ) { 95 cli(); 96 // We've cleared all service requests. Send EOI and clear 97 // the carry flag (tells OS/2 kernel that Int was handled). 98 DevEOI( (WORD16)ulIrqNo ); 99 return TRUE; 117 100 } 118 101 // Indicate Interrupt not serviced by setting carry flag before  - 
      
GPL/trunk/drv32/irq.h
r34 r63 25 25 #define __IRQ_H__ 26 26 27 //#define NUM_IRQLEVELS 16 28 #define NUM_IRQLEVELS 256 //ACPI 29 27 extern "C" FARPTR16 ISR00; 28 extern "C" FARPTR16 ISR01; 29 extern "C" FARPTR16 ISR02; 30 30 extern "C" FARPTR16 ISR03; 31 31 extern "C" FARPTR16 ISR04; 32 32 extern "C" FARPTR16 ISR05; 33 extern "C" FARPTR16 ISR06; 33 34 extern "C" FARPTR16 ISR07; 34 extern "C" FARPTR16 ISR09;35 extern "C" FARPTR16 ISR10;36 extern "C" FARPTR16 ISR11;37 extern "C" FARPTR16 ISR12;38 extern "C" FARPTR16 ISR13;39 extern "C" FARPTR16 ISR14;40 extern "C" FARPTR16 ISR15;41 35 42 36 #endif //__IRQ_H__  - 
      
GPL/trunk/drv32/makefile.os2
r62 r63 36 36 TARGET = uniaud32 37 37 LNKFILE = $(OBJDIR)\$(TARGET).lrf 38 DEFFILE = $(OBJDIR)\$(TARGET).def 38 39 MAKEFILE = makefile.os2 39 40 … … 60 61 FILE4 = devhlp.obj 61 62 FILE5 = idc.obj dispatch.obj 62 FILE6 = rm .obj irq.obj util.obj63 FILE6 = rmhelp.obj irq.obj util.obj 63 64 FILE7 = impdos.lib 64 65 !if "$(KEE)" == "1" … … 80 81 81 82 !ifdef USE_WLINK 82 $( OBJDIR)\$(TARGET).lrf: $(MAKEFILE)83 $(LNKFILE): $(MAKEFILE) 83 84 @%write $^@ option quiet 84 85 @%write $^@ option verbose … … 87 88 @%write $^@ option alignment=16 88 89 @%write $^@ option map=$(WMAPNAME) 89 @%write $^@ option description '@$#$(_VENDOR):$(_VERSION)$#@' 90 !if "$(KEE)" == "1" 91 @%write $^@ option description '@$#$(BLDLVL_VENDOR):$(BLDLVL_REVISION)$#@$#$#1$#$# $(BLDLVL_DATETIME) $(BLDLVL_MACHINE)::::$(BLDLVL_FILEVER)::@@$(BLDLVL_PRODUCT) (KEE)' 92 !else 93 @%write $^@ option description '@$#$(BLDLVL_VENDOR):$(BLDLVL_REVISION)$#@$#$#1$#$# $(BLDLVL_DATETIME) $(BLDLVL_MACHINE)::::$(BLDLVL_FILEVER)::@@$(BLDLVL_PRODUCT) (W4)' 94 !endif 90 95 @%write $^@ name $(OBJDIR)\$(TARGET).sys 91 96 @for %f in ($(FILES)) do @%append $^@ file $(OBJDIR)\%f … … 93 98 @%write $^@ library $(%WATCOM)\lib386\os2\clib3r.lib 94 99 !else 95 $( OBJDIR)\$(TARGET).lrf: $(MAKEFILE)100 $(LNKFILE): $(MAKEFILE) 96 101 @%write $^@ /OUT:$(OBJDIR)\$(TARGET).sys 97 102 @%write $^@ /MAP:$(OBJDIR)\$(TARGET).map … … 99 104 @for %f in ($(LIBS)) do @%append $^@ %f 100 105 @%write $^@ $(%WATCOM)\lib386\os2\clib3r.lib 106 @%write $^@ $(DEFFILE) 101 107 !endif 102 108 103 $(OBJDIR)\$(TARGET).def: $(MAKEFILE) 104 @%write $^@ LIBRARY UNIAUD32 105 @%write $^@ DESCRIPTION "@$#Netlabs:1.13$#@Universal audio driver for OS/2 (c) Netlabs 2005" 106 @%write $^@ PROTMODE 109 $(OBJDIR)\$(TARGET).sys: $(LNKFILE) $(FILES) $(LIBS) 110 !if "$(KEE)" == "1" 111 @%write $(DEFFILE) description '@$#$(BLDLVL_VENDOR):$(BLDLVL_REVISION)$#@$#$#1$#$# $(BLDLVL_DATETIME) $(BLDLVL_MACHINE)::::$(BLDLVL_FILEVER)::@@$(BLDLVL_PRODUCT) (KEE)' 112 !else 113 @%write $(DEFFILE) description '@$#$(BLDLVL_VENDOR):$(BLDLVL_REVISION)$#@$#$#1$#$# $(BLDLVL_DATETIME) $(BLDLVL_MACHINE)::::$(BLDLVL_FILEVER)::@@$(BLDLVL_PRODUCT) (W4)' 114 !endif 107 115 108 $(OBJDIR)\$(TARGET).sys: $(OBJDIR)\$(TARGET).lrf $(LNKFILE) $(FILES) $(LIBS) $(OBJDIR)\$(TARGET).def 109 $(LINK) @$(OBJDIR)\$(TARGET).lrf $(OBJDIR)\$(TARGET).DEF 116 $(LINK) @$(LNKFILE) 117 110 118 copy $(OBJDIR)\$(TARGET).sys $(ALSA_BIN) 111 119 !if "$(KEE)" == "1" … … 130 138 -@rm *.err 2>nul 131 139 @cd $(OBJDIR) 132 -rm *.obj *.lnk *. sys *.sym *.lst *.map *.wmap *.lib 2>nul140 -rm *.obj *.lnk *.lrf *.def *.sys *.sym *.lst *.map *.wmap *.lib 2>nul 133 141 @cd ..\..  - 
      
GPL/trunk/drv32/startup.asm
r32 r63 904 904 905 905 ALIGN 2 906 ISR00_16 proc far 907 push ebx 908 mov ebx, 0 909 call far ptr FLAT:Interrupt32 910 pop ebx 911 retf 912 ISR00_16 endp 913 914 ALIGN 2 915 ISR01_16 proc far 916 push ebx 917 mov ebx, 1 918 call far ptr FLAT:Interrupt32 919 pop ebx 920 retf 921 ISR01_16 endp 922 923 ALIGN 2 924 ISR02_16 proc far 925 push ebx 926 mov ebx, 2 927 call far ptr FLAT:Interrupt32 928 pop ebx 929 retf 930 ISR02_16 endp 931 932 ALIGN 2 906 933 ISR03_16 proc far 907 934 push ebx … … 931 958 932 959 ALIGN 2 960 ISR06_16 proc far 961 push ebx 962 mov ebx, 6 963 call far ptr FLAT:Interrupt32 964 pop ebx 965 retf 966 ISR06_16 endp 967 968 ALIGN 2 933 969 ISR07_16 proc far 934 970 push ebx … … 938 974 retf 939 975 ISR07_16 endp 940 941 ALIGN 2942 ISR09_16 proc far943 push ebx944 mov ebx, 9945 call far ptr FLAT:Interrupt32946 pop ebx947 retf948 ISR09_16 endp949 950 ALIGN 2951 ISR10_16 proc far952 push ebx953 mov ebx, 10954 call far ptr FLAT:Interrupt32955 pop ebx956 retf957 ISR10_16 endp958 959 ALIGN 2960 ISR11_16 proc far961 push ebx962 mov ebx, 11963 call far ptr FLAT:Interrupt32964 pop ebx965 retf966 ISR11_16 endp967 968 ALIGN 2969 ISR12_16 proc far970 push ebx971 mov ebx, 12972 call far ptr FLAT:Interrupt32973 pop ebx974 retf975 ISR12_16 endp976 977 ALIGN 2978 ISR13_16 proc far979 push ebx980 mov ebx, 13981 call far ptr FLAT:Interrupt32982 pop ebx983 retf984 ISR13_16 endp985 986 ALIGN 2987 ISR14_16 proc far988 push ebx989 mov ebx, 14990 call far ptr FLAT:Interrupt32991 pop ebx992 retf993 ISR14_16 endp994 995 ALIGN 2996 ISR15_16 proc far997 push ebx998 mov ebx, 15999 call far ptr FLAT:Interrupt321000 pop ebx1001 retf1002 ISR15_16 endp1003 976 1004 977 ;end of 16 bits code segment … … 1541 1514 public RMHandleToResourceHandleList1632 1542 1515 public _TimerHandler16 1516 public _ISR00 1517 public _ISR01 1518 public _ISR02 1543 1519 public _ISR03 1544 1520 public _ISR04 1545 1521 public _ISR05 1522 public _ISR06 1546 1523 public _ISR07 1547 public _ISR091548 public _ISR101549 public _ISR111550 public _ISR121551 public _ISR131552 public _ISR141553 public _ISR151554 1524 1555 1525 IFDEF FLATSTACK … … 1628 1598 1629 1599 ;16:16 addresses of interrupt dispatchers 1600 _ISR00 dw OFFSET CODE16:ISR00_16 1601 dw SEG CODE16:ISR00_16 1602 _ISR01 dw OFFSET CODE16:ISR01_16 1603 dw SEG CODE16:ISR01_16 1604 _ISR02 dw OFFSET CODE16:ISR02_16 1605 dw SEG CODE16:ISR02_16 1630 1606 _ISR03 dw OFFSET CODE16:ISR03_16 1631 1607 dw SEG CODE16:ISR03_16 … … 1634 1610 _ISR05 dw OFFSET CODE16:ISR05_16 1635 1611 dw SEG CODE16:ISR05_16 1612 _ISR06 dw OFFSET CODE16:ISR06_16 1613 dw SEG CODE16:ISR06_16 1636 1614 _ISR07 dw OFFSET CODE16:ISR07_16 1637 1615 dw SEG CODE16:ISR07_16 1638 _ISR09 dw OFFSET CODE16:ISR09_161639 dw SEG CODE16:ISR09_161640 _ISR10 dw OFFSET CODE16:ISR10_161641 dw SEG CODE16:ISR10_161642 _ISR11 dw OFFSET CODE16:ISR11_161643 dw SEG CODE16:ISR11_161644 _ISR12 dw OFFSET CODE16:ISR12_161645 dw SEG CODE16:ISR12_161646 _ISR13 dw OFFSET CODE16:ISR13_161647 dw SEG CODE16:ISR13_161648 _ISR14 dw OFFSET CODE16:ISR14_161649 dw SEG CODE16:ISR14_161650 _ISR15 dw OFFSET CODE16:ISR15_161651 dw SEG CODE16:ISR15_161652 1616 DATA32 ends 1653 1617  - 
      
GPL/trunk/drv32/util.cpp
r32 r63 22 22 * 23 23 */ 24 #define INCL_NOPMAPI 25 #define INCL_DOSINFOSEG 26 #include <os2.h> 24 27 25 26 #include "rm.hpp" // Will include os2.h, etc.27 28 #include <devhelp.h> 28 29 #include <devinfo.h>  
  Note:
 See   TracChangeset
 for help on using the changeset viewer.
  