home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / C-ASM_VI.ARJ / PROGASM.ZIP / PROG058.ASM < prev    next >
Assembly Source File  |  1988-04-10  |  2KB  |  54 lines

  1.  
  2. ;************************************************************************
  3. ; Use BIOS to get a pointer to the ROM base character generator         *
  4. ; Works only for standard text modes 0-3 and 7                          *
  5. ; returns zero for any other mode                                       *
  6. ; Exit: DX,AX   - Pointer to the character generator                    *
  7. ;************************************************************************
  8.  
  9.         PUBLIC  _BIOS_Get_ROM_CG
  10.  
  11. _BIOS_Get_ROM_CG PROC NEAR
  12.         ;--- Fetch current mode
  13.  
  14.         PUSH    BP
  15.         PUSH    ES                      ;Preserve segment registers
  16.         XOR     AX,AX                   ;Point to BIOS data area
  17.         MOV     ES,AX
  18.         TEST    BYTE PTR ES:[BIOS_Equipment],2   ;Is mono display attached?
  19.         JNZ     CG_8x14                 ;...Yes, go fetch 8x14 set
  20.         CMP     BYTE PTR ES:[BIOS_Switch],9      ;Is Enhanced display attached?
  21.         JE      CG_8x14                 ;...Yes, go fetch 8x14 set
  22.         CMP     BYTE PTR ES:[BIOS_Switch],3
  23.         JE      CG_8x14
  24.  
  25.         ;--- Return pointer to 8x8 character generator
  26.  
  27. CG_8x8:
  28.         MOV     AH,11H                  ;Function = CHARACTER GENERATOR
  29.         MOV     AL,30H                  ;Subfunction = GET INFO
  30.         MOV     BH,3
  31.         INT     10H                     ;Ask BIOS to fetch the pointer
  32.         JMP     CG_Done
  33.  
  34.         ;--- Return pointer to 8x14 character generator
  35. CG_8x14:
  36.         MOV     AH,11H                  ;Function = CHARACTER GENERATOR
  37.         MOV     AL,30H                  ;Subfunction = GET INFO
  38.         MOV     BH,2
  39.         INT     10H                     ;Ask BIOS to fetch the pointer
  40.         JMP     CG_Done
  41.  
  42.  
  43.         XOR     AX,AX                   ;Return zero for unknown modes
  44.         MOV     ES,AX
  45.         MOV     BP,AX
  46.  
  47. CG_Done:
  48.         MOV     DX,ES                   ;Copy pointer into DX,AX pair
  49.         MOV     AX,BP
  50.         POP     ES
  51.         POP     BP                      ;Restore segment registers
  52.         RET
  53. _BIOS_Get_ROM_CG ENDP
  54.