Content created by David Beem. Modified by Tomáš Slavotínek. Introduction In many of the PS/2 routines you may need to check if the system is a Micro Channel computer. This routine does that check, setting the Carry flag if the system does not have the Micro Channel bus. If it is a Micro Channel system, the Carry flag is clear and the AL register holds the number of Micro Channel 'slots'. Be aware that some of the system planar resources may be identified as a 'slot'. This routine becomes harder in BASIC or QB (the version included with MS-DOS) with the lack of the CALL INTERRUPT statement. IBM moved the "Get Configuration" table on some of the PS/2s (it started at F000:E6F5h on older IBM systems), otherwise a PEEK at the the particular bit in BIOS could be used. One possible way around this is to POKE an Assembly routine into memory and then execute it. Assembly Routine ;---------------------------------------------- ; CheckMCA Assembly routine ; ; This routine checks whether the system has a ; Micro Channel (MCA) bus. ; ; Entry: ; None ; ; Exit: ; Carry flag clear if Micro Channel bus ; AL = Number of MCA slots ; Carry flag set if not Micro Channel bus ; AL = 0 ; ;---------------------------------------------- CheckMCA proc near cli mov AH,C0h int 15h mov AL,0 jc NotMCA stc test byte ptr ES:[BX+05],02 jz NotMCA out 75h,01 mov AL,8Eh out 74h,AL in AL,76h clc NotMCA: sti CheckMCA endp |