home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / caway349.zip / MISC / STRESS2.ASM < prev    next >
Assembly Source File  |  1995-04-08  |  10KB  |  699 lines

  1. ; STRESS2.ASM program
  2. .model medium
  3. dosseg
  4. CYCLECOUNT  EQU 70
  5. public  storage
  6. .stack 400h
  7. .data
  8. counter DW  0
  9. toggle  DB  0
  10. CheckValues    DD    0
  11.             DD    12345678h
  12.             DD    23456789h
  13.             DD    3456789ah
  14.             DD    456789abh
  15.             DD    56789abch
  16.             DD    6789abcdh
  17.             DD    789abcdeh
  18.             DD    89abcdefh
  19.             DD    9abcdef0h
  20.             DD    0abcdef01h
  21.             DD    0bcdef012h
  22.             DB    'End of check values'
  23. .data?
  24. storage DW CYCLECOUNT DUP (12 DUP (?))
  25.     DB    'Hi Michael!'    ; debug signature check
  26. .const
  27. ErrorText   DB  "Error",13,10
  28. WorksText   DB  "Works",13,10
  29. CycleText   DB  'Cycle',13,10
  30. CycleAgainText  DB  'Cycle again',13,10
  31. .code
  32. .386p
  33. start:
  34.     mov ax,DGROUP
  35.     mov ds,ax
  36.     mov es,ax
  37.     mov di,OFFSET DGROUP:storage
  38.  
  39. looper:
  40.     mov dx,OFFSET DGROUP:CycleText
  41.     mov cx,7
  42.     xor toggle,1
  43.     jne show
  44.     mov dx,OFFSET DGROUP:CycleAgainText
  45.     mov cx,13
  46.  
  47. show:
  48.     mov bx,1
  49.     mov ah,40h
  50.     int 21h
  51.  
  52. ; 1K
  53.     mov dx,1*1024
  54.     xor cx,cx
  55.     mov ax,0ff0bh
  56.     int 31h
  57.     mov    cx,dx
  58.     mov dx,1
  59.     jc  error
  60.     mov ax,bx
  61.     stosw
  62.     mov    dx,30
  63.     lsl    ax,bx
  64.     inc    ax
  65.     cmp    ax,cx
  66.     jne    error
  67.     push    di
  68.     push    es
  69.     mov    es,bx
  70.     mov    cx,(1*1024)/4
  71.     xor    di,di
  72.     mov    eax,0
  73.     rep    stosd
  74.     pop    es
  75.     pop    di
  76.  
  77. ; 3K
  78.     mov dx,3*1024
  79.     xor cx,cx
  80.     mov ax,0ff0bh
  81.     int 31h
  82.     mov    cx,dx
  83.     mov dx,2
  84.     jc  error
  85.     mov ax,bx
  86.     stosw
  87.     mov    dx,31
  88.     lsl    ax,bx
  89.     inc    ax
  90.     cmp    ax,cx
  91.     jne    error
  92.     push    di
  93.     push    es
  94.     mov    es,bx
  95.     mov    cx,(3*1024)/4
  96.     xor    di,di
  97.     mov    eax,12345678h
  98.     rep    stosd
  99.     pop    es
  100.     pop    di
  101.  
  102. ; 4K
  103.     mov dx,4*1024
  104.     xor cx,cx
  105.     mov ax,0ff0bh
  106.     int 31h
  107.     mov    cx,dx
  108.     mov dx,3
  109.     jc  error
  110.     mov ax,bx
  111.     stosw
  112.     mov    dx,32
  113.     lsl    ax,bx
  114.     inc    ax
  115.     cmp    ax,cx
  116.     jne    error
  117.     push    di
  118.     push    es
  119.     mov    es,bx
  120.     mov    cx,(4*1024)/4
  121.     xor    di,di
  122.     mov    eax,23456789h
  123.     rep    stosd
  124.     pop    es
  125.     pop    di
  126.  
  127. ; 5K
  128.     mov dx,5*1024
  129.     xor cx,cx
  130.     mov ax,0ff0bh
  131.     int 31h
  132.     mov    cx,dx
  133.     mov dx,4
  134.     jc  error
  135.     mov ax,bx
  136.     stosw
  137.     mov    dx,33
  138.     lsl    ax,bx
  139.     inc    ax
  140.     cmp    ax,cx
  141.     jne    error
  142.     push    di
  143.     push    es
  144.     mov    es,bx
  145.     mov    cx,(5*1024)/4
  146.     xor    di,di
  147.     mov    eax,3456789ah
  148.     rep    stosd
  149.     pop    es
  150.     pop    di
  151.  
  152. ; 15K
  153.     mov dx,15*1024
  154.     xor cx,cx
  155.     mov ax,0ff0bh
  156.     int 31h
  157.     mov    cx,dx
  158.     mov dx,5
  159.     jc  error
  160.     mov ax,bx
  161.     stosw
  162.     mov    dx,34
  163.     lsl    ax,bx
  164.     inc    ax
  165.     cmp    ax,cx
  166.     jne    error
  167.     push    di
  168.     push    es
  169.     mov    es,bx
  170.     mov    cx,(15*1024)/4
  171.     xor    di,di
  172.     mov    eax,456789abh
  173.     rep    stosd
  174.     pop    es
  175.     pop    di
  176.  
  177. ; 16K
  178.     mov dx,16*1024
  179.     xor cx,cx
  180.     mov ax,0ff0bh
  181.     int 31h
  182.     mov    cx,dx
  183.     mov dx,6
  184.     jc  error
  185.     mov ax,bx
  186.     stosw
  187.     mov    dx,35
  188.     lsl    ax,bx
  189.     inc    ax
  190.     cmp    ax,cx
  191.     jne    error
  192.     push    di
  193.     push    es
  194.     mov    es,bx
  195.     mov    cx,(16*1024)/4
  196.     xor    di,di
  197.     mov    eax,56789abch
  198.     rep    stosd
  199.     pop    es
  200.     pop    di
  201.  
  202. ; 17K
  203.     mov dx,17*1024
  204.     xor cx,cx
  205.     mov ax,0ff0bh
  206.     int 31h
  207.     mov    cx,dx
  208.     mov dx,7
  209.     jc  error
  210.     mov ax,bx
  211.     stosw
  212.     mov    dx,36
  213.     lsl    ax,bx
  214.     inc    ax
  215.     cmp    ax,cx
  216.     jne    error
  217.     push    di
  218.     push    es
  219.     mov    es,bx
  220.     mov    cx,(17*1024)/4
  221.     xor    di,di
  222.     mov    eax,6789abcdh
  223.     rep    stosd
  224.     pop    es
  225.     pop    di
  226.  
  227. ; 31K
  228.     mov dx,31*1024
  229.     xor cx,cx
  230.     mov ax,0ff0bh
  231.     int 31h
  232.     mov    cx,dx
  233.     mov dx,8
  234.     jc  error
  235.     mov ax,bx
  236.     stosw
  237.     mov    dx,37
  238.     lsl    ax,bx
  239.     inc    ax
  240.     cmp    ax,cx
  241.     jne    error
  242.     push    di
  243.     push    es
  244.     mov    es,bx
  245.     mov    cx,(31*1024)/4
  246.     xor    di,di
  247.     mov    eax,789abcdeh
  248.     rep    stosd
  249.     pop    es
  250.     pop    di
  251.  
  252. ; 32K
  253.     mov dx,32*1024
  254.     xor cx,cx
  255.     mov ax,0ff0bh
  256.     int 31h
  257.     mov    cx,dx
  258.     mov dx,9
  259.     jc  error
  260.     mov ax,bx
  261.     stosw
  262.     mov    dx,38
  263.     lsl    ax,bx
  264.     inc    ax
  265.     cmp    ax,cx
  266.     jne    error
  267.     push    di
  268.     push    es
  269.     mov    es,bx
  270.     mov    cx,(32*1024)/4
  271.     xor    di,di
  272.     mov    eax,89abcdefh
  273.     rep    stosd
  274.     pop    es
  275.     pop    di
  276.  
  277. ; 33K
  278.     mov dx,33*1024
  279.     xor cx,cx
  280.     mov ax,0ff0bh
  281.     int 31h
  282.     mov    cx,dx
  283.     mov dx,10
  284.     jc  error
  285.     mov ax,bx
  286.     stosw
  287.     mov    dx,39
  288.     lsl    ax,bx
  289.     inc    ax
  290.     cmp    ax,cx
  291.     jne    error
  292.     push    di
  293.     push    es
  294.     mov    es,bx
  295.     mov    cx,(33*1024)/4
  296.     xor    di,di
  297.     mov    eax,9abcdef0h
  298.     rep    stosd
  299.     pop    es
  300.     pop    di
  301.  
  302. ; 63K
  303.     mov dx,63*1024
  304.     xor cx,cx
  305.     mov ax,0ff0bh
  306.     int 31h
  307.     mov    cx,dx
  308.     mov dx,11
  309.     jc  error
  310.     mov ax,bx
  311.     stosw
  312.     mov    dx,40
  313.     lsl    ax,bx
  314.     inc    ax
  315.     cmp    ax,cx
  316.     jne    error
  317.     push    di
  318.     push    es
  319.     mov    es,bx
  320.     mov    cx,(63*1024)/4
  321.     xor    di,di
  322.     mov    eax,0abcdef01h
  323.     rep    stosd
  324.     pop    es
  325.     pop    di
  326.  
  327. ; 64K
  328.     xor dx,dx
  329.     mov cx,1
  330.     mov ax,0ff0bh
  331.     int 31h
  332.     mov dx,12
  333.     jc  error
  334.     mov ax,bx
  335.     stosw
  336.     mov    dx,41
  337.     movzx    ebx,bx
  338.     lsl    eax,ebx
  339.     inc    eax
  340.     cmp    eax,10000h
  341.     jne    error
  342.     push    di
  343.     push    es
  344.     mov    es,bx
  345.     mov    cx,(64*1024)/4
  346.     xor    di,di
  347.     mov    eax,0bcdef012h
  348.     rep    stosd
  349.     pop    es
  350.     pop    di
  351.  
  352. ; check free memory operations
  353.     mov dx,-1
  354.     mov cx,-1
  355.     mov ax,0ff0bh
  356.     int 31h
  357.  
  358.     mov dx,-2
  359.     mov cx,-1
  360.     mov ax,0ff0bh
  361.     int 31h
  362.  
  363. ; bump cycle, check for end
  364.     inc counter
  365.     mov ax,counter
  366.     cmp ax,CYCLECOUNT
  367.     je  fini
  368.     mov bl,5
  369.     div bl
  370.     or  ah,ah
  371.     jne looper
  372.  
  373. ; resize and release things every fifth cycle
  374. ; free
  375.     mov si,di
  376.     sub si,(2*(2*12))+2
  377.     mov bp,12
  378.  
  379. loop2:
  380.     mov bx,ds:[si]
  381.     mov    WORD PTR ds:[si],0
  382.     sub si,2
  383.     mov ax,0ff0fh
  384.     int 31h
  385.     mov dx,15
  386.     jc  error
  387.     dec bp
  388.     jne loop2
  389.  
  390. ; resize 63K
  391.     mov si,di
  392.     sub si,(3*(2*12))+2
  393.     mov bp,12
  394.  
  395. loop3:
  396.     mov bx,ds:[si]
  397.     sub si,2
  398.     mov dx,63*1024
  399.     xor cx,cx
  400.     mov ax,0ff0dh
  401.     int 31h
  402.     mov    cx,dx
  403.     mov dx,16
  404.     jc  error
  405.     mov    dx,42
  406.     lsl    ax,bx
  407.     inc    ax
  408.     cmp    ax,cx
  409.     jne    error
  410.     push    di
  411.     push    es
  412.     mov    es,bx
  413.     mov    cx,(63*1024)/4
  414.     xor    di,di
  415.     mov    eax,es:[0]
  416.     rep    stosd
  417.     pop    es
  418.     pop    di
  419.     dec bp
  420.     jne loop3
  421.  
  422. ; resize 15K
  423.     mov si,di
  424.     sub si,(4*(2*12))+2
  425.     mov bp,12
  426.  
  427. loop4:
  428.     mov bx,ds:[si]
  429.     sub si,2
  430.     mov dx,15*1024
  431.     xor cx,cx
  432.     mov ax,0ff0dh
  433.     int 31h
  434.     mov    cx,dx
  435.     mov dx,17
  436.     jc  error
  437.     mov    dx,43
  438.     lsl    ax,bx
  439.     inc    ax
  440.     cmp    ax,cx
  441.     jne    error
  442.     push    di
  443.     push    es
  444.     mov    es,bx
  445.     mov    cx,(15*1024)/4
  446.     xor    di,di
  447.     mov    eax,es:[0]
  448.     rep    stosd
  449.     pop    es
  450.     pop    di
  451.     dec bp
  452.     jne loop4
  453.  
  454. ; resize 15K
  455.     mov si,di
  456.     sub si,(3*(2*12))+2
  457.     mov bp,12
  458.  
  459. loop5:
  460.     mov bx,ds:[si]
  461.     sub si,2
  462.     mov dx,15*1024
  463.     xor cx,cx
  464.     mov ax,0ff0dh
  465.     int 31h
  466.     mov    cx,dx
  467.     mov dx,18
  468.     jc  error
  469.     mov    dx,44
  470.     lsl    ax,bx
  471.     inc    ax
  472.     cmp    ax,cx
  473.     jne    error
  474.     push    di
  475.     push    es
  476.     mov    es,bx
  477.     mov    cx,(15*1024)/4
  478.     xor    di,di
  479.     mov    eax,es:[0]
  480.     rep    stosd
  481.     pop    es
  482.     pop    di
  483.     dec bp
  484.     jne loop5
  485.  
  486. ; resize 63K
  487.     mov si,di
  488.     sub si,(4*(2*12))+2
  489.     mov bp,12
  490.  
  491. loop6:
  492.     mov bx,ds:[si]
  493.     sub si,2
  494.     mov dx,63*1024
  495.     xor cx,cx
  496.     mov ax,0ff0dh
  497.     int 31h
  498.     mov    cx,dx
  499.     mov dx,19
  500.     jc  error
  501.     mov    dx,45
  502.     lsl    ax,bx
  503.     inc    ax
  504.     cmp    ax,cx
  505.     jne    error
  506.     push    di
  507.     push    es
  508.     mov    es,bx
  509.     mov    cx,(63*1024)/4
  510.     xor    di,di
  511.     mov    eax,es:[0]
  512.     rep    stosd
  513.     pop    es
  514.     pop    di
  515.     dec bp
  516.     jne loop6
  517.  
  518. ; resize 64K
  519.     mov si,di
  520.     sub si,(3*(2*12))+2
  521.     mov bp,12
  522.  
  523. loop7:
  524.     mov bx,ds:[si]
  525.     sub si,2
  526.     xor dx,dx
  527.     mov cx,1
  528.     mov ax,0ff0dh
  529.     int 31h
  530.     mov dx,20
  531.     jc  error
  532.     mov    dx,46
  533.     movzx    ebx,bx
  534.     lsl    eax,ebx
  535.     inc    eax
  536.     cmp    eax,10000h
  537.     jne    error
  538.     push    di
  539.     push    es
  540.     mov    es,bx
  541.     mov    cx,(64*1024)/4
  542.     xor    di,di
  543.     mov    eax,es:[0]
  544.     rep    stosd
  545.     pop    es
  546.     pop    di
  547.     dec bp
  548.     jne loop7
  549.  
  550. ; resize 1K
  551.     mov si,di
  552.     sub si,(4*(2*12))+2
  553.     mov bp,12
  554.  
  555. loop8:
  556.     mov bx,ds:[si]
  557.     sub si,2
  558.     mov dx,1*1024
  559.     xor cx,cx
  560.     mov ax,0ff0dh
  561.     int 31h
  562.     mov    cx,dx
  563.     mov dx,21
  564.     jc  error
  565.     mov    dx,47
  566.     lsl    ax,bx
  567.     inc    ax
  568.     cmp    ax,cx
  569.     jne    error
  570.     push    di
  571.     push    es
  572.     mov    es,bx
  573.     mov    cx,(1*1024)/4
  574.     xor    di,di
  575.     mov    eax,es:[0]
  576.     rep    stosd
  577.     pop    es
  578.     pop    di
  579.     dec bp
  580.     jne loop8
  581.  
  582. ; resize same size
  583.     mov si,di
  584.     sub si,(3*(2*12))+2
  585.     mov bp,12
  586.  
  587. loop9:
  588.     mov bx,ds:[si]
  589.     sub si,2
  590.     xor dx,dx
  591.     mov cx,1
  592.     mov ax,0ff0dh
  593.     int 31h
  594.     mov    cx,dx
  595.     mov dx,22
  596.     jc  error
  597.     mov    dx,48
  598.     lsl    ax,bx
  599.     inc    ax
  600.     cmp    ax,cx
  601.     jne    error
  602.     push    di
  603.     push    es
  604.     mov    es,bx
  605.     mov    cx,(64*1024)/4
  606.     xor    di,di
  607.     mov    eax,es:[0]
  608.     rep    stosd
  609.     pop    es
  610.     pop    di
  611.     dec bp
  612.     jne loop9
  613.  
  614. ; resize same size
  615.     mov si,di
  616.     sub si,(4*(2*12))+2
  617.     mov bp,12
  618.  
  619. loop10:
  620.     mov bx,ds:[si]
  621.     sub si,2
  622.     mov dx,1*1024
  623.     xor cx,cx
  624.     mov ax,0ff0dh
  625.     int 31h
  626.     mov    cx,dx
  627.     mov dx,23
  628.     jc  error
  629.     mov    dx,49
  630.     lsl    ax,bx
  631.     inc    ax
  632.     cmp    ax,cx
  633.     jne    error
  634.     push    di
  635.     push    es
  636.     mov    es,bx
  637.     mov    cx,(1*1024)/4
  638.     xor    di,di
  639.     mov    eax,es:[0]
  640.     rep    stosd
  641.     pop    es
  642.     pop    di
  643.     dec bp
  644.     jne loop10
  645.  
  646.    jmp NEAR PTR looper
  647.  
  648. fini:
  649.     mov    bp,OFFSET DGROUP:storage
  650.     mov    bx,CYCLECOUNT
  651.     mov    counter,0
  652.     mov    si,OFFSET DGROUP:CheckValues
  653.  
  654. checker:
  655.     mov    ax,ds:[bp]
  656.     add    bp,2
  657.     lsl    cx,ax
  658.     or    cx,cx
  659.     je    checknext
  660.     mov    es,ax
  661.     shr    cx,2
  662.     inc    cx
  663.     xor    di,di
  664.     mov    eax,ds:[si]
  665.     repe    scasd
  666.     jne    error
  667.     add    si,4
  668.     cmp    si,OFFSET DGROUP:CheckValues+(12*4)
  669.     jb    checknext
  670.     mov    si,OFFSET DGROUP:CheckValues
  671.  
  672. ; bump cycle, check for end
  673. checknext:
  674.     inc counter
  675.     mov ax,counter
  676.     cmp ax,CYCLECOUNT+1
  677.     jb  checker
  678.  
  679.     mov dx,OFFSET DGROUP:WorksText
  680.     mov cx,7
  681.     mov bx,1
  682.     mov ah,40h
  683.     int 21h
  684.     mov ax,4c00h
  685.     int 21h
  686.  
  687. error:
  688.     mov si,counter
  689.     mov cs:[0],si   ; force GPF, dx shows where, cx shows count
  690.  
  691.     mov dx,OFFSET DGROUP:ErrorText
  692.     mov cx,7
  693.     mov bx,1
  694.     mov ah,40h
  695.     int 21h
  696.     mov ax,4c01h
  697.     int 21h
  698. end start
  699.