home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / thnk11.zip / THNKTEST.ASM next >
Assembly Source File  |  1995-03-24  |  7KB  |  337 lines

  1.     TITLE    THNKTEST.C
  2.     .386
  3.     .387
  4.     INCLUDELIB os2386.lib
  5.     INCLUDELIB dde4sbsi.lib
  6. CODE32    SEGMENT DWORD USE32 PUBLIC 'CODE'
  7. CODE32    ENDS
  8. DATA32    SEGMENT DWORD USE32 PUBLIC 'DATA'
  9. DATA32    ENDS
  10. CONST32    SEGMENT DWORD USE32 PUBLIC 'CONST'
  11. CONST32    ENDS
  12. BSS32    SEGMENT DWORD USE32 PUBLIC 'BSS'
  13. BSS32    ENDS
  14. DGROUP    GROUP CONST32, BSS32, DATA32
  15.     ASSUME    CS:FLAT, DS:FLAT, SS:FLAT, ES:FLAT
  16.     EXTRN    DosQFileMode:PROC
  17.     EXTRN    DosSetFileMode:PROC
  18.     EXTRN    _printfieee:PROC
  19.     EXTRN    VioSetCurPos:PROC
  20.     EXTRN    VioScrollUp:PROC
  21.     EXTRN    KbdGetStatus:PROC
  22.     EXTRN    VioWrtTTY:PROC
  23.     EXTRN    strlen:PROC
  24.     EXTRN    _sprintfieee:PROC
  25.     EXTRN    toupper:PROC
  26.     EXTRN    KbdCharIn:PROC
  27.     EXTRN    _exeentry:PROC
  28. DATA32    SEGMENT
  29. @2fstr    DB "This is a dummy string",0H,0H
  30. @31string    DB "This is a test of the Vi"
  31. DB "oWrtTTY function",0dH,0aH,0H,0H
  32. @STAT1    DB "THNKTEST.C",0H
  33.     ALIGN 04H
  34. @STAT2    DB "THNKTEST.C",0H
  35.     ALIGN 04H
  36. @STAT3    DB "The file set mode status"
  37. DB " was %li ",0aH,0dH,0H
  38. @STAT4    DB "The file set mode status"
  39. DB " was %li ",0aH,0dH,0H
  40. @STAT5    DB "Echo is on",0aH,0dH,0H
  41.     ALIGN 04H
  42. @STAT6    DB "Echo is off",0aH,0dH,0H
  43.     ALIGN 04H
  44. @STAT7    DB "%c",0aH,0H
  45. @STAT8    DB "%i",0aH,0H
  46. @STAT9    DB "The length of string one"
  47. DB " is %i",0dH,0aH,0H
  48.     ALIGN 04H
  49. @STATa    DB "The uppercase response t"
  50. DB "o Y is: %c",0aH,0dH,0H
  51.     ALIGN 04H
  52. @STATb    DB "The uppercase response t"
  53. DB "o y is: %c",0aH,0dH,0H
  54.     DD    _exeentry
  55. DATA32    ENDS
  56. BSS32    SEGMENT
  57.     ALIGN 04H
  58. COMM    dummy:BYTE:010001H
  59. BSS32    ENDS
  60. CONST32    SEGMENT
  61. CONST32    ENDS
  62. CODE32    SEGMENT
  63.  
  64. ;***** 16 void    main()
  65.     ALIGN 04H
  66.  
  67.     PUBLIC main
  68. main    PROC
  69.     PUSH    EBP
  70.     MOV    EBP,ESP
  71.     SUB    ESP,0c0H
  72.  
  73. ;***** 25         bCell[0] = 0x20;
  74.     MOV    BYTE PTR [EBP-0aH],020H;    bCell
  75.  
  76. ;***** 26         bCell[1] = 0x22;
  77.     MOV    BYTE PTR [EBP-09H],022H;    bCell
  78.  
  79. ;***** 27     DosQFileMode("THNKTEST.C" ,&usAttribute, 0) ;
  80.     PUSH    0H
  81.     LEA    EAX,[EBP-010H];    usAttribute
  82.     PUSH    EAX
  83.     PUSH    OFFSET FLAT:@STAT1
  84.     MOV    AL,03H
  85.     CALL    DosQFileMode
  86.  
  87. ;***** 28     i = DosSetFileMode("THNKTEST.C",usAttribute, 0) ;
  88.     PUSH    0H
  89.     PUSH    DWORD PTR [EBP-010H];    usAttribute
  90.     PUSH    OFFSET FLAT:@STAT2
  91.     MOV    AL,03H
  92.     CALL    DosSetFileMode
  93.     MOV    [EBP-08H],EAX;    i
  94.  
  95. ;***** 29     printf("The file set mode status was %li \n\r",i) ;
  96.     PUSH    DWORD PTR [EBP-08H];    i
  97.     MOV    EAX,OFFSET FLAT:@STAT3
  98.     SUB    ESP,04H
  99.     CALL    _printfieee
  100.  
  101. ;***** 30         Kbdinfo.cb = sizeof (Kbdinfo) ;
  102.     MOV    WORD PTR [EBP-01cH],0aH;    Kbdinfo
  103.  
  104. ;***** 31         VioSetCurPos(5,5,0);
  105.     PUSH    0H
  106.     PUSH    05H
  107.     PUSH    05H
  108.     MOV    AL,03H
  109.     CALL    VioSetCurPos
  110.  
  111. ;***** 32         VioScrollUp(0,0,0xffff,0xffff,0xffff,bCell,0);
  112.     PUSH    0H
  113.     LEA    EAX,[EBP-0aH];    bCell
  114.     PUSH    EAX
  115.     PUSH    0ffffH
  116.     PUSH    0ffffH
  117.     PUSH    0ffffH
  118.     PUSH    0H
  119.     PUSH    0H
  120.     MOV    AL,07H
  121.     CALL    VioScrollUp
  122.  
  123. ;***** 33     printf("The file set mode status was %li \n\r",i) ;
  124.     PUSH    DWORD PTR [EBP-08H];    i
  125.     MOV    EAX,OFFSET FLAT:@STAT4
  126.     SUB    ESP,04H
  127.     CALL    _printfieee
  128.  
  129. ;***** 34         KbdGetStatus(&Kbdinfo,0);
  130.     PUSH    0H
  131.     LEA    EAX,[EBP-01cH];    Kbdinfo
  132.     PUSH    EAX
  133.     MOV    AL,02H
  134.     CALL    KbdGetStatus
  135.     ADD    ESP,058H
  136.  
  137. ;***** 35         if (Kbdinfo.fsMask & KEYBOARD_ECHO_ON)
  138.     XOR    EAX,EAX
  139.     MOV    AX,[EBP-01aH];    Kbdinfo
  140.     TEST    AL,02H
  141.     JE    BLBL1
  142.  
  143. ;***** 36                 VioWrtTTY("Echo is on\n\r", 12, 0) ;
  144.     PUSH    0H
  145.     PUSH    0cH
  146.     PUSH    OFFSET FLAT:@STAT5
  147.     MOV    AL,03H
  148.     CALL    VioWrtTTY
  149.     ADD    ESP,0cH
  150.     JMP    BLBL2
  151.     ALIGN 04H
  152. BLBL1:
  153.  
  154. ;***** 37         else
  155. ;***** 38                 VioWrtTTY("Echo is off\n\r", 13, 0) ;
  156.     PUSH    0H
  157.     PUSH    0dH
  158.     PUSH    OFFSET FLAT:@STAT6
  159.     MOV    AL,03H
  160.     CALL    VioWrtTTY
  161.     ADD    ESP,0cH
  162. BLBL2:
  163.  
  164. ;***** 39         a = getch() ;
  165.     CALL    getch
  166.     MOV    [EBP-01H],AL;    a
  167.  
  168. ;***** 40         for (i = 0 ;i < 5; i++)
  169.     MOV    DWORD PTR [EBP-08H],0H;    i
  170.     ALIGN 04H
  171. BLBL3:
  172.     CMP    DWORD PTR [EBP-08H],05H;    i
  173.     JGE    BLBL4
  174.  
  175. ;***** 41                 printf("%c\n",a) ;
  176.     XOR    EAX,EAX
  177.     MOV    AL,[EBP-01H];    a
  178.     PUSH    EAX
  179.     MOV    EAX,OFFSET FLAT:@STAT7
  180.     SUB    ESP,04H
  181.     CALL    _printfieee
  182.     ADD    ESP,08H
  183.     MOV    EAX,[EBP-08H];    i
  184.     INC    EAX
  185.     MOV    [EBP-08H],EAX;    i
  186.     JMP    BLBL3
  187.     ALIGN 04H
  188. BLBL4:
  189.  
  190. ;***** 42         i = strlen(string);
  191.     MOV    EAX,OFFSET FLAT:@31string
  192.     CALL    strlen
  193.     MOV    [EBP-08H],EAX;    i
  194.  
  195. ;***** 43         VioWrtTTY(string, i, 0) ;
  196.     PUSH    0H
  197.     MOV    EAX,[EBP-08H];    i
  198.     PUSH    EAX
  199.     PUSH    OFFSET FLAT:@31string
  200.     MOV    AL,03H
  201.     CALL    VioWrtTTY
  202.  
  203. ;***** 44         printf("%i\n",strlen(string));
  204.     MOV    EAX,OFFSET FLAT:@31string
  205.     SUB    ESP,04H
  206.     CALL    strlen
  207.     ADD    ESP,04H
  208.     PUSH    EAX
  209.     MOV    EAX,OFFSET FLAT:@STAT8
  210.     SUB    ESP,04H
  211.     CALL    _printfieee
  212.  
  213. ;***** 45         sprintf(varstring,"The length of string one is %i\r\n",strlen(string));
  214.     MOV    EAX,OFFSET FLAT:@31string
  215.     SUB    ESP,04H
  216.     CALL    strlen
  217.     ADD    ESP,04H
  218.     PUSH    EAX
  219.     MOV    EDX,OFFSET FLAT:@STAT9
  220.     LEA    EAX,[EBP-06cH];    varstring
  221.     SUB    ESP,08H
  222.     CALL    _sprintfieee
  223.  
  224. ;***** 46         VioWrtTTY(varstring,strlen(varstring),0);
  225.     PUSH    0H
  226.     LEA    EAX,[EBP-06cH];    varstring
  227.     SUB    ESP,04H
  228.     CALL    strlen
  229.     ADD    ESP,04H
  230.     PUSH    EAX
  231.     LEA    EAX,[EBP-06cH];    varstring
  232.     PUSH    EAX
  233.     MOV    AL,03H
  234.     CALL    VioWrtTTY
  235.  
  236. ;***** 47         a = 'Y' ;
  237.     MOV    BYTE PTR [EBP-01H],059H;    a
  238.  
  239. ;***** 48         a = toupper(a) ;
  240.     XOR    EAX,EAX
  241.     MOV    AL,[EBP-01H];    a
  242.     CALL    toupper
  243.     TEST    EAX,0400000H
  244.     MOV    [EBP-01H],AL;    a
  245.  
  246. ;***** 49         sprintf(varstring1,"The uppercase response to Y is: %c\n\r",a) ;
  247.     XOR    EAX,EAX
  248.     MOV    AL,[EBP-01H];    a
  249.     PUSH    EAX
  250.     MOV    EDX,OFFSET FLAT:@STATa
  251.     LEA    EAX,[EBP-0bcH];    varstring1
  252.     SUB    ESP,08H
  253.     CALL    _sprintfieee
  254.  
  255. ;***** 50         VioWrtTTY(varstring1,strlen(varstring1),0) ;
  256.     PUSH    0H
  257.     LEA    EAX,[EBP-0bcH];    varstring1
  258.     SUB    ESP,04H
  259.     CALL    strlen
  260.     ADD    ESP,04H
  261.     PUSH    EAX
  262.     LEA    EAX,[EBP-0bcH];    varstring1
  263.     PUSH    EAX
  264.     MOV    AL,03H
  265.     CALL    VioWrtTTY
  266.  
  267. ;***** 51         a = 'y' ;
  268.     MOV    BYTE PTR [EBP-01H],079H;    a
  269.  
  270. ;***** 52         a = toupper(a) ;
  271.     XOR    EAX,EAX
  272.     MOV    AL,[EBP-01H];    a
  273.     CALL    toupper
  274.     TEST    EAX,0400000H
  275.     MOV    [EBP-01H],AL;    a
  276.  
  277. ;***** 53         sprintf(varstring,"The uppercase response to y is: %c\n\r",a) ;
  278.     XOR    EAX,EAX
  279.     MOV    AL,[EBP-01H];    a
  280.     PUSH    EAX
  281.     MOV    EDX,OFFSET FLAT:@STATb
  282.     LEA    EAX,[EBP-06cH];    varstring
  283.     SUB    ESP,08H
  284.     CALL    _sprintfieee
  285.  
  286. ;***** 54         VioWrtTTY(varstring,strlen(varstring),0) ;
  287.     PUSH    0H
  288.     LEA    EAX,[EBP-06cH];    varstring
  289.     SUB    ESP,04H
  290.     CALL    strlen
  291.     ADD    ESP,04H
  292.     PUSH    EAX
  293.     LEA    EAX,[EBP-06cH];    varstring
  294.     PUSH    EAX
  295.     MOV    AL,03H
  296.     CALL    VioWrtTTY
  297.     ADD    ESP,05cH
  298.  
  299. ;***** 55 }
  300. BLBL5:
  301.     ADD    ESP,04H
  302.     LEAVE    
  303.     RET    
  304. main    ENDP
  305.  
  306. ;***** 57 char  getch(void)
  307.     ALIGN 04H
  308.  
  309.     PUBLIC getch
  310. getch    PROC
  311.     PUSH    EBP
  312.     MOV    EBP,ESP
  313.     SUB    ESP,0cH
  314.  
  315. ;***** 60         KbdCharIn( &Kbci,IO_WAIT,0);
  316.     PUSH    0H
  317.     PUSH    0H
  318.     LEA    EAX,[EBP-0cH];    Kbci
  319.     PUSH    EAX
  320.     MOV    AL,03H
  321.     CALL    KbdCharIn
  322.     ADD    ESP,0cH
  323.  
  324. ;***** 61         return Kbci.chChar;
  325.     MOV    AL,[EBP-0cH];    Kbci
  326.     JMP    BLBL6
  327.     ALIGN 04H
  328.  
  329. ;***** 62 }
  330. ;***** 62 
  331. BLBL6:
  332.     LEAVE    
  333.     RET    
  334. getch    ENDP
  335. CODE32    ENDS
  336. END
  337.