home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / asmlib.zip / SYSSOFT.ASM < prev    next >
Assembly Source File  |  1992-06-04  |  3KB  |  169 lines

  1. include    asm.inc
  2.  
  3. public    syssoft
  4. extrn    isems:proc, ismouse:proc, isherc:proc
  5. extrn    floppies:proc, floppytype:proc, isansi:proc
  6. extrn    getkey:proc, getcrt:proc, path:proc
  7. extrn    getcpu:proc, mathchip:proc, exename:proc
  8. extrn    wclear:proc, wframe:proc, tprint:proc
  9. extrn    hfree:proc, strndup:proc
  10.  
  11. .data
  12. extrn    pspseg:word
  13. notinstalled    db 'Not installed',0
  14.  
  15. i8086        db '8086 or 8088',0
  16. i186        db '80186 or 80188',0
  17. i286        db 'i286',0
  18. i386        db '386',0
  19. i486        db '486',0
  20.  
  21. cpu_table    dw i8086
  22.         dw i186
  23.         dw i286
  24.         dw i386
  25.         dw i486
  26.  
  27. no87        db 'none',0
  28. mc8087        db '8087',0
  29. mc287        db '287',0
  30. mc387        db '387',0
  31. mc487        db '487',0
  32.  
  33. mathchip_table    dw no87
  34.         dw mc8087
  35.         dw mc287
  36.         dw mc387
  37.         dw mc487
  38.  
  39. ; window corner data
  40. r0    dw 3
  41. c0    dw 5
  42. r1    dw 23
  43. c1    dw 74
  44. window_color    db 0Ch        ; bright red, black background
  45. text_color    db 07h
  46.  
  47. ; labels
  48. labels    db 'CPU:          ',0
  49. size_of_label    equ $-labels
  50.     db '80x87:        ',0
  51.     db 'EMS:          ',0
  52.     db 'Program name: ',0
  53.     db 'ANSI:         ',0
  54.     db 'Path:         ',0
  55. number_of_labels    equ ($-labels)/size_of_label
  56.  
  57. isinstalled    db 'installed and active',0
  58.  
  59. .code
  60. syssoft    proc
  61. ; count the number of PATHs to determine size of window
  62.     xor    ax,ax
  63. count_path:
  64.     mov    es,pspseg
  65.     call    path
  66.     jcxz    done_counting
  67.     inc    ax
  68.     jmp    count_path
  69. done_counting:
  70.     add    ax,number_of_labels
  71.     add    ax,r0
  72.     mov    r1,ax
  73.  
  74. ; clear a window for the system info
  75.     lea    bx,r0
  76.     mov    ah,window_color
  77.     call    wclear
  78.     mov    al,-1        ; double-lined window frame
  79.     call    wframe
  80.  
  81. ; print labels at left side of window
  82.     mov    cx,number_of_labels
  83.     mov    dh,byte ptr r0
  84.     mov    dl,byte ptr c0
  85.     inc    dl
  86.     lea    si,labels
  87.     mov    ah,text_color
  88. label_loop:
  89.     inc    dh
  90.     call    tprint
  91.     add    si,size_of_label
  92.     loop    label_loop
  93.  
  94. ; determine CPU type
  95.     call    getcpu
  96.     mov    bx,ax
  97.     shl    bx,1
  98.     mov    si,cpu_table[bx]
  99.     mov    dh,byte ptr r0
  100.     inc    dh
  101.     mov    dl,byte ptr c0
  102.     add    dl,size_of_label
  103.     mov    ah,text_color
  104.     call    tprint
  105.  
  106. ; math coprocessor
  107.     call    mathchip
  108.     mov    bx,ax
  109.     shl    bx,1
  110.     mov    si,mathchip_table[bx]
  111.     inc    dh
  112.     mov    ah,text_color
  113.     call    tprint
  114.  
  115. ; EMS memory
  116.     inc    dh
  117.     call    isems
  118.     lea    si,notinstalled
  119.     jc    print_ems
  120.     lea    si,isinstalled
  121. print_ems:
  122.     mov    ah,text_color
  123.     call    tprint
  124.  
  125. ; program name
  126.     inc    dh
  127.     mov    es,pspseg
  128.     call    exename        ; returns ES:[BX] pointing to .EXE name
  129.     mov    si,bx
  130.     mov    ah,text_color
  131.     push    ds
  132.     push    es
  133.     pop    ds        ; DS:[SI] points to .EXE name
  134.     call    tprint
  135.     pop    ds
  136.  
  137. ; ANSI
  138.     inc    dh
  139.     call    isansi
  140.     lea    si,isinstalled
  141.     jnc    print_ansi
  142.     lea    si,notinstalled
  143. print_ansi:
  144.     mov    ah,text_color
  145.     call    tprint
  146.  
  147. ; path
  148.     xor    ax,ax
  149. next_path:
  150.     mov    es,pspseg
  151.     call    path
  152.     jcxz    no_more_paths
  153.     call    strndup
  154.     mov    si,bx
  155.     inc    dh
  156.     push    ax
  157.     mov    ah,text_color
  158.     call    tprint
  159.     call    hfree
  160.     pop    ax
  161.     inc    ax
  162.     jmp    next_path
  163.  
  164. no_more_paths:
  165.     call    getkey
  166.     ret
  167. syssoft    endp
  168.     end
  169.