🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: alt.lang.asm
Article #164

Hardware bug / max()min()

#164
From: Yeats
Date: Fri, 22 Jan 1993 22:51
38 lines
1340 bytes
 I recently discovered what may be a rare hardware bug -
the following code will freeze my old 6-8-10mhz 286 AT :
 
   MOV AX,[DI]
   INC DI
   MOV AX,[DI]
 
 Other index registers cause the same hangups but the [DI] never
fails to hang at once.
 Surprisingly, a keyboard reset still worked - as did the LED's.
Otherwise my system works fine (WIN3 crashes, so what).
 On accessing memory using REP MOVSW and then again in a loop with
STOSB in two SEPARATE but close pieces of code, there was a more
subtle messing up of certain bytes as it run over the 64K segment
wrap-around - this bug disappeared when the REP MOVSW was replaced
by REP MOVSB with twice the count.
 
 Does anyone know anything about this bug ?
 
 
 
Btw, here's the max() routine discussed earlier,
 made one byte shorter ;-)
 
 AX := unsigned-max (AX,DX)
 --------------------------
   SUB AX,DX
   CMC        ; leave this out to get AX := MIN(AX,DX)
   SBB CX,CX
   AND AX,CX
   ADD AX,DX
 
 



 ---
stumble@utopia.hacktic.nl (Yeats)
Technical Details
Message-ID: <ssysXB4w165w@utopia.hacktic.nl>
Path: arc1-ca.pugleaf.net!sparky!uunet!mcsun!sun4nl!hacktic!utopia!stumble

Show Full Headers
Complete Article Headers
Path: arc1-ca.pugleaf.net!sparky!uunet!mcsun!sun4nl!hacktic!utopia!stumble
From: stumble@utopia.hacktic.nl (Yeats)
Newsgroups: alt.lang.asm
Subject: Hardware bug / max()min()
Message-ID: <ssysXB4w165w@utopia.hacktic.nl>
Date: Fri, 22 Jan 93 22:51:39 GMT
Organization: HACK-TIC NETWORK FOUNDATION
Lines: 38